OpenBSD 5.1 install, hálózat, csomagtelepítés

Az eddigi cikkekben szó esett általában a BSD operációs rendszerekről, ill. egészen bőséges számban ismertetők születtek a FreeBSD-ről is konkrétan. A BSD-család egy másik tagjáról, az OpenBSD-ről azonban csak érintőlegesen tettünk eddig említést. Ez azonban nem  fontossági sorrend miatt van, esetleg  azért, mert megbízhatóságban hátrányt szenvedne a többi BSD-hez képest. Sőt. Biztonságosságban, egyszerűségben azt hiszem, vezető helyet foglalhat el.  Az első cikk az OpenBSD-ről a telepítését fogja bemutatni.

OpenBSD 5.1 telepítés lépésről lépésre

Az indulás a szokott módon történik: install média (cd), majd erről bootolunk, amikor is az alábbi képernyővel fogunk találkozni.

Bootolás az install cd-ről:

Itt választhatunk, hogy installálni, upgradelni szeretnénk, vagy csak egy shell legyen (ez utóbbi hasznos lehet, ha pl. RAID-et akarunk előkészíteni, és arra installálni a rendszert).

Válasszuk az I(Install) opciót.  Válasszunk billentyűzetkiosztást, adjuk meg a rendszer hostnevét, majd konfiguráljuk be a hálózati interfészt; ezt én most DHCP-n hagytam. Ez utóbbit, a példa kedvéért majd a már telepített rendszeren átkonfiguráljuk.

Kérdést kapunk, hogy akarunk-e IPv6-ot konfigurálni: ezt nem muszáj. Majd választhatunk, hogy szeretnénk-e további hálózati konfigurálást: ezt most hagyjuk ki. Ezután a root passwordot adhatjuk meg. Ezt természetesen tegyük meg. A root jelszó megadása után rákérdez, hogy az ssh-t szeretnénk-e automatikusan indítani; ezt érdemes elfogadni. NTP klienst is indíthatunk, ha szeretnénk. Mivel szervert installálunk, így az X Window systemet nem érdemes installálni. Most állíthatunk be egy nem root jogú usert is. Ezután a partícionálás következik, ami itt spártaibb felületen zajlik, mint a FreeBSD-n például.

Használjuk a teljes lemezt, tehát W(hole).

Partícionáljunk  C(ustom) módon, és hozzuk létre a következő kiosztást:

  • 600MB a / -nek
  • 250MB a swap-nek
  • 800MB a /usr-nek
  • és a maradék legyen a /var

Segítséget a ‘?’ beütésével bármikor kérhetünk.

Mivel ez clean install lesz, a hátramaradt partíciókat töröljük, a ‘z’ leütésével, ez letörli az összes létező partíciót.

Látjuk, hogy a lemez most teljesen üres. Vegyük észre az ott levő c: partíciót; itt ez jelöli az egész lemezt, szóval ne ijedjünk meg, nem Windows:). Hozzuk létre a partícióinkat.

Lássuk mit csináltunk? Az ‘a a’‘a b’‘a d’ és ‘a e’ begépelésével létrehoztuk a partíciókat. Az ‘a’ betű az ‘add’ opciót jelöli, az utána szereplő betű pedig a partíció számát. Észrevehetjük, hogy a c-t konzekvensen kihagytuk (mivel ez az teljes lemez).

Ez így rendben is van, írassuk ki az új partíció kiosztást: lépjük ki a ’q’ megnyomásával. Kérdést kapunk, hogy kiírja-e az új labelt, majd elkészíti a kiosztást, amennyiben elfogadjuk (’y’-nal).

Más lemezt most nem szeretnénk a jelenlevők közül partícionálni. Fogadjuk el [done]-t.

A csomagok telepítése most fog elkezdődni, elsőként az install forrásról kérdez, ez most nekünk maradhat a cd. A csomagok kiválasztása is jól mutatja az OpenBSD fapadosságát; később se számítsunk másra 🙂 Itt a csomagokat eltávolítani ill. hozzáadni úgy tudjuk, hogy begépeljük a csomagnevet, és elé ’-’-t vagy ’+’-t teszünk. Nincs szükségünk a következőkre: game51.tgz,  xbase51.tgz,  xetc51.tgz, xshare51.tgz, xfont51.tgz, xserv51.tgz. Írjunk be tehát így:

-game51.tgz  -xbase51.tgz  -xetc51.tgz -xshare51.tgz  -xfont51.tgz  -xserv51.tgz.

Majd nyomjunk entert.

Mint megfigyelhetjük, csak azok maradtak kiikszelve, amire szükségünk van. Enter. Indul az install.

A telepítés befejezte után még rákérdez az installer, hogy van-e még máshol install-szetünk, ezt kihagyhatjuk. Ha szeretnénk, később is tudunk hozzáadni (binárisból ill. a ports-t használva) csomagot. Beállítjuk az időzónát, majd felajánlja az ehhez igazított pontos idő beállítást. Kiírja a config-file-okat, létrehozza a szükséges eszköz-nodeokat, majd tudatja velünk, hogy készen is vagyunk, újraindíthatjuk a rendszerünket, immár a telepítettet. Tegyük meg!

Készen vagyunk, van egy telepített OpenBSD rendszerünk. Loginoljunk be, és nézzük meg a fájlrendszereket.

Minden rendben. A hálózati kártyát még konfiguráljuk át, hogy statikus IP-t használjon, állítsunk be  default route-t, ill. névszervert (FreeBSD hálózatkezelésről szóló cikkben említettem, hogy itt kicsit másképp néz ez ki).

IP cím:

# vi/etc/hostname.em0

Töröljük ki a ’dhcp ’ bejegyzést, és a helyére írjuk ezt:

inet 192.168.55.13 255.255.255.0 NONE

(a formátum itt <protokoll_család cím netmaszk egyéb_opciók >, szóközzel vagy tabbal elválasztva).

Alapértelmezett átjáró:

# vi /etc/mygate (ha nem létezik, hozzuk létre)
192.168.55.1 (a routerünk IP-je)

Névszerver beállítás:

# vi /etc/resolv.conf
search test.net
nameserver 192.168.55.1
lookup file bind

Statikus route-ok, ha szükséges:

# vi /etc/hostname.em0

Adjuk végéhez:

!route add -net 192.168.1.0/24 192.168.1.254

Ha ezzel megvagyunk, indítsuk újra a hálózatot.

# sh /etc/netstart

És ellenőrizzük is le!

Az alapinstallunk tehát, bekonfigurált hálózattal, ssh-n keresztüli táveléréssel elkészült!

Csomagtelepítés:

Binárisból a legegyszerűbb módja,  ha a FTP-ről telepítünk, a következőképpen:

# ftp ftp://ftp.openbsd.org/pub/OpenBSD/5.1/packages/`machine -a`/index.txt

Rákeresünk a csomagnévre, amit szeretnénk installálni, legyen pl. a bash shell:

# cat index.txt | grep -i bash

Majd pkg_add-dal telepítjük, ilyenformán:

# pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/5.1/packages/`machine -a`/bash-4.2.20.tgz

A függőséget természetesen az OpenBSD is lekezeli, letölti a hiányzó csomagokat, és telepíti a bash shellt. Mint a képen is láthatjuk, sikeresen.

Ports-ból:
# cd /tmp
# ftp ftp://ftp.openbsd.org/pub/OpenBSD/5.1/ports.tar.gz
# cd /usr
# tar xzf /tmp/ports.tar.gz

Innentől pedig a továbbiak a FreeBSD port-fa cikkben leírtak szerint működnek.

Összegzés:

Az OpenBSD, láthattuk, nagyon fapados rendszer. A telepítés mindenféle menü és sallang nélkül, kérdezz-felelek módon történik.  Cserében kárpótol minket döbbenetes gyorsaságával és megbízhatóságával. Általában elmondható, hogy az egyik, alaptelepítésben legbiztonságosabb operációs rendszert ismerhetjük meg az OpenBSD-ben. Szlogenjük: „Több mint tíz év alatt csak egyetlen távolról kihasználható hiba az alaptelepítésben!” . Gyakori platformja egyszerű vagy redundáns tűzfalaknak,  gatewayeknek, VPN szervereknek, melyek az OpenBSD-ről szóló jövőbeni cikkeknek témájául szolgálhatnak.

FreeBSD RAID megoldások II. – a (G)Vinum

Az első részben a gmirror és a gstripe lehetőségeit vettük sorra. Ezek nagyszerű eszközök, egyszerűen konfigurálhatók. Bővíthetőség, finomhangolhatóság tekintetében azonban van olyan megoldás, mellyel szemben alulmaradnak. Azt is figyelembe kell vennünk, hogy a RAID5-ös szintet egyik sem támogatja. Van azonban a GEOM keretrendszernek egy ága, mely az előbb felsorolt szempontokban is kiválót tud nyújtani. Ez a vinum, ill. mióta a GEOM keretrendszernek megfelelően újraírták: gvinum.

FreeBSD RAID megoldások II. rész – a (G)Vinum

A gvinum egyszerre kínál lehetőséget a kifinomultabb logikai kötetek létrehozására, bővíthetőségre, ill. RAID0, RAID1, RAID5 és összefűzött lemezek kezelésére.  Ahhoz viszont, hogy ennek a működését megértsük,  néhány fogalmat tisztáznunk kell.

A vinum egy négyszintű objektum-hierarchiát használ, melynek elemei:

  • kötet (volume; ez a plex-ből vagy plex-ekből tevődik össze)
  • plex (ez egy v. több  subdisk-ből tevődik össze)
  • subdisk (allemez; egy drive része vagy egésze)
  • drive (ez általában a fizikai meghajtó vagy annak egy partíciója, de akár egy file is lehet)

Aki már használt Veritas volume-ot, annak ezek a fogalmak szinte közhelyszámba mennek, de először találkozni ezzel kicsit ijesztő lehet. A jobb megértés érdekében azonban példákon keresztül fogjuk ezeket végignézni (melyek sorra veszik RAID0, RAID1, és RAID5 szinteken).

Az alaprendszerünk itt is FreeBSD 9.0, és van három darab szabad diszkünk, két-két partícióval,ezeket fogjuk használni a tesztekben.

  • da1 (da1s1a (500MB) és da1s1b (400MB))
  • da2 (da2s1a (500MB) és da2s1b (400MB))
  • da3 (da3s1a (500MB) és da3s1b (400MB))

RAID0 beállítása gvinum segítségével

A gvinumnak van egy interaktív parancssori felülete is, aminek segítségével a beállításokat elvégezhetjük. Nézzük hogyan! Adjuk  ki a gvinum parancsot, mindenféle paraméter nélkül:

freebsd# gvinum

Innen tudunk létrehozni, törölni, bővíteni, stb. Kilépni a ’quit’ begépelésével lehet. Tehát egy RAID0 kötet létrehozása. Ehhez először szerkesztenünk kell egy konfigot, legyen a neve mondjuk testraid0.

freebsd# vi testraid0

Írjuk bele a következőket:
drive r11 device /dev/da1s1b
drive r21 device /dev/da2s1b
volume testraid0
plex org striped 512k
sd drive r11 length 100m
sd drive r21 length 100m

Majd mentsük el! Ezután adjuk ki az alábbi parancsot:

freebsd# gvinum create testraid0

Ha minden jól csináltunk, nem kapunk vissza semmi mást, csak a prompot. De mit is csináltunk? Nem történt semmi feltűnő!

Nézzük meg ezt is, adjuk ki az alábbi parancsot!

freebsd# gvinum list

Hoppá! Egy elég érdekes és bonyolultnak tűnő kimenetet kapunk; vegyük sorra mit csináltunk és mit látunk!

A két diszkünk két 400MB-os partíciójából kiragadtunk két 100MB-os szeletet, és ezeket subdisk-ként deklaráltuk. A két subdiskünket egy plex-be foglaltuk, és ezt pedig hozzárendeltük a volume-hoz.

Látjuk, hogy a testraid0.p0.s1 és testraid0.p0.s0 subdisk-ek 100-100MB-osak, ahogyan azt szerettük volna, és mivel a konfigunkban striped módon fűztük őket össze, a méreteik is összeadódva látszanak a testraid0.p0 plex alatt. Végül legfelül látjuk két drive-t, melynél azt is mutatja a lista, hogy 74%, ~300MB szabad, ami jogos, hiszen a 400-400MB-ból csak 100-100MB-ot vettünk el. Eddig ok. De mik ezek a nevek? Amit a konfigurációban mi magunk neveztünk el, az a két drive, r11 és r21 nevet kapták, ill. a kötet maga, ami testraid0 lett, de ezek neve lehet bármi, nincs rá megkötés. És a többi? A gvinum, ha külön nem adunk nevet az objektumoknak, akkor elnevezi őket automatikusan, és szerintem eléggé logikusan is, ha pl. a subdiskeket nézzük, akkor ilyen konvenció szerint:

<volumenév><plexsorszám><subdisksorszám>

Látjuk még minden objektum státuszát, ill. a plex státusza mellett egy nagy ’S’ betűt, mely azt jelzi, hogy a belefoglalt subdiskek STRIPE módon vannak összefogva, nem pedig CONCAT módon, mely esetén nagy ’C’ lenne. Rendben. De hogyan lesz ebből fájlrendszer? Vizsgáljuk meg ezt is!

Létrejött ugyanis az eszköz node, amire létrehozhatjuk a filerendszert, az alábbi módon:

freebsd# newfs /dev/gvinum/testraid0

És fel is mountolhatjuk:

Ezzel készen is vagyunk, a /test könyvtár alatt egy 200MB-os csíkozott köteten levő fájlrendszerünk lett.

RAID1 beállítása gvinum segítségével

A beállítás menete megegyezik a RAID0-éval, kivéve természetesen a konfigurációs file tartalmát. Nézzük ez hogyan néz ki (feltételezve, hogy az előző RAID0-ás kötetet eltávolítottuk már):

freebsd# vi testraid1
drive r11 device /dev/da1s1b
drive r21 device /dev/da2s1b
volume testraid1
plex org concat
sd drive r11 length 100m
plex org concat
sd drive r21 length 100m

freebsd# gvinum create testraid1

Látjuk, hogy a felhasznált drive-ok száma megegyezik a RAID0 konfigban használtakéval, de változott a plex-ek száma, ill. a subdiskek elrendezése.  Plex-enként egy subdisk, és a plexeket tükrözi össze, majd rendeli őket egy volume alá.

freebsd# gvinum list

A státuszból pedig kiderül, hogy itt már a plexek vannak egymáshoz rendelve, mirrorozva, és a volume mérete a RAID1 szint miatt szintén 100MB, tehát a két plex méretéből a fele kapacitás lesz használható. Természetesen egy-egy plex alá tehetünk párhuzamosan ugyanakkora méretű plusz subdiskeket is, ezzel tudjuk növelni a volume méretét. Az eljárás további része itt is ugyanaz, mint a RAID0 esetében.

freebsd# newfs /dev/gvinum/testraid1

És a /test alatt ott van a tükrözött  volume-unk.

RAID5 beállítása gvinum segítségével:

Egy RAID5-ös tömb tagjainak száma, tudjuk, minimálisan három, és ennél a példánál maradva ebből két tag tárkapacitásának az összege fog látszani felhasználható területként.

Hogyan néz ki a konfigurációja ennek?

freebsd# vi testraid5

drive r1 device /dev/da1s1b
drive r2 device /dev/da2s1b
drive r3 device /dev/da3s1b
volume testraid5
plex org raid5 512k
sd drive r1 length 100m
sd drive r2 length 100m
sd drive r3 length 100m

Láthatjuk, hogy a három résztvevő subdisk három különböző driveból lett kiszelve, és a három subdisk egy darab plex alá rendeződik, raid5 módban, és 512k-s csíkokkal dolgozik.

freebsd# gvinum create testraid5

Az eredmény pedig a testraid5 nevű RAID5 volume, mely a három résztvevő subdisk 100-100-100MB-jából összerakta a 200MB-ot. A plex státuszánál megfigyelhető a RAID5 módra utaló ’R5’ flag.

Az előbbiekben alkalmazott módon egyezően formázhatjuk:

freebsd# newfs /dev/gvinum/testraid5

És a /test alatt ott látható a felcsatolt RAID5 kötet. Természetesen az elnevezések, akár a volume, akár a drive, akár a subdisk neve tetszés szerint változtatható, akár csak a subdiskek mérete a drive méretéig.

Bővítés:

Említettem, hogy a gvinum a bővíthetőséget is támogatja, no persze, csak a növelést. Ennek egyik kritériuma, hogy a kötet NEM lehet felmountolt állapotban. Hogyan történik ez? Nézzünk egy példát erre is, használva a létrehozott RAID1 kötetet. Ez most a /test alá van csatolva.

freebsd#gvinum list

freebsd# df –h

Ok, tehát a /test filesystem a RAID1 kötettel 100MB. A teszt kedvéért hozzunk létre egy filet rajta, vagy akár többet, hogy lássuk, adatvesztés nélkül tudunk-e növelni:

freebsd# cd /test
freebsd# touch file1 & echo testfile > file1 & cp file1 file2 & cp file1 file3 & cp file1 file4 & ls –la

Majd lépjünk vissza a / -be, és unmountoljuk a /test –ből a kötetet.

Most pedig növeljük meg a RAID1 kötetünk méretét.

freebsd# gvinum

Írjuk be: create. Majd adjuk hozzá a következő két sort a megjelenő futó config végéhez:

sd length 100M drive r11 plex  testraid1.p0
sd length 100M drive r21 plex  testraid1.p1

És mentsük el a konfigot! (vi-ben ismert :wq! )

Itt most azt csináltuk, hogy a RAID1 két plexéhez hozzáadtunk még egy-egy darab 100MB-os subdisket. Ha ezt ellenőrizzük, látjuk is:

A kötetméret tehát az addigi 100MB-ról 200MB-ra nőtt. Mostmár nincs más hátra, a rajta levő fájlrendszert is át kell méretezni:

freebsd# growfs /dev/gvinum/testraid1

Láthatjuk, hogy a fájljaink megvannak, és épen maradtak, a filesystem mérete pedig megnőtt. Mindezek ellenére egy nagyobb fájlrendszer esetén, amin még adat is sok van, erősen javallt egy fsck futtatása a growfs előtt.

Mini cheat sheet:

# gvinum                –    elindítja a gvinum promptot
# gvinum create <configfile>    –    a konfigfájlban szereplő paraméterek alapján elkészíti a kötet(eket)
# gvinum resetconfig        –    az összes létező gvinum konfigurációt törli (vicces, hogy be kell gépelnünk, hogy ‘NO FUTURE’ megerősítésként)
# gvinum printconfig        –    képernyőre írja a futó konfigot (ez lementhető és továbbszerkeszthető)
# gvinum dumpconfig        –    kiírja konfigurációt az összes résztvevő tárolóra

Gyorsparancsok (értsd: a megadott eszközökkel felhúzza a kívánt volume-t):
# gvinum mirror -n volumenév diszk1 diszk2    –    volumenév nevű mirrorkötet létrehozása
# gvinum concat -n volumenév diszk1 diszk2    –    volumenév nevű összefűzött volume létrehozása
# gvinum stripe -n volumenév diszk1 diszk2    –    volumenév nevű csíkozott volume létrehozása
# gvinum raid5 -n volumenév diszk1 diszk2 diszk3 –    volumenév nevű RAID5 volume létrehozása

Vinum kötetek elérése rendszerindításkor:

Bejegyzések a /boot/loader.conf fileba:

geom_vinum_load=”YES”
vinum.autostart=”YES”

A /boot/loader megkeresi a hozzá tartozó eszközt a /etc/fstab állományban és ha az al-eszközök elérhetők, akkor felcsatolja a kötetet. Ha / filesystem vinum köteten van, akkor ezek kötelező paraméterek, máskülönben nem fog elindulni rendszerünk.

Összegzés:

Nem állítom, hogy a gvinum kötetek konfigurációja nagyon egyszerű volna, különösen egy kezdő számára.  Ahogy a cikk elején említettem, aki már konfigurált VERITAS volume-okat, annak bizonyára sokkallta könnyebb lesz a gvinum managementje.  Fontos még azt is megemlíteni, hogy amennyiben gvinum kötetet szeretnénk rendszerindítóként is használni, akkor 1. nem lehet csíkozott vagy RAID-5, 2. plex-enként nem tartalmazhat egynél több összefűzött subdisk-et. Mindezekkel együtt, azt hiszem azonban, hogy ebből a nagyon szimpla bemutatóból is kiviláglik, hogy egy sokrétű és jól alkalmazható kötetmenedzserrel van dolgunk.

FreeBSD RAID megoldások I. – a GEOM

Említettem a hibatűrő adattárolásról szóló cikkben, hogy konkrét példákkal is bemutatásra kerülnek a BSD-kben, jelen esetben a FreeBSD-ben alkalmazható RAID megoldások; itt természetesen csak és kizárólag az operációs rendszer által biztosított kernel szintű szoftveres RAID-ekről beszélünk. A most bemutatásra kerülő RAID megoldás a legegyszerűbben beállítható típusa a hibatűrő tömböknek FreeBSD alatt. Ez GEOM keretrendszerre épül, mely egy moduláris része a kernelnek, és lehetővé teszi a diszkek különféle RAID szintekbe történő rendezését.

FreeBSD  RAID megoldások  I.  –  a GEOM

Lássuk, hogyan tudjuk ezt beállítani.

Tételezzük fel, hogy van egy frissen telepített FreeBSD rendszerünk, kettő darab diszkkel, ezek az:

freebsd# camcontrol devlist -v

scbus0 on ata0 bus 0:
<VBOX HARDDISK 1.0>                at scbus0 target 0 lun 0 (pass0,ada0)
<VBOX HARDDISK 1.0>                at scbus0 target 1 lun 0 (pass1,ada1)

A rendszerünk maga az ada0 diszken lett telepítve, innen is indul, minden filerendszere ezen van. Az ada1 diszk egyelőre, mint kihasználatlan kapacitás van jelen a rendszerünkben. A két diszk mérete megegyezik.

RAID1 (mirror) beállítása:

Mielőtt elkezdenénk konfigurálni a RAID1 tömböt, engedélyeznünk kell a magasabb szintű debug információt és hozzáférést az eszközökhöz a következő paranccsal:

A RAID beállítás tulajdonképpen most kezdődik azzal, hogy a meta adatbázist létrehozzuk a RAID tömb első lemezén. A másodikon nem lesz szükséges létrehozni, mert a tömb szinkronizációja során ez is tükröződik.

A metaadatok sikeresen eltárolódtak az ada0 diszken. Most inicializálnunk kell a GEOM keretrendszert, ez voltaképpen betölti a GEOM modult a kernelbe.

freebsd# gmirror load
freebsd#

A parancs sikeres végrehajtódása után a /dev/mirror alatt létrejön a gm0 eszköz node. Tulajdonképpen már van egy RAID1-ünk, amiben –egyelőre- egy diszk van. Erről kérhetünk információt a következő módon:

freebsd# gmirror status

 Részletesebben pedig:

freebsd# gmirror list

Ezzel azonban még nem végeztünk, hiszen a rendszerünk még mindig az első diszkről bootolna újraindítás esetén, és a RAID tömb sem teljes még, mert csak egy tagja van. Ehhez először is az /etc/fstab fájl átszerkesztésére lesz szükség. A biztonság kedvéért erről csináljunk egy backupot előbb:

freebsd# cp /etc/fstab /etc/fstab.orig majd szerkesszük meg: vi /etc/fstab.

Cseréljük le az összes /dev/ada0sXy hivatkozást /dev/mirror/gm0sXy –ra, ilyen módon:

Előtte:

Utána:

Fontos, hogy a GEOM modulnak már a kernel betöltődésekor és a fájlrendszerek felcsatolása előtt be kell töltődnie, különben nem fog tudni elindulni a rendszer. Ehhez a következő bejegyzésre lesz szükség a /boot/loader.conf  fileba:

echo ‘geom_mirror_load=”YES”‘ >> /boot/loader.conf

A fenti lépések megtétele után indítsuk újra a rendszerünket és lássuk, mi történik!

Egy ilyen sort látnunk kell majd a kernelüzenetek között:

A fájlrendszerek pedig a következőképpen néznek ki:

Újraindítás előtt:

Újraindítás után:

Nagyszerű! A RAID működik! Mindössze annyi dolgunk maradt, hogy a még mindig kihasználatlan második diszket is „ráakasszuk” a mirror device-ra, hiszen ebben a pillanatban még nem redundáns a tömb. Tegyük meg ezt most!

freebsd# gmirror insert gm0 ada1

A második diszk már szinkronizálódik is.

Miután a szinkron végigment, látjuk, hogy a RAID1 tömbünk is konzisztens lett.

Kész is vagyunk!

Néhány megjegyzést azonban tennünk kell:

–  ha egy mód van rá, ezt frissen telepített rendszer esetén konfiguráljuk (kevesebb downtime, és kisebb esély az adatvesztésre)
– GPT típusú partíciókon ez nem működik, mivel a GEOM felülírja a GPT metaadatokat és ez működésképtelen rendszert eredményez.

Mi a teendő diszkhiba esetén?

Ha pl. meghibásodik az ada1, tehát a második diszk, akkor csere előtt a GEOM adatbázissal is tudatni kell, hogy márpedig mi ezt ki fogjuk cserélni! Ha a diszk még látszik a gmirror status kimenetben, de FAULTED vagy DEGRADED statusszal, akkor használjuk a következő parancsot:

freebsd# gmirror forget gm0

Ha a diszkre NEM jelez hibás státuszt, de más forrásból (logok, kernelüzenetek) arra lehet következtetni, hogy a diszken pl. hibás szektorok vannak (ami ellen a RAID ugye nem véd, ill. a fájlrendszer hibái ellen sem), akkor a következőt alkalmazzuk:

freebsd# gmirror remove gm0 ada1

Majd a diszk fizikális cseréje után:

freebsd# gmirror insert gm0 ada1

RAID0 (stripe) beállítása:

A RAID1-hez teljesen hasonlóan állíthatjuk be (kivéve talán, hogy remélem / vagy egyéb OS filesystemet gondolom senkinek nem jutna eszébe RAID0-n tartani). Természetesen itt redundanciával nem számolhatunk, mivel egy két diszkből álló stripe esetén az egyik kiesése esetén is teljes lesz az adatvesztés.

Az előzőek alapján:

freebsd# gstripe label -v st0 da0 da1

Hozzunk létre labelt:

freebsd# bsdlabel -wB /dev/stripe/st0

Majd fájlrendszert:

freebsd# newfs -U /dev/stripe/st0a

Ellenőrizzük:

És fel is csatolhatjuk:

freebsd# mount /dev/stripe/st0a  /test

Itt se felejtsük el a loader.conf-ba tenni a megfelelő bejegyzést:

echo ‘geom_stripe_load=”YES”‘ >> /boot/loader.conf

IO statisztikák:

freebsd# gstat

Összegzés:

A GEOM használata szerintem nagyon logikus, és villámgyorsan  konfigurálható. Stabil, megbízható eszköz, és végül, de nem utolsósorban a performanciája is kiváló.

FreeBSD csomagkezelés és a ports-tree

A BSD operációs rendszerek csomagkezelése (természetesen azon kívül, hogy letöltjük a tömörített forrást, kicsomagoljuk, lefordítjuk) kétféleképpen történhet. Az egyik megoldást az jelenti, hogy a más UNIX rendszerekben (pl. Solaris) is ismert pkg_add paranccsal telepítjük a binárist. A másik megoldás a ports-tree használata. A következőkben mindkét megoldást megvizsgáljuk, eredetiségénél fogva főként a ports-tree-re fókuszálva.

FreeBSD csomagkezelés és a ports-tree

Nézzünk először egy példát a binárisból való telepítésre! A mindenkori legfrissebb csomaggyűjteményt itt fogjuk elérni:

http://ftp.freebsd.org/pub/FreeBSD/ports/packages/All/

Innen kiválasztva a kívánt csomagot a telepítés megkezdődik.

freebsd# pkg_add -r http://ftp.freebsd.org/pub/FreeBSD/ports/packages/All/lynx-2.8.8d12_1.tbz

A dependenciákat lekezelve, installálja a kívánt csomagot, jelen esetben a ’lynx’-t., melyet a /usr/local/bin/lynx útvonalon fogunk tudni elérni.

Ugyanez megtehető a sysinstall használatával is:

freebsd# sysinstall

Configure –> Packages -> FTP vagy FTP Passive -> Válasszuk ki az ftp site-ot

PORTS tree

A másik megoldás azonban egy a BSD-kre jellemző, sokkal izgalmasabb útja a csomagtelepítésnek: ez pedig a ports-tree.

Mi az a ports-tree (port-fa)? A port-fa gyakorlatilag egy forráskód gyűjtemény, melyben az alkalmazások leíró állománya található, ill. a fordításhoz szükséges MAKEFILE. Magát a forráskódot NEM tartalmazza. A forráskód telepítéskor töltődik le frissen, vagy adhatjuk meg, honnan éri el az install script.

A port gyűjtemény használatával nagyon egyszerűen tudunk csomagot telepíteni, melynek több előnye is van:

  • az alkalmazás a mi saját gépünkön fordul le ill. oda optimalizált (vagy optimalizálható)
  • mindig a gyűjteményben található legfrissebb forrás fog letöltődni telepítéskor
  • ez a telepítési mód is automatikusan kezeli a függőségeket
  • lehetőség van az alkalmazások security auditjára
  • automatikusan frissíthető akár az összes telepített port
  • egyszerű az eltávolíthatóság

Ehhez persze szükségünk van magára a port gyűjteményre. FreeBSD alatt ennek legegyszerűbb módja a „portsnap” használata.  Készítsük elő ehhez a környezetet:

freebsd# cd /usr
freebsd# mkdir ports
freebsd# cd ports/

Majd adjuk ki a

freebsd# portsnap fetch  parancsot!

Itt legyünk kis türelemmel, mert le fogja tölteni a port-gyűjteményt,  ami  ,mint látjuk a fenti képen, 67MB.  Ha letöltődött, akkor ki is kell tömörítenünk, ezt a portsnap szintén megteszi, a következőképpen:

freebsd# portsnap extract         (a két parancs egyébként egyben is kiadható: portsnap fetch extract )

Majd valami hasonló lesz a vége:

Most várjunk, igyunk egy kávét, ez még egy jobb gépen is eltart egy darabig, több ezer kicsi állomány kitömörítése történik meg. Kitömörítés után generálódik egy INDEX file, mely a későbbiekben a keresésnél  igen hasznos lesz, majd elkészült az elérhető legfrissebb port gyűjtemény kitömörített replikája a saját gépünkön.

Update

Ha már van létező port-fánk, a következőképp frissíthető:

freebsd# portsnap fetch update

Keresés a portok közt

Keresni kétféleképpen tudunk:

–    port nevére
–    kulcsszóra

freebsd# cd /usr/ports
freebsd# make search name=bash

vagy

freebsd# make search key=bash (ez utóbbi igen hosszú kimenetű lesz, ugyanis mindenben keres, leírásban, függőségekben, stb.)

A mi példánknál maradva a ’bash’-sel, a következőhöz hasonló kimenetet fogunk látni:

Telepítés

Telepítsünk hát ’bash’ shell-t. Ehhez a következőket kell tennünk: láthatjuk, hogy a port-tree alatt, a bash leírói a pathban szereplő /usr/ports/shells/bash útvonalon helyezkednek el. Váltsunk könyvtárat, és lépjünk ide:

freebsd# cd /usr/port/shells/bash

Majd adjuk ki a következő parancsot:

freebsd# make install

Ekkor a leíró állományban szereplő siteról letölti a bash forráskódját, kitömöríti, majd elkezdi lefordítani. Közben ellenőrzi természetesen a függőségeket, és amennyiben hiánya van, akkor automatikusan leszedi és lefordítja közben a hiányzó csomagokat is. Ha az adott csomagnak valamilyen konfigurálható opciója van, akkor erre ugyancsak rákérdez, ilyeténképpen (itt az m4 csomagéra):

Majd mikor mindent lefordított, és installálta a megfelelő helyre, akkor körülbelül ilyesmivel ér véget a telepítés:

Próbáljuk is ki:

freebsd# bash

A ’bash’ shell installja sikeres volt. Megtehetjük, hogy a letöltött dependenciák lefordított objektumait forrását eltávolítjuk a ‘make clean’ ill. a tömörített forrást magát a ‘make distclean’ parancsokkal:

freebas# make clean

freebsd# make distclean

Törlés

Hogyan tudjuk eltávolítani a port-treeből installált csomagot? Próbáljuk ki ezt is:

freebsd# make deinstall

Csomag újratelepítése

Felmerülhet az igény telepített csomag újra-installálására, ha esetleg másik csomaggal való függőség inkonzisztencia pl.  miatt a telepített csomagunk nem működik:

freebsd# make reinstall

Itt előfordulhat, hogy hibaüzenetet kapunk, miszerint a FORCE_PKG_REGISTER környezeti változót állítsuk 1-re. Ezt függően a shelltől, a  megfelelő parancs kiadásával meg kell tennünk (pl. export FORCE_PKG_REGISTER=1).

Custom install

Ha egy portot szeretnénk saját opciókkal fordítani és installálni, akkor ezt is megtehetjük. Adjuk ki a ’make fetch’ parancsot a kívánt port könyvtárában. Ennek eredményeképpen letölti és kitömöríti az adott csomag forrását. Itt vagy kézzel editáljuk a Makefilet (ez több egyéni opciót tesz lehetővé, optimalizációt, stb), vagy ha kényelmesebbek vagyunk, akkor kiadjuk a ’make config’ parancsot, itt menüs felületen tehetjük meg ugyanezt.

freebsd# make config

Az OK megnyomása után a make install-al a már leírtak szerint megtörténik a telepítés.

Security audit

Említettem a portokról szóló bevezetőben a security auditot. Azt hiszem, nem kell hangsúlyoznom, hogy  főleg egy produktív rendszerben milyen fontos, hogy rendszerünk esetleges sebezhetőségeiről tudjunk és lehetőség szerint megpróbáljuk ezeket orvosolni. Erre kínál megoldást a portaudit nevű csomag, melyet először fel kell telepítenünk.

freebsd# cd /usr/ports/ports-mgmt/portaudit
freebsd# make install clean

freebsd# /usr/local/sbin/portaudit –Fda

Letöltődik a legfrissebb auditfile, és egy gyors elemzés után megkapjuk a biztonsági ellenőrzés eredményét. Fontos megjegyezni, hogy a portaudit installjakor egy schedule kerül a /usr/local/etc/periodic/security/ könyvtárba, majd innen naponta lefut, és letölti a friss auditfilet.

Összegzés

A FreeBSD csomagkezelése nagyon egyszerűnek és UNIX-os szemszögből nézve felhasználóbarátnak mondható. A port-tree használatával mindig naprakész állapotú csomagot kaphatunk és telepíthetünk.  A portaudit használatával rendszerünk biztonságát is meg tudjuk őrizni ill. naprakészen tudjuk tartani. A leírás alkalmazható OpenBSD-n és NetBSD-n is, az ok, hogy mégis ebben a topicba került az, hogy a sysinstall specifikus dolgok csak FreeBSD-re jellemzőek, ill. hogy a másik két OS-nél wgettel vagy egyéb más downloaderrel kell letöltenünk a portfát, mivel ott alapértelmezésben nincs portsnap, azt is port-tree-ből kell feltennünk.

Kötetkezelés és hibatűrő adattárolás BSD platformon

Miután az elmúlt hónapokban olyan operációs rendszerekkel (Solaris, AIX) dolgoztam és dolgozom most is, ahol lehetőség nyílik a kötetek ill. fájlrendszerek on the fly, működés közbeni  átméretezésére, mindezt zero downtime-mal, azt hiszem, jogosan merült fel bennem a kérdés, hogy ezügyben mi a helyzet BSD fronton?

„Kötetkezelés és hibatűrő adattárolás BSD platformon” bővebben

FreeBSD hálózatkezelés

Ennek a kis leírásnak a címe szólhatott volna úgyis, hogy BSD hálózatkezelés, ám a helyzet az, hogy a FreeBSD egy kicsit más szemléletet követ hálózatkezelés (IP beállítás, routing,s tb. )terén, mint két testvére, az OpenBSD és NetBSD. Ez nem jelenti azt, hogy bonyolultabb volna mindezeket beállítani, egyszerűen csak: más. Nézzük meg, hogyan is történik ez!

FreeBSD hálózatkezelés

Természetesen itt is működnek a UNIX vagy Linux világában megismert parancsok, melyekkel informácókat szerezhetünk a hálózati beállításokról:

# ifconfig

Egy szokványos ifconfig parancs a fenti kimenetet fogja nekünk adni. Láthatjuk, hogy van egy em0 és lo0 interface-ünk, kitalálható, hogy az em0 a hálózati kártyát, a lo0 pedig a localhost. Az em0 interface-nek pedig van egy konfigurált IP címe is, mely statikus,tehát kézzel állítottuk be. Honnan tudhatjuk ezt? FreeBSD esetén hiába keressük a pl. Solaris vagy OpenBSD esetén megszokott filet az /etc könyvtárban, ami /etc/hostname.<interface><interface number> formátumú. Itt ugyanis, kicsit külön, ám nem kényelmetlen módon a /etc/rc.conf fileban találhatjuk meg a hálózati interfacenk konfigját.

# cat/etc/rc.conf

Ide pontosan úgy írhatjuk be a változó értékét, ahogyan azt kiadnánk parancssorban is, az egyetlen különbség, hogy az ifconfig és az interface neve között szóköz helyett alávonás lesz.

freebsd# ifconfig em0 inet 192.168.55.22 netmask 255.255.255.0

Egyszóval, bármiféle hálózati konfiguráció, melyet újraindítás után is szeretnénk aktiválni, ebbe a fájba fog kerülni, az egyetlen kivétel a DNS szerverek konfigurációja, mely itt is hagyományosan a /etc/resolv.conf filebe fog kerülni.

IP alias:

Mi a teendőnk, amennyiben egy meglevő hálózati kártya meglevő IP címe mellé IP aliast szeretnénk beállítani? Nagyon egyszerű: adjuk ki a következő parancsot!

freebsd# ifconfig em0 inet 192.168.55.23 netmask 255.255.255.0 alias

Az IP alias máris aktív. Ha ezt szeretnénk eltávolítani, akkor sem kell kétségbe esnünk:

freebsd# ifconfig em0 inet 192.168.55.23 netmask 255.255.255.0 –alias

És az IP alias eltávolítva. IP aliast természetesen többet is adhatunk egy adott interface-hez. Ha szeretnénk, hogy ez újraindítás után is aktív legyen, akkor itt is a már megismert /etc/rc.conf fileba fogjuk írni, így:

Így reboot után is aktiválódni fog az IP alias. Ha az  /etc/rc.conf-ba írjuk ezt be, akkor újraindítás nélkül a következő paranccsal aktiválhatjuk ezt:

freebsd# /etc/netstart

Ez, mint fentebb látjuk újraindítja a hálózatot, beleértve a route táblát is. Ha csak az interfaceket szeretnénk, akkor a

/etc/rc.d/netif restart    ill. ha csak a routingot akkor:   /etc/rc.d/routing restart

Routing

Mi a helyzet a routinggal? gateway nélkül nem lesz internet, erről is kell tehát szólnunk. Itt most csak a static routingról írunk, ámbár, megérne egy misét, hogy hogyan tudunk egy BSD-ből egy multi-interface-s dinamikus routing protokollt is használó routert építeni…hm, ki tudja, talán egyszer 🙂 Nézzük most a static routingot és gateway kezelést.

Adjunk egy alapértelmezett átjárót a hálózati konfighoz:

# route add default 192.168.55.1

Lehetne ennél egyszerűbb? Nézzük meg, sikeres volt-e ?

Szóval igen. Mi a teendő, ha ezt szeretnénk rendszerindítás után is ílyennek látni? A már megismert /etc/rc.conf-ba írjuk be, a következőképpen:

És reboot vagy /etc/rc.d/routing restart máris él a default gatewayunk. Mi van akkor, ha szeretnénk custom routeokat is alkalmazni?

freebsd# route add -net 192.168.2.0/24 192.168.55.1

Ha pedig szeretnénk ezt is automatikussá tenni, akkor az rc.confba írjuk, így:

DHCP:

Ha DHCP-től szeretnénk IP-t kapni, akkor a dolgunk mindössze annyi, hogy az rc.conf-ot a következőre módosítjuk:

Majd a hálózat újraindítása után ennyit: #dhclient em0 (vagy reboot).

És megkaptuk az IP-t.

Nézzük még meg, hogy a hálókártya duplexitását hogyan tudjuk kézzel állítani:

VLAN konfiguráció:

Ez vlan interface beállításával történik:

freebsd# ifconfig vlan0 create

freebsd# ifconfig vlan0 192.168.55.24 netmask 255.255.255.0 vlan 1 vlandev em0

Permanenssé tétele (bejegyzés az /etc/rc.conf fileba):

Ha pedig nincs vlan-ra tovább szükségünk, akkor:

# ifconfig vlan0 destroy

Hálózati forgalom monitorozása:

# tcpdump –i em0 –v[n]               (az –n kapcsolót használva nem próbálkozik reverse névfeloldással)

Összegzés:

Szerintem a FreeBSD (de általában is a BSD) hálózati konfigurálása nagyon egyszerű és letisztult.  A konfigurációs fileban jól követhetően, logikusan szerepelnek a megfelelő bejegyzések.

FreeBSD 9.0 telepítés, lépésről-lépésre

médiát behelyezzük egészen odáig, amíg egy használható alaprendszert tudhatunk magunkénak. A legfrissebb production release-t telepítjük, a 9.0-ás verziót. Erre a célra a legkényelmesebb platformot fogjuk használni, a virtualizációs technológiát. Az Oracle cég szabadon hozzáférhető terméke, a VirtualBox fogja nekünk biztosítani a PC-t, melyre telepítve lesz az OS. Ezt az első telepítést nem fogjuk nagyon bonyolítani, nincs LVM, nincs mirror, stb., viszont valódi step by step lesz, a valóságban sem fog mást látni, aki elsőnek nekifog.

FreeBSD 9.0 telepítése lépésről lépésre

A következő hardverkonfigurációt fogjuk emulálni:

Virtuális gépünk konfigja

Tehát CPU-k száma: 1 db, RAM 512MB, és kettő darab egyenként 3GB-os IDE emulált virtuális meghajtó. Indítsuk el a virtuális gépünkben (továbbiakban az egyszerűség kedvéért csak: PC).

Látjuk, hogy rögtön egy bootloader menüt fogunk kapni, számozott menüpontokkal. Értelemszerűen az elsőt választva elkezdi bootolni a telepítő médiánkat (itt cd). A 2. menüpont  „kidob” minket a loader promptba, ami hasznos lehet, ha szeretnénk pl. helyreállítás esetén extra modult és/vagy kernelt manuálisan betölteni. A 3. pont újraindítja a pc-t.  A 4-es, 5-ös, 6-os ill. 7-es pontban pedig bootolási opciókat állíthatunk, pl. single user modet, vagy bőbeszédűbb indítási üzeneteket.

Mi most telepíteni szeretnénk, válasszuk a „Boot”-ot az 1-es vagy ENTER megnyomásával. A kernelüzenetek lefutása után a következő ablakot fogjuk látni:

Install options

A telepítő köszönt minket és rögtön fel is kínálja a választást, hogy installálni szeretnénk a telepítőt használva, shell-t szeretnénk telepítés nélkül, vagy esetleg Live CD-t szeretnénk indítani, itt egy alap operációs rendszer indul el, RAM-disk módban, ha esetleg már a merevlemezünkön van telepített OS, annak nem esik baja, kivéve persze, ha direkt módosítunk valamit rajta. Válasszuk az „Install” opciót.

Beállíthatjuk a billentyűzet-kiosztást:

Keymap

Tegyük is meg.

TimeZone

Majd OK. következik. A következő képernyőn a rendszerünk hostnevét adjuk meg. OK-val folytatjuk.

Hostname

A most látható ablakban kiválaszthatjuk, mely komponenseket szeretnénk telepíteni. Ezek közül nekünk nem fontos semmi, talán a dokumentációt fel lehet tenni. A forráskódok fejlesztőknek érdekesek, a „ports”-t pedig, bár nagyon hasznos, ne tegyük fel, majd ki fog derülni, miért ne.

filesets

Választani a „Space”-szel tudunk, „Tab”-bal az OK-ra ugrani, majd ENTER. Ezután következik a BSD-k, és úgy lehet, minden operációs rendszer alapvető fontosságú lépése, a partícionálás. Három opciónk lesz: a „Guided”, vagyis a telepítő által segített, vagy felajánlott, a „Manual”, ahol kézzel, saját igényünk szerint alakíthatjuk ki a partíciós sémát, vagy akinek ez is kevés, és olyat szeretne, amit a telepítő már nem támogat, de maga a rendszer igen, az választhatja a „Shell”-t, és parancssorból teheti ezt meg (talán mondanom sem kell, ez már komolyabb felkészültséget igényel, és erről még fog a jövőben külön írás születni).

Partitioning1

Mi a manuális módot fogjuk választani.Láthatjuk, hogy a két meglevő diszkünket (az elnevezési konvenciókról majd később) rendben felismerte a telepítő.

Part2

Több opció közül választhatunk, létrehozhatunk, törölhetünk, visszavonhatunk változtatást, egyszersmind jelzi is a telepítő, hogy nem fog semmi változás történni, míg a „Finish”-t meg nem nyomjuk. Ha az „Auto” módot választjuk,  felajánl nekünk a telepítő  egy nagyon alap kiosztást, mely egy /boot egy / és egy swap filerendszernek fenntartott partíciókiosztás lesz. Ennél legyünk kicsit igényesebbek, és a /home-nak és a /var-nak legalább készítsünk külön logikai kiosztást. Álljunk az ada0 diszkre, és „Create”.

Parttype

Választhatunk többféle partíciótípus közül; a leggyakoribb az MBR (ez DOS óta ismert) ill. a GPT típusú, melynek sok más mellett egyik ismérve, hogy lemezenként  128 partíció kiosztását is támogatja, azonban nem minden OS tudja ezt lekezelni. Jelenleg azonban nekünk tökéletesen megfelel az MBR is.

success

Jelzi a telepítő, hogy a partíciós sémát kiírta. Álljunk újra az ada0 diszkre, majd ismét „Create”. Itt már hozzáadja, amit kiválasztunk. Az egész lemezünket használhatjuk itt. Hagyjuk tehát ezt jóvá így, ahogy van.

partadd
sliceroot1

Van tehát egy BSD partíciónk, csináljuk meg rá a „slice”-okat, melyeken a jövőbeni fájlrendszereink lesznek. Álljunk a partícióra, és „Create”.

partslice

Készítsünk el a következő sliceokat:

–          1GB                   (a  / -nak)
–          512MB                 (a swap-nak)
–          500MB                 (legyen ez a /home)
–          a maradék             (a /var-nak)

A típus maradjon freebsd-ufs, a size legyen 1GB, és a mountpointhoz írjuk be: „ / ”  (idézőjelek nélkül). Az „Options”-ban található fájlrendszert érintő lehetőségekre külön ki fogok majd térni egy következő cikkben, ezt most hagyjuk alapban, majd: OK. Vissza fogjuk kapni  az előző ablakot, de már látjuk rajta a frissen kreált slice-t. Álljunk újra az ada0s1 partícióra, és ismét „Create”. Ez nézzen ki így, ez lesz a swap space, így ennek a típusa freebsd-swap lesz, és a mountpoint maradjon üresen.

swap

Ismételjük meg az előző lépéseket, megfelelően a példánkban szereplő partíció-kiosztásnak. Ha mindent jól csináltunk, a végére az alábbi képet kell látnunk. A másik diszket egyelőre ne bántsuk, a jövőben ez még jó lesz más, hasznos célra :). Ha sikeres volt, akkor nyomjunk „Finish”-t.

readyslices

Most egy nagyon komoly figyelmeztetést fogunk kapni, hogy az elkészített layout ki fog íródni az diszkre, ha eddig volt rajta hasznos adatunk, akkor az innentől kezdve múlt idő lesz 🙂 Itt még meggondolhatjuk, ha módosítani szeretnénk vmit, illetve vissza is vonhatjuk teljes egészében.

warning

Mi biztosak vagyunk a dolgunkban, tehát: „Commit”. A gépünk teljesítményétől függően inicializálja és formázza a sliceokat, és megkezdődik a tulajdonképpeni telepítés.

progress

A mi konfigurációnkon ez nagyon hamar megtörténik, kibontja a megfelelő tömörített állományokat a megfelelő fájlrendszerekre. A következő ablakon, melyet ezután kapunk, már be is állíthatjuk a root user jelszavát. Nem kellene mondanom, de megteszem: „erős” jelszót állítsunk be ide.

rootpass

Ha megtettük, és továbbléptünk, következőként a hálózati beállítást ajánlja fel a telepítő:

nic

Egy hálózati kártyát konfiguráltunk, sok választásunk nincs, hagyjuk jóvá az OK-val.

ipv4
dhcp

Ha már ilyen kényelmesen konfigurálhatunk, tegyük is meg. Választhatjuk, hogy DHCP szervertől kapjunk meg a szükséges beállításokat, de mi most, a teszt kedvéért állítsunk fix IP címet.

ipaddr

Majd OK. Rákérdez még arra, hogy IPv6-ot szeretnénk-e konfigurálni. Ezt kihagyhatjuk. Jönnek a DNS beállítások.

dns

A hálózati alapbeállítások készen is vannak. A következő kérdés az időbeállításokra fog vonatkozni.

cest

„No”, majd válasszuk az időzónánknak megfelelő opciót, ami a mi esetünkben Europe, majd Hungary lesz.

timebp

Igen, elfogadjuk a „CEST” rövidítést.

cest2

Következő kérdés, ami már a rendszerre vonatkozik.

sshd

Az „sshd”-t a saját érdekünkben és a távmenedzsment miatt válasszuk ki. Egeret, ha szervert telepítünk, nem valószínű, hogy használnánk, ha szeretnénk időszinkront, akkor „ntpd” mehet, a „powerd” megint csak maradhat üresen.

crashdump

A crash dump-ról kérdez, szeretnénk-e engedélyezni, ezek segítségével debugolhatunk, mi  vagy még inkább a fejlesztők, de sok helyet is elfoglalhat a /var fájlrendszeren. Elfogadhatjuk. Ez a sok kérdés….most pedig azt szeretné tudni a telepítő, hogy egy NEM root jogosultságú user-t akarunk-e most létrehozni. Legyen meg az öröme 🙂

useradd

Töltsük ki számunkra megfelelően a mezőket, majd adjuk meg kétszer a felhasználó jelszavát.

questions

Ha megadtuk, még egyszer összegzi, és rákérdez, hogy biztosan jó lesz-e így nekünk. Hát persze. OK (yes).

nonroot

Vehetünk fel  több user-t is a rendszeren. Most elég ennyi (no). A telepítésünk tulajdonképpen elkészült.

nearend

Itt még állítgathatunk olyan dolgokat, amiket már beállítottunk, de mivel ezen már túl vagyunk, maradjunk az „Exit” menüponton, és lépjünk ki az „OK”-val.  Utolsó kérdésként még megkapjuk, hogy a shellből szeretnénk-e még valamit megtenni, de nekünk ez már felesleges, tehát: NO.

finalstep
reboot

Végeztünk is. REBOOT!!! Újraindulás előtt távolítsuk el az install médiát, majd nézzük mi történik! A bootloader menüjét látjuk, ám, erre vártunk, ez már a saját, telepített rendszerünk menüje!

installedmenu

Készen vagyunk. Az alaptelepítésünk, egyszerű partíciós sémával, felbootolt és működik!

prompt

Jelentkezzünk be, és lássuk, mit csináltunk! Ellenőrizhetjük pl. a hálózatunkat!

ifconfig
ping

Illetve a fájlrendszereket!

df
mount

Ha szeretnénk utókonfigurálni rendszerünket, akkor itt, a FreeBSD-n, van nekünk egy segítőtársunk, akit úgy hívnak, hogy „sysinstall”. Nézzünk róla egy képet, hogy ki is ő, és nagyjából mire használhatjuk:

sysinstall

Neki elsősorban a „Configure” menüpontja lesz a barátunk, ahol sok, a rendszert érintő konfigurációra lesz lehetőség (partícionálás, servicek indítása, user management,  biztonsági beállítások, stb.) Ezt inkébb nem részletezem, mert magáért beszél.

Összegzés:

A leírás talán hosszúnak, és szájbarágósnak tűnik, de ezt az operációs rendszert így, az alapnál csak egy nagyon picivel testre szabottabban feltelepíteni 10 perc volt. Természetesen önmagában most még nem sokat tud, de mégis:  használható, konfigurálható, és hálózaton elérhető, ill. távmenedzselhető ssh-n keresztül. A lemezek természetesen nincsenek tükrözve; ennél bonyolultabb megoldásokról (install RAID1 tömbre, install ZFS mirrorra) majd külön fogok írni.

OpenBSD tűzfal (pf) – II. rész – NAT és redirection

Az OpenBSD pf-ről szóló első írásban a pf rövid történetét, alapjait, a csomagszűrést igyekeztem bemutatni. Említtem azonban már az elején is az ismertetőnek, hogy ennél jóval többre is képes a pf. Ha manapság tűzfalról beszélünk, akkor ha csak a home-kategórás routereket vesszük is alapul, biztosak lehetünk abban, hogy rendelkezik a hálózati címfordítás és a portátírányítás (Network Address Translation (NAT) és port forwarding) képességével. Nincs ez másképp a pf esetében sem. Nézzük meg, hogyan történik ez – pf módra.

OpenBSD tűzfal (pf) – II. rész – NAT és redirection

A jobb megértés kedvéért itt már muszáj volt rajzolnom egy nagyon szimpla topológiát.

PC
Helyi hálózati kapcsolat: IP: 10.0.0.2/24 Gateway: 10.0.0.1 DNS: 192.168.55.1

OpenBSD:
em0:        192.168.55.13/24
em1:        10.0.0.1/24
Gateway:    192.168.55.1
DNS:         192.168.55.1

Címfordítás (NAT):

Látjuk az ábrán, hogy a PC nevű host az OpenBSD-t tűzfalat használja gatewayként. Ahhoz, hogy ez a konfiguráció működő képes legyen, a pf konfigjában szükség lesz némi módosításra. Ha az alapkonfigurációt használjuk a pf-ben, akkor a PC nem fog tudni kommunikálni más hálózatokkal, nem fog „kilátni” az internetre sem. Ezt le is ellenőriztük a PC-ről:

Sem névfeloldásunk nincs (hiszen a DNS szerver is más hálózaton van a PC számára), sem IP-t pingelve nincs válaszunk. Azt viszont látjuk, hogy a gatewayunk pingelhető. Akkor a probléma oka nagy valószínűséggel ott keresendő (fogadjuk el, hogy PC munkaállomás hálózati konfigurációja helyes).

A célunk eléréséhez OpenBSD tűzfalon szükség lesz néhány változtatásra.

1., a kernel IP stackjének meg kell mondanunk, hogy engedélyezze az interfészek között a csomagtovábbítást
2., a pf  konfigurációjában létre kell hoznunk egy NAT szabályt

Nézzük, mik lesznek ezek!

# sysctl net.inet.ip.forwarding=1
# sysctl net.inet6.ip6.forwarding=1 (ezt csak akkor, ha IPv6-ot is használunk)

Ha azt szeretnénk, hogy ez rendszerindítás után automatikusan megtörténjen, akkor tegyük az alábbi sort az /etc/sysctl.conf fileba:

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1 (csak ha IPv6-ot is használunk)

A pf konfigfájljába pedig az alábbi sort:

pass out on em0 from 10.0.0.0/24 to any nat-to 192.168.55.13

Mentsük el a konfigurációs fájlt, és töltsük újra a tűzfal konfigurációt!
# pfctl –Fa –f /etc/pf.conf

Ha ezt megtettük, akkor próbáljuk ki újra a PC nevű hostunkról, hogy tudunk-e az internettel kommunikálni!

A szükséges módosítások után elértük, amit szerettünk volna. Egy pár szó magyarázat talán szükséges lehet a pf-ben történt módosításhoz:

pass out on em0 from 10.0.0.0/24 to any nat-to 192.168.55.13

A fenti sor egy NAT, mégpedig egy úgynevezett source-NAT szabály. Arra utasítja a tűzfalunkat, hogy az összes csomagnak, mely az em0 interface-n hagyja el a tűzfalat és a 10.0.0.0/24-es hálózatból érkezik és a célja akármi, írja át az IP fejlécét, és forrás IP-ként a saját, em0 interface-ének az IP-jét írja bele (192.168.55.13). Természetesen, ahhoz, hogy a kommunikáció visszirányban is tudjon működni, a pf-nek egy állapottáblát kell fenntartani, amelyben a forrás-cél IP- és port hozzárendelések helyezkednek el.

Az www.index.hu folyamatos pingje esetén valami ilyesmit fogunk látni ebben az állapottáblában:

Jól látszik benne, hogy a kommunikáció a 192.168.55.13 és a 217.20.130.97 között zajlik, de a zárójelek között ott látjuk az eredeti  forrás IP-t, ami a valós IP-je a PC nevű hostnak.

Port-forwarding (redirection):

Nézzük most egy példát még az átirányításokra is.

A teszt kedvéért én most az OpenBSD-re felhúztam egy abszolút alapkonfigurációs  webszervert (Apache). Egy böngészőbe begépelve az OpenBSD em1 interface-nek az IP-jét, ezt fogjuk látni:

Nézzünk meg egy redirection-t a pf-fel. Ehhez a következő sort kell beszúrnunk a pf konfigurációs fájljába:

pass in on em1 proto tcp from 10.0.0.0/24 to any port 80 rdr-to 10.0.0.1 port 80

Nézzük, ha az előbbi példában szereplő NAT szabályunkat is felhasználjuk, mit látunk?

Ha bármilyen weboldalt próbálunk megnyitni, a saját OpenBSD-s webszerverünk kezdődoldala töltődik be. Hogy történik ez?

A fenti sor egy NAT, mégpedig egy úgynevezett destination-NAT szabály: ennek magyarázata alapján, ha az em1-es interfészünkön (10.0.0.1) a 10.0.0.0/24-es hálózatból ha bármilyen 80-as tcp portra igyekvő csomag érkezik,  azt átirányítja a 10.0.0.1 IP 80-as portjára. Ez a konfig tipikus példája annak, amikor pl. transzparens Squid proxyt építünk; ekkor az összes kimenő 80-as célportú forgalom a helyi proxyszerverre lesz irányítva.

Végezetül nézzük még meg az általános  formuláját  egy NAT sornak a pf.conf fájlban:

match out on interface [af] from src_addr to dst_addr nat-to ext_addr [pool_type] [static-port]

Itt ha egy csomag bejárja a szabályokat és ha  egyezés van egy match szabállyal, minden opcionális paraméter ami az adott szabályban van, megjegyződik későbbi felhasználásra.

pass out [log] on interface [af] [proto protocol] from ext_addr [port src_port] to dst_addr [port dst_port]

Ez a szabály engedi a csomagok továbbítását. Ha a csomag előzőleg egy match szabályra illeszkedik, ahol paraméterek voltak specifikálva, ezek alkalmazva lesznek ezen a csomagon. A pass szabálynak lehetnek saját, egyedi paraméterei; ezek elsőbbséget fognak élvezni a match szabályban specifikáltakkal szemben.

Megjegyzendő, hogy az OpenBSD 5.x verziójában a szabályok szintaktikáját újragondolták, és a régebbi nat vagy rdr kezdetű szabályok megszűntek. A régi sor így nézett volna ki:

nat on em0 from 10.0.0.0/24 to any -> 192.168.55.13

Míg az új:

pass out on em0 from 10.0.0.0/24 to any nat-to 192.168.55.13

Összegzés:

Akárcsak a pf többi része, a NAT modul is egyértelmű beállítási opciókkal rendelkezik. Az előző részben megismert makrók, listák természetesen itt is alkalmazhatók. A konfigurációs fájl is ugyanaz, mint a csomagszűrő részben tárgyalt. A következő (és egyben utolsó) részben górcső alá vesszük a pf traffic shaping lehetőségeit, és még egy keveset a pf extrái közül.