diff --git a/hu_HU.ISO8859-2/books/handbook/l10n/chapter.xml b/hu_HU.ISO8859-2/books/handbook/l10n/chapter.xml index 0772ecf635..c2aeece2c7 100644 --- a/hu_HU.ISO8859-2/books/handbook/l10n/chapter.xml +++ b/hu_HU.ISO8859-2/books/handbook/l10n/chapter.xml @@ -1,1338 +1,1334 @@ Andrey Chernov Írta: Michael C. Wu Átdolgozta: Honosítás: Az I18N/L10N használata és beállítása Áttekintés A &os; felhasználói földrajzi elhelyezkedésüket tekintve mindenhol megtalálhatóak a világon. Ebben a fejezetben ismertetjük a &os; honosításához és idegennyelvre fordításához alkalmazható eszközöket, amelyek segítségével az angolt nem, vagy csak kevésbé ismerő felhasználók is képesek lesznek komolyabban használni. Az i18n megvalósítása rengeteg szemszögből megközelíthető rendszer és alkalmazás szintjén egyaránt, ezért ahol szükséges, hivatkozni fogunk az odaillő forrásokra. A fejezet elolvasása során megismerjük: milyen nyelveket és nyelvi beállításokat találhatunk napjaink operációs rendszereiben; hogyan használjuk a nyelvi beállításokat a saját parancsértelmezőnkben; hogyan állítsuk be a konzolt az angolon kívül más nyelvekhez; hogyan használjuk ténylegesen az X Window Systemet a különböző nyelvekkel; hol olvashatunk többet az I18N-kompatibilis alkalmazások fejlesztéséről. A fejezet elolvasásához ajánlott: külső alkalmazáok telepítésének ismerete (). Az alapok Mi az I18N/L10N? idegennyelvűség honosítás honosítás A fejlesztők az I18N elnevezést az angol internationalization (idegennyelvűség) szóból származtatják, amiben a szám az első és utolsó betű (az I és N) közt állók mennyiségére utal. Ehhez hasonlóan keletkezett az L10N a localization (honosítás) kifejezésből. Ezek házasságából jöttek létre az I18N/L10N módszerei, protokolljai és mindazon alkalmazásai, melyekkel a felhasználók a választott nyelvüket használni tudják. Az I18N alkalmazások céljak eléréséhez függvénykönyvtárakban implementált I18N készleteket használnak. Ezzel lehetővé válik a fejlesztőik számára, hogy összegyűjtsék a programukban megjelenő összes szöveget egyetlen állományba, majd azt külön lefordítsák a különböző nyelvekre. Mi is ezen konvenció követésére szeretnénk bíztatni minden programozót. Miért használjuk az I18N/L10N-t? Az I18N/L10N mindenhol jól jöhet, ahol idegennyelvű adatot akarunk megjeleníteni, bekérni vagy feldolgozni. Milyen nyelveket támogat az I18N? Az I18N és L10N nem korlátozódik a &os; tudására. Jelenleg a világban beszélt legelterjedtebb nyelvek mindegyikét használhatjuk bennük. Csak hogy néhányat említsünk közülük: kínai, német, japán, koreai, francia, orosz, vietnámi és még sok más. A honosítás használata Az I18N minden adottságával együtt független a &os;-től, egy egyezményes rendszer. Mindenkit bátorítunk arra, hogy segítse a &os;-t ennek az egyezménynek a betartásában. nyelvi beállítások A honosítás beállításai három főbb részre tagolhatóak: a nyelv kódja, az ország kódja és a kódolás. A nyelvi beállítások nevei is ezekből állnak össze, az alábbi séma szerint: NyelviKód_OrszágKód.Kódolás A nyelv és az ország kódja nyelvi kódok országkódok Ha a &os; (vagy bármilyen más, az I18N-t ismerő) rendszert honosítani akarunk az adott nyelvre, akkor a felhasználónak ismernie kell az adott országra és nyelvre vonatkozó kódokat (az országkód fogja elárulni az alkalmazásnak, hogy a nyelv melyik változatát használja). Ezenkívül a böngészők, SMTP/POP szerverek és webszerverek stb. is ennek alapján fognak döntéseket hozni. Íme néhány nyelv/ország kódja: Nyelv/ország kódja Leírás en_US Angol - Egyesült Államok ru_RU Orosz - Oroszország zh_TW Hagyományos kínai - Tajvan Kódolások kódolások ASCII Bizonyos nyelvek 8 bites, széles vagy több byte-os, nem ASCII kódolású karaktereket használnak, melyekről a &man.multibyte.3; man oldalán olvashatunk részletesebben. Ezeket régebbi alkalmazások egyáltalán nem ismerik fel, és hibásan vezérlőkaraktereknek tulajdonítják. Az újabbak általában már felismerik a 8 bites karaktereket. A felhasználóknak az alkalmazásokat a széles vagy a több byte-os karakterek használatához vagy újra kell fordítaniuk, vagy pedig megfelelően be kell állítaniuk, az implementációtól függően. A széles vagy több byte-os karakterek beolvasásához és feldolgozásához a &os; Portgyűjtemény nyelvenként tartalmaz különféle programokat. A konkrét részletek megértéséhez olvassuk el az érintett &os; portok I18N dokumentációját. Vagyis a felhasználóknak át kell nézniük az alkalmazáshoz tartozó dokumentációt, mivel ebből tudhatják meg, hogyan állítsák be ezeket megfelelően vagy milyen értékeket adjanak át a configure/Makefile/fordító hármasnak. Amiket esetleg érdemes lehet ezzel kapcsolatban észben tartanunk: A nyelvfüggő egyszerű karakteres készletek (lásd &man.multibyte.3;), például ISO8859-1, ISO8859-15, KOI8-R, CP437. A széles vagy több byte-os kódolások, például az EUC, Big5. A karakterkészletek jelenleg elérhető listáját meg tudjuk tekinteni az IANA adatbázisában. A &os; helyettük X11-kompatibilis nyelvi kódolásokat használ. I18N alkalmazások A &os; port- és csomagrendszerében az I18N alkalmazások a könnyebb felismerhetőség érdekében a nevükben tartalmazzák az I18N megnevezést. Nem minden esetben támogatják a szükséges nyelvet. A nyelvi beállítások megadása Általában elegendő annyi, hogy a kívánt nyelvi beállítás nevét exportáljuk az általunk használt parancsértelmező LANG környezeti változójába. Ez megtehető a felhasználói könyvtárunkban található ~/.login_conf, vagy a felhasználói parancsértelmező indító állományában (~/.profile, ~/.bashrc, ~/.cshrc). Nem szükséges a nyelvi beállítások részleteit, mint például az LC_CTYPE, LC_CTIME változókat, megadni. A pontosabb részleteket a &os; adott nyelvre vonatkozó dokumentációjában találjuk meg. A következő két környezeti változót kell megadnunk az említett konfigurációs állományokban: - POSIX - - A LANG változót a &posix; + A LANG változót a &posix;POSIX &man.setlocale.3; családjának - MIME - A MM_CHARSET változót az - alkalmazás MIME + alkalmazás MIMEMIME karakterkészletéhez Ez magában foglalja a felhasználói parancsértelmező, az adott alkalmazás és az X11 beállítását. A nyelvi beállítások megadásának módszerei nyelvi beállítások bejelentkezési osztály Két módszer létezik a nyelvi beállítások megadására, ezen kettőről fogunk a továbbiakban beszélni. Az első (és egyben ajánlott) ezek közül a bejelentkezési osztályban levő környezeti változók beállítása, a második pedig környezeti változók hozzáadása a parancsértelmező rendszerszintű indító állományához. Beállítás a bejelentkezési osztályokkal Ezzel a módszerrel a nyelvi beállítás nevéhez és a MIME karakterkészlethez kötődő környezeti változókat az összes létező parancsértelmező számára csak egyszer kell megadnunk ahelyett, hogy külön mindegyikük indítóállományában szerepeltetnénk. A felhasználó a saját részét maga is elvégezheti, míg a rendszer szintjén adminisztrátori jogosultságokat igényel. Felhasználói szintű beállítás Íme példa gyanánt a felhasználó könyvtárában egy egyszerű .login_conf állomány, amiben mind a két változót Latin-1 kódolásra állítottuk: me:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1: hagyományos kínaiBIG-5 kódolás Ebben a .login_conf példában a változókat BIG-5 kódolású hagyomános kínai nyelvre állítjuk. Észrevehetjük, hogy itt sokkal több változó beállítására van szükségünk, mivel egyes szoftverek nem kezelik megfelelően a nyelvi beállításokat kínai, japán és koreai nyelvek esetén. # Azok a felhasználók, akik nem kívánnak tajvani pénz- vagy idő formátumot # használni, egyenként írják át a változókat me:\ :lang=zh_TW.Big5:\ :setenv=LC_ALL=zh_TW.Big5:\ :setenv=LC_COLLATE=zh_TW.Big5:\ :setenv=LC_CTYPE=zh_TW.Big5:\ :setenv=LC_MESSAGES=zh_TW.Big5:\ :setenv=LC_MONETARY=zh_TW.Big5:\ :setenv=LC_NUMERIC=zh_TW.Big5:\ :setenv=LC_TIME=zh_TW.Big5:\ :charset=big5:\ :xmodifiers="@im=gcin": # a gcin beállítása XIM szerverként A többit lásd a Rendszergazdai szintű beállítások résznél és a &man.login.conf.5; man oldalon. Rendszergazdai szintű beállítás Ellenőrizzük, hogy a felhasználó /etc/login.conf állományban szereplő bejelentkezési osztálya a megfelelő nyelvet állítja be. Győződjünk meg róla, hogy az alábbi beállítások helyet kapnak az /etc/login.conf állományban: nyelv_neve|A hozzáférés típusának leírása:\ :charset=MIME_karakterkészlet:\ :lang=nyelvi_beállítás_neve:\ :tc=default: Folytassuk tovább az előbbi Latin-1-es példánk szerint: nemet|Nemet felhasznalok hozzaferesei:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:\ :tc=default: Mielőtt megváltoztatnánk a felhasználók bejelentkezési osztályait, adjuk ki a következő parancsot: &prompt.root; cap_mkdb /etc/login.conf Ezzel a /etc/login.conf új tartalma láthatóvá válik a rendszer számára. A bejelentkezési osztály megváltoztatása a &man.vipw.8; programmal vipw A vipw segédprogramot új felhasználók hozzáadására használjuk, aminek eredményeképpen egy ehhez hasonló bejegyzést tudunk létrehozni: felhasznalo:jelszo:1111:11:nyelv:0:0:Felhasznalo neve:/home/felhasznalo:/bin/sh A bejelentkezési osztály megváltoztatása az &man.adduser.8;-rel adduser bejelentkezési osztály Az adduser-rel az alábbiak szerint tudunk új felhasználókat felvenni a rendszerbe: Adjuk hozzá a defaultclass = nyelv sort az /etc/adduser.conf-hoz. Ne felejtsük el, hogy ezután minden olyan felhasználónál a default bejelentkezési osztályt meg kell adni, akik nem ezt a nyelvet használják. Egy másik megoldás lehet, hogy a &man.adduser.8; használata során minden felhasználó esetén külön megadjuk a nyelvet az Enter login class: default []: rész megjelenésekor. Vagy használhatjuk az alábbit az egyes eltérő nyelvű felhasználók hozzáadásánál: &prompt.root; adduser -class nyelv A bejelentkezési osztály megváltoztatása a &man.pw.8;-vel pw Amennyiben a &man.pw.8;-t használjuk új felhasználók hozzáadására, így érdemes meghívnunk: &prompt.root; pw useradd felhasználó_neve -L nyelv Beállítás a parancsértelmező indító állományával Ezt a módszert nem javasoljuk, mivel parancsértelmezőnként eltérő beállítást kíván. Használjuk helyette a bejelentkezési osztályokkal megvalósított módszert. MIME nyelvi beállítás A nyelvi beállítás nevének és a MIME karakterkészlet beállításához egyszerűen csak adjuk meg a lenti /etc/profile és/vagy /etc/csh.login parancsértelmező indító állományokban bemutatott környezeti változót. Továbbra is a német nyelvet használjuk a példánkban: Az /etc/profile esetén: LANG=de_DE.ISO8859-1; export LANG MM_CHARSET=ISO-8859-1; export MM_CHARSET Vagy a /etc/csh.login esetén: setenv LANG de_DE.ISO8859-1 setenv MM_CHARSET ISO-8859-1 Úgy is megoldhatjuk ezt a feladatot, ha fenti utasításokat a /usr/share/skel/dot.profile (hasonló a fentebb említett /etc/profile állományhoz) vagy /usr/share/skel/dot.login (hasonló a fentebb említett /etc/csh.login állományhoz) esetén hajtjuk végre. X11 esetén: Adjuk meg a $HOME/.xinitrc állományban: LANG=de_DE.ISO8859-1; export LANG Vagy: setenv LANG de_DE.ISO8859-1 Attól függően, milyen parancsértelmezőt használunk (lásd fentebb). A konzol beállítása Az összes egyszerű karakteres készlet esetén a kérdéses nyelvhez megfelelő konzolos betűtípust az /etc/rc.conf állományban tudjuk beállítani: font8x16=betűtípus_neve font8x14=betűtípus_neve font8x8=betűtípus_neve Itt a betűtípus_neve az .fnt kiterjesztés elhagyásával a /usr/share/syscons/fonts könyvtárban található állományok nevéből adható meg. sysinstall billentyűkiosztás betűkiosztás Ha szükséges állítsuk még be a megfelelő billentyű- és betűkiosztást is a sysinstall segítségével. Ahogy sikerült elindítanunk a sysinstallt, válasszuk a Configure (Beállítások) pontot, majd a Console (Konzol)-t! Vagy ehelyett beírhatjuk az alábbi sorokat a /etc/rc.conf állományba: scrnmap=betűkiosztás_neve keymap=billentyűkiosztás_neve keychange="funkcióbillentyű_sorszáma szekvencia" Itt a betűkiosztás_neve a /usr/share/syscons/scrnmaps könyvtárban található állományok nevéből származtatható az .scm kiterjesztés elhagyásával. A betűkiosztásokat általában a 9 bites karaktermátrixszal rendelkező VGA megjelenítők problémáinak megoldására lehet használni, mivel így az eredetileg 8 bittel ábrázolt betűket ki lehet tolni az ilyen típusú kártyák pszeudografikus területéről. Ha aktiváltuk a moused egérkezelő démont az /etc/rc.conf állományban az alábbi sor megadásával: moused_enable="YES" akkor a következő bekezdésben rá is térhetünk az egérmutató adatainak vizsgálatára. moused A &man.syscons.4; meghajtóban található egérmutató alapértelmezés szerint a 0xd0 - 0xd3 karaktereket foglalja el a karakterkészletben. Ha a nyelv ezeket használja, arrébb kell költöztetnünk ezt az egérmutató által elfoglalt sávot. A &os;-ben az /etc/rc.conf állományon keresztül érhetjük el: mousechar_start=3 A billentyűkiosztás_neve a /usr/share/syscons/keymaps könyvtárból, a .kbd kiterjesztés elhagyásával keletkezik. Ha nem vagyunk benne biztosak, melyik kiosztást is kellene használnunk, a &man.kbdmap.1; segítségével a rendszer újraindítása nélkül kipróbálhatjuk a rendelkezésre álló billentyűkiosztásokat. A keychange használatára többnyire a funkcióbillentyűk adott termináltípushoz egyeztetéséhez van szükség, mert a funkcióbillentyűk szekvenciái nem adhatóak meg a billentyűkiosztásban. Ezeken felül érdemes megbizonyosodnunk róla, hogy a /etc/ttys állományban jól állítjuk be a terminál típusát minden ttyv* bejegyzés esetén. Az aktuálisan előre beállított kapcsolatok a következők: Karakterkészlet Termináltípus ISO8859-1 vagy ISO8859-15 cons25l1 ISO8859-2 cons25l2 ISO8859-7 cons25l7 KOI8-R cons25r KOI8-U cons25u CP437 (alapértelmezett VGA) cons25 US-ASCII cons25w A széles és több byte-os karaktereket használó nyelvek esetén használjuk a /usr/ports/nyelv könyvtárban megfelelő &os; portot. Egyes portok konzolosként jelennek meg, miközben a rendszer soros virtuális terminálként látja ezeket, ezért fenn kell tartanunk elegendő virtuális terminált mind az X11, mind pedig pszeudo-soros konzol számára. Itt látható a konzolon más nyelvet használó alkalmazások részleges listája: Nyelv Hely Hagyományos kínai (BIG-5) chinese/big5con Japán japanese/kon2-16dot vagy japanese/mule-freewnn Koreai korean/han Az X11 beállítása Habár az X11 nem része a &os; projektnek, megemlítünk vele kapcsolatban néhány hasznos információt a &os; felhasználók számára is. Még több részletet a &xorg; honlapjáról vagy az általunk használt X11 szerver dokumentációjából tudhatunk meg. Az ~/.Xresources állományban további I18N beállításokat finomíthatunk alkalmazásonként (például betűtípusok, menük stb.). Betűtípusok megjelenítése X11 True Type betűtípus szerver Telepítsük fel az &xorg; (x11-servers/xorg-server) vagy az &xfree86; (x11-servers/XFree86-4-Server) szerverek valamelyikét, majd telepítsük a nyelvhez tartozó &truetype; betűtípusokat. Ezután a megfelelő nyelvi beállítása megadása révén már látni fogjuk a kiválasztott nyelven megjelenő menüket és egyéb szövegeket. Idegennyelvű karakterek bevitele X11 Input Method (XIM) Az X11 beviteli módszerének (X11 Input Method, XIM) protokollja egy új szabvány az összes X11 klienshez. Minden X11 alkalmazást olyan XIM-kliensként kell elkészíteni, amelyek a bemenő adatokat az XIM beviteli szerverektől kapják. Különböző XIM szerverek érhetőek el az eltérő nyelvekhez. Nyomtatók beállítása Egyes egyszerű karakteres készletek általában hardveresen beépítve megtalálhatóak a nyomtatókban. A széles és több byte-os karakterkészletek azonban külön beállítást igényelnek, amire az apsfilter használatát javasoljuk. A megfelelő nyelvhez szabott eszközökkel át is lehet konvertálni &postscript; vagy PDF formátumba a nyomtatni kívánt dokumentumot. A rendszermag és az állományrendszerek A &os; gyors állományrendszere (Fast File System, FFS) szabályosan kezeli a 8 bites karaktereket, tehát tetszőleges egyszerű karakteres készlet (lásd &man.multibyte.3;) használható vele, viszont a karakterkészlet nevét nem tárolja el az állományrendszerben. Emiatt a neveket nyersen kezeli, semmit sem tud a kódolásukról. Az FFS hivatalosan még nem támogat semmilyen fajta széles vagy több byte-os karakterkészletet. Léteznek azonban független javítások az FFS-hez, amelyek lehetővé teszik ilyen széles vagy több byte-os karakterek használatát. Ezek csak átmeneti és nem hordozható megoldások, olyan módosítások, amelyekről úgy döntöttünk, nem vesszük fel ezeket a forrásfába. Az érintett nyelvek honlapjain elérhetjük ezeket a javításokat és többet megtudhatunk róluk. DOS Unicode A &os; &ms-dos; állományrendszere konfigurálható úgy, hogy képes legyen konvertálni az &ms-dos; Unicode és a kiválasztott &os; állományrendszerének karakterkészlete között. Erről bővebben a &man.mount.msdosfs.8; man oldalon olvashatunk. I18N programok fordítása Számos &os; port rendelkezik I18N támogatással. Ezek egy részének nevében szerepel az -I18N jelzés. Az ilyen és sok más hasonló program beépítetten ismeri az I18N-t, így nem igényelnek külön beállításokat. MySQL Néhány alkalmazás azonban, mint például a MySQL, esetén az adott karakterkészletnek megfelelő módon kell beállítani a Makefile állományt. Ezt általában magában a Makefile állományban tudjuk megtenni, vagy pedig a configure megfelelő paraméterezésével. A &os; honosítása adott nyelvekre Andrey Chernov Eredetileg írta: Az orosz nyelv (KOI8-R kódolás) honosítás orosz A KOI8-R kódolásról bővebben a KOI8-R oldalán (orosz hálózati karakterkészlet) tájékozódhatunk. A nyelvi beállítások megadása Írjuk a következő sorokat a ~/.login_conf állományunkba: me:Az en hozzaferesem:\ :charset=KOI8-R:\ :lang=ru_RU.KOI8-R: Valamint lásd a fejezet korábbi részeiben említett példákat a nyelvi beállítások megadására. A konzol beállítása Tegyük hozzá a következő sort az /etc/rc.conf állományunkhoz: mousechar_start=3 Illetve használjuk az /etc/rc.conf állományban még a következő beállításokat is: keymap="ru.koi8-r" scrnmap="koi8-r2cp866" font8x16="cp866b-8x16" font8x14="cp866-8x14" font8x8="cp866-8x8" A /etc/ttys állományban szereplő mindegyik ttyv* bejegyzésnél adjuk meg termináltípusnak a cons25r-t. Valamint lásd a fejezet korábbi részében bemutatott példákat a konzol beállítására. A nyomtatás beállítása nyomtatók Mivel a legtöbb nyomtató hardveresen tartalmazza a CP866 kódlapot az orosz karakterek támogatásához, használnunk kell egy kimeneti szűrőt a KOI8-R kódolású karakterek CP866 kódolásúra konvertálásához. Egy ilyen szűrő alapértelmezés szerint telepítésre kerül a /usr/libexec/lpr/ru/koi2alt állományba. Az orosz nyomtatóhoz tartozó bejegyzés valahogy így néz ki az /etc/printcap állományban: lp|Orosz helyi sornyomtato:\ :sh:of=/usr/libexec/lpr/ru/koi2alt:\ :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs: A bővebben magyarázathoz lásd a &man.printcap.5; man oldalt. Az &ms-dos; állományrendszere és az orosz állománynevek A most következő példa &man.fstab.5; bejegyzés azt mutatja meg, hogy lehet bekapcsolni az orosz állománynevek támogatását a csatlakoztatandó &ms-dos; állományrendszereken: /dev/ad0s2 /dos/c msdos rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0 Az kapcsolóval kiválasztjuk a használni kívánt nyelvi beállítás nevét, és a kapcsolóval megadjuk a karakterek átváltásához szükséges táblázatot. A kapcsoló használata során mindenképpen csatlakoztassuk a /usr állományrendszert még az &ms-dos; partíció előtt, mivel az átváltáshoz használt táblázatok a /usr/libdata/msdosfs könyvtárban találhatóak meg! A részleteket a &man.mount.msdosfs.8; man oldalon találhatjuk meg. Az X11 beállítása Adjuk meg először a leírtak szerint a nem X-es nyelvi beállításokat. Ha &xorg;-ot használunk, telepítsük a x11-fonts/xorg-fonts-cyrillic csomagot. Ellenőrizzük a /etc/X11/xorg.conf állományban a "Files" szakaszt. Az alábbi sort mindegyik más FontPath bejegyzés előtt kell szerepeltetnünk: FontPath "/usr/X11R6/lib/X11/fonts/cyrillic" A portok között találhatunk még további cirill betűtípusokat. Az orosz billentyűzet életre keltéséhez írjuk be a következőket az xorg.conf állomány "Keyboard" szakaszába: Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:toggle" Ellenőrizzük, hogy a XkbDisable ki van kapcsolva (ki van kommentezve) ebben a szakaszban. A grp:toggle beállítás esetén az orosz/latin (RUS/LAT) átkapcsolás gombja a jobb Alt lesz, míg a grp:ctrl_shift_toggle beállításnál a CtrlShift. A grp:caps_toggle esetén az orosz/latin váltás a CapsLock billentyűvel történik. Ilyenkor (de csak latin módban) a megszokott CapsLock funkció továbbra is elérhető a ShiftCapsLock kombinációval. A grp:caps_toggle valamiért nem működik az &xorg;ban. Ha van &windows; billentyűnk a billentyűzeten és azt tapasztaljuk, hogy egyes nem-alfabetikus billentyűk rosszul kerülnek kiosztásra orosz módban, adjuk hozzá a következő sort az xorg.conf állományhoz: Option "XkbVariant" ",winkeys" Az orosz XKB billentyűzet egyes nem honosított alkalmazások esetén nem működik. A kis mértékben honosított alkalmazások esetén javasolt meghívni a XtSetLanuageProc(NULL, NULL, NULL); függvényt valahol a program elején. Az X11 alkalmazások honosításához további útmutatásokat a KOI8-R X Window-ra című leírásban találhatunk. Hagyományos kínai honosítás tajvaniak számára honosítás hagyományos kínai A &os;-Taiwan projekt készített a &os;-hez egy kínainak szóló hogyant, amely elérhető a címen és számos kínai portot használ. A &os; kínai hogyan jelenlegi szerkesztője Shen Chuan-Hsing (statue@freebsd.sinica.edu.tw). Chuan-Hsing Shen (statue@freebsd.sinica.edu.tw) létrehozta a Kínai &os; gyűjteményt (Chinese &os; Collection, CFC) a &os;-Taiwan zh-L10N-tut munkáját felhasználva. A hozzá tartozó csomagok és szkriptek elérhetőek a címen. Honosítás német (és minden más ISO 8859-1 kódolású) nyelvre honosítás német Slaven Rezic (eserte@cs.tu-berlin.de) készített egy írást, amely elmagyarázza, hogyan használjunk német nemzeti karaktereket a &os; alatt. Ez a leírás németül készült és a címen érhető el. Honosítás görög nyelvre honosítás görög Nikos Kokkalis nickkokkalis@gmail.com egy teljes cikket írt a &os; görög nyelvi támogatásáról. Ez elérhető a &os; hivatalos görög nyelvű dokumentációjában, a címen. Felhívjuk a figyelmet, hogy az csak görög nyelven érhető el. Honosítás japán és koreai nyelvekre honosítás japán honosítás koreai A japán honosításhoz lásd , a koreaihoz pedig lásd . Idegennyelvű &os; dokumentáció Néhány &os; felhasználó lefordította a &os; dokumentációjának egyes részeit más nyelvekre is. Munkájuk elérhető a főoldalon található linkeken keresztül vagy a /usr/share/doc könyvtárban. diff --git a/hu_HU.ISO8859-2/books/handbook/mail/chapter.xml b/hu_HU.ISO8859-2/books/handbook/mail/chapter.xml index 4f27bafc12..e8a8d1e56e 100644 --- a/hu_HU.ISO8859-2/books/handbook/mail/chapter.xml +++ b/hu_HU.ISO8859-2/books/handbook/mail/chapter.xml @@ -1,3019 +1,3018 @@ Bill Lloyd Eredetileg készítette: Jim Mock Átdolgozta: Elektronikus levelezés Áttekintés e-mail Az elektronikus levelezés, más néven e-mail, a kommunikáció egyik legjobban elterjedt formája. Ebben a fejezetben bemutatjuk, hogyan futtassunk &os;-n levelező szervert, illetve hogyan küldjünk és fogadjunk e-maileket a &os; használatával. Ez azonban semmiképpen sem tekinthető egy teljes referenciának és tulajdonképpen számos fontos tényezőről szót sem ejtünk. A témára úgy kaphatunk egy sokkal átfogóbb rálátást, ha a ben felsorolt remek könyveket is elolvassuk. A fejezet elolvasása során megismerjük: milyen szoftverkomponensek játszanak szerepet az elektronikus levelek küldésében és fogadásában; &os;-ben hol találhatóak a sendmail konfigurációs állományai; mi a különbség a helyi és távoli postaládák között; hogyan akadályozzuk meg, hogy a levelező szerverünk a kéretlen levélszemetet továbbítson; rendszerünkön hogyan telepítsünk és állítsunk be más levelező szervereket a sendmail helyett; hogyan oldjuk meg a levelező szerverekkel kapcsolatban felmerülő általános problémákat; hogyan használjuk az SMTP protokollt az UUCP protokollal; hogyan kell rendszerüket csak levélküldésre beállítani; hogyan levelezzünk betárcsázós kapcsolattal; hogyan növeljük rendszerünk védelmét az SMTP hitelesítésének engedélyezésével; hogyan telepítsünk és használjunk a levelek küldésére és fogadására például a mutthoz hasonló levelező klienseket; hogyan töltsük le leveleinket egy távoli POP vagy IMAP szerverről; hogyan alkalmazzunk automatikusan adott szabályokat vagy szűrőket az érkező levelekre. A fejezet elolvasása előtt ajánlott: az internet-csatlakozásunk megfelelő beállítása (); a névfeloldás beállítása (); a külső fejlesztésű alkalmazások telepítésének ismerete (). Az elektronikus levelezés használata POP IMAP DNS Öt fontosabb részre bonthatjuk a levelezést. Ezek: a felhasználói program (mail user agent), a levélküldő démon (mail transfer agent), a névfeloldás, a helyi vagy távoli postaláda és természetesen maga a levelező szerver (mail host). A felhasználói program Ide soroljuk a különböző parancssoros programokat, mint például a mutt, pine, elm és mail, valamint a különféle grafikus alkalmazásokat, mint például a balsa és az xfmail, csak hogy felsoroljuk néhány újabb, egy webböngészőhöz hasonlóan kifinomult eszközt is. Ezek a programok egyszerűen átküldik az elektronikus levelekkel kapcsolatos tranzakciókat a helyi levelező szervernek vagy meghívják valamelyik levélküldő démont, esetleg közvetlenül a TCP protokollon keresztül kézbesítenek. A levélküldő démon levélküldő démon sendmail levélküldő démon postfix levélküldő démon qmail levélküldő démon exim A &os; alapból a sendmail nevű programot ajánlja fel erre a célra, de támogat más levelező szervereket is, ezek közül meg is említünk néhányat ízelítőként: exim postfix qmail Ez a démon általában két feladatot lát el — a beérkező levelek fogadásáért és a kimenő levelek elküldéséért felelős. Nem tartozik azonban a feladatai közé, hogy a POP vagy IMAP protokollokhoz hasonlóan olvashatóvá tegye a leveleinket, illetve csatlakozni engedjen a helyi mbox vagy Maildir formátumú postaládáinkhoz. Ezekhez a műveletekhez egy külön démon szükségeltetik. A sendmail régebbi változatai tartalmaznak olyan komoly biztonsági hibákat, amelyek kihasználásával az illetéktelen behatolók helyi és/vagy távoli hozzáférést tudnak szerezni a gépünkön. Az ilyen jellegű problémák elkerülése érdekében igyekezzünk mindig a legfrissebb verzióját használni. Vagy a &os; Portgyűjteményéből telepítsünk fel egy másik levélküldő démont. Az elektronikus levelek és a névfeloldás A névfeloldás (Domain Name System, DNS) és a hozzá tartozó named démon nagy szerepet játszik az elektronikus levelek továbbításában. A démon a leveleket úgy küldi át az egyik gépről a másikra, hogy a névfeloldáson keresztül megkeresi azt a távoli gépet, amelynek a leveleket címezték. Ez a folyamat szintén végbemegy, amikor egy távoli gépről levelet küldenek a mi szerverünkre. MX rekord A DNS valósítja meg a hálózati nevek és az IP-címek összerendelését valamint ez tárolja el a levélküldésre vonatkozó információkat is, amelyeket MX rekordoknak hívnak. Az MX (Mail eXchanger, levélváltó) rekord adja meg azt a gépet vagy azokat a gépeket, amelyek az adott névtartományban fogadják a leveleket. Ha a hálózati nevünkhöz vagy tartományunkhoz nem tartozik MX rekord, akkor a levél közvetlenül a gépünkre vándorol feltéve, hogy rendelkezik olyan A rekorddal, amely összerendeli a gépünk nevét az IP-címével. A &man.host.1; parancs használatával az alábbi példához hasonlóan tetszőleges tartomány MX rekordját meg tudjuk nézni: &prompt.user; host -t mx FreeBSD.org FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org Az elektronikus levelek fogadása elektronikus levél fogadása A tartományunkhoz tartozó leveleket fogadását a levelező szerver végzi. Összegyűjti a tartományunkba küldött összes levelet és ezeket a beállításainktól függően vagy mbox (a levelek tárolásának alapértelmezett módja) vagy pedig Maildir formátumban eltárolja. Ahogy eltárolt egy levelet, úgy helyben egyből el is tudjuk olvasni például a &man.mail.1; vagy a mutt használatával, illetve távolról a POP vagy IMAP és a hasonló protokollokkal tudjuk elérni és begyűjteni. Ezért tehát ha csak a helyi gépen kívánjuk olvasni a leveleinket, akkor ahhoz egyáltalán nem kell POP vagy IMAP szervert telepítenünk. Távoli postaládák elérése a <acronym>POP</acronym> és <acronym>IMAP</acronym> használatával POP IMAP A távoli postaládák eléréséhez tudnunk kell csatlakozni egy POP vagy IMAP szerverhez. Ezeken a protokollokon keresztül tudják a felhasználók minden különösebb nehézség nélkül elérni távolról a helyi postaládáikat. Noha a POP és az IMAP segítségével egyaránt el tudjuk így érni a postaládákat, az IMAP használatának mégis több előnye van, íme néhány közülük: Az IMAP a levelek leszedése mellett tárolni is képes a távoli szerveren. Az IMAP támogat párhuzamos lekéréseket. Az IMAP hihetetlenül hasznos tud lenni lassabb összeköttetések esetében, mivel lehetővé teszi a felhasználók számára, hogy csak az üzenetek vázát töltsék le és ne az egészet. Továbbá a szerver és a kliens közti adatmozgás csökkentése érdekében képes bizonyos feladatokat a szerveren elvégezni, például keresni. Egy POP vagy IMAP szerver telepítéséhez az alábbi lépések megtétele szükséges: Válasszuk ki az igényeinket legjobban kielégítő IMAP vagy POP szervert. A következő POP és IMAP szerverek eléggé elterjedtek és egyben remek példák: qpopper teapop imap-uw courier-imap A Portgyűjteményből telepítsük fel a kiválasztott POP vagy IMAP démont. Ha szükséges, akkor a POP vagy IMAP szerver betöltéséhez írjuk át az /etc/inetd.conf állományt. Meg kell említenünk, hogy mind a POP és az IMAP az összes információt, tehát belértve a felhasználók neveit és jelszavait titkosítatlan formában továbbítja. Ez azt jelenti, hogy ha ezeket a protokollokat biztonságos módon szeretnénk elérni, akkor az &man.ssh.1; használatával hozzunk létre hozzá egy tunnelt és azon keresztül használjuk. Erről részletesebben a ban olvashatunk. A helyi postaládák elérése A helyi postaládákat a szerveren levő levelező kliensek közvetlen használatával érhetjük el. Ilyen alkalmazások például a mutt vagy a &man.mail.1;. A levelező szerver levelező szerver A levelező szerver az a szerver, amely a gépünk vagy akár az egész hálózatunk irányába érkező levelek fogadásáért és elküldéséért felelős. Christopher Shumway Írta: A <application>sendmail</application> beállítása sendmail A &man.sendmail.8; a &os; alapértelmezett levéltovábbító ügynöke (Mail Transfer Agent, MTA). A sendmail feladata fogadni a levelező kliensektől (Mail User Agent, MUA) érkező leveleket és kézbesíteni azokat a konfigurációs állományában megadott megfelelő levelezőnek. A sendmail hálózati kapcsolatokat is fogad, képes a helyi postaládákba vagy akár más programoknak is leveleket továbbítani. A sendmail a következő állományban tárolja beállításait: /etc/mail/access /etc/mail/aliases /etc/mail/local-host-names /etc/mail/mailer.conf /etc/mail/mailertable /etc/mail/sendmail.cf /etc/mail/virtusertable Állomány Szerep /etc/mail/access A sendmail által engedélyezett hozzáféréseket tároló adatbázis /etc/mail/aliases A postaládák álnevei /etc/mail/local-host-names Azon nevek felsorolása, amelyek számára a sendmail leveleket fogad /etc/mail/mailer.conf A levelező programok beállításai /etc/mail/mailertable A levelező programok kézbesítési táblázata /etc/mail/sendmail.cf A sendmail központi beállításait tároló állomány /etc/mail/virtusertable Virtuális felhasználók és tartományok táblázatai <filename>/etc/mail/access</filename> Az engedélyezett hozzáféréseket tároló adatbázis tartalmazza milyen hálózati neveken vagy IP-címeken lehet elérni a helyi levelező szervert és azok milyen típusú hozzáférést kapnak. A gépek az (rendben), (visszautasít), (továbbítás) beállításokat alkalmazhatjuk, vagy egyszerűen meghívhatjuk hozzájuk a sendmail hibakezelő rutinját egy adott kézbesítési hibával. Ha egy gépet az beállítással veszük fel a listára, ami egyébként alapértelmezés, akkor ez a gép levelet tud küldeni egészen addig, amíg a végső cél a helyi gép marad. A beállítással felsorolt gépek számára semmiféle levelezés nem engedélyezett. Ha pedig egy gép mellett a beállítás jelenik meg, akkor a szerveren keresztül tetszőleges címre küldhet. A <application>sendmail</application> elérését szabályozó adatbázis beállítása cyberspammer.com 550 Nem szeretjuk a spammereket FREE.STEALTH.MAILER@ 550 Nem szeretjuk a spammereket another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY Ebben a példában öt bejegyzést láthatunk. A táblázat bal felének valamelyik sorára illeszkedő küldőkre a táblázatban a sor jobb felén megjelenő cselekvés érvényesül. Az első két sorban a sendmail hibakezelő rutinjának adunk át hibakódokat. A hozzá tartozó üzenet akkor fog megjelenni a távoli gépen, amikor a tőle érkező levél illeszkedik a bal oldali szabályra. Az ezeket követő bejegyzésben visszalökünk minden olyan levelet, amely az internetről egy adott számítógéptől érkezik, például az another.source.of.spam címről. A következő bejegyzésben az okay.cyberspammer.com címről elfogadjuk a kapcsolódást, ami viszont sokkal pontosabb megjelölés a fentebb szereplő cyberspammer.com sornál. A pontosabban kifejtett nevek felülbírálják a kevésbé pontosan megnevezetteket. Végül az utolsó bejegyzésben engedélyezzük a levelek továbbküldését minden olyan gép számára, amelynek címe a 128.32 előtaggal kezdődik. Ezek tehát képesek ezen a levelező szerveren keresztül bárhova leveleket küldeni. Az állomány módosítása után az adatbázis frissítéséhez mindig le kell futtatnunk egy make parancsot az /etc/mail/ könyvtárban. <filename>/etc/mail/aliases</filename> Az álneveket tartalmazó adatbázis virtuális postaládákat sorol fel, amelyek más felhasználókra, állományokra, programokra vagy további álnevekre vonatkozhatnak. Íme néhány példa az /etc/mail/aliases állományban szereplő bejegyzésekre: Virtuális postaládák root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" A formai szabályok egyszerűek: a kettőspont bal oldalára kell írni azt a postaládát, amely a jobb oldalán levő célokra bomlik. A példa első sorában egyszerűen megfeleltetjük a root postaládáját a localuser postaládájának, majd ezt a nevet keressük az álnevek adatbázisában. Ha nem találunk már rá illeszkedést, akkor az üzenetet a localuser nevű helyi felhasználónak továbbítjuk. A következő sorban címek listáját láthatjuk. Ennek megfelelően a ftp-bugs postaláda címére küldött levelek három további helyi postaládára mennek tovább: ezek név szerint a joe, eric és paul felhasználók postaládái. Itt a távoli postaládák felhasználó@példa.hu alakban adhatóak meg. A következő sor az állományok használatát példázza, ahol konkrétan a /dev/null állományba irányítjuk át az adott címre érkező leveleket. Az utolsó sorban pedig a programok használatára láthatunk példát, ahol ebben az esetben a levél egy &unix;-os csövön keresztül a /usr/local/bin/procmail szabványos bemenetére kerül. Ha megváltoztatjuk ezt az állományt, akkor utána az adatbázis frissítéséhez ne felejtsük el meghívni a make parancsot az /etc/mail/ könyvtárban. <filename>/etc/mail/local-host-names</filename> Ebben az állományban adhatjuk meg, hogy a &man.sendmail.8; milyen hálózati neveket fogadjon el helyi hálózati névként. Ide kell raknunk azokat a tartományokat vagy címeket, amelyektől a sendmail leveleket fogad el. Például, ha a levelező szerver az minta.com tartományból és a level.minta.com címről fogad el leveleket, akkor a local-host-names valahogy így fog kinézni: minta.com level.minta.com Az állomány módosításakor a &man.sendmail.8; programot újra kell indítani a változások érvényesítéséhez. <filename>/etc/mail/sendmail.cf</filename> Ahogy a sendmail központi konfigurációs állománya, a sendmail.cf irányítja a sendmail átfogó viselkedését, beleértve mindent az e-mail címek átírásától kezdve a távoli szervereknek küldött elutasító üzenetek küldéséig. Mivel ennyire sokfajta szerepet tölt be egyszerre, ezért ez a konfigurációs állomány meglehetősen összetett és a részletezése meghaladná ennek a leírásnak a határait. Szerencsére az átlagos levelező szerverek esetében ezt az állományt nagyon ritkán kell módosítani. A sendmail központi konfigurációs állománya a sendmail lehetőségeit és viselkedését meghatározó &man.m4.1; makrókból építhető fel. A pontosabb részleteket a /usr/src/contrib/sendmail/cf/README állományban találjuk meg. Az állomány megváltoztatása után a módosítások érvényesítéséhez újra kell indítani a sendmail programot. <filename>/etc/mail/virtusertable</filename> A virtusertable állomány képezi le a virtuális tartományokhoz tartozó címeket valódi postaládák címeire. Ezek a postaládák lehetnek helyiek, távoliak, az /etc/mail/aliases állományban megadott álnevek vagy állományok. Példa a virtuális tartományok leképezésére root@minta.com root postmaster@minta.com postmaster@noc.minta.net @minta.com joe A fenti példában megadtunk egy leképezést a minta.com tartományhoz. Ez az állomány úgy dolgozódik fel, hogy fentről lefelé illesztődnek a címek, egészen az első egyezésig. Az első bejegyzés szerint a root@minta.com a helyi root felhasználó postaládájára képződik le. A következő bejegyzés szerint a postmaster@minta.com a noc.minta.net címen található postmaster nevű felhasználó postaládájára képződik le. Végezetül, ha a minta.com címről eddig még semmi sem illeszkedett volna, akkor az utolsó leképezés veszi át, amely az minta.com tartományon belül az összes többi címre küldött levelet a helyi joe nevű felhasználó postaládájára képezi le. Andrew Boothman Írta: Gregory Neil Shapiro Levelei segítségül szolgáltak: A levéltovábbító ügynök megváltoztatása e-mail a levéltovábbító megváltoztatása Ahogy arról már korábban szó esett, a &os; alapból tartalmazza a sendmail programot mint levéltovábbító ügynököt (MTA, Mail Transfer Agent). Ennélfogva alapértelmezés szerint ez a felelős a kimenő és beérkező levelek kezeléséért. Számtalan okból eredően egyes rendszergazdák azonban mégis szeretnék lecserélni a rendszerükhöz tartozó levéltovábbítót. Ennek oka lehet egyszerűen csak annyi, hogy ki akarunk próbálni egy másik programot vagy éppen egy olyan eszközre van szükségünk, amely kizárólag csak máshol található meg. Szerencsére a &os; megkönnyíti ezt a váltást. Az új levéltovábbító telepítése A levéltovábbítók széles köre elérhető. A &os; Portgyűjteményéből elindulva sok ilyen programot találhatunk. Természetesen teljesen mindegy, hogy melyik levéltovábbítót választjuk egészen addig, amíg képesek vagyunk &os; alatt rendesen futtatni. Kezdjük tehát az új levéltovábbító telepítésével. Miután sikerült telepíteni, lehetőségünk van eldönteni, hogy valóban eleget tesz-e az igényeinknek, sőt az új szoftvert még az előtt be tudjuk állítani, hogy átvenné a sendmail helyét. Vigyázzunk azonban, hogy az új szoftver telepítésekor ne írjon felül olyan rendszerszintű binárisokat, mint például a /usr/bin/sendmail. Másrészt az új levelező szoftvert szolgálatba helyezése előtt mindenképpen fontos megfelelően beállítanunk. A kiválasztott levéltovábbító beállításával kapcsolatban olvassuk el a hozzá tartozó dokumentációt. A <application>sendmail</application> letiltása Amikor letiltjuk a sendmail kimenő levél szolgáltatását, soha ne felejtsük el pótolni valamilyen más levelező rendszerrel. Ha nem így cselekszünk, akkor például a &man.periodic.8; és a hozzá hasonló programok nem lesznek képesek a tőlük megszokott módon e-mailben elküldeni a futásuk eredményét. A rendszer bizonyos részei ráadásul egy működő, sendmail-kompatibilis rendszert feltételeznek. Ha letiltása után az alkalmazások továbbra is a sendmail segítségével próbálnak levelet küldeni, akkor ez a levél a sendmail inaktív sorába kerülhet, ahonnan soha nem kerül kézbesítésre. A sendmail teljes leállításához, beleértve a kimenő levelekhez tartozó szolgáltatást is, a következőket kell megadni az /etc/rc.conf állományban: sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" Ha csak a sendmail beérkező levelekre vonatkozó szolgáltatását akarjuk tiltani, akkor ahhoz az /etc/rc.conf állományban a következőt állítsuk be: sendmail_enable="NO" A sendmail indításával kapcsolatos további beállításokat az &man.rc.sendmail.8; man oldalon találjuk. Az új levéltovábbító elindítása a rendszerrel együtt Az új levéltovábbítót úgy tudjuk elindítani a rendszerrel együtt, ha az /etc/rc.conf állományba felvesszük a következő sort, például a postfix esetében: &prompt.root; echo 'postfix_enable="YES"' >> /etc/rc.conf Az új levéltovábbító így most már magától el fog indulni a rendszer indításakor. A <application>sendmail</application> mint a rendszer alapértelmezett levelező eszközének lecserélése A sendmail annyira elterjedt szabványos szoftver a &unix; rendszereken, hogy egyes szoftverek egyszerűen feltételezik a jelenlétét. Emiatt sok levéltovábbítóhoz tartozik egy sendmail kompatibilis parancssoros felület is, amellyel igyekeznek megkönnyíteni a sendmail gyors lecserélését. Ennek következtében tehát, ha egy másik levelező eszközt használunk, akkor valamilyen módon meg kell bizonyosodnunk róla, hogy a szabványos sendmail binárisok, mint például a /usr/bin/sendmail, valóban a kiválasztott levéltovábbítot fogják aktiválni. Szerencsére a &os; pontosan emiatt tartalmaz egy &man.mailwrapper.8; nevű rendszert. Amikor a sendmail telepítése szerint működik, valami hasonlót fogunk találni az /etc/mail/mailer.conf állományban: sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail Ez azt jelenti, hogy amikor az itt felsorolt általános parancsok közül lefuttatjuk valamelyiket (például magát a sendmail parancsot), akkor a rendszer magától meghívja a sendmail néven szereplő wrapper programot, amely pedig a mailer.conf alapján kideríti, hogy az adott esetben a /usr/libexec/sendmail/sendmail hívására van szükség. Ez a rendszer megkönnyíti az alapértelmezett sendmail funkciók helyében lefuttatandó binárisok átállítását. Így tehát, ha a /usr/local/supermailer/bin/sendmail-compat állományt akarjuk futtatni a megszokott sendmail helyében, akkor az /etc/mail/mailer.conf állományt a következőképpen kell módosítanunk: sendmail /usr/local/kedvenclevelező/bin/sendmail-compat send-mail /usr/local/kedvenclevelező/bin/sendmail-compat mailq /usr/local/kedvenclevelező/bin/mailq-compat newaliases /usr/local/kedvenclevelező/bin/newaliases-compat hoststat /usr/local/kedvenclevelező/bin/hoststat-compat purgestat /usr/local/kedvenclevelező/bin/purgestat-compat A művelet befejezése Ahogy a céljainknak megfelelően mindent beállítottunk, akkor vagy egyszerűen leállítjuk a sendmail neve alatt futó programokat és helyettük elindítjuk az új szoftverhez tartozókat, vagy csak újraindítjuk a gépet. Az újraindítással mellesleg ellenőrizhetjük azt is, hogy jól állítottuk be a rendszerünket és az új levélküldő tényleg elindul a rendszerünkkel együtt. A hibák elhárítása e-mail hibaelhárítás Miért kell teljes hálózati neveket megadni a gépemen? Előfordulhat, hogy a hivatkozni kívánt gép valójában egy másik tartományban szerepel. Például, ha az ize.mize.edu gépen vagyunk és a vagyis nevű gépet akarjunk innen elérni a mize.edu tartományban, akkor a teljes hálózati nevével, vagyis a vagyis.mize.edu néven kell rá hivatkoznunk, nem pedig egyszerűen csak vagyis néven. Régebben egyébként ezt a BSD-típusú BINDBIND névfeloldók megengedték. A &os; jelenlegi változatai azonban már olyan BIND verziót tartalmaznak, amelyek alapértelmezés szerint már nem engedik a tartományunkon kívüli relatív nevek használatát. Tehát a vagyis vagy a vagyis.ize.mize.edu gép lesz, vagy a legfelső, gyökér tartományban keresi a rendszer. Ez eltér a korábbi viselkedéstől, ahol a keresés folytatódott a vagyis.mize.edu és vagyis.edu tartományokban is. Az RFC 1535 elolvasásából ki fog derülni, hogy miért nem vált be ez a gyakorlat és hogy miért tekinthető még akár biztonsági résnek is. Ezt a problémát egyébként megoldhatjuk annyival, hogy az /etc/resolv.conf állományba a search ize.mize.edu mize.edu sor helyett a domain ize.mize.edu sort írjuk be. Arra viszont ügyeljünk, hogy a keresési rend ne lépje át a helyi és nyilvános adminisztráció között meghúzódó határt, ahogy azt az RFC 1535 nevezi. A sendmail szerint a levél a saját farkába harap Ezt a sendmail gyakran ismértelt kérdései között a következőképpen válaszolták meg: A következő hibaüzenetet kapom: 553 MX list for taromány.net points back to felé.tartomány.net 554 felhasználó@tartomány.net... Local configuration error Hogyan oldható meg ez a probléma? Azt kértük, hogy a tartományba (például tartomány.net) küldött levél az MXMX rekord rekord felhasználásával egy adott gépre legyen átirányítva (ebben az esetben ez a felé.tartomány.net), de a továbbítást végző gép nem ismeri fel magát a tartomány.net címen. Vegyük fel a tartomány.net tartományt az /etc/mail/local-host-names állományba [melyet a 8.10 előtti verziókban /etc/sendmail.cw állománynak hívnak] (ha a FEATURE(use_cw_file) beállítást használjuk) vagy tegyük hozzá a Cw tartomány.net sort az /etc/mail/sendmail.cf állományhoz. A sendmail GYIK a címen található meg (angolul) és mindenképpen javasolt elolvasni, ha fel szeretnénk piszkálni a levelező rendszerünk beállításait. Hogyan tudok levelező szervert futtatni egy betárcsázós PPPPPP kapcsolat esetében? Egy helyi hálózaton levő &os;-s gépet akarunk tehát az internethez kapcsolni. Ez a &os;-s gép lesz a helyi hálózat leveleket továbbító átjárója. A PPP kapcsolat nem dedikált. Legalább két módon meg tudjuk oldani. Az egyik módszer szerint az UUCPUUCP használatára lesz szükségünk. A másik módszer szerint szereznünk kell egy éjjel-nappal üzemelő internetes szervert, amely majd szolgáltatja a másodlagos MX rekordot a tartományunkhoz. Például, ha a cégünk tartománya a cég.hu és az internet-szolgáltatónk a szolgáltató.net névre beállította a tartományunkhoz a másodlagos MXMX record rekordokat: cég.hu. MX 10 cég.hu. MX 20 szolgáltató.net. Végső címzettként csak egy gépet kell megadni (az /etc/mail/sendmail.cf állományba a cég.hu címhez tegyük hozzá a Cw cég.hu sort). Amikor a leveleket küldeni akaró sendmail megpróbál kézbesíteni, először hozzánk (cég.hu) próbál csatlakozni a modemes összeköttetésen keresztül. Ez valószínűleg időtúllépéssel befejeződik, mivel nem vagyunk fenn minden pillanatban a neten. A sendmail ekkor automatikusan a másodlagos MX rekord által megadott címre küldi a levelet, tehát a szolgáltatónkhoz (szolgáltató.net). Ez a másodlagos MX cím próbálja majd időlegesen elérni a gépünket és kézbesíteni a leveleket az elsődleges MX rekord által megadott gépre (cég.hu). A bejelentkezéskor ezért egy hasonló szkriptet kell lefuttatnunk: #!/bin/sh # Tegyük a /usr/local/bin/pppmyisp állományba: ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp Ha készítünk egy külön bejelentkező szkriptet a felhasználók számára, akkor a sendmail -qRcég.hu parancsot is használhatjuk a fenti szkript helyett. Ezzel a cég.hu sorában található összes levél azonnal feldolgozásra kerül. A helyzetet így lehetne még jobban pontosítani: Az alábbi üzenet a &a.isp; archívumából származik. > we provide the secondary MX for a customer. The customer connects to > our services several times a day automatically to get the mails to > his primary MX (We do not call his site when a mail for his domains > arrived). Our sendmail sends the mailqueue every 30 minutes. At the > moment he has to stay 30 minutes online to be sure that all mail is > gone to the primary MX. > > Is there a command that would initiate sendmail to send all the mails > now? The user has not root-privileges on our machine of course. In the privacy flags section of sendmail.cf, there is a definition Opgoaway,restrictqrun Remove restrictqrun to allow non-root users to start the queue processing. You might also like to rearrange the MXs. We are the 1st MX for our customers like this, and we have defined: # If we are the best MX for a host, try directly instead of generating # local config error. OwTrue That way a remote site will deliver straight to you, without trying the customer connection. You then send to your customer. Only works for hosts, so you need to get your customer to name their mail machine customer.com as well as hostname.customer.com in the DNS. Just put an A record in the DNS for customer.com. Az idézet fordítása: > Másodlagos MX rekordot biztosítunk az ügyfeleinknek. Az ügyfelek ezután automatikusan > csatlakoznak naponta akár többször is a szolgáltatásunkhoz és leszedik az elsődleges MX > rekordhoz tartozó leveleket. (Nem szólunk neki, amikor a tartományához levél > érkezik.) A sendmail programunk minden 30 percben elküldi a sorban felhalmozódott > leveleket. Tehát jelen pillanatban legalább 30 percig fenn kell lennie az ügyfélnek, hogy > rendben megkapja az elsődlegesre MX rekordra. > > Létezik valamilyen parancs a sendmail programhoz, amellyel azonnal lekérhetjük az összes > levelünket? A felhasználómnak természetesen nincsenek rendszergazdai jogosultságai az adott > gépen. A sendmail.cf privacy flags beállításai között van egy definíció, az Opgoaway,restrictqrun. Vegyük ki innen a restrictqrun beállítást, amivel a nem root felhasználók is megindíthatják a sor feldolgozását. Valószínűleg az MX-ek átrendezésére is szükség lesz. Mi vagyunk az első MX az ilyen típusú ügyfelek számára, és ezt adtuk meg: # Ha mi vagyunk a legjobb MX a levél számára, akkor ne generáljunk # helyi beállítási hibát, hanem próbálkozzunk közvetlenül. OwTrue Ezzel már a távoli gép közvetlenül nekünk küld anélkül, hogy próbálkozna az ügyfél kapcsolatával. Ezt majd továbbküldjünk az ügyfélnek. Ez csak hálózati nevek esetében működik, tehát az ügyfelünknek el kell neveznie a leveleket fogadó gépét customer.com-nak, valamint a fel kell venni a hostname.customer.com címet is a DNS-be. Ehhez egyszerűen csak elegendő egy A rekordot betenni a customer.com-hoz. Miért kapok folyton Relaying Denied hibát, amikor más gépekről küldök levelet? A &os; alapértelmezett telepítése során a sendmail úgy állítódik be, hogy csak arról a gépről küldhetünk vele levelet, ahol fut. Például, ha POP szerver is elérhető, akkor a felhasználók meg tudják nézni a leveleiket az iskolából, munkából vagy bármilyen más távoli helyről, de leveleket onnan továbbra sem tudnak küldeni. Általában pár pillanattal a próbálkozás után a MAILER-DAEMON küldeni fog egy 5.7 Relaying Denied (5.7 A továbbítás nem engedélyezett) üzenetet. Több lehetőségünk is van ennek megkerülésére. Az a legegyszerűbb módszer, ha az internet-szolgáltatónk címét felvesszük az /etc/mail/relay-domains állományba. Például így: &prompt.root; echo "az.internet.szolgáltató.net" > /etc/mail/relay-domains Az állomány létrehozása vagy módosítása után újra kell indítanunk a sendmail programot. Ez remekül működik abban az esetben, ha rendszergazdák vagyunk és nem akarunk a helyi gépről levelet küldeni, vagy egy másik gépen vagy akár másik internet-szolgáltatóval akarunk valamilyen kattingatós levelező programot használni. Olyankor is nagyon hasznos lehet, amikor csak egy vagy két e-mail hozzáférést állítottunk be. Ha egyszerre több címet is fel szeretnénk venni, akkor nyissuk meg ezt az állományt a kedvenc szövegszerkesztőnkkel és írjuk be a tartományokat, soronként egyet: saját.internet.szolgáltató.net másik.internet.szolgáltató.com felhasználók-internet.szolgáltató.ja www.minta.org Innentől kezdve a listában szereplő bármelyik gépről tudunk levelet küldeni (feltéve, hogy az adott felhasználó hozzáfér a gépünkhöz). Ezzel gyönyörűen megoldhatjuk, hogy a felhasználóink képesek legyenek távolról is levelet küldeni a rendszerünkön keresztül anélkül, hogy mások pedig szemetet küldenének át rajtunk. Komolyabb témák A következő szakaszban szóba kerülnek olyan komolyabb témák, mint például a levelek konfigurációja és a levelezés beállítása az egész tartomány számára. Alapvető beállítások e-mail beállítás Alapból képesnek kell lennünk leveleket küldeni külső gépekre egészen addig, amíg az /etc/resolv.conf állomány a megfelelő beállításokat tartalmazza vagy egy saját névszervert futtatunk. Ha szeretnénk, hogy a gépünkre érkező levelek elérjék a &os;-s gépünkön futó levéltovábbító ügynököt (például a sendmail programot), akkor erre két módszer kínálkozik: Futtassunk saját névszervert és hozzunk létre magunknak egy tartományt. Például FreeBSD.org. Közvetlenül a gépünkre küldessük a leveleket. Ezt úgy tehetjük meg, ha egyből a gépünkhöz tartozó DNS névre küldetjük a leveleket. Például az enyem.FreeBSD.org címre. SMTP Függetlenül attól, hogy a fentiek közül melyik megoldást választjuk, a levelek csak akkor tudnak eljutni közvetlenül a gépünkre, ha állandó, statikus IP-címmel rendelkezünk (tehát nem dinamikus címmel, amit általában a betárcsázós PPP kapcsolatokhoz szoktak kiosztani). Ha tűzfal mögött vagyunk, akkor valamilyen módon felénk kell irányítani az SMTP forgalmat is. Ha közvetlenül a gépünkön akarjuk fogadni a leveleket, akkor a következő kettő közül az egyik mindenképpen kelleni fog: - MX rekord Gondoskodjunk róla, hogy a hozzánk tartozó DNS-ben (legkisebb sorszámú) MX - rekord a gépünk IP-címére + rekordMX rekord a gépünk IP-címére mutat. Gondoskodjunk róla, hogy a hozzánk tartozó DNS-ben nincs semmilyen MX rekord a gépünkhöz. A fentiek közül bármelyik elég ahhoz, hogy közvetlenül a gépünkre érkezzen meg a levél. Próbáljuk ki: &prompt.root; hostname enyem.FreeBSD.org &prompt.root; host enyem.FreeBSD.org enyem.FreeBSD.org has address 204.216.27.XX Ha ezt látjuk, akkor minden gond nélkül lehet küldeni levelet a nevem@enyem.FreeBSD.org a címre (feltételezve, hogy a sendmail megfelelően működik az enyem.FreeBSD.org címen). Ha viszont ehhez hasonlót tapasztalunk: &prompt.root; host enyem.FreeBSD.org enyem.FreeBSD.org has address 204.216.27.XX enyem.FreeBSD.org mail is handled (pri=10) by kozpont.FreeBSD.org A gépünkre (enyem.FreeBSD.org) küldött összes levelet a kozpont szedi össze ugyanazon felhasználói névvel ahelyett, hogy közvetlenül a gépünkre küldeni ezeket. Az iménti adatokat a DNS szerver határozza meg. A levelek továbbításával kapcsolatos információkat az MX mint Mail eXchange DNS-rekord tárolja. Ha nincs ilyen MX rekord, akkor az IP-cím alapján közvetlenül az adott géphez kerül a levél. Például a freefall.FreeBSD.org MX rekordja hajdanán így nézett ki: freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com Láthatjuk, hogy a freefall esetében több MX bejegyzés is szerepel. A legalacsonyabb MX-számú gép fogja kapni az erre a címre beérkező leveleket, amennyiben elérhető. Ha valamilyen okból nem érhető el, akkor helyette ideiglenesen a többiek (melyeket néha csak tartalék MX-eknek neveznek) veszik át a levelet és átadják a legalacsonyabb számúnak, amint az újra elérhetővé válik. A tartalék jelleggel megadott MX gépek akkor érnek ténylegesen valamit, ha teljesen máshonnan csatlakoznak az internethez. Az internet szolgáltató vagy egy ismerősünk gépe valószínűleg minden további nélkül segít ennek megoldásában. Egy egész tartomány leveleinek kezelése Egy levelező szerver beállításához valahogy meg kell tudnunk oldalni, hogy a különböző munkaállomásokra küldött levelek közvetlenül hozzá fussanak be. Alapvetően tehát arról lenne szó, hogy a tartományunkon (ez ebben az esetben a *.FreeBSD.org) belüli gépekre címzett levelekre ez a gép tart igényt és így ezek ide irányítódnak át, majd a felhasználók erről a központi levelező szerverről kapják meg a leveleiket. DNS Az életünk megkönnyítéséhez minden felhasználónak létrehozzuk a saját felhasználói nevét a levelező szerveren is. Ezt az &man.adduser.8; paranccsal gyorsan el is végezhetjük. A levelező szerver lesz a hálózat összes munkaállomásához kirendelt levélváltó. Ezt a DNS beállításai között így adhatjuk meg: enyem.FreeBSD.org A 204.216.27.XX ; Munkaállomás MX 10 kozpont.FreeBSD.org ; Levelező szerver Ezzel lényegében az A rekord figyelmen kívül hagyásával átirányítjuk a munkaállomások számára érkező összes levelet a levelező szerverre. A levelek tehát az MX rekord által mutatott címre mennek ki. Ezt önállóan nem tudjuk elvégezni, hacsak nem futattunk egy saját DNS szervert. Ha nincsen vagy nem is tudunk DNS szervert futtatni, akkor ebben a kérdésben egyeztessünk az internet-szolgáltatónkkal vagy bárkivel, aki a DNS beállításaiért felelős. Ha virtuális e-mail címket is kezelünk, akkor a most következő információ még a hasznunkra lehet. A példa kedvéért most feltesszük, hogy a tartományunkban van egy ügyfelünk, jelen esetben az ugyfel1.org, és azt akarjuk, hogy az ugyfel1.org címére küldött levelek a saját levelező szerverünkre kerüljenek át, a level.sajat.com címre. A DNS-t ehhez így kell beállítani: ugyfel1.org MX 10 level.sajat.com Ha csak az ugyfel1.org levelezését akarjuk kezelni, akkor ahhoz nem kell külön A rekord. Vigyázzunk, mert az ugyfel1.org csak akkor pingelhető, ha létezik hozzá A rekord. Befejezésül a levelező szerverünkön futó sendmail számára is fel kell tárnunk, hogy milyen tartományokhoz és/vagy hálózati nevekhez fogadjon leveleket. Ezt több módon is elvégezhetjük. A következők bármelyik megfelel erre a célra: A FEATURE(use_cw_file) használata esetén vegyük fel a címeket az /etc/mail/local-host-names állományba. Ha a sendmail 8.10 előtti változatai esetében ehhez az /etc/sendmail.cw állományra lesz szükségünk. Tegyük be a Cwsajat.cimunk.com sort az /etc/sendmail.cf vagy a sendmail 8.10 és későbbi változatai esetén az /etc/mail/sendmail.cf állományba. SMTP és az UUCP A &os;-hez tartozó sendmail olyan gépek számára lett kialakítva, amelyek közvetlenül az internethez csatlakoznak. Az UUCP használatával levelező rendszerek számára egy másik konfigurációs állományt kell telepíteni a sendmail számára. Az /etc/mail/sendmail.cf állítása kézzel egyáltalán nem könnyű. A sendmail 8. változata ráadásul a konfigurációs állományokat az &man.m4.1; előfeldolgozó segítségével gyártja le, ahol a tényleges beállítások egy magasabb absztrakciós szinten jelennek meg. Az &man.m4.1; típusú konfigurációs állományok a /usr/share/sendmail/cf könyvtárban találhatóak. A cf alkönyvtárban levő README állomány igyekszik a felhasználót bevezetni az &man.m4.1; alapú beállítások világába. A mailertable nevű lehetőség használatával tudjuk a legjobban támogatni az UUCP protokollon keresztüli kézbesítést. Ezzel felépül egy olyan adatbázis, amelyet a sendmail fel tud használni a továbbítást érintő döntésekben. Ehhez elsőként hozzuk is létre a saját .mc állományunkat. Ehhez a /usr/share/sendmail/cf/cf könyvtár tartalmaz néhány példát. Hívjuk most ezt az állomnyunkat ize.mc néven. A következő módszerrel tudjuk egy valós sendmail.cf állománnyá alakítani: &prompt.root; cd /etc/mail &prompt.root; make ize.cf &prompt.root; cp ize.cf /etc/mail/sendmail.cf Egy átlagos .mc állomány egyébként valahogy így épül fel: VERSIONID(`verziószám') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', sajat.uucp.relay) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw sajat.al.nev Cw azuucpgepneve.UUCP Az accept_unresolvable_domains, nocanonify és confDONT_PROBE_INTERFACES lehetőségekre hivatkozó sorok megakadályozzák, hogy a levél kézbesítésében a DNS is szerepet játsszon. Az UUCP_RELAY az UUCP alapú kézbesítés támogatását engedélyezi. Egyszerűen csak írjunk ide egy internetes hálózati nevet, amely képes feldolgozni az .UUCP áltartomány címeit. Az esetek többségében ide az internet-szolgáltatónk levelek továbbküldéséért felelős gépe kerül. Miután ezzel végeztünk, szükségünk lesz még az /etc/mail/mailertable állományra is. Ha a külvilág felé csak egyetlen összeköttetést használunk a levelekhez, akkor az alábbi pontosan megfelel: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:sajat.uucp.relay Egy bonyolultabb példa pedig így néz ki: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: Az első három sor azokat a speciális eseteket kezeli, ahol a tartomány felé küldött levelek nem az alapértelmezett úton visszük tovább, hanem valamelyik UUCP szomszéd felé és így le tudjuk rövidíteni a kézbesítés útvonalát. Az ezeket követő sor dolgozza fel a helyi Ethernet tartomány felé STMP protokollal továbbítható leveleket. Végül az UUCP szomszédokat is felsoroljuk az .UUCP áltartomány jelölése szerint, így megengedjük, hogy a uucp-szomszéd! címzett felülbírálja az alapértelmezett szabályokat. Az utolsó sorban mindig egyetlen pont szerepel, ami minden másra illeszkedik, így az UUCP kézbesítés egy olyan UUCP szomszéd felé halad, amely a világ felé egy univerzális levelező átjárónak tekinthető. A uucp-dom: kulcsszó mögött szereplő összes csomópont nevének érvényes UUCP szomszédra kell utalnia, amelyet a uuname paranccsal le is tudunk ellenőrizni. A feladatból már csak annyi maradt hátra, hogy használat előtt ezt az állományt át kell alakítani DBM adatbázis formátumba. Az ehhez szükséges parancsot érdemes mailertable állomány elejére bejegyzésben felírni. A mailertable megváltoztatásakor mindig le kell futtatni ezt a parancsot. Utolsó jótanács: ha nem lennénk biztosak valamelyik kézbesítési útvonal működésében, ne felejtsük el a sendmail beállítását. Ezzel a sendmail az ún. címtesztelő módban (address test mode) indul el. Gépeljük be, hogy 3,0, majd írjuk be a tesztelni kívánt címet. Az utolsó sorban láthatjuk a felhasznált belső levéltovábbító ügynököt, a célgépet, amellyel ezt meghívjuk, és a (valószínűleg az átfordított) címet. Innen a CtrlD billentyűkombinációval léphetünk ki. &prompt.user; sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 ize@pelda.com canonify input: ize @ pelda . com ... parse returns: $# uucp-dom $@ sajat.uucp.relay $: ize < @ pelda . com . > > ^D Bill Moran Készítette: Csak küldés beállítása Gyakran előfordulhat, hogy csak leveleket akarunk továbbküldeni. Mint például: Asztali számítógépünk van, de használni akarunk olyan programokat, mint például a &man.send-pr.1;. Ehhez az internet-szolgáltatón keresztül kell továbbküldeni a levelet. A számítógépünk egy olyan szerver, amely nem helyben kezeli a leveleket, ezért az összeset átküldi feldolgozásra. Szinte bármelyik levélküldő ügynök képes betölteni ezt az űrt. Sajnos eléggé bonyolult helyesen beállítani úgy egy bármire képes levélküldőt, hogy egyszerűen csak szabaduljon meg a levelektől. Ilyenkor a sendmail vagy a postfix használatával tulajdonképpen ágyúval lövünk verébre. Továbbá, ha egy átlagos internet-hozzáféréssel rendelkezünk, adódhat, hogy a szerződés egyszerűen tiltja a levelező szerver futtatását. Legegyszerűbben úgy tudjuk kielégíteni az ilyen jellegű igényeket, ha feltelepítjük a mail/ssmtp portot. A root felhasználóval adjuk ki a következő parancsokat: &prompt.root; cd /usr/ports/mail/ssmtp &prompt.root; make install replace clean Telepítése után a mail/ssmtp portot a mindössze négysoros /usr/local/etc/ssmtp/ssmtp.conf állománnyal állíthatjuk be: root=valodiemail@minta.com mailhub=level.minta.com rewriteDomain=minta.com hostname=_GEPNEV_ A root felhasználó számára feltétlenül egy valódi e-mail címet adjuk meg. A level.minta.com helyére az internet-szolgáltatónk kimenő leveleket továbbító szerverét adjuk meg (bizonyos szolgáltatók ezt kimenő levelező szervernek vagy SMTP szervernek nevezik). Ne felejtsük el sendmail démont sem letiltani, beleértve a kimenő levelek kezelését. Ennek részleteit lásd a ban. A mail/ssmtp használatánál még adhatunk meg további beállításokat is. A /usr/local/etc/ssmtp állományban vagy az ssmtp man oldalán találhatunk példákat és olvashatunk bővebben a témáról. Az ssmtp ilyen fajta beállításával a számítógépünkön levő szoftverek is helyesen fognak működni, miközben nem sértjük meg az internet-szolgáltató előírásait és nem tesszük lehetővé, hogy a számítógépünkről levélszemetet küldhessenek. Levelezés betárcsázós kapcsolattal Ha statikus IP-címünk van, akkor az alapértelmezett beállítások tökéletesen megfelelőek számunkra. Csupán a gépünkhöz tartozó internetes címet kell megadnunk a gépünk nevének és a sendmail elvégzi a többit. Ha viszont dinamikusan kiosztott IP-címmel rendelkezünk és betárcsázós PPP kapcsolaton keresztül csatlakozunk az internethez, akkor valószínűleg az internet-szolgáltató levelező szerverén van egy postaládánk. Most tegyük fel, hogy a internet-szolgáltató tartománya a szolgaltato.net és a felhasználói név a felhasznalo, a gépünk neve pedig otthoni.bsdm, valamint az internet-szolgáltató részéről levelezésre a relay.szolgaltato.net gépet használhatjuk. A postaládánkból úgy tudjuk letölteni a leveleket, ha telepítünk hozzá egy programot. Erre a feladatra a fetchmail hibátlanul alkalmas, mivel több különböző protokollt ismer. Ez a program csomagként vagy a Portgyűjteményből (mail/fetchmail) is elérhető. Az internet-szolgáltatók erre általában a POP protokollt ajánlják fel. Ha a felhasználói PPP alkalmazást használjuk, állítsuk be az /etc/ppp/ppp.linkup állományt a következő módon és így a csatlakozáskor maguktól letöltődnek a leveleink: MYADDR: !bg su felhasznalo -c fetchmail Ha a sendmail segítségével küldjük tovább a leveleket a nem helyi hozzáférések felé (ahogy azt lentebb is láthatjuk), akkor minden bizonnyal a csatlakozáskor arra is szükségünk lesz, hogy a leveleket tároló sor is feldolgozódjon. Ezt úgy oldhatjuk meg, ha az /etc/ppp/ppp.linkup állományba a fetchmail parancs után a következőt tesszük: !bg su felhasznalo -c "sendmail -q" Ez a példa feltételezi, hogy az otthoni.bsdm gépen van egy felhasznalo nevű felhasználónk. Az otthoni.bsdm gépen a felhasznalo felhasználói könyvtárában hozzunk létre egy .fetchmailrc állományt: poll szolgaltato.net protocol pop3 fetchall pass TitkosJelszo Ezt az állományt csak és kizárólag a felhasznalo olvashatja, mivel szerepel benne a hozzá tartozó TitkosJelszo. Úgy tudunk a megfelelő from: fejléccel küldeni, ha felvilágosítjuk a sendmail programot, hogy ne az felhasznalo@otthoni.bsdm címet, hanem a felhasznalo@szolgaltato.net címet használja. Sőt, a gyorsítás kedvéért a sendmail számára érdemes elárulni, hogy a relay.szolgaltato.net címen keresztül küldjön. A munka elvégzéséhez elegendő az alábbi .mc állomány: VERSIONID(`otthoni.bsdm.mc 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwotthoni.bsdm MASQUERADE_AS(`szolgaltato.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.szolgaltato.net') Dmotthoni.bsdm define(`confDOMAIN_NAME',`otthoni.bsdm')dnl define(`confDELIVERY_MODE',`deferred')dnl Az előző szakaszban találhatjuk meg annak a módját, hogy miként varázsoljunk ebből az .mc állományból egy sendmail.cf állományt. A sendmail.cf frissítése után pedig ne felejtsük el a sendmail újraindítását! James Gorham Írta: Az SMTP hitelesítése Levelező szerverünkön az SMTP protokoll hitelesítésének (SMTP Authentication) engedélyezése több szempontból is előnyökkel bír. Az SMTP hitelesítésének bekapcsolása egy újabb réteget képez a sendmail védelmében, és az olyan állandóan mozgásban levő felhasználók számára is megoldást nyújt, akik anélkül képesek használni ugyanazt a levelező szervert, hogy minden alkalommal újrakonfigurálnák a levelező kliensüket. Telepítsük fel a security/cyrus-sasl2 portot. A security/cyrus-sasl2 port több fordítási idejű beállítást támogat. Itt most az SMTP hitelesítését fogjuk használni, ezért gondoskodjunk a opció engedélyezéséről. A security/cyrus-sasl2 telepítés után nyissuk meg szerkesztésre a /usr/local/lib/sasl2/Sendmail.conf állományt (vagy ha még nem létezne, hozzuk létre), és benne vegyük fel a következő sort: pwcheck_method: saslauthd Ezt követően telepítsük a security/cyrus-sasl2-saslauthd portot, és tegyük bele az /etc/rc.conf állományba ezt a sort: saslauthd_enable="YES" Végezetül indítsuk el a saslauthd démont: &prompt.root; /usr/local/etc/rc.d/saslauthd start Ez a démon fog közvetíteni a sendmail és a &os; passwd adatbázisa közti hitelesítésben. Ezzel elkerülhetjük az új felhasználói nevek és jelszavak felvételét az SMTP hitelesítés használatához, így a hozzáférések és a levelezés jelszava ugyanaz marad. Most pedig írjuk hozzá az alábbi sorokat az /etc/make.conf állományhoz: SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl2 Ezek a sorok állítják be a sendmail számára, hogy fordítás közben a cyrus-sasl2 függvényeit használja. A sendmail újrafordítása előtt mindenképpen legyen fenn a cyrus-sasl2 port. A sendmail újrafordítását a következő parancsok végrehajtásával intézhetjük el: &prompt.root; cd /usr/src/lib/libsmutil &prompt.root; make cleandir && make obj && make &prompt.root; cd /usr/src/lib/libsm &prompt.root; make cleandir && make obj && make &prompt.root; cd /usr/src/usr.sbin/sendmail &prompt.root; make cleandir && make obj && make && make install A sendmail fordítása esetén semmilyen problémának nem szabadna előfordulnia, kivéve ha a /usr/src könyvtárat és a szükséges osztott könyvtárakat nem változtatjuk időközben túlságosan gyakran. A sendmail lefordítása és újratelepítése után szerkesszük át az /etc/mail/freebsd.mc állományt (vagy azt az .mc állományt, amelyet éppen használunk). Sok rendszergazda a &man.hostname.1; parancs válaszát használja fel az .mc típusú állományok egyedi elnevezéséhez). Írjuk bele a következő sorokat: dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl Ezek állítják be a sendmail számára a felhasználók hitelesítésére alkalmas különböző módszereket. Ha a pwcheck módszer helyett valami mást akarunk használni, akkor járjunk utána a dokumentációban. Zárásul futassuk le a &man.make.1; parancsot az /etc/mail könyvtárban. Így lefut az új .mc állományunk és létrejön egy freebsd.cf (vagy amilyen nevet az .mc állománynak megadtunk) .cf állomány. Ezután a make install restart parancs kiadásával másoltassuk át ezt a sendmail.cf helyére és szabályosan indítassuk újra a sendmail szolgáltatást. A folyamatról részletesebb tájékoztatást az /etc/mail/Makefile állomány tud nyújtani. Ha eddig minden a legnagyobb rendben történt, akkor most már képesek vagyunk bejelentkezési információt is átadni a levelező kliensnek és elküldeni egy tesztüzenetet. A hibák kiszűréséhez állítsuk a sendmail opcióját az 13 értékre és figyeljük a /var/log/maillog állományt. További felvilágosításért olvassuk el a sendmail SMTP hitelesítéssel foglalkozó oldalát (angolul). Marc Silver Készítette: Levelező kliensek levelező kliensek A levelező kliens (Mail User Agent, MUA) egy olyan alkalmazás, amelyik elektronikus levelek küldésére és fogadására használható. Azonkívül, ahogy az e-mail fejlődik és egyre bonyolultabbá válik, a levelező kliensek is egyre inkább erősebbé válnak abban a tekintetben, ahogy az e-maileket kezelik. Ezzel együtt a felhasználók is egyre több lehetőséget és rugalmasságot kapnak. A &os; számos levelező klienst támogat, mindegyikük könnyedén telepíthető a &os; Portgyűjteménye segítségével. A felhasználók választhatnak a grafikus kliensek, mint például az evolution vagy a balsa és a konzolos kliensek, például a mutt, pine vagy mail között, esetleg használhatják a nagyobb szervezetek részéről felkínált webes felületeket is. mail A &man.mail.1; a &os; alapértelmezett levelező kliense. Egy olyan konzolos alkalmazás, amelyben elérhetjük az e-mailek küldéséhez és fogadásához szükséges összes alapvető funkciót, habár a csatolmányokat csak korlátozottan képes kezelni és csak a helyi postaládákat kezeli. Annak ellenére, hogy a mail önmaga nem képes kommunikálni POP vagy IMAP szerverekkel, az ilyen postaládák tartalmát egy fetchmail-szerű alkalmazással (lásd ) le tudjuk tölteni a számára is elérhető helyi mbox állományba. A levelek küldéséhez és fogadásához egyszerűen hívjuk be a mail programot a következő módon: &prompt.user; mail Ezután a /var/mail könyvtárban található felhasználói postaládánk tartalmát automatikusan beolvassa a mail segédprogram. Ha a postaláda üres, akkor a program egyből befejezi futását és közli, hogy nem talált levelet. Amikor viszont tudott beolvasni leveleket, megjelenik egy felület, ahol a beérkezett üzenetek listáját láthatjuk. Az üzenetek automatikusan sorszámozódnak, ahogy ezt az alábbi példa is szemlélteti: Mail version 8.1 6/6/93. Type ? for help. "/var/mail/marcs": 3 messages 3 new >N 1 root@localhost Mon Mar 8 14:05 14/510 "proba" N 2 root@localhost Mon Mar 8 14:05 14/509 "felhasznaloi hozzaferes" N 3 root@localhost Mon Mar 8 14:05 14/509 "minta" Az üzenetek olvasásának a t paranccsal kezdhetünk neki, amelyet az elolvasandó üzenet sorszáma követ. Ebben a példában az első e-mailt nyitjuk meg: & t 1 Message 1: From root@localhost Mon Mar 8 14:05:52 2004 X-Original-To: marcs@localhost Delivered-To: marcs@localhost To: marcs@localhost Subject: proba Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST) From: root@localhost (Charlie Root) Ezt az uzenetet probabol kuldom, valaszolj ra, ha megkaptad. Ahogy az a fenti példából is látszik, a t billentyű hatására az üzenet a teljes fejlécével együtt jelenik meg. Az üzenetek listáját a h billentyűvel hozhatjuk vissza. Ha egy levélre válaszolni szeretnénk, akkor ezt a mail paranccsal is megtehetjük, vagy az R vagy az r parancsokkal. Az R arra utasítja a mail programot, hogy csak az üzenet küldőjének válaszoljon, míg az r hatására nem csupán a küldő, hanem az üzenet összes címzettje megkapja a válaszunkat. A parancshoz hozzátűzhetjük egy levél sorszámát is, ekkor az adott levélre fogunk válaszolni. Miután kiadtuk a parancsot, írjuk meg a válaszunkat és új sorban kezdve zárjuk le az üzenetet egyetlen . beírásával. Valahogy így: & R 1 To: root@localhost Subject: Re: proba Koszonom, megkaptam a leveledet. . EOT Új levelet az m segítségével tudunk küldeni, ami után meg kell adnunk a címzettet. Egyszerre több címzettet is meg tudunk adni, ha a címzett helyén címeiket egy , karakterrel elválasztva soroljuk fel. Ezután a levél témája is megadható, amit végül a levél szövege követ. Az üzenetet egy új sorban megadott egyetlen . segítségével zárhatjuk le. & mail root@localhost Subject: Elsajatitottam a mail hasznalatat Most mar en is tudok levelet irni es fogadni a mail hasznalataval... :) . EOT Amikor a mail segédprogramban vagyunk, a ? használatával bármikor segítséget kérhetünk, valamint a mail működésével kapcsolatban a &man.mail.1; man oldalát érdemes felkeresni. Ahogy azt már korábban is említettük, a &man.mail.1; parancsot eredetileg nem készítették fel az csatolt állományok kezelésére, ezért igen gyengén bánik velük. Az újabb levelező kliensek, mint például a mutt, a csatolt állományokat sokkal intelligensebb módon kezelik. Ha viszont ragaszkodunk a mail használatához, akkor a converters/mpack port használatát érdemes megfontolnunk. mutt A mutt apró mérete ellenére egy igen komoly levelező kliens és remek lehetőségeket ajánl fel. Íme ízelítésképpen közülük néhány: Képes az üzeneteket szálakba rendezni Az e-mailek titkosítására és elektronikus aláírására támogatja a PGP használatát MIME támogatás Maildir támogatás Nagyfokú testreszabhatóság Ezen lehetőségei révén a mutt ez egyik legfejlettebb levelező kliens. A mutt részletesebb bemutatását a címen találjuk (angolul). A mutt stabil változata a mail/mutt port használatával telepíthető fel, miközben a fejlesztés alatt levő változatot a mail/mutt-devel port telepíti. Miután a portot sikerült felraknunk, a mutt az alábbi parancs begépelésével indítható el: &prompt.user; mutt A mutt indulása után automatikusan beolvassa a /var/mail könyvtárban megtalálható felhasználói postaládát és ha lehetséges, akkor megjeleníti a tartalmát. Ha nincsen levél a felhasználó postaládájában, akkor a mutt a felhasználó parancsaira vár. Ezen a képen a mutt üzenetlistája látható: A levelek elolvasásához egyszerűen csak válasszuk ki a kurzorral és nyomjuk meg az Enter billentyűt. Ezután a mutt így mutatja a levelet: Ahogy azt már a &man.mail.1; parancsnál is megszokhattuk, a mutt is lehetővé teszi, hogy vagy csak a küldőnek, vagy pedig rajta kívül még az összes címzettnek is válaszoljunk. A levél küldőjének az r lenyomásával tudunk válaszolni. A csoportos válaszadáshoz pedig, ahol tehát a küldőn kívül a címzettek is megkapják a levelünket, a g billentyűt kell használni. A mutt az e-mailek létrehozásához és megválaszolásához a &man.vi.1; szövegszerkesztőt használja. Ezt úgy tudjuk átállítani, ha a könyvtárunkban található .muttrc állományban átírjuk az editor változót, vagy értéket adunk az EDITOR környezeti változónak. A mutt beállításáról többet a címen tudhatunk meg. Egy új levél megírásához nyomjuk le az m gombot. Miután elláttuk érvényes témával a levelet, a mutt elindítja a &man.vi.1; szövegszerkesztőt és nekiláthatunk a levél szövegének. Amint befejeztük, mentsük el és lépjünk ki a vi szerkesztőből. Ezután visszakapjuk a mutt felületét, ahol a küldendő e-mail összefoglalását láthatjuk. A levelet végül az y lenyomásával küldhetjük el. Erre a következő képen láthatunk egy példát: A mutt ezenkívül még rengeteg segítséget is tartalmaz, amelyet a legtöbb menüből a ? gomb lenyomásával érhetünk el. A felső sorban mindig láthatjuk a kiadható parancsok rövid összefoglalását. pine A pine alapvetően a kezdő felhasználók számára íródott, de számos komolyabb lehetőséget is támogat. A pine szoftverrel kapcsolatban a múltban már rengeteg távolról kihasználható sebezhetőség látott napvilágot, és ennek köszönhetően a támadók megfelelően előkészített e-mailek segítségével tetszőleges kódot tudnak futtatni a rendszeren levő helyi felhasználókon keresztül. Noha az összes ilyen ismert hibát javították, de a &os; biztonsági tisztje szerint a pine kódját biztonság szempontjából annyira hanyag módon írták, hogy további, eddig még felfedezetlen sebezhetőségeket is magában rejt. Ennek megfelelően tehát a pine használata mindenkinek csak saját felelősségre javasolt. A pine jelenlegi verziója a mail/pine4 porton keresztül telepíthető. A telepítés lezajlása után a pine a következő paranccsal indítható: &prompt.user; pine A pine első futtatása során egy üdvözlő üzenetet és egy rövid bemutatkozást jelenít meg, valamint a pine fejlesztői arra kérik a felhasználókat, hogy küldjenek nekik egy névtelen üzenetet, amiből le tudják szűrni mennyien használják a kliensüket. A névtelen üzenet elküldéséhez a Enter lenyomásával járulhatunk hozzá vagy az E használatával enélkül tudunk kilépni a képernyőről. Ezt az üdvözlő képernyőt itt láthatjuk: A felhasználó ezután a főmenübe kerül, ahol a kurzorbillentyűkkel minden gond nélkül tudunk mozogni. Ebben a főmenüben a levelek megírására, a leveleket tároló könyvtárak tallózására vagy éppen a címjegyzék karbantartására gyorsbillentyűket is használhatuk. A főmenü alatt szerepel az adott menüben végrehajtható feladatokhoz tartozó gyorsbillentyűk rövid felsorolása. A pine alapértelmezés szerint az inbox könyvtárat nyitja meg. A bennelévő üzenetek listájának megtekintéséhez nyomjuk a I gombot vagy válasszuk ki a lentihez hasonló módon a MESSAGE INDEX menüpontot: Az üzenetek listájában az adott könyvtárban található üzenetek láthatjuk, és köztük a kurzorbillentyűkkel mozoghatunk. A kiemelt üzenet az Enter lenyomásával olvasható el. A lenti képen egy ilyen példa üzenetet láthatunk a pine programban. A rendelkezésünkre álló gyorsbillentyűk ilyenkor is a képernyő alján megjelennek referenciaként. Ilyen gyorsbillentyű többek közt az r gomb, amelynek hatására a klienssel megválaszolhatjuk a éppen látható üzenetet. A pine kliensen belül a pico szövegszerkesztő segítségével tudunk megválaszolni egy e-mailt, amely alapból a pine mellé települ. A pico megkönnyíti a navigációt az üzenetekben és sokkal elnézőbb a kezdő felhasználókkal, mint például a &man.vi.1; vagy a &man.mail.1;. Ha befejeztük a választ, az üzenetet a CtrlX billentyűkombinációval tudjuk elküldeni. A pine erre megerősítést fog kérni. A pine alkalmazás a főmenüből elérhető SETUP menüpont meghívásával szabható testre. A további részleteket a oldalon találhatjuk (angolul). Marc Silver Írta: A fetchmail használata fetchmail A fetchmail egy mindentudó IMAP és POP kliens, amely lehetővé teszi a felhasználók számára, hogy automatikusan töltsenek le leveleket távoli IMAP és POP szerverekről és lementsék azokat a helyi postaládáikba. Így a levelek sokkal könnyebben elérhetőek. A fetchmail a mail/fetchmail port segítségével telepíthető, és számos lehetőséget ajánl fel, többek közt: A POP3, APOP, KPOP, IMAP, ETRN és az ODMR protokollok ismerete. Képes SMTP használatával levelet továbbítani, és ennek révén a szűrés, továbbküldés és az álnevek használata a megszokott módon működik. Démonként futtatva képes adott időközönként ellenőrizni a frissen érkező üzeneteket. Képes egyszerre több postaládát is kezelni, majd ezek tartalmát a beállításainak megfelelően továbbküldeni a különböző helyi felhasználóknak. Noha a fetchmail összes lehetőségének aprólékos bemutatása meghaladná ennek a leírásnak a kereteit, azért szót kerítünk néhány alapvető funkciójára. A fetchmail segédprogramnak a megfelelő működéshez egy .fetchmailrc nevű konfigurációs állományra van szüksége. Ez az állomány tárolja a szerverekre vonatkozó, valamint a bejelentkezéshez szükséges információkat. Az állomány kényes tartalmára tekintettel azt javasoljuk, hogy csak a tulajdonosának engedélyezzük az olvasását: &prompt.user; chmod 600 .fetchmailrc Az alább ismertetésre kerülő .fetchmailrc állományban azt láthatjuk, ahogy egyetlen felhasználó postaládáját érjük el a POP protokoll használatával. Arra utasítja a fetchmail programot, hogy csatlakozzon a levelezes.com címre a joska felhasználóval és az XXX jelszóval. Ebben a példában feltételezzük, hogy a joska nevű felhasználó létezik a rendszerünkben is. poll levelezes.com protocol pop3 username "joska" password "XXX" A következő példában több POP és IMAP szerverhez csatlakozunk és ahol lehet, több helyi felhasználónak irányítjuk át a leveleket: poll levelezes.com proto pop3: user "joska", with password "XXX", is "jozsi" here; user "andrea", with password "XXXX"; poll levelezes2.net proto imap: user "jani", with password "XXXXX", is "hardstuff" here; A fetchmail program a beállítás megadásával démonként is elindítható, amely után meg kell adni (másodpercekben) azt az időközt, aminek elteltével a fetchmail lekérdi a .fetchmailrc állományban felsorolt szervereket. Az alábbi példában a fetchmail 600 másodpercenként kéri el a leveleket: &prompt.user; fetchmail -d 600 A fetchmail további lehetőségeiről és működéséről a oldalon olvashatunk (angolul). Marc Silver Írta: A procmail használata procmail A procmail segédprogram egy hihetetlenül erős alkalmazás, mellyel a beérkező leveleinket tudjuk szűrni. A felhasználók számára olyan szabályok megadását teszi lehetővé, amelyekre aztán a rendszer illeszti a bejövő leveleket, és az eredménynek megfelelően elvégez bizonyos feladatokat vagy átirányítja a levelet más postaladákba és/vagy e-mail címekre. A procmail a mail/procmail porttal telepíthető fel. Miután ez sikerült, akár közvetlenül be is építhetjük a legtöbb levelező kliensbe. Erről az adott levelező kliens dokumentációjában olvashatunk többet. A procmail úgy is integrálható, ha a felvesszük a következő sort a procmail szolgáltatára igényt tartó felhasználó könyvtárában található .forward állományba: "|exec /usr/local/bin/procmail || exit 75" A következő szakaszban láthatjuk a procmail néhány alapvető szabályát, valamint ezek rövid leírását. Ezeket a szabályokat a .procmailrc állományba kell beleírni, amely szintén a felhasználó könyvtárában leledzik. Ezen szabályok többsége a &man.procmailex.5; man oldalon is olvasható. A felhasznalo@levelezes.com címről érkező leveleket irányítsuk át a jocim@levelezes2.com külső címre: :0 * ^From.*felhasznalo@levelezes.com ! jocim@levelezes2.com Minden 1000 byte-nál kisebb levelet küldjünk át a jocim@levelezes2.com külső címre: :0 * < 1000 ! jocim@levelezes2.com Küldjük át az összes masik@levelezes.com címre küldött levelet a masik postaládába: :0 * ^TOmasik@levelezes.com masik Küldjük az összes olyan levelet a /dev/null eszközre, amelyek a témájában szerepel a Spam szó: :0 ^Subject:.*Spam /dev/null Egy hasznos szabály, amellyel el tudjuk kapni a &os;.org levelezési listáiról érkező leveleket és el tudjuk raktározni ezeket a saját postaládájukba: :0 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG { LISTNAME=${MATCH} :0 * LISTNAME??^\/[^@]+ FreeBSD-${MATCH} } diff --git a/hu_HU.ISO8859-2/books/handbook/ppp-and-slip/chapter.xml b/hu_HU.ISO8859-2/books/handbook/ppp-and-slip/chapter.xml index 2d684502b3..880df2df35 100644 --- a/hu_HU.ISO8859-2/books/handbook/ppp-and-slip/chapter.xml +++ b/hu_HU.ISO8859-2/books/handbook/ppp-and-slip/chapter.xml @@ -1,4106 +1,4067 @@ Jim Mock Átdolgozta, átrendezte és aktualizálta: A PPP és a SLIP Áttekintés PPP SLIP A &os; számos módon képes összekötni két számítógépet. Ha betárcsázós modemmel akarunk hálózati vagy internetes kapcsolatot felépíteni, esetleg azt szeretnénk, hogy mások képesek legyenek minket ilyen módon elérni, akkor ahhoz PPP-t, illetve SLIP-et kell használnunk. Ebben a fejezetben a modemes kommunikáció beállításait mutatjuk be részletesebben. A fejezet elolvasása során megismerjük: hogyan állítsunk be felhasználói PPP-t; hogyan állítsunk be rendszerszintű PPP-t (csak &os; 7.X); hogyan állítsunk be egy PPPoE (PPP over Ethernet, vagyis PPP Ethernet felett) kapcsolatot; hogyan állítsunk be egy PPPoA (PPP over ATM, vagyis PPP ATM felett) kapcsolatot; hogyan állítsunk be SLIP klienst és szervert (csak &os; 7.X). PPP felhasználói PPP PPP rendszer PPP PPP Ethernet felett A fejezet elolvasásához ajánlott: az alapvető hálózati technológiák ismerete; a betárcsázós kapcsolatok, a PPP és/vagy SLIP alapjainak és céljainak megértése. Talán érdekli a kedves olvasót, hogy mi az alapvető különbség a felhasználói és a rendszerszintű PPP között. A válasz egyszerű: a felhasználói PPP a beérkező és kimenő adatokat nem a rendszermagban, hanem a felhasználói szinten dolgozza fel. Ez költséges abból a szempontból, hogy emiatt adatokat kell másolgatni a rendszer és a felhasználói szint között, azonban egy sokkal többet tudó PPP implementációnak ad ezzel utat. A felhasználói PPP a tun eszközön keresztül kommunikál a külvilággal, miközben a rendszermagban található PPP mindezt a ppp eszközzel valósítja meg. A fejezetben a felhasználói PPP-t egyszerűen csak ppp néven fogjuk hivatkozni, hacsak nem lesz szükséges különbséget tennünk közte és más PPP szoftverek, mint például a pppd között. Ha mást nem mondunk, akkor a fejezetben ismertetett összes parancsot root felhasználóként kell kiadni. Tom Rhodes Frissítette és javította: Brian Somers Eredetileg készítette: Nik Clayton Segített még: Dirk Frömberg Peter Childs A felhasználói PPP alkalmazása A &os; 8.0 változatától kezdődően a soros portokhoz tartozó eszközök nevei /dev/cuadN helyett /dev/cuauN, illetve /dev/ttydN helyett /dev/ttyuN lettek. A &os; 7.X felhasználóknak ezeknek a változásoknak megfelelően kell olvasniuk az itt szereplő dokumentációt. A felhasználói PPP Előfeltételek A leírás feltételezi, hogy rendelkezünk a következőkkel: - internet-szolgáltató - PPP - kapcsolat - - Olyan internet-előfizetés, ahol PPP-n + Olyan internet-előfizetés, ahol PPP-nPPP kapcsolat keresztül csatlakozunk Egy modem vagy más olyan rendszerünkhöz csatlakozó eszköz, amelyen keresztül el tudjuk érni az - internet-szolgáltatónkat + internet-szolgáltatónkatinternet-szolgáltató Az internet-előfizetés betárcsázásához szükséges telefonszámok - PAP - CHAP - UNIX - bejelentkezési - név - jelszó - - A bejelentkezési nevünk és - jelszavunk. (Vagy a megszokott &unix;-os + A bejelentkezési nevünkbejelentkezési név és + jelszavunkjelszó. (Vagy a megszokott &unix;-osUNIX felhasználói név és - jelszó páros, vagy egy PAP esetleg CHAP + jelszó páros, vagy egy PAPPAP esetleg CHAPCHAP bejelentkezési név és jelszó.) - névszerver - - Egy vagy több névszerver IP-címe. + Egy vagy több névszervernévszerver IP-címe. Ehhez az internet-szolgáltatók általában két IP-címet adnak meg. Ha egyet sem kaptunk, akkor a ppp.conf állományban erre a célra használhatjuk az enable dns parancsot, és ekkor a ppp majd automatikusan be fogja állítani nekünk a névszervereket. Ezt a lehetőséget az befolyásolja, hogy az internet-szolgáltató oldalán működő PPP implementáció támogatja-e a névfeloldás egyeztetését (DNS negotiation). A következő információkat is megkaphatjuk az internet-előfizetésünkhöz, de nem feltétlenül szükségesek: Az internet-szolgáltató átjárójának IP-címe. Az átjáró az a gép, amelyen keresztül a gépünk csatlakozik és számára ez lesz az alapértelmezett átjáró. Ha nem rendelkezünk ezzel az információval, akkor csak állítsunk be valamit, és majd a csatlakozáskor a szolgáltató PPP szervere felülírja a megfelelő beállításokkal. Erre a címre a ppp HISADDR néven hivatkozik. A használandó hálózati maszk. Amennyiben a szolgáltató ezt nem adta meg, nyugodtan használjuk erre a 255.255.255.255 értéket. - statikus - IP-cím - Ha a szolgáltatónk statikus - IP-címet és rögzített + IP-címetstatikus IP-cím és rögzített hálózati nevet is biztosít nekünk, ezt is megadhatjuk. Minden más esetben egyszerűen csak hagyjuk, hogy a rendszer automatikusan válasszon nekünk egyet. Ha a szükséges információknak nem vagyunk birtokában, akkor vegyük fel a kapcsolatot az internet-szolgáltatókkal. Ebben a szakaszban a példákban szereplő konfigurációs állományok sorait számozva láthatjuk. Ezek a sorszámok a bemutatás és a tárgyalás megkönnyítése érdekében szerepelnek, és nem az eredeti állományok részei. Mindezek mellett a tabulátorok és szóközök megfelelő használata is fontos. A <application>PPP</application> automatikus beállítása PPP beállítása A ppp és a pppd (a PPP rendszerszintű megvalósítása) egyaránt az /etc/ppp könyvtárban található konfigurációs állományokat használja. A felhasználói PPP-hez ezenkívül még a /usr/share/examples/ppp/ könyvtárban vannak példák. A ppp parancs beállítása az igényeinktől függően számos állomány módosítását igényelheti. A tartalmukat nagyban befolyásolja, hogy a szolgáltatónk részéről a címeket kiosztása statikus (vagyis egy adott címet kapunk és folyamatosan azt használjuk) esetleg dinamikus (vagyis az IP-címünk minden egyes kapcsolódáskor más és más). PPP statikus IP-címmel PPP statikus IP-címmel Ebben az esetben az /etc/ppp/ppp.conf konfigurációs állományt kell átszerkesztenünk. Tartalma az alábbi példához hasonlítható. A : karakterrel végződő sorok mindig az első oszlopban kezdődnek (tehát a sor elején), míg az összes többi sort tabulátorok vagy szóközök használatával bentebb kell raknunk. 1 default: 2 set log Phase Chat LCP IPCP CCP tun command 3 ident user-ppp VERSION (built COMPILATIONDATE) 4 set device /dev/cuau0 5 set speed 115200 6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \ 7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT" 8 set timeout 180 9 enable dns 10 11 szolgaltato: 12 set phone "(123) 456 7890" 13 set authname ize 14 set authkey mize 15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp" 16 set timeout 300 17 set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0 18 add default HISADDR 1. sor: Ez azonosítja be az alapértelmezett bejegyzést. Az itt szereplő parancsok a ppp minden egyes futásakor magukból végrehajtódnak. 2. sor: Beállítja a naplózás paramétereit. Amikor a beállításaink már kifogástalanul működnek, akkor ezt a sort érdemes átírni a következőre: set log phase tun Ezzel jelentős mértékben vissza tudjuk fogni a naplózás mértékét. 3. sor: Ezzel mondjuk meg a PPP-nek, hogy a többiek felé miként azonosítsa magát. A PPP akkor azonosítja magát a társak felé, ha valamilyen gondja akad az egyeztetésekkel és a kapcsolat beállításával. Az így továbbított információk a másik oldal rendszergazdái számára nyújthatnak segítséget az ilyen jellegű problémák felderítésében. 4. sor: Itt adjuk meg az eszközt, amelyre a modem csatlakozik. A COM1 neve /dev/cuau0, a COM2 neve pedig /dev/cuau1. 5. sor: A csatlakozás sebességét adjuk meg. Ha a 115 200-as érték itt nem működne (ez egyébként minden újabb gyártmányú modem esetében elfogadható), akkor helyette használjuk a 38400-as beállítást. 6. és 7. sorok: - - PPP - felhasználói PPP - - A híváshoz használt - karakterlánc. A felhasználói PPP + karakterlánc. A felhasználói PPPPPPfelhasználói PPP a &man.chat.8; programhoz hasonló küldök-várok típusú szerkesztést alkalmaz. A kihasználható lehetőségekről a man oldalán olvashatunk részletesebben. Az olvashatóság kedvéért a parancs a következő sorban folytatódik. A ppp.conf állományban bármelyik parancs, ahol a \ karakterrel zárjuk a sort, az ugyanígy folytatható a következőben. 8. sor: A kapcsolathoz tartozó üresjárati időt állítja be. Ennek értéke alapból 180 másodperc, így ez a sor pusztán csak az érthetőséget szolgálja. 9. sor: Arra utasítja a PPP-t, hogy a többiektől kérdezze le a helyi névfeloldó beállításait. Ha saját névszervert futtatunk, akkor ezt a sort tegyük inkább megjegyzésbe vagy töröljük ki. 10. sor: Ez az üres sor az átláthatóság kedvéért került bele. A PPP az összes üres sort figyelmen kívül hagyja. 11. sor: Itt kezdődik a szolgaltato nevű szolgáltatóhoz tartozó bejegyzés. Ezt később akár ki is cserélhetjük az internet-szolgáltatónk nevére, így a beállítással tudjuk majd beindítani a kapcsolatot. 12. sor: Beállítjuk a szolgáltatóhoz tartozó telefonszámot. A kettőspont (:) vagy a csővezeték (|) karakterekkel elválasztva több telefonszámot is meg tudunk adni. A &man.ppp.8; oldalon olvashatunk a két elválasztó közti különbségekről. Röviden ezeket úgy foglalhatnánk össze, hogy ha váltogatni akarunk a számok között, akkor használjuk a kettőspontot. Ha mindig az elsőként megadott számot akarjuk hívni és a többit csak akkor, ha ez nem működik, akkor a csővezeték karakterre lesz szükségünk. Ahogy a példa is mutatja, az összes telefonszámot tegyük mindig idézőjelek közé. Ha a telefonszámban egyébként is szerepelnek szóközök, akkor is idézőjelek (") közé kell tennünk. Ennek elhagyásával egy egyszerű, ámde kényes hibát ejtünk. 13. és 14. sor: A felhasználói nevet és jelszót tartalmazza. Amikor egy &unix; fajtájú bejelentkezést kapunk, akkor ezekre az értékekre a set login parancsban \U és \P változókkal tudunk hivatkozni. Ha PAP vagy CHAP használatával jelentkezünk be, akkor ezek az értékek a hitelesítéskor kerülnek felhasználásra. 15. sor: - PAP - CHAP - - Ha a PAP vagy CHAP protokollok valamelyikét + Ha a PAPPAP vagy CHAPCHAP protokollok valamelyikét használjuk, akkor nem lesz szükségünk a login változóra, ezért ezt megjegyzésbe is tehetjük, vagy akár ki is törölhetjük. A PAP és CHAP hitelesítésről szóló részben olvashatjuk ennek további részleteit. A bejelentkezéshez használt karakterlánc hasonlít a behíváshoz használt, chat-szerű felépítéssel rendelkező karakterlánchoz. A példában látható karakterlánc egy olyan szolgáltatáshoz illeszkedik, ahol a bejelentkezés valahogy így néz ki: A Világ Legjobb Szolgáltatója login: izé password: mizé protocol: ppp Ezt a szkriptet alakítsuk a saját igényeinkhez. Ha először próbálkozunk ilyen szkript írásával, akkor lehetőleg kapcsoljuk be a rendszerek között lezajló beszélgetés naplózását, hogy ellenőrizni tudjuk minden a megfelelően módon történik-e. 16. sor: - időkorlát - Beállítjuk a kapcsolathoz tartozó alapértelmezett - időkorlátot (másodpercben). Itt a + időkorlátotidőkorlát (másodpercben). Itt a kapcsolat automatikusan lezárul 300 másodperc tétlenséget követően. Ha nem akarunk ilyen korlátot szabni, akkor ezt az értéket állítsuk nullára vagy használjuk a paranccsori kapcsolót. 17. sor: - internet-szolgáltató - A felülethez tartozó címeket állítja be. A x.x.x.x helyére a - szolgáltató által kiosztott + szolgáltatóinternet-szolgáltató által kiosztott IP-címet kell beírnunk. A y.y.y.y helyett pedig a szolgáltató átjárója kerül be (lényegében az a gép, amelyhez csatlakozunk). Amennyiben az internet-szolgáltatónk nem adott meg semmilyen átjárót, erre a célra a 10.0.0.2/0 címet is használhatjuk. Amikor nekünk kell kitalálnunk ezeket a címeket, akkor ne felejtsünk el létrehozni hozzájuk egy bejegyzést az /etc/ppp/ppp.linkup állományban a PPP dinamikus IP-címmel szakaszban szereplőek szerint. Ha nem adjuk meg ezt a sort, akkor a ppp parancs nem képes módban működni. 18. sor: A szolgáltató átjárójához felvesz egy alapértelmezett útvonalat. A HISADDR kulcsszót a 17. sorban megadott átjáró címével helyettesítjük. Ezért fontos, hogy ez a 17. sor után szerepeljen, különben a HISADDR nem lesz képes inicializálódni. Ha a ppp parancsot nem akarjuk módban futtatni, akkor ezt a sort a ppp.linkup állományba is átrakhatjuk. Ha statikus IP-címmel rendelkezünk és a ppp módban fut, akkor a ppp.linkup állományba egészen addig nem kell semmit sem írnunk, amíg a csatlakozás előtt az útválasztási táblázatokban a megfelelő adatok találhatóak. Olyankor is jól jöhet, amikor a csatlakozást követően meg akarunk hívni bizonyos programokat. Ezt majd a sendmailes példában fogjuk bővebben kifejteni. Erre példákat a /usr/share/examples/ppp/ könyvtárban találhatunk. PPP dinamikus IP-címmel PPP dinamikus IP-címmel IPCP Ha az internet-szolgáltatónktól nem kaptunk statikus IP-címet, akkor a ppp paranccsal is be tudjuk állítani a helyi és távoli címeket. Ez az IP-címek kitalálásával történik, valamint úgy, hogy a ppp számára a csatlakozás után lehetővé tesszük az IP konfigurációs protocol (IP Configuration Protocol, IPCP) használatát. A ppp.conf tartalma szinte teljesen megegyezik a PPP statikus IP-címmel részben szereplővel, egyetlen apró különbséggel: 17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 Ismét szeretnénk elmondani, hogy a sorszámot ne írjuk bele, hiszen az csak hivatkozási céllal szerepel. Legalább egy szóközzel kezdjünk bentebb. 17. sor: A / után megjelenő szám azoknak a biteknek a számát adja meg, amire a ppp támaszkodik. A környezetünknek jobban megfelelő IP-címeket is megadhatunk, de a fenti példa minden esetben működni fog. Az utolsó paraméterrel (0.0.0.0) azt mondjuk a PPP-nek, hogy az egyeztetést ne a 10.0.0.1, hanem a 0.0.0.0 címmel kezdje meg, amire egyes szolgáltatók esetén szükségünk is lesz. A set ifaddr első paramétereként azonban soha ne adjuk meg a 0.0.0.0 címet, mivel ezzel a PPP módban nem tudja beállítani a kezdeti útvonalat. Ha nem módban indítjuk, akkor az /etc/ppp/ppp.linkup állományban meg kell adnunk még egy bejegyzést is. A ppp.linkup állományt a kapcsolat létrejötte után dolgozzuk fel. Itt már a ppp megkapta a felülethez tartozó címeket, így az útválasztási táblázatba fel tudjuk venni hozzájuk a megfelelő bejegyzéseket: 1 szolgaltato: 2 add default HISADDR 1. sor: A kapcsolat felépítése során a ppp a ppp.linkup állományban a következő szabályok szerint fogja keresni a bejegyzéseket: először a ppp.conf állományban megadott címkét próbálja megtalálni. Ha ez nem sikerül, akkor az átjárónknak megfelelő bejegyzést kezdi el keresni. Ez egy négy byte-ból álló, felírásában az IP-címekhez hasonlító címke. Ha még ez a címke sem található, akkor a MYADDR bejegyzést keresi. 2. sor: Ez a sor mondja meg a ppp programnak, hogy vegyen fel egy HISADDR címre vonatkozó alapértelmezett útvonalat. A HISADDR címet az IPCP által egyeztetett átjáró IP-címére cseréljük ki. Ha erre a részletesebb példát akarunk látni, akkor a /usr/share/examples/ppp/ppp.conf.sample és /usr/share/examples/ppp/ppp.linkup.sample állományokban a pmdemand bejegyzést nézzük meg. A bejövő hívások fogadása PPP bejövő hívások fogadása Amikor egy helyi hálózathoz csatlakozó gépen akarjuk a ppp programot beállítani a bejövő hívások fogadására, akkor azt is el kell döntenünk, hogy engedélyezzük-e a csomagok továbbküldését a belső hálózat felé. Amennyiben igen, akkor a becsatlakozó gépenek a belső hálózatunkon ki kell osztani egy külön címet és az /etc/ppp/ppp.conf állományban, és meg kell adnunk az enable proxy parancsot. Emellett még az /etc/rc.conf állományban se feleljtsük el megadni a következő sort: gateway_enable="YES" Melyik getty? A &os; beállítása betárcsázós kapcsolatokhoz nagyon jól bemutatja a betárcsázós szolgáltatások beállítását a &man.getty.8; segítségével. A getty helyett egyébként az mgetty, a getty egy ügyesebb változata is használható (a comms/mgetty+sendfax portból), amely kifejezetten a betárcsázós vonalakhoz készült. A mgetty használatának többek közt az egyik előnye, hogy aktívan tartja a kapcsolatot a modemekkel, tehát hogy ha az /etc/ttys állományban letiltjuk a modemet, akkor nem is fog válaszolni a hívásokra. Emellett az mgetty későbbi változatai (a 0.99 beta változatától kezdve) még a PPP folyamok automatikus észlelését is támogatják, ezáltal a kliensek szkriptek nélkül is képesek elérni a szerverünket. Ha erről többet akarunk megtudni, akkor az mgetty paranccsal kapcsolatban olvassuk el Az mgetty és az AutoPPP című szakaszt. A <application>PPP</application> engedélyei A ppp parancsot általában root felhasználóként kell futtatni. Ha viszont a ppp parancsot tetszőleges felhasználóval akarjuk szerver módban futtatni az iméntiek szerint, akkor ahhoz fel kell vennünk az /etc/group állományban szereplő network csoportba. Ezeken kívül még az allow paranccsal is engedélyeznünk kell konfigurációs állomány egy vagy több részének elérését is: allow users fred mary Ha ezt a parancsot a default bejegyzésnél adjuk meg, akkor az így megadott felhasználók mindenhez hozzá tudnak férni. PPP shellek a dinamikus IP-címek használóinak PPP shellek Hozzunk létre egy /etc/ppp/ppp-shell nevű állományt, amelyben a következők szerepelnek: #!/bin/sh IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'` CALLEDAS="$IDENT" TTY=`tty` if [ x$IDENT = xdialup ]; then IDENT=`basename $TTY` fi echo "PPP for $CALLEDAS on $TTY" echo "Starting PPP for $IDENT" exec /usr/sbin/ppp -direct $IDENT Ez a szkript legyen végrehajtható. Ezután az alábbi paranccsal ppp-dialup néven készítsünk egy szimbolikus linket erre a szkriptre: &prompt.root; ln -s ppp-shell /etc/ppp/ppp-dialup Ez a szkript lesz az összes betárcsázó felhasználónk shellje. A most következő példa az /etc/passwd állományban szereplő, pchilds nevű PPP felhasználó bejegyzését mutatja be (ne felejtsük el, hogy soha ne közvetlenül szerkesszük a jelszavakat tároló állományt, hanem a &man.vipw.8; segítségével). pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup Hozzunk létre egy /home/ppp nevű könyvtárat a következő bárki által olvasható 0 byte-os állományokkal: -r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin -r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts Ezek hatására az /etc/motd állomány tartalma nem jelenik meg. PPP shellek a statikus IP-címek használóinak PPP shellek Az iméntiekhez hasonló módon készítsük el a ppp-shell állományt, és mindegyik statikus IP-vel rendelkező hozzáféréshez csináljunk egy szimbolikus linket a ppp-shell szkriptre. Például, ha három betárcsázós ügyfelünk van, fred, sam és mary, feléjük 24 bites CIDR hálózatokat közvetítünk, akkor a következőket kell begépelnünk: &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary A fentebb szereplő betárcsázós felhasználók eléréseihez tartozó shelleket állítsuk be az itt létrehozott szimbolikus linkekre (így tehát mary shellje az /etc/ppp/ppp-mary lesz). A <filename>ppp.conf</filename> beállítása a dinamikus IP-címek használóinak Az /etc/ppp/ppp.conf állományban a következő sorok valamelyikének kellene szerepelnie: default: set debug phase lcp chat set timeout 0 ttyu0: set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255 enable proxy ttyu1: set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255 enable proxy A bentebb kezdett sorokat mi is kezdjünk bentebb. A default: szakasz minden kapcsolat esetén betöltődik. Az /etc/ttys állományban engedélyezett mindegyik betárcsázós vonal létrehoz a fenti ttyu0: szakaszhoz hasonló bejegyzést. Minden vonal kap egy egyedi IP-címet a dinamikus felhasználók számára szánt címtartományból. A <filename>ppp.conf</filename> beállítása a statikus IP-vel rendelkezők számára A /usr/share/examples/ppp/ppp.conf állományban szereplő tartalom mellett az összes statikus kiosztású IP-címmel rendelkező betárcsázó felhasználóhoz még hozzá kell tennünk egy szakaszt. A példánkban ezek továbbra is fred, sam és mary. fred: set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255 sam: set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255 mary: set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255 Amennyiben szükséges, az /etc/ppp/ppp.linkup tartalmazhat további útválasztási információkat is az egyes statikus IP-címmel rendelkező felhasználókhoz. A lentebb bemutatott sor a kliens ppp összekötettésén keresztül vesz fel egy útvonalat a 203.14.101.0/24 hálózat felé. fred: add 203.14.101.0 netmask 255.255.255.0 HISADDR sam: add 203.14.102.0 netmask 255.255.255.0 HISADDR mary: add 203.14.103.0 netmask 255.255.255.0 HISADDR Az <command>mgetty</command> és az AutoPPP mgetty AutoPPP LCP Az comms/mgetty+sendfax port alapértelmezés szerint az AUTO_PPP beállítással érkezik, amely lehetővé teszi, hogy az mgetty képessé legyen a PPP kapcsolatok LCP fázisát észlelni és magától létrehozni hozzá egy ppp shellt. Mivel az alapértelmezett név/jelszó páros azonban ilyenkor nem jelenik meg, a felhasználókat a PAP vagy a CHAP protokollon keresztül lehet hitelesíteni. Ez a szakasz most feltételezi, hogy a sikeresen beállítottuk, lefordítottuk és telepítettük az comms/mgetty+sendfax portot. Az /usr/local/etc/mgetty+sendfax/login.config állományban ne felejtsük ellenőrizni, hogy szerepel a következő: /AutoPPP/ - - /etc/ppp/ppp-pap-dialup Ezzel utasítjuk az mgetty programot arra, hogy az észlelt PPP kapcsolatokhoz futtassa le a ppp-pap-dialup szkriptet. Hozzunk létre az /etc/ppp/ppp-pap-dialup nevű állományt, amelyben majd a következők fognak szerepelni (az állomány legyen végrehajtható): #!/bin/sh exec /usr/sbin/ppp -direct pap$IDENT Az /etc/ttys állományban engedélyezett összes betárcsázós vonalhoz készítsük el a megfelelő bejegyzést az /etc/ppp/ppp.conf állományban. Ezek remekül meg fognak férni az imént készített definíciókkal. pap: enable pap set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40 enable proxy Minden olyan felhasználónak, aki ezzel a módszerrel jelentkezik be, szüksége lesz egy név/jelszó kombinációra az /etc/ppp/ppp.secret állományban, vagy az alábbi beállítás megadásával választhatjuk azt is, hogy a felhasználókat az /etc/passwd állományon keresztül a PAP protokoll segítségével azonosítjuk. enable passwdauth Ha statikus IP-címet akarunk kiosztani némely felhasználóknak, akkor az /etc/ppp/ppp.secret állományban ezt megadhatjuk a harmadik paraméternek. Erről bővebben a /usr/share/examples/ppp/ppp.secret.sample állományban láthatunk példát. A Microsoft kiterjesztései DNS NetBIOS PPP Microsoft kiterjesztések A PPP úgy is beállítható, hogy kérésre DNS és NetBIOS típusú névfeloldáshoz is szolgáltasson információkat. A PPP 1.x változatával úgy lehet engedélyezni ezeket a kiterjesztéseket, ha az /etc/ppp/ppp.conf állomány megfelelő részeibe felvesszük a következő sorokat: enable msext set ns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5 A PPP második és későbbi változataiban pedig: accept dns set dns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5 Ezzel a kliens megkapja az elsődleges és másodlagos névszerverek címeit, valamint a NetBIOS névszervert. Ha a második és az azt követő verziókban a set dns sort elhagyjuk, akkor a PPP az /etc/resolv.conf állományban található értékeket fogja használni. A PAP és CHAP hitelesítés PAP CHAP Egyes internet-szolgáltatók úgy állítják be a rendszerüket, hogy a kapcsolat felépítése során a hitelesítés a PAP vagy CHAP mechanizmusok valamelyikével történik. Ilyenkor a szolgáltató nem egy login: sorral fogja bekérni a szükséges adatokat, hanem közvetlenül a PPP kapcsolatot kezdi el használni. A PAP nem olyan biztonságos, mint a CHAP, de itt a biztonság nem is annyira fontos, mivel a jelszavak, amelyeket ugyan a PAP titkosítatlan formában küld tovább, csak egy soros vonalon haladnak át. A rossz indulatú támadók itt nem sok mindent tudnak lehallgatni. A PPP statikus IP-címmel és a PPP dinamikus IP címmel című szakaszokhoz képest a következő módosításokat kell elvégeznünk: 13 set authname AFelhasználóiNevem 14 set authkey AJelszavam 15 set login 13. sor: Ebben a sorban adjuk meg a PAP/CHAP felhasználói nevünket, amelyet AFelhasználóiNevem helyett kell beírni. 14. sor: - jelszó - - Ebben a sorban adjuk meg a PAP/CHAP jelszavunkat, + Ebben a sorban adjuk meg a PAP/CHAP jelszavunkatjelszó, AJelszavam helyett. Szándénkunk egyértelműsítése érdekében ezek mellett még egy további sort is érdemes felvennünk, tehát: 16 accept PAP vagy 16 accept CHAP Alapértelmezés szerint a PAP és CHAP is egyaránt elfogadott. 15. sor: A PAP és CHAP alkalmazásakor általában nem is kell bejelentkeznünk a szolgáltató szerverére. Ezért a set login parancsnál használt karakterláncot le is kell tiltanunk. A <command>ppp</command> beállításainak megváltoztatása menet közben A háttérben futó ppp programhoz menet közben is tudunk beszélni, de csak olyankor, amikor az ehhez szükséges portot megadtuk. Ezt úgy tudjuk megtenni, ha beállítások közé felvesszük az alábbit: set server /var/run/ppp-tun%d DiagnosticPassword 0177 Így a PPP az előre megadott &unix; tartománybeli socketen keresztül fogja várni a kapcsolódásunkat, és a konkrét hozzáféréshez jelszót kér. A névben szereplő %d a használatban levő tun eszköz sorszámát jelöli. Miután a csatlakozás beállítódott, a szkriptekben a &man.pppctl.8; program használható a futó program vezérléséhez. A PPP hálózati címfordítási képességének kihasználása PPPNAT A PPP képes a rendszermag rásegítése nélkül képes hálózati címfordítást végezni. Ezt a lehetőséget a következő sor hozzáadásával tudjuk aktiválni az /etc/ppp/ppp.conf állományban: nat enable yes A PPP-be épített hálózati címfordítás a -nat parancssori paraméterrel is bekapcsolható. Az /etc/rc.conf állományban is található hozzá egy ppp_nat változó, amely alapértelmezés szerint engedélyezett. Amikor használjuk ezt a lehetőséget, az /etc/ppp/ppp.conf állományban a következő opciókkal engedélyezhetjük a bejövő kapcsolatok továbbítását: nat port tcp 10.0.0.2:ftp ftp nat port tcp 10.0.0.2:http http vagy egyáltalán ne bízzunk meg a külvilágban: nat deny_incoming yes A rendszer végső beállítása PPP beállítása Mostanra ugyan már beállítottuk a ppp programot, azonban még néhány dolgot be kell állítanunk, mielőtt ténylegesen nekilátnánk használni. Ezek mindegyike az /etc/rc.conf állomány módosítását igényli. Az állományt fentről lefelé fogjuk feldolgozni, de előtte ne felejtsünk el értéket adni a hostname= változónak, például: hostname="ize.minta.com" Amennyiben a szolgáltatónk statikus IP-címet és nevet biztosít számunkra, az lesz a legjobb, ha itt a tőle kapott nevet adjuk meg. Keressük meg a network_interfaces változót. Ha a rendszerünkben kérésre akarjuk tárcsázni a szolgáltatónkat, akkor a tun0 eszközt mindenképpen vegyük fel az értékébe, minden más esetben pedig távolítsuk el. network_interfaces="lo0 tun0" ifconfig_tun0= Az ifconfig_tun0 változónak üres értéket kell megadnunk, és létre kell hoznunk egy /etc/start_if.tun0 nevű állományt. Ebben a következő sornak kell szerepelnie: ppp -auto arendszerem Ez a szkript a hálózat beállításakor fut le, és a ppp démont automatikus módban indítja el. Ha az adott gép egy helyi hálózat átjárója is egyben, akkor az kapcsolót is érdemes megadnunk mellette. A pontosabb részletek tekintetében olvassuk el a megfelelő man oldalt. Az /etc/rc.conf állományban a NO érték megadásával tiltsuk le az útválasztást végző program használatát: router_enable="NO" routed Fontos, hogy a routed démon ne induljon el, mivel routed hajlamos törölni a ppp által létrehozott alapértelmezett útválasztási bejegyzéseket. Ezenkívül még a sendmail_flags változóról szóló sorból is érdemes kivenni a opciót, máskülönben a sendmail minden művelet megkezdése előtt nekiáll felderíteni a hálózatot, és ezzel megindítja a tárcsázást. Próbáljuk meg így átírni az értékét: sendmail_flags="-bd" sendmail Ezért cserébe viszont a sendmail programot a ppp kapcsolat létrejöttekor mindig utasítanunk kell, hogy újból ellenőrizze a levelezési sort. Ezt a következők begépelésével érhetjük el: &prompt.root; /usr/sbin/sendmail -q Ugyanezt automatikusan is meg tudjuk tenni a !bg paranccsal a ppp.linkup állományban: 1 szolgaltato: 2 delete ALL 3 add 0 0 HISADDR 4 !bg sendmail -bd -q30m SMTP Ha nem felelne meg ez a megoldás, akkor egy dfilter is beállítható az SMTP forgalom szűrésére. A példák között megtaláljuk ennek pontos minkéntjét. Ezután már csak a gépünk újraindítása maradt hátra. Az újraindítás után már be is gépelhetjük: &prompt.root; ppp ahol a dial szolgaltato parancs kiadásával meg tudjuk kezdeni a PPP kapcsolat felépítését, vagy a ppp programot megkérhetjük arra, hogy automatikusan kezdje el, amint van kimenő forgalom (és nem készítettük el a start_if.tun0 szkriptet). Ekkor gépeljük be ezt: &prompt.root; ppp -auto szolgaltato Összefoglalás Gyorsan foglaljuk össze, hogy az ppp beállításához milyen lépések megtétele szükséges az első alkalommal: A kliens oldalán: Győződjünk meg róla, hogy a tun eszköz benne van a rendszermagban. Ellenőrizzük, hogy a tunN eszközhöz tartozó állomány rendelkezésre áll a /dev könyvtárban. Hozzunk létre egy bejegyzést az /etc/ppp/ppp.conf állományban. A pmdemand példából a legtöbb szolgáltató esetében ki tudunk indulni. Ha dinamikus IP-címet kapunk, akkor az /etc/ppp/ppp.linkup állományba is vegyünk fel egy bejegyzést. Frissítsük az /etc/rc.conf állományunkat. Ha igény szerint akarunk tárcsázni, akkor hozzunk létre start_if.tun0 néven egy szkriptet. A szerver oldalán: Gondoskodjunk róla, hogy a tun eszköz támogatása szerepel rendszermagban. Győződjünk meg róla, hogy a tunN eszköz megtalálható a /dev könyvtárban. Az /etc/passwd állományban (a &man.vipw.8; program használatával) hozzunk létre bejegyzéseket. A felhasználók könyvtáraiban hozzunk létre egy olyan profilt, amely ppp -direct direct-server vagy egy ehhez hasonló parancsot futtat le. Az /etc/ppp/ppp.conf állományban adjuk meg egy bejegyzést. A direct-server példa ehhez egy remek alapot biztosít. Az /etc/ppp/ppp.linkup állományban hozzunk létre egy bejegyzést. Frissítsük az /etc/rc.conf állományunkat. Gennady B. Sorokopud Egyes részeit készítette: Robert Huff A rendszerszintű PPP alkalmazása Ez a szakasz csak &os; 7.X esetén érvényes. A rendszerszintű PPP beállítása PPP rendszer PPP Mielőtt a gépünkön nekikezdünk a PPP beállításának, ellenőrizzük, hogy a pppd megtalálható a /usr/sbin könyvtárban és az /etc/ppp könyvtár létezik. A pppd két módban képes működni: kliensként — a gépünket soros vonali vagy modemes PPP kapcsolaton keresztül csatlakoztatjuk a külvilághoz - - PPP - szerver - - szerverként — a számítógépünk egy hálózat része, ahol a többieket a - PPP használatával kapcsoljuk össze + PPPPPPszerver használatával kapcsoljuk össze Mind a két esetben egy konfigurációs állomány tartalmát kell összeállítanunk (ez az /etc/ppp/options vagy a ~/.ppprc, ha a gépünkön több felhasználó is PPP-t akar használni). Egy modemes vagy soros vonali szoftverre is szükségünk lesz (ez többnyire a comms/kermit), amellyel távoli gépeket tudunk felhívni és feléjük kapcsolatot felépíteni. Trev Roydhouse Az alapjául szolgáló információkat adta: A <command>pppd</command> mint kliens PPP kliens Cisco A most következő /etc/ppp/options állománnyal egy Cisco terminál szerverhez tudunk kapcsolódni egy PPP vonalon keresztül. crtscts # a hardveres forgalomirányítás engedélyezése modem # modem vezérlővonal noipdefault # a távoli PPP szervernek kell IP-címet adnia # ha az IPCP alapú egyeztetés során a távoli gép nem küld # nekünk IP-címet, akkor vegyük ki ezt a beállítást passive # LCP csomagokat várunk domain ppp.ize.com # ide írjuk be a hálózati nevünket :távoli_ip # ide kell írni a távoli PPP szerver IP-címét # a PPP kapcsolaton keresztül erre fogjuk továbbküldeni a csomagokat # ha nem adtuk meg "noipdefault" beállítást, akkor ezt a sort # írjuk át helyi_ip:távoli_ip alakúra defaultroute # adjuk meg ezt a sort is, ha a PPP szerverünket egyben az # alapértelmezett átjárónak is be akarjuk állítani Így kapcsolódunk: Kermit modem Tárcsázzuk a távoli gépet a Kermit (vagy bármilyen más modemes program) elindításával, majd adjuk meg a felhasználói nevünket és jelszavunkat (vagy bármi mást, amivel a távoli gépen engedélyezni tudjuk a PPP használatát). Lépjünk ki a Kermit programból (anélkül, hogy bontanánk a vonalat). Írjuk be a következőket: &prompt.root; /usr/sbin/pppd /dev/tty01 19200 Ne felejtsük el megadni a megfelelő sebességet és eszközt. A számítógépünk most már PPP-n keresztül csatlakozik. Ha valamilyen okból nem sikerülne felépíteni a kapcsolatot, akkor vegyük fel a beállítást is az /etc/ppp/options állományba, majd a konzolra érkező üzenetek segítségével próbáljuk meg felderíteni a probléma okát. Az alábbi /etc/ppp/pppup szkript mind a három fázist automatikussá teszi: #!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.dial pppd /dev/tty01 19200 Kermit Az /etc/ppp/kermit.dial egy olyan Kermit szkript, amivel tárcsázni tudunk és a távoli gépen elvégezni az összes szükséges hitelesítést (a leírás végén találhatunk is egy ilyen szkriptet példaként). Az alábbi /etc/ppp/pppdown szkripttel tudjuk bontani a PPP vonalat: #!/bin/sh pid=`pgrep pppd` if [ X${pid} != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill -TERM ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi /sbin/ifconfig ppp0 down /sbin/ifconfig ppp0 delete kermit -y /etc/ppp/kermit.hup /etc/ppp/ppptest A /usr/etc/ppp/ppptest elindításával ellenőrizni tudjuk, hogy a pppd még mindig fut. Ez valahogy így néz ki: #!/bin/sh pid=`pgrep pppd` if [ X${pid} != "X" ] ; then echo 'pppd running: PID=' ${pid-NONE} else echo 'No pppd running.' fi set -x netstat -n -I ppp0 ifconfig ppp0 A vonal bontásához az /etc/ppp/kermit.hup szkriptet kell elindítanunk, amiben a következő szerepelnek: set line /dev/tty01 ; ide írjuk be a saját modemünket set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 echo \13 exit A kermit helyett a chat programot is használhatjuk: A következő két állomány már elég egy kapcsolat létrehozásához pppd használatával: /etc/ppp/options: /dev/cuad1 115200 crtscts # a hardveres forgalomirányítás engedélyezése modem # modemes vezérlővonal connect "/usr/bin/chat -f /etc/ppp/login.chat.script" noipdefault # a távoli PPP kiszolgálónak adnia kell egy IP-címet # ha a távoli gép nem küldi az IP-címünk az IPCP alapú egyeztetés során # akkor távolítsuk el ezt a beállítást passive # LCP csomagokat várunk domain sajat.tartomany # ide írjuk be a saját tartománynevünket : # a távoli PPP kiszolgáló IP-címét tegyük ide # ezen keresztül fogjuk továbbküldeni a PPP kapcsolaton áthaladó csomagokat # nem adtuk meg a "noipdefault" beállítást, akkor ezt # sort írjuk át helyi_ip:távoli_ip alakúra defaultroute # ez a sor akkor kell, ha a PPP szerver lesz az # alapértelmezett átjárónk is /etc/ppp/login.chat.script: A most következőt egyetlen sorba kell írnunk. ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTtelefon.szám CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: bejelentkezési-azonosító TIMEOUT 5 sword: jelszó Miután ezeket telepítettük és a megfelelőképpen módosítottuk, már csak a pppd parancsot kell kiadnunk, valahogy így: &prompt.root; pppd A <command>pppd</command> mint szerver Az /etc/ppp/options állományban nagyjából a következőknek kell szerepelnie: crtscts # hardveres forgalomirányítás netmask 255.255.255.0 # hálózati maszk (nem kötelező) 192.114.208.20:192.114.208.165 # a helyi és távoli gépek IP-címei # a helyi IP-nek el kell térnie az Ethernet # (vagy más egyéb) felülethez tartozó címtől. # a távoli IP a távoli géphez rendelt IP-cím domain ppp.ize.com # a saját tartományunk passive # az LCP csomagok várása modem # modemes vonal Az alábbi /etc/ppp/pppserv szkript a pppd démont szervernek állítja be: #!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi # reset ppp interface ifconfig ppp0 down ifconfig ppp0 delete # enable autoanswer mode kermit -y /etc/ppp/kermit.ans # run ppp pppd /dev/tty01 19200 A szerver leállítására a következő /etc/ppp/pppservdown szkriptet kell használnunk: #!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.noans A következő Kermit szkript (/etc/ppp/kermit.ans) engedélyezi vagy tiltja le a modem automatikus válaszadását. Körülbelül így épül fel: set line /dev/tty01 set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 inp 5 OK echo \13 out ATS0=1\13 ; "ATS0=0\13"-ra írjuk át, ha le akarjuk tiltani az ; automatikus válaszadást inp 5 OK echo \13 exit Az /etc/ppp/kermit.dial elnevezésű szkriptet használhatjuk arra, hogy tárcsázzunk távoli gépeket és hitelesítsük magunkat rajtuk. Írjuk át az igényeinknek megfelelően, tegyük bele a bejelentkezéshez szükséges azonosítót és jelszót, illetve a modemünk és a távoli gép válaszai szerint módosítsuk az input utasításokat. ; ; írjuk ide azt a com vonalat, amire a modemünk csatlakozik: ; set line /dev/tty01 ; ; ide kerül a modem sebessége: ; set speed 19200 set file type binary ; teljes 8 bites állomány-átvitel set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none set modem hayes set dial hangup off set carrier auto ; adjuk meg a SET CARRIER utasítást is, ha kell set dial display on ; adjuk meg a SET DIAL utasítást is, ha kell set input echo on set input timeout proceed set input case ignore def \%x 0 ; a bejelentkezés számlálója goto slhup :slcmd ; tegyük a modemet parancs módba echo Tegyuk a modemet parancs modba. clear ; töröljük a be nem olvasott karaktereket a bemeneti pufferből pause 1 output +++ ; a Hayes-féle helyettesítési szekvenciák használata input 1 OK\13\10 ; várjuk meg az OK jelzést if success goto slhup output \13 pause 1 output at\13 input 1 OK\13\10 if fail goto slcmd ; ha a modem nem válaszol OK-val, akkor próbálkozzunk újra :slhup ; bontsuk a vonalat clear ; töröljük ki a be nem olvasott karaktereket a bemeneti pufferből pause 1 echo A vonal bontasa. output ath0\13 ; a kapcsolat létrejöttét jelző Hayes-parancs input 2 OK\13\10 if fail goto slcmd ; ha nincs OK válasz, akkor tegyük a modemet parancs módba :sldial ; tárcsázzuk a számot pause 1 echo Dialing. output atdt9,550311\13\10 ; ide írjuk a telefonszámot assign \%x 0 ; nullázzuk le az időzítőt :look clear ; töröljük az olvasatlan karaktereket a bemeneti pufferből increment \%x ; számoljuk a másodperceket input 1 {CONNECT } if success goto sllogin reinput 1 {NO CARRIER\13\10} if success goto sldial reinput 1 {NO DIALTONE\13\10} if success goto slnodial reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 60 goto look else goto slhup :sllogin ; bejelentkezés assign \%x 0 ; nullázzuk le az időzítőt pause 1 echo A bejelentkezes keresese. :slloop increment \%x ; számoljuk a másodperceket clear ; töröljük az olvasatlan karaktereket a bemeneti pufferből output \13 ; ; ide írjuk be a várható bejelentkezési sablont: ; input 1 {Felhasznaloi nev: } if success goto sluid reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 10 goto slloop ; tízszer próbálkozzunk a bejelentkezéssel else goto slhup ; 10 sikertelen próbálkozás után bontsuk a vonalat és kezdjük újra :sluid ; ; ide írjuk be a felhasználói azonosítónkat: ; output ppp-login\13 input 1 {Jelszo: } ; ; ide tegyük a hozzá tartozó jelszót: ; output ppp-password\13 input 1 {Atvaltas SLIP modba.} echo quit :slnodial echo \7Nincs vonal. Ellenorizzuk a telefonvonalat!\7 exit 1 ; local variables: ; mode: csh ; comment-start: "; " ; comment-start-skip: "; " ; end: Tom Rhodes Készítette: <acronym>PPP</acronym> kapcsolatok hibaelhárítása PPP hibaelhárítás A &os; 8.0 kiadásától kezdődően a &man.sio.4; meghajtó szerepét a &man.uart.4; veszi át. Emiatt a soros vonali eszközöket /dev/cuadN és /dev/cuauN helyett /dev/ttydN és /dev/ttyuN néven lehet elérni. A &os; 7.X változatok felhasználóinak ennek megfelelően kell olvasniuk ezt a leírást. Ebben a szakaszban összefoglalunk néhány olyan problémát, ami a PPP modemen keresztüli használata során keletkezhet. Például pontosan tisztában kell lennünk azzal, hogy a tárcsázott rendszer milyen adatokat és hogyan fog tőlünk bekérni. Egyes szolgáltatók egy ssword promptot, míg mások egy password promptot adnak. Ha a ppp szkript nem illeszkedik ezekhez az elvárásokhoz, akkor nem tudunk bejelentkezni. A ppp csatlakozások nyomonkövetésének egyik leggyakoribb módja a manuális kapcsolódás. A következőkben ezért a manuális csatlakozásokra vonatkozó legszükségesebb ismereteket mutatjuk be lépésről lépésre. Az eszközleírók ellenőrzése Ha saját rendszermagot használunk, ne felejtsük el felvenni a következő sort a konfigurációs állományba: device uart A GENERIC rendszermag az uart eszközt már alapértelmezés szerint tartalmazza, ezért ilyenkor már nincs több teendőnk. Egyszerűen csak a dmesg parancs kimenetében keressük meg a modemes eszközhöz tartozó adatokat: &prompt.root; dmesg | grep uart Ennek eredményeképpen kapunk egy rövid összefoglalást a uart típusú eszközökről. Ezek lesznek a számunkra fontos COM portok. Amennyiben a modemünk egy szabványos soros portként működik, akkor a uart1 vagy COM2 néven kell keresnünk. Ha megtaláltuk, akkor nem kell új rendszermagot fordítanunk. Amikor a soros vonali modemünk a uart1 vagy COM2 porton csatlakozik DOS-ban, akkor itt a neki megfelelő eszköz a /dev/cuau1 lesz. Kapcsolódás manuálisan A ppp kézi irányításával gyorsan, egyszerűen és minden fájdalomtól mentesen tudunk csatlakozni az internethez, de olyankor is hasznos, ha ki akarjuk deríteni, hogy az internet-szolgáltatónk milyen módon kezeli a kliensek ppp csatlakozásait. Nos, akkor ehhez indítsuk is el a PPP alkalmazást a paranccsorból. Az alábbi példákban rendre a pelda névvel hivatkozunk a PPP-t működtető gépre. A ppp tehát a ppp parancs begépelésével indítható: &prompt.root; ppp Ezzel elindítottuk a ppp programot. ppp ON pelda> set device /dev/cuau1 Beállítjuk a modemünket, ami ebben az esetben a cuau1. ppp ON pelda> set speed 115200 Beállítjuk a csatlakozás sebességét, ami ebben az esetben 115 200 kbit/mp. ppp ON pelda> enable dns Azt mondjuk a ppp programnak, hogy állítsa be a névfeloldót és az /etc/resolv.conf állományt egészítse ki a megfelelő névszerverekkel. Ha a ppp nem képes megállapítani a gépünk nevét, akkor később ezt még kézzel is be tudjuk állítani. ppp ON pelda> term Váltsunk terminál módba, így mi irányítjuk a modemet. deflink: Entering terminal mode on /dev/cuau1 type '~h' for help at OK atdt123456789 Az at paranccsal hozzuk alaphelyzetbe a modemet, majd a atdt paranccsal és egy telefonszám megadásával megkezdjük a szolgáltató tárcsázását. CONNECT Ezzel jelez vissza a kapcsolódás megkezdéséről. Ha itt bármilyen hardvertől független csatlakozási probléma merülne fel, akkor ezen a ponton tudunk ellene tenni valamit. ISP Login:felhasznalonev Itt kell megadnunk a felhasználói nevünket, ami megegyezik a szolgáltató által adott azonosítónkkal. ISP Pass:jelszo Ezúttal a jelszavunkat kell megadni, amit szintén a szolgáltató bocsátott rendelkezésünkre az azonosító mellett. Akárcsak amikor bejelentkezünk a &os;-be, itt sem fog látszódni a jelszavunk. Shell or PPP:ppp Szolgáltatótól függően előfordulhat, hogy ez a sor soha nem is jelenik meg. Itt kérdezik meg, hogy a szolgáltatónál egy shellt akarunk használni, vagy csak elindítani egy ppp kapcsolatot. Ebben a példában természetesen a ppp opciót választjuk, mivel egy internet-előfizetés birtokosai vagyunk. Ppp ON pelda> Figyeljük meg, hogy az első nagybetűssé vált. Ezzel jelzi a program, hogy sikeresen csatlakoztunk a szolgáltatónkhoz. PPp ON pelda> Sikeresen azonosítottuk magunkat a szolgáltató felé és várjuk az IP-címünket. PPP ON pelda> Megkaptuk az IP-címünket és ezzel sikeresen felépült a kapcsolat. PPP ON pelda>add default HISADDR Itt adjuk hozzá az alapértelmezett útvonalat, amire mindenképpen szükségünk van ahhoz, hogy a külvilággal is kapcsolatban tudjunk lépni, mivel jelenleg csak a vonal másik végén lévő gépet érjük el. Ha ezt bizonyos, már meglevő útvonalak miatt nem sikerül felvenni, akkor az elé tegyünk egy ! jelet. Ezt viszont a kapcsolat felépítése előtt is megtehetjük, így menet közben az új útvonalat felveszi a többi közé. Ha eddig minden remekül ment, akkor ezen ponton már egy élő internet-kapcsolattal rendelkezünk, és a programot a CTRLz lenyomásával a háttérbe is tehetjük. Ha a PPP felirat ismét a ppp feliratra váltana, akkor az arra utal, hogy elvesztettük a kapcsolatot. Erre nem árt figyelni, mivel ezzel jelzi az aktuális kapcsolat állapotát. A nagybetűs P-k jelölik, hogy az adott szinten megvan a kapcsolat a szolgáltató felé, a kisbetűs p-k pedig arra utalnak, hogy azon a szinten a kapcsolat valamiért megszűnt. A ppp csak ezt a két állapotot ismeri. Nyomkövetés Ha közvetlen vonalunk van és mégsem sikerül kapcsolatot létesíteni, akkor tiltsuk le a hardveres CTS/RTS forgalomirányítást a paranccsal. Ez leginkább akkor fordul elő, ha csatlakoztunk egy olyan terminálszerverhez, amely valamennyire képes kezelni a PPP kapcsolatokat, de a PPP megáll, mikor adatot próbál írni a kommunikációs csatornára, mivel arra a CTS (Clear To Send — lehet küldeni) jelzésre vár, amely soha nem fog megérkezni. Ha mégis ezt a beállítást akarjuk használni, akkor a beállításra is szükségünk lesz, mivel ez kell bizonyos karakterek hardverfüggő átküldésének felülbírálásához, legtöbb esetben a XON/XOFF miatt. A &man.ppp.8; man oldalon találhatunk erről és ennek használatáról részletesebb leírást. Ha egy régebbi gyártmányú modemünk van, akkor a beállítás alkalmazása is javasolt. Alapértelmezés szerint ugyanis nincs paritás, de a régebbi modemek és (a forgalom növekedésével) egyes szolgáltatók még használják hibaellenőrzésre. Ha Compuserve előfizetésünk van, mindenképpen kapcsoljuk be. Amikor a PPP nem tér vissza parancs módba, akkor gyaníthatóan az egyeztetésben lesz valahol probléma, mivel a szolgáltató a kliensüktől várja a kezdeményezését. Ezen a ponton a ~p paranccsal utasíthatjuk a ppp programot a konfigurációs információk átküldésének megkezdésére. Ha egyáltalán nem kapunk promptot a bejelentkezéshez, akkor nagy a alószínűsége, hogy az iménti &unix; stílusú hitelesítés helyett PAP vagy CHAP protokollt kell használnunk. A PAP vagy CHAP használatához mindössze a következő beállításokat kell megadnunk PPP programnak a terminál mód aktiválása előtt: ppp ON pelda> set authname felhasznalonev ahol a felhasznalonev helyett a szolgáltatótól kapott azonosítót kell beírnunk. ppp ON pelda> set authkey jelszo ahol a jelszo helyett a szolgáltatótól kapott jelszót kell megadnunk. Ha sikeresen csatlakoztunk, de még nem találunk semmilyen tartománynevet, akkor a &man.ping.8; és IP-cím segítségével tudjuk megvizsgálni, hogy működőképes-e a kapcsolat. Ha 100 százalékos (100%) csomagvesztést (packet loss) tapasztalunk, akkor szinte biztos, hogy nincs meg az alapértelmezett útvonal. Nézzük meg újra, hogy az beállítást megadtuk-e a kapcsolat felépítésekor. Ha viszont már el tudunk érni egy távoli IP-címet, akkor nagyon valószínű, hogy az /etc/resolv.conf állományba nem került bele a megfelelő névfeloldó címe. Az említett állománynak valahogy így kellene kinéznie: domain minta.com nameserver x.x.x.x nameserver y.y.y.y Ahol az x.x.x.x és y.y.y.y címeket a szolgáltatónk névszervereinek címével kell behelyettesíteni. Ez nem minden esetben található meg az előfizetői szerződésben, de ha felhívjuk a szolgáltatónkat, akkor minden bizonnyal elárulják ezeket a címeket. A &man.syslog.3; is alkalmas a PPP kapcsolatok naplózására. Ehhez csupán ennyit kell megadnunk az /etc/syslog.conf állományban: !ppp *.* /var/log/ppp.log A legtöbb esetben ez a lehetőség már eleve adott. Jim Mock Készítette (a http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html alapján): A PPP használata Ethernet felett (PPPoE) PPP over Ethernet PPPoE PPP, over Ethernet Ebben a szakaszban azt ismertetjük, hogyan állítsuk be a PPP-t Ethernet felett (PPP over Ethernet, PPPoE). A rendszermag beállítása A PPPoE működéséhez most már semmilyen módosításra nincs szükség a rendszermag beállításaiban. Amennyiben a hozzá szükséges Netgraph támogatás nem található a rendszermagban, akkor azt a ppp önműködően betölti. A <filename>ppp.conf</filename> beállítása Íme egy működő ppp.conf állomány: default: set log Phase tun command # itt akár egy részletesebb naplózást is be tudunk állítani set ifaddr 10.0.0.1/0 10.0.0.2/0 a_szolgaltato_neve: set device PPPoE:xl1 # az xl1 helyére írjuk be a saját Ethernet eszközünket set authname FELHASZNALONEV set authkey JELSZO set dial set login add default HISADDR A <application>ppp</application> futtatása root felhasználóként adjuk ki az alábbi parancsot: &prompt.root; ppp -ddial a_szolgaltato_neve A <application>ppp</application> indítása a rendszerindítás során Az /etc/rc.conf állományba vegyük fel a következőket: ppp_enable="YES" ppp_mode="ddial" ppp_nat="YES" # csak akkor, ha címfordítás kell a helyi hálózaton, máskülönben "NO" ppp_profile="a_szolgaltato_neve" A szolgáltatási címkék használata Bizonyos esetekben szolgáltatási címkét (service tag) is használnunk kell a kapcsolat létrehozásához. A szolgáltatási címkék segítségével tudjuk megkülönböztetni az adott hálózaton elérhető különböző PPPoE szervereket. A szolgáltatótól kapott dokumentációban szerepelnie kell minden ehhez kapcsolódó információnak. Amennyiben nem találjuk, érdeklődjünk a szolgáltatónál. Utolsó reményként megpróbálhatjuk a Portgyűjteményben található Roaring Penguin PPPoE nevű program által javasolt módszert. Ennél vegyük azonban számításba, hogy félre tudja programozni a modemünket, amitől akár használhatatlanná is válhat, ezért kétszer is gondoljuk meg, mielőtt használni kezdjük. Egyszerűen csak tegyük fel a szolgáltatótól a modemünk mellé kapott szoftvert. Ezután lépjünk be a program System menüjébe. Itt kell lennie a megfelelő profilnak, ami általában az ISP. A profil neve (a szolgáltatás címkéje) a ppp.conf állományban a PPPoE bejegyzés részeként jelenik meg a set device parancsban (ennek pontos részleteit lásd a &man.ppp.8; man oldalon). Tehát nagyjából így néz ki: set device PPPoE:xl1:ISP Az xl1 eszköz nevét ne felejtsük el a megfelelő Ethernet kártyához tartozó eszköz nevére kicserélni. Az ISP helyett pedig írjuk be az imént kiderített profil nevét. A témával kapcsolatban az alábbi helyeken találhatunk további információkat: Cheaper Broadband with FreeBSD on DSL, írta: Renaud Waldura (angolul). Nutzung von T-DSL und T-Online mit FreeBSD, írta: Udo Erdelhoff (németül). PPPoE és a &tm.3com; <trademark class="registered">HomeConnect</trademark> ADSL Modem Dual Link Ez a modem nem felel meg az RFC 2516 előírásainak (A Method for transmitting PPP over Ethernet (PPPoE), írta: L. Mamakos, K. Lidl, J. Evarts, D. Carrel, D. Simone és R. Wheeler). Helyette az Ethernet keretekben eltérő csomagtípus kódokat használ. A 3Com-nál panaszkodjunk, ha szerintünk is be kellene tartaniuk a PPPoE specifikációját. A &os; is csak akkor lesz képes együttműködni ezzel az eszközzel, ha beállítjuk a megfelelő sysctl változót. Ezt a rendszerindítás során automatikusan meg tudjuk tenni az /etc/sysctl.conf módosításával: net.graph.nonstandard_pppoe=1 vagy közvetlenül az alábbi paranccsal: &prompt.root; sysctl net.graph.nonstandard_pppoe=1 Sajnos, mivel ez egy rendszerszintű beállítás, ezért a &tm.3com; HomeConnect ADSL Modem és más normális PPPoE kliens vagy szerver egyszerre nem használható. <application>PPP</application> ATM felett (PPPoA) PPP over ATM PPPoA PPP, over ATM Most a PPP ATM feletti (PPP over ATM, PPPoA) beállítását fogjuk bemutatni. A PPPoA az európai DSL szolgáltatók körében igen nagy népszerűségnek örvend. PPPoA használata az Alcatel &speedtouch; USB-vel Az ilyen eszközökhöz tartozó PPPoA támogatás a &os;-ben portként áll rendelkezésre, mivel az ehhez szükséges firmware csak az Alcatel licencelési feltételei szerint terjeszthető, ezért nem lehet része az alap &os; rendszernek. A szoftver telepítéséhez ezért a Portgyűjteményt kell használnunk. Telepítsük a net/pppoa portot és kövessük a mellékelt utasításokat. Sok más USB-s eszközhöz hasonlóan az Alcatel &speedtouch; USB-nek a gépünkről kell letöltenie a működéséhez szükséges firmware-t. Ez a folyamat &os; alatt automatizálható, tehát ez a másolás minden esetben megtörténik, amikor az eszközt az USB portra csatlakoztatjuk. Ehhez az /etc/usbd.conf állományba a következő adatokat kell beletennünk. Az állományt root felhasználóként tudjuk csak szerkeszteni. device "Alcatel SpeedTouch USB" devname "ugen[0-9]+" vendor 0x06b9 product 0x4061 attach "/usr/local/sbin/modem_run -f /usr/local/libdata/mgmt.o" Az usbd, vagyis az USB démon engedélyezéséhez az /etc/rc.conf állományba tegyük bele az alábbit: usbd_enable="YES" Emellett még a ppp kapcsolatot is be tudjuk állítani az indítás során. Ehhez mindössze a következő sort kell megadnunk az /etc/rc.conf állományban. Ismét megemlítjük, hogy ezt a műveletet csak a root felhasználóval tudjuk végrehajtani. ppp_enable="YES" ppp_mode="ddial" ppp_profile="adsl" Ezután úgy tudjuk szóra bírni a kapcsolatot, ha a net/pppoa porthoz mellékelt ppp.conf állományt használjuk fel kiindulásként. Az mpd használata Az mpd segítségével többféle szolgáltatáshoz, köztük a PPTP-hez hozzá tudunk férni. Az mpd a Portgyűjteményben net/mpd néven található meg. Sok ADSL modemnek szüksége van egy PPTP tunnelre közte és gép között. Ilyen modem például az Alcatel &speedtouch; Home is. Először magát a portot kell telepítenünk, majd ezután már be tudjuk állítani az mpd-t a saját és a szolgáltatónk igényei szerint. A port a rengeteg leírással megtűzdelt minta konfigurációs állományait a PREFIX/etc/mpd/ könyvtárba teszi. Itt a PREFIX azt a könyvtárat jelöli, ahova a portok kerülnek. Ez alapból a /usr/local/. Az mpd beállításáról szóló teljes dokumentáció a telepítés után elérhető HTML formátumban a PREFIX/share/doc/mpd/ könyvtárban. Íme egy példa az mpd beállítására ADSL kapcsolatok esetében. Az ezzel kapcsolatos beállításaink két állományra bomlanak, melyek közül az első az mpd.conf: default: load adsl adsl: new -i ng0 adsl adsl set bundle authname felhasználónév set bundle password jelszó set bundle disable multilink set link no pap acfcomp protocomp set link disable chap set link accept chap set link keep-alive 30 10 set ipcp no vjcomp set ipcp ranges 0.0.0.0/0 0.0.0.0/0 set iface route default set iface disable on-demand set iface enable proxy-arp set iface idle 0 open A felhasználói azonosító, amellyel a szolgáltató felé hitelesítjük magunkat. Az azonosítóhoz tartozó jelszó, amelyet szintén a szolgáltatól kaptunk. Az mpd.links állomány tartalmazza a felépítendő kapcsolatra vagy kapcsolatokra vonatkozó információkat. Például az előbbiekhez tartozó mpd.links tartalma ez: adsl: set link type pptp set pptp mode active set pptp enable originate outcall set pptp self 10.0.0.1 set pptp peer 10.0.0.138 A &os;-s számítógépünk címe, ahonnan az mpd indul. Az ADSL modemünk IP-címe. Az Alcatel &speedtouch; Home esetén ez a cím alapértelmezés szerint a 10.0.0.138. A kapcsolat ezek után pillanatok alatt felépíthető, ha a root felhasználóval kiadjuk a következő parancsot: &prompt.root; mpd -b adsl A kapcsolat állapotát a következő paranccsal tudjuk ezután ellenőrizni: &prompt.user; ifconfig ng0 ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500 inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff &os; alatt az mpd használata ajánlott az ADSL szolgáltatások eléréséhez. A pptpclient használata &os; alatt a net/pptpclient segítségével is tudunk PPPoA típusú szolgáltatásokhoz kapcsolódni. A net/pptpclient felhasználásával úgy tudunk DSL szolgáltatásokat elérni, ha feltelepítjük a hozzá tartozó portot vagy csomagot, majd módosítjuk az /etc/ppp/ppp.conf állományt. Mind a két műveletet csak root felhasználóként tudjuk lebonyolítani. Ehhez egy ppp.conf állományt lentebb adtunk meg. A ppp.conf állományban található további beállítási lehetőségekről a &man.ppp.8; man oldalon olvashatunk. adsl: set log phase chat lcp ipcp ccp tun command set timeout 0 enable dns set authname felhasználónév set authkey jelszó set ifaddr 0 0 add default HISADDR A DSL szolgáltatónktól kapott felhasználói név. Az előfizetéshez tartozó jelszó. Mivel az előfizetéshez tartozó jelszót a ppp.conf állományba titkosítatlan formában kell szerepeltetnünk, ezért gondoskodjunk róla, hogy senki sem képes olvasni a tartalmát. A most következő parancsokkal beállítjuk, hogy ez az állomány csak a root felhasználó számára legyen olvasható. A részletekért lásd a &man.chmod.1; és &man.chown.8; man oldalakat. &prompt.root; chown root:wheel /etc/ppp/ppp.conf &prompt.root; chmod 600 /etc/ppp/ppp.conf Ezzel a paranccsal a DSL útválasztónk felé nyitunk egy tunnelt a PPP kapcsolathoz. Az Ethernetes DSL modemek általában egy előre beállított helyi hálózati IP-címmel rendelkeznek, amelyhez tudunk csatlakozni. Az Alcatel &speedtouch; Home esetében ez a cím a 10.0.0.138. Az útválasztóhoz adott dokumentációban keressük meg, hogy az eszközünkhöz konkrétan milyen cím tartozik. A tunnel megnyitásához és a PPP kapcsolat megindításához a következő parancsot kell kiadnunk: &prompt.root; pptp cím adsl Az iménti parancs végére még érdemes odatenni az et jelet (&) is, mivel így a pptp működését a háttérben folytatja. A parancs hatására a virtuális tunnelt megtestesítő tun eszköz jön létre a pptp és ppp programok között. Miután visszakaptuk a parancssort, vagy a pptp program megerősítette a kapcsolódás sikerességét, a keletkezett járatot így tudjuk ellenőrizni: &prompt.user; ifconfig tun0 tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500 inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00 Opened by PID 918 Ha nem tudnánk valamiért csatlakozni, akkor először nézzük meg az útválasztónk beállításait, ami általában a telnet vagy egy böngésző segítségével elérhető. Ha még mindig nem vagyunk képesek csatlakozni, akkor a pptp parancs kimenetében és ppp /var/log/ppp.log néven elérhető naplójában kereshetünk árulkodó nyomokat. Satoshi Asami Eredetileg készítette: Guy Helmer A hozzávalókat biztosította: Piero Serini A SLIP használata SLIP Ez a szakasz csak &os; 7.X rendszerekre érvényes. A SLIP kliensek beállítása SLIP kliens A következőkben azt mutatjuk be, hogy egy &os;-s gépet miként tudunk egy hálózaton statikus névvel beállítani a SLIP használatával. A dinamikus hálózati nevek használatakor (vagyis amikor a címünk minden egyes tárcsázáskor megváltozhat) egy valamivel bonyolultabb beállításra van szükségünk. Először is állapítsuk meg, hogy a modemünk melyik soros portra csatlakozik. Sokan /dev/modem néven egy szimbolikus linket hoznak létre a valódi eszközre, például a /dev/cuadN leíróra. Ennek köszönhetően az eszköz tényleges névetől el tudunk vonatkoztatni és soha nem kell módosítanunk semmit, ha a modemet például egy másik portra kell átraknunk. Ugyanis könnyedén kacifántossá tud válni a helyzet, amikor egyszerre kell megváltoztatnunk egy rakat dolgot az /etc könyvtárban és módosítanunk az összes .kermrc állományt! A /dev/cuad0 a COM1 port, a /dev/cuad1 a COM2 és így tovább. A rendszermag beállításait tartalmazó állományban a következőnek mindenképpen szerepelnie kell: device sl Mivel ez általában a GENERIC rendszermagban megtalálható, így ez nem okoz semmilyen gondot, kivéve, hogy ha korábban már kitöröltük. Amit csak egyszer kell megtenni Vegyük fel az otthoni gépünket, az átjárónkat és a névszervereket az /etc/hosts állományba. Erre álljon itt egy konkrét példa: 127.0.0.1 localhost loghost 136.152.64.181 water.CS.Example.EDU water.CS water 136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway 128.32.136.9 ns1.Example.EDU ns1 128.32.136.12 ns2.Example.EDU ns2 Figyeljünk oda, hogy az /etc/nsswitch.conf állományban szereplő szakaszban a dns szó előtt a files szónak kell megjelennie. Ezek nélkül mókás dolgok tudnak történni rendszerünkben. Szerkesszük át az /etc/rc.conf állományt. A hálózati nevünket a következő sorban tudjuk megadni: hostname="az.en.nevem" Ide a gépünk teljes internetes hálózati nevét kell beírnunk. - default route - Az alapértelmezett - átjárót az alábbi sor + átjárótdefault route az alábbi sor módosításával tudjuk beállítani úgy, hogy a defaultrouter="NO" változó értékét átírjuk: defaultrouter="slip-gateway" Készítsük el az /etc/resolv.conf állományt, amelyben majd a következők legyenek: domain CS.Example.EDU nameserver 128.32.136.9 nameserver 128.32.136.12 névszerver tartománynév Látható, hogy ezek a névfeloldásért felelős szerverek címei. Természetesen a ténylegesen beírandó tartomány (domain) neve és a névszerverek címei mindig az adott környezetünktől függenek. Állítsuk be egy jelszót a root és toor felhasználóknak (és mindenki másnak, akinek még nem lenne). Indítsuk újra a számítógépünket és utána győződjünk meg róla, hogy a megfelelő hálózati névvel rendelkezik. A SLIP kapcsolatok felépítése SLIP kapcsolódás Tárcsázzunk és gépeljük be a slip parancsot, majd ezt követően a gépünk nevét és a jelszót. Ez leginkább a konkrét környezettől függ. Ha a Kermit nevű programot használjuk, akkor egy ilyen szkripttel is próbálkozhatunk: # a kermit beállítása set modem hayes set line /dev/modem set speed 115200 set parity none set flow rts/cts set terminal bytesize 8 set file type binary # a következő makró felelős a tárcsázásért és a bejelentkezésért define slip dial 643-9600, input 10 =>, if failure stop, - output slip\x0d, input 10 Azonosito:, if failure stop, - output silvia\x0d, input 10 Jelszo:, if failure stop, - output ***\x0d, echo \x0aCONNECTED\x0a Természetesen a felhasználói nevet és a jelszót a sajátunkra kell benne kicserélnünk. Miután ezzel is megvagyunk, a Kermit paranccsorában a csatlakozáshoz egyszerűen csak írjuk be, hogy slip. Nem javasoljuk, hogy az állományrendszeren a jelszavakat titkosítatlan formában tároljuk. Mindeki csak a saját felelősségére tegyen ilyet. Hagyjuk el a Kermit programot (a Ctrl z billentyűkombinációval bármikor fel tudjuk függeszteni a futását) és root felhasználóként írjuk be a következőt: &prompt.root; slattach -h -c -s 115200 /dev/modem Ha ezután már képesek vagyunk a ping paranccsal elérni az útválasztó másik oldalán található gépet, akkor az azt jelenti, hogy sikerült csatlakoznunk! Ha viszont itt még nem járnánk sikerrel, akkor az slattach parancsnak ne a paramétert adjuk meg, hanem a paramétert. Hogyan bontsunk egy kapcsolatot Tegyük a következőket: &prompt.root; kill -INT `cat /var/run/slattach.modem.pid` Ez leállítja az slattach programot. Ne felejtsük el azonban, hogy ezt csak a root felhasználóval tudjuk végrehajtani. Ezután térjünk vissza a kermit programhoz (ha felfüggesztettük volna, akkor ehhez a fg parancsra lesz szükségünk), és lépjünk ki belőle (q). Az &man.slattach.8; man oldala ehhez a ifconfig sl0 down parancsot javasolja, amellyel lényegében leállítjuk a hozzá tartozó felületet. Igazából a kettő között nincs semmilyen komolyabb eltérés (mivel az (ifconfig sl0 is ugyanezt eredményezi.) Néha előfordulhat, hogy a modem egyszerűen nem hajlandó eldobni a vonalat. Ilyen esetekben indítsuk el a kermit programot és lépjünk ki megint. Másodjára általában már sikerül. Hibaelhárítás Ha valamiért ez mégsem válna be, akkor csak nyugodtan kérdezősködjünk a &a.net.name; levelezési listán. A tapasztalatok szerint az embereknek eddig a következőkkel voltak problémáik: Az slattach meghívásakor sem a , sem pedig a paramétert nem adták meg. (Ez ugyan nem végzetes hiba, de egyes felhasználók szerint ez segített megoldani a gondokat.) Az helyett -et írtak be (egyes betűtípusoknál könnyen össze lehet téveszteni ezeket). Az ifconfig sl0 segítségével ellenőrizhető a felület állapota. Például ilyet láthatunk: &prompt.root; ifconfig sl0 sl0: flags=10<POINTOPOINT> inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00 Ha a &man.ping.8; no route to host hibaüzenetet ad, akkor az útválasztási táblázattal van a gond. A netstat -r paranccsal gyorsan ki tudjuk listázni a rendszerünkben jelenleg nyilvántartott utakat: &prompt.root; netstat -r Routing tables Destination Gateway Flags Refs Use IfaceMTU Rtt Netmasks: (root node) (root node) Route Tree for Protocol Family inet: (root node) => default inr-3.Example.EDU UG 8 224515 sl0 - - localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438 inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - - water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438 (root node) Az előző példákat egy viszonylag forgalmas rendszerből ragadtuk ki. A rendszerünkön megjelenő számok a hálózati aktivitás mértékének függvényei. A SLIP szerverek beállítása SLIP szerver Ebben a leírásban igyekszünk bemutatni hogyan kell egy &os; típusú rendszer alatt SLIP szervert beállítani, ami általában annyit jelent, hogy a rendszerünben a távoli SLIP kliensek csatlakozásakor automatikusan elindítjuk a kapcsolatokat. Előfeltételek TCP/IP hálózatok Ez a szakasz igen szakmai jellegű, ezért az olvasó részéről feltételezünk a témában némi alapismeretet. Ez alatt alapvetően a TPC/IP hálózati protokollt értjük, különös hangsúllyal a hálózatok és hálózati csomópontok címzéséen, a hálózati maszkokon, alhálózatokon, útválasztáson, az olyan útválasztási protokollokon, mint például a RIP. A SLIP beállítása egy betárcsázós szerveren mindezen fogalmak ismeretét igényli, és ha ezekkel még nem lennénk tisztában, akkor olvassuk el például Craig Hunt TCP/IP Network Administration című könyvét (O'Reilly & Associates, Inc.; ISBN: 0-937175-82-X) vagy Douglas Comer TCP/IP protokollról szóló könyveit. modem Mindezek mellett még feltételezzük, hogy már beállítottuk a modem(ek)et és a rajtuk keresztüli bejelentkezéshez szükséges állományokat. Ha még nem készítettük volna fel erre a rendszerünket, akkor a ad részletes tájékoztatást a betárcsázós szolgáltatások beállításáról. A soros vonali eszközmeghajtóval kapcsolatban továbbá érdemes átolvasni a &man.sio.4; oldalt, valamint a &man.ttys.5;, &man.gettytab.5;, &man.getty.8; és &man.init.8; oldalakat a bejelentkezések modemen keresztüli fogadásáról, illetve talán az &man.stty.1; oldalt a soros port paramétereinek megfelelő beállításáról (mint például a clocal a közvetlenül csatlakozó soros felületek esetében). Gyors áttekintés A &os; SLIP szerverként általában a következő módon üzemel: a SLIP felhasználó tárcsázza a &os;-s SLIP szerverünket, majd bejelentkezik egy specális SLIP bejelentkezési azonosító használatával, amely a /usr/sbin/sliplogin shellt használja. A sliplogin program az /etc/sliphome/slip.hosts állományban megkeresi a speciális felhasználóhoz tartozó sort, és ha talál egy ilyet, akkor csatlakoztatja a soros vonalat egy rendelkezésre álló SLIP felületre, amelyen aztán a SLIP felültet beállításához lefuttatja az /etc/sliphome/slip.login shell szkriptet. Példa SLIP szerveren keresztüli bejelentkezésre Például, ha a SLIP felhasználó azonosítója Shelmerg, akkor az /etc/master.passwd állományban a hozzá tartozó bejegyzést nagyjából ilyen: Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin Amikor Shelmerg bejelentkezik, a sliplogin az /etc/sliphome/slip.hosts állományban keresni fog egy felhasználó azonosítójához illeszkedő sort. Például tegyük fel, hogy az /etc/sliphome/slip.hosts állományban szerepel egy ilyen sor: Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp A sliplogin ezt a sor fogja megtalálni, majd a soros vonalat a következő elérhető SLIP felülethez kapcsolja, amelyen ezután végrehajtja az /etc/sliphome/slip.login szkriptet a következő módon: /etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp Ha minden jól megy, akkor az /etc/sliphome/slip.login kiad egy ifconfig parancsot azon a SLIP felületen, amelyre a sliplogin magát csatlakoztatta (amely a fenti példában a 0. SLIP felület volt, és amelyet meg is adtunk slip.login első paramétereként), és így beállítja a helyi IP-címet (dc-slip), a távoli IP-címet (sl-helmer), a SLIP felülethez tartozó hálózati maszkot (0xfffffc00) valamint a további opciókat (autocomp). Ha valami rosszul sülne el, akkor a sliplogin ezekről általában nagyon jó minőségű, információdús üzeneteket készít, amelyeket a syslogd démon pedig a /var/log/messages állományba rögzít. (A &man.syslogd.8; és &man.syslog.conf.5; man oldalak és talán maga az /etc/syslog.conf segíthet kideríteni, hogy a syslogd jelenleg naplóz-e, és ha igen, akkor hova.) A rendszermag beállítása rendszermag beállítása SLIP A &os; alap (vagyis a GENERIC) rendszermagja támogatja a SLIP (&man.sl.4;) használatát. Ha viszont saját rendszermagunk van, akkor előfordulhat, hogy beállítások közé fel kell vennünk a következő sort is: device sl Alapértelmezés szerint a &os; nem továbbít semmilyen csomagot. Amennyiben a &os; SLIP szerverünket útválasztóként is működtetni akarjuk, úgy az /etc/rc.conf állományban a gateway_enable változót át kell állítanunk a értékre. Ennek hatására az újraindítás után is megmarad a csomagok továbbítása. A változtatások azonnali életbeléptetéséhez adjuk ki root felhasználóként a következő parancsot: &prompt.root; /etc/rc.d/routing start Ha a &os; rendszermag beállítása során segítségre szorulnánk, akkor olvassuk el et. A sliplogin beállítása Ahogy arra már korábban is utaltunk, az /etc/sliphome könyvtárban három állomány felelős a /usr/sbin/sliplogin beállításáért (lásd &man.sliplogin.8;): a slip.hosts, amelyekben a SLIP felhasználókat és a hozzájuk tartozó IP-címeket adjuk meg; a slip.login, amely általában csak a SLIP felületet állítja be; (az elhagyható) slip.logout, amely a soros vonal bontásakor a slip.login hatását igyekszik visszafordítani. A <filename>slip.hosts</filename> beállítása Az /etc/sliphome/slip.hosts soraiban whitespace karakterekkel tagoltan legalább négy elem szerepel: a SLIP felhasználó bejelentkezési azonosítója a SLIP kapcsolat helyi címe (a SLIP szerveréhez képest) a SLIP kapcsolat távoli címe hálózati maszk A helyi és távoli címek lehetnek hálózati nevek is (amelyeket vagy az /etc/hosts, vagy pedig az /etc/nsswitch.conf állományban szereplő beállítások alapján tudunk feloldani IP-címre), illetve a hálózati maszk is lehet egy olyan név, amelyet az /etc/networks fel tud oldani. A példaként bemutatott rendszerünkben az /etc/sliphome/slip.hosts állomány nagyjából így épül fel: # # login helyi-cím távoli-cím maszk opc1 opc2 # (normal,compress,noicmp) # Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp A sorok végén az alábbi opciók közül egy vagy több szerepelhet: — a fejléceket nem tömörítjük — a fejlécek tömörítése — ha a távoli végpont engedi, akkor tömörítsük a fejléceket — az ICMP csomagok tiltása (így például a ping által generált csomagok is eldobódnak a sávszélesség felemésztese helyett) SLIP TCP/IP hálózatok A SLIP kapcsolathoz tartozó helyi és távoli címek megválasztása függ attól, hogy egy külön TCP/IP alhálózatot szentelünk-e neki, vagy a SLIP szerverünkön egy ARP proxy-t használunk (amely tulajdonképpen nem egy valódi ARP proxy, de ebben a szakaszban így fogunk rá hivatkozni). Ha nem vagyunk biztosak benne, hogy melyik módszert válasszuk vagy hogy miként osszuk ki az IP-címeket, akkor nézzünk utána ezekenek a SLIP használatával kapcsolatos előfeltételek között megemlített könyvekben () és/vagy konzultáljunk a hálózatunk karbantartójával. Ha a SLIP klienseknek külön alhálózatokat osztunk ki, akkor a saját IP-címünkből kell létrehoznunk és kiadnunk ezeket. Ezután valószínűleg a SLIP szerverünkön keresztül még meg kell adnunk egy statikus útvonalat legközelebbi IP útválasztó felé. Ethernet Minden más esetben az ARP proxy módszert kell alkalmaznunk, ahol a SLIP kliensek IP-címeit a SLIP szerver Ethernet alhálózatából osztjuk ki, és ennek megfelelően az /etc/sliphome/slip.login és /etc/sliphome/slip.logout szkripteket módosítanunk kell úgy, hogy az &man.arp.8; segítségével képesek legyenek a SLIP szerver ARP táblázatában kezelni a proxy ARP bejegyzéseket. A <filename>slip.login</filename> beállítása Egy átlagos /etc/sliphome/slip.login állomány körülbelül ilyen: #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # Egy általános slip vonali bejelentkezési állomány. A sliplogin ezt az alábbi # paraméterekkel hívja meg: # 1 2 3 4 5 6 7-n # slipegys. ttyseb. azonosító helyi-cím távoli-cím maszk egyéb-pmek. # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 Ez a slip.login állomány az ifconfig segítségével pusztán beállítja a megfelelő SLIP felülethez tartozó helyi, valamint távoli címet és a hálózati maszkot. Ha ehelyett azonban az ARP proxy módszerét választottuk volna (tehát a SLIP kliensekenek nem akarunk egész alhálózatokat kiutalni), akkor az /etc/sliphome/slip.login állomány eképpen alakul: #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # Egy általános slip vonali bejelentkezési állomány. A sliplogin ezt az alábbi # paraméterekkel hívja meg: # 1 2 3 4 5 6 7-n # slipegys. ttyseb. azonosító helyi-cím távoli-cím maszk egyéb-pmek. # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 # A SLIP kliensre vonatkozó ARP kéréseket a mi Ethernet címünkkel # válaszoljuk meg: /usr/sbin/arp -s $5 00:11:22:33:44:55 pub Láthatjuk, hogy az előbbi slip.login állomány egy arp -s $5 00:11:22:33:44:55 pub paranccsal egészült ki, ami a SLIP szerver ARP táblázatában hoz létre egy ARP bejegyzést. Ez az ARP bejegyzés gondoskodik róla, hogy a SLIP szerver válaszoljon a saját Ethernetes MAC-címével, amikor egy másik IP csomópont a SLIP kliens IP-címe felől érdeklődik. Ethernet MAC-cím Amikor a fenti példából indulunk ki, a benne megadott MAC-címet (00:11:22:33:44:55) feltétlenül cseréljük a rendszerünk Ethernet kártyájának MAC-címével, mert különben az ARP proxy egyáltalán nem fog működni! A SLIP szerverünk MAC-címét a netstat -i paranccsal deríthetjük ki, amelynek a kimenetében a második sor valahogy így néz ki: ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116 Ebből derül ki, hogy az adott rendszer valódi MAC-címe a 00:02:c1:28:5f:4a — az &man.arp.8; számára azonban a netstat -i kimenetében szereplő pontokat kettőspontokra kell cserélni, és a tagokat ki kell egészíteni kétkarakteres hexadecimális számokká. Az &man.arp.8; man oldalán tudhatunk meg ennek részleteiről többet. Amikor létrehozzuk az /etc/sliphome/slip.login és /etc/sliphome/slip.logout állományokat, akkor ne felejtsük el hozzájuk beállítani a végrehajtást engedélyező bitet sem (tehát ilyenkor mindig adjuk ki a chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout parancsokat is), különben a sliplogin ezeket nem tudja majd elindítani. A <filename>slip.logout</filename> beállítása Az /etc/sliphome/slip.logout állományra nincs feltétlenül szükségünk (hacsak nem egy ARP proxy-t akarunk csinálni), de ha valamiért mégis el akarjuk készíteni, akkor ehhez a következő alapvető slip.logout szkript használható: #!/bin/sh - # # slip.logout # # Egy logout állomány a slip vonalhoz. A sliplogin ezt a szkriptet a # következő paraméterekkel hívja: # 1 2 3 4 5 6 7-n # slipegys. ttyseb. login helyi-cím távoli-cím maszk opc-pmek. # /sbin/ifconfig sl$1 down Ha az ARP proxy módszert használjuk, és az /etc/sliphome/slip.logout felhasználásával akarjuk a SLIP klienshez tartozó ARP bejegyzést törölni, akkor ebből induljunk ki: #!/bin/sh - # # @(#)slip.logout # # Egy logout állomány a slip vonalhoz. A sliplogin ezt a szkriptet a # következő paraméterekkel hívja: # 1 2 3 4 5 6 7-n # slipegys. ttyseb. login helyi-cím távoli-cím maszk opc-pmek. # sbin/ifconfig sl$1 down # Ne válaszoljunk többet a SLIP kliensre vonatkozó ARP kérésekre /usr/sbin/arp -d $5 Az arp -d $5 parancs eltávolítja az ARP proxy működéséhez bejegyzést, amelyet még a slip.login szkripttel vettünk fel a SLIP kliens bejelentkezésekor. Talán felesleges ismételgetésnek tűnhet: az /etc/sliphome/slip.logout állománynak létrehozása után állítsuk be a végrehajtásra szóló bitet (vagyis adjuk ki a chmod 755 /etc/sliphome/slip.logout parancsot). Az útválasztással kapcsolatos megfontolások SLIP útválasztás Ha a hálózatunk többi része (lényegében az internet) és a SLIP klienseink között nem az ARP proxy módszerrel közvetítjük a csomagokat, akkor a legközelebbi alapértelmezett átjárókhoz minden bizonnyal fel kell vennünk statikus útvonalakat, így a SLIP kliensek alhálózatai a SLIP szerverünkön keresztül ki tudnak jutni. Statikus útvonalak statikus útvonalak A legközelebbi alapértelmezett átjárók felé nem minden esetben könnyű felvenni statikus útvonalakat (vagy egyes esetekben pedig egyenesen lehetetlen, mivel nincsenek meg hozzá a jogaink). Ha az intézményünkön belül több átjáró is megtalálható, akkor bizonyos útválasztók, például a Cisco és Proteon gyártmányúak esetében nem csak a SLIP alhálózatok felé kell beállítanunk statikus útvonalakat, hanem azt is meg kell mondanunk, hogy ezekről milyen más útválasztók is tudjanak. Pontosan emiatt a statikus útválasztás beüzemeléséhez szükségünk lesz egy kis utánajárásra és próbálgatásra. diff --git a/it_IT.ISO8859-15/books/handbook/boot/chapter.xml b/it_IT.ISO8859-15/books/handbook/boot/chapter.xml index 4e0ad5bb75..45cbc1d1c1 100644 --- a/it_IT.ISO8859-15/books/handbook/boot/chapter.xml +++ b/it_IT.ISO8859-15/books/handbook/boot/chapter.xml @@ -1,843 +1,835 @@ La Procedura di Avvio di FreeBSD Sinossi avvio avviamento Il processo di accensione di un computer e caricamento del sistema operativo viene detto processo di avviamento, o semplicemente avvio. La procedura di avvio di FreeBSD fornisce un alto grado di flessibilitŕ nel personalizzare quello che succede quando avvii il sistema, dandoti la possibilitŕ di scegliere tra diversi sistemi operativi installati sullo stesso computer, o anche tra diverse versioni dello stesso sistema operativo o tra diversi kernel installati. Questo capitolo fornisce i dettagli sulle opzioni di configurazione che puoi impostare per personalizzare il processo di avvio di FreeBSD. Ciň comprende tutto quello che avviene fino a quando il kernel viene lanciato, vengono controllate le periferiche, e viene avviato &man.init.8;. Se non sei sicuro di sapere quando tutto questo accada, si tratta del momento in cui il colore del testo a video cambia da bianco brillante a grigio. Dopo aver letto questo capitolo, saprai: Quali sono i componenti del sistema di avvio di FreeBSD, e come interagiscono. Le opzioni che puoi impostare per i componenti durante l'avviamento di FreeBSD per controllare il processo di avvio. Le basi dei &man.device.hints.5;. Solo per x86 Questo capitolo descrive la procedura di avvio di FreeBSD su sistemi Intel x86. Il Problema dell'Avvio Accendere un computer e far partire il sistema operativo pone un dilemma interessante. Per definizione, il computer non sa fare nulla finché non viene avviato il sistema operativo. Questo include anche l'esecuzione dei programmi dal disco. Dunque se il computer non puň eseguire un programma da disco senza il sistema operativo, ed i programmi del sistema operativo sono sul disco, come viene avviato il sistema operativo? Questo č un problema analogo a quello descritto nel libro Le Avventure del Barone di Munchausen. Un personaggio era caduto in una botola, e ne era uscito tirandosi su da sé (in inglese bootstrap), riuscendo nell'intento solo con i propri sforzi. Nei primi giorni dei calcolatori al meccanismo usato per caricare il sistema operativo fu applicato il termine bootstrap, ed in seguito venne abbreviato in booting (in italiano avvio). BIOS Basic Input/Output System BIOS Su sistemi con hardware x86 il BIOS (Basic Input/Output System) č il responsabile del caricamento del sistema operativo. Per fare ciň, il BIOS cerca nel disco rigido il Master Boot Record (MBR), che deve essere in una specifica posizione sul disco. Il BIOS ha abbastanza conoscenze per caricare ed eseguire l'MBR, ed assume che l'MBR possa portare avanti il resto dei compiti relativi al caricamento del sistema operativo, possibilmente con l'aiuto del BIOS. Master Boot Record (MBR) Boot Manager Boot Loader Il codice all'interno del MBR č di solito riferito come boot manager, specialmente quando interagisce con l'utente. In questo caso la maggior parte del suo codice č nella prima traccia del disco o direttamente nel file system dell'OS. (Il boot manager qualche volta viene chiamato anche boot loader, ma gli utenti di FreeBSD usano questo termine per una successiva fase di avvio.) Boot manager popolari sono boot0 (a.k.a. Boot Easy, il boot manager standard di &os;), Grub, GAG, e LILO. (Solo boot0 č all'interno del MBR.) Se hai solo un sistema operativo installato sui tuoi dischi allora sarŕ sufficiente il MBR standard del PC. Questo MBR cerca la prima slice avviabile (a.k.a. attiva) sul disco, e quindi esegue il codice in quella slice per caricare il resto del sistema operativo. Il MBR installato da &man.fdisk.8;, di default, č come un MBR. Č basato su /boot/mbr. Se hai installato piů sistemi operativi sui tuoi dischi allora puoi installare un boot manager diverso, che mostra una lista dei diversi sistemi operativi, e ti permette di scegliere quale avviare. Nella prossima sezione ne vengono presentati due. Il resto del sistema di avvio di FreeBSD č diviso in tre stadi. Il primo stadio viene eseguito dall'MBR, che sa solo il necessario per mettere il computer in un certo stato ed eseguire il secondo stadio. Quest'ultimo puň fare poco di piů, prima di eseguire il terzo. Il terzo stadio esaurisce il compito di caricare il sistema operativo. Il lavoro č diviso in queste tre parti perché gli standard dei PC pongono dei limiti alla dimensione dei programmi che possono essere eseguiti nei primi due stadi. Concatenando i compiti si permette a FreeBSD di fornire un loader piů flessibile. kernel init A questo punto viene avviato il kernel ed esso comincia a verificare i dispositivi e ad inizializzarli. Una volta che la procedura di avvio del kernel č finita, il kernel passa il controllo al processo utente &man.init.8;, che si assicura che i dischi siano in uno stato usabile. Poi &man.init.8; avvia la configurazione delle risorse a livello utente che monta i file system, imposta le schede di rete per comunicare via rete, ed in generale fa partire tutti i processi che generalmente sono in esecuzione su un sistema FreeBSD all'avvio. Il Boot Manager e le Fasi di Boot Boot Manager Il Boot Manager Master Boot Record (MBR) Il codice nel MBR o nel boot manager č solitamente riferito alla fase zero del processo di boot. Questa sezione discute dei due boot manager menzionati in precedenza: boot0 e LILO. Il Boot Manager <application>boot0</application>: Il MBR installato dall'installer di FreeBSD o da &man.boot0cfg.8;, di default, si basa su /boot/boot0. (Il programma boot0 č molto semplice, poichč il programma nel MBR puň essere al piů di 446 byte a causa della tabella della slice e dell'identificatore 0x55AA alla fine del MBR.) Se hai installato boot0 e hai piů di un sistema operativo sui tuoi dischi, allora vedrai una schermata simile alla seguente nella fase di avvio: Screenshot di <filename>boot0</filename> F1 DOS F2 FreeBSD F3 Linux F4 ?? F5 Drive 1 Default: F2 Altri sistemi operativi, in particolare &windows;, sono noti per l'abitudine di sovrascrivere l'MBR esistente con il proprio. Se accade questo, o se vuoi rimpiazzare l'MBR pre-esistente con quello di FreeBSD puoi usare il seguente comando: &prompt.root; fdisk -B -b /boot/boot0 dispositivo dove dispositivo č il dispositivo dal quale vuoi avviare, come ad0 per il primo disco IDE, ad2 per il primo disco ide sul secondo canale, da0 per il primo disco SCSI, e cosě via. Se vuoi una configurazione ad hoc dell'MBR, usa &man.boot0cfg.8;. Il Boot Manager LILO: Per installare questo boot manager affinchč possa avviare anche FreeBSD, avvia Linux e aggiungi le seguenti cose nel tuo file di configurazione /etc/lilo.conf: other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD Specifica la partizione primaria di FreeBSD e il disco usando le direttive di Linux, rimpiazzando X con la lettera del dispositivo di Linux e Y con il numero della partizione primaria di Linux. Se stai usando un dispositivo SCSI, devi modificare /dev/hd in qualcosa simile a /dev/sd. La linea puň essere omessa se hai entrambi i sistemi operativi sullo stesso disco. Esegui /sbin/lilo -v per apportare le modifiche al sistema; verificando il relativo messaggio a video. Stadio Uno, <filename>/boot/boot1</filename>, e Stadio Due, <filename>/boot/boot2</filename> Concettualmente il primo ed il secondo stadio sono parte dello stesso programma, sulla stessa area del disco. Per limitazioni di spazio sono stati divisi in due, ma li installerai sempre insieme. Sono copiati dal file /boot/boot dall'installer o da bsdlabel (vedi sotto). Questi sono posizionati fuori dai file system, nella prima traccia della slice di boot, a partire dal primo settore. Questo č il posto dove boot0, o qualsiasi altro boot manager, si aspetta di trovare un programma da avviare per continuare il processo di boot. Il numero di settori usati č facilmente determinabile dalla dimensione di /boot/boot. boot1 č molto semplice, poiché puň essere lungo solo 512 byte, e conosce solo lo stretto necessario del bsdlabel di FreeBSD, il quale memorizza le informazioni sulle slice, per trovare ed eseguire boot2. boot2 č leggermente piů sofisticato, e conosce il file system di FreeBSD abbastanza da potervi trovare dei file, e puň fornire una semplice interfaccia per scegliere quale kernel o loader eseguire. Poiché il loader č molto piů complesso, e fornisce una gradevole interfaccia di facile utilizzo alla configurazione di avvio, boot2 in genere lo esegue, ma in precedenza era incaricato di lanciare il kernel direttamente. Screenshot di <filename>boot2</filename> >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader boot: Se mai avrai bisogno di rimpiazzare il boot1 ed il boot2 installati, usa &man.bsdlabel.8;: &prompt.root; bsdlabel -B discoslice dove discoslice sono il disco e la slice dal quale vuoi effettuare l'avvio, come ad esempio ad0s1 per la prima slice sul primo disco IDE. Modalitŕ Pericolosamente Dedicata Se nella sintassi del comando &man.bsdlabel.8; usi solo il nome del disco, come ad0, creerai un disco pericolosamente dedicato, senza slice. Quasi sicuramente non č questo quello che vuoi fare, quindi controlla due volte il comando &man.bsdlabel.8; prima di premere Invio. Stadio Tre, <filename>/boot/loader</filename> boot-loader Il loader č l'ultimo stadio della procedura di avvio divisa in tre, e si trova sul file system, generalmente come /boot/loader. Il loader deve essere inteso come un metodo user-friendly per la configurazione di avvio, tramite l'uso di un insieme di comandi integrati facili da usare, sostenuto da un potente interprete, con un insieme di comandi piů complessi. Sequenza di Operazioni del Loader Durante l'inizializzazione, il loader controllerŕ la console e i dischi, e cercherŕ di capire da quale disco si stia avviando. Imposterŕ le variabili di conseguenza, ed avvierŕ un interprete al quale potranno essere passati i comandi dell'utente in maniera interattiva o attraverso uno script. loader configurazione del loader Poi il loader leggerŕ /boot/loader.rc, che di default legge i settaggi di /boot/defaults/loader.conf il quale imposta dei valori di default ragionevoli per le variabili e inoltre /boot/loader.rc legge /boot/loader.conf per i cambiamenti locali a quelle variabili. In base a queste variabili loader.rc carica i moduli ed il kernel prescelti. Infine, di default, il loader attende per 10 secondi la pressione di un tasto, ed avvia il kernel se non viene interrotto. Se invece viene interrotto, viene presentato all'utente un prompt in grado di comprendere un semplice insieme di comandi, dal quale l'utente puň impostare precisamente le variabili, scaricare dalla memoria tutti i moduli, o caricarli, ed infine avviare o ri-avviare. Comandi Integrati nel Loader Questi sono i comandi usati piů comunemente. Per una discussione completa su tutti i comandi disponibili, guarda &man.loader.8;. autoboot secondi Procede all'avvio del kernel se non viene interrotto nell'intervallo di tempo specificato, in secondi. Mostra un conto alla rovescia, e l'intervallo predefinito č di 10 secondi. boot -opzioni nomekernel Procede immediatamente all'avvio del kernel, con le opzioni date, se ce ne sono, e con il nome del kernel specificato, se fornito. boot-conf Va avanti con la stessa configurazione automatica di moduli basati sulle variabili come accade al boot. Questo ha senso solo se prima usi unload, e cambi delle variabili, in generale kernel. help argomento Mostra un messaggio d'aiuto letto da /boot/loader.help. Se l'argomento dato č index, allora elenca tutti gli argomenti disponibili. include nomefile Processa il file specificato. Il file viene letto, e interpretato riga per riga. Un errore blocca il comando include immediatamente. load tipo nomefile Carica il kernel, il modulo del kernel, o il file del tipo specificato, con il nome specificato. Ogni argomento dopo nomefile viene passato al file. ls percorso Mostra un elenco dei file nel percorso dato, o nella directory root, se non ne viene specificato uno. Se č specificato , verranno mostrate anche le dimensioni dei file. lsdev Elenca tutti i dispositivi dai quali potrebbe essere possibile caricare moduli. Se viene specificata l'opzione , verranno stampati dettagli maggiori. lsmod Mostra i moduli caricati. Se viene specificato , verranno stampati dettagli maggiori. more nomefile Mostra i file specificati, con una pausa ad ogni pagina visualizzata. reboot Riavvia immediatamente il sistema. set variabile set variabile=valore Imposta le variabili di ambiente del loader. unload Rimuove tutti i moduli caricati. Esempi sul Loader Qui ci sono alcuni esempi pratici sull'uso del loader: - - modalitŕ singolo utente - - Per avviare semplicemente il vostro kernel abituale, - ma in modalitŕ singolo utente: + ma in modalitŕ singolo utente:modalitŕ singolo utente boot -s Per scaricare dalla memoria i moduli e il kernel usuali, e poi caricare solo il vecchio (o un altro) kernel: - - kernel.old - - unload load kernel.old Puoi usare kernel.GENERIC per riferirti al kernel generico che viene fornito nel disco d'installazione, o - kernel.old per riferirti al kernel installato + kernel.oldkernel.old per riferirti al kernel installato precedentemente (quando hai aggiornato o configurato il kernel, ad esempio). Usa il comando seguente per caricare i tuoi soliti moduli con un altro kernel: unload set kernel="kernel.old" boot-conf Per caricare uno script di configurazione del kernel (uno script automatizzato che faccia le cose che faresti tu normalmente configurando il kernel all'avvio): load -t userconfig_script /boot/kernel.conf Interazione con il Kernel Durante l'Avvio kernel interazione all'avvio Una volta che il kernel č stato caricato dal loader (come di consueto) o da boot2 (scavalcando il loader), esso esamina i suoi flag di avvio, se ce ne sono, e aggiusta il suo comportamento come necessario. I Flag di Avvio del Kernel kernel flag di boot Qui ci sono alcuni dei piů comuni flag di avvio: durante l'inizializzazione del kernel, chiede il dispositivo da montare come file system di root. avvia da CDROM. esegue UserConfig, il programma di configurazione del kernel all'avvio avvia in modalitŕ singolo utente aumenta la verbositŕ durante l'avvio del kernel Ci sono altri flag di avvio, leggi &man.boot.8; per maggiori informazioni su di essi. Tom Rhodes Contributo di Device Hints device.hints Questa č una caratteristica di FreeBSD 5.0 e successive che non esiste nelle versioni precedenti. Durante l'avvio iniziale del sistema, il boot &man.loader.8; leggerŕ il file &man.device.hints.5;. Questo file contiene informazioni di avvio per il kernel dette variabili, e talvolta indicate come device hints, suggerimenti per i dispositivi. Questi device hints vengono usati dai driver per la configurazione delle varie periferiche. I device hints possono essere specificati anche nel prompt del terzo stadio del boot loader. Le variabili possono essere aggiunte usando il comando set, rimosse con unset, e visualizzate con show. Inoltre, in questo modo, le variabili impostate nel file /boot/device.hints possono essere scavalcate. I device hint inseriti in questo modo non sono permanenti e verranno dimenticati al riavvio seguente. Una volta che il sistema č stato avviato, puň essere usato il comando &man.kenv.1; per mostrare tutte le variabili. La sintassi per il file /boot/device.hints č una variabile per riga, usando il solito cancelletto # per indicare i commenti. Le linee sono costruite come segue: hint.driver.unit.keyword="valore" La sintassi nel terzo stadio del boot loader č: set hint.driver.unit.keyword=valore driver č il nome del driver per il dispositivo, unit č il numero di unitŕ per quel driver, e keyword č la parola chiave per quell'hint. La parola chiave puň essere: at: specifica il bus sul quale č collegato il dispositivo. port: specifica l'indirizzo iniziale di I/O che deve essere usato. irq: specifica il numero di interrupt request che deve essere usato. drq: specifica il numero del canale DMA. maddr: specifica l'indirizzo di memoria fisico occupato dal dispositivo. flags: imposta vari bit di flag per il dispositivo. disabled: se impostato a 1 il dispositivo č disabilitato. I driver possono accettare (o richiedere) piů hints di quelli elencati qui, si raccomanda quindi di verificare la loro pagina di manuale. Per maggiori informazioni, consulta le pagine man &man.device.hints.5;, &man.kenv.1;, &man.loader.conf.5;, e &man.loader.8;. Init: Inizializzazione del Controllo dei Processi init Una volta che il kernel ha finito di avviarsi, trasferisce il controllo al processo utente init, che si trova in /sbin/init, o al programma specificato nella variabile init_path nel loader. Sequenza di Riavvio Automatica La sequenza di riavvio automatica assicura che i file system disponibili sul sistema siano consistenti. Se qualcuno non lo č, e &man.fsck.8; non puň risolvere le inconsistenze, &man.init.8; abbandona il sistema in modalitŕ singolo utente per permettere all'amministratore di sistema di occuparsi dei problemi direttamente. Modalitŕ Singolo Utente modalitŕ singolo utente console Questa modalitŕ puň essere raggiunta attraverso la sequenza di riavvio automatica, o tramite l'avvio da parte dell'utente con l'opzione o impostando la variabile boot_single nel loader. Si puň arrivare ad essa anche richiamando &man.shutdown.8; senza l'opzione per il riavvio () o per l'arresto (), dalla modalitŕ multi utente. Se la console del sistema č settata come insecure in /etc/ttys, allora il sistema richiede la password di root prima di entrare in modalitŕ singolo utente. Una Console Insicura in <filename>/etc/ttys</filename> # name getty type status comments # # Se la console č settata come "insecure", allora init chiederŕ # la password di root per andare in modalitŕ singolo utente . console none unknown off insecure Avere una console insecure significa ritenere insicura la sicurezza fisica della console, ed assicurarsi che solo chi conosce la password di root possa usare la modalitŕ singolo utente, non significa voler eseguire la console in maniera insicura. Dunque, se vuoi avere sicurezza, scegli insecure, non secure. Modalitŕ Multi Utente modalitŕ multi utente Se &man.init.8; ritiene che i tuoi file system siano in ordine, o quando l'utente ha terminato il lavoro in modalitŕ singolo utente, il sistema entra in modalitŕ multi utente, nella quale inizia la configurazione delle risorse del sistema. Configurazione delle Risorse (rc) file rc Il sistema di configurazione delle risorse legge i valori predefiniti della configurazione da /etc/defaults/rc.conf, e i dettagli specifici del sistema da /etc/rc.conf, e poi procede al montaggio dei file system del sistema elencati in /etc/fstab, avvia i servizi di rete, avvia vari demoni di sistema, ed infine esegue gli script di avvio dei pacchetti installati localmente. La pagina man di &man.rc.8; č un buon riferimento per la configurazione delle risorse del sistema, poiché esamina gli script stessi. Sequenza di Spegnimento spegnimento Al momento di uno spegnimento controllato, tramite &man.shutdown.8;, &man.init.8; cercherŕ di eseguire lo script /etc/rc.shutdown, e poi procederŕ ad inviare a tutti i processi il segnale TERM, e successivamente il segnale KILL a quelli che non sono terminati in tempo. Per spegnere una macchina FreeBSD su architetture e sistemi che supportano la gestione dell'energia, usa semplicemente il comando shutdown -p now per disattivare immediatamente l'alimentazione. Per riavviare semplicemente un sistema FreeBSD, usa solo shutdown -r now. Avrai bisogno di essere root o un membro del gruppo operator per eseguire &man.shutdown.8;. Possono essere usati anche i comandi &man.halt.8; e &man.reboot.8;, fai riferimento alle loro pagine di man ed a quella di &man.shutdown.8; per maggiori informazioni. La gestione dell'energia richiede il supporto &man.acpi.4; nel kernel o caricato come modulo. diff --git a/it_IT.ISO8859-15/books/handbook/mail/chapter.xml b/it_IT.ISO8859-15/books/handbook/mail/chapter.xml index b64a9580fd..53cf627174 100644 --- a/it_IT.ISO8859-15/books/handbook/mail/chapter.xml +++ b/it_IT.ISO8859-15/books/handbook/mail/chapter.xml @@ -1,2372 +1,2370 @@ Bill Lloyd Lavoro originale di Jim Mock Rielaborato da Posta Elettronica Sinossi email La Posta Elettronica, meglio conosciuta come email, č una delle forme di comunicazione maggiormente utilizzate tutt'oggi. Questo capitolo fornisce un'introduzione di base per eseguire un server di posta su &os;, come pure un'introduzione per inviare e ricevere la posta elettronica usando &os;; comunque, questo non č un riferimento completo e infatti molte considerazioni importanti sono omesse. Per coprire questo argomento in modo piů completo, si rimanda il lettore alla moltitudine di eccellenti libri elencati nell'. Dopo aver letto questo capitolo, saprai: Quali componenti software vengono coinvolti nell'invio e nella ricezione della posta elettronica. Dove sono collocati in FreeBSD i file di configurazione fondamentali di sendmail. Le differenze tra casella di posta remota e locale. Come impedire agli spammer di usare illegalmente il tuo server di posta come un relay. Come installare e configurare un mail transfer agent alternativo sul tuo sistema, sostituendo sendmail. Come risolvere i problemi piů frequenti legati al server di posta. Come usare SMTP con UCCP. Come configurare il sistema solo per inviare la posta. Come usare la posta con una connessione dialup. Come configurare l'Autenticazione SMTP per aumentare la sicurezza. Come installare e usare un Mail User Agent (MUA), come mutt per inviare e ricevere la posta. Come scaricare la tua posta da un server remoto POP o IMAP. Come applicare in modo automatico filtri e regole sulla posta in entrata. Prima di leggere questo capitolo, dovresti: Aver configurato correttamente la tua connessione di rete (). Aver configurato correttamente le informazioni DNS relative alla tua macchina server di posta (). Sapere come installare software aggiuntivo di terze parti (). Utilizzo della Posta Elettronica POP IMAP DNS Ci sono cinque parti principali impegnate in uno scambio di email. Queste sono: il programma client, quello server, il DNS, una casella di posta remota o locale, e naturalmente la macchina server di posta. Il Programma Client Questo include programmi a riga di comando quali mutt, pine, elm, e mail, e programmi con un'interfaccia grafica (GUI) quali balsa, xfmail per citarne alcuni, e qualcosa di piů raffinato simile a un browser WWW. Questi programmi semplicemente fanno passare le transazioni email alla macchina server di posta locale, chiamando uno dei programmi server disponibili o inoltrando queste transazioni via TCP. Il Programma Server server di posta sendmail server di posta postfix server di posta qmail server di posta exim &os; incorpora di default sendmail, ma supporta anche altri programmi server di posta elettronica, alcuni dei quali sono: exim; postfix; qmail. Di solito il programma server svolge due funzioni—si occupa di ricevere la posta in arrivo e di consegnare quella in partenza. Questo programma non permette di prelevare la posta usando protocolli come POP o IMAP, ne tanto meno di collegarsi alle caselle di posta locali mbox o di tipo Maildir. Per far questo hai bisogno di un altro demone. Vecchie versioni di sendmail contengono alcuni seri problemi di sicurezza che possono dare la possibilitŕ ad un attaccante di guadagnarsi un accesso locale e/o remote sulla tua macchina. Assicurati di eseguire una versione aggiornata per evitare questi problemi. In alternativa, installa un altro MTA dalla &os; Ports Collection. Email e DNS Il DNS (Domain Name System) e il suo demone named giocano un ruolo fondamentale nella consegna della posta. Per consegnare la posta dal tuo host a un altro, il programma server cercherŕ l'host remoto nel DNS per determinare la macchina server che riceverŕ la posta per il destinatario. Lo stesso processo avviene quando un host remoto invia dei messaggi di posta alla tua macchina server di posta. record MX Il DNS č responsabile della corrispondenza tra nomi host ed indirizzi IP, e memorizza anche informazioni specifiche per la consegna della posta, informazioni conosciute come record MX. Il record MX (Mail eXchanger) specifica quale/i host dovranno ricevere la posta per un particolare dominio. Se non hai un record MX per il tuo nome host o per il tuo dominio, la posta sarŕ consegnata direttamente al tuo host a condizione di avere un record A che mappa il tuo nome host al tuo indirizzo IP. Puoi vedere i record MX per un dominio usando il comando &man.host.1;, come mostrato nel seguente esempio: &prompt.user; host -t mx FreeBSD.org FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org Ricezione della Posta email ricezione La ricezione della posta per il tuo dominio viene gestita dalla macchina server di posta. Questa raccoglierŕ la posta indirizzata al tuo dominio e la salverŕ nel formato mbox (metodo per la memorizzazione della posta di default) o Maildir, a seconda delle tua configurazione. Una volta memorizzata, la posta puň essere sia letta in modo locale usando applicazioni come &man.mail.1; o mutt, sia prelevata in modo remoto usando protocolli come POP e IMAP. Ciň significa che se vuoi solo leggere la posta localmente, non hai bisogno di installare un server POP o IMAP. Accedere a caselle di posta remote usando <acronym>POP</acronym> o <acronym>IMAP</acronym> POP IMAP Per accedere a caselle di posta in modo remoto, devi avere l'accesso a un server POP o IMAP. Questi protocolli permettono agli utenti di collegarsi con facilitŕ alle loro caselle di posta da locazioni remote. Benchč sia POP che IMAP permettono agli utenti di accedere alle caselle di posta in modo remoto, IMAP offre alcuni vantaggi, alcuni dei quali sono: IMAP puň memorizzare e prelevare i messaggi di posta su un server remoto. IMAP supporta aggiornamenti simultanei. IMAP puň essere estremamente utile con connessioni lente poichč permette agli utenti di prelevare la struttura dei messaggi senza scaricarli completamente; puň inoltre realizzare compiti come la ricerca su un server al fine di minimizzare il trasferimento dei dati tra client e server. Per installare un server POP o IMAP, devi seguire i seguenti passi: Scegli un server IMAP o POP che meglio soddisfa le tue necessitŕ. I seguenti server POP e IMAP sono ben noti e si prestano come degli ottimi esempi: qpopper; teapop; imap-uw; courier-imap; Installa il demone POP o IMAP di tua scelta dalla collezione dei port. Se necessario, modifica il file /etc/inetd.conf per avviare il server POP o IMAP. Nota che sia POP che IMAP trasmettono informazioni, inclusi il nome utente e la password in chiaro. Ciň significa che se vuoi mettere al sicuro la trasmissione di informazioni su questi protocolli, potresti considerare di effettuare tunnel di sessioni con &man.ssh.1;. La creazione di tunnel di sessioni č descritta nella . Accesso alle caselle di posta locali Si puň accedere localmente alla casella di posta utilizzando un MUA sul server nel quale risiede la casella di posta. Questo puň essere fatto usando applicazioni come mutt o &man.mail.1;. La Macchina Server di Posta macchina server di posta La macchina server di posta č il nome del server che č responsabile della consegna e del ricevimento della posta per il tuo host, ed eventualmente per la tua rete. Christopher Shumway Contributo di Configurazione di <application>sendmail</application> sendmail &man.sendmail.8; č il Mail Transfer Agent (MTA) di default su FreeBSD. Il compito di sendmail č di accettare posta dai Mail User Agent (MUA), e consegnarla al server di posta appropriato come definito nel suo file di configurazione. Inoltre sendmail puň accettare connessioni via rete e consegnare i messaggi a caselle di posta locali o ad un altro programma. sendmail utilizza i seguenti file di configurazione: /etc/mail/access /etc/mail/aliases /etc/mail/local-host-names /etc/mail/mailer.conf /etc/mail/mailertable /etc/mail/sendmail.cf /etc/mail/virtusertable File Funzione /etc/mail/access File database di accesso di sendmail /etc/mail/aliases Alias delle caselle di posta /etc/mail/local-host-names Lista di host per i quali sendmail accetta posta /etc/mail/mailer.conf File di configurazione del programma di posta /etc/mail/mailertable Tabella di consegna del programma di posta /etc/mail/sendmail.cf File di configurazione principale di sendmail /etc/mail/virtusertable Tabelle degli utenti e dei domini virtuali <filename>/etc/mail/access</filename> Il database di accesso definisce quali host o indirizzi IP hanno accesso al server di posta locale e quale tipo di accesso hanno. Gli host possono essere catalogati come , , o possono semplicemente essere passati alla procedura di gestione degli errori di sendmail con un preciso errore. Gli host che sono definiti , che č il valore di default, possono spedire posta a questo host sempre che la destinazione finale della posta sia la macchina locale. Gli host che sono definiti vengono rifiutati per qualsiasi connessione di posta. Gli host che hanno l'opzione per i loro nomi host possono utilizzare questo server per spedire posta verso qualsiasi destinazione. Configurazione del Database di Accesso di <application>sendmail</application> cyberspammer.com 550 Non accettiamo posta dagli spammer FREE.STEALTH.MAILER@ 550 Non accettiamo posta dagli spammer altra.sorgente.di.spam REJECT okay.cyberspammer.com OK 128.32 RELAY In questo esempio abbiamo cinque elementi. Gli host mittenti che corrispondono a quelli posti sul lato sinistro della tabella sono condizionati dall'azione posta sul lato destro della tabella. I primi due esempi passano un codice di errore alla procedura di sendmail che gestisce gli errori. Il messaggio viene restituito all'host remoto quando viene trovata una corrispondenza sul lato sinistro della tabella. Il terzo esempio rifiuta la posta da un host specifico su Internet, altra.sorgente.di.spam. Il quarto esempio accetta connessioni di posta da un host, okay.cyberspammer.com, che č piů preciso rispetto a cyberspammer.com della prima linea. Le corrispondenze piů precise sovrascrivono quelle meno precise. L'ultimo esempio permette il relay della posta elettronica agli host che hanno un indirizzo IP che inizia con 128.32. Questi host possono spedire messaggi destinati ad altri server di posta attraverso questo server. Quando modifichi questo file, devi eseguire make in /etc/mail/ per aggiornare il database. <filename>/etc/mail/aliases</filename> Il database degli alias contiene una lista di caselle di posta virtuali che sono espanse in altri utenti, file, programmi o in altri alias. Seguono alcuni esempi che possono essere usati in /etc/mail/aliases: Alias di Posta root: utentelocale ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" Il formato del file č semplice: il nome della casella di posta che si trova a sinistra dei due punti viene espanso negli elementi posti a destra dei due punti. Il primo esempio semplicemente espande la casella di posta root nella casella di posta utentelocale, che č di nuovo ricercata nel database degli alias. Se non viene trovata, allora il messaggio viene consegnato all'utente locale utentelocale. L'esempio successivo mostra una mailing list. La posta indirizzata alla casella di posta ftp-bugs viene espansa nelle tre caselle di posta locali joe, eric, e paul. Nota che una casella di posta remota puň essere specificata come user@example.com. Il terzo esempio mostra come scrivere la posta su un file, in questo caso /dev/null. L'ultimo esempio mostra come mandare la posta a un programma, in questo caso il messaggio di posta diventa lo standard input di /usr/local/bin/procmail tramite una pipe &unix;. Quando modifichi questo file, devi eseguire make in /etc/mail/ per aggiornare il database. <filename>/etc/mail/local-host-names</filename> Questo file č una lista di nomi host che &man.sendmail.8; accetta come se fossero l'host locale. Metti i domini o gli host per i quali sendmail deve ricevere posta. Per esempio, se questo server di posta dovesse essere in grado di accettare posta per il dominio example.com e per l'host mail.example.com, il suo local-host-names potrebbe assomigliare a questo: example.com mail.example.com Quando modifichi questo file, devi riavviare &man.sendmail.8; per attivare i cambiamenti. <filename>/etc/mail/sendmail.cf</filename> Il file di configurazione principale di sendmail, sendmail.cf controlla l'intero comportamento di sendmail, inclusa ogni cosa, dalla rielaborazione degli indirizzi e-mail alla stampa del messaggio di rifiuto per i server di posta remoti. Naturalmente, avendo svariati compiti, questo file di configurazione č alquanto complesso e i suoi dettagli vanno oltre lo scopo di questa sezione. Fortunatamente, questo file necessita raramente di essere modificato per server di posta standard. Il file di configurazione principale di sendmail puň essere costruito a partire da macro &man.m4.1; che definiscono le caratteristiche e il comportamento di sendmail. Guarda /usr/src/contrib/sendmail/cf/README per ulteriori dettagli. Quando modifichi questo file, devi riavviare &man.sendmail.8; per attivare i cambiamenti. <filename>/etc/mail/virtusertable</filename> Il file virtusertable mappa indirizzi di posta relativi a domini e caselle di posta virtuali in caselle di posta reali. Queste caselle di posta possono essere locali, remote, alias definiti in /etc/mail/aliases o file. Esempio di Mappatura per la Posta di un Dominio Virtuale root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe Nell'esempio precedente, abbiamo una mappatura per il dominio example.com. Questo file viene processato dall'alto verso il basso fermandosi alla prima corrispondenza trovata. Il primo elemento mappa root@example.com nella casella di posta locale root. Il secondo elemento mappa postmaster@example.com nella casella di posta postmaster sull'host noc.example.net. Infine, se non sono state trovate corrispondenze per example.com fino a questo punto, verrŕ verificata l'ultima mappatura, che corrisponde a tutti gli altri messaggi di posta indirizzati a qualche utente di example.com. Questo verrŕ mappato nella casella di posta locale joe. Andrew Boothman Scritto da Gregory Neil Shapiro Informazioni prese da e-mail scritte da Sostituzione del proprio Mail Transfer Agent email cambiare mta Come giŕ menzionato, l'MTA (Mail Transfer Agent, agente di trasferimento della posta elettronica) installato di default su FreeBSD č sendmail. Di conseguenza sendmail č responsabile della tua posta in partenza e di quella in arrivo. Comunque, per vari motivi, alcuni amministratori necessitano di cambiare l'MTA dei loro sistemi. Questi motivi spaziano dal voler semplicemente provare un altro MTA all'aver bisogno di una caratteristica o di un pacchetto specifico ritrovabile in un altro MTA. Fortunatamente, per qualsiasi motivo, FreeBSD semplifica il processo di sostituzione. Installazione di un nuovo MTA Hai un'ampia scelta di MTA utilizzabili. Un buon punto di partenza č la FreeBSD Ports Collection dove puoi trovarne molti. Naturalmente sei libero di usare qualunque MTA proveniente da qualche sito, a condizione che tu riesca ad eseguirlo sotto FreeBSD. Inizia installando il tuo nuovo MTA. Una volta installato devi valutare se realmente soddisfa le tue necessitŕ, inoltre devi avere la possibilitŕ di configurare il tuo nuovo programma prima che subentri a sendmail. Valutato questo, devi essere sicuro che durante l'installazione del nuovo programma non ci siano stati tentativi di sovrascrivere binari di sistema come /usr/bin/sendmail. Altrimenti, il tuo nuovo programma di posta č stato essenzialmente messo in attivitŕ prima che tu l'abbia configurato. Per cortesia fai riferimento alla documentazione dell'MTA che hai scelto per informazioni su come configurarlo. Disabilitazione di <application>sendmail</application> La procedura usata per avviare sendmail cambia significativamente tra la 4.5-RELEASE e la 4.6-RELEASE. Di conseguenza, la procedura usata per disabilitarlo č leggermente differente a seconda della versione di FreeBSD utilizzata. Se disabiliti il servizio di consegna della posta di sendmail in questo modo, č importante che questo venga rimpiazzato con un altro sistema di consegna della posta. Se non lo farai, le funzioni di sistema come &man.periodic.8; saranno incapaci di inviare i loro risultati tramite e-mail come normalmente prevedono di fare. Molte parti del tuo sistema potrebbero presupporre di avere un sistema funzionante compatibile con sendmail. Se le applicazioni continuano a usare i binari di sendmail per tentare di spedire e-mail dopo che tu l'hai disabilitato, la posta potrebbe finire in una coda inattiva di sendmail, senza che venga mai consegnata. FreeBSD 4.5-STABLE prima del 4/4/2002 e precedenti (inclusa 4.5-RELEASE e precedenti) Metti: sendmail_enable="NO" in /etc/rc.conf. In questo modo si disabiliterŕ il servizio di ricezione della posta di sendmail, ma se /etc/mail/mailer.conf (vedi sotto) non viene modificato, sendmail verrŕ ancora usato per spedire e-mail. FreeBSD 4.5-STABLE dopo il 4/4/2002 (inclusa 4.6-RELEASE e successive) Per disabilitare completamente sendmail, incluso il servizio della posta in uscita, devi mettere sendmail_enable="NONE" in /etc/rc.conf. Se vuoi solamente disabilitare il servizio di ricezione della posta di sendmail, devi mettere sendmail_enable="NO" in /etc/rc.conf. Comunque, se la ricezione della posta č disabilitata, la consegna locale funzionerŕ ancora. Maggiori informazioni sulle opzioni di avvio di sendmail sono disponibili nella pagina man di &man.rc.sendmail.8;. FreeBSD 5.0-STABLE e Successive Per disabilitare completamente sendmail, servizi di posta in ingresso e in uscita inclusi, devi usare sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" in /etc/rc.conf. Se vuoi solamente disabilitare il servizio di ricezione della posta di sendmail, devi mettere sendmail_enable="NO" in /etc/rc.conf. Molte informazioni sulle opzioni di avvio di sendmail sono disponibili nella pagina man di &man.rc.sendmail.8;. Esecuzione del nuovo MTA all'avvio Hai due possibili metodi per eseguire il tuo nuovo MTA all'avvio, a seconda della versione di FreeBSD utilizzata. FreeBSD 4.5-STABLE prima del 11/4/2002 (inclusa 4.5-RELEASE e precedenti) Posiziona uno script in /usr/local/etc/rc.d/ con estensione .sh ed eseguibile da root. Lo script deve accettare i parametri start e stop. Nella fase di avvio di FreeBSD gli script di sistema eseguiranno il comando /usr/local/etc/rc.d/supermailer.sh start che puoi anche usare per avviare manualmente il server. Nella fase di chiusura di FreeBSD, gli script di sistema useranno l'opzione stop, eseguendo il comando /usr/local/etc/rc.d/supermailer.sh stop che puoi anche usare per arrestare manualmente il server mentre il sistema č in funzione. FreeBSD 4.5-STABLE dopo il 11/4/2002 (inclusa 4.6-RELEASE e successive) Con le versioni recenti di FreeBSD, puoi usare il metodo precedente oppure puoi mettere mta_start_script="nomefile" in /etc/rc.conf, dove nomefile č il nome dello script che vuoi eseguire all'avvio per avviare il tuo MTA. Sostituzione di <application>sendmail</application> come programma di posta di default del sistema sendmail č cosě onnipresente come programma standard su sistemi &unix; che alcuni programmi lo suppongono giŕ installato e configurato. Per questa ragione, molti degli altri MTA forniscono la loro compatibile implementazione dell'interfaccia a riga di comando di sendmail; questo agevola il loro utilizzo come sostituti drop-in di sendmail. Quindi, se usi un altro programma di posta, dovrai assicurarti che i programmi che tentano di eseguire i binari standard di sendmail come /usr/bin/sendmail in realtŕ eseguano il programma di posta da te scelto. Fortunatamente, FreeBSD fornisce un meccanismo chiamato &man.mailwrapper.8; che fa questo lavoro per te. Quando sendmail č operativo, dovresti vedere in /etc/mail/mailer.conf qualcosa di simile a questo: sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail Questo significa che quando uno di questi comandi (come sendmail stesso) viene eseguito, in realtŕ il sistema invoca una copia di mailwrapper di nome sendmail, la quale esamina mailer.conf ed esegue /usr/libexec/sendmail/sendmail. Questo meccanismo facilita la sostituzione dei binari che sono realmente eseguiti quando vengono invocate queste funzioni di default di sendmail. Quindi se vuoi che /usr/local/supermailer/bin/sendmail-compat sia eseguito al posto di sendmail, devi modificare /etc/mail/mailer.conf in questo modo: sendmail /usr/local/supermailer/bin/sendmail-compat send-mail /usr/local/supermailer/bin/sendmail-compat mailq /usr/local/supermailer/bin/mailq-compat newaliases /usr/local/supermailer/bin/newaliases-compat hoststat /usr/local/supermailer/bin/hoststat-compat purgestat /usr/local/supermailer/bin/purgestat-compat Conclusione Una volta che hai configurato ogni cosa a tuo piacimento, devi terminare i processi di sendmail di cui non hai piů bisogno e avviare i processi appartenenti al tuo nuovo programma, oppure puoi semplicemente riavviare il sistema. Riavviando il sistema avrai la possibilitŕ di verificare se il sistema sia stato configurato correttamente per eseguire il tuo nuovo MTA in modo automatico all'avvio. Risoluzione dei Problemi email risoluzione dei problemi Perché devo usare nomi di dominio completi (FQDN) per gli host del mio dominio? Probabilmente ti accorgerai che l'host č effettivamente in un dominio differente; per esempio, se sei in foo.bar.edu e desideri raggiungere un host chiamato mumble appartenente al dominio bar.edu, dovrai riferirti a questo tramite un nome di dominio completo, mumble.bar.edu, invece del solo mumble. Tradizionalmente, questo era permesso dai resolver BINDBIND di BSD. Tuttavia la versione corrente di BIND equipaggiata con FreeBSD non prevede piů l'abbreviazione di default per nomi di dominio non completi all'infuori del dominio in cui sei. Quindi l'host mumble sarŕ giudicato come mumble.foo.bar.edu, oppure sarŕ ricercato per il dominio radice. Questo differisce dal comportamento precedente, dove la ricerca continuava attraverso mumble.bar.edu, e mumble.edu. Dai un'occhiata all'RFC 1535 per i motivi per cui questa sia considerata una cattiva pratica, o persino un buco di sicurezza. Come buona soluzione al problema, puoi mettere la linea: search foo.bar.edu bar.edu al posto della precedente: domain foo.bar.edu nel tuo /etc/resolv.conf. Comunque, assicurati che l'ordine di ricerca non oltrepassi il confine tra amministrazione locale e pubblica, come definito nell'RFC 1535. sendmail riporta l'errore mail loops back to myself La risposta č contenuta nelle FAQ di sendmail come segue: Ottengo messaggi di errore, come questo: 553 MX list for domain.net points back to relay.domain.net 554 <user@domain.net>... Local configuration error Come posso risolvere questo problema? Hai chiesto che la posta per il dominio (es., domain.net) sia inoltrata a un host specifico (in questo caso, relay.domain.net) attraverso l'uso di un record MXrecord MX, ma la macchina di inoltro non si riconosce appartenente a domain.net. Aggiungi domain.net in /etc/mail/local-host-names [chiamato /etc/sendmail.cw nelle versioni precedenti alla 8.10] (se stai usando FEATURE(use_cw_file)) oppure aggiungi Cw domain.net in /etc/mail/sendmail.cf. Le FAQ di sendmail possono essere trovate su ed č raccomandato leggerle se vuoi perfezionare la tua configurazione di posta. Come posso eseguire un server di posta su un host connesso in dial-up tramite PPPPPP ? Vuoi collegare ad Internet una macchina FreeBSD posta sulla tua LAN. La macchina FreeBSD sarŕ un gateway di posta per la LAN. La connessione PPP non č molto indicata per questo scopo. Esistono almeno due modi per far questo. Un modo č usare UUCPUUCP. L'altro č trovare un server Internet a tempo pieno che fornisca un servizio MXrecord MX secondario per il tuo dominio. Per esempio, se il dominio della tua societŕ č example.com e il tuo fornitore di servizi Internet ha attivato example.net per fornire il servizio MX secondario al tuo dominio, allora: example.com. MX 10 example.com. MX 20 example.net. Solo un host deve essere specificato come ultimo ricevente (aggiungi Cw example.com in /etc/mail/sendmail.cf su example.com). Quando sendmail tenterŕ di consegnare la posta proverŕ a connettersi alla tua connessione modem (example.com). Molto probabilmente finirŕ in time out poiché non sei online. In modo automatico sendmail consegnerŕ la posta al server MX secondario, ad esempio il tuo provider Internet (example.net). Il server MX secondario tenterŕ periodicamente di collegarsi al tuo host per consegnare la posta all'host MX primario (example.com). Come script di login potresti usare qualcosa di simile a questo: #!/bin/sh # Mettimi in /usr/local/bin/pppmyisp ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp Se hai intenzione di creare uno script di login separato per un utente potresti usare sendmail -qRexample.com nello script precedente. Questo forzerŕ a processare immediatamente tutta la posta per example.com situata nella tua coda. Segue un'ulteriore sottigliezza della situazione: Messaggio rubato dalla &a.isp;. > forniamo l'MX secondario per un cliente. Il cliente si connette > automaticamente ai nostri servizi molte volte al giorno per ottenere la > posta per il suo MX primario (non chiamiamo il suo server quando arriva > posta per il suo dominio). Il nostro sendmail processa la posta in coda > ogni 30 minuti. Attualmente il cliente sta 30 minuti online per assicurarsi > che tutta la posta vada all'MX primario. > > Esiste un comando che permetta di configurare sendmail in modo tale da > spedire tutta la posta in quel momento? Naturalmente l'utente non ha > privilegi di root sulla nostra macchina. Nella sezione privacy flags di sendmail.cf, c'č una definizione Opgoaway,restrictqrun Rimuovi restrictqrun per permettere a utenti non root di avviare l'elaborazione della coda. Inoltre potresti risistemare gli MX. Noi siamo l'MX primario per i nostri clienti come questo, e abbiamo definito: # Se siamo il miglior MX per un host, prova direttamente invece di generare # errori di configurazione locale. OwTrue In questo modo un server remoto consegnerŕ direttamente a te, senza tentare di connettersi al cliente. Dopodiché tu spedisci al tuo cliente. Funziona solamente con gli host, quindi hai bisogno che il tuo cliente chiami la sua macchina di posta customer.com cosě come nomehost.customer.com nel DNS. Basta mettere un record A nel DNS per customer.com. Perché continuo a ottenere l'errore Relaying Denied quando spedisco posta da altri host? Con l'installazione di default di FreeBSD, sendmail viene configurato in modo tale da permettere di spedire posta solamente dall'host sul quale č in esecuzione. Per esempio, se c'č installato un server POP, allora gli utenti saranno in grado di controllare la posta da scuola, dal lavoro, o da altre postazioni remote ma tuttavia non potranno inviare messaggi di posta all'esterno da postazioni esterne. Tipicamente, pochi istanti dopo il tentativo, verrŕ spedita una email da MAILER-DAEMON con il messaggio di errore 5.7 Relaying Denied. Esistono diversi modi per aggirare questo problema. La soluzione piů semplice č mettere il proprio indirizzo assegnato dall'ISP nel file che contiene i domini a cui viene permesso di effettuare il relay, /etc/mail/relay-domains. Un modo veloce per far questo puň essere: &prompt.root; echo "your.isp.example.com" > /etc/mail/relay-domains Dopo aver creato o modificato questo file devi riavviare sendmail. Questa soluzione č ideale se sei un amministratore del server e non desideri spedire posta localmente, o se vorresti usare un client/sistema punta e clicca su un'altra macchina o perfino su un altro ISP. Inoltre č molto utile se hai solo uno o due account di posta configurati. Se ci sono molti indirizzi da aggiungere, puoi semplicemente aprire questo file con il tuo editor di testo preferito e aggiungere i domini, uno per riga: your.isp.example.com other.isp.example.net users-isp.example.org www.example.org Ora l'invio della posta tramite il tuo sistema, da parte di qualche host in lista (a condizione che l'utente abbia un account sul tuo sistema), avrŕ successo. Questo č un buon metodo per permettere agli utenti di spedire posta dal tuo sistema in modo remoto senza dare la possibilitŕ a qualcuno di spedire SPAM tramite il tuo sistema. Argomenti Avanzati La seguente sezione tratta argomenti piů complicati come l'organizzazione e la configurazione della posta per tutto il tuo dominio. Configurazione di Base email configurazione Dalla macchina FreeBSD, dovresti essere in grado di spedire posta a host esterni a condizione di aver sistemato /etc/resolv.conf o di avere in esecuzione un proprio server dei nomi. Se vuoi che la posta per il tuo host sia consegnata all'MTA (es., sendmail) in esecuzione sul tuo host FreeBSD, esistono due metodi per farlo: Eseguire un proprio server dei nomi e avere un proprio dominio. Per esempio, FreeBSD.org Ricevere la posta direttamente sul tuo host. Questo viene fatto consegnando la posta direttamente al nome DNS corrente della tua macchina. Per esempio, example.FreeBSD.org. SMTP Indipendentemente dal metodo scelto, affinché la posta possa essere consegnata direttamente al tuo host, devi avere un indirizzo IP statico permanente (non un indirizzo dinamico, come avviene nella maggior parte delle configurazioni dial-up di PPP). Se sei dietro a un firewall, devi abilitare il traffico SMTP in entrata. Se vuoi ricevere la posta direttamente sul tuo host, devi verificare una di queste due cose: - record MX - - Assicurati che il record MX (con il numero piů basso) + Assicurati che il record MXrecord MX (con il numero piů basso) relativo al tuo host nel tuo DNS punti all'indirizzo IP del tuo host. Assicurati che non ci siano record MX nel tuo DNS per il tuo host. Entrambi questi due metodi ti permettono di ricevere posta direttamente sul tuo host. Prova questi comandi: &prompt.root; hostname example.FreeBSD.org &prompt.root; host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX Se ottieni un risultato simile, l'invio diretto a yourlogin@example.FreeBSD.org dovrebbe funzionare senza problemi (assumendo che sendmail sia correttamente in esecuzione su example.FreeBSD.org). Se invece vedi qualcosa di simile a questo: &prompt.root; host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org Tutta la posta spedita al tuo host (example.FreeBSD.org) finirŕ per essere raccolta su hub sotto lo stesso nome utente invece di essere spedita direttamente al tuo host. L'informazione precedente viene gestita dal tuo server DNS. Il record DNS che riporta l'informazione di instradamento della posta č l'elemento Mail eXchange. Se non esistono record MX, la posta sarŕ consegnata direttamente all'host attraverso il suo indirizzo IP. L'elemento MX per freefall.FreeBSD.org in passato assomigliava a questo: freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com Come puoi vedere, freefall aveva molti elementi MX. Il numero MX piů basso č l'host che, se disponibile, riceve direttamente la posta; se per qualche ragione questo non č accessibile, gli altri (qualche volta chiamati MX di backup) accettano i messaggi temporaneamente, e li passano all'host attivo con numero inferiore, fino all'host con il numero piů basso. I server MX alternativi dovrebbero avere connessioni Internet indipendenti dalla propria al fine di risultare piů utili. Il tuo ISP o un tuo amico non dovrebbero avere problemi a darti questo servizio. Posta per il Tuo Dominio Per organizzare un server di posta hai bisogno che la posta inviata alle stazioni di lavoro sia ricevuta direttamente sul server di posta. Sostanzialmente, hai bisogno di richiedere che la posta per i nomi host del tuo dominio (in questo caso *.FreeBSD.org) sia deviata al server di posta in modo tale che i tuoi utenti possono raccogliere la loro posta sul server di posta principale. DNS Per rendere la vita piů facile, dovrebbe esistere su entrambe le macchine un account utente con lo stesso nome utente. Usa &man.adduser.8; per farlo. La macchina server di posta che utilizzerai deve essere designata come la macchina che scambia la posta per tutte le postazioni sulla rete. Questo viene realizzato attraverso la configurazione del DNS in modo simile a quanto segue: example.FreeBSD.org A 204.216.27.XX ; Stazione di lavoro MX 10 hub.FreeBSD.org ; Server di posta In questo modo la posta per la stazione di lavoro sarŕ reindirizzata al server di posta senza preoccuparsi dove punti il record A. La posta viene inviata all'host MX. Non puoi effettuare queste modifiche da solo a meno che non hai in esecuzione un tuo server DNS. Se non puoi eseguire un server DNS, consulta il tuo ISP o chiunque ti fornisca il servizio DNS. Se stai facendo dell'hosting di posta elettronica virtuale, le seguenti informazioni ti torneranno utili. In questo esempio, assumiamo che hai un cliente con un proprio dominio, in questo caso customer1.org, e vuoi che tutta la posta per customer1.org sia spedita alla tua macchina server di posta mail.myhost.com. L'elemento nel tuo DNS dovrebbe assomigliare a questo: customer1.org MX 10 mail.myhost.com Non hai bisogno di un record A per customer1.org se vuoi solamente gestire la posta per tale dominio Sii consapevole che un ping su customer1.org non funzionerŕ se non esiste un record A per tale dominio. L'ultima cosa che devi fare č indicare a sendmail, posto sulla tua macchina server, per quali domini e/o host deve accettare posta. Esistono differenti modi per farlo. I seguenti due funzionano entrambi: Se usi FEATURE(use_cw_file) aggiungi gli host al tuo file /etc/mail/local-host-names. Se usi una versione di sendmail precedente alla 8.10, il file da usare č /etc/sendmail.cw. Se usi la versione di sendmail 8.10 o superiore aggiungi la riga Cwyour.host.com al tuo /etc/sendmail.cf o /etc/mail/sendmail.cf. SMTP con UUCP La configurazione di sendmail di default su FreeBSD č designata per siti che si collegano direttamente a Internet. I siti che vogliono scambiarsi lo loro posta tramite UUCP devono installare un altro file di configurazione di sendmail. Editare a mano il file /etc/mail/sendmail.cf č materia da esperti. La versione 8 di sendmail genera file di configurazione tramite la preelaborazione di &man.m4.1;, dove l'attuale configurazione avviene su un livello di astrazione piů alto. I file di configurazione di &man.m4.1; possono essere trovati sotto /usr/share/sendmail/cf. Il file README nella directory cf puň servire come introduzione di base alla configurazione di &man.m4.1;. Il miglior modo per supportare la consegna UUCP č usare la caratteristica mailertable. Questa crea un database che sendmail puň usare per prendere le decisioni di instradamento. Prima di tutto, devi creare il tuo file .mc. La directory /usr/share/sendmail/cf/cf contiene alcuni esempi. Assumendo che tu abbia chiamato il tuo file foo.mc, tutto quello che devi fare per convertirlo in un valido sendmail.cf č: &prompt.root; cd /etc/mail &prompt.root; make foo.cf &prompt.root; cp foo.cf /etc/mail/sendmail.cf Un tipico file .mc potrebbe assomigliare a questo: VERSIONID(`Il tuo numero di versione') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', il.tuo.relay.uucp) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw il.tuo.nome.host.alias Cw iltuonodouucp.UUCP Le righe contenenti le caratteristiche accept_unresolvable_domains, nocanonify, and confDONT_PROBE_INTERFACES impediscono l'uso del DNS durante la consegna della posta. La clausola UUCP_RELAY č necessaria per supportare la consegna UUCP. Metti semplicemente un nome host di Internet che č in grado di gestire indirizzi di pseudo-domini .UUCP; molto probabilmente, metterai il relay del tuo ISP. Una volta fatto questo, hai bisogno del file /etc/mail/mailertable. Se hai solo un collegamento per l'esterno che viene usato per tutta la tua posta, la seguente riga sarŕ sufficiente: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:il.tuo.relay.uucp Un esempio piů complesso potrebbe essere simile a questo: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: Le prime tre righe gestiscono dei casi speciali dove la posta indirizzata a quel dominio non dovrebbe essere spedita tramite l'instradamento di default, ma piuttosto tramite alcuni UUCP di confine al fine di accorciare il percorso di consegna. La quarta riga gestisce la posta per il dominio Ethernet locale la quale puň essere consegnata usando SMTP. Infine, gli UUCP di confine sono menzionati con la notazione a pseudo-dominio .UUCP, per permettere a un uucp-diconfine !destinatario di sovrascrivere le regole di default. L'ultima riga č sempre un singolo punto, a cui corrisponde ogni altra cosa e che rappresenta la consegna UUCP tramite l'UUCP di confine che viene usato come il tuo gateway di posta universale verso il mondo. Tutti i nomi dei nodi dietro alla parola uucp-dom: devono essere validi UUCP di confine, come puoi verificare usando il comando uuname. Si ricorda che questo file deve essere convertito in un file database DBM prima di essere usato. La riga di comando che realizza ciň č messa come un commento in cima al file mailertable. Devi sempre eseguire quel comando ogni volta che modifichi il file mailertable. Ultimo suggerimento: se non sei sicuro che alcuni instradamenti di posta potrebbero funzionare, ricordati l'opzione di sendmail. Questa avvia sendmail in modalitŕ test indirizzo; digita semplicemente 3,0, seguito dall'indirizzo su cui vuoi verificare l'instradamento della posta. L'ultima riga ti informa quale agente di posta interno č stato utilizzato, quale host di destinazione questo agente contatterŕ, e l'indirizzo (molto probabilmente tradotto). Lascia questa modalitŕ digitando Ctrl D . &prompt.user; sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 foo@example.com canonify input: foo @ example . com ... parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . > > ^D Bill Moran Contributo di Configurazione del Sistema di Posta solo per l'Invio Esistono molti casi in cui vorresti avere la possibilitŕ di inviare la posta attraverso un relay. Alcuni esempi sono: Il tuo computer č una macchina desktop, tuttavia vorresti essere in grado di usare programmi come &man.send-pr.1;. Per fare ciň, dovresti usare il relay di posta del tuo ISP. Il computer č un server che non gestisce localmente la posta, ma demanda la gestione di tutta la posta ad un relay inoltrandola in modo opportuno. La maggior parte degli MTA sono in grado di soddisfare questa particolare richiesta. Sfortunatamente, configurare in modo opportuno un MTA standard affinchč permetta solo l'inoltro della posta puň essere un compito molto oneroso. Usare applicazioni come sendmail e postfix per questo fine risulta spesso troppo eccessivo. Inoltre, alcuni servizi di accesso a Internet prevedono nel contratto l'impossibilitŕ da parte del cliente di usare un server di posta. Il modo piů facile per colmare questa necessitŕ č installare il port mail/ssmtp. Esegui i seguenti comandi come root: &prompt.root; cd /usr/ports/mail/ssmtp &prompt.root; make install replace clean Una volta installato, il port mail/ssmtp puň essere configurato con quattro righe nel file /usr/local/etc/ssmtp/ssmtp.conf: root=il_tuo_indirizzo_di_posta_reale mailhub=mail.esempio.com rewriteDomain=esempio.com hostname=_HOSTNAME_ Assicurati di usare il tuo indirizzo di posta per la variabile root. Inserisci il server di posta di inoltro del tuo ISP al posto di mail.esempio.com (alcuni ISP lo chiamano come il server di posta in uscita o il server SMTP). Assicurati di disabilitare sendmail, incluso il servizio di posta in uscita. Guarda la per maggiori dettagli. Il port mail/ssmtp ha altre opzioni disponibili. Guarda il file di configurazione di esempio /usr/local/etc/ssmtp e la pagina man di ssmtp per alcuni esempi e maggiori informazioni. Configurando ssmtp in questo modo permetterai ai programmi sul tuo computer che necessitano di spedire posta di funzionare correttamente, senza violare le politiche del tuo ISP e senza permettere che il tuo computer sia utilizzato per l'inoltro di spam. Uso della Posta con una Connessione Dialup Se hai un indirizzo IP statico, non hai bisogno di adattare nulla alla configurazione di default. Imposta come nome host il nome Internet che ti č stato assegnato e sendmail farŕ il resto. Se hai un indirizzo IP assegnato in modo dinamico e usi una connessione PPP dialup per Internet, allora probabilmente avrai una casella di posta sul server di posta del tuo ISP. Assumiamo che il dominio del tuo ISP sia example.net, che il tuo nome utente sia user, che hai chiamato la tua macchina bsd.home, e che il tuo ISP ti ha detto che puoi usare relay.example.net come relay per la posta. Per ricevere la posta dalla tua casella, devi installare un agente di ricupero. L'utility fetchmail č una buona scelta poichč supporta diversi tipi di protocolli. Questo programma č disponibile come package o dalla collezione dei port (mail/fetchmail). Di solito, il tuo ISP fornirŕ POP. Se stai usando PPP a livello utente, puoi prelevare automaticamente la tua posta quando viene stabilita una connessione a Internet mettendo la seguente riga in /etc/ppp/ppp.linkup: MYADDR: !bg su user -c fetchmail Se stai usando sendmail (come mostrato sotto) per consegnare posta ad account non locali, probabilmente vorrai che sendmail processi la tua coda di posta non appena viene stabilita una connessione ad Internet. Per far questo, metti il seguente comando dopo il comando fetchmail in /etc/ppp/ppp.linkup. !bg su user -c "sendmail -q" Assumiamo che tu abbia un account per user su bsd.home. Nella directory home di user su bsd.home, crea il file .fetchmailrc cosě composto: poll example.net protocol pop3 fetchall pass MySecret Questo file non dovrebbe essere leggibile da nessuno ad eccezione di user poichč contiene la password MySecret. Per spedire la posta con il corretto header from:, devi indicare a sendmail di usare user@example.net piuttosto che user@bsd.home. Inoltre vorrai indicare a sendmail di spedire tutta la posta tramite relay.example.net, permettendo una veloce trasmissione della posta. Il seguente file .mc dovrebbe essere sufficiente: VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`example.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.example.net') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl Fai riferimento alla precedente sezione per i dettagli su come trasformare questo file .mc nel file sendmail.cf. Inoltre, non dimenticarti di riavviare sendmail dopo aver aggiornato il file sendmail.cf. James Gorham Scritto da Autenticazione SMTP Avere un'Autenticazione SMTP operativa sul tuo server di posta porta numerosi benefici. L'Autenticazione SMTP aggiunge un ulteriore strato di sicurezza a sendmail, e ha il vantaggio di dare agli utenti mobili che cambiano host la possibilitŕ di usare lo stesso server di posta senza avere la necessitŕ di riconfigurare ogni volta i settaggi dei loro programmi client di posta. Installa dai port security/cyrus-sasl2. Puoi trovare questo port in security/cyrus-sasl2. Il port security/cyrus-sasl2 ha diverse opzioni di compilazione. Per il metodo di autenticazione SMTP che useremo, assicurati che l'opzione non sia disabilitata. Dopo aver installato security/cyrus-sasl2, edita /usr/local/lib/sasl2/Sendmail.conf (o crealo se non esiste) e aggiungi la seguente riga: pwcheck_method: saslauthd Quindi, installa security/cyrus-sasl2-saslauthd, edita /etc/rc.conf aggiungendo la riga seguente: saslauthd_enable="YES" ed infine avvia il demone saslauthd: &prompt.root; /usr/local/etc/rc.d/saslauthd start Questo demone serve come mediatore con sendmail per autenticare gli utenti tramite il proprio database passwd di FreeBSD. Questo procedimento evita di creare un nuovo set di nomi utenti e password per ogni utente che necessita di usare l'autenticazione SMTP, mantenendo la password di login uguale alla password di posta. Ora aggiungi le seguenti righe in /etc/make.conf: SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl2 Queste righe daranno, in fase di compilazione di sendmail, le giuste opzioni di configurazione per linkare a cyrus-sasl2. Assicurati che cyrus-sasl2 sia installato prima di ricompilare sendmail. Ricompila sendmail eseguendo i seguenti comandi: &prompt.root; cd /usr/src/lib/libsmutil &prompt.root; make cleandir && make obj && make &prompt.root; cd /usr/src/lib/libsm &prompt.root; make cleandir && make obj && make &prompt.root; cd /usr/src/usr.sbin/sendmail &prompt.root; make cleandir && make obj && make && make install Se /usr/src non ha subito enormi cambiamenti e se le librerie condivise di cui si ha bisogno sono disponibili, la compilazione di sendmail non dovrebbe avere problemi. Dopo aver compilato e reinstallato sendmail, edita il tuo file /etc/mail/freebsd.mc (o qualunque altro file che usi come file .mc. Molti amministratori preferiscono usare, per unicitŕ, l'output di &man.hostname.1; come nome del file .mc). Aggiungi le seguenti righe: dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl Queste opzioni configurano i vari metodi che sendmail ha a disposizione per autenticare gli utenti. Se vuoi usare un metodo diverso da pwcheck, guarda la documentazione inclusa nel package. Per finire, esegui &man.make.1; in /etc/mail. Questo eseguirŕ il tuo nuovo file .mc e creerŕ un file .cf di nome freebsd.cf (o con il nome che hai usato per il file .mc). Quindi esegui il comando make install restart, che copierŕ il file in sendmail.cf, e riavvierŕ correttamente sendmail. Per maggiori informazioni su questa procedura, dovresti prendere come riferimento /etc/mail/Makefile. Se tutto č andato per il verso giusto, dovresti essere in grado di inviare un messaggio di prova dopo aver inserito le informazioni di login nel programma client di posta. Per ulteriori indagini, setta il di sendmail a 13 e guarda il file /var/log/maillog per eventuali errori. Per ulteriori informazioni, guarda la pagina riguardante l'autenticazione SMTP di sendmail. Marc Silver Contributo di Mail User Agent Mail User Agent Un Mail User Agent (MUA) č un'applicazione che viene usata per inviare e ricevere la posta elettronica. Man mano che la posta evolve e diventa piů complessa, gli MUA diventano sempre piů potenti nel modo in cui essi interagiscono con la posta elettronica; ciň fornisce agli utenti maggiori funzionalitŕ e flessibilitŕ. &os; supporta svariati mail user agent, che possono essere facilmente installati usando la FreeBSD Ports Collection. Gli utenti possono scegliere tra client di posta con un'interfaccia grafica come evolution o balsa, client basati sulla console come mutt, pine e mail, oppure interfacce web utilizzate da alcune grandi organizzazioni. mail &man.mail.1; č il Mail User Agent (MUA) di default su &os;. Si tratta di un MUA basato sulla console che offre tutte le funzionalitŕ di base richieste per inviare e ricevere messaggi di posta testuali, anche se č limitato nelle capacitŕ di gestione degli allegati, e puň solo supportare caselle di posta locali. Sebbene mail non supporta in modo nativo interazioni con server POP o IMAP, queste caselle di posta possono essere scaricate nel file mbox locale usando un'applicazione come fetchmail, che verrŕ discussa piů tardi in questo capitolo (). Al fine di inviare o ricevere la posta, invoca semplicemente il comando mail come nel seguente esempio: &prompt.user; mail I contenuti delle caselle di posta degli utenti in /var/mail sono letti automaticamente dall'utility mail. Se la casella di posta č vuota, l'utility esce con un messaggio che indica che non č stato trovato nessun messaggio di posta. Una volta che la casella di posta č stata letta, viene avviata l'interfaccia dell'applicazione, e vengono visualizzati una lista di messaggi. I messaggi sono numerati in modo automatico, come nel seguente esempio: Mail version 8.1 6/6/93. Type ? for help. "/var/mail/marcs": 3 messages 3 new >N 1 root@localhost Mon Mar 8 14:05 14/510 "test" N 2 root@localhost Mon Mar 8 14:05 14/509 "user account" N 3 root@localhost Mon Mar 8 14:05 14/509 "sample" I messaggi possono ora essere letti usando il comando t di mail, seguito dal numero del messaggio che si vuole visualizzare. In questo esempio, leggeremo il primo messaggio di posta: & t 1 Message 1: From root@localhost Mon Mar 8 14:05:52 2004 X-Original-To: marcs@localhost Delivered-To: marcs@localhost To: marcs@localhost Subject: test Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST) From: root@localhost (Charlie Root) Questo č un messaggio di prova, per favore rispondi se lo ricevi. Come puoi vedere nell'esempio precedente, il tasto t visualizza il messaggio completo di tutte le sue intestazioni (header). Per visualizzare ancora la lista dei messaggi, puoi usare il tasto h. Se il messaggio di posta richiede una replica, puoi usare mail per rispondere, usando il tasto R o r di mail. Il tasto R dice a mail di rispondere solamente al mittente del messaggio, mentre r replica non solo al mittente, ma anche agli altri eventuali destinatari del messaggio originario. Puoi anche impartire quei comandi con un suffisso relativo al numero di messaggio per il quale intendi rispondere. Fatto ciň, inserisci la tua risposta, segnalando la fine del messaggio con un singolo punto (.) su una nuova linea. Ecco un esempio: & R 1 To: root@localhost Subject: Re: test Thank you, I did get your email. . EOT Per inviare un nuovo messaggio, puoi usare il tasto m, seguito dall'indirizzo di posta elettronica del destinatario. Puoi specificare piů destinatari separando ogni indirizzo da una virgola (,). Quindi si inserisce il soggetto del messaggio (il subject), seguito dal contenuto del messaggio stesso. La fine del messaggio deve essere specificata da un singolo punto (.) su una nuova linea. & mail root@localhost Subject: Ho imparato ad usare mail Ora posso inviare e ricevere posta usando mail ... :) . EOT Anche se in mail, il comando ? puň essere usato per invocare l'help in linea, la pagina man &man.mail.1; dovrebbe essere consultata per ottenere maggiori informazioni. Come menzionato in precedenza, il comando &man.mail.1; non č stato originariamente progettato per gestire gli allegati, e quindi il supporto per essi č proprio misero. Nuovi MUA come mutt gestiscono gli allegati in un modo piů intelligente. Tuttavia se desideri comunque usare il comando mail, dovresti considerare l'uso del port converters/mpack. mutt mutt č un Mail User Agent leggero ma molto potente, con caratteristiche eccellenti, alcune delle quali sono: Abilitŕ nella gestione di thread di messaggi; Supporto PGP per la firma digitale e per criptare i messaggi di posta; Supporto al MIME; Supporto del formato Maildir; Altamente personalizzabile. Tutte queste caratteristiche fanno di mutt uno dei maggiori user agent avanzati oggi disponibili. Guarda per maggiori informazioni su mutt. La versione stabile di mutt puň essere installata usando il port mail/mutt, mentre la versione corrente di sviluppo puň essere installata tramite il port mail/mutt-devel. Una volta che il port č stato installato, mutt puň essere avviato usando il seguente comando: &prompt.user; mutt mutt in modo automatico legge il contenuto della casella di posta dell'utente in /var/mail/ e ne visualizza il contenuto. Se non ci sono messaggi nella casella di posta dell'utente, allora mutt si mette in attesa di comandi da parte dell'utente. L'esempio qui sotto mostra mutt che visualizza una lista di messaggi: Per leggere un messaggio, selezionalo usando i tasti cursore, e premi il tasto Invio. Segue un esempio di come mutt visualizza un messaggio: Come con il comando &man.mail.1;, mutt permette agli utenti di rispondere al solo mittente del messaggio come pure a tutti i suoi destinatari. Per rispondere solo al mittente del messaggio, usa il tasto r. Per inviare una risposta di gruppo, che invierŕ la risposta sia al mittente originario sia a tutti i destinatari del messaggio, usa il tasto g. mutt si serve del comando &man.vi.1; come editor per la creazione o risposta dei messaggi di posta elettronica. Il tipo di editor puň essere personalizzato dall'utente creando o editando il proprio file di configurazione .muttrc nella propria directory home e settando in modo opportuno la variabile editor o impostando la variabile di ambiente EDITOR. Guarda per ulteriori informazioni sulla configurazione di mutt. Per comporre un nuovo messaggio, premi il tasto m. Dopo aver digitato un valido soggetto, mutt avvierŕ &man.vi.1; con il quale comporre il corpo del messaggio. Fatto ciň, salvando e uscendo da vi, mutt visualizzarŕ una schermata riassuntiva del messaggio che sta per essere consegnato. Per inviare il messaggio, premi il tasto y. Segue un esempio di una schermata riassuntiva di un messaggio: mutt contiene un ottimo help in linea, che puň essere accessibile nella maggior parte dei menů digitando il tasto ?. Inoltre, in alcuni casi, nella parte superiore delle finestra vengono elencati i tasti funzioni principali. pine pine č rivolto agli utenti novizi, tuttavia include alcune caratteristiche avanzate. Il software pine ha avuto svariate vulnerabilitŕ remote scoperte in passato, che permettevano ad attaccanti remoti di eseguire del codice arbitrario come se fossero degli utenti locali del sistema, tramite l'invio di un messaggio di posta preparato ad doc. Tutti questi noti problemi sono stati rattoppati, ma il codice di pine č stato scritto in un modo insicuro e il Servizio di Sicurezza di &os; crede che probabilmente esistono altre vulnerabilitŕ non ancora scoperte o divulgate. Installa pine a tuo rischio e pericolo. L'attuale versione di pine puň essere installata usando il port mail/pine4. Una volta che il port č stato installato, pine puň essere avviato con il comando seguente: &prompt.user; pine La prima volta che pine viene avviato viene visualizza una pagina di presentazione con una breve introduzione, e un sollecito del team di sviluppo di pine ad inviare un messaggio anonimo che permette di constatare quanti sono gli utenti che usano la loro applicazione. Per inviare questo messaggio anonimo, premi Invio, oppure premi il tasto E per uscire dalla presentazione senza inviare il messaggio anonimo. Ecco un esempio della pagina di presentazione: All'utente viene quindi presentato il menů principale, che puň essere facilmente esplorato con i tasti cursore. Questo menů principale fornisce le scorciatoie per comporre nuovi messaggi di posta, per esplorare le directory di posta e perfino per amministrare l'agenda degli indirizzi. Sotto al menů principale, sono mostrati i tasti funzione utili per realizzare azioni specifiche, attinenti all'attuale contesto d'uso. La directory di default aperta da pine č inbox. Per visualizzare l'indice dei messaggi, premi il tasto I, o seleziona l'opzione MESSAGE INDEX come da esempio: L'indice dei messaggi mostra i messaggi nella directory corrente, e puň essere esplorato con i tasti cursore. I messaggi selezionati possono essere letti premendo il tasto Invio. Nello screenshot seguente, viene visualizzato un semplice messaggio in pine. I tasti funzione sono visualizzati come riferimento nella parte superiore della finestra. Un esempio di uno di questi tasti funzioni č il tasto r, che dice al MUA di rispondere al messaggio attualmente visualizzato. In pine la risposta ad un messaggio viene realizzata con l'editor pico, che č installato di default con pine. L'utility pico permette una semplice esplorazione del messaggio ed č piů permissivo con i nuovi utenti rispetto a &man.vi.1; o &man.mail.1;. Una volta completata la risposta, il messaggio puň essere inviato con CtrlX. L'applicazione pine chiederŕ una conferma. pine puň essere personalizzato usando l'opzione SETUP del menů principale. Consulta per maggiori informazioni. Marc Silver Contributo di Usare fetchmail fetchmail fetchmail č un client IMAP e POP super attrezzato che da la possibilitŕ agli utenti di scaricare automaticamente la posta da server remoti IMAP e POP e di salvarla nelle proprie caselle di posta locali; in questo modo la posta č piů accessibile. fetchmail puň essere installato usando il port mail/fetchmail, e offre diverse caratteristiche, alcune delle quali sono: Supporto dei protocolli POP3, APOP, KPOP, IMAP, ETRN e ODMR. Capacitŕ di inoltrare la posta usando SMTP, permettendo di filtrare, inoltrare, e usare la funzionalitŕ alias come di consueto. Puň essere eseguito in modalitŕ demone per verificare in modo periodico la presenza di nuovi messaggi. Puň recuperare piů caselle di posta e inoltrare i relativi messaggi a diversi utenti locali, a seconda della sua configurazione. Benchč la spiegazione di tutte le caratteristiche di fetchmail vada oltre lo scopo di questo documento, verranno presentate alcune funzionalitŕ di base. fetchmail richiede un file di configurazione .fetchmailrc, al fine di poter essere avviato in modo corretto. Questo file include informazioni sui server come pure le credenziali per il login. Data la natura sensibile del contenuto di questo file, č consigliabile renderlo accessibile in sola lettura dal proprietario, usando il seguente comando: &prompt.user; chmod 600 .fetchmailrc La seguente configurazione di .fetchmailrc serve come esempio per scaricare una singola casella di posta usando POP. Essa indica a fetchmail di connettersi a example.com usando come nome utente joesoap e come password XXX. Questo esempio assume che l'utente joesoap č anche un utente del sistema locale. poll example.com protocol pop3 username "joesoap" password "XXX" Il prossimo esempio si connette a piů server POP e IMAP e redirige i vari messaggi a diversi nomi utenti locali quando necessario: poll example.com proto pop3: user "joesoap", with password "XXX", is "jsoap" here; user "andrea", with password "XXXX"; poll example2.net proto imap: user "john", with password "XXXXX", is "myth" here; L'utility fetchmail puň essere eseguita in modalitŕ demone con l'opzione , seguita da un intervallo (in secondi) in base al quale fetchmail sonderŕ i server elencati nel file .fetchmailrc. Il seguente esempio indica a fetchmail di sondare i server ogni 600 secondi: &prompt.user; fetchmail -d 600 Maggiori informazioni su fetchmail possono essere trovate all'indirizzo . Marc Silver Contributo di Usare procmail procmail L'utility procmail č un'applicazione molto potente usata per filtrare la posta in ingresso. Permette agli utenti di definire delle regole che sono confrontate con la posta in ingresso per realizzare funzioni specifiche o per inoltrare la posta ad una casella di posta alternativa e/o ad altri indirizzi di posta. procmail puň essere installato usando il port mail/procmail. Una volta installato, puň essere integrato direttamente nella maggior parte degli MTA; consulta la documentazione del tuo MTA per maggiori informazioni. Altrimenti, procmail puň essere integrato aggiungendo la seguente linea nel file .forward nella home directory dell'utente, potendo cosě utilizzare le funzionalitŕ di procmail: "|exec /usr/local/bin/procmail || exit 75" La seguente sezione mostra alcune regole base di procmail, cosě come una breve descrizione di ciň che fanno. Queste ed eventualmente altre regole, devono essere inserite nel file .procmailrc, posto nella home directory dell'utente. La maggior parte di queste regole possono essere trovate anche nella pagina man di &man.procmailex.5;. Per inoltrare la posta inviata da user@example.com all'indirizzo di posta goodmail@example2.com: :0 * ^From.*user@example.com ! goodmail@example2.com Per inoltrare tutti i messaggi di posta con dimensioni inferiori a 1000 bytes verso l'indirizzo di posta esterno goodmail@example2.com: :0 * < 1000 ! goodmail@example2.com Per inoltrare tutta la posta inviata a alternate@example.com in una casella di posta chiamata alternate: :0 * ^TOalternate@example.com alternate Per inviare tutti messaggi di posta con soggetto Spam in /dev/null: :0 ^Subject:.*Spam /dev/null Ecco una ricetta utile che analizza i messaggi di posta in ingresso delle liste di &os;.org e li posiziona in base alla lista in una opportuna casella di posta: :0 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG { LISTNAME=${MATCH} :0 * LISTNAME??^\/[^@]+ FreeBSD-${MATCH} } diff --git a/it_IT.ISO8859-15/books/handbook/network-servers/chapter.xml b/it_IT.ISO8859-15/books/handbook/network-servers/chapter.xml index ff690571d4..b5763842a9 100644 --- a/it_IT.ISO8859-15/books/handbook/network-servers/chapter.xml +++ b/it_IT.ISO8859-15/books/handbook/network-servers/chapter.xml @@ -1,5585 +1,5566 @@ Murray Stokely Riorganizzato da Server di rete Sinossi Questo capitolo coprirŕ alcuni dei servizi di rete usati piů di frequente sui sistemi &unix;. Fra gli argomenti toccati, ci saranno l'installazione, la configurazione, il test ed la manutenzione di molti tipi diversi di servizi di rete. Per vostro beneficio in tutto il capitolo saranno inclusi file di configurazione di esempio. Dopo aver letto questo capitolo, sarai in grado di: Gestire il demone inetd. Installare un file system di rete. Installare un server NIS per condividere account utenti. Installare impostazioni automatiche di rete usando DHCP. Installare un server di risoluzione dei nomi. Installare il server HTTP Apache. Installare un File Transfer Protocol (FTP) Server. Installare un file server e server di stampa per client &windows; usando Samba. Sincronizzare la data e l'ora ed installare un time server, col protocollo NTP. Prima di leggere questo capitolo, dovresti: Comprendere le basi dell'organizzazione degli scripts /etc/rc. Avere familiaritŕ con la terminologia di rete di base. Sapere come installare software aggiuntivo di terze parti (). Chern Lee Grazie al contributo di Aggiornato per &os; 6.1-RELEASE da The &os; Documentation Project Il <quote>Super-Server</quote> <application>inetd</application> Uno sguardo d'insieme &man.inetd.8; viene talvolta definito l'Internet Super-Server perchč gestisce le connessioni verso molti servizi. Quando una connessione viene ricevuta da inetd, questo determina per quale programma la connessione sia destinata, esegue quel particolare processo e affida a lui la socket (il programma č invocato con la socket del servizio come descrittore di standard input, output ed error). Eseguire inetd per server dal carico non troppo alto puň ridurre il carico complessivo di sistema, rispetto all'esecuzione individuale di ogni demone in modalitŕ stand-alone. Principalmente, inetd č usato per lanciare altri demoni, ma molti protocolli triviali sono gestiti direttamente, come ad esempio i protocolli chargen, auth, e daytime. Questa sezione coprirŕ le basi della configurazione di inetd attraverso le opzioni da linea di comando ed il suo file di configurazione, /etc/inetd.conf. Impostazioni inetd viene inizializzato attraverso il sistema &man.rc.8;. L'opzione inetd_enable č impostata a NO di default, ma puň essere attivata da sysinstall durante l'installazione, a seconda della configurazione scelta dall'utente. Inserendo: inetd_enable="YES" o inetd_enable="NO" in /etc/rc.conf si abiliterŕ o meno la partenza di inetd al boot. Il comando: &prompt.root; /etc/rc.d/inetd rcvar puň essere utilizzato per mostrare le impostazioni attive al momento. Inoltre, diverse opzioni di linea di comando possono essere passate a inetd attraverso l'opzione inetd_flags. Opzioni su linea di comando Come molti server di rete, inetd ha un numero di opzioni che possono essergli passate per modificare il suo comportamento. La lista di tutte le opzioni č: inetd synopsis: Si possono passare opzioni ad inetd usando l'opzione inetd_flags in /etc/rc.conf. Di default, inetd_flags č impostato a -wW -C 60, il che attiva il TCP wrapping per i servizi di inetd, ed impedisce ad ogni singolo indirizzo IP di richiedere qualsiasi servizio piůdi 60 volte al minuto. Gli utenti novizi possono notare con piacere che questi parametri di solito non devono essere modificati, anche se bisogna menzionare il fatto che le opzioni di limitazione delle connessioni sono utili solo se ci si accorge di ricevere un numero eccessivo di connessioni. L'intera lista delle opzioni di &man.inetd.8; puň essere trovata nel manuale di &man.inetd.8;. -c maximum Specifica il numero massimo di invocazioni simultanee per ogni servizio; il default č illimitato. Puň essere sovrascritto per ogni servizio dal parametro . -C rate Specifica un numero massimo di volte in cui un servizio puň essere invocato da un singolo indirizzo IP in un minuto; il default č illimitato. Puň essere sovrascritto per ogni servizio con il parametro . -R rate Specifica il numero massimo di volte che un servizio puň essere invocato in un minuto; il default č 256. L'impostazione 0 permette un numero illimitato di invocazioni. -s maximum Specifica il numero massimo di volte che un servizio puň essere invocato per ogni periodo di tempo; il default č illimitato. Puň essere sovrascritto per ogni singolo servizio con il parametro . <filename>inetd.conf</filename> La configurazione di inetd č fatta attraverso il file /etc/inetd.conf. Quando viene apportata una modifica a /etc/inetd.conf, si puň forzare inetd a rileggere il suo file di configurazione eseguendo il comando: Ricaricare il file di configurazione di <application>inetd</application> &prompt.root; /etc/rc.d/inetd reload Ogni linea del file di configurazione specifica un singolo demone. I commenti nel file sono preceduti da un #. Il formato di ogni riga del file /etc/inetd.conf č il seguente: nome del servizio tipo della socket protocollo {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]] utente[:gruppo][/classe-di-login] programma-server argomenti-del-programma-server Un esempio di linea per il demone &man.ftpd.8; usando l'IPv4: ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l nome-del-servizio Č il nome del servizio per il demone. Deve corrispondere ad un servizio elencato in /etc/services. Questo determina su quale porta inetd deve restare in ascolto. Se viene creato un nuovo servizio, deve essere messo prima in /etc/services. tipo-di-socket Una a scelta fra stream, dgram, raw, o seqpacket. stream deve essere usata per demoni basati sulla connessione, tipo TCP, mentre dgram č usato per demoni che usano il protocollo di trasporto UDP. protocollo Uno dei seguenti: Protocollo Spiegazione tcp, tcp4 TCP IPv4 udp, udp4 UDP IPv4 tcp6 TCP IPv6 udp6 UDP IPv6 tcp46 Entrambi TCP IPv4 e v6 udp46 Entrambi UDP IPv4 e v6 {wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]] indica se il demone invocato da inetd č in grado di gestire la sua socket o meno. Il tipo di socket deve usare l'opzione , mentre i demoni con socket stream, che sono in genere multi-thread, devono usare . in genere fornisce socket multiple ad un singolo demone, mentre lancia un demone figlio per ogni nuova socket. Il massimo numero di demoni figli che inetd puň lanciare si imposta attraverso l'opzione . Se č richiesto un limite di dieci istanze per un particolare demone, un /10 dovrebbe essere inserito dopo l'opzione . Specificando /0 si lascia un numero illimitato di figli. Oltre all'opzione , possono essere attivate due altre opzioni che limitano il massimo numero di connessioni da un singolo ip verso un particolare demone. limita il numero di connessioni da un particolare indirizzo IP per minuto, ad esempio un valore di dieci limiterebbe ogni singolo indirizzo IP a connettersi verso un certo servizio a dieci connessioni al minuto. limita il numero di figli che possono essere avviati su richiesta di un singolo indirizzo IP in ogni momento. Queste opzioni sono utili per prevenire eccessivo consumo delle risorse intenzionale o non intenzionale e attacchi Denial of Service (DoS) ad una macchina. In questo campo, o sono obbligatorie. e e sono opzionali. Un demone tipo-stream multi-thread senza i limiti o dovrebbe essere semplicemente: nowait. Lo stesso demone con un limite massimo di dieci demoni dovrebbe avere: nowait/10. In aggiunta, la stessa impostazione con un limite di venti connessioni per IP al minuto ed un limite massimo di dieci demoni figli avrebbe: nowait/10/20. Queste opzioni sono tutte utilizzate di default nelle impostazioni del demone &man.fingerd.8; come si vede di seguito: finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s Alla fine, un esempio di questo campo con 100 figli in tutto, con un massimo di 5 per singolo indirizzo IP sarebbe: nowait/100/0/5. user Questo č lo username sotto il quale un particolare demone dovrebbe girare. Di frequente, i demoni girano come utente root. Per motivi di sicurezza, č normale trovare alcuni server che girano con l'utente daemon, o il meno privilegiato utente nobody. server-program Il percorso assoluto del demone che deve essere eseguito quando č ricevuta una connessione . Se il demone č un servizio offerto da inetd internamente, bisogna usare . server-program-arguments Questa opzione funziona in congiunzione con specificando gli argomenti, cominciando con argv[0], passati al demone al momento dell'invocazione. Se mydaemon -d č la linea di comando, mydaemon -d sarŕ il valore dell'opzione . Ancora, se un demone č un servizio interno, usa . Sicurezza A seconda delle scelte fatte all'installazione, molti servizi di inetd potrebbero essere attivi di default. Se non c'č necessitŕ apparente per un particolare demone, considera di disabilitarlo. Usa un # a capo della riga del demone in questione in /etc/inetd.conf, e quindi ricarica la configurazione di inetd. Alcuni demoni, come fingerd, potrebbero non essere assolutamente desiderati, poichč forniscono all'attaccante informazioni che gli potrebbero risultare utili. Alcuni demoni non sono stati creati coll'obiettivo della sicurezza ed hanno timeout lunghi, o non esistenti. Questo permette ad un attaccante di inviare lentamente connessioni ad un particolare demone, saturando in questo modo le risorse disponibile. Puň essere una buona idea impostare le limitazioni e o su certi demoni se scopri di avere troppe connessioni. Di default, il TCP wrapping č attivo. Consulta la pagina del manuale di &man.hosts.access.5; per impostare delle restrizioni TCP su certi demoni invocati da inetd. Miscellanei daytime, time, echo, discard, chargen, e auth sono tutti servizi interni di inetd. Il servizio auth fornisce servizi di rete di identificazione ed č configurabile fino ad un certo punto, mentre gli altri possono solo essere accesi o spenti. Consulta la paigna di manuale di &man.inetd.8; per dettagli piů approfonditi. Tom Rhodes Riorganizzato e migliorato da Bill Swingle Scritto da Network File System (NFS) NFS Fra i molti differenti file system che FreeBSD supporta c'č il Network File System, conosciuto anche come NFS. NFS permette ad un sistema di condividere directory e file con altri sistemi in rete. Usando NFS, utenti e programmi possono accedere a file su sistemi remoti quasi come se fossero files locali. Alcuni dei piů notevoli benefici che NFS ci fornisce sono: Workstation locali usano meno spazio su disco perchč i dati usati in locale possono essere conservati su una singola macchina e restano accessibili agli altri sulla rete. Non c'č bisogno per gli utenti di avere home directory separate su ogni macchina in rete. Le home directory possono essere poste sul server NFS e rese disponibili attraverso la rete. Device di storage come floppy disk, drive CDROM, e drive &iomegazip; possono essere usati da altre macchine sulla rete. Questo puň ridurre il numero di device di storage rimuovibili sulla rete. Come Funziona <acronym>NFS</acronym> NFS consiste di almeno due parti: un server ed uno o piů client. Il client accede da remoto ai dati conservati sulla macchina server. Affinchč questo funzioni, alcuni processi devono essere configurati e devono essere attivi. Il server deve avere attivi i seguenti demoni: NFS server file server UNIX clients rpcbind mountd nfsd Demone Descrizione nfsd Il demone NFS che serve richieste da client NFS. mountd Il demone di mount NFS che serve le richieste che &man.nfsd.8; gli passa. rpcbind Questo demone permette ai client NFS di scoprire quali porte il server NFS sta usando. Il client puň anche eseguire un demone, noto come nfsiod. Il demone nfsiod serve le richieste dal server NFS. E' opzionale, aiuta a migliorare le prestazioni ma non č indispensabile per operazioni corrette. Consultare la pagina di manuale di &man.nfsiod.8; per piů informazioni. Configurare <acronym>NFS</acronym> NFS configurazione La configurazione di NFS č un processo relativamente semplice. I processi che devono essere attivi possono essere tutti avviati al boot della macchina con poche modifiche al tuo file /etc/rc.conf. Sul server NFS assicurati che le seguenti opzioni sono configurati nel file /etc/rc.conf: rpcbind_enable="YES" nfs_server_enable="YES" mountd_flags="-r" mountd viene eseguito automaticamente in caso il server NFS sia abilitato. Sul client, accertati che questa riga sia attiva nel file /etc/rc.conf: nfs_client_enable="YES" Il file /etc/exports specifica quali file system NFS dovrebbe esportare (talora chiamate anche share). Ogni linea di /etc/exports specifica un file system che deve essere esportato e quali macchine hanno accesso a quel file system. Assieme alle macchine che hanno accesso a quel file system, possono esserci specificate anche opzioni. Ci sono molte opzioni di questo tipo che possono essere usate in questo file ma solo poche saranno menzionate qui. Puoi facilmente scoprire le altre opzioni leggendo la pagina di manuale di &man.exports.5;. Queste sono alcune linee di esempio del file /etc/exports: NFS esempi di export I seguenti esempi danno un'idea di come esportare file system, anche se le impostazioni possono essere diverse a seconda del tuo ambiente e della tua configurazione di rete. Ad esempio, per esportare la directory /cdrom a tre macchine di esempio che hanno lo stesso nome di dominio del server (da qui la mancanza di nome dominio per ognuno) o hanno delle linee nel vostro file /etc/hosts. L'opzione rende il file system esportato read-only. Con questo flag, il sistema remoto non sarŕ in grado di scrivere alcun cambiamento sul file system esportato. /cdrom -ro host1 host2 host3 La seguente linea esporta la directory /home a tre host identificati da indirizzo IP. E' una impostazione utile in caso tu abbia una rete privata senza un DNS server configurato. Opzionalmente il file /etc/hosts puň essere configurato per hostname interni. Per favore rileggi &man.hosts.5; per piů informazioni. Il flag permette alle sottodirectory di fungere da mount point. In altre parole, non monterŕ le sottodirectory ma permetterŕ  ai client di montare solo le directory che necessita o di cui ha bisogno. /home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4 La linea seguente esporta /a cosicchč due client da diversi domini possono accedere al file system. L'opzione permette all'utente root sul sistema remoto di scrivere dati sul file system esportato come utente root. Se il flag -maproot=root non č specificato, anche se l'utente ha accesso come root sul file system remoto, non sarŕ  in grado di modificare files sul file system esportato. /a -maproot=root host.example.com box.example.org Affinchč un client abbia accesso ad un file system, questo deve avere permessi adeguati. Assicurati che il client sia elencato nel file /etc/exports. In /etc/exports, ogni linea rappresenta le informazioni per un file system esportato ad un host. Un host remoto puň essere specificato solo una volta per file system, e puň avere solo una entry di default. Ad esempio, supponi che /usr sia un singolo file system. Il seguente /etc/exports sarebbe invalido: # Invalid when /usr is one file system /usr/src client /usr/ports client Un file system, /usr, ha due linee che specificano exports verso lo stesso host, client. Il formato corretto per questa situazione č: /usr/src /usr/ports client Le proprietŕ di un file system esportato ad un dato host devono essere tutte su una riga. Linee senza un cliente specificato sono trattate come un singolo host. Questo limita il modo di esportare file system, ma per la maggior parte delle persone non č un problema. Il seguente č un esempio di valida lista di esportazione, dove /usr e /exports /usr and /exports sono file system locali: # Export src and ports to client01 and client02, but only # client01 has root privileges on it /usr/src /usr/ports -maproot=root client01 /usr/src /usr/ports client02 # The client machines have root and can mount anywhere # on /exports. Anyone in the world can mount /exports/obj read-only /exports -alldirs -maproot=root client01 client02 /exports/obj -ro Il demone mountd deve essere forzato a rileggere il file /etc/exports ogni volta che lo modifichi, cosicchč i cambiamenti abbiano effetto. Questo puň essere ottenuto inviando un segnale HUP al processo mountd: &prompt.root; kill -HUP `cat /var/run/mountd.pid` o invocando lo script mountd &man.rc.8; con i parametri appropriati: &prompt.root; /etc/rc.d/mountd onereload Sei invitato a far riferimento a per maggiori informazioni sugli script rc. Alternativamente, un reboot farŕ  sě che FreeBSD imposti tutto correttamente. Non č necessario tuttavia effettuare un reboot. L'esecuzione del seguente comando da utente root dovrebbe avviare tutto. Sul server NFS: &prompt.root; rpcbind &prompt.root; nfsd -u -t -n 4 &prompt.root; mountd -r Sul client NFS: &prompt.root; nfsiod -n 4 Ora dovrebbe essere tutto pronto per montare un file system remoto. In questi esempi il nome del server sarŕ  server e quello del client sarŕ  client. Se vuoi solo temporaneamente montare un file system remoto o anche testare la configurazione, basta che esegui un comando come questo come utente root sul client: NFS mounting &prompt.root; mount server:/home /mnt Questo monterŕ  la directory /home del server sopra /mnt sul client. Se tutto č impostato correttamente dovresti essere in grado di entrare nella directory /mnt sul client e vedere tutti i file che sono sul server. Se vuoi montare automaticamente un file system remoto ogni volta che il computer fa boot, aggiungi il file system al file /etc/fstab. Questo č un esempio: server:/home /mnt nfs rw 0 0 La pagina di manuale di &man.fstab.5; elenca tutte le possibili opzioni. Locking Alcune applicazioni (es. mutt) richiedono il lock dei file per operare in modo corretto. In caso di NFS, puň essere utilizzato rpc.lockd per il lock dei file. Per abilitarlo, aggiungi la seguente riga al file /etc/rc.conf sia sul client che sul server (assumendo che il client e server NFS siano giŕ configurati): rpc_lockd_enable="YES" rpc_statd_enable="YES" Avvia l'applicazione con: &prompt.root; /etc/rc.d/nfslocking start Se non č richiesto un lock reale tra il server e il client NFS, č possibile dire al client NFS di fare un lock locale passando l'opzione a &man.mount.nfs.8;. Ulteriori dettagli possono essere trovati nella pagina man di &man.mount.nfs.8;. Usi Pratici NFS ha molti usi pratici. Alcuni dei piů usati sono elencati di seguito: NFS usi Fa sě che alcune macchine condividano un CDROM o un altro media fra di loro. Questo č un metodo piů economico e spesso piů convieniente di installare software su molte macchine. Su grandi reti, potrebbe essere piů conveniente configurare un server NFS centrale in cui conservare tutte le home directory degi utenti. Queste home directory possono essere esportate sulla rete cosicchč gli utenti abbiano sempre la stessa directory, indipendentemente dalla workstation dalla quale effettuino il login. Molte macchine potrebbero avere una directory comune /usr/ports/distfiles. In questo modo, quando hai bisogno di installare un port su molte macchine, puoi velocemente accedere al sorgente senza scaricarlo su ogni macchina. Wylie Stilwell Grazie al contributo di Chern Lee Riscritto da Mount automatici con <application>amd</application> amd demone di mount automatico &man.amd.8; (il demone di mount automatico) monta automaticamente un file system remoto ogni volta che un file o una directory in quel file system viene acceduto. I file system che sono inattivi per un certo periodo di tempo possono anche essere smontati automaticamente da amd. L'uso di amd fornisce una semplice alternativa a mount permanenti, dato che i mount permanenti sono di solito elencati in /etc/fstab. amd opera connettendosi ad un server NFS sulle directory /host e /net. Quando si accede ad un file all'interno di una di queste directory, amd fa una ricerca del mount remoto corrispondente e lo monta automaticamente. /net č usato per montare un file system esportato da un indirizzo IP, mentre /host č usato per montare un export da un hostname remoto. Un accesso ad un file in /host/foobar/usr dovrebbe comunicare a amd di cercare di montare l'export /usr sull'host foobar. Montare un export con <application>amd</application> Puoi osservare i mount disponibili di un host remoto con il comando showmount. Ad esempio, per vedere i mounts di un host chiamato foobar, puoi usare: &prompt.user; showmount -e foobar Exports list on foobar: /usr 10.10.10.0 /a 10.10.10.0 &prompt.user; cd /host/foobar/usr Come si vede nell'esempio, il comando showmount mostra /usr come un export. Quando si cambia directory in /host/foobar/usr, amd cerca di risolvere foobar e automaticamente monta l'export desiderato. amd puň essere avviato dagli scripts di startup inserendo le seguenti linee in /etc/rc.conf: amd_enable="YES" Inoltre, altri flags personalizzati possono essere ad amd con le opzioni amd_flags. Di default, amd_flags č impostato a: amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map" Il file /etc/amd.map definisce le opzioni di default con le quali gli export sono montati. Il file /etc/amd.conf definisce alcune delle piů avanzate caratteristiche di amd. Consulta le pagine di manuale di &man.amd.8; e &man.amd.conf.5; per maggiori informazioni. John Lind Grazie al contributo di Problemi nell'integrazione con altri sistemi Alcuni adapter Ethernet per sistemi PC hanno limitazioni che possono portare a seri problemi seri di rete, in particolare con NFS. Questa difficoltŕ  non č specifica a FreeBSD, ma i sistemi FreeBSD ne sono affetti. I problemi avvengono quasi sempre quando sistemi PC (FreeBSD) sono connessi in rete con workstation ad alta performance, tipo quelli di Silicon Graphics, Inc., e Sun Microsystems, Inc. Il mount NFS funziona, ed alcune operazioni possono avere successo, ma d'improvviso sembra che il server non dia piů risposte al client, anche se le richieste da e verso altri sistemi continuano ad essere processate. Questo avviene sul sistema client, sia che il client sia il sistema FreeBSD sia che sia la workstation. Su molti sistemi, non c'č modo di effettuare lo shutdown del client in modo pulito una volta che questo problema si sia manifestato. L'unica soluzione č spesso quella di resettare il client, poichč la situazione NFS non puň essere risolta. Anche se la soluzione corretta č usare un adapter Ethernet dalle migliori prestazioni e capacitŕ , c'č un semplice workaround che permetterŕ  operazioni soddisfacenti. Se il sistem FreeBSD č il server, includi le opzioni al mount dal client. Se il sistema FreeBSD č il client, allora monta il file system NFS con l'opzione . Queste opzioni possono essere specificate usando il quarto campo della linea di fstab sul client per mount automatici, o usa il parametro del comando &man.mount.8; per mount manuali. Bisognerebbe notare che c'č un problema diverso, a volte confuso con questo, quando il server NFS ed il client sono su reti diverse. Se č questo il caso, accertatevi che i vostri router indirizzino correttamente l'informazione necessaria su UDP, o non andrai da nessuna parte, indipendentemente da cosa tu stia cercando di fare. Nei seguenti esempi, fastws č il nome host (interfaccia) di una workstation ad alte prestazioni, e freebox č il nome host (interfaccia) di un sistema FreeBSD con un adapter Ethernet a basse prestazioni. Inoltre, /sharedfs sarŕ  il file system esportato (vedi &man.exports.5;), e /project sarŕ  il mount point sul client per il file system montato. In tutti i casi, nota che le opzioni o e possono essere utili nella tua applicazione. Esempi dal sistema FreeBSD (freebox) come client da /etc/fstab su freebox: fastws:/sharedfs /project nfs rw,-r=1024 0 0 Come comando manuale di mount da freebox: &prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /project Esempi dal sistema FreeBSD come server in /etc/fstab su fastws: freebox:/sharedfs /project nfs rw,-w=1024 0 0 Come comando di mount manuale su fastws: &prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /project Praticamente ogni Ethernet adapter a 16-bit permetterŕ  operazioni senza le succitate restrizioni sulla dimensione di lettura e scrittura. Per chiunque č interessato, ecco cosa succede quando occorre il problema, il che spiega anche perchč sia non riparabile. NFS tipicamente lavora con una dimensione di block di 8 K (anche se puň creare frammenti di dimensione minore). Dal momento che la massima dimensione dei pacchetti Ethernet č attorno a 1500 bytes, il block NFS sarŕ  diviso in molti pacchetti Ethernet anche se č pur sempre una singola unitŕ  per il codice di piů alto livello e deve essere ricevuto, assemblato e riconosciuto come una unitŕ . La workstation ad alta performance puň inviare pacchetti che comprendono le unitŕ  NFS una dietro l'altra, l'una vicino all'altra come permette lo standard.i Sulla scheda a minore capacitŕ , gli ultimi pacchetti sovrascrivono i precedenti pacchetti della stessa unitŕ  prima che possano essere trasferiti all'host e l'unitŕ  nella sua interezza non puň essere ricostruita o riconosciuta. Come risultato, la workstation andrŕ  in timeout e cercherŕ  ancora di ripetere l'operazione, ma cercherŕ  con la stessa unitŕ  da 8 K, ed il processo sarŕ  ripetuto ancora, all'infinito. Mantenendo la dimensione dell'unitŕ  al di sotto della limitazione dei pacchetti Ethernet, ci assicuriamo che ogni completo pacchetto Ethernet ricevuto possa essere ricono sciuto individualmente, evitando cosě la situazione deadlock. Sovrascritture possono anche capitare quando una workstation ad alte prestazioni riversi dati verso un sistema PC, ma con la scheda di rete migliore, sovrascritture di questo tipo non sono garantite su unitŕ  NFS. Quando una sovrascrittura avviene, le unitŕ  affette saranno ritrasmesse, e c'č una buona probabilitŕ  che saranno ricevute, assemblate, e riconosciute. Bill Swingle Scritto da Eric Ogren Migliorato da Udo Erdelhoff Network Information System (NIS/YP) Cos'č? NIS Solaris HP-UX AIX Linux NetBSD OpenBSD NIS, che sta per Network Information Services, fu sviluppato da Sun Microsystems per centralizzare l'amministrazione di sistemi &unix; (in origine &sunos;). Ora in sostanza č diventato uno standard di settore; tutti i sistemi &unix; like (&solaris;, HP-UX, &aix;, Linux, NetBSD, OpenBSD, FreeBSD, etc) supportano NIS. yellow pagesNIS NIS in precedenza era noto come Yellow Pages, ma per una questione di marchi, Sun ha cambiato il nome. Il vecchio termine (e yp) č ancora si incontra ancora spesso. NIS domini E' un sistema client/server basato su RPC che permette ad un gruppo di macchine in un dominio NIS di condividere un insieme comune di file di configurazione. Questo permette ad un amministratore di sistema di installare sistemi client NIS con il minimo di dati di configurazione e di aggiungere, rimuovere o modificare dati di configurazione da una singola macchina. Windows NT E' simile al sistema di domini di &windowsnt;; anche se le implementazioni interne dei due sistemi sono del tutto diverse, le funzionalitŕ  base possono essere paragonate. Termini/Processi che Dovresti Conoscere Ci sono parecchi termini e molti importanti processi utente che incontrerai quando cercherai di implementare NIS su FreeBSD, sia che cerchi di creare un server NIS sia che cerchi di installare un client NIS: rpcbind portmap Termine Descrizione Nome dominio NIS Un server NIS master e tutti i suoi client (inclusi i suoi server slave) hanno un nome dominio NIS. Analogamente al nome dominio di &windowsnt;, il nome dominio NIS non ha nulla a che fare con il DNS. rpcbind Deve essere in esecuzione al fine di abilitare RPC (Remote Procedure Call, un protocollo di rete usato da NIS). Se rpcbind non č attivo, sarŕ  impossibile portare in esecuzione un server NIS o fungere da client NIS ypbind Esegue il bind di un client NIS al suo server. Prenderŕ  il nome dominio NIS dal sistema, e, usando RPC, si connetterŕ  al server. ypbind č il fulcro di una comunicazione client-server in ambiente NIS; se ypbind muore su un client, questo non sarŕ  in grado di accedere il server NIS. ypserv Dovrebbe essere in esecuzione solo sui server NIS;č il processo NIS vero e proprio. Se &man.ypserv.8; muore, il server non sarŕ  piů in grado di rispondere a richieste NIS (si spera ci sia un server slave per sostituirlo). Ci sono alcune implementazioni di NIS (ma non quello di FreeBSD) che non cerca di ricollegarsi ad un altro server se il server che stava usando muore. Spesso, l'unica cosa che aiuta in questo caso č riavviare il processo server (o anche l'intero server o il processo ypbind sul client). rpc.yppasswdd Un altro processo che dovrebbe essere in esecuzione solo sui server master NIS; č un demone che permette a client NIS di cambiare le proprie password NIS. Se questo demone non č attivo, gli utenti dovranno loggarsi al server master NIS e cambiare le proprie password da lě. Come funziona? Ci sono tre tipi di host in ambiente NIS: master server, slave server e client. I server fungono da magazzino centralizzato per le informazioni sulla configurazione degli host. I server master mantengono la copia "ufficiale" di queste informazioni, mentre i server slave effettuano il mirror di queste informazioni per ridondanza. I client si affidano al server per ottenere queste informazioni. Le informazioni in molti file possono essere condivise in questo modo. I file master.passwd ,group e hosts sono in genere condivisi in questo modo via NIS. Qualora un processo su un client necessiti di informazioni che normalmente sarebbero trovate in questi file in locale, fa una query al server NIS a cui č legato. Tipi di macchine - - NIS - master server - - - Un server master NIS. Questo + Un server master NISNISmaster server. Questo server, analogamente a primary domain controller &windowsnt; , mantiene i file usati da tutti i client NIS. Il file passwd, il file group, e vari altri file usati da client NIS vivono sul server master. E' possibile per una macchina agire da master server NIS per piů di un dominio NIS. Comunque, questo caso non sarŕ  coperto in questa introduzione, che presuppone un ambiente NIS relativamente piccolo. - - NIS - slave server - - - NIS slave server. Analogamente + NIS slave serverNISslave server. Analogamente a backup domain controller &windowsnt;, i server slave NIS mantengono copie dei file di dati del server master NIS. I server slave NIS garantiscono la ridondanza che viene richiesta in ambienti importanti. Inoltre aiutano a bilanciare il carico del server master: i client NIS si legano sempre al NIS server che risponde per primo alla loro richiesta, compresi i server slave. - - NIS - client - - - NIS client. I client NIS, + NIS clientNISclient. I client NIS, come la maggior parte delle workstation &windowsnt; , si autenticano nei confronti del NIS server (o del domain controller &windowsnt; nel caso di workstation &windowsnt;) per effettuare il login. Usare NIS/YP Questa sezione riguarderŕ  l'installazione di un ambiente di esempio NIS. Il Piano Supponiamo che tu sia l'amministratore di un piccolo laboratorio universitario. Questo laboratorio, che consiste di 15 macchine FreeBSD, al momento non ha un sistema centralizzato di amministrazione; ogni macchina ha il suo /etc/passwd e /etc/master.passwd. Questi file sono tenuti sincronizzati fra di loro attraverso intervento manuale; al momento, quando aggiungi un utente al laboratorio, devi eseguire adduser su tutte e 15 le macchine. Chiaramente, questa situazione č provvisoria, cosě hai deciso di convertire il laboratorio a NIS, usando due delle macchine come server. Cosě la configurazione del laboratorio adesso sembra questa: Nome della macchina Indirizzo IP Ruolo della macchina ellington 10.0.0.2 NIS master coltrane 10.0.0.3 NIS slave basie 10.0.0.4 Workstation della facoltŕ bird 10.0.0.5 Macchina client cli[1-11] 10.0.0.[6-17] Altre macchine client Se stai installando uno schema NIS per la prima volta, č una buona idea riflettere su come affrontarlo. Indipendemente dalla dimensione della rete, ci sono alcune decisioni che devono essere prese. Scegliere un nome dominio NIS NIS Nome dominio Questo puň non essere il nome dominio a cui sei abituato. Per la precisione viene chiamato nome dominio NIS. Quando un client fa il broadcast della sua richiesta per informazioni, include il nome del dominio NIS di cui fa parte. In questo modo molti server su una rete possono distinguere a quale server la richiesta č riferita. Considerate il nome dominio NIS come il nome per un gruppo di host che sono collegati per qualche motivo. Alcune organizzazioni scelgono di usare il loro nome dominio Internet come nome dominio NIS. Questo non č raccomandabile in quanto puň causare confusione quando si cerchi di debuggare problemi di rete. Il nome dominio NIS dovrebbe essere unico all'interno della tua rete ed č utile che sia descrittivo del gruppo di macchine che rappresenta. Per esempio, il dipartimento di Arte della Acme Inc. puň essere nel dominio acme-art. Per questo esempio, si presume tu abbia scelto il nome test-domain. SunOS Comunque, alcuni sistemi operativi (principalmente &sunos;) usano il loro nome dominio NIS come loro nome dominio Internet. Se una o piů macchine sulla tua rete hanno questa restrizione, tu devi usare il nome dominio Internet come il tuo nome dominio NIS. Requisiti fisici dei server Ci sono molte cose da tener in mente quando si sceglie quale macchina usare come server NIS. Una delle caratteristiche piů sfortunate di NIS č il livello di dipendenza che i client hanno verso il server. Se un client non riesce a contattare il server per il suo dominio NIS, molto spesso la macchina risulta inutilizzabile. La mancanza di informazioni utente e di gruppo fa sě che molti sistemi si blocchino. Tenendo questo in mente dovresti accertati di scegliere una macchina che non sia soggetta a reboot frequenti o una che non sia usata per sviluppo. Il server NIS dovrebbe essere in teoria una macchina stand alone il cui unico scopo di esistenza č essere un server NIS. Se hai una rete non pesantemente trafficata, č accettabile installare il server NIS su una macchina che esegue altri servizi, basta ricordarsi che se il server NIS diventa irrangiungibile, tutti i tuoi client NIS ne saranno affetti in modo negativo. Server NIS Le copie canoniche di tutte le informazioni NIS sono conservate su una singola macchina chiamata il server master NIS. I database usati per conservare le informazioni sono chiamate mappe NIS. In FreeBSD, queste mappe sono conservate in /var/yp/[nome-dominio] dove [nome-dominio] č il nome del dominio NIS che si server. Un singolo server NIS puň supportare molti domini al tempo stesso, di conseguenza č possibile avere molte directory di questo tipo, una per ogni dominio supportato. Ogni dominio avrŕ  il suo insieme indipendente di mappe. I server NIS master e slave gestiscono tutte le richieste NIS col demone ypserv. ypserv č responsabile per la ricezione delle richieste in entrata dai client NIS, traducendo il dominio richiesto e il nome mappa ad un percorso verso il file di database e trasmettendo i dati indietro al client. Installare un server master NIS NIS configurazione del server Installare un server master NIS puň essere relativamente semplice, a seconda delle tue necessitŕ . FreeBSD presenta un supporto nativo per NIS. Tutto quello che devi fare č aggiungere le seguenti linee a /etc/rc.conf, e FreeBSD farŕ  il resto. nisdomainname="test-domain" Questa linea imposterŕ  il nome domino NIS a test-domain al momento della configurazione di rete (ad esempio dopo il reboot). nis_server_enable="YES" Questa linea dirŕ  a FreeBSD di avviare i processi NIS server la prossima volta che la rete č riavviata. nis_yppasswdd_enable="YES" Questo avvierŕ  il demone rpc.yppasswd che, come accennato prima, permetterŕ  agli utenti di cambiare la loro password NIS dalle macchine client. A seconda delle tue impostazioni NIS, potresti aver bisogno di aggiungere altre linee. Leggi la sezione sui NIS server che sono anche NIS client , di seguito, per dettagli. Ora, tutto quello che devi fare č eseguire il comando /etc/netstart come super-utente. Questo imposterŕ  il sistema, usando i valori che hai specificato in /etc/rc.conf. Inizializzare le mappe NIS NIS mappe Le mappe NIS sono file di database, che sono conservati nella directory /var/yp. Sono generati da file di configurazione nella directory /etc del NIS master, con una eccezione: il file /etc/master.passwd. C'č un buon motivo per questo, infatti normalmente non vuoi che siano propagate le password a root e ad altri account amministrativi a tutti gli altri server nel dominio NIS. Cosě prima di inizializzare le mappe NIS, dovresti: &prompt.root; cp /etc/master.passwd /var/yp/master.passwd &prompt.root; cd /var/yp &prompt.root; vi master.passwd Dovresti rimuovere tutte le linee che riguardano account di sistema (bin, tty, kmem, games, etc.), cosě come altri account che non vuoi siano propagate ai client NIS (per esempio root ed ogni altro account con UID 0 (super-utente)). Accertati che il file /var/yp/master.passwd non sia nč leggibile dal gruppo nč dal resto del mondo (modo 600)! Usa il comando chmod, se appropriato. Tru64 UNIX Quando hai finito, č il momento di inizializzare le mappe NIS! FreeBSD include uno script chiamato ypinit che lo fa per te (leggi la sua pagina di manuale per dettagli). Nota che questo script č disponibile sulla maggior parte dei sistemi operativi &unix; ma non su tutti. Su Digital Unix/Compaq Tru64 UNIX č chiamato ypsetup. Poichč stiamo generando mappe per un NIS master, passeremo l'opzione al comando ypinit. Per generare le mappe NIS, supponendo che tu abbia giŕ  eseguito i passi di cui sopra, esegui: ellington&prompt.root; ypinit -m test-domain Server Type: MASTER Domain: test-domain Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. At this point, we have to construct a list of this domains YP servers. rod.darktech.org is already known as master server. Please continue to add any slave servers, one per line. When you are done with the list, type a <control D>. master server : ellington next host to add: coltrane next host to add: ^D The current list of NIS servers looks like this: ellington coltrane Is this correct? [y/n: y] y [..output from map generation..] NIS Map update completed. ellington has been setup as an YP master server without any errors. ypinit dovrebbe aver creato /var/yp/Makefile da /var/yp/Makefile.dist. Quando creato, questo file assume che tu stia operando su un ambiente NIS a server singolo con solo macchine FreeBSD. Dal momento che test-domain ha anche un server slave, devi editare /var/yp/Makefile: ellington&prompt.root; vi /var/yp/Makefile Dovresti commentare la linea che dice NOPUSH = "True" (se non č giŕ commentata). Impostare un server slave NIS NIS slave server Impostare un server NIS slave č anche piů semplice che impostare il master. Loggati al server slave ed edita il file /etc/rc.conf esattamente come hai fatto col server master. L'unica differenza č che ora dobbiamo usare l'opzione quando eseguiamo ypinit. L'opzione richiede che il nome del server NIS sia passato, cosě la nostra linea di comando assomiglia alla seguente: coltrane&prompt.root; ypinit -s ellington test-domain Server Type: SLAVE Domain: test-domain Master: ellington Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. There will be no further questions. The remainder of the procedure should take a few minutes, to copy the databases from ellington. Transferring netgroup... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byuser... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byhost... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring group.bygid... ypxfr: Exiting: Map successfully transferred Transferring group.byname... ypxfr: Exiting: Map successfully transferred Transferring services.byname... ypxfr: Exiting: Map successfully transferred Transferring rpc.bynumber... ypxfr: Exiting: Map successfully transferred Transferring rpc.byname... ypxfr: Exiting: Map successfully transferred Transferring protocols.byname... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byaddr... ypxfr: Exiting: Map successfully transferred Transferring netid.byname... ypxfr: Exiting: Map successfully transferred Transferring hosts.byaddr... ypxfr: Exiting: Map successfully transferred Transferring protocols.bynumber... ypxfr: Exiting: Map successfully transferred Transferring ypservers... ypxfr: Exiting: Map successfully transferred Transferring hosts.byname... ypxfr: Exiting: Map successfully transferred coltrane has been setup as an YP slave server without any errors. Don't forget to update map ypservers on ellington. Ora dovresti avere una directory chiamata /var/yp/test-domain. Copie delle mappe NIS del master server dovrebbero risiedere in questa directory. Dovresti accertarti che siano aggiornate. La seguente linea di /etc/crontab sul tuo server slave dovrebbe far ciň: 20 * * * * root /usr/libexec/ypxfr passwd.byname 21 * * * * root /usr/libexec/ypxfr passwd.byuid Queste due linee forzano lo slave a sincronizzare le sue mappe con le mappe del server master. Anche se queste entry non sono obbligatorie, dal momento che il server master cerca di assicurarsi che tutte le modifiche alle sue mappe NIS siano comunicate ad i suoi slave e perchč le informazioni sulle password sono vitali per i sistemi che dipendono dal server, č una buona idea forzare gli aggiornamenti. Questo č ancora piů importante su reti trafficate dove gli aggiornamenti delle mappe potrebbero non essere completi. Adesso, esegui il comando /etc/netstart anche sullo slave, per avviare il server NIS. Client NIS Un client NIS stabilisce quello che č chiamato un binding ad un particolare NIS server usando il demone ypbind. ypbind controlla il dominio di default del sistema (impostato dal comando domainname), ed inizia a fare broadcast di richieste RPC sulla rete locale. Queste richieste specificano il nome del dominio per il quale ypbind sta cercando di stabilire un binding. Se un server č stato configurato a servire il dominio richiesto, risponderŕ  a ypbind, che registrerŕ  l'indirizzo del server. Se ci sono molti server disponibili (ad esempio un master e molti slave), ypbind userŕ  l'indirizzo del primo che risponde. Da quel momento in poi, il sistema client dirigerŕ  tutte le sue richieste NIS a quel server. ypbind occasionalmente farŕ  un ping del server per accertarsi che sia su ed attivo. Se non riceve una risposta di uno dei suoi ping in un tempo accettabile, ypbind segnerŕ  il dominio come non connesso e inizierŕ  di nuovo a fare broadcasting nella speranza di localizzare un altro server. Impostare un client NIS NIS configurazione del client Impostare una macchina FreeBSD perchč sia un client NIS č abbastanza semplice. Edita il file /etc/rc.conf e aggiungi le seguenti linee per impostare il nome dominio NIS ed avviare ypbind all'avvio della rete: nisdomainname="test-domain" nis_client_enable="YES" Per importare tutte le possibili linee di password dal server NIS, rimuovi tutti gli account utente dal tuo /etc/master.passwd ed usa vipw per aggiungere la seguente linea alla fine del file: +::::::::: Questa linea permetterŕ  a chiunque con un valido account nella mappa delle password del server NIS di loggarsi sul client. Ci sono molti modi per configurare il tuo client NIS cambiando questa linea. Leggi la sezione sui netgroups di seguito per maggiori informazioni. Per letture piů dettagliate vedere il libro della O'Reilly Managing NFS and NIS. Dovresti tenere almeno un account locale (non importato via NIS) nel tuo file /etc/master.passwd e questo account dovrebbe essere anche un membro del gruppo wheel. Se c'č qualche problema con NIS, questo account puň essere usato per loggarsi da remoto, diventare root e riparare le cose. Per impostare tutte le possibili linee dei gruppi dal server NIS, aggiungi questa linea al tuo file /etc/group: +:*:: Dopo aver completato questi passi, dovresti essere in grado di eseguire ypcat passwd e vedere la mappa delle password del NIS server. Sicurezza di NIS In generale, ogni utente remoto puň eseguire una RPC a &man.ypserv.8; ed ottenere i contenuti delle tue mappe NIS, ammesso che l'utente remoto conosca il tuo nome dominio. Per prevenire tali transazioni non autorizzate, &man.ypserv.8; supporta una caratteristica chiamata securenets che puň essere usata per restringere l'accesso ad un dato insieme di host. All'avvio &man.ypserv.8; cercherŕ  di caricare le informazioni delle securenets da un file chiamato /var/yp/securenets. Questo percorso varia a secondo del percorso specificato con l'opzione . Questo file contiene linee che consistono di una specificazione della rete e di una maschera di rete separate da spazi vuoti. Le linee che cominciano con # sono considerati commenti. Un esempio di file securenets puň assomigliare al seguente: # allow connections from local host -- mandatory 127.0.0.1 255.255.255.255 # allow connections from any host # on the 192.168.128.0 network 192.168.128.0 255.255.255.0 # allow connections from any host # between 10.0.0.0 to 10.0.15.255 # this includes the machines in the testlab 10.0.0.0 255.255.240.0 Se &man.ypserv.8; riceve una richiesta da un indirizzo che coincide con una di queste regole, processerŕ  la richiesta normalmente. Se l'indirizzo non coincide la richiesta sarŕ  ignorata ed un messaggio di warning sarŕ  loggato. Se il file /var/yp/securenets non esiste, ypserv permetterŕ  connessioni da ogni host. Il programma ypserv ha anche supporto per il pacchetto di Wietse Venema TCP Wrapper. Questo permette all'amministratore di usare i file di configurazione di TCP Wrapper per controlli sull'accesso al posto di /var/yp/securenets. Pur essendo entrambi questi meccanismi di accesso di controllo abbastanza sicuri, questi, come il test di porta privilegiata, sono vulnerabili agli attacchi IP spoofing. Tutto il traffico relativo a NIS dovrebbe essere bloccato al firewall. I server che usano /var/yp/securenets possono non riuscire a servire client NIS legittimi che abbiano implementazioni TCP/IP obsolete. Alcune di queste implementazioni impostano a zero tutti i bit degli host quando fanno broadcast e/o non riescono a osservare la maschera di sotto-rete quando calcolano l'indirizzo broadcast. Mentre alcuni di questi problemi possono essere corretti cambiando la configurazione del client, altri problemi possono causare il ritiro dei client in questione o l'abbandono di /var/yp/securenets. Usando /var/yp/securenets su un server con una tale obsoleta implementazione del TCP/IP č sicuramente una cattiva idea e causerŕ  alla perdita della funzionalitŕ  NIS per gran parte della tua rete. TCP Wrappers L'uso del pacchetto TCP Wrapper aumenta la latenza del tuo server NIS. Il ritardo addizionale puň essere lungo a sufficienza tanto da causare dei timeout in programmi client, specialmente su reti trafficate o con server NIS lenti. Se uno o piů client soffre di questi sintomi, dovresti convertire il sistema dei client in questione a server NIS slave e forzarli a non fare il binding a loro stessi. Impedire ad Alcuni Utenti di Loggarsi Nel nostro laboratorio c'č una macchina basie che si suppone sia una workstation solo della facoltŕ . Non vogliamo togliere questa macchina dal dominio NIS, tuttavia il file passwd sul server NIS master contiene account che sono sia della facoltŕ  sia degli studenti. Cosa possiamo fare? C'č un modo di impedire a specifici utenti di loggarsi ad una macchina, anche se sono presenti nel database NIS. Per farlo, tutto quello che devi fare č aggiungere -username alla fine del file /etc/master.passwd sulla macchina client, dove username č lo username dell'utente di cui vuoi impedire l'accesso. E' meglio fare questo con vipw dato che vipw farŕ  un controllo di correttezza dei tuoi cambiamenti a /etc/master.passwd, e ricostruirŕ  automaticamente il database delle password quando hai finito di editarlo. Ad esempio, se vogliamo impedire l'accesso all'utente bill verso l'host basie faremmo: basie&prompt.root; vipw [aggiungi -bill alla fine del file, poi esci] vipw: rebuilding the database... vipw: done basie&prompt.root; cat /etc/master.passwd root:[password]:0:0::0:0:The super-user:/root:/bin/csh toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin operator:*:2:5::0:0:System &:/:/sbin/nologin bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin news:*:8:8::0:0:News Subsystem:/:/sbin/nologin man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin +::::::::: -bill basie&prompt.root; Udo Erdelhoff Grazie al contributo di Usare i Netgroups netgroups Il metodo mostrato nella sezione precedente funziona ragionevolmente bene se hai bisogno di regole speciali per un numero molto piccolo di utenti e/o macchine. Su reti piů grandi, certamente ti dimenticherai di impedire l'accesso di certi utenti a macchine dal ruolo critico, oppure potresti perfino finire a modificare ogni macchina separatamente, in questo modo perdendo il beneficio centrale di NIS: l'amministrazione centralizzata. La soluzione degli sviluppatori NIS a questo problema č chiamata netgroups. Il loro scopo e la loro semantica possono essere paragonate ai normali gruppi utenti usati dal file system &unix;. L'unica differenza č la mancanza di un ID numerico e l'abilitŕ  di definire un netgroup che includa sia gruppi utenti che altri netgroup. I netgroup furono sviluppati per gestire grandi reti complesse con centinaia di utenti e macchine. Da un lato questa č una Buona Cosa se sei obbligato a gestire una simile situazione. Dall'altro, questa complessitŕ  rende praticamente impossibile spiegare i netgroup con esempi relativamente semplici. L'esempio usato nel resto di questa sezione dimostra questo problema. Assumiamo che la favorevole introduzione di NIS nei tuoi laboratori catturi l'interesse dei tuoi superiori. Il tuo prossimo compito č di estendere il tuo dominio NIS per coprire alcune altre macchine del campo. Le due tabelle contengono i nomi dei nuovi utenti e delle nuove macchine, con una breve descrizione. User Name(s) Description alpha, beta Impiegato normale del dipartimento IT charlie, delta Il nuovo apprendista del dipartimento IT echo, foxtrott, golf, ... Impiegato ordinario able, baker, ... Gli interni correnti Machine Name(s) Description war, death, famine, pollution Il tuoi server piů importanti. Solo gli impiegati IT hanno il permesso di loggarsi in queste macchine. pride, greed, envy, wrath, lust, sloth Server meno importanti. Tutti i membri del dipartimento IT hanno il permesso di loggarsi a queste macchine. one, two, three, four, ... Workstation normali. Solo veri impiegati hanno permesso di accedere a queste macchine. trashcan Una macchina molto vecchia senza alcun dato critico. Anche gli interni hanno permesso di usare questa macchina. Se provi ad implementare queste restrizioni bloccando separatamente ogni utente, dovresti aggiungere una linea -user ad ogni passwd per ogni utente che non ha il permesso di loggarsi in quel sistema. Se ti dimentichi anche solo di una linea, potresti essere nei pasticci. Puň essere ragionevole fare ciň correttamente durante l'installazione iniziale, comunque certamente ti dimenticherai alla fine di aggiungere le linee per i nuovi utenti durante le operazioni giornaliere. Dopo tutto, Murphy era un ottimista. Gestire questa situazione con i netgroup offre molti vantaggi. Non c'č bisogno di gestire separatamente ogni utente; basta assegnare un utente ad uno o piů netgroup e permettere o impedire il login a tutti i membri del netgroup. Se aggiungi una nuova macchina, dovrai solo definire restrizioni di login per i netgroup. Se un nuovo utente viene aggiunto, dovrai solo aggiungere l'utente ad uno o piů netgroup. Questi cambiamenti sono indipendenti l'uno dall'altro: non piů per ogni combinazione di utenti e macchine fai ...Se la tua installazione NIS č pianificata con attenzione, dovrai solo modificare esattamente un file centrale di configurazione per garantire o negare l'accesso alle macchine. Il primo passo č l'inizializzazione della mappa NIS netgroup. &man.ypinit.8; di FreeBSD non crea questa mappa di default, ma la sua implementazione NIS la supporterŕ  una volta che č stata creata. Per aggiungere una linea alla mappa, semplicemente usa il comando ellington&prompt.root; vi /var/yp/netgroup e poi inizia ad aggiungere contenuti. Per i nostri esempi abbiamo bisogno di almeno quattro netgroup: impiegati IT, apprendisti IT, impiegati normali ed interni. IT_EMP (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) USERS (,echo,test-domain) (,foxtrott,test-domain) \ (,golf,test-domain) INTERNS (,able,test-domain) (,baker,test-domain) IT_EMP, IT_APP etc. sono i nomi dei netgroup. Ogni gruppo fra parentesi tonde aggiunge uno o piů account utente. I tre campi dentro il gruppo sono: Il nome degli host dove le seguenti caratteristiche sono valide. Se non specifichi un nome host, la linea č valida per tutti gli host. Se specifichi un nome host, entrerai nel regno dell'oscuritŕ , dell'orrore e della confusione assoluta. Il nome dell'account che appartiene a questo netgroup. Il dominio NIS per l'account. Puoi importare account da altri domini NIS nel tuo netgroup se sei uno di quei ragazzi sfortunati con piů di un dominio NIS. Ognuno di questi campi puň contenere wildcards. Leggi &man.netgroup.5; per dettagli. netgroups Nomi netgroup piů lunghi di 8 caratteri non dovrebbero essere usati, specialmente se hai macchine che eseguono altri sistemi operativi all'interno del tuo dominio NIS. I nomi sono case sensitive; usare le lettere maiuscole per il tuo netgroup č un modo semplice per distinguere fra utenti, macchine e nomi di netgroup. Alcuni client NIS (non FreeBSD) non possono gestire netgroup con un numero troppo grande di linee. Ad esempio, alcune vecchie versioni di &sunos; iniziano ad avere problemi se un netgroup contiene piů di 15 linee. Puoi superare questo limite creando molti sotto-netgroup con 15 o meno utenti ed un vero netgroup che consiste dei sotto-netgroup: BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...] BIGGRP2 (,joe16,domain) (,joe17,domain) [...] BIGGRP3 (,joe31,domain) (,joe32,domain) BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3 Puoi ripetere questo processo se hai bisogno di piů di 225 utenti all'interno di un singolo netgroup. Attivare e distribuire la tua nuova mappa NIS č facile: ellington&prompt.root; cd /var/yp ellington&prompt.root; make Questo genererŕ  le tre mappe NIS netgroup, netgroup.byhost e netgroup.byuser. Usa &man.ypcat.1; per controllare che le tue nuove mappe NIS siano disponibili: ellington&prompt.user; ypcat -k netgroup ellington&prompt.user; ypcat -k netgroup.byhost ellington&prompt.user; ypcat -k netgroup.byuser L'output del tuo primo comando dovrebbe assomigliare a /var/yp/netgroup. Il secondo comando non produrrŕ  output se non hai specificato netgroup specifici agli host. Il terzo comando puň essere usato per ottenere una lista dei netgroup di un utente. L'installazione del client č abbastanza semplice. Per configurare il server war, devi solo eseguire &man.vipw.8; e sostituire la linea +::::::::: con +@IT_EMP::::::::: Ora, solo i dati per l'utente definito nel netgroup IT_EMP sono importati nel database delle password di war e solo questi utenti hanno permesso di accesso. Sfortunatamente, questa limitazione si applica anche alla funzione della shell ~ ed a tutte le routine che convertono fra nomi utenti e user ID numerici. In altre parole,cd ~user non funzionerŕ , ls -l mostrerŕ  gli ID numerici invece dello username e find . -user joe -print darŕ  l'errore No such user. Per riparare questo, dovrai importare tutte le linee dell'utente senza permettere a loro di loggarsi sui tuoi server. Questo puň essere ottenuto aggiungendo un'altra linea a /etc/master.passwd. Questo dovrebbe contenere: +:::::::::/sbin/nologin, dal significato Importa tutte le entry ma imposta la shell di login a /sbin/nologin nelle linee importate. Puoi sostituire ogni campo nella linea passwd piazzando un valore di default nel tuo /etc/master.passwd. Accertati che la linea +:::::::::/sbin/nologin sia piazzata dopo +@IT_EMP:::::::::. Altrimenti tutti gli account utente importati da NIS avranno /sbin/nologin come loro shell di login. Dopo questo cambiamento, dovrai solo cambiare una mappa NIS se un nuovo impiegato si unisce al dipartimento IT. Puoi usare un simile approccio per i server meno importanti sostituendo +::::::::: nella tua versione locale di /etc/master.passwd con qualcosa del tipo: +@IT_EMP::::::::: +@IT_APP::::::::: +:::::::::/sbin/nologin Le linee corrispondenti per le workstation normali potrebbero essere: +@IT_EMP::::::::: +@USERS::::::::: +:::::::::/sbin/nologin E tutto sarebbe a posto fino a che non c'č un cambiamento di policy dopo poche settimane: il dipartimento IT inizia ad assumere interni. Gli interni IT hanno permesso di usare le normali workstation ed i server meno importanti; e gli apprendisti IT hanno permesso di loggarsi ai server principali. Aggiungi un nuovo netgroup IT_INTERN, aggiungi i nuovi interni IT a questo nuovo netgroup IT_INTERN, e inizia a cambiare la configurazione su ogni nuova macchina... Come il vecchio adagio dice:Errori nella pianificazione centralizzata porta a caos globale. L'abilitŕ  NIS di creare netgroup da altri netgroup puň essere usata per prevenire situazioni come queste. Una possibilitŕ  č la creazione di netgroup basati sul ruolo. Per esempio, potresti creare un netgroup chiamato BIGSRV per definire le restrizioni di login per i server importanti, un altro netgroup chiamato SMALLSRV per i server meno importanti ed un terzo netgroup chiamato USERBOX per le workstation normali. Ognuna di questi netgroup contiene i netgroup che hanno permesso di accesso a queste macchine. Le nuove linee della tua mappa NIS dovrebbero assomigliare a questa: BIGSRV IT_EMP IT_APP SMALLSRV IT_EMP IT_APP ITINTERN USERBOX IT_EMP ITINTERN USERS Questo metodo di definire restrizioni di login funziona ragionevolmente bene se puoi definire gruppi di macchine con restrizioni identiche. Sfortunatamente questa č l'eccezione, non la regola. La maggior parte del tempo, avrai necessitŕ  di definire restrizioni di login macchina per macchina. Definizioni di netgroup specifiche per ogni macchina sono l'altra possibilitŕ  per gestire il cambiamento di policy delineato sopra. In questo scenario il /etc/master.passwd di ogni macchina deve contenere due linee che iniziano con +. La prima di queste aggiunge un netgroup con l'account che ha il permesso di loggarsi alla macchina, il secondo aggiunge tutti gli altri account con /sbin/nologin come shell. E' buona norma usare la versione MAIUSCOLA del nome macchina come nome del netgroup. In altre parole, le linee dovrebbero assomigliare a questa: +@BOXNAME::::::::: +:::::::::/sbin/nologin Una volta che hai completato questo task per tutte le macchine, non dovrai mai piů modificare la versione locale di /etc/master.passwd. Tutti gli ulteriori cambiamenti possono essere gestiti modificando la mappa NIS. Di seguito un esempio di una possibile mappa netgroup per questo scenario con altri vantaggi addizionali: # Define groups of users first IT_EMP (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) DEPT1 (,echo,test-domain) (,foxtrott,test-domain) DEPT2 (,golf,test-domain) (,hotel,test-domain) DEPT3 (,india,test-domain) (,juliet,test-domain) ITINTERN (,kilo,test-domain) (,lima,test-domain) D_INTERNS (,able,test-domain) (,baker,test-domain) # # Now, define some groups based on roles USERS DEPT1 DEPT2 DEPT3 BIGSRV IT_EMP IT_APP SMALLSRV IT_EMP IT_APP ITINTERN USERBOX IT_EMP ITINTERN USERS # # And a groups for a special tasks # Allow echo and golf to access our anti-virus-machine SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain) # # machine-based netgroups # Our main servers WAR BIGSRV FAMINE BIGSRV # User india needs access to this server POLLUTION BIGSRV (,india,test-domain) # # This one is really important and needs more access restrictions DEATH IT_EMP # # The anti-virus-machine mentioned above ONE SECURITY # # Restrict a machine to a single user TWO (,hotel,test-domain) # [...more groups to follow] Se stai usando qualche tipo di database per gestire i tuoi account utente, dovresti essere in grado di creare la prima parte della mappa con i tuoi tool di report del database. In questo modo, i nuovi utenti avranno accesso automaticamente alle macchine. Un ultima nota di avvertimento: puň non essere sempre consigliabile usare netgroup basati sulle macchine. Se stai per mettere in produzione qualche dozzina o perfino qualche centinaia di macchine identiche per laboratori studente, dovresti usare netgroup basati sul ruolo invece che netgroup basati sulla macchina, per tenere la dimensione della mappa NIS al di sotto di un limite ragionevole. Cose Importanti da Ricordare Ci sono ancora un paio di cose che dovrai cambiare ora che operi in ambiente NIS. Ogni volta che devi aggiungere un utente al laboratorio devi aggiungerlo solo al server master NIS e devi ricordarti di ricostruire le mappe NIS. Se ti dimentichi di farlo il nuovo utente non sarŕ  in grado di loggarsi in alcuna macchina eccetto che sul server NIS master. Per esempio, se abbiamo bisogno di aggiungere un nuovo utente jsmith al laboratorio, faremmo: &prompt.root; pw useradd jsmith &prompt.root; cd /var/yp &prompt.root; make test-domain Puoi anche eseguire adduser jsmith invece di pw useradd jsmith. Tieni gli account amministrativi fuori dalle mappe NIS. Normalmente non vuoi che gli account amministrativ e le password si propaghino a macchine che avranno utenti che non dovrebbero avere accesso a quegli account. Tieni al sicuro il NIS master e slave, e minimizza il tempo in cui sono giů. Se qualcuno hackera o semplicemente spegne queste macchine riesce a privare molte persone della possibilitŕ  di loggarsi al laboratorio. Questa č la principale debolezza di ogni sistema centralizzato di amministrazione. Se non proteggi il tuo server NIS, avrai un mucchio di utenti arrabbiati! Compatibilitŕ con NIS v1 ypserv di FreeBSD supporta fino ad un certo punto client NIS v1. L'implementazione di NIS di FreeBSD usa solo il protocollo NIS v2, comunque altre implementazioni includono supporto per il protocollo v1 per compatibilitŕ  all'indietro coi vecchi sistemi. Il demone ypbind fornito con questi sistemi proverŕ  a stabilire un binding con un server NIS v1 anche se potrebbero non averne mai bisogno (e possono continuare a fare broadcast in ricerca di uno anche dopo che hanno ricevuto risposta da un server v2). Nota che mentre il supporto per i client normali viene garantito, questa versione di ypserv non gestisce richieste di trasferimento di mappe v1; di conseguenza, non puň essere usato come master o slave in congiunzione con server NIS piů vecchi che supportano solo il protocollo v1. Fortunatamente, probabilmente non ci sono server del genere in uso oggi. Server NIS che Sono Anche Client Bisogna prestare molta attenzione quando si esegue ypserv in un dominio multi-server dove le macchine server sono anche client NIS. E' generalmente una buona idea forzare i server ad effettuare il binding a sč stessi piuttosto che permettere loro di effettuare il broadcast delle richieste binding e potenzialmente possono fare il bind una all'altra. Possono risultare strani errori quando un server va giů e gli altri sono dipendenti da lui. Alla fine, tutti i client andranno in timeout e cercheranno di effettuare il bind ad altri server, ma il ritardo di questa operazione puň essere considerevole e l'uscita di errore č ancora presente dato che i server possono fare il binding fra di loro di nuovo. Puoi forzare un host a fare il binding ad un server in particolare usando ypbind con l'opzione . Se non vuoi fare questa azione a mano ogni volta che fai il reboot del tuo server NIS, puoi aggiungere queste linee al tuo /etc/rc.conf: nis_client_enable="YES" # run client stuff as well nis_client_flags="-S NIS domain,server" Consulta &man.ypbind.8; per ulteriori informazioni. Formato delle Password NIS formato delle password Uno dei problemi piů comuni in cui la gente incappa quando tenta di implementare NIS č la compatibilitŕ del formato delle password. Se il tuo server NIS usa password criptate con DES, supporterŕ solo client che usano anche loro DES. Ad esempio, se hai client NIS &solaris; nella rete, dovrai quasi certamente usare password criptate con DES. Per controllare quale formato il tuo server e client usano, dai un'occhiata a /etc/login.conf. Se l'host č configurato per usare password criptate DES, la classe default conterrŕ  una linea simile a questa: default:\ :passwd_format=des:\ :copyright=/etc/COPYRIGHT:\ [Further entries elided] Altri valori possibili per l'opzione passwd_format includono blf e md5 (per password criptate con Blowfish e con MD5, rispettivamente). Se hai fatto modifiche a /etc/login.conf, dovrai anche ricostruire il database delle possibilitŕ  di login, il che si ottiene eseguendo il seguente comando come root: &prompt.root; cap_mkdb /etc/login.conf Il formato delle password che sono giŕ  in /etc/master.passwd non sarŕ  aggiornato finchč un utente cambia la sua password per la prima volta dopo che il database delle possibilitŕ  di login č ricostruito. Dopodichč per assicurarti che le password siano criptate con il formato che hai scelto, dovresti anche controllare che crypt_default in /etc/auth.conf dia precedenza al formato delle password scelto. Per farlo, inserisci il formato che hai scelto per primo nella lista. Ad esempio, quando usi password criptate DES, la linea dovrebbe essere: crypt_default = des blf md5 Seguendo i passi sopra citati su ognuno dei &os; basati su NIS server e client, puoi star sicuro che tutti siano d'accordo su quale formato delle password sia usato all'interno della rete. Se hai problemi nell'identificazione su un client NIS, questo č un buon punto di partenza per cercare possibili problemi. Ricordati: se vuoi mettere in produzione un server NIS per una rete eterogenea, dovrai probabilmente usare DES su tutti i sistemi poichč questo č il minimo standard comune. Greg Sutter Scritto da Configurazione Automatica della Rete (DHCP) Cos'č il DHCP? Dynamic Host Configuration Protocol DHCP Internet Software Consortium (ISC) DHCP, il Protocollo di Configurazione Host Dinamico, descrive i passi attraverso i quali un sistema si puň connettere ad una rete ed ottenere l'informazione necessaria per comunicare attraverso quella rete. Le versioni di FreeBSD prima della 6.0 usano l'implementazione DHCP client (&man.dhclient.8;) dell'ISC (Internet Software Consortium). Le ultime versioni usano il dhclient di OpenBSD preso da OpenBSD 3.7. Tutte le informazioni specifiche all'implementazione di dhclient in questa sede sono riferite all'uso dei client DHCP sia di ISC che di OpenBSD. Il server DHCP č quello incluso nella distribuzione ISC. Cosa Copre Questa Sezione Questa sezione descrive sia il lato client del sistema DHCP di ISC e di OpenBSD che il lato server del sistema DHCP ISC. Il programma client, dhclient, č giŕ integrato con FreeBSD, e la parte server č disponibile nel port net/isc-dhcp3-server. Le pagine di manuale &man.dhclient.8;, &man.dhcp-options.5;, e &man.dhclient.conf.5;, oltre ai riferimenti elencati oltre, sono risorse utili. Come Funziona UDP Quando dhclient, il client DHCP, viene eseguito sulla macchina client, inizia a fare broadcasting di richieste per informazioni di configurazione. Di default queste richieste sono sulla porta UDP 68. Il server risponde sulla porta UDP 67, dando al client un indirizzo IP ed altre informazioni rilevanti di rete come la netmask, il router ed il DNS server. Tutte queste informazioni arrivano sotto forma di un rilascio DHCP e sono valide sono per un certo periodo di tempo (configurato dall'amministratore del server DHCP). In questo modo, gli indirizzi IP bloccati da client che non sono piů connessi alla rete possono essere riutilizzati automaticamente. I client DHCP possono ottenere molti tipi di informazione dal server. Una lista esauriente puň essere trovata in &man.dhcp-options.5;. L'Integrazione con FreeBSD &os; integra completamente il client DHCP ISC o OpenBSD, dhclient (a seconda della versione di &os; utilizzata). Viene fornito supporto al client DHCP sia con l'installazione sia con il sistema base, rendendo inutile il bisogno di una conoscenza dettagliata della configurazione di rete su ogni rete che abbia un server DHCP. dhclient č stato incluso in tutte le distribuzioni FreeBSD a partire dalla 3.2. sysinstall DHCP č supportato da sysinstall. Quando configuri una interfaccia di rete con sysinstall, la seconda domanda che ti pone č: Vuoi provare a configurare l'interfaccia via DHCP?. Una risposta affermativa eseguirŕ dhclient, e, se ha successo, riempirŕ le informazioni di configurazione della rete in automatico. Ci sono due cose che devi fare per far sě che il tuo sistema usi il DHCP all'avvio: DHCP prerequisiti Accertati che il device bpf sia compilato nel tuo kernel. Per fare ciň, aggiungi device bpf al tuo file di configurazione del kernel, e ricompilalo. Per maggiori informazioni su come ricompilare i kernel, vedi . Il device bpf č giŕ parte del kernel GENERIC che č fornito con FreeBSD, cosě se non hai un kernel custom, non dovresti aver bisogno di crearne uno al fine di far funzionare il DHCP. Quelli di voi che sono particolarmente attenti alla sicurezza, dovrebbero sapere che il device bpf č anche il device che permette agli sniffer di pacchetti di funzionare correttamente (anche se devono sempre essere eseguiti come root). bpf č richiesto per l'uso del DHCP, ma se siete molto attenti alla sicurezza, non dovreste probabilmente aggiungere bpf al vostro kernel in previsione di un uso futuro del DHCP. Edita il tuo /etc/rc.conf per includere la seguente linea: ifconfig_fxp0="DHCP" Accertati di sostituire fxp0 con il nome dell'interfaccia che intendi configurare dinamicamente, come descritto in . Se stai usando una locazione diversa per dhclient, o se desideri passare flags addizionali a dhclient includi anche le linee seguenti (editandole come necessario): dhcp_program="/sbin/dhclient" dhcp_flags="" DHCP server Il server DHCP, dhcpd, č incluso come parte del port net/isc-dhcp3-server nella collezione dei ports. Questo port contiene il server DHCP ISC e la documentazione. Files DHCP file di configurazione /etc/dhclient.conf dhclient richiede un file di configurazione, /etc/dhclient.conf. Tipicamente il file contiene solo commenti, essendo i default ragionevolmente corretti. Questo file di configurazione č descritto dalla pagina di manuale &man.dhclient.conf.5;. /sbin/dhclient dhclient č linkato staticamente e risiede in /sbin. Le pagine di manuale di &man.dhclient.8; danno maggiori informazioni su dhclient. /sbin/dhclient-script dhclient-script č lo script di configurazione del client DHCP specifico di FreeBSD. Viene descritto in &man.dhclient-script.8; ma non dovrebbe aver bisogno di nessuna modifica utente per funzionare correttamente. /var/db/dhclient.leases Il client DHCP mantiene un database di validi rilasci in questo file, che viene scritto come un log. &man.dhclient.leases.5; ne dŕuna descrizione leggermente piů estesa. Ulteriori Letture Il protocollo DHCP č descritto in maniera estesa in RFC 2131. Informazioni aggiuntive sono presenti a questo URL: . Installare e Configurare un Server DHCP Cosa Copre Questa Sezione Questa sezione fornisce informazioni su come configurare un sistema FreeBSD che funzioni come un server DHCP usando l'implementazione del server DHCP dell'ISC (Internet Software Consortium). Il server non viene fornito come parte di FreeBSD, cosě dovrai installare il port net/isc-dhcp3-server per fornire questo servizio. Vedi per piů informazioni su come usare la Collezione dei Port. Installazione del DHCP Server DHCP installazione Per configurare il tuo sistema FreeBSD come un server DHCP, assicurati che il device &man.bpf.4; sia compilato nel kernel. Per farlo, aggiungi device bpf al file di configurazione del kernel, e ricompilalo. Per maggiori informazioni su come compilare un kernel, vedi . Il device bpf č giŕ parte del kernel GENERIC che viene fornito con FreeBSD, cosě non hai bisogno di creare un kernel custom per far funzionare il DHCP. Quelli di voi che sono particolarmente attenti alla sicurezza, dovrebbero notare che bpf č anche il device che permette agli sniffer di pacchetti di funzionare correttamente (anche se tali programmi hanno bisogno di accesso privilegiato). bpf č richiesto per il funzionamento del DHCP, ma se siete molto attenti alla sicurezza, probabilmente non dovreste includere bpf nel vostro kernel semplicemente perchč vi aspettate di usare il DHCP in qualche momento. La prossima cosa che devi fare č editare il file dhcpd.conf che č stato installato dal port net/isc-dhcp3-server. Di default, questo sarŕ /usr/local/etc/dhcpd.conf.sample e dovresti copiare questo file in /usr/local/etc/dhcpd.conf prima di procedere con i cambiamenti. Configurare il Server DHCP DHCP dhcpd.conf dhcpd.conf č composto di dichiarazioni riguardanti sottoreti ed host, e forse lo si spiega meglio con un esempio: option domain-name "example.com"; option domain-name-servers 192.168.4.100; option subnet-mask 255.255.255.0; default-lease-time 3600; max-lease-time 86400; ddns-update-style none; subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.129 192.168.4.254; option routers 192.168.4.1; } host mailhost { hardware ethernet 02:03:04:05:06:07; fixed-address mailhost.example.com; } Questa opzione specifica il dominio che verrŕ servito ai client come il dominio di default di ricerca. Si veda &man.resolv.conf.5; per piů informazioni. Questa opzione specifica una lista di server DNS separata da virgole, che i client dovrebbero usare. La netmask che sarŕ fornita ai client. Un client potrebbe richiedere una lunghezza di tempo specifica per la quale il rilascio sarŕ valido. Altrimenti il server assegnerŕ un tempo di rilascio con questa durata (in secondi). Questa č la lunghezza massima di tempo per la quale un server effettuerŕ un rilascio. Se un client dovesse richiedere un rilascio piů lungo, sarŕ effettuato un rilascio, anche se sarŕ valido solo per max-lease-time secondi. Questa opzione specifica se il server DHCP dovrŕ cercare di modificare il DNS quando un rilascio č accettato o liberato. Nella implementazione ISC questa opzione č richiesta. Questo identifica quale indirizzo IP dovrŕ essere usato nel pool riservato per l'allocazione ad i client. Gli indirizzi IP fra, ed inclusi, quelli dichiarati sono assegnabili agli utenti. Dichiara il default gateway che sarŕ assegnato ad i client. L'indirizzo hardware MAC di un host (cosicchč il server DHCP possa riconoscere un host quando fa una richiesta). Specifica che all'host dovrebbe sempre essere fornito lo stesso indirizzo IP. Nota che usare un hostname č corretto in questo caso, dato che il DHCP server risolverŕ l'hostname stesso prima di restituire l'informazione sul rilascio. Una volta che hai finito di scrivere il tuo dhcpd.conf, puoi abilitare il server DHCP in /etc/rc.conf, aggiungendo: dhcpd_enable="YES" dhcpd_ifaces="dc0" Sostituisci il nome dell'interfaccia dc0 con l'interfaccia (o le interfacce, separate da spazi) su cui il tuo server DHCP dovrebbe stare in ascolto per le richieste DHCP dei client. Quindi, puoi procedere ad avviare il server con il seguente comando: &prompt.root; /usr/local/etc/rc.d/isc-dhcpd.sh start Se hai bisogno di fare altri cambiamenti alla configurazione del server in futuro, č importante notare che l'invio di un segnale SIGHUP a dhcpd non fa sě che il file di configurazione sia ricaricato, come avviene con la maggior parte dei demoni. Dovrai inviare un segnale SIGTERM per fermare il processo, e poi riavviarlo usando il comando sopracitato. Files DHCP file di configurazione /usr/local/sbin/dhcpd dhcpd č linkato staticamente e risiede in /usr/local/sbin . La pagina di manuale di &man.dhcpd.8; installata con il port dŕ piů informazioni su dhcpd. /usr/local/etc/dhcpd.conf dhcpd richiede un file di configurazione, /usr/local/etc/dhcpd.conf , prima che possa iniziare a fornire il servizio ai client. Questo file deve contenere tutte le informazioni che devono essere fornite ai client che sono serviti, oltre alle informazioni riguardanti le operazioni del server. Questo file di configurazione č descritto dalla pagina di manuale &man.dhcpd.conf.5; installata dal port. /var/db/dhcpd.leases Il server DHCP mantiene un database dei rilasci che ha effettuato in questo file, che viene scritto come un log. La pagina di manuale &man.dhcpd.leases.5;, installata dal port ne dŕ una descrizione leggermente pi` lunga. /usr/local/sbin/dhcrelay dhcrelay č usata in ambienti avanzati dove un server DHCP reinvia le richieste da un client ad un altro server DHCP su una rete separata. Se hai bisogno di questa funzionalitŕ, installa il port net/isc-dhcp3-relay. La pagina di manuale &man.dhcrelay.8; fornita col port contiene piů dettagli. Chern Lee Grazie al contributo di Tom Rhodes Daniel Gerzo Domain Name System (<acronym>DNS</acronym>) Uno sguardo d'insieme BIND &os; utilizza, di default, una versione di BIND (Berkeley Internet Name Domain), che č la piů completa implementazione del protocollo DNS. DNS č il protocollo attraverso il quale nomi sono mappati ad indirizzi IP, e viceversa. Per esempio, una query per www.FreeBSD.org riceverŕ una replica con l'indirizzo IP del web server del The &os; Project, mentre una query per ftp.FreeBSD.org ritornerŕ l'indirizzo IP della corrispondente macchina FTP. Allo stesso modo, puň avvenire l'opposto. Una query per un indirizzo IP puň risolvere il suo nome host. Non č necessario avere in esecuzione un name server per fare DNS lookups su un sistema. &os; al momento viene distribuito con software DNS BIND9 di default. La nostra installazione fornisce caratteristiche di sicurezza migliorate, un nuovo layout del file system e configurazione &man.chroot.8; automatica. DNS DNS č coordinato su Internet attraverso un sistema alquanto complesso di name server autoritativi, ed altri name server di piů piccola scala che ospitano e gestiscono cache di informazioni individuali sui domini. Al momento corrente, BIND č mantenuto dall'Internet Software Consortium . Terminologia Per comprendere questo documento, alcuni termini relativi al DNS devono essere capiti. risolutore DNS inverso zona root Termine Definizione Forward DNS La mappa da hostname ad indirizzi IP. Origine Si riferisce al dominio coperto in un particolare file di zona. named, BIND, name server Nomi comuni per il pacchetto name server BIND all'interno di &os;. Risolutore Un processo di sistema attraverso il quale una macchina fa query su un name server per informazioni di zona. DNS inverso L'opposto del forward DNS; mappare indirizzi IP su nomi host. Zona root L'inizio della gerarchia della zona Internet. Tutte le zone cadono sotto la zona root, analogamente a come tutti i file nel file system cadono sotto la directory root. Zona Un dominio individuale, sottodominio, o porzione del DNS amministrato dalla stessa autoritŕ zone esempi Esempi di zone: . č la zona root org. č una zona Top Level Domain (TLD) sotto la zona root example.org. č una zona sotto la zona org. TLD 1.168.192.in-addr.arpa č una zona che referenzia tutti gli indirizzi IP che cadono sotto lo spazio IP 192.168.1.*. Come si puň vedere, la parte piů specifica di un nome host appare a sinistra. Per esempio example.org. č piů specifico di org., come org. č piů specifico della zona root. La disposizione di ogni parte di un nome host č analoga ad un file system: la directory /dev cade all'interno della root, e cosě via. Ragioni per Avere in Esecuzione un Name Server Attualmente vengono usati due tipi di name server: un name server autoritativo, ed un name server cache. Un name server autoritativo č necessario quando: uno vuole servire informazioni DNS a tutto il mondo, rispondendo in maniera autoritativa alle query. un dominio, tipo example.org, č registrato e gli indirizzi IP devono essere assegnati ad hostname sotto questo. un blocco di indirizzi IP richiede entry di DNS inverso (da IP ad hostname). un name server di backup, chiamato uno slave, deve rispondere alle query. Un name server cache č necessario quando: un server locale DNS puň tenere in cache e rispondere piů velocemente rispetto ad effettuare query ad un name server all'esterno. una riduzione nel traffico complessivo di rete č desiderato (č stato calcolato che il traffico DNS conta piů del 5% sul traffico totale di Internet). Quando uno fa una query per risolvere www.FreeBSD.org, il risolutore di solito fa una query al name server dell'ISP a cui si č connessi, ed ottiene una risposta. Con un server DNS locale, che fa cache, la query deve essere effettuata una volta sola dal server DNS che fa cache. Ogni query aggiuntiva non dovrŕ cercare all'esterno della rete locale, dato che l'informazione č tenuta in cache localmente. Come Funziona In &os;, il demone BIND č chiamato named per ovvie ragioni. File Descrizione &man.named.8; Il demone BIND. &man.rndc.8; Programma di controllo del name server. /etc/namedb Directory dove risiedono le informazioni di zona di BIND. /etc/namedb/named.conf File di configurazione del demone. A seconda di come certe zone sono configurate sul server, i file relativi a quelle zone possono essere trovate nelle sottodirectory master, slave, or dynamic della directory /etc/namedb. Questi file contengono le informazioni DNS che saranno distribuite dal name server in risposta alle query. Avviare BIND BIND avvio Dato che BIND č installato di default, configurarlo č relativamente semplice. La configurazione di default di named č quella di un name server basilare, eseguito in ambiente &man.chroot.8;. Per avviare il server una volta con questa configurazione, usa il seguente comando: &prompt.root; /etc/rc.d/named forcestart Per assicurarsi che il demone named sia avviato alla partenza, metti la seguente riga in /etc/rc.conf: named_enable="YES" Ci sono ovviamente molte opzioni di configurazione per /etc/namedb/named.conf che sono al di lŕ dello scopo di questo documento. Comunque, se siete interessati nelle opzioni di avvio per named su &os;, dai un'occhiata ai flags named_ in /etc/defaults/rc.conf e consulta la pagina di manuale &man.rc.conf.5;. Anche la sezione č una buona base di partenza. File di Configurazione BIND file di configurazione I file di configurazione per named al corrente risiedono nella directory /etc/named e necessiteranno di modifiche prima dell'uso, a meno che non si voglia un semplice resolver. Qui č dove la maggior pare della configurazione viene effettuata. Usando <command>make-localhost</command> Per configurare una zona master per il localhost visita la directory /etc/namedb ed esegui il seguente comando: &prompt.root; sh make-localhost Se tutto č andato bene, un nuovo file dovrebbe esistere nella sottodirectory master. I nomi dei file dovrebbero essere localhost.rev per il local domain name elocalhost-v6.rev per le configurazioni IPv6. Come il file di configurazione di default, l'informazione richiesta sarŕ presente nel file named.conf. <filename>/etc/namedb/named.conf</filename> // $FreeBSD$ // // Refer to the named.conf(5) and named(8) man pages, and the documentation // in /usr/share/doc/bind9 for more details. // // If you are going to set up an authoritative server, make sure you // understand the hairy details of how DNS works. Even with // simple mistakes, you can break connectivity for affected parties, // or cause huge amounts of useless Internet traffic. options { directory "/etc/namedb"; pid-file "/var/run/named/pid"; dump-file "/var/dump/named_dump.db"; statistics-file "/var/stats/named.stats"; // If named is being used only as a local resolver, this is a safe default. // For named to be accessible to the network, comment this option, specify // the proper IP address, or delete this option. listen-on { 127.0.0.1; }; // If you have IPv6 enabled on this system, uncomment this option for // use as a local resolver. To give access to the network, specify // an IPv6 address, or the keyword "any". // listen-on-v6 { ::1; }; // In addition to the "forwarders" clause, you can force your name // server to never initiate queries of its own, but always ask its // forwarders only, by enabling the following line: // // forward only; // If you've got a DNS server around at your upstream provider, enter // its IP address here, and enable the line below. This will make you // benefit from its cache, thus reduce overall DNS traffic in the Internet. /* forwarders { 127.0.0.1; }; */ Proprio come dicono i commenti, per beneficiare di una cache di un server superiore, puň essere abilitato forwarders. Sotto circostanze normali, un name server farŕ query ricorsive attraverso Internet cercando certi name server fino a chč non trova la risposta che sta cercando. Averlo abilitato farŕ sě che sarŕ fatta prima una query verso il name server superiore (o il name server fornito), avvantaggiandosi della sua cache. Se il name server superiore č un name server molto trafficato e veloce, puň valere la pena di abilitarlo. 127.0.0.1 non funzionerŕ qui. Cambia questo indirizzo IP in un name server superiore. /* * If there is a firewall between you and nameservers you want * to talk to, you might need to uncomment the query-source * directive below. Previous versions of BIND always asked * questions using port 53, but BIND versions 8 and later * use a pseudo-random unprivileged UDP port by default. */ // query-source address * port 53; }; // If you enable a local name server, don't forget to enter 127.0.0.1 // first in your /etc/resolv.conf so this server will be queried. // Also, make sure to enable it in /etc/rc.conf. zone "." { type hint; file "named.root"; }; zone "0.0.127.IN-ADDR.ARPA" { type master; file "master/localhost.rev"; }; // RFC 3152 zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA" { type master; file "master/localhost-v6.rev"; }; // NB: Do not use the IP addresses below, they are faked, and only // serve demonstration/documentation purposes! // // Example slave zone config entries. It can be convenient to become // a slave at least for the zone your own domain is in. Ask // your network administrator for the IP address of the responsible // primary. // // Never forget to include the reverse lookup (IN-ADDR.ARPA) zone! // (This is named after the first bytes of the IP address, in reverse // order, with ".IN-ADDR.ARPA" appended.) // // Before starting to set up a primary zone, make sure you fully // understand how DNS and BIND works. There are sometimes // non-obvious pitfalls. Setting up a slave zone is simpler. // // NB: Don't blindly enable the examples below. :-) Use actual names // and addresses instead. /* An example master zone zone "example.net" { type master; file "master/example.net"; }; */ /* An example dynamic zone key "exampleorgkey" { algorithm hmac-md5; secret "sf87HJqjkqh8ac87a02lla=="; }; zone "example.org" { type master; allow-update { key "exampleorgkey"; }; file "dynamic/example.org"; }; */ /* Examples of forward and reverse slave zones zone "example.com" { type slave; file "slave/example.com"; masters { 192.168.1.1; }; }; zone "1.168.192.in-addr.arpa" { type slave; file "slave/1.168.192.in-addr.arpa"; masters { 192.168.1.1; }; }; */ In named.conf, ci sono esempi di linee slave per zone di forward ed inverse. Per ogni nuova zona servita, una nuova linea di zona deve essere aggiunta a named.conf. Per esempio, la piů semplice entry per example.org puň assomigliare a: zone "example.org" { type master; file "master/example.org"; }; La zona č una master, come indicato dall'entry , e conserva le informazioni di zona su /etc/namedb/master/example.org indicata dalla entry . zone "example.org" { type slave; file "slave/example.org"; }; Nel caso slave, l'informazione di zona č trasferita dal name server master per quella zona particolare, e salvata nel file specificato. Se e quando il master muore o č irraggiungibile, il name server slave avrŕ le informazioni di zona trasferite e sarŕ in grado di servirlo. File di Zona BIND zone files Un esempio di file di zona master per example.org (che esiste all'interno di /etc/namedb/master/example.org ) č la seguente: $TTL 3600 ; 1 hour example.org. IN SOA ns1.example.org. admin.example.org. ( 2006051501 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) ; DNS Servers IN NS ns1.example.org. IN NS ns2.example.org. ; MX Records IN MX 10 mx.example.org. IN MX 20 mail.example.org. IN A 192.168.1.1 ; Machine Names localhost IN A 127.0.0.1 ns1 IN A 192.168.1.2 ns2 IN A 192.168.1.3 mx IN A 192.168.1.4 mail IN A 192.168.1.5 ; Aliases www IN CNAME @ Nota che ogni hostname che finisce in un . č un nome esatto, mentre ogni entitŕ senza un . č referenziato all'origine. Per esempio www č trasformato in www.origin. Nel nostro file di zone fittizio, la nostra origine č example.org, cosě www si trasformerebbe in www.example.org. Il formato di un file di zona č il seguente: recordname IN recordtype value DNS records I record DNS usati piů di frequente: SOA inizio di una zona di autoritŕ NS un name server autoritativo A un indirizzo host CNAME il nome canonico per un alias MX mail exchanger PTR un puntatore a nome di dominio (usato nel DNS inverso) example.org. IN SOA ns1.example.org. admin.example.org. ( 2006051501 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hour 604800 ; Expire after 1 week 86400 ) ; Minimum TTL of 1 day example.org. il nome di dominio, inoltre č l'origine per questo file di zona. ns1.example.org. il name server primario/autoritativo per questa zona. admin.example.org. la persona responsabile per questa zona, un indirizzo email con @ sostituito. (admin@example.org diventa admin.example.org) 2006051501 il numero di serie del file. Questo deve essere aumentato ogni volta che il file di zona č modificato. Al giorno d'oggi molti amministratori preferiscono un formato yyyymmddrr per il numero di serie. 2006051501 significherebbe modificato l'ultima volta il 05/15/2006, l'ultimo 01 essendo la prima volta che il file di zona č stato modificato in questo giorno. Il numero di serie č importante dato che avverte name server slave per una zona quando questa ` modificata. IN NS ns1.example.org. Questa č una linea NS. Ogni name server che replicherŕ in maniera autoritativa la zona deve avere una di queste linee. Il @ come visto potrebbe essere stato example.org. Il @ si traduce nell'origine. localhost IN A 127.0.0.1 ns1 IN A 192.168.1.2 ns2 IN A 192.168.1.3 mx IN A 192.168.1.4 mail IN A 192.168.1.5 Il record A indica un nome macchina. Come visto sopra, ns1.example.org risolverebbe in 192.168.1.2. IN A 192.168.1.1 Questa linea assegna l'indirizzo IP 192.168.1.1 alla corrente origine, in questo caso example.org. www IN CNAME @ Il record nome canonico č usato per dare alias ad una macchina. Nell'esempio, www č tramutato in alias nella macchina master che corrisponde al domain name example.org (192.168.1.1). CNAME possono essere usati per fornire alias ad hostname o distribuire in round robin un hostname fra molte macchine. MX record IN MX 10 mail.example.org. Il record MX ` usato per specificare quali mail server sono responsabili per gestire mail entranti per la zona. mail.example.org č l'hostname del mail server, e 10 č la prioritŕ di quel mail server. Uno puň avere molti mail server, con prioritŕ di 10, 20 e cosě via. Un mail server che cerca di consegnare una mail a example.org proverŕ prima l'MX con la piů alta prioritŕ (il record con il numero di priorita' minimo) poi il secondo, etc., fino a chč la mail non sia consegnata correttamente. Per file di zona in-addr.arpa (DNS inverso), lo stesso formato č usato, eccetto con linee PTR al posto di A o CNAME. $TTL 3600 1.168.192.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. ( 2006051501 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 3600 ) ; Minimum IN NS ns1.example.org. IN NS ns2.example.org. 1 IN PTR example.org. 2 IN PTR ns1.example.org. 3 IN PTR ns2.example.org. 4 IN PTR mx.example.org. 5 IN PTR mail.example.org. Questo file da la corretta mappa da indirizzi IP ad hostname per il nostro dominio fittizio. Caching Name Server BIND caching name server Un name server caching č un name server che non č autoritativo per nessuna zona. Fa semplicemente query, e ne memorizza le risposte per uso successivo. Per impostarne uno, configura il name server come al solito, omettendo ogni inclusione di zona. Sicurezza Anche se BIND č la piů comune implementazione del DNS, c'č sempre la questione della sicurezza. Talvolta vengono trovati possibili e sfruttabili buchi di sicurezza. Mentre &os; tiene named automaticamente in un ambiente &man.chroot.8;, ci sono molti altri meccanismi di sicurezza che potrebbero essere sfruttati per attacchi al servizio DNS. Č una buona idea leggere gli avvisi sulla sicurezza di CERT e sottoscrivere le &a.security-notifications; per stare aggiornato con le questioni correnti di sicurezza di Internet e FreeBSD. Se sorge un problema, tenere i sorgenti aggiornati e fare una compilazione al volo di named non farebbe male. Ulteriori letture Pagine di manuale di BIND/named: &man.rndc.8; &man.named.8; &man.named.conf.5; Official ISC BIND Page Official ISC BIND Forum BIND FAQ O'Reilly DNS and BIND 4th Edition RFC1034 - Domain Names - Concepts and Facilities RFC1035 - Domain Names - Implementation and Specification Murray Stokely Grazie al contributo di Apache HTTP Server web server installare Apache Uno sguardo d'insieme &os; č usato per far girare alcuni dei siti web piů trafficati al mondo. La maggioranza dei web server su Internet usano attualmene Apache HTTP Server. Il pacchetto software di Apache dovrebbe essere incluso nel tuo media di installazione di FreeBSD. Se non hai installato Apache quando hai installato FreeBSD per la prima volta, lo puoi installare dal port www/apache13 o www/apache22. Una volta che Apache č stato installato con successo, deve essere configurato. Questa sezione copre la versione 1.3.X di Apache HTTP Server dato che č la versione piů usata per &os;. Apache 2.X introduce molte nuove tecnologie ma queste non saranno discusse in questa sede. Per maggiori informazioni su Apache 2.X, per favore consulta . Configurazione Apache file di configurazione Il principale file di configurazione di Apache HTTP Server č installato in /usr/local/etc/apache/httpd.conf su &os;. Questo file č un tipico file di testo di configurazione di &unix; con linee di commento che cominciano col carattere #. Una descrizione comprensiva di tutte le possibili opzioni di configurazione č al di fuori dello scopo di questo libro, cosě solo le direttive usate piů di frequente saranno descritte di seguito. ServerRoot "/usr/local" Questo specifica la gerachia di directory di default per l'installazione di Apache. I binari sono conservati nelle sottodirectory bin e sbin sotto la server root, ed i file di configurazione sono conservati sotto etc/apache. ServerAdmin you@your.address L'indirizzo email al quale i problemi riguardanti il server dovrebbero essere inviati. Questo indirizzo appare su alcune pagine generate dal server, come alcuni documenti di errore. ServerName www.example.com ServerName ti permette di impostare un nome host che viene inviato ai client per il tuo server, se questo č differente da quello per il quale l'host č configurato (ad esempio usi www invece del vero nome host). DocumentRoot "/usr/local/www/data" DocumentRoot: La directory dalla quale servirai documenti. Di default tutte le richieste sono girate a questa directory, ma link simbolici ed alias possono essere usati per puntare ad altre locazioni. Č sempre una buona idea fare copie di backup del tuo file di configurazione di Apache prima di modificarlo. Una volta che sei soddisfatto dalla tua configurazione iniziale sei pronto per iniziare ad eseguire Apache. Eseguire <application>Apache</application> Apache avviarlo o fermarlo Apache non viene eseguito dal super server inetd a differenza di molti altri server di rete. Č configurato per girare standalone per migliori performance per gestire le richieste HTTP in entrata dai client web browser. Un wrapper shell script č incluso per rendere il piů semplice possibile lo start, lo stop ed il restart del server. Per avviare Apache per la prima volta, esegui: &prompt.root; /usr/local/sbin/apachectl start Puoi fermare il server in ogni istante digitando: &prompt.root; /usr/local/sbin/apachectl stop Dopo aver fatto modifiche al file di configurazione per una qualsiasi ragione, avrai bisogno di riavviare il server: &prompt.root; /usr/local/sbin/apachectl restart Per riavviare Apache senza mandare in abort le connessioni correnti, esegui. &prompt.root; /usr/local/sbin/apachectl graceful Informazioni addizionali sono disponibili sulla pagina di manuale di &man.apachectl.8;. Per eseguire Apache all'avvio del sistema, aggiungi la seguente linea ad /etc/rc.conf: apache_enable="YES" o per Apache 2.2: apache22_enable="YES" Se volessi fornire opzioni addizionali di linea di comando al programma Apache httpd avviato al boot di sistema, puoi specificarle con una linea addizionale in rc.conf: apache_flags="" Ora che il web server č in esecuzione puoi navigare il tuo sito web puntando il tuo web browser ad http://localhost/. La pagina di default che viene mostrata č /usr/local/www/data/index.html. Virtual Hosting Apache supporta due tipi diversi di Virtual Hosting. Il primo metodo č Virtual Hosting basato sul nome. Il Virtual Hosting basato sul nome usa gli header HTTP/1.1 per scoprire l'hostname. Questo permette a molti domini diversi di condividere lo stesso indirizzo IP. Per fare sě che Apache usi Virtual Hosting basato sui nomi aggiungi una entry come la seguente al tuo file httpd.conf: NameVirtualHost * Se il tuo webserver era nominato www.domain.tld e tu avessi voluto installare un dominio virtuale per www.someotherdomain.tld avresti dovuto aggiungere le seguenti entry a httpd.conf: <VirtualHost *> ServerName www.domain.tld DocumentRoot /www/domain.tld </VirtualHost> <VirtualHost *> ServerName www.someotherdomain.tld DocumentRoot /www/someotherdomain.tld </VirtualHost> Sostituisci gli indirizzi con gli indirizzi che vuoi usare ed i percorsi dei documenti con quelli che usi. Per maggiori informazioni sull'impostazione dei virtual host, per favore consulta la documentazione ufficiale a . Moduli Apache Apache moduli Ci sono molti diversi moduli Apache disponibili per aggiungere funzionalitŕ al server base. La Collezione Port di FreeBSD fornisce un modo semplice di installare Apache assieme ad alcuni dei piů popolari moduli aggiuntivi. mod_ssl server web sicuri SSL crittografia Il modulo mod_ssl usa la libreria OpenSSL per fornire una forte crittografia attraverso i protocolli Secure Sockets Layer (SSL v2/v3) e Transport Layer Security (TLS v1). Questo modulo fornisce tutto il necessario per richiedere un certificato firmato da un'autoritŕ fidata che emette certificati, cosicchč puoi eseguire un web server sicuro su &os;. Se non hai ancora installato Apache, una versione di Apache 1.3.X che includa mod_ssl puň essere installata con il port www/apache13-modssl. Il supporto ad SSL č anche disponibile per Apache 2.X nel port www/apache22, dove viene abilitato di default. Siti web dinamici con Perl & PHP Negli ultimi anni, molte aziende si sono rivolte a Internet per migliorare i loro ricavi e aumentare la loro esposizione. Questo ha anche aumentato il bisogno di contenuti interattivi web. Mentre alcune societŕ come µsoft; hanno introdotto soluzioni nei loro prodotti proprietari, la comunitŕ open source ha risposto all'appello. Due opzioni per contenuti web dinamici includono mod_perl & mod_php. mod_perl Perl Il progetto di integrazione Apache/Perl mette assieme la grande potenza del linguaggio di programmazione Perl e l'Apache HTTP Server. Con il modulo mod_perl č possibile scrivere moduli Apache interamente in Perl. In aggiunta l'interprete persistente integrato nel server evita l'overhead di avviare un interprete esterno e la penalizzazione del tempo di caricamento Perl. mod_perl č disponibile in alcuni modi diversi. Per usare mod_perl ricorda che mod_perl 1.0 funziona solo con Apache 1.3 e mod_perl 2.0 funziona solo con Apache 2.X. mod_perl 1.0 č disponibile in www/mod_perl ed una versione compilata staticamente č disponibile in www/apache13-modperl. mod_perl 2.0 č disponibile in www/mod_perl2. Tom Rhodes Scritto da mod_php mod_php PHP PHP, anche noto come Hypertext Prepocessor č un linguaggio di scripting di scopo generale che č particolarmente adatto per lo sviluppo Web. Adatto ad essere usato all'interno dell'HTML, la sua sintassi deriva dal C, &java;, e Perl con l'intenzione di permettere agli sviluppatori web di scrivere pagine web generate dinamicamente in modo veloce. Per integrare supporto a PHP5 per il web server Apache, inizia con l'installare il port lang/php5. Se il port lang/php5 viene installato per la prima volta, le OPTIONS disponibili saranno mostrate automaticamente. Se non viene mostrato un menu, ad esempio perché il port lang/php5 č stato installato qualche volta in passato, č sempre possibile rivedere il menu a dialogo con le opzioni eseguendo: &prompt.root; make config nella directory dei port. Nel menu a dialogo delle opzioni, flagga l'opzione APACHE per compilare mod_php5 come modulo caricabile per il web server Apache. Molti siti stanno ancora usando PHP4 per varie ragioni (ad esempio questioni di compatibilitŕ o applicativi web giŕ costruiti). Se si necessita del modulo mod_php4 invece che di mod_php5, siete pregati di usare il port lang/php4. Il port lang/php4 supporta molte delle configurazioni e delle opzioni di build-time del port lang/php5. Questo installerŕ e configurerŕ i moduli richiesti per supportare applicazioni web dinamiche PHP. Controlla che le seguenti linee siano state aggiunte al file /usr/local/etc/apache/httpd.conf: LoadModule php5_module libexec/apache/libphp5.so AddModule mod_php5.c <IfModule mod_php5.c> DirectoryIndex index.php index.html </IfModule> <IfModule mod_php5.c> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule> Una volta completato, una semplice chiamata al comando apachectl per un tranquillo restart č richiesto per caricare il modulo PHP: &prompt.root; apachectl graceful Per upgrade futuri di PHP, il comando make config non sarŕ richiesto; le OPTIONS selezionate sono salvate automaticamente dal sistema dei Ports di &os;. Il supporto a PHP in &os; č estremamente modulare cosě l'installazione base č molto limitata. Č molto facile aggiungere supporto usando il port lang/php5-extensions. Questo port fornisce un interfaccia a menu per l'installazione di estensioni a PHP. Alternativamente le singole estensioni possono essere installate usando il port appropriato. Ad esempio, per aggiungere supporto al database MySQL a PHP5, semplicemente installa databases/php5-mysql. Dopo aver installato un'estensione, il server Apache deve essere riavviato per caricare i cambiamenti della nuova configurazione: &prompt.root; apachectl graceful Murray Stokely Grazie al Contributo di File Transfer Protocol (FTP) Server FTP Uno sguardo d'insieme Il File Transfer Protocol (FTP) fornisce agli utenti un semplice modo di trasferire file da e verso un server FTP. &os; include software per server FTP nel sistema base. Questo rende l'installazione e l'ammininistrazione di un server FTP molto semplice. Configurazione Il piů importante passo di configurazione č decidere a quali account saraŕ permesso accedere al server FTP. Un sistema normale FreeBSD ha un certo numero di account di sistema usati per vari demoni, ma agli utenti estranei non dovrebbe essere permesso di loggarsi con questi account. Il file /etc/ftpusers č una lista di utenti a cui č negato l'accesso FTP. Di default include gli account di sistema sopra citati ma č possibile aggiungere utenti specifici che non dovrebbero avere accesso FTP. Puň essere che tu voglia restringere l'accesso ad alcuni utenti senza impedir loro di usare completamente FTP. Ciň puň essere ottenuto con il file /etc/ftpchroot. Questo file elenca utenti e gruppi soggetti a restrizioni di accesso FTP. La pagina di manuale &man.ftpchroot.5; ha tutti i dettagli cosě non sarŕ descritta qui. FTP anonimo Se tu volessi abilitare accesso anonimo FTP al tuo server, devi creare un utente chiamato ftp sul tuo sistema &os;. Gli utenti allora potranno loggarsi al tuo server FTP con uno username di ftp o anonymous e con una password qualsiasi (di norma dovrebbe essere usato un indirizzo email dell'utente come password). Il server FTP chiamerŕ &man.chroot.2; quando un utente anonimo si logga, per restringere l'accesso solo alla home directory di ftp. Ci sono due file di testo che specificano messaggi di benvenuto per i client FTP. Il contenuto del file /etc/ftpwelcome sarŕ mostrato agli utenti prima che raggiungano il prompt del login. Dopo un login di successo, il contenuto del file /etc/ftpmotd sarŕ mostrato. Nota che il percorso di questo file č relativo all'ambiente di login, cosě saraŕ mostrato il file ~ftp/etc/ftpmotd. Una volta che il server FTP č stato configurato correttamente, deve essere abilitato in /etc/inetd.conf. Tutto ciň che viene richiesto č rimuovere il simbolo di commento # dall'inizio della linea relativa a ftpd: ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l Come spiegato in , la configurazione di inetd deve essere ricaricata dopo che che questo file di configurazione č stato cambiato. Ora puoi loggarti al tuo server FTP digitando: &prompt.user; ftp localhost Manutenzione syslog file di log FTP Il demone ftpd usa &man.syslog.3; per loggare i mesaggi. Di default il demone dei log di sistema girerŕ i messaggi relativi a FTP nel file /var/log/xferlog. La posizione del log FTP puň essere modificata cambiando la seguente linea in /etc/syslog.conf: ftp.info /var/log/xferlog FTP anonimo Presta attenzione ai problemi potenziali correlati all'esecuzione di un server FTP anonimo. In particolare, dovresti pensarci due volte prima di permettere agli utenti anonimi di fare upload di file. Potresti scoprire che il tuo sito FTP č diventato un forum per il commercio di software commerciale senza licenza o anche peggio. Se hai veramente bisogno di permettere upload FTP anonimi, allora dovresti impostare i permessi in modo che questi file non possano essere letti da altri utenti fino a che non siano stati revisionati. Murray Stokely Grazie al contributo di Servizi di File e Stampa per client µsoft.windows; (Samba) Server Samba Microsoft Windows file server Windows client print server Windows client Uno sguardo d'insieme Samba č un popolare pacchetto software open source che fornisce servizi di file e stampa per client µsoft.windows;. Tali client possono connettersi ed usare un file system FreeBSD come se fosse un disco locale, o stampanti FreeBSD come se fossero stampanti locali. Il pacchetto software Samba dovrebbe essere incluso nel tuo media di installazione FreeBSD. Se non hai installato Samba quando hai installato per la prima volta FreeBSD, puoi sempre installarlo dal port o pacchetto net/samba3. Configurazione Un file di configurazione di Samba di default č installato in /usr/local/share/examples/smb.conf.default. Questo file deve essere copiato in /usr/local/etc/smb.conf e personalizzato prima che Samba possa essere usato. Il file smb.conf contiene informazione di configurazione runtime per Samba, come le definizioni delle stampanti e share di file system che vorresti condividere con &windows; client. Il pacchetto Samba include un tool basato sul web chiamato swat che fornisce un modo semplice di configurare il file smb.conf. Usare il Samba Web Administration Tool (SWAT) Il Samba Web Administration Tool (SWAT) viene eseguito come demone da inetd. Quindi, dovresti togliere i commenti alla seguente linea in /etc/inetd.conf prima che swat possa essere usato per configurare Samba: swat stream tcp nowait/400 root /usr/local/sbin/swat swat Come spiegato in , la configurazione di inetd deve essere ricaricata dopo che questo file di configurazione č stato cambiato. Una volta che swat č stato abilitato in inetd.conf, puoi usare un browser per connetterti a . Dovrai prima loggarti con l'account di sistema root. Una volta che ti sei loggato con successo alla pagina principale di configurazione di Samba, puoi navigare la documentazione di sistema, o iniziare cliccando sul tab Globals. La sezione Globals corrisponde alle variabili che sono impostate nella sezione [global] di /usr/local/etc/smb.conf. Impostazioni Globali Sia che tu stia usando swat o che tu stia editando direttamente /usr/local/etc/smb.conf, le prime direttive che tu puoi incontrare quando configuri Samba sono: workgroup Nome dominio NT o nome Workgroup per i computer che accedono a questo server. netbios name NetBIOS Questo imposta il nome NetBIOS attraverso il quale un Samba č conosciuto. Di default č lo stesso della prima parte del nome host DNS. server string Questo imposta la stringa che sarŕ mostrata con il comando net view e con alcuni altri strumenti di rete che cercano di mostrare testo descrittivo sul server. Impostazioni di Sicurezza Due delle piů importanti impostazioni in /usr/local/etc/smb.conf sono i modelli di sicurezza usati, ed il formato delle password di backend per utenti client. Le seguenti direttive controllano queste opzioni: security Le due piů comuni opzioni in questo caso sono security = share e security = user. Se i tuoi client usano nomi utente che sono gli stessi dei nomi utenti sulla tua macchina &os;, allora vorrai sicurezza di tipo user. Questa č la policy di sicurezza di default e richiede ai client prima di loggarsi prima che possano accedere a risorse condivise. Nel modello di sicurezza di tipo share, i client non hanno bisogno di loggarsi al server con una valida coppia username e password prima che provino a connettersi a risorse condivise. Questo č il modello di sicurezza di default per versioni precedenti di Samba. passdb backend - NIS+ - LDAP - SQL database - Samba ha molti modelli diversi di backend di autenticazione. - Puoi autenticare i client con LDAP, NIS+, un - database SQL, o un file di password modificato. + Puoi autenticare i client con LDAPLDAP, NIS+NIS+, un + database SQLSQL database, o un file di password modificato. Il metodo di autenticazione di default č smbpasswd, e questo sarŕ l'unico coperto qui. Assumendo che il backend usato sia quello di default, smbpasswd, il file /usr/local/private/smbpasswd deve essere creato per permettere a Samba di autenticare i client. Se tu volessi dare ai tuoi account &unix; accesso da client &windows;, usa il seguente comando: &prompt.root; smbpasswd -a username Per favore consulta l' Official Samba HOWTO HOWTO Ufficiale di Samba per informazioni addizionali sulle opzioni di configurazione. Con le basi delineate qui, dovresti avere tutto ciň di cui hai bisogno per avviare Samba. Avviare <application>Samba</application> Il port net/samba3 aggiunge un nuovo script di avvio, che puň essere usato per controllare Samba. Per abilitare questo script, in modo tale da essere usato per esempio per avviare fermare o far ripartire Samba, aggiungi la riga seguente al file /etc/rc.conf: samba_enable="YES" Oppure, per un controllo piů accurato: nmbd_enable="YES" smbd_enable="YES" In questo modo Samba viene avviato automaticamente ad ogni avvio del sistema. Per avviare Samba digita: &prompt.root; /usr/local/etc/rc.d/samba start Starting SAMBA: removing stale tdbs : Starting nmbd. Starting smbd. Fai riferimento alla per ulteriori informazioni sull'uso degli script rc. Samba attualmente consiste di tre demoni separati. Dovresti osservare che entrambi nmbd e smbd siano avviati dallo script samba. Se hai abilitato servizi di risoluzione di nomi winbind in smb.conf, allora osserverai che anche il demone winbindd č avviato. Puoi anche fermare Samba in ogni istante digitando: &prompt.root; /usr/local/etc/rc.d/samba stop Samba č una suite complessa di software con funzionalitŕ che permette una larga integrazione con reti µsoft.windows;. Per maggiori informazioni sulle funzionalitŕ al di lŕ dell'installazione di base descritta qui per favore consulta . Tom Hukins Grazie al contributo di Sincronizzazione del Clock con NTP NTP Uno sguardo d'insieme Al passare del tempo, il clock di un computer tende a perdere la sincronizzazione. Il Network Time Protocol (NTP) fornisce un modo per assicurarti che il tuo clock sia accurato. Molti servizi Internet si basano sul fatto che il clock del computer sia accurato, o comunque traggono notevole beneficio da questo fatto. Per esempio, un web server puň ricevere richieste di inviare un file se questo č stato modificato da una certa data. In un ambiente locale di rete, č essenziale che i computer che condividono i file dallo stesso file server abbiano clock sincronizzati cosicchč i timestamp dei file siano consistenti. Anche servizi come &man.cron.8; si basano su un clock di sistema accurato per eseguire comandi al momento specificato. NTP ntpd FreeBSD č dotato del server &man.ntpd.8; NTP che puň essere usato per interrogare altri server NTP per impostare il clock sulla tua macchina o fornire servizi di time ad altri. Scegliere Server NTP Appropriati NTP scegliere i server Per sincronizzare il tuo clock, avrai bisogno di scegliere uno o piů server NTP da usare. Il tuo amministratore di rete o ISP potrebbe aver impostato un server NTP, a questo scopo — controlla la loro documentazione per vedere se questo č il caso. C'č una lista online di server NTP pubblicamente accessibili che tu puoi usare per trovare un server NTP vicino a te. Accertati di essere al corrente della politica di ogni server che scegli, e chiedi il permesso se necessario. Scegliere molti server NTP non connessi fra loro č una buona idea in caso uno dei server che stai usando diventa irraggiungibile o il suo clock č inaffidabile. &man.ntpd.8; usa le risposte che riceve da altri server in modo intelligente; favorirŕ server inaffidabili meno di quelli affidabili. Configurare la tua Macchina NTP configurazione Configurazione Base ntpdate Se desideri solo sincronizzare il tuo clock al momento del boot della macchina, puoi usare &man.ntpdate.8;. Questo puň essere appropriato per alcune macchine desktop che sono rebootate di frequente e richiedono sincronizzazione non frequente, ma le altre macchine dovrebbero eseguire &man.ntpd.8;. Usare &man.ntpdate.8; al momento del boot č una buona idea per le macchine che eseguono &man.ntpdate.8;. Il programma &man.ntpd.8; cambia il clock gradualmente, mentre &man.ntpdate.8; imposta il clock, indipentemente da quanto grande sia la differenza fra l'impostazione di clock corrente di una macchina e l'ora corretta. Per abilitare &man.ntpdate.8; al momento del boot, aggiungi ntpdate_enable="YES" a /etc/rc.conf. Avrai anche bisogno di specificare tutti i server con i quali ti desideri sincronizzare ed ogni flags passato a &man.ntpdate.8; in ntpdate_flags. Configurazione Generale NTP ntp.conf NTP č configurato dal file /etc/ntp.conf nel formato descritto da &man.ntp.conf.5;. Questo č un semplice esempio: server ntplocal.example.com prefer server timeserver.example.org server ntp2a.example.net driftfile /var/db/ntp.drift L'opzione server specifica quali server siano da usare, con un server elencato su ogni linea. Se un server č specificato con l'argomento prefer, come con ntplocal.example.com, quel server saraŕ preferito rispetto ad altri. Una risposta da un server preferito sarŕ scartata se differisce in modo significativo dalle risposte di altri server, altrimenti sarŕ usata senza nessuna considerazione delle altre risposte. L'argomento prefer č normalmente usato per server NTP che sono noti per essere molto accurati, come quelli con hardware a monitoraggio speciale del tempo. L'opzione driftfile specifica quale file sia usato per conservare la frequenza di scostamento dal clock di sistema. Il programma &man.ntpd.8; usa questo dato per compensare automaticamente le imprecisioni naturali del clock, permettendo di mantenere una impostazione ragionevolmente corretta anche se gli č impedito di accedere a tutte le sorgenti di sincronizzazione tempo esterne per un certo periodo di tempo. L'opzione driftfile specifica quale file sia usato per conservare informazioni sulle risposte precedenti dai server NTP che usi. Questo file contiene informazioni interne per NTP. Non dovrebbe essere modificato da altri processi. Controllare l'Accesso ad i tuoi Server Di default, il tuo server NTP sarŕ accessibile a tutti gli host su Internet. L'opzione restrict in /etc/ntp.conf ti permette di controllare quali macchine possano accedere al tuo server. Se vuoi negare a tutte le macchine accesso al tuo server NTP, aggiungi la seguente linea a /etc/ntp.conf: restrict default ignore Inoltre questo settaggio vieta l'accesso al tuo server dai server elencati nella tua configurazione locale. Se hai bisogno di sincronizzare il tuo server NTP con un server NTP esterno devi permettere il server che vuoi usare. Guada la pagina man &man.ntp.conf.5; per ulteriori dettagli. Se vuoi permettere solo alle macchine della tua rete di sincronizzare il loro clock con il tuo server, ma assicurarti che non gli sia permesso configurare il server o che non sianousate come punto di riferimento per sincronizzarsi, aggiungi restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap invece, dove192.168.1.0 č un indirizzo IP sulla tua rete e 255.255.255.0 č la netmask della tua rete. /etc/ntp.conf puň contenere molte opzioni restrict. Per maggiori dettagli, consulta la sezione Access Control Support di &man.ntp.conf.5;. Eseguire il Server NTP Per assicurarsi che il server NTP sia avviato al momento del boot, aggiungi la linea ntpd_enable="YES" a /etc/rc.conf. Se desideri passare flag addizionali a &man.ntpd.8;, edita il parametro ntpd_flags in /etc/rc.conf. Per avviare il server senza riavviare la tua macchina, esegui ntpd accertandoti di specificare ogni parametro addizionale in ntpd_flags presente in /etc/rc.conf. Per esempio: &prompt.root; ntpd -p /var/run/ntpd.pid Usare ntpd con una Connessione Temporanea ad Internet Il programma &man.ntpd.8; non necessita di una connessione permanente ad Internet per funzionnare correttamente. Comunque, se hai una connessione temporanea che č configurata per effettuare una chiamata su richiesta, č una buona idea evitare che il traffico NTP causi la chiamata o mantenga la connessione attiva. Se stai usando PPP utente, puoi usare le direttive filter in /etc/ppp/ppp.conf. Per esempio: set filter dial 0 deny udp src eq 123 # Prevent NTP traffic from initiating dial out set filter dial 1 permit 0 0 set filter alive 0 deny udp src eq 123 # Prevent incoming NTP traffic from keeping the connection open set filter alive 1 deny udp dst eq 123 # Prevent outgoing NTP traffic from keeping the connection open set filter alive 2 permit 0/0 0/0 Pre maggiori dettagli consulta la sezione PACKET FILTERING in &man.ppp.8; e gli esempi in /usr/share/examples/ppp/. Alcuni provider di accesso ad Internet bloccano le porte dal numero basso, impedendo ad NTP di funzionare dato che le repliche non raggiungono mai la tua macchina. Informazioni Ulteriori La documentazione per il server NTP puň essere trovata in formato HTML in /usr/share/doc/ntp/. diff --git a/ja_JP.eucJP/books/handbook/advanced-networking/chapter.xml b/ja_JP.eucJP/books/handbook/advanced-networking/chapter.xml index 192d028849..c6448b8313 100644 --- a/ja_JP.eucJP/books/handbook/advanced-networking/chapter.xml +++ b/ja_JP.eucJP/books/handbook/advanced-networking/chapter.xml @@ -1,7892 +1,7877 @@ šâĹ٤ʼͼüȼ寧ĽŻ ¤ł¤ÎžĎ¤Ç¤Ď ¤ł¤ÎžĎ¤Ç¤Ď &unix; ĽˇĽšĽĆĽŕžĺ¤ÇÎɤŻÍřÍѤľ¤ě¤ëĽÍĽĂĽČĽďĄźĽŻĽľĄźĽÓĽš¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ FreeBSD ¤ŹÍřÍѤš¤ë¤š¤Ů¤Ć¤ÎĽÍĽĂĽČĽďĄźĽŻĽľĄźĽÓĽš¤ň¤É¤Î¤č¤Ś¤ËÄęľÁ¤ˇĄ˘ ŔßÄꤡĄ˘ĽĆĽšĽČ¤ˇĄ˘¤˝¤ˇ¤ĆĘݟ餚¤ë¤Î¤Ť¤ň°ˇ¤¤¤Ţ¤šĄŁ¤ľ¤é¤ËĄ˘ ËܞϤňÄ̤ˇ¤Ć¤˘¤Ę¤ż¤ÎĚň¤ËΊ¤ÄŔßÄęÎ㤏şÜ¤Ă¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎžĎ¤ňĆɤá¤Đ°Ę˛ź¤Î¤ł¤Č¤ŹĘʤŤ¤ę¤Ţ¤šĄŁ Ľ˛ĄźĽČĽŚĽ§Ľ¤¤ČˇĐĎŠ¤Î´đËÜ FreeBSD ¤ňĽÖĽęĽĂĽ¸¤Č¤ˇ¤Ćưşî¤ľ¤ť¤ëĘýËĄ ĽÍĽĂĽČĽďĄźĽŻĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ (NFS) ¤ÎŔßÄęĘýËĄ ĽÇĽŁĽšĽŻĽěĽšĽŢĽˇĽó¤ÎĽÍĽĂĽČĽďĄźĽŻĽÖĄźĽČ¤ÎŔßÄęĘýËĄ ĽćĄźĽśĽ˘ĽŤĽŚĽóĽČ¤ňśŚÍ­¤š¤ë¤ż¤á¤ÎĽÍĽĂĽČĽďĄźĽŻĽ¤ĽóĽŐĽŠĽáĄźĽˇĽçĽóĽľĄźĽĐ (NIS) ¤ÎŔßÄęĘýËĄ DHCP ¤ňÍѤ¤¤ĆźŤĆ°ĹŞ¤ËĽÍĽĂĽČĽďĄźĽŻŔßÄę¤ňšÔ¤ŚĘýËĄ ĽÉĽáĽ¤ĽóĽÍĄźĽŕĽľĄźĽĐ (DNS) ¤ÎŔßÄęĘýËĄ NTP Ľ×ĽíĽČĽłĽë¤ňÍѤ¤¤ĆĆüťţ¤ňĆą´ü¤ˇ¤ĆĽżĽ¤ĽŕĽľĄźĽĐ¤ňŔßÄꤚ¤ëĘýËĄ ĽÍĽĂĽČĽďĄźĽŻĽ˘ĽÉĽěĽšĘŃ´š (NAT) ¤ÎŔßÄęĘýËĄ inetd ĽÇĄźĽâĽó¤Î´ÉÍýĘýËĄ PLIP ˇĐÍł¤ÇĆóÂć¤ÎĽłĽóĽÔĽĺĄźĽż¤ňŔÜÂł¤š¤ëĘýËĄ FreeBSD ¤Ç IPv6 ¤ňŔßÄꤚ¤ëĘýËĄ ¤ł¤ÎžĎ¤ňĆɤŕÁ°¤ËĄ˘°Ę˛ź¤Î¤ł¤Č¤ňšÔ¤Ă¤Ć¤Ş¤Ż¤Ů¤­¤Ç¤šĄŁ /etc/rc ĽšĽŻĽęĽ×ĽČ¤Î´đËܤňÍý˛ň¤ˇ¤Ć¤¤¤ë¤ł¤Č ´đÁĂĹŞ¤ĘĽÍĽĂĽČĽďĄźĽŻÍѸě¤ËŔşÄ̤ˇ¤Ć¤¤¤ë¤ł¤Č Coranth Gryphon ´óšĆ: Ľ˛ĄźĽČĽŚĽ§Ľ¤¤ČˇĐĎŠ ĽëĄźĽĆĽŁĽóĽ° Ľ˛ĄźĽČĽŚĽ§Ľ¤ ĽľĽÖĽÍĽĂĽČ ¤˘¤ëĽŢĽˇĽó¤ŹĽÍĽĂĽČĽďĄźĽŻžĺ¤Çž¤ÎĽŢĽˇĽó¤ň¤ß¤Ä¤ą¤ë¤ł¤Č¤Ź¤Ç¤­¤ë¤č¤Ś¤Ë¤š¤ë¤Ë¤ĎĄ˘ ¤˘¤ëĽŢĽˇĽó¤Ť¤éž¤ÎĽŢĽˇĽó¤Ř¤É¤Î¤č¤Ś¤Ë¤ż¤É¤ęĂ夯¤Ť¤ňľ­˝Ň¤š¤ëĹŹŔڤʝĹÁȤߤŹÉŹÍ×¤Ç¤šĄŁ ¤ł¤ÎťĹÁȤߤňĽëĄźĽĆĽŁĽóĽ°¤Č¸Ć¤Ó¤Ţ¤šĄŁ ˇĐĎŠ (route) ¤Ď Á÷żŽŔč (destination) ¤Č Ľ˛ĄźĽČĽŚĽ§Ľ¤ ¤Î 2 ¤Ä¤ÎĽ˘ĽÉĽěĽš¤ÎÁȤÇÄęľÁ¤ˇ¤Ţ¤šĄŁ¤ł¤ÎÁȚ礝¤ĎĄ˘¤ł¤Î Á÷żŽŔč ¤Ř¤ż¤É¤ęĂ夳¤Ś¤Č¤š¤ëžěšç¤ĎĄ˘¤˝¤Î Ľ˛ĄźĽČĽŚĽ§Ľ¤ ¤ňÄ̤¸¤ĆÄĚżŽ¤š¤ë¤ł¤Č¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ Á÷żŽŔč¤Ë¤Ď¸ÄĄš¤ÎĽŰĽšĽČĄ˘ĽľĽÖĽÍĽĂĽČĄ˘ĽÇĽŐĽŠĽëĽČ ¤Î 3 ¤Ä¤Îˇż¤Ź¤˘¤ę¤Ţ¤šĄŁ ĽÇĽŐĽŠĽëĽČĽëĄźĽČ ¤Ďž¤Î¤É¤ÎˇĐĎŠ¤âĹŹÍѤǤ­¤Ę¤¤žěšç¤ËťČ¤ď¤ě¤Ţ¤šĄŁ ĽÇĽŐĽŠĽëĽČĽëĄźĽČ¤Ë¤Ä¤¤¤Ć¤Ď¤Î¤Á¤Ű¤É¤â¤ŚžŻ¤ˇžÜ¤ˇ¤Ż˝Ň¤Ů¤Ţ¤šĄŁ ¤Ţ¤żĄ˘Ľ˛ĄźĽČĽŚĽ§Ľ¤¤Ë¤ĎĄ˘¸ÄĄš¤ÎĽŰĽšĽČĄ˘Ľ¤ĽóĽżĽŐĽ§ĄźĽš (ĽęĽóĽŻ ¤Č¤â¸Ć¤Đ¤ě¤Ţ¤š)Ą˘ Ľ¤ĄźĽľĽÍĽĂĽČĽĎĄźĽÉĽŚĽ§Ľ˘Ľ˘ĽÉĽěĽš (MAC Ľ˘ĽÉĽěĽš) ¤Î 3 ¤Ä¤Îˇż¤Ź¤˘¤ę¤Ţ¤šĄŁ Î㠰ʲź¤Ëꍤš netstat ¤ÎÎă¤ňťČ¤Ă¤ĆĄ˘ĽëĄźĽĆĽŁĽóĽ°¤Î¤ľ¤Ţ¤ś¤Ţ¤ĘžőÂÖ¤ňŔâĚŔ¤ˇ¤Ţ¤šĄŁ &prompt.user; netstat -r Routing tables Destination Gateway Flags Refs Use Netif Expire default outside-gw UGSc 37 418 ppp0 localhost localhost UH 0 181 lo0 test0 0:e0:b5:36:cf:4f UHLW 5 63288 ed0 77 10.20.30.255 link#1 UHLW 1 2421 example.com link#1 UC 0 0 host1 0:e0:a8:37:8:1e UHLW 3 4601 lo0 host2 0:e0:a8:37:8:1e UHLW 0 5 lo0 => host2.example.com link#1 UC 0 0 224 link#1 UC 0 0 ĽÇĽŐĽŠĽëĽČĽëĄźĽČ (default route) şÇ˝é¤Î 2 šÔ¤ĎĽÇĽŐĽŠĽëĽČĽëĄźĽČ (źĄŔá¤Ç°ˇ¤¤¤Ţ¤š) ¤ČĄ˘ localhost ¤Ř¤ÎˇĐĎŠ¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ ĽëĄźĽ×ĽĐĽĂĽŻĽÇĽĐĽ¤Ľš (loopback device) localhost ¤Ëłä¤ęĹö¤Ć¤ëĽ¤ĽóĽżĽŐĽ§ĄźĽš (Netif Íó) ¤Č¤ˇ¤Ć¤ł¤ÎĽëĄźĽĆĽŁĽóĽ°ĽĆĄźĽÖĽë¤ŹťŘÄꤡ¤Ć¤¤¤ë¤Î¤Ď lo0 ¤ÇĄ˘¤ł¤ě¤ĎĽëĄźĽ×ĽĐĽĂĽŻĽÇĽĐĽ¤Ľš¤Č¤â¤¤¤¤¤Ţ¤šĄŁ ¤ł¤ě¤ĎˇëśÉ¤Î¤Č¤ł¤í˝Đ¤ż¤Č¤ł¤í¤ËĚá¤ë¤Ŕ¤ą¤Ę¤Î¤ÇĄ˘ ¤ł¤ÎÁ÷żŽŔ褢¤Ć¤ÎĽČĽéĽŐĽŁĽĂĽŻ¤ĎĄ˘LAN ¤ËÁ÷¤é¤ě¤ş¤ËĄ˘¤š¤Ů¤ĆĆâÉôĹŞ¤Ë˝čÍý¤ľ¤ě¤Ţ¤šĄŁ Ľ¤ĄźĽľĽÍĽĂĽČ MAC Ľ˘ĽÉĽěĽš źĄ¤ÎšÔ¤Ç¤Ď 0:e0: ¤Ť¤éťĎ¤Ţ¤ëĽ˘ĽÉĽěĽš¤ËĂíĚܤˇ¤Ţ¤ˇ¤ç¤ŚĄŁ ¤ł¤ě¤ĎĽ¤ĄźĽľĽÍĽĂĽČĽĎĄźĽÉĽŚĽ§Ľ˘Ľ˘ĽÉĽěĽš¤ÇĄ˘MAC Ľ˘ĽÉĽěĽš¤Č¤â¤¤¤¤¤Ţ¤šĄŁ FreeBSD ¤ĎĽíĄźĽŤĽë¤ĘĽ¤ĄźĽľĽÍĽĂĽČžĺ¤ÎǤ°Ő¤ÎĽŰĽšĽČ (¤ł¤ÎÎă¤Ç¤Ď test0) ¤ňźŤĆ°ĹޤËÇ§źą¤ˇĄ˘ Ľ¤ĄźĽľĽÍĽĂĽČĽ¤ĽóĽżĽŐĽ§ĄźĽš ed0 ¤Ë¤˝¤ÎĽŰĽšĽČ¤Ř¤ÎÄžŔܤΡĐĎŠ¤ň¤Ä¤ą˛Ă¤¨¤Ţ¤šĄŁ ¤ł¤Îźď¤ÎˇĐĎŠ¤Ë¤ĎĄ˘ĽżĽ¤ĽŕĽ˘ĽŚĽČťţ´Ö (Expire Íó) ¤âˇë¤Ó¤Ä¤ą¤é¤ě¤Ć¤Ş¤ęĄ˘ ťŘÄꤾ¤ě¤żťţ´ÖĆâ¤ËĽŰĽšĽČ¤Ť¤é¤ÎąţĹú¤Ź¤Ę¤¤¤ł¤Č¤ňČ˝ĂǤš¤ë¤Î¤ËÍѤ¤¤é¤ě¤Ţ¤šĄŁ ¤˝¤ÎžěšçĄ˘¤˝¤ÎĽŰĽšĽČ¤Ř¤ÎˇĐĎŠžđĘó¤ĎźŤĆ°ĹŞ¤Ëşď˝ü¤ľ¤ě¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĽŰĽšĽČ¤Ď RIP (Routing Information Protocol) ¤Č¤¤¤ŚĄ˘ şÇĂťĽŃĽšČ˝Äę¤Ë´đ¤Ĺ¤¤¤ĆĽíĄźĽŤĽë¤ĘĽŰĽšĽČ¤Ř¤ÎˇĐĎŠ¤ňˇčÄꤚ¤ëťĹÁȤߤňÍřÍѤˇ¤ĆÇ§źą¤ľ¤ě¤Ţ¤šĄŁ ĽľĽÖĽÍĽĂĽČ ¤ľ¤é¤Ë FreeBSD ¤Ç¤ĎĽíĄźĽŤĽëĽľĽÖĽÍĽĂĽČ¤Ř¤ÎˇĐĎŠžđĘó¤â˛Ă¤¨¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤š (10.20.30.255 ¤Ď 10.20.30 ¤Č¤¤¤ŚĽľĽÖĽÍĽĂĽČ¤ËÂФš¤ëĽÖĽíĄźĽÉĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤ÇĄ˘ example.com ¤Ď¤ł¤ÎĽľĽÖĽÍĽĂĽČ¤Ëˇë¤Ó¤Ä¤ą¤é¤ě¤Ć¤¤¤ëĽÉĽáĽ¤ĽóĚž)ĄŁ link#1 ¤Č¤¤¤ŚĚžžÎ¤ĎĄ˘ ¤ł¤ÎĽŢĽˇĽó¤Î°ě¤ÄĚܤμ¤ĄźĽľĽÍĽĂĽČĽŤĄźĽÉ¤Î¤ł¤Č¤ň¤ľ¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤é¤Ë¤Ä¤¤¤Ć¤ĎĄ˘ ˛ż¤âÄɲü¤ĽóĽżĽŐĽ§ĄźĽš¤ŹťŘÄꤾ¤ě¤Ć¤¤¤Ę¤¤¤ł¤Č¤Ź¤ď¤Ť¤ę¤Ţ¤šĄŁ ¤ł¤ě¤é 2 ¤Ä¤ÎĽ°ĽëĄźĽ× (ĽíĄźĽŤĽëĽÍĽĂĽČĽďĄźĽŻĽŰĽšĽČ¤ČĽíĄźĽŤĽëĽľĽÖĽÍĽĂĽČ) ¤ĎĄ˘ÎžĘý¤Č¤â routed ¤Č¤¤¤ŚĽÇĄźĽâĽó¤Ë¤č¤Ă¤ĆźŤĆ°ĹŞ¤ËˇĐĎŠ¤ŹŔßÄꤾ¤ě¤Ţ¤šĄŁ routed ¤ňư¤Ť¤ľ¤Ę¤ą¤ě¤ĐĄ˘ŔĹĹŞ¤ËÄęľÁ¤ˇ¤ż (¤Ä¤Ţ¤ęĚŔź¨ĹޤËŔßÄꤡ¤ż) ˇĐĎŠ¤Î¤ß¤ŹÂ¸şß¤š¤ë¤ł¤Č¤Ë¤Ę¤ę¤Ţ¤šĄŁ host1 ¤ÎšÔ¤Ďťä¤ż¤Á¤ÎĽŰĽšĽČ¤Î¤ł¤Č¤ÇĄ˘ Ľ¤ĄźĽľĽÍĽĂĽČĽ˘ĽÉĽěĽš¤Çꍤľ¤ě¤Ć¤¤¤Ţ¤šĄŁÁ÷żŽÂŚ¤ÎĽŰĽšĽČ¤ÎžěšçĄ˘ FreeBSD¤ĎĽ¤ĄźĽľĽÍĽĂĽČĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ŘÁ÷¤ë¤Î¤Ç¤Ď¤Ę¤ŻĄ˘ ĽëĄźĽ×ĽĐĽĂĽŻĽ¤ĽóĽżĽŐĽ§ĄźĽš (lo0) ¤ňťČ¤¤¤Ţ¤šĄŁ 2 ¤Ä¤˘¤ë host2 ¤ÎšÔ¤ĎĄ˘ &man.ifconfig.8; ¤ÎĽ¨Ľ¤ĽęĽ˘Ľš¤ňťČ¤Ă¤ż¤Č¤­¤Ë¤É¤Î¤č¤Ś¤Ë¤Ę¤ë¤Ť¤ňꍤšÎă¤Ç¤š (¤ł¤Î¤č¤Ś¤Ę¤ł¤Č¤ň¤š¤ëÍýÍł¤Ë¤Ä¤¤¤Ć¤Ď Ethernet ¤ÎŔá¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤)ĄŁ lo0 ¤Î¸ĺ¤Ë¤˘¤ë => ¤ĎĄ˘ Ľ¤ĽóĽżĽŐĽ§ĄźĽš¤Ź (¤ł¤ÎĽ˘ĽÉĽěĽš¤ŹĽíĄźĽŤĽë¤ĘĽŰĽšĽČ¤ňť˛žČ¤ˇ¤Ć¤¤¤ë¤Î¤Ç) ĽëĄźĽ×ĽĐĽĂĽŻ¤ňťČ¤Ă¤Ć¤¤¤ë¤Č¤¤¤Ś¤Ŕ¤ą¤Ç¤Ę¤ŻĄ˘ Ľ¨Ľ¤ĽęĽ˘Ľš¤Ë¤Ę¤Ă¤Ć¤¤¤ë¤ł¤Č¤âꍤˇ¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤Î¤č¤Ś¤ĘˇĐĎŠ¤ĎĽ¨Ľ¤ĽęĽ˘Ľš¤ËÂĐąţ¤ˇ¤Ć¤¤¤ëĽŰĽšĽČ¤Ë¤Î¤ß¸˝¤ě¤Ţ¤šĄŁ ĽíĄźĽŤĽëĽÍĽĂĽČĽďĄźĽŻžĺ¤Îž¤Î¤š¤Ů¤Ć¤ÎĽŰĽšĽČ¤Ç¤ĎĄ˘ ¤˝¤ě¤ž¤ě¤ÎˇĐĎŠ¤ËÂФˇ¤ĆĂą¤Ëlink#1 ¤Č¤Ę¤ę¤Ţ¤šĄŁ şÇ¸ĺ¤ÎšÔ (Á÷żŽŔ輾ĽÖĽÍĽĂĽČ 224) ¤ĎĽŢĽëĽÁĽ­ĽăĽšĽČ¤Ç°ˇ¤Ś¤â¤Î¤Ç¤š¤ŹĄ˘¤ł¤ě¤Ďž¤ÎŔá¤ÇŔâĚŔ¤ˇ¤Ţ¤šĄŁ şÇ¸ĺ¤Ë Flags (ĽŐĽéĽ°) Íó¤Ë¤˝¤ě¤ž¤ě¤ÎˇĐĎŠ¤Î¤ľ¤Ţ¤ś¤Ţ¤Ę°Ŕ­¤ŹÉ˝ź¨¤ľ¤ě¤Ţ¤šĄŁ °Ę˛ź¤ËĽŐĽéĽ°¤Î°ěÉô¤ČĄ˘¤˝¤ě¤Ź˛ż¤ň°ŐĚŁ¤ˇ¤Ć¤¤¤ë¤Ť¤ňꍤˇ¤Ţ¤šĄŁ U Up: ¤ł¤ÎˇĐĎŠ¤ĎĽ˘ĽŻĽĆĽŁĽÖ¤Ç¤šĄŁ H Host: ˇĐĎŠ¤ÎÁ÷żŽŔ褏ù°ě¤ÎĽŰĽšĽČ¤Ç¤šĄŁ G Gateway: ¤ł¤ÎÁ÷żŽŔč¤ŘÁ÷¤é¤ě¤ë¤ČĄ˘ ¤É¤ł¤ŘÁ÷¤ě¤Đ¤č¤¤¤Ť¤ňĚŔ¤é¤Ť¤Ë¤ˇ¤ĆĄ˘ ¤˝¤ÎĽęĽâĄźĽČĽˇĽšĽĆĽŕ¤ŘÁ÷¤é¤ě¤Ţ¤šĄŁ S Static: ¤ł¤ÎˇĐĎŠ¤ĎĽˇĽšĽĆĽŕ¤Ë¤č¤Ă¤ĆźŤĆ°ĹޤËŔ¸Ŕޤľ¤ě¤ż¤Î¤Ç¤Ď¤Ę¤ŻĄ˘ źęư¤ÇşîŔޤľ¤ě¤Ţ¤ˇ¤żĄŁ C Clone: ĽŢĽˇĽó¤ËŔÜÂł¤ˇ¤ż¤Č¤­¤Ë¤ł¤ÎˇĐĎŠ¤Ë´đ¤Ĺ¤Żżˇ¤ˇ¤¤ˇĐĎŠ¤Źşî¤é¤ě¤Ţ¤šĄŁ ¤ł¤Îˇż¤ÎˇĐĎŠ¤ĎÄĚžď¤ĎĽíĄźĽŤĽëĽÍĽĂĽČĽďĄźĽŻ¤ÇťČ¤ď¤ě¤Ţ¤šĄŁ W WasCloned: ĽíĄźĽŤĽëĽ¨ĽęĽ˘ĽÍĽĂĽČĽďĄźĽŻ (LAN) ¤Î (Clone) ˇĐĎŠ¤Ë´đ¤Ĺ¤¤¤ĆźŤĆ°ĹޤËŔ¸Ŕޤľ¤ě¤żˇĐĎŠ¤Ç¤˘¤ë¤ł¤Č¤ňꍤˇ¤Ţ¤šĄŁ L Link: Ľ¤ĄźĽľĽÍĽĂĽČĽĎĄźĽÉĽŚĽ§Ľ˘¤Ř¤Îť˛žČ¤ň´Ţ¤ŕˇĐĎŠ¤Ç¤šĄŁ ĽÇĽŐĽŠĽëĽČĽëĄźĽČ ĽÇĽŐĽŠĽëĽČĽëĄźĽČ ĽíĄźĽŤĽëĽˇĽšĽĆĽŕ¤Ť¤éĽęĽâĄźĽČĽŰĽšĽČ¤ËĽłĽÍĽŻĽˇĽçĽó¤ňÄĽ¤ëÉŹÍפʤ˘¤ëžěšçĄ˘ ´űĂΤΡĐĎŠ¤ŹÂ¸şß¤š¤ë¤Ť¤É¤Ś¤Ť¤ňłÎǧ¤š¤ë¤ż¤á¤ËĽëĄźĽĆĽŁĽóĽ°ĽĆĄźĽÖĽë¤ňĽÁĽ§ĽĂĽŻ¤ˇ¤Ţ¤šĄŁ ĹţĂŁ¤š¤ë¤ż¤á¤ÎˇĐĎŠ¤ňĂΤäƤ¤¤ëĽľĽÖĽÍĽĂĽČ¤ÎĆâÉô¤ËĽęĽâĄźĽČĽŰĽšĽČ¤Ź¤˘¤ëžěšç (Cloned routes)Ą˘ ĽˇĽšĽĆĽŕ¤Ď¤˝¤ÎĽ¤ĽóĽżĽŐĽ§ĄźĽš¤Ť¤éŔÜÂł¤Ç¤­¤ë¤Ť¤É¤Ś¤ŤłÎǧ¤ˇ¤Ţ¤šĄŁ ĂΤäƤ¤¤ëĽŃĽš¤Ź¤š¤Ů¤ĆÂĚĚܤŔ¤Ă¤żžěšç¤Ç¤âĄ˘ ĽˇĽšĽĆĽŕ¤Ë¤ĎşÇ¸ĺ¤ÎźęĂʤȤˇ¤Ć ĽÇĽŐĽŠĽëĽČ ĽëĄźĽČ¤Ź¤˘¤ę¤Ţ¤šĄŁ¤ł¤ÎĽëĄźĽČ¤ĎĽ˛ĄźĽČĽŚĽ§Ľ¤ĽëĄźĽČ (ÉáÄ̤ϼˇĽšĽĆĽŕ¤Ë 1 ¤Ä¤ˇ¤Ť¤˘¤ę¤Ţ¤ť¤ó) ¤ÎĆĂĘ̤ʤâ¤Î¤Ç¤šĄŁ¤˝¤ˇ¤ĆĄ˘ ĽŐĽéĽ°Íó¤Ë¤ĎÉŹ¤ş c ¤ŹÉ˝ź¨¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ¤ł¤ÎĽ˛ĄźĽČĽŚĽ§Ľ¤¤ĎĄ˘LAN Ćâ¤ÎĽŰĽšĽČ¤Ë¤Č¤Ă¤ĆĄ˘¤É¤ÎĽŢĽˇĽó¤Ç¤âł°Éô¤Ř (PPP ĽęĽóĽŻĄ˘DSLĄ˘ĽąĄźĽÖĽëĽâĽÇĽŕĄ˘T1Ą˘ ¤Ţ¤ż¤Ď¤˝¤Îž¤ÎĽÍĽĂĽČĽďĄźĽŻĽ¤ĽóĽżĽŐĽ§ĄźĽš¤Î¤¤¤ş¤ě¤Ť¤ňˇĐÍł¤ˇ¤Ć) ÄžŔÜŔÜÂł¤š¤ë¤ż¤á¤ËŔßÄꤾ¤ě¤ë¤â¤Î¤Ç¤šĄŁ ł°Éô¤ËÂФš¤ëĽ˛ĄźĽČĽŚĽ§Ľ¤¤Č¤ˇ¤ĆľĄÇ˝¤š¤ëĽŢĽˇĽó¤ÇĽÇĽŐĽŠĽëĽČĽëĄźĽČ¤ňŔßÄꤚ¤ëžěšçĄ˘ ĽÇĽŐĽŠĽëĽČĽëĄźĽČ¤ĎĽ¤ĽóĽżĄźĽÍĽĂĽČĽľĄźĽÓĽšĽ×ĽíĽĐĽ¤ĽŔ (ISP) ¤ÎĽľĽ¤ĽČ¤ÎĽ˛ĄźĽČĽŚĽ§Ľ¤ĽŢĽˇĽó¤Ë¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤˝¤ě¤Ç¤ĎĽÇĽŐĽŠĽëĽČĽëĄźĽČ¤Î°ěÎă¤ň¸Ť¤Ć¤ß¤Ţ¤ˇ¤ç¤ŚĄŁ °ěČĚĹŞ¤Ęš˝Ŕޤňꍤˇ¤Ţ¤šĄŁ [Local2] <--ether--> [Local1] <--PPP--> [ISP-Serv] <--ether--> [T1-GW] ĽŰĽšĽČ Local1 ¤ČĽŰĽšĽČ Local2 ¤Ď¤˘¤Ę¤ż¤ÎĽľĽ¤ĽČĆâ¤Ë¤˘¤ę¤Ţ¤šĄŁLocal1 ¤ĎĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ× PPP ŔÜÂłˇĐÍł¤Ç ISP ¤ËŔÜÂł¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤Î PPP ĽľĄźĽĐĽłĽóĽÔĽĺĄźĽż¤ĎĄ˘¤˝¤Î ISP ¤ÎĽ¤ĽóĽżĄźĽÍĽĂĽČ¤Ř¤ÎŔÜÂłĹŔ¤Ë¸ţ¤ą¤żł°ÉôĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ňČ÷¤¨¤żÂž¤ÎĽ˛ĄźĽČĽŚĽ§Ľ¤ĽłĽóĽÔĽĺĄźĽż¤Ř LAN ¤ňÄ̤¸¤ĆŔÜÂł¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤ÎĽŢĽˇĽó¤ÎĽÇĽŐĽŠĽëĽČĽëĄźĽČ¤Ď¤˝¤ě¤ž¤ěźĄ¤Î¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ ĽŰĽšĽČ ĽÇĽŐĽŠĽëĽČĽ˛ĄźĽČĽŚĽ§Ľ¤ Ľ¤ĽóĽżĽŐĽ§ĄźĽš Local2 Local1 Ethernet Local1 T1-GW PPP ¤Ę¤ź (¤˘¤ë¤¤¤ĎĄ˘¤É¤Ś¤ä¤Ă¤Ć) ĽÇĽŐĽŠĽëĽČĽ˛ĄźĽČĽŚĽ§Ľ¤¤ňĄ˘Local1 ¤ŹŔÜÂł¤ľ¤ě¤Ć¤¤¤ë ISP ¤ÎĽľĄźĽĐ¤Ç¤Ď¤Ę¤ŻĄ˘T1-GW ¤ËŔßÄꤚ¤ë¤Î¤Ť ¤Č¤¤¤ŚźÁĚ䤏¤č¤Ż¤˘¤ę¤Ţ¤šĄŁ PPP ŔÜÂł¤ÇĄ˘¤˘¤Ę¤ż¤ÎĽľĽ¤ĽČÂŚ¤Î PPP Ľ¤ĽóĽżĽŐĽ§ĄźĽš¤ĎĄ˘ ISP ¤ÎĽíĄźĽŤĽëĽÍĽĂĽČĽďĄźĽŻžĺ¤ÎĽ˘ĽÉĽěĽš¤ňÍѤ¤¤Ć¤¤¤ë¤ż¤áĄ˘ ISP ¤ÎĽíĄźĽŤĽëĽÍĽĂĽČĽďĄźĽŻžĺ¤Î¤š¤Ů¤Ć¤ÎĽŢĽˇĽó¤Ř¤ÎˇĐĎŠ¤Ď źŤĆ°ĹޤËŔ¸Ŕޤľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤Ä¤Ţ¤ę¤˘¤Ę¤ż¤ÎĽŢĽˇĽó¤ĎĄ˘¤É¤Î¤č¤Ś¤Ë¤ˇ¤Ć T1-GW ¤ËĹţĂŁ¤š¤ë¤Ť¤Č¤¤¤ŚˇĐĎŠ¤ň´ű¤ËĂΤäƤ¤¤ë¤ł¤Č¤Ë¤Ę¤ę¤Ţ¤š¤Ť¤éĄ˘ ISP ĽľĄźĽĐ¤ËĽČĽéĽŐĽŁĽĂĽŻ¤ňÁ÷¤ë¤Î¤ËĄ˘ Ăć´ÖĹŞ¤ĘĂĘłŹ¤ňƧ¤ŕÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ °ěČĚĹŞ¤ËĽíĄźĽŤĽëĽÍĽĂĽČĽďĄźĽŻ¤Ç¤Ď X.X.X.1 ¤Č¤¤¤ŚĽ˘ĽÉĽěĽš¤ňĽ˛ĄźĽČĽŚĽ§Ľ¤Ľ˘ĽÉĽěĽš¤Č¤ˇ¤ĆťČ¤¤¤Ţ¤šĄŁ¤Ç¤š¤Ť¤é (Ćą¤¸Îă¤ňÍѤ¤¤Ţ¤š)Ą˘¤˘¤Ę¤ż¤Î class-C ¤ÎĽ˘ĽÉĽěĽšśő´Ö¤Ź 10.20.30 ¤Ç ISP ¤Ź 10.9.9 ¤ňÍѤ¤¤Ć¤¤¤ëžěšçĄ˘ ĽÇĽŐĽŠĽëĽČĽëĄźĽČ¤ĎźĄ¤Î¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ ĽŰĽšĽČ ĽÇĽŐĽŠĽëĽČĽëĄźĽČ Local2 (10.20.30.2) Local1 (10.20.30.1) Local1 (10.20.30.1, 10.9.9.30) T1-GW (10.9.9.1) ĽÇĽŐĽŠĽëĽČĽëĄźĽČ¤Ď /etc/rc.conf ĽŐĽĄĽ¤Ľë¤Ç´ĘĂą¤ËÄęľÁ¤Ç¤­¤Ţ¤šĄŁ¤ł¤ÎÎă¤Ç¤ĎĄ˘ Local2 ĽŢĽˇĽó¤Ç /etc/rc.conf ¤ËźĄ¤ÎšÔ¤ňÄɲ䡤Ƥ¤¤Ţ¤šĄŁ defaultrouter="10.20.30.1" &man.route.8; ĽłĽŢĽóĽÉ¤ňťČ¤Ă¤ĆĽłĽŢĽóĽÉĽéĽ¤Ľó¤Ť¤éÄžŔܟšԤš¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ &prompt.root; route add default 10.20.30.1 ˇĐĎŠžđĘó¤ňźęư¤ÇÁŕşî¤š¤ëĘýËĄ¤Ë¤Ä¤¤¤ĆžÜ¤ˇ¤¤¤ł¤Č¤Ď &man.route.8; ¤ÎĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽÇĽĺĽ˘ĽëĽŰĄźĽŕĽŰĽšĽČ ĽÇĽĺĽ˘ĽëĽŰĄźĽŕĽŰĽšĽČ ¤ł¤ł¤Ç°ˇ¤Ś¤Ů¤­źďÎŕ¤ÎŔßÄꤏ¤â¤Ś°ě¤Ä¤˘¤ę¤Ţ¤šĄŁ ¤˝¤ě¤Ď 2 ¤Ä¤Î°Ű¤Ę¤ëĽÍĽĂĽČĽďĄźĽŻ¤Ë¤Ţ¤ż¤Ź¤ëĽŰĽšĽČ¤Ç¤šĄŁ ľť˝ŃĹŞ¤Ë¤ĎĽ˛ĄźĽČĽŚĽ§Ľ¤¤Č¤ˇ¤ĆľĄÇ˝¤š¤ëĽŢĽˇĽó (žĺ¤ÎÎă¤Ç¤Ď PPP ĽłĽÍĽŻĽˇĽçĽó¤ňÍѤ¤¤Ć¤¤¤Ţ¤š) ¤Ď¤š¤Ů¤ĆĽÇĽĺĽ˘ĽëĽŰĄźĽŕĽŰĽšĽČ¤Ç¤šĄŁ ¤ˇ¤Ť¤ˇźÂşÝ¤Ë¤Ď¤ł¤Î¸ŔÍդϥ˘2 ¤Ä¤Î LAN žĺ¤ÎĽľĽ¤ĽČ¤Ç¤˘¤ëĽŢĽˇĽó¤ňťŘ¤š¸ŔÍդȤˇ¤Ć¤Î¤ßťČ¤ď¤ě¤Ţ¤šĄŁ 2 Ëç¤ÎĽ¤ĄźĽľĽÍĽĂĽČĽŤĄźĽÉ¤ňťý¤ÄĽŢĽˇĽó¤ŹĄ˘ Ę̤μľĽÖĽÍĽĂĽČžĺ¤Ë¤˝¤ě¤ž¤ěĽ˘ĽÉĽěĽš¤ňťý¤Ă¤Ć¤¤¤ëžěšç¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤˘¤ë¤¤¤ĎĄ˘Ľ¤ĄźĽľĽÍĽĂĽČĽŤĄźĽÉ¤Ź 1 Ë礡¤Ť¤Ę¤¤ĽŢĽˇĽó¤ÇĄ˘ &man.ifconfig.8; ¤ÎĽ¨Ľ¤ĽęĽ˘Ľš¤ňťČ¤Ă¤Ć¤¤¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ĘŞÍýĹŞ¤ËĘŹ¤Ť¤ě¤Ć¤¤¤ë 2 ¤Ä¤ÎĽ¤ĄźĽľĽÍĽĂĽČ¤ÎĽÍĽĂĽČĽďĄźĽŻ¤ŹťČ¤ď¤ě¤Ć¤¤¤ë¤Ę¤é¤ĐÁ°źÔ¤ŹÍѤ¤¤é¤ě¤Ţ¤šĄŁ ¸ĺźÔ¤ĎĄ˘ĘŞÍýĹŞ¤Ë¤Ď 1 ¤Ä¤ÎĽÍĽĂĽČĽďĄźĽŻĽťĽ°ĽáĽóĽČ¤ÇĄ˘ ĎŔÍýĹŞ¤Ë¤Ď 2 ¤Ä¤ÎĽľĽÖĽÍĽĂĽČ¤ËĘŹ¤Ť¤ě¤Ć¤¤¤ëžěšç¤ËÍѤ¤¤é¤ě¤Ţ¤šĄŁ ¤É¤Á¤é¤Ë¤ˇ¤Ć¤âĄ˘ ¤ł¤ÎĽŢĽˇĽó¤Ź¤Ş¸ß¤¤¤ÎĽľĽÖĽÍĽĂĽČ¤Ř¤ÎĽ˛ĄźĽČĽŚĽ§Ľ¤ (inbound route) ¤Č¤ˇ¤ĆÄęľÁ¤ľ¤ě¤Ć¤¤¤ë¤ł¤Č¤ŹĘʤŤ¤ë¤č¤Ś¤ËĄ˘ ¤Ş¤Î¤Ş¤Î¤ÎĽľĽÖĽÍĽĂĽČ¤ÇĽëĄźĽĆĽŁĽóĽ°ĽĆĄźĽÖĽë¤ňŔßÄꤡ¤Ţ¤šĄŁ¤ł¤ÎĽŢĽˇĽó¤Ź 2 ¤Ä¤ÎĽľĽÖĽÍĽĂĽČ¤Î´Ö¤ÎĽëĄźĽż¤Č¤ˇ¤Ćưşî¤š¤ë¤Č¤¤¤Śš˝ŔŽ¤ĎĄ˘ ĽŃĽąĽĂĽČ¤ÎĽŐĽŁĽëĽżĽęĽóĽ°¤ňźÂÁő¤š¤ëÉŹÍפʤ˘¤ëžěšç¤äĄ˘ °ěĘý¸ţ¤Ţ¤ż¤ĎÁĐĘý¸ţ¤ÎĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽë¤ňÍřÍѤˇ¤żĽťĽ­ĽĺĽęĽĆĽŁ¤ňš˝Ăۤš¤ëžěšç¤Ë¤č¤ŻÍѤ¤¤é¤ě¤Ţ¤šĄŁ ¤ł¤ÎĽŢĽˇĽó¤ŹĆó¤Ä¤ÎĽ¤ĽóĽżĽŐĽ§ĄźĽš´Ö¤ÇźÂşÝ¤ËĽŃĽąĽĂĽČ¤ňźő¤ąĹϤš¤č¤Ś¤Ë¤ˇ¤ż¤¤žěšç¤ĎĄ˘ FreeBSD ¤Ç¤ł¤ÎľĄÇ˝¤ňÍ­¸ú¤Ë¤ˇ¤Ę¤¤¤Č¤¤¤ą¤Ţ¤ť¤óĄŁ ¤Ż¤ď¤ˇ¤¤źę˝ç¤Ë¤Ä¤¤¤Ć¤ĎźĄ¤ÎŔá¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽëĄźĽż¤Îš˝ĂŰ ĽëĄźĽż ĽÍĽĂĽČĽďĄźĽŻĽëĄźĽż¤ĎĂą¤Ë¤˘¤ëĽ¤ĽóĽżĽŐĽ§ĄźĽš¤Ť¤éĘ̤μ¤ĽóĽżĽŐĽ§ĄźĽš¤ŘĽŃĽąĽĂĽČ¤ňĹžÁ÷¤š¤ëĽˇĽšĽĆĽŕ¤Ç¤šĄŁ Ľ¤ĽóĽżĄźĽÍĽĂĽČɸ˝ŕ¤Ş¤č¤Ó¤š¤°¤ě¤żľť˝ŃĹŞ¤Ę´ˇ˝Ź¤Ť¤éĄ˘ FreeBSD Ľ×ĽíĽ¸Ľ§ĽŻĽČ¤Ď FreeBSD ¤Ë¤Ş¤¤¤Ć¤ł¤ÎľĄÇ˝¤ňĽÇĽŐĽŠĽëĽČ¤Ç¤ĎÍ­¸ú¤Ë¤ˇ¤Ć¤¤¤Ţ¤ť¤óĄŁ &man.rc.conf.5; Ćâ¤ÇźĄ¤ÎĘŃżô¤ň YES ¤ËĘŃšš¤š¤ë¤ł¤Č¤Ç¤ł¤ÎľĄÇ˝¤ňÍ­¸ú¤Ë¤Ç¤­¤Ţ¤šĄŁ gateway_enable=YES # Set to YES if this host will be a gateway ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤Ď &man.sysctl.8; ĘŃżô¤Î net.inet.ip.forwarding ¤ň 1 ¤ËŔßÄꤡ¤Ţ¤šĄŁ °ěťţĹŞ¤ËĽëĄźĽĆĽŁĽóĽ°¤ňÄäťß¤š¤ëÉŹÍפʤ˘¤ë¤Č¤­¤Ë¤ĎĄ˘ ¤ł¤ÎĘŃżô¤ň°ěťţĹŞ¤Ë 0 ¤ËŔßÄꤡ¤Ę¤Ş¤ť¤Ţ¤šĄŁ źĄ¤ËĄ˘ĽČĽéĽŐĽŁĽĂĽŻ¤Î°¸Ŕč¤ňˇč¤á¤ë¤ż¤á¤ËĄ˘ ¤˝¤ÎĽëĄźĽż¤Ë¤ĎˇĐĎŠžđĘó¤ŹÉŹÍפˤʤę¤Ţ¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻ¤Ź˝˝ĘŹ´ĘÁǤʤ饢ŔĹĹŞˇĐĎŠ¤ŹÍřÍѤǤ­¤Ţ¤šĄŁ ¤Ţ¤żĄ˘FreeBSD ¤Ď BSD ¤Îɸ˝ŕĽëĄźĽĆĽŁĽóĽ°ĽÇĄźĽâĽó¤Ç¤˘¤ë &man.routed.8; ¤ňČ÷¤¨¤Ć¤¤¤Ţ¤šĄŁ¤ł¤ě¤Ď RIP (ĽĐĄźĽ¸ĽçĽó 1 ¤Ş¤č¤Ó 2) ¤Ş¤č¤Ó IRDP ¤ň°ˇ¤¨¤Ţ¤šĄŁ BGP ĽĐĄźĽ¸ĽçĽó 4Ą˘OSPF ĽĐĄźĽ¸ĽçĽó2Ą˘ ¤˝¤ÎžŔöÎý¤ľ¤ě¤żĽëĄźĽĆĽŁĽóĽ°Ľ×ĽíĽČĽłĽë¤Ď net/zebra package ¤ňÍѤ¤¤ě¤ĐÂĐąţ¤Ç¤­¤Ţ¤šĄŁ ¤Ţ¤żĄ˘¤č¤ęĘŁť¨¤ĘĽÍĽĂĽČĽďĄźĽŻĽëĄźĽĆĽŁĽóĽ°Ľ˝ĽęĽĺĄźĽˇĽçĽó¤Ë¤ĎĄ˘ &gated; ¤Î¤č¤Ś¤ĘžŚÍŃŔ˝ÉʤâÍřÍѲÄÇ˝¤Ç¤šĄŁ BGP RIP OSPF ¤ł¤Î¤č¤Ś¤Ë FreeBSD ¤ňŔßÄꤡ¤ż¤Č¤ˇ¤Ć¤âĄ˘ ĽëĄźĽż¤ËÂФš¤ëĽ¤ĽóĽżĄźĽÍĽĂĽČɸ˝ŕÍ׾á¤ň´°Á´¤ËËţ¤ż¤š¤ď¤ą¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ¤ˇ¤Ť¤ˇĄ˘ÄĚžďÍřÍѤ˴ؤˇ¤Ć¤Ď˝˝ĘʤȤ¤¤¨¤Ţ¤šĄŁ Al Hoang ´óšĆ: ŔĹĹŞ¤ĘˇĐĎŠ¤ÎŔßÄę źęư¤Ë¤č¤ëˇĐĎŠ¤ÎŔßÄę °Ę˛ź¤Î¤č¤Ś¤ĘĽÍĽĂĽČĽďĄźĽŻ¤ŹÂ¸şß¤š¤ë¤Č˛žÄꤡ¤Ţ¤šĄŁ INTERNET | (10.0.0.1/24) Default Router to Internet | |Interface xl0 |10.0.0.10/24 +------+ | | RouterA | | (FreeBSD gateway) +------+ | Interface xl1 | 192.168.1.1/24 | +--------------------------------+ Internal Net 1 | 192.168.1.2/24 | +------+ | | RouterB | | +------+ | 192.168.2.1/24 | Internal Net 2 ¤ł¤ÎĽˇĽĘĽęĽŞ¤Ç¤ĎĄ˘&os; ĽŢĽˇĽó¤Î RouterA ¤ŹĽ¤ĽóĽżĄźĽÍĽĂĽČ¤Ë¸ţ¤ą¤é¤ě¤żĽëĄźĽż¤Č¤ˇ¤Ćưşî¤ˇ¤Ţ¤šĄŁ ĽëĄźĽż¤Ďł°ÂŚ¤ÎĽÍĽĂĽČĽďĄźĽŻ¤ŘŔÜÂł¤Ç¤­¤ë¤č¤Ś¤Ë 10.0.0.1 ¤Ř¸ţ¤ą¤żĽÇĽŐĽŠĽëĽČĽëĄźĽČ¤ňĘÝťý¤ˇ¤Ć¤¤¤Ţ¤šĄŁ RouterB ¤Ď¤š¤Ç¤ËĹŹŔÚ¤ËŔßÄꤾ¤ě¤Ć¤Ş¤ęĄ˘ ¤É¤ł¤Ř¸ţ¤Ť¤ŚÉŹÍפʤ˘¤ë¤ŤĄ˘ šÔ¤­Ă夯ĘýËĄ¤ňĂΤäƤ¤¤ë¤Č˛žÄꤡ¤Ţ¤š (¤ł¤ÎÎă¤Ç¤ĎĄ˘żŢ¤Î¤č¤Ś¤Ë´ĘĂą¤Ç¤šĄŁ 192.168.1.1 ¤ňĽ˛ĄźĽČĽŚĽ§Ľ¤¤Č¤ˇ¤Ć RouterB ¤ËĽÇĽŐĽŠĽëĽČĽëĄźĽČ¤ňÄɲ䚤ë¤Ŕ¤ą¤Ç¤š)ĄŁ RouterA ¤ÎĽëĄźĽĆĽŁĽóĽ°ĽĆĄźĽÖĽë¤ňłÎǧ¤š¤ë¤ČĄ˘ °Ę˛ź¤Î¤č¤Ś¤Ę˝ĐÎϤňĆŔ¤Ţ¤šĄŁ &prompt.user; netstat -nr Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 10.0.0.1 UGS 0 49378 xl0 127.0.0.1 127.0.0.1 UH 0 6 lo0 10.0.0/24 link#1 UC 0 0 xl0 192.168.1/24 link#2 UC 0 0 xl1 ¸˝şß¤ÎĽëĄźĽĆĽŁĽóĽ°ĽĆĄźĽÖĽë¤Ç¤ĎĄ˘RouterA ¤Ď¤Ţ¤Ŕ Internal Net 2 ¤Ë¤ĎĹţĂŁ¤Ç¤­¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ 192.168.2.0/24 ¤ÎˇĐĎŠ¤ňĘÝťý¤ˇ¤Ć¤¤¤Ę¤¤¤Ť¤é¤Ç¤šĄŁ ˛ňˇč¤š¤ë¤ż¤á¤Î°ě¤Ä¤ÎĘýËĄ¤ĎĄ˘ˇĐĎŠ¤ňźęư¤ÇÄɲ䚤뤳¤Č¤Ç¤šĄŁ °Ę˛ź¤ÎĽłĽŢĽóĽÉ¤Ç RouterA ¤ÎĽëĄźĽĆĽŁĽóĽ°ĽĆĄźĽÖĽë¤Ë 192.168.1.2 ¤ňÁ÷¤ęŔč¤Č¤ˇ¤ĆĄ˘Internal Net 2 ĽÍĽĂĽČĽďĄźĽŻ¤ňÄɲäˇ¤Ţ¤šĄŁ &prompt.root; route add -net 192.168.2.0/24 192.168.1.2 ¤ł¤ě¤Ë¤č¤ęĄ˘RouterA ¤ĎĄ˘ 192.168.2.0/24 ĽÍĽĂĽČĽďĄźĽŻžĺ¤ÎĽŰĽšĽČ¤ËĹţĂŁ˝ĐÍč¤Ţ¤šĄŁ ąĘ³Ū¤ĘŔßÄę žĺľ­¤ÎÎă¤ĎĄ˘ ľŻĆ°¤ˇ¤Ć¤¤¤ëĽˇĽšĽĆĽŕžĺ¤ËŔĹĹŞ¤ĘˇĐĎŠ¤ňŔßÄꤚ¤ëĘýËĄ¤Č¤ˇ¤Ć¤Ď´°Á´¤Ç¤šĄŁ ¤ˇ¤Ť¤ˇ¤Ę¤Ź¤éĄ˘&os; ĽŢĽˇĽó¤ňşĆľŻĆ°¤ˇ¤żşÝ¤ËĽëĄźĽĆĽŁĽóĽ°žđĘ󤏝Ĥé¤Ę¤¤¤Č¤¤¤ŚĚäÂꤏ°ě¤Ä¤˘¤ę¤Ţ¤šĄŁ ŔĹĹŞ¤ĘˇĐĎŠ¤ňÄɲ䚤ë¤Ë¤ĎĄ˘/etc/rc.conf ĽŐĽĄĽ¤Ľë¤ËĽëĄźĽČ¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ # Add Internal Net 2 as a static route static_routes="internalnet2" route_internalnet2="-net 192.168.2.0/24 192.168.1.2" static_routes ¤ÎŔßÄęĘŃżô¤ĎĄ˘ ĽšĽÚĄźĽš¤Ë¤č¤Ă¤ĆĘŹÎĽ¤ľ¤ě¤ëʸťúÎó¤ÎĽęĽšĽČ¤Ç¤šĄŁ ¤˝¤ě¤ž¤ě¤ÎʸťúÎó¤ĎˇĐĎŠĚž¤Č¤ˇ¤Ćť˛žČ¤ľ¤ě¤Ţ¤šĄŁ žĺľ­¤ÎÎă¤Ç¤Ď static_routes ¤Ď°ě¤Ä¤ÎʸťúÎó¤Î¤ß¤ňťý¤Á¤Ţ¤šĄŁ ¤˝¤ÎʸťúÎó¤Ď internalnet2 ¤Ç¤šĄŁ¤˝¤Î¸ĺĄ˘ route_internalnet2 ¤Č¤¤¤ŚŔßÄęĘŃżô¤ňÄɲ䡥˘ &man.route.8; ĽłĽŢĽóĽÉ¤ËÍż¤¨¤ë¤š¤Ů¤Ć¤ÎŔßÄęĽŃĽéĽáĄźĽż¤ňťŘÄꤡ¤Ć¤¤¤Ţ¤šĄŁ Á°Ŕá¤ÎÎă¤Ç¤ĎĄ˘°Ę˛ź¤ÎĽłĽŢĽóĽÉ &prompt.root; route add -net 192.168.2.0/24 192.168.1.2 ¤ňÍѤ¤¤ż¤Î¤ÇĄ˘ "-net 192.168.2.0/24 192.168.1.2" ¤ŹÉŹÍפˤʤę¤Ţ¤šĄŁ žĺľ­¤Î¤č¤Ś¤Ë static_routes ¤Ď°ě¤Ä°Ęžĺ¤ÎʸťúÎó¤ňťý¤Ä¤ł¤Č¤Ź˝ĐÍč¤ë¤Î¤ÇĄ˘ Âżżô¤ÎŔĹĹŞ¤ĘˇĐĎŠ¤ňşî¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ °Ę˛ź¤ÎšÔ¤Ď 192.168.0.0/24 ¤Ş¤č¤Ó 192.168.1.0/24 ĽÍĽĂĽČĽďĄźĽŻ¤ňĄ˘ ˛žÁۼ륟Ľżžĺ¤ËŔĹĹŞ¤ĘˇĐĎŠ¤Č¤ˇ¤ĆÄɲ䚤ëÎă¤Ç¤šĄŁ static_routes="net1 net2" route_net1="-net 192.168.0.0/24 192.168.0.1" route_net2="-net 192.168.1.0/24 192.168.1.1" ĽëĄźĽĆĽŁĽóĽ°¤ÎĹÁČ ĽëĄźĽĆĽŁĽóĽ°¤ÎĹÁČ ł°Éô¤Č¤ÎˇĐĎŠ¤ň¤É¤Î¤č¤Ś¤ËÄęľÁ¤ˇ¤ż¤é¤č¤¤¤Ť¤Ď¤š¤Ç¤ËŔâĚŔ¤ˇ¤Ţ¤ˇ¤żĄŁ ¤ˇ¤Ť¤ˇł°Éô¤Ť¤éťä¤ż¤Á¤ÎĽŢĽˇĽó¤ň¤É¤Î¤č¤Ś¤Ë¤ˇ¤Ć¸Ť¤Ä¤ą¤ë¤Î¤Ť¤Ë¤Ä¤¤¤Ć¤ĎŔâĚŔ¤ˇ¤Ć¤¤¤Ţ¤ť¤óĄŁ ¤˘¤ëĆĂÄę¤ÎĽ˘ĽÉĽěĽšśő´Ö (¤ł¤ÎÎă¤Ç¤Ď class-C ¤ÎĽľĽÖĽÍĽĂĽČ) ¤Ë¤Ş¤ą¤ë¤š¤Ů¤Ć¤ÎĽČĽéĽŐĽŁĽĂĽŻ¤ŹĄ˘ ĹţĂ夡¤żĽŃĽąĽĂĽČ¤ňĆâÉô¤ÇĹžÁ÷¤š¤ëĽÍĽĂĽČĽďĄźĽŻžĺ¤ÎĆĂÄę¤ÎĽŰĽšĽČ¤ËÁ÷¤é¤ě¤ë¤č¤Ś¤ËĽëĄźĽĆĽŁĽóĽ°ĽĆĄźĽÖĽë¤ňŔßÄꤚ¤ë¤ł¤Č¤Ź¤Ç¤­¤ë¤Î¤ĎĘŹ¤Ť¤Ă¤Ć¤¤¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤ÎĽľĽ¤ĽČ¤ËĽ˘ĽÉĽěĽšśő´Ö¤ňłä¤ęĹö¤Ć¤ëžěšçĄ˘ ¤˘¤Ę¤ż¤ÎĽľĽÖĽÍĽĂĽČ¤Ř¤Î¤š¤Ů¤Ć¤ÎĽČĽéĽŐĽŁĽĂĽŻ¤Ź¤š¤Ů¤Ć PPP ĽęĽóĽŻ¤ňÄ̤¸¤ĆĽľĽ¤ĽČ¤ËÁ÷¤Ă¤Ć¤Ż¤ë¤č¤Ś¤ËĽľĄźĽÓĽšĽ×ĽíĽĐĽ¤ĽŔ¤ĎĽëĄźĽĆĽŁĽóĽ°ĽĆĄźĽÖĽë¤ňŔßÄꤡ¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇĄ˘šńś­¤Î¸ţ¤ł¤ŚÂŚ¤ÎĽľĽ¤ĽČ¤Ď¤É¤Î¤č¤Ś¤Ë¤ˇ¤Ć¤˘¤Ę¤ż¤Î ISP ¤ŘÁ÷¤ë¤ł¤Č¤ňĂΤë¤Î¤Ç¤ˇ¤ç¤Ś¤Ť? łä¤ęĹö¤Ć¤é¤ě¤Ć¤¤¤ë¤š¤Ů¤Ć¤ÎĽ˘ĽÉĽěĽšśő´Ö¤ÎˇĐĎŠ¤ň°Ýťý¤š¤ë (ĘŹťś¤ˇ¤Ć¤¤¤ë DNS žđĘó¤Č¤č¤Żť÷¤ż) ĽˇĽšĽĆĽŕ¤Ź¤˘¤ęĄ˘ ¤˝¤ÎĽ¤ĽóĽżĄźĽÍĽĂĽČĽĐĽĂĽŻĽÜĄźĽó¤Ř¤ÎŔÜÂłĹŔ¤ňÄęľÁ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ĽĐĽĂĽŻĽÜĄźĽó ¤Č¤Ďšń¤ňąŰ¤¨Ą˘ Ŕ¤łŚĂć¤ÎĽ¤ĽóĽżĄźĽÍĽĂĽČ¤ÎĽČĽéĽŐĽŁĽĂĽŻ¤ňąż¤ÖźçÍפʿŽÍѤǤ­¤ë´´Ŕţ¤Î¤ł¤Č¤Ç¤šĄŁ ¤É¤ÎĽĐĽĂĽŻĽÜĄźĽóĽŢĽˇĽó¤âĄ˘ ¤˘¤ëĽÍĽĂĽČĽďĄźĽŻ¤Ť¤éĆĂÄę¤ÎĽĐĽĂĽŻĽÜĄźĽó¤ÎĽŢĽˇĽó¤Ř¸ţ¤Ť¤ŚĽČĽéĽŐĽŁĽĂĽŻ¤ČĄ˘ ¤˝¤ÎĽĐĽĂĽŻĽÜĄźĽó¤ÎĽŢĽˇĽó¤Ť¤é¤˘¤Ę¤ż¤ÎĽÍĽĂĽČĽďĄźĽŻ¤ËĆĎ¤ŻĽľĄźĽÓĽšĽ×ĽíĽĐĽ¤ĽŔ¤Ţ¤Ç¤ÎĽÁĽ§ĄźĽó¤ÎĽŢĽšĽżĽĆĄźĽÖĽë¤ÎĽłĽÔĄź¤ňťý¤Ă¤Ć¤¤¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤ÎĽľĽ¤ĽČ¤ŹŔÜÂł (Ľ×ĽíĽĐĽ¤ĽŔ¤Ť¤é¤ß¤ĆĆâÂŚ¤Ë¤˘¤ë¤ł¤Č¤Ë¤Ę¤ę¤Ţ¤š) ¤ˇ¤ż¤Č¤¤¤Ś¤ł¤Č¤ňĄ˘ Ľ×ĽíĽĐĽ¤ĽŔ¤Ť¤éĽĐĽĂĽŻĽÜĄźĽóĽľĽ¤ĽČ¤ŘÄĚĂΤš¤ë¤ł¤Č¤ĎĽ×ĽíĽĐĽ¤ĽŔ¤ÎťĹťö¤Ç¤šĄŁ ¤ł¤ě¤ŹˇĐĎŠ¤ÎĹÁČÂ¤Ç¤šĄŁ ĽČĽéĽÖĽëĽˇĽĺĄźĽĆĽŁĽóĽ° traceroute ˇĐĎŠ¤ÎĹÁȤËĚäÂꤏŔ¸¤¸¤ĆĄ˘ ¤¤¤Ż¤Ä¤Ť¤ÎĽľĽ¤ĽČ¤ŹŔÜÂł¤ň¤Ş¤ł¤Ę¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ę¤Ż¤Ę¤ë¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ ĽëĄźĽĆĽŁĽóĽ°¤Ź¤É¤ł¤Ç¤Ş¤Ť¤ˇ¤Ż¤Ę¤Ă¤Ć¤¤¤ë¤Ť¤ňĚŔ¤é¤Ť¤Ë¤š¤ë¤Î¤ËşÇ¤âÍ­¸ú¤ĘĽłĽŢĽóĽÉ¤Ď¤Ş¤˝¤é¤Ż &man.traceroute.8; ĽłĽŢĽóĽÉ¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ÎĽłĽŢĽóĽÉ¤ĎĄ˘¤˘¤Ę¤ż¤ŹĽęĽâĄźĽČĽŢĽˇĽó¤ËÂФˇ¤ĆŔÜÂł¤ň¤Ş¤ł¤Ę¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ę¤¤ (¤ż¤Č¤¨¤Đ &man.ping.8; ¤ËźşÇÔ¤š¤ë¤č¤Ś¤Ę) žěšç¤âĄ˘Ćए¤č¤Ś¤ËÍ­¸ú¤Ç¤šĄŁ &man.traceroute.8; ĽłĽŢĽóĽÉ¤ĎĄ˘ ŔÜÂł¤ňťî¤ß¤Ć¤¤¤ëĽęĽâĄźĽČĽŰĽšĽČ¤ň°úżô¤Ë¤ˇ¤ĆźÂšÔ¤ˇ¤Ţ¤šĄŁ ťî¤ß¤Ć¤¤¤ëˇĐĎŠ¤ŹˇĐÍł¤š¤ëĽ˛ĄźĽČĽŚĽ§Ľ¤ĽŰĽšĽČ¤ňÉ˝ź¨¤ˇĄ˘ şÇ˝ŞĹޤˤĎĚÜĹŞ¤ÎĽŰĽšĽČ¤Ë¤ż¤É¤ęĂ夯¤ŤĄ˘ ĽłĽÍĽŻĽˇĽçĽó¤ÎˇçÇĄ¤Ë¤č¤Ă¤Ć˝Ş¤Ă¤Ć¤ˇ¤Ţ¤Ś¤Ť¤Î¤É¤Á¤é¤Ť¤Ë¤Ę¤ę¤Ţ¤šĄŁ ¤č¤ęžÜ¤ˇ¤¤žđĘó¤ĎĄ˘&man.traceroute.8; ¤ÎĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ň¤ß¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŢĽëĽÁĽ­ĽăĽšĽČĽëĄźĽĆĽŁĽóĽ° ĽŢĽëĽÁĽ­ĽăĽšĽČ options MROUTING FreeBSD ¤ĎĽŢĽëĽÁĽ­ĽăĽšĽČĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ČĽŢĽëĽÁĽ­ĽăĽšĽČĽëĄźĽĆĽŁĽóĽ°¤ÎΞĘý¤ËĽÍĽ¤ĽĆĽŁĽÖÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ĽŢĽëĽÁĽ­ĽăĽšĽČĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ňư¤Ť¤š¤Î¤Ë FreeBSD ¤ÇĆĂĘ̤ĘŔßÄę¤ň¤š¤ëÉŹÍפϰěŔÚ¤˘¤ę¤Ţ¤ť¤óĄŁ Ľ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ĎÉáÄ̤Ϥ˝¤Î¤Ţ¤Ţ¤Çư¤Ż¤Ç¤ˇ¤ç¤ŚĄŁ ĽŢĽëĽÁĽ­ĽăĽšĽČĽëĄźĽĆĽŁĽóĽ°¤ËÂĐąţ¤š¤ë¤Ë¤ĎĄ˘ ˛ź¤ÎĽŞĽ×ĽˇĽçĽó¤ňÄɲ䡤ƼŤĄźĽÍĽë¤ňĽłĽóĽŃĽ¤Ľë¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ options MROUTING ¤ľ¤é¤ËĄ˘/etc/mrouted.conf ¤ňĘÔ˝¸¤ˇ¤ĆĽëĄźĽĆĽŁĽóĽ°ĽÇĄźĽâĽó &man.mrouted.8; ¤ňŔßÄꤡĄ˘ĽČĽóĽÍĽë¤Č DVMRP ¤ňŔßĂÖ¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ĽŢĽëĽÁĽ­ĽăĽšĽČŔßÄę¤Ë¤Ä¤¤¤Ć¤ÎžÜşŮ¤Ď &man.mrouted.8; ¤ÎĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Eric Anderson ¸śşî: ĚľŔţĽÍĽĂĽČĽďĄźĽŻ ĚľŔţĽÍĽĂĽČĽďĄźĽŻ 802.11 ĚľŔţĽÍĽĂĽČĽďĄźĽŻ ¤Ď¤¸¤á¤Ë žď¤ËĽÍĽĂĽČĽďĄźĽŻĽąĄźĽÖĽë¤ň¤Ä¤Ę¤¤¤Ç¤¤¤ë¤Č¤¤¤ŚĚĚĹݤʤł¤Č¤ň¤ť¤ş¤ËĄ˘ ĽłĽóĽÔĽĺĄźĽż¤ňťČÍѤǤ­¤ë¤ł¤Č¤ĎĄ˘¤Č¤Ć¤âÍ­ÍѤǤˇ¤ç¤ŚĄŁ FreeBSD ¤ĎĚľŔţ¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČ¤Č¤ˇ¤ĆĄ˘ ¤ľ¤é¤Ë Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ ¤Č¤ˇ¤Ć¤âťČ¤¨¤Ţ¤šĄŁ ĚľŔţ¤ÎưşîĽâĄźĽÉ 802.11 ĚľŔţĽÇĽĐĽ¤Ľš¤ÎŔßÄę¤Ë¤ĎĄ˘BSS ¤Č IBSS ¤ÎĆó¤Ä¤ÎĘýËĄ¤Ź¤˘¤ę¤Ţ¤šĄŁ BSS ĽâĄźĽÉ BSS ĽâĄźĽÉ¤Ď°ěČĚĹŞ¤ËťČ¤ď¤ě¤Ć¤¤¤ëĽâĄźĽÉ¤Ç¤šĄŁ BSS ĽâĄźĽÉ¤ĎĽ¤ĽóĽŐĽéĽšĽČĽéĽŻĽÁĽăĽâĄźĽÉ¤Č¤â¸Ć¤Đ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎĽâĄźĽÉ¤Ç¤ĎĄ˘ Âż¤Ż¤ÎĚľŔţĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤Ź 1 ¤Ä¤ÎÍ­ŔţĽÍĽĂĽČĽďĄźĽŻ¤ËŔÜÂł¤ľ¤ě¤Ţ¤šĄŁ ¤˝¤ě¤ž¤ě¤ÎĽďĽ¤ĽäĽěĽšĽÍĽĂĽČĽďĄźĽŻ¤Ď¸ÇÍ­¤ÎĚžžÎ¤ňťý¤Ă¤Ć¤¤¤Ţ¤šĄŁ ¤˝¤ÎĚžžÎ¤ĎĽÍĽĂĽČĽďĄźĽŻ¤Î SSID ¤Č¸Ć¤Đ¤ě¤Ţ¤šĄŁ ĚľŔţĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ď¤ł¤ě¤é¤ÎĚľŔţĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ËŔÜÂł¤ˇ¤Ţ¤šĄŁ IEEE 802.11 ɸ˝ŕ¤ĎĚľŔţĽÍĽĂĽČĽďĄźĽŻ¤ŹŔÜÂł¤š¤ë¤Î¤ËťČÍѤš¤ëĽ×ĽíĽČĽłĽë¤ňľŹÄꤡ¤Ć¤¤¤Ţ¤šĄŁ SSID ¤ŹŔßÄꤾ¤ě¤Ć¤¤¤ë¤Č¤­¤ĎĄ˘ ĚľŔţĽŻĽéĽ¤Ľ˘ĽóĽČ¤ňĆĂÄę¤ÎĽÍĽĂĽČĽďĄźĽŻ¤Ëˇë¤Ó¤Ä¤ą¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ SSID ¤ňĚŔź¨ĹŞ¤ËťŘÄꤡ¤Ę¤¤¤ł¤Č¤Ë¤č¤ęĄ˘ ĚľŔţĽŻĽéĽ¤Ľ˘ĽóĽČ¤ňǤ°Ő¤ÎĽÍĽĂĽČĽďĄźĽŻ¤ËŔÜÂł¤š¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ IBSS ĽâĄźĽÉ Ľ˘ĽÉĽŰĽĂĽŻĽâĄźĽÉ¤Č¤â¸Ć¤Đ¤ě¤ë IBSS ĽâĄźĽÉ¤ĎĄ˘ °ěÂаěÄĚżŽ¤Î¤ż¤á¤ËŔߡפľ¤ě¤żÄĚżŽĘýź°¤Ç¤šĄŁ źÂşÝ¤Ë¤ĎĆóźďÎŕ¤ÎĽ˘ĽÉĽŰĽĂĽŻĽâĄźĽÉ¤Ź¤˘¤ę¤Ţ¤šĄŁ °ě¤Ä¤Ď IBSS ĽâĄźĽÉ¤ÇĄ˘Ľ˘ĽÉĽŰĽĂĽŻĽâĄźĽÉĄ˘¤Ţ¤ż¤Ď IEEE Ľ˘ĽÉĽŰĽĂĽŻĽâĄźĽÉ¤Č¤â¸Ć¤Đ¤ě¤Ţ¤šĄŁ ¤ł¤ÎĽâĄźĽÉ¤Ď IEEE 802.11 ɸ˝ŕ¤ËľŹÄꤾ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤â¤Ś°ě¤Ä¤ĎĽÇĽâĽ˘ĽÉĽŰĽĂĽŻĽâĄźĽÉ¤â¤ˇ¤Ż¤Ď Lucent Ľ˘ĽÉĽŰĽĂĽŻĽâĄźĽÉ (¤˝¤ˇ¤ĆťţĄšĄ˘Ęś¤é¤ď¤ˇ¤¤¤ł¤Č¤ËĄ˘Ľ˘ĽÉĽŰĽĂĽŻĽâĄźĽÉ) ¤Č¸Ć¤Đ¤ě¤ëĽâĄźĽÉ¤Ç¤šĄŁ ¤ł¤ÎĽâĄźĽÉ¤Ď¸Ĺ¤ŻĄ˘802.11 ¤ŹÉ¸˝ŕ˛˝¤š¤ë°ĘÁ°¤ÎĽ˘ĽÉĽŰĽĂĽŻĽâĄźĽÉ¤ÇĄ˘ ¤ł¤ě¤Ď¸Ĺ¤¤ŔßČ÷¤Ç¤Î¤ßťČÍѤľ¤ě¤ë¤Ů¤­¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ł¤Ç¤ĎĄ˘¤É¤Á¤é¤ÎĽ˘ĽÉĽŰĽĂĽŻĽâĄźĽÉ¤Ë¤Ä¤¤¤Ć¤â¤ł¤ě°Ęžĺ¸ŔľÚ¤ˇ¤Ţ¤ť¤óĄŁ Ľ¤ĽóĽŐĽéĽšĽČĽéĽŻĽÁĽăĄźĽâĄźĽÉ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤Ď°ě¤Ä°Ęžĺ¤ÎĚľŔţĽŻĽéĽ¤Ľ˘ĽóĽČ¤ŹĄ˘ ¤˝¤ÎĽÇĽĐĽ¤Ľš¤ňĽťĽóĽČĽéĽëĽĎĽÖ¤Č¤ˇ¤ĆÍřÍѤǤ­¤ë¤č¤Ś¤Ë¤š¤ëĚľŔţĽÍĽĂĽČĽďĄźĽŻĽÇĽĐĽ¤Ľš¤Ç¤šĄŁ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ňťČÍѤˇ¤Ć¤¤¤ë´ÖĄ˘ ¤š¤Ů¤Ć¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČ¤ĎĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ň˛đ¤ˇ¤ĆÄĚżŽ¤ˇ¤Ţ¤šĄŁ ˛Č˛°¤äżŚžěĄ˘¤Ţ¤ż¤Ď¸řąŕ¤Ę¤É¤Îśő´Ö¤ňĚľŔţĽÍĽĂĽČĽďĄźĽŻ¤Ç´°Á´¤ËĽŤĽĐĄź¤š¤ë¤ż¤á¤ËĄ˘ ĘŁżô¤ÎĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤Ź¤č¤ŻťČ¤ď¤ě¤Ţ¤šĄŁ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤Ď°ěČĚĹŞ¤ËĘŁżô¤ÎĽÍĽĂĽČĽďĄźĽŻŔÜÂł (ĚľŔţĽŤĄźĽÉ¤ČĄ˘ ¤˝¤Îž¤ÎĽÍĽĂĽČĽďĄźĽŻ¤ËŔÜÂł¤š¤ë¤ż¤á¤Î°ě¤Ä°Ęžĺ¤ÎÍ­ŔţĽ¤ĄźĽľĽÍĽĂĽČĽ˘ĽŔĽ×Ľż) ¤ňťý¤Ă¤Ć¤¤¤Ţ¤šĄŁ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ĎĄ˘˝ĐÍčšç¤¤¤Î¤â¤Î¤ňšŘĆţ¤š¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤š¤ˇĄ˘ FreeBSD ¤ČÂĐąţ¤ˇ¤Ć¤¤¤ëĚľŔţĽŤĄźĽÉ¤ňÁȤߚç¤ď¤ť¤ĆĄ˘ źŤĘŹ¤Çš˝Ăۤš¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ ¤¤¤Ż¤Ä¤â¤ÎĽáĄźĽŤ¤ŹĄ˘ ¤ľ¤Ţ¤ś¤Ţ¤ĘľĄÇ˝¤ň¤â¤Ă¤żĚľŔţĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤Ş¤č¤ÓĚľŔţĽŤĄźĽÉ¤ňŔ˝Â¤¤ˇ¤Ć¤¤¤Ţ¤šĄŁ FreeBSD ¤ÎĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤Îš˝ĂŰ ĚľŔţĽÍĽĂĽČĽďĄźĽŻ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ Íסď FreeBSD ¤ÇĚľŔţĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ňŔßÄꤚ¤ë¤ż¤á¤Ë¤ĎĄ˘ ¸ß´šŔ­¤Î¤˘¤ëĚľŔţĽŤĄźĽÉ¤ŹÉŹÍ×¤Ç¤šĄŁ ¸˝žő¤Ç¤Ď Prism ĽÁĽĂĽ×ĽťĽĂĽČ¤ÎĽŤĄźĽÉ¤Î¤ß¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤Ţ¤ż FreeBSD ¤ËÂĐąţ¤ˇ¤Ć¤¤¤ëÍ­ŔţĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉ¤âÉŹÍפˤʤë¤Ç¤ˇ¤ç¤Ś (¤ł¤ě¤ň¸Ť¤Ä¤ą¤ë¤Î¤ĎĆń¤ˇ¤Ż¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ FreeBSD ¤ĎÂż¤Ż¤Î°Ű¤Ę¤ëĽÇĽĐĽ¤Ľš¤ËÂĐąţ¤ˇ¤Ć¤¤¤ë¤Ť¤é¤Ç¤š) ĄŁ ¤ł¤Îźę°ú¤­¤Ç¤ĎĄ˘ ĚľŔţĽÇĽĐĽ¤Ľš¤ČÍ­ŔţĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉ¤ËŔÜÂł¤ˇ¤Ć¤¤¤ëĽÍĽĂĽČĽďĄźĽŻ´Ö¤ÎĽČĽéĽŐĽŁĽĂĽŻ¤ň &man.bridge.4; ¤ˇ¤ż¤¤¤Č˛žÄꤡ¤Ţ¤šĄŁ FreeBSD ¤ŹĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ňźÂÁő¤š¤ë¤Î¤ËťČÍѤš¤ë hostap ľĄÇ˝¤ĎĽŐĽĄĄźĽŕĽŚĽ§Ľ˘¤ÎĆĂÄę¤ÎĽĐĄźĽ¸ĽçĽó¤Ç°ěČ֤褯Ŕ­Ç˝¤ňČŻ´ř¤ˇ¤Ţ¤šĄŁ Prism 2 ĽŤĄźĽÉ¤ĎĄ˘ 1.3.4 °Ęšß¤ÎĽĐĄźĽ¸ĽçĽó¤ÎĽŐĽĄĄźĽŕĽŚĽ§Ľ˘¤ÇťČÍѤš¤Ů¤­¤Ç¤šĄŁ Prism 2.5 ¤Ş¤č¤Ó Prism 3 ĽŤĄźĽÉ¤Ç¤ĎĄ˘ĽĐĄźĽ¸ĽçĽó 1.4.9 ¤ÎĽĐĄźĽ¸ĽçĽó¤ÎĽŐĽĄĄźĽŕĽŚĽ§Ľ˘¤ÇťČÍѤš¤Ů¤­¤Ç¤šĄŁ ¤˝¤ě¤č¤ę¸Ĺ¤¤ĽĐĄźĽ¸ĽçĽó¤ÎĽŐĽĄĄźĽŕĽŚĽ§Ľ˘¤ĎĄ˘ Ŕľžď¤Ëư¤Ż¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤ó¤ˇĄ˘Ć°¤Ť¤Ę¤¤¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¸˝ťţĹŔ¤Ç¤ĎĄ˘ĽŤĄźĽÉ¤ÎĽŐĽĄĄźĽŕĽŚĽ§Ľ˘¤ňššżˇ¤š¤ëÍŁ°ě¤ÎĘýËĄ¤ĎĄ˘ ĽŤĄźĽÉ¤ÎŔ˝Â¤¸ľ¤Ť¤éĆţźę¤Ç¤­¤ë &windows; ÍŃĽŐĽĄĄźĽŕĽŚĽ§Ľ˘Ľ˘ĽĂĽ×ĽÇĄźĽČĽćĄźĽĆĽŁĽęĽĆĽŁ¤ňťČ¤Ś¤â¤Î¤Ç¤šĄŁ ŔßÄę ¤Ď¤¸¤á¤ËĽˇĽšĽĆĽŕ¤ŹĚľŔţĽŤĄźĽÉ¤ňÇ§źą¤ˇ¤Ć¤¤¤ë¤ł¤Č¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; ifconfig -a wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7 inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255 ether 00:09:2d:2d:c9:50 media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps) status: no carrier ssid "" stationname "FreeBSD Wireless node" channel 10 authmode OPEN powersavemode OFF powersavesleep 100 wepmode OFF weptxkey 1 şŮ¤Ť¤¤¤ł¤Č¤Ďľ¤¤Ë¤ť¤şĄ˘ ĚľŔţĽŤĄźĽÉ¤ŹĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňź¨¤š˛ż¤Ť¤ŹÉ˝ź¨¤ľ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňłÎ¤Ť¤á¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ PC ĽŤĄźĽÉ¤ňťČÍѤˇ¤Ć¤¤¤ĆĄ˘ĚľŔţĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ňÇ§źą¤Ç¤­¤Ę¤¤žěšçĄ˘ žÜ¤ˇ¤¤žđĘó¤ňĆŔ¤ë¤ż¤á¤Ë &man.pccardc.8; ¤Č &man.pccardd.8; ¤ÎĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ňÄ´¤Ů¤Ć¤ß¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ źĄ¤ËĄ˘Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČÍŃ¤Ë FreeBSD ¤ÎĽÖĽęĽĂĽ¸ľĄÇ˝¤ňĂ´¤ŚÉôĘŹ¤ňÍ­¸ú¤Ë¤š¤ë¤ż¤á¤ËĄ˘ ĽâĽ¸ĽĺĄźĽë¤ňĆɤߚţ¤ŕÉŹÍפʤ˘¤ë¤Ç¤ˇ¤ç¤ŚĄŁ &man.bridge.4; ĽâĽ¸ĽĺĄźĽë¤ňĆɤߚţ¤ŕ¤Ë¤ĎĄ˘ źĄ¤ÎĽłĽŢĽóĽÉ¤ň¤˝¤Î¤Ţ¤ŢźÂšÔ¤ˇ¤Ţ¤šĄŁ &prompt.root; kldload bridge ĽâĽ¸ĽĺĄźĽë¤ňĆɤߚţ¤ŕťţ¤Ë¤ĎĄ˘˛ż¤âĽ¨ĽéĄź¤Ď¤Ç¤Ę¤¤¤Ď¤ş¤Ç¤šĄŁ ¤â¤ˇ¤âĽ¨ĽéĄź¤Ź¤Ç¤ż¤éĄ˘ĽŤĄźĽÍĽë¤Ë &man.bridge.4; ¤ÎĽłĄźĽÉ¤ňĆţ¤ě¤ĆĽłĽóĽŃĽ¤Ľë¤š¤ëÉŹÍפʤ˘¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ĽĎĽóĽÉĽÖĽĂĽŻ¤ÎĽÖĽęĽĂĽ¸¤ÎŔᤏĄ˘ ¤ł¤Î˛ÝÂę¤ňŔޤˇżë¤˛¤ëźę˝ő¤ą¤ň¤Ë¤Ę¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ĽÖĽęĽĂĽ¸ÉôĘŹ¤Ź˝ŕČ÷¤Ç¤­¤ż¤Î¤ÇĄ˘ ¤É¤ÎĽ¤ĽóĽżĽŐĽ§ĄźĽš´Ö¤ňĽÖĽęĽĂĽ¸¤š¤ë¤Î¤Ť¤ň FreeBSD ĽŤĄźĽÍĽë¤ËťŘÄꤚ¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤ĎĄ˘&man.sysctl.8; ¤ňťČ¤Ă¤ĆšÔ¤¤¤Ţ¤šĄŁ &prompt.root; sysctl net.link.ether.bridge=1 &prompt.root; sysctl net.link.ether.bridge_cfg="wi0,xl0" &prompt.root; sysctl net.inet.ip.forwarding=1 &os; 5.2-RELEASE °Ęšß¤Ç¤ĎĄ˘źĄ¤Î¤č¤Ś¤ËťŘÄꤡ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ &prompt.root; sysctl net.link.ether.bridge.enable=1 &prompt.root; sysctl net.link.ether.bridge.config="wi0,xl0" &prompt.root; sysctl net.inet.ip.forwarding=1 ¤ľ¤ĆĄ˘ĚľŔţĽŤĄźĽÉ¤ňŔßÄꤚ¤ë¤Č¤­¤Ç¤šĄŁ źĄ¤ÎĽłĽŢĽóĽÉ¤ĎĽŤĄźĽÉ¤ňĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤Č¤ˇ¤ĆŔßÄꤡ¤Ţ¤šĄŁ &prompt.root; ifconfig wi0 ssid my_net channel 11 media DS/11Mbps mediaopt hostap up stationname "FreeBSD AP" ¤ł¤Î &man.ifconfig.8; ĽłĽŢĽóĽÉšÔ¤Ď wi0 Ľ¤ĽóĽżĽŐĽ§ĄźĽš¤ň up žőÂ֤ˤˇĄ˘SSID ¤ň my_net ¤ËŔßÄꤡĄ˘ ĽšĽĆĄźĽˇĽçĽóĚž¤ň FreeBSD AP ¤ËŔßÄꤡ¤Ţ¤šĄŁ ĽŞĽ×ĽˇĽçĽó¤ĎĽŤĄźĽÉ¤ň 11Mbps ĽâĄźĽÉ¤ËŔßÄꤡĄ˘¤Ţ¤ż ¤ňźÂşÝ¤ËÍ­¸ú¤Ë¤š¤ë¤Î¤ËÉŹÍ×¤Ç¤šĄŁ ĽŞĽ×ĽˇĽçĽó¤ĎĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ňĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČĽâĄźĽÉ¤Ë¤ˇ¤Ţ¤šĄŁ ĽŞĽ×ĽˇĽçĽó¤ĎťČÍѤš¤ëĽÁĽăĽÍĽë¤ň 802.11b ¤ËŔßÄꤡ¤Ţ¤šĄŁ łĆľŹŔŠĂϰč (regulatory domain) ¤ÇÍ­¸ú¤ĘĽÁĽăĽÍĽëČÖšć¤Ď &man.wicontrol.8; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ËşÜ¤Ă¤Ć¤¤¤Ţ¤šĄŁ ¤ľ¤ĆĄ˘ ¤ł¤ě¤Ç´°Á´¤ËľĄÇ˝¤š¤ëĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ŹÎФÁžĺ¤Ź¤ęĄ˘Ć°şî¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤č¤ęžÜ¤ˇ¤¤žđĘó¤Ë¤Ä¤¤¤Ć¤ĎĄ˘&man.wicontrol.8;, &man.ifconfig.8; ¤Ş¤č¤Ó &man.wi.4; ¤ÎĽŢĽËĽĺĽ˘Ľë¤ňĆɤŕ¤Č¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ¤Ţ¤żĄ˘˛źľ­¤Î°Ĺšć˛˝¤Ë´Ř¤š¤ëŔá¤ňĆɤळ¤Č¤â¤Ş¤š¤š¤á¤ˇ¤Ţ¤šĄŁ ĽšĽĆĄźĽżĽšžđĘó °ěĹŮĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ŹŔßÄꤾ¤ě¤Ć˛ÔĆŻ¤š¤ë¤ČĄ˘ ´ÉÍýźÔ¤ĎĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ňÍřÍѤˇ¤Ć¤¤¤ëĽŻĽéĽ¤Ľ˘ĽóĽČ¤ň¸Ť¤ż¤¤¤Čť×¤Ś¤Ç¤ˇ¤ç¤ŚĄŁ ¤¤¤Ä¤Ç¤â´ÉÍýźÔ¤Ď°Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤Ç¤­¤Ţ¤šĄŁ &prompt.root; wicontrol -l 1 station: 00:09:b7:7b:9d:16 asid=04c0, flags=3<ASSOC,AUTH>, caps=1<ESS>, rates=f<1M,2M,5.5M,11M>, sig=38/15 ¤ł¤ě¤Ď°ě¤Ä¤ÎśÉ¤ŹĄ˘ É˝ź¨¤ľ¤ě¤Ć¤¤¤ëĽŃĽéĽáĄźĽż¤ÇŔÜÂł¤ˇ¤Ć¤¤¤ë¤ł¤Č¤ňꍤˇ¤Ţ¤šĄŁ É˝ź¨¤ľ¤ě¤żżŽšć¤ĎĄ˘ ÁęÂĐĹŞ¤ĘśŻ¤ľ¤ňÉ˝ź¨¤ˇ¤Ć¤¤¤ë¤Ŕ¤ą¤Î¤â¤Î¤Č¤ˇ¤Ć°ˇ¤ď¤ě¤ë¤Ů¤­¤Ç¤šĄŁ dBm ¤ä¤˝¤Îž¤ÎĂą°Ě¤Ř¤ÎĘŃ´šˇë˛Ě¤ĎĄ˘ °Ű¤Ę¤ëĽŐĽĄĄźĽŕĽŚĽ§Ľ˘ĽĐĄźĽ¸ĽçĽó´Ö¤Ç°Ű¤Ę¤ę¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ ĚľŔţĽŻĽéĽ¤Ľ˘ĽóĽČ¤ĎĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČĄ˘ ¤Ţ¤ż¤Ďž¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËÄžŔÜĽ˘ĽŻĽťĽš¤š¤ëĽˇĽšĽĆĽŕ¤Ç¤šĄŁ ĹľˇżĹŞ¤Ë¤ĎĄ˘ ĚľŔţĽŻĽéĽ¤Ľ˘ĽóĽČ¤ŹÍ­¤ˇ¤Ć¤¤¤ëĽÍĽĂĽČĽďĄźĽŻĽÇĽĐĽ¤Ľš¤ĎĄ˘ ĚľŔţĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉ 1 Ëç¤Ŕ¤ą¤Ç¤šĄŁ ĚľŔţĽŻĽéĽ¤Ľ˘ĽóĽČ¤ňŔßÄꤚ¤ë¤Ë¤Ď¤¤¤Ż¤Ä¤ŤĘýËĄ¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤˝¤ě¤ž¤ě¤Ď°Ű¤Ę¤ëĚľŔţĽâĄźĽÉ¤Ë°Í¸¤ˇ¤Ć¤¤¤Ţ¤š¤ŹĄ˘ °ěČĚĹŞ¤Ë¤Ď BSS (Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ňÉŹÍפȤš¤ëĽ¤ĽóĽŐĽéĽšĽČĽéĽŻĽÁĽăĄźĽâĄźĽÉ) ¤ŤĄ˘ IBSS (Ľ˘ĽÉĽŰĽĂĽŻĄ˘¤Ţ¤ż¤ĎĽÔĽ˘ĽÄĄźĽÔĽ˘ĽâĄźĽÉ) ¤Î¤É¤Á¤é¤Ť¤Ç¤šĄŁ ¤ł¤ł¤Ç¤ĎĄ˘Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ČÄĚżŽ¤ň¤š¤ë¤Î¤ËĄ˘ ΞźÔ¤Î¤Ś¤Á¤ÇşÇ¤âš­¤Ţ¤Ă¤Ć¤¤¤ë BSS ĽâĄźĽÉ¤ňťČÍѤˇ¤Ţ¤šĄŁ Íסď FreeBSD ¤ňĚľŔţĽŻĽéĽ¤Ľ˘ĽóĽČ¤Č¤ˇ¤ĆŔßÄꤚ¤ë¤Î¤ËĄ˘ ËÜĹö¤ËÉŹÍפʤâ¤Î¤Ď¤ż¤Ă¤ż 1 ¤Ä¤Ŕ¤ą¤Ç¤šĄŁ FreeBSD ¤ŹÂĐąţ¤ˇ¤Ć¤¤¤ëĚľŔţĽŤĄźĽÉ¤ŹÉŹÍ×¤Ç¤šĄŁ ĚľŔţ FreeBSD ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎŔßÄę ŔßÄę¤ň¤Ď¤¸¤á¤ëÁ°¤ËĄ˘ ¤˘¤Ę¤ż¤ŹŔÜÂł¤ˇ¤č¤Ś¤Č¤š¤ëĚľŔţĽÍĽĂĽČĽďĄźĽŻ¤Ë¤Ä¤¤¤Ć¤¤¤Ż¤Ä¤ŤĂÎ¤Ă¤Ć¤Ş¤Ť¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ÎÎă¤Ç¤ĎĄ˘my_net ¤Č¤¤¤ŚĚžÁ°¤Ç°Ĺšć˛˝¤ĎĚľ¸ú¤Ë¤Ę¤Ă¤Ć¤¤¤ëĽÍĽĂĽČĽďĄźĽŻ¤ËŔÜÂł¤ˇ¤č¤Ś¤Č¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎÎă¤Ç¤Ď°Ĺšć˛˝¤ňšÔ¤Ă¤Ć¤¤¤Ę¤¤¤Î¤Ç¤š¤ŹĄ˘ ¤ł¤ě¤Ď´í¸ą¤Ęžőśˇ¤Ç¤šĄŁźĄ¤ÎŔá¤ÇĄ˘°Ĺšć˛˝¤ňÍ­¸ú¤Ë¤š¤ëĘýËĄ¤ČĄ˘ ¤Ę¤ź¤˝¤ě¤Ź˝ĹÍפǥ˘ °Ĺšćľť˝Ń¤Ë¤č¤Ă¤Ć¤Ď´°Á´¤Ë¤Ď¤˘¤Ę¤ż¤ňĘݸ¤ë¤ł¤Č¤Ź¤Ç¤­¤Ę¤¤¤Î¤Ď¤Ę¤ź¤ŤĄ˘ ¤Č¤¤¤Ś¤ł¤Č¤ňłŘ¤Ö¤Ç¤ˇ¤ç¤ŚĄŁ ĽŤĄźĽÉ¤Ź FreeBSD ¤ËÇ§źą¤ľ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; ifconfig -a wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7 inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255 ether 00:09:2d:2d:c9:50 media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps) status: no carrier ssid "" stationname "FreeBSD Wireless node" channel 10 authmode OPEN powersavemode OFF powersavesleep 100 wepmode OFF weptxkey 1 ¤˝¤ě¤Ç¤ĎĄ˘¤ł¤ÎĽŤĄźĽÉ¤ňĽÍĽĂĽČĽďĄźĽŻ¤Ëšç¤ď¤ť¤ĆŔßÄꤡ¤Ţ¤ˇ¤ç¤ŚĄŁ &prompt.root; ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net 192.168.0.20 ¤Č 255.255.255.0 ¤ňÍ­ŔţĽÍĽĂĽČĽďĄźĽŻ¤ÇÍ­¸ú¤Ę IP Ľ˘ĽÉĽěĽš¤ČĽÍĽĂĽČĽŢĽšĽŻ¤ËĂÖ¤­´š¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ĎĚľŔţĽÍĽĂĽČĽďĄźĽŻ¤ČÍ­ŔţĽÍĽĂĽČĽďĄźĽŻ¤Î´Ö¤ÇĽÇĄźĽż¤ňĽÖĽęĽĂĽ¸¤ˇ¤Ć¤¤¤ë¤ż¤áĄ˘ ĽÍĽĂĽČĽďĄźĽŻžĺ¤Îž¤ÎĽÇĽĐĽ¤Ľš¤Ë¤ĎĄ˘¤ł¤ÎĽÇĽĐĽ¤Ľš¤ŹĄ˘Âž¤ČĆąÍͤ˥˘ Í­ŔţĽÍĽĂĽČĽďĄźĽŻžĺ¤Ë¤˘¤ë¤Ť¤Î¤č¤Ś¤Ë¸Ť¤¨¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ě¤ň˝Ş¤¨¤ë¤ČĄ˘ ¤˘¤Ę¤ż¤Ďɸ˝ŕĹŞ¤ĘÍ­ŔţŔÜÂł¤ňťČÍѤˇ¤Ć¤¤¤ë¤Ť¤Î¤č¤Ś¤ËĄ˘ Í­ŔţĽÍĽĂĽČĽďĄźĽŻžĺ¤ÎĽŰĽšĽČ¤Ë ping ¤ňÁ÷¤ë¤ł¤Č¤Ź¤Ç¤­¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ĚľŔţŔÜÂł¤Ë´Ř¤š¤ëĚäÂꤏ¤˘¤ëžěšç¤ĎĄ˘ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ËŔÜÂł¤ľ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; ifconfig wi0 ¤¤¤Ż¤é¤ŤžđĘó¤ŹÉ˝ź¨¤ľ¤ě¤ë¤Ď¤ş¤Ç¤šĄŁ ¤˝¤ÎĂć¤Ë°Ę˛ź¤ÎÉ˝ź¨¤Ź¤˘¤ë¤Ď¤ş¤Ç¤šĄŁ status: associated ¤â¤ˇ associated ¤ČÉ˝ź¨¤ľ¤ě¤Ę¤ą¤ě¤ĐĄ˘ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ÎČϰϳ°¤Ť¤â¤ˇ¤ě¤Ę¤¤¤ˇĄ˘ °Ĺšć˛˝¤ŹÍ­¸ú¤Ë¤Ę¤Ă¤Ć¤¤¤ë¤Ť¤â¤ˇ¤ě¤Ę¤¤¤ˇĄ˘ ¤Ţ¤ż¤ĎŔßÄę¤ÎĚäÂę¤ňĘú¤¨¤Ć¤¤¤ë¤Î¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ °Ĺšć˛˝ ĚľŔţĽÍĽĂĽČĽďĄźĽŻ °Ĺšć˛˝ ĚľŔţĽÍĽĂĽČĽďĄźĽŻ¤ň°Ĺšć˛˝¤š¤ë¤ł¤Č¤Ź˝ĹÍפʤΤϥ˘ ˝˝ĘŹĘݸ¤ě¤żÎΰč¤ËĽÍĽĂĽČĽďĄźĽŻ¤ňÎą¤á¤ëÇ˝ÎĎ¤Ź¤â¤Ď¤ä¤Ę¤¤¤Ť¤é¤Ç¤šĄŁ ĚľŔţĽÇĄźĽż¤Ď¤˝¤ÎźţĘŐÁ´ÂΤˤ錄¤Ă¤ĆĘüÁ÷¤ľ¤ě¤ë¤Î¤ÇĄ˘ ¤˝¤ě¤ňĆɤߤż¤¤¤Čť×¤ŚżÍ¤Ď¤Ŕ¤ě¤Ç¤âĆɤळ¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤˝¤ł¤Ç°Ĺšć˛˝¤ŹĚň¤ËΊ¤Á¤Ţ¤šĄŁ ĹĹÇȤ˺ܤť¤ĆÁ÷¤é¤ě¤ëĽÇĄźĽż¤ň°Ĺšć˛˝¤š¤ë¤ł¤Č¤Ë¤č¤Ă¤ĆĄ˘ ś˝Ě٤ňĘú¤¤¤żźÔ¤ŹśőĂ植¤éĽÇĄźĽż¤ňźčĆŔ¤š¤ë¤ł¤Č¤ň¤ş¤Ă¤ČĆń¤ˇ¤Ż¤ˇ¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ČĽ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ´Ö¤ÎĽÇĄźĽż¤ň°Ĺšć˛˝¤š¤ë¤â¤Ă¤Č¤â°ěČĚĹŞ¤ĘĘýËĄ¤Ë¤ĎĄ˘ WEP ¤Č &man.ipsec.4; ¤ÎĆóźďÎए¤˘¤ę¤Ţ¤šĄŁ WEP WEP WEP ¤Ď Wired Equivalency Protocol (ĚőĂí: ÄžĚő¤š¤ë¤ČĄ˘Í­ŔţĹů˛ÁĽ×ĽíĽČĽłĽë) ¤ÎÎŹ¸ě¤Ç¤šĄŁWEP ¤ĎĚľŔţĽÍĽĂĽČĽďĄźĽŻ¤ňÍ­ŔţĽÍĽĂĽČĽďĄźĽŻ¤ČĆąÄřĹ٤˰ÂÁ´¤ÇłÎźÂ¤Ę¤â¤Î¤Ë¤ˇ¤č¤Ś¤Č¤š¤ëťî¤ß¤Ç¤šĄŁ ťÄǰ¤Ę¤Ź¤éĄ˘¤ł¤ě¤Ď¤š¤Ç¤ËÇˤé¤ě¤Ć¤Ş¤ęĄ˘ Çˤë¤Î¤Ď¤˝¤ě¤Ű¤ÉśěĎŤ¤ˇ¤Ţ¤ť¤óĄŁ ¤ł¤ě¤ĎĄ˘ľĄĚŠĽÇĄźĽż¤ň°Ĺšć˛˝¤š¤ë¤Č¤¤¤Śžěšç¤ËĄ˘ ¤ł¤ě¤ËÍę¤ë¤â¤Î¤Ç¤Ď¤Ę¤¤¤Č¤¤¤Ś¤ł¤Č¤â°ŐĚŁ¤ˇ¤Ţ¤šĄŁ ¤Ę¤Ë¤âĚľ¤¤¤č¤ę¤Ď¤Ţ¤ˇ¤Ę¤Î¤ÇĄ˘ źĄ¤ÎĽłĽŢĽóĽÉ¤ňťČ¤Ă¤ĆĄ˘¤˘¤Ę¤ż¤Îżˇ¤ˇ¤¤ FreeBSD Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČžĺ¤Ç WEP ¤ňÍ­¸ú¤Ë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; ifconfig wi0 inet up ssid my_net wepmode on wepkey 0x1234567890 media DS/11Mbps mediaopt hostap ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ë¤Ä¤¤¤Ć¤ĎźĄ¤ÎĽłĽŢĽóĽÉ¤Ç WEP ¤ňÍ­¸ú¤Ë¤Ç¤­¤Ţ¤šĄŁ &prompt.root; ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net wepmode on wepkey 0x1234567890 0x1234567890 ¤ň¤č¤ęĆðۤʼ­Ąź¤ËĘŃšš¤š¤Ů¤­¤Ç¤˘¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ IPsec &man.ipsec.4; ¤ĎĽÍĽĂĽČĽďĄźĽŻžĺ¤Ç¸ň¤ď¤ľ¤ě¤ëĽÇĄźĽż¤ň°Ĺšć˛˝¤š¤ë¤ż¤á¤ÎĄ˘ ¤Ď¤ë¤Ť¤Ë´čˇň¤ÇśŻÎϤʼĥźĽë¤Ç¤šĄŁ ¤ł¤ě¤ĎĚľŔţĽÍĽĂĽČĽďĄźĽŻžĺ¤ÎĽÇĄźĽż¤ň°Ĺšć˛˝¤š¤ëĚŔ¤é¤Ť¤ËšĽ¤Ţ¤ˇ¤¤ĘýËĄ¤Ç¤šĄŁ ĽĎĽóĽÉĽÖĽĂĽŻĆâ¤Î IPsec Ŕá¤Ç &man.ipsec.4; ĽťĽ­ĽĺĽęĽĆĽŁĄ˘ ¤Ş¤č¤Ó¤˝¤ÎźÂÁőĘýËĄ¤ÎžÜşŮ¤ňĆɤळ¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ĽÄĄźĽë ĚľŔţĽÍĽĂĽČĽďĄźĽŻ¤ňĽÇĽĐĽĂĽ°¤ˇ¤ż¤ęŔßÄꤚ¤ë¤Î¤ËťČ¤ŚĽÄĄźĽë¤Ź¤ď¤ş¤Ť¤Đ¤Ť¤ę¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ł¤Ç¤˝¤Î°ěÉô¤ČĄ˘¤˝¤ě¤é¤Ź˛ż¤ň¤ˇ¤Ć¤¤¤ë¤ŤŔâĚŔ¤ˇ¤Ţ¤šĄŁ <application>bsd-airtools</application> ĽŃĽĂĽąĄźĽ¸ bsd-airtools ĽŃĽĂĽąĄźĽ¸¤ĎĄ˘ WEP Ľ­ĄźĽŻĽéĽĂĽ­ĽóĽ°Ą˘ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¸ĄĂΤʤɤÎĚľŔţÄĚżŽ¤ň´Ćşş¤š¤ëĽÄĄźĽë¤ň´Ţ¤ŕ´°Č÷¤ľ¤ě¤żĽÄĄźĽë˝¸¤Ç¤šĄŁ bsd-airtools ĽćĄźĽĆĽŁĽęĽĆĽŁ¤Ď net/bsd-airtools port ¤Ť¤éĽ¤ĽóĽšĽČĄźĽë¤Ç¤­¤Ţ¤šĄŁ ports ¤ÎĽ¤ĽóĽšĽČĄźĽë¤Ë´Ř¤š¤ëžđĘó¤Ď¤ł¤ÎĽĎĽóĽÉĽÖĽĂĽŻ¤Î ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ dstumbler Ľ×ĽíĽ°ĽéĽŕ¤ĎĄ˘ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ÎČŻ¸Ť¤Ş¤č¤Ó S/N Čć¤ÎĽ°ĽéĽŐ˛˝¤ň¤Ç¤­¤ë¤č¤Ś¤Ë¤š¤ëĽŃĽĂĽąĄźĽ¸ĽÄĄźĽë¤Ç¤šĄŁ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤ňΊ¤Ážĺ¤˛¤Ćư¤Ť¤š¤Î¤ËśěĎŤ¤ˇ¤Ć¤¤¤ë¤Ę¤éĄ˘ dstumbler ¤Ď¤Ś¤Ţ¤ŻšÔ¤Żźę˝ő¤ą¤Ë¤Ę¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ĚľŔţĽÍĽĂĽČĽďĄźĽŻ¤Î°ÂÁ´Ŕ­¤ňĽĆĽšĽČ¤š¤ë¤Î¤ËĄ˘ dweputils (dwepcrack, dwepdump ¤Ş¤č¤Ó dwepkeygen) ¤ňťČÍѤš¤ë¤ł¤Č¤ÇĄ˘ WEP ¤Ź¤˘¤Ę¤ż¤ÎĚľŔţ°ÂÁ´Ŕ­¤Ř¤ÎÍ׾á¤ËÂФš¤ëŔľ¤ˇ¤¤˛ňˇčşö¤Ť¤É¤Ś¤ŤČ˝ĂǤš¤ë¤Î¤ň˝ő¤ą¤é¤ě¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ <command>wicontrol</command>, <command>ancontrol</command> ¤Ş¤č¤Ó <command>raycontrol</command> ĽćĄźĽĆĽŁĽęĽĆĽŁ ¤ł¤ě¤é¤ĎĄ˘ĚľŔţĽÍĽĂĽČĽďĄźĽŻžĺ¤ÇĚľŔţĽŤĄźĽÉ¤Ź¤É¤Î¤č¤Ś¤Ëưşî¤š¤ë¤Ť¤ňŔŠ¸ć¤š¤ëĽÄĄźĽë¤Ç¤šĄŁ žĺľ­¤ÎÎă¤Ç¤ĎĄ˘ĚľŔţĽŤĄźĽÉ¤Ź wi0 Ľ¤ĽóĽżĽŐĽ§ĄźĽš¤Ç¤˘¤ë¤Î¤ÇĄ˘&man.wicontrol.8; ¤ňťČÍѤš¤ë¤ł¤Č¤Ëˇč¤á¤Ţ¤ˇ¤żĄŁ ¤â¤ˇ Cisco ¤ÎĚľŔţĽÇĽĐĽ¤Ľš¤ňťý¤Ă¤Ć¤¤¤ëžěšç¤ĎĄ˘¤˝¤ě¤Ď an0 ¤Č¤ˇ¤Ćưşî¤š¤ë¤Ç¤ˇ¤ç¤Ś¤Ť¤éĄ˘ &man.ancontrol.8; ¤ňťČ¤Ś¤ł¤Č¤Ë¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁ <command>ifconfig</command> ĽłĽŢĽóĽÉ ifconfig &man.ifconfig.8; ¤Ď &man.wicontrol.8; ¤ČĆą¤¸ĽŞĽ×ĽˇĽçĽó¤ÎÂż¤Ż¤ň˝čÍý¤Ç¤­¤Ţ¤š¤ŹĄ˘ ¤¤¤Ż¤Ä¤Ť¤ÎĽŞĽ×ĽˇĽçĽó¤ňˇç¤¤¤Ć¤¤¤Ţ¤šĄŁ ĽłĽŢĽóĽÉĽéĽ¤Ľó°úżô¤ČĽŞĽ×ĽˇĽçĽó¤Ë¤Ä¤¤¤Ć &man.ifconfig.8; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ÂĐąţ¤ˇ¤Ć¤¤¤ëĽŤĄźĽÉ Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ ¸˝şß¤Î¤Č¤ł¤í (Ľ˘ĽŻĽťĽšĽÝĽ¤ĽóĽČ¤Č¤ˇ¤Ć) BSS ĽâĄźĽÉ¤ËÂĐąţ¤ˇ¤żÍٰě¤ÎĽŤĄźĽÉ¤Ď Prism 2, 2.5 ¤Ţ¤ż¤Ď 3 ĽÁĽĂĽ×ĽťĽĂĽČ¤ňÍřÍѤˇ¤żĽÇĽĐĽ¤Ľš¤Ç¤šĄŁ &man.wi.4; ¤Ë´°Á´¤Ę°ěÍ÷¤Ź¤˘¤ę¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ ¸˝şßĄ˘FreeBSD ¤Ç¤ĎĄ˘¤Ű¤Č¤ó¤É¤š¤Ů¤Ć¤Î 802.11b ĚľŔţĽŤĄźĽÉ¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ Prism, Spectrum24, Hermes, Aironet ¤Ţ¤ż¤Ď Raylink ¤ÎĽÁĽĂĽ×ĽťĽĂĽČ¤ňÍřÍѤˇ¤ż¤Ű¤Č¤ó¤É¤ÎĽŤĄźĽÉ¤ĎĄ˘ (Ľ˘ĽÉĽŰĽĂĽŻĄ˘ĽÔĽ˘ĽÄĄźĽÔĽ˘Ą˘¤˝¤ˇ¤Ć BSS ¤Î) IBSS ĽâĄźĽÉ¤ÇĚľŔţĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉ¤Č¤ˇ¤Ćưşî¤š¤ë¤Ç¤ˇ¤ç¤ŚĄŁ Pav Lucistnik ¸śşî:
pav@oook.cz
Bluetooth Bluetooth ¤Ď¤¸¤á¤Ë Bluetooth ¤ĎĚČľö¤Î¤¤¤é¤Ę¤¤ 2.4 GHz ¤ÎÂÓ°č¤ňÍřÍѤˇ¤ĆĄ˘ 10 m ÄřĹŮ¤ÎĽŃĄźĽ˝ĽĘĽëĽÍĽĂĽČĽďĄźĽŻ¤ňşî¤ëĚľŔţľť˝Ń¤Ç¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻ¤Ď¤ż¤¤¤Ć¤¤¤ÎžěšçĄ˘¤˝¤Îžě¤˝¤Îžě¤ÇĄ˘ˇČÂÓĹĹĎää PDA ¤äĽÎĄźĽČĽŃĽ˝ĽłĽó¤Ę¤É¤ÎˇČÂÓĽÇĽĐĽ¤Ľš¤Ť¤éˇÁŔޤľ¤ě¤Ţ¤šĄŁ Wi-Fi ¤Ę¤É¤Îž¤ÎÍ­Ěž¤ĘĚľŔţľť˝Ń¤Č¤Ď°ă¤¤Ą˘ Bluetooth ¤Ď¤č¤ęšâ¤¤ĽěĽŮĽë¤ÎĽľĄźĽÓĽš¤ňÄ󜥤ˇ¤Ţ¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘FTP ¤Î¤č¤Ś¤ĘĽŐĽĄĽ¤ĽëĽľĄźĽĐĄ˘ĽŐĽĄĽ¤Ľë¤ÎĽ×ĽĂĽˇĽĺĄ˘ ˛ťŔźĹÁÁ÷Ą˘ĽˇĽęĽ˘ĽëŔţ¤ÎĽ¨ĽßĽĺĽěĄźĽˇĽçĽó¤Ę¤É¤ÎĽľĄźĽÓĽš¤Ç¤šĄŁ &os; Ćâ¤Ç¤Î Bluetooth ĽšĽżĽĂĽŻ¤Ď Netgraph ĽŐĽěĄźĽŕĽďĄźĽŻ (&man.netgraph.4; ť˛žČ) ¤ňťČ¤Ă¤ĆźÂ¸˝¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ &man.ng.ubt.4; ĽÉĽéĽ¤ĽĐ¤ĎĄ˘ ÂżźďÂżÍÍ¤Ę Bluetooth USB ĽÉĽóĽ°Ľë¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ Broadcom BCM2033 ĽÁĽĂĽ×¤ňĹëşÜ¤ˇ¤ż Bluetooth ĽÇĽĐĽ¤Ľš¤Ď &man.ubtbcmfw.4; ¤Ş¤č¤Ó &man.ng.ubt.4; ĽÉĽéĽ¤ĽĐ¤Ë¤č¤Ă¤ĆÂĐąţ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ 3Com Bluetooth PC ĽŤĄźĽÉ 3CRWB60-A ¤Ď &man.ng.bt3c.4; ĽÉĽéĽ¤ĽĐ¤Ë¤č¤Ă¤ĆÂĐąţ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽˇĽęĽ˘Ľë¤Ş¤č¤Ó UART ¤ňĹëşÜ¤ˇ¤ż Bluetooth ĽÇĽĐĽ¤Ľš¤Ď &man.sio.4;, &man.ng.h4.4; ¤Ş¤č¤Ó &man.hcseriald.8; ĽÉĽéĽ¤ĽĐ¤Ë¤č¤Ă¤ĆÂĐąţ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎŔá¤Ç¤Ď USB Bluetooth ĽÉĽóĽ°Ľë¤ÎťČÍŃËĄ¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ Bluetooth ¤ËÂĐąţ¤ˇ¤Ć¤¤¤ë¤Î¤Ď &os; 5.0 °Ęšß¤ÎĽˇĽšĽĆĽŕ¤Ç¤šĄŁ ĚőĂí 5.0, 5.1 Release ¤Ç¤ĎĽŤĄźĽÍĽëĽâĽ¸ĽĺĄźĽë¤ĎÍřÍѲÄÇ˝¤Ç¤š¤ŹĄ˘ źďĄš¤ÎĽćĄźĽĆĽŁĽęĽĆĽŁ¤ČĽŢĽËĽĺĽ˘Ľë¤Ďɸ˝ŕ¤ÇĽłĽóĽŃĽ¤Ľë¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ ĽÇĽĐĽ¤Ľš¤ÎÁŢĆţ ĽÇĽŐĽŠĽëĽČ¤Ç¤Ď Bluetooth ĽÇĽĐĽ¤ĽšĽÉĽéĽ¤ĽĐ¤ĎĽŤĄźĽÍĽëĽâĽ¸ĽĺĄźĽë¤Č¤ˇ¤ĆÍřÍѤǤ­¤Ţ¤šĄŁ ĽÇĽĐĽ¤Ľš¤ňŔÜÂł¤š¤ëÁ°¤ËĄ˘ ĽŤĄźĽÍĽë¤ËĽÉĽéĽ¤ĽĐ¤ňĆɤߚţ¤ŕÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ &prompt.root; kldload ng_ubt Bluetooth ĽÇĽĐĽ¤Ľš¤ŹĽˇĽšĽĆĽŕľŻĆ°ťţ¤Ë¸şß¤ˇ¤Ć¤¤¤ëžěšçĄ˘ /boot/loader.conf ¤Ť¤éĽâĽ¸ĽĺĄźĽë¤ňĆɤߚţ¤ó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ ng_ubt_load="YES" USB ĽÉĽóĽ°Ľë¤ňÁޤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁĽłĽóĽ˝ĄźĽë¤Ë (¤Ţ¤ż¤Ď syslog ¤Ë) ˛źľ­¤Î¤č¤Ś¤ĘÉ˝ź¨¤Ź¸˝¤ě¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2 ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2 ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3, wMaxPacketSize=49, nframes=6, buffer size=294 /usr/share/examples/netgraph/bluetooth/rc.bluetooth ¤ň /etc/rc.bluetooth ¤Î¤č¤Ś¤Ę¤É¤ł¤ŤĘŘÍř¤Ęžě˝ę¤ËĽłĽÔĄź¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎĽšĽŻĽęĽ×ĽČ¤Ď Bluetooth ĽšĽżĽĂĽŻ¤ňłŤťĎ¤Ş¤č¤Ó˝ŞÎť¤ľ¤ť¤ë¤Î¤ËťČ¤ď¤ě¤Ţ¤šĄŁ ĽÇĽĐĽ¤Ľš¤ňČ´¤ŻÁ°¤ËĽšĽżĽĂĽŻ¤ň˝ŞÎť¤š¤ë¤Î¤Ď¤č¤¤šÍ¤¨¤Ç¤š¤ŹĄ˘ (¤ż¤¤¤Ć¤¤¤Îžěšç) ¤ˇ¤Ę¤Ż¤Ć¤âĂ×̿Ū¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ĽšĽżĽĂĽŻ¤ňłŤťĎ¤š¤ë¤Č¤­¤ËĄ˘˛źľ­¤Î¤č¤Ś¤Ę˝ĐÎĎ¤Ź¤ľ¤ě¤Ţ¤šĄŁ &prompt.root; /etc/rc.bluetooth start ubt0 BD_ADDR: 00:02:72:00:d4:1a Features: 0xff 0xff 0xf 00 00 00 00 00 <3-Slot> <5-Slot> <Encryption> <Slot offset> <Timing accuracy> <Switch> <Hold mode> <Sniff mode> <Park mode> <RSSI> <Channel quality> <SCO link> <HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD> <Paging scheme> <Power control> <Transparent SCO data> Max. ACL packet size: 192 bytes Number of ACL packets: 8 Max. SCO packet size: 64 bytes Number of SCO packets: 8 ĽŰĽšĽČĽłĽóĽČĽíĄźĽéĽ¤ĽóĽżĽŐĽ§ĄźĽš (HCI) HCI ĽŰĽšĽČĽłĽóĽČĽíĄźĽéĽ¤ĽóĽżĽŐĽ§ĄźĽš (HCI) ¤ĎĄ˘ ĽŮĄźĽšĽĐĽóĽÉĽłĽóĽČĽíĄźĽé¤Ş¤č¤ÓĽęĽóĽŻĽŢĽÍĄźĽ¸Ľă¤Ř¤ÎĽłĽŢĽóĽÉĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ňÄ󜥤ˇĄ˘ ĽĎĄźĽÉĽŚĽ§Ľ˘ĽšĽĆĄźĽżĽš¤Ş¤č¤ÓĽłĽóĽČĽíĄźĽëĽěĽ¸ĽšĽż¤ŘĽ˘ĽŻĽťĽš¤ˇ¤Ţ¤šĄŁ ¤ł¤ÎĽ¤ĽóĽżĽŐĽ§ĄźĽš¤Ď Bluetooth ĽŮĄźĽšĽĐĽóĽÉľĄÇ˝¤ŘĽ˘ĽŻĽťĽš¤š¤ë˛č°ěĹŞ¤ĘĘýËĄ¤ňÄ󜥤ˇ¤Ţ¤šĄŁ ĽŰĽšĽČ¤Î HCI ÁŘ¤Ď Bluetooth ĽĎĄźĽÉĽŚĽ§Ľ˘žĺ¤Î HCI ĽŐĽĄĄźĽŕĽŚĽ§Ľ˘¤ČĄ˘ ĽÇĄźĽż¤ČĽłĽŢĽóĽÉ¤ň¤ä¤ęźč¤ę¤ˇ¤Ţ¤šĄŁ ĽŰĽšĽČĽłĽóĽČĽíĄźĽéĽČĽéĽóĽšĽÝĄźĽČÁŘ (¤Ä¤Ţ¤ęĘŞÍýĹŞ¤ĘĽĐĽš) ¤ÎĽÉĽéĽ¤ĽĐ¤ĎĄ˘ ΞĘý¤Î HCI ÁؤËÁę¸ß¤ËžđĘó¤ň¸ň´š¤š¤ëÇ˝ÎϤňÍż¤¨¤Ţ¤šĄŁ °ě¤Ä¤Î Bluetooth ĽÇĽĐĽ¤Ľš¤Ë¤Ä¤­Ą˘hci ĽżĽ¤Ľ×¤Î Netgraph ĽÎĄźĽÉ¤Ź°ě¤ÄşîŔޤľ¤ě¤Ţ¤šĄŁ HCI ĽÎĄźĽÉ¤ĎÄĚžď Bluetooth ĽÇĽĐĽ¤ĽšĽÉĽéĽ¤ĽĐĽÎĄźĽÉ (˛źÎŽ) ¤Č L2CAP ĽÎĄźĽÉ (žĺÎŽ) ¤ËŔÜÂł¤ľ¤ě¤Ţ¤šĄŁ ¤š¤Ů¤Ć¤Î HCI ưşî¤ĎĽÇĽĐĽ¤ĽšĽÉĽéĽ¤ĽĐĽÎĄźĽÉžĺ¤Ç¤Ď¤Ę¤ŻĄ˘ HCI ĽÎĄźĽÉžĺ¤ÇšÔ¤ď¤ě¤Ę¤Ż¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ HCI ĽÎĄźĽÉ¤ÎĽÇĽŐĽŠĽëĽČĚž¤Ď devicehci ¤Ç¤šĄŁ žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.ng.hci.4; ĽŢĽËĽĺĽ˘Ľë¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ şÇ¤â°ěČĚĹŞ¤ĘĽżĽšĽŻ¤Î°ě¤Ä¤ËĄ˘ĚľŔţÄĚżŽĹŞ¤ËśáËľ¤Ë¤˘¤ë Bluetooth ĽÇĽĐĽ¤Ľš¤ÎČŻ¸Ť¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ł¤Îưşî¤Ď inquiry (Ě䤤šç¤ď¤ť) ¤Č¸Ć¤Đ¤ě¤Ć¤¤¤Ţ¤šĄŁ Inquiry ¤äž¤Î HCI ¤Ë´ŘϢ¤ˇ¤żĆ°şî¤Ď &man.hccontrol.8; ĽćĄźĽĆĽŁĽęĽĆĽŁ¤Ë¤č¤Ă¤Ć¤Ę¤ľ¤ě¤Ţ¤šĄŁ ˛źľ­¤ÎÎă¤ĎĄ˘¤É¤Î Bluetooth ĽÇĽĐĽ¤Ľš¤ŹÄĚżŽˇ÷Ćâ¤Ë¤˘¤ë¤Ť¤ňĂΤëĘýËĄ¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ ĽÇĽĐĽ¤Ľš¤ÎĽęĽšĽČ¤ŹÉ˝ź¨¤ľ¤ě¤ë¤Ë¤ĎżôÉ䍤Ť¤ę¤Ţ¤šĄŁ ĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤Ď discoverable (ČŻ¸Ť˛ÄÇ˝¤Ę) ĽâĄźĽÉ¤Ë¤˘¤ëžěšç¤Ë¤Î¤ß inquiry ¤ËĘÖĹú¤š¤ë¤Č¤¤¤Ś¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.user; hccontrol -n ubt0hci inquiry Inquiry result, num_responses=1 Inquiry result #0 BD_ADDR: 00:80:37:29:19:a4 Page Scan Rep. Mode: 0x1 Page Scan Period Mode: 00 Page Scan Mode: 00 Class: 52:02:04 Clock offset: 0x78ef Inquiry complete. Status: No error [00] BD_ADDR ¤Ď Bluetooth ĽÇĽĐĽ¤Ľš¤Ë¸ÇÍ­¤ÎĽ˘ĽÉĽěĽš¤Ç¤šĄŁ ¤ł¤ě¤ĎĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉ¤Î MAC Ľ˘ĽÉĽěĽš¤Ëť÷¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎĽ˘ĽÉĽěĽš¤ĎĽÇĽĐĽ¤Ľš¤Č¤ÎÄĚżŽ¤ňÂł¤ą¤ë¤Î¤ËÉŹÍפȤʤę¤Ţ¤šĄŁ BD_ADDR ¤ËżÍ´Ö¤ŹČ˝Ćɤˇ¤ä¤š¤¤ĚžÁ°¤ňłä¤ęĹö¤Ć¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ /etc/bluetooth/hosts ĽŐĽĄĽ¤Ľë¤Ë¤ĎĄ˘ ´űĂΤΠBluetooth ĽŰĽšĽČ¤Ë´Ř¤š¤ëžđĘ󤏴ޤޤě¤Ć¤¤¤Ţ¤šĄŁ źĄ¤ÎÎă¤ĎĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤Ëłä¤ęĹö¤Ć¤é¤ě¤Ć¤¤¤ëĄ˘ żÍ´Ö¤ŹČ˝Ćɤˇ¤ä¤š¤¤ĚžÁ°¤ňĆŔ¤ëĘýËĄ¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ &prompt.user; hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4 BD_ADDR: 00:80:37:29:19:a4 Name: Pav's T39 ĽęĽâĄźĽČ¤Î Bluetooth ĽÇĽĐĽ¤Ľšžĺ¤Ç inquiry ¤ňźÂšÔ¤š¤ë¤ČĄ˘ ¤˘¤Ę¤ż¤ÎĽłĽóĽÔĽĺĄźĽż¤Ď your.host.name (ubt0) ¤ČÇ§źą¤ľ¤ě¤Ţ¤šĄŁ ĽíĄźĽŤĽëĽÇĽĐĽ¤Ľš¤Ëłä¤ęĹö¤Ć¤é¤ě¤żĚžÁ°¤Ď¤¤¤Ä¤Ç¤âĘŃšš¤Ç¤­¤Ţ¤šĄŁ Bluetooth ĽˇĽšĽĆĽŕ¤Ď°ěÂаěŔÜÂł (Ćó¤Ä¤Î Bluetooth ĽćĽËĽĂĽČ¤Ŕ¤ą¤Ź´Řˇ¸¤ˇ¤Ţ¤š) ¤Ţ¤ż¤Ď°ěÂĐÂżŔÜÂł¤ňÄ󜥤ˇ¤Ţ¤šĄŁ °ěÂĐÂżŔÜÂł¤Ç¤ĎĄ˘ŔÜÂł¤Ď¤¤¤Ż¤Ä¤Ť¤Î Bluetooth ĽÇĽĐĽ¤Ľš´Ö¤ÇśŚÍ­¤ľ¤ě¤Ţ¤šĄŁ źĄ¤ÎÎă¤ĎĄ˘ĽíĄźĽŤĽëĽÇĽĐĽ¤Ľš¤ËÂФš¤ëĽ˘ĽŻĽĆĽŁĽÖ¤ĘĽŮĄźĽšĽĐĽóĽÉŔÜÂł¤ÎĽęĽšĽČ¤ňĆŔ¤ëĘýËĄ¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ &prompt.user; hccontrol -n ubt0hci read_connection_list Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State 00:80:37:29:19:a4 41 ACL 0 MAST NONE 0 0 OPEN connection handle ¤ĎĽŮĄźĽšĽĐĽóĽÉŔÜÂł¤Î˝ŞÎť¤ŹÉŹÍפȤľ¤ě¤ë¤Č¤­¤ËĘŘÍř¤Ç¤šĄŁ ¤â¤Ă¤Č¤âĄ˘ÄĚžď¤Ď¤ł¤ě¤ňźęư¤ÇšÔ¤ŚÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ Bluetooth ĽšĽżĽĂĽŻ¤ĎĽ˘ĽŻĽĆĽŁĽÖ¤Ç¤Ę¤¤ĽŮĄźĽšĽĐĽóĽÉŔÜÂł¤ňźŤĆ°ĹŞ¤Ë˝ŞÎť¤ˇ¤Ţ¤šĄŁ &prompt.root; hccontrol -n ubt0hci disconnect 41 Connection handle: 41 Reason: Connection terminated by local host [0x16] ÍřÍѲÄÇ˝¤Ę HCI ĽłĽŢĽóĽÉ¤Î´°Á´¤Ę°ěÍ÷¤ňĆŔ¤ë¤Ë¤ĎĄ˘ hccontrol help ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ HCI ĽłĽŢĽóĽÉ¤Î¤Ű¤Č¤ó¤É¤ĎĽšĄźĽŃĽćĄźĽś¸˘¸Â¤ňÉŹÍפȤˇ¤Ţ¤ť¤óĄŁ ĽíĽ¸ĽŤĽëĽęĽóĽŻĽłĽóĽČĽíĄźĽë¤Ş¤č¤ÓĽ˘ĽŔĽ×ĽĆĄźĽˇĽçĽóĽ×ĽíĽČĽłĽë (L2CAP) L2CAP ĽíĽ¸ĽŤĽëĽęĽóĽŻĽłĽóĽČĽíĄźĽë¤Ş¤č¤ÓĽ˘ĽŔĽ×ĽĆĄźĽˇĽçĽóĽ×ĽíĽČĽłĽë (L2CAP) ¤ĎĄ˘Ľ×ĽíĽČĽłĽëÂż˝Ĺ˛˝ĽąĄźĽŃĽÓĽęĽĆĽŁ¤Ş¤č¤ÓĘŹłäĄŚşĆĘÔŔŽĆ°şî¤ňČ÷¤¨¤żĄ˘ žĺ°ĚÁؼ׼íĽČĽłĽë¤Ř¤ÎĽłĽÍĽŻĽˇĽçĽóťŘ¸ţ¤Ş¤č¤ÓĽłĽÍĽŻĽˇĽçĽóĽěĽšĽÇĄźĽżĽľĄźĽÓĽš¤ňÄ󜥤ˇ¤Ţ¤šĄŁ L2CAP ¤Ďžĺ°ĚÁؼ׼íĽČĽłĽë¤Ş¤č¤ÓĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤Ź 64 KB ¤Ţ¤Ç¤ÎÄš¤ľ¤Î L2CAP ĽÇĄźĽżĽŃĽąĽĂĽČ¤ňÁ÷źőżŽ¤š¤ë¤ł¤Č¤ň˛ÄÇ˝¤Ë¤ˇ¤Ţ¤šĄŁ L2CAP ¤Ď ĽÁĽăĽÍĽë ¤ÎłľÇ°¤Ë´đ¤Ĺ¤¤¤Ć¤¤¤Ţ¤šĄŁ ĽÁĽăĽÍĽë¤ĎĽŮĄźĽšĽĐĽóĽÉŔÜÂł¤Îžĺ°Ě¤Ë°ĚĂÖ¤š¤ëĎŔÍýĹŞ¤ĘŔÜÂł¤Ç¤šĄŁ ¤˝¤ě¤ž¤ě¤ÎĽÁĽăĽÍĽë¤ĎÂżÂаě¤ÎĘýËĄ¤Ç°ě¤Ä¤ÎĽ×ĽíĽČĽłĽë¤Ëˇë¤Ó¤Ä¤ą¤é¤ě¤Ţ¤šĄŁ ĘŁżô¤ÎĽÁĽăĽÍĽë¤ňĆą¤¸Ľ×ĽíĽČĽłĽë¤Ëˇë¤Ó¤Ä¤ą¤ë¤ł¤Č¤Ď˛ÄÇ˝¤Ç¤š¤ŹĄ˘ °ě¤Ä¤ÎĽÁĽăĽÍĽë¤ňĘŁżô¤ÎĽ×ĽíĽČĽłĽë¤Ëˇë¤Ó¤Ä¤ą¤ë¤ł¤Č¤Ď¤Ç¤­¤Ţ¤ť¤óĄŁ ĽÁĽăĽÍĽëžĺ¤Çźő¤ąźč¤é¤ě¤ż¤˝¤ě¤ž¤ě¤Î L2CAP ĽŃĽąĽĂĽČ¤ĎĄ˘ ĹŹŔڤʤč¤ęžĺ°Ě¤ÎĽ×ĽíĽČĽłĽë¤ËĹϤľ¤ě¤Ţ¤šĄŁ ĘŁżô¤ÎĽÁĽăĽÍĽë¤ĎĆą¤¸ĽŮĄźĽšĽĐĽóĽÉŔÜÂł¤ňśŚÍ­¤Ç¤­¤Ţ¤šĄŁ °ě¤Ä¤Î Bluetooth ĽÇĽĐĽ¤Ľš¤ËÂФˇ¤ĆĄ˘l2cap ĽżĽ¤Ľ×¤Î Netgraph ĽÎĄźĽÉ¤Ź°ě¤ÄşîŔޤľ¤ě¤Ţ¤šĄŁ L2CAP ĽÎĄźĽÉ¤ĎÄĚžď Bluetooth HCI ĽÎĄźĽÉ (˛źÎŽ) ¤Č Bluetooth Ľ˝ĽąĽĂĽČĽÎĄźĽÉ (žĺÎŽ) ¤ËŔÜÂł¤ľ¤ě¤Ţ¤šĄŁ L2CAP ĽÎĄźĽÉ¤ÎĽÇĽŐĽŠĽëĽČĚž¤Ď devicel2cap ¤Ç¤šĄŁ žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.ng.l2cap.4; ĽŢĽËĽĺĽ˘Ľë¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĘŘÍř¤ĘĽłĽŢĽóĽÉ¤ËĄ˘Âž¤ÎĽÇĽĐĽ¤Ľš¤Ë ping ¤ňÁ÷¤ë¤ł¤Č¤Ź¤Ç¤­¤ë &man.l2ping.8; ¤Ź¤˘¤ę¤Ţ¤šĄŁBluetooth źÂÁő¤Ë¤č¤Ă¤Ć¤ĎĄ˘ Á÷¤é¤ě¤żĽÇĄźĽż¤š¤Ů¤Ć¤ĎĘÖ¤ľ¤Ę¤¤¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ˇ¤ż¤Ź¤Ă¤ĆźĄ¤ÎÎă¤Ç 0 ĽĐĽ¤ĽČ ¤ĎŔľžď¤Ç¤šĄŁ &prompt.root; l2ping -a 00:80:37:29:19:a4 0 bytes from 0:80:37:29:19:a4 seq_no=0 time=48.633 ms result=0 0 bytes from 0:80:37:29:19:a4 seq_no=1 time=37.551 ms result=0 0 bytes from 0:80:37:29:19:a4 seq_no=2 time=28.324 ms result=0 0 bytes from 0:80:37:29:19:a4 seq_no=3 time=46.150 ms result=0 &man.l2control.8; ĽćĄźĽĆĽŁĽęĽĆĽŁ¤Ď L2CAP ĽÎĄźĽÉžĺ¤Ç¤ľ¤Ţ¤ś¤Ţ¤ĘÁŕşî¤ňšÔ¤Ś¤Î¤ËťČ¤ď¤ě¤Ţ¤šĄŁ ¤ł¤ÎÎă¤ĎĄ˘ĽíĄźĽŤĽëĽÇĽĐĽ¤Ľš¤ËÂФš¤ëĎŔÍýĹŞ¤ĘŔÜÂł (ĽÁĽăĽÍĽë) ¤Ş¤č¤ÓĽŮĄźĽšĽĐĽóĽÉŔÜÂł¤Î°ěÍ÷¤ňĆŔ¤ëĘýËĄ¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ &prompt.user; l2control -a 00:02:72:00:d4:1a read_channel_list L2CAP channels: Remote BD_ADDR SCID/ DCID PSM IMTU/ OMTU State 00:07:e0:00:0b:ca 66/ 64 3 132/ 672 OPEN &prompt.user; l2control -a 00:02:72:00:d4:1a read_connection_list L2CAP connections: Remote BD_ADDR Handle Flags Pending State 00:07:e0:00:0b:ca 41 O 0 OPEN Ę̤οÇĂÇĽÄĄźĽë¤Ź &man.btsockstat.1; ¤Ç¤šĄŁ ¤ł¤ě¤Ď &man.netstat.1; ¤ČĆąÍͤκîśČ¤ňĄ˘Bluetooth ĽÍĽĂĽČĽďĄźĽŻ¤Ë´Ř¤š¤ëĽÇĄźĽżš˝Â¤¤Ë¤Ä¤¤¤Ć¤ÎšÔ¤¤¤Ţ¤šĄŁ ˛źľ­¤ÎÎă¤Ďžĺ¤Î &man.l2control.8; ¤ČĆą¤¸ĎŔÍýĹŞ¤ĘŔÜÂł¤ňꍤˇ¤Ţ¤šĄŁ &prompt.user; btsockstat Active L2CAP sockets PCB Recv-Q Send-Q Local address/PSM Foreign address CID State c2afe900 0 0 00:02:72:00:d4:1a/3 00:07:e0:00:0b:ca 66 OPEN Active RFCOMM sessions L2PCB PCB Flag MTU Out-Q DLCs State c2afe900 c2b53380 1 127 0 Yes OPEN Active RFCOMM sockets PCB Recv-Q Send-Q Local address Foreign address Chan DLCI State c2e8bc80 0 250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3 6 OPEN RFCOMM Ľ×ĽíĽČĽłĽë RFCOMM RFCOMM Ľ×ĽíĽČĽłĽë¤Ď L2CAP Ľ×ĽíĽČĽłĽë¤ň˛đ¤ˇ¤ĆĽˇĽęĽ˘ĽëĽÝĄźĽČ¤ÎĽ¨ĽßĽĺĽěĄźĽˇĽçĽó¤ňÄ󜥤ˇ¤Ţ¤šĄŁ ¤ł¤ÎĽ×ĽíĽČĽłĽë¤Ď ETSI (ĚőĂí: ˛¤˝ŁĹĹľ¤ÄĚżŽÉ¸˝ŕ˛˝ľĄš˝) ɸ˝ŕ TS 07.10 ¤Ë´đ¤Ĺ¤¤¤Ć¤¤¤Ţ¤šĄŁ RFCOMM Ľ×ĽíĽČĽłĽë¤ĎĄ˘Ăą˝ă¤ĘĹÁÁ÷Ľ×ĽíĽČĽłĽë¤Ë RS-232 (EIATIA-232-E) ĽˇĽęĽ˘ĽëĽÝĄźĽČ¤Î 9 ËܤΡëŔţ¤ňĽ¨ĽßĽĺĽěĄźĽČ¤š¤ëšŕĚܤň˛Ă¤¨¤ż¤â¤Î¤Ç¤šĄŁ RFCOMM Ľ×ĽíĽČĽłĽë¤ĎĄ˘Ćó¤Ä¤Î Bluetooth ĽÇĽĐĽ¤Ľš´Ö¤ÇĄ˘şÇÂç 60 ¤Ţ¤Ç¤ÎĆąťţŔÜÂł (RFCOMM ĽÁĽăĽÍĽë) ¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ RFCOMM ¤ÎĚÜĹŞ¤Ť¤éĄ˘´°Á´¤ĘÄĚżŽˇĐĎŠ¤ĎĄ˘°Ű¤Ę¤ëĽÇĽĐĽ¤Ľšžĺ (ÄĚżŽ¤ÎĂźĹŔ) ¤Çưşî¤ˇ¤Ć¤¤¤ëĆó¤Ä¤ÎĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ČĄ˘ ¤˝¤Î´Ö¤ÎÄĚżŽĽťĽ°ĽáĽóĽČ¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤šĄŁRFCOMM ¤ĎĄ˘¤˝¤ě¤ŹĆ°¤¤¤Ć¤¤¤ëĽÇĽĐĽ¤Ľš¤ÎĽˇĽęĽ˘ĽëĽÝĄźĽČ¤ňÍřÍѤš¤ëĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ňĽŤĽĐĄź¤š¤ë¤ż¤á¤Î¤â¤Î¤Ç¤šĄŁ ÄĚżŽĽťĽ°ĽáĽóĽČ¤Ď¤˘¤ëĽÇĽĐĽ¤Ľš¤Ť¤éž¤ÎĽÇĽĐĽ¤Ľš¤Ř¤Î Bluetooth ĽęĽóĽŻ¤Ç¤š (ÄžŔÜŔÜÂł)ĄŁ RFCOMM ¤ĎÄžŔÜŔÜÂł¤ˇ¤Ć¤¤¤ëžěšç¤ÎĽÇĽĐĽ¤Ľš´Ö¤ÎŔÜÂłĄ˘ ¤Ţ¤ż¤ĎĽÍĽĂĽČĽďĄźĽŻ¤Îžěšç¤ÎĽÇĽĐĽ¤Ľš¤ČĽâĽÇĽŕ¤Î´Ö¤ÎŔÜÂł¤Ë¤Ŕ¤ą´Řˇ¸¤Ź¤˘¤ę¤Ţ¤šĄŁ RFCOMM ¤ĎĄ˘°ěĘý¤Ź Bluetooth ĚľŔţľť˝Ń¤ÇÄĚżŽ¤ˇĄ˘ ¤â¤Ś°ěĘý¤ÇÍ­ŔţĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ňÄ󜥤š¤ëĽâĽ¸ĽĺĄźĽë¤Î¤č¤Ś¤ĘĄ˘ ž¤Îš˝ŔŽ¤Ë¤âÂĐąţ¤Ç¤­¤Ţ¤šĄŁ &os; ¤Ç¤Ď RFCOMM Ľ×ĽíĽČĽłĽë¤Ď Bluetooth Ľ˝ĽąĽĂĽČÁؤ˟ÂÁő¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽÇĽĐĽ¤Ľš¤ÎĽÚĽ˘ĽęĽóĽ° pairing ĽÇĽŐĽŠĽëĽČ¤Ç¤Ď Bluetooth ÄĚżŽ¤ĎǧžÚ¤ľ¤ě¤Ć¤Ş¤é¤şĄ˘ ¤š¤Ů¤Ć¤ÎĽÇĽĐĽ¤Ľš¤ŹÂž¤Î¤š¤Ů¤Ć¤ÎĽÇĽĐĽ¤Ľš¤ČÄĚżŽ¤Ç¤­¤Ţ¤šĄŁ Bluetooth ĽÇĽĐĽ¤Ľš (¤ż¤Č¤¨¤ĐˇČÂÓĹĹĎĂ) ¤ĎĆĂÄę¤ÎĽľĄźĽÓĽš (¤ż¤Č¤¨¤ĐĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ×ĽľĄźĽÓĽš) ¤ňÄ󜥤š¤ë¤ż¤á¤ËĄ˘ ǧžÚ¤ňÍ׾ᤚ¤ë¤ł¤Č¤âÁŞÂň¤Ç¤­¤Ţ¤šĄŁ Bluetooth ǧžÚ¤ĎÄĚžď PIN ĽłĄźĽÉ ¤ÇšÔ¤ď¤ě¤Ţ¤šĄŁ PIN ĽłĄźĽÉ¤ĎşÇÄš 16 ʸťú¤ÎĽ˘ĽšĽ­ĄźĘ¸ťúÎó¤Ç¤šĄŁ ĽćĄźĽś¤ĎΞĽÇĽĐĽ¤Ľš¤ÇĆą¤¸ PIN ĽłĄźĽÉ¤ňĆţÎϤš¤ë¤ł¤Č¤ňÍ׾᤾¤ě¤Ţ¤šĄŁ °ěĹŮ PIN ĽłĄźĽÉ¤ňĆţÎϤš¤ë¤ČĄ˘ ΞĽÇĽĐĽ¤Ľš¤Ď ĽęĽóĽŻĽ­Ąź ¤ňşîŔޤˇ¤Ţ¤šĄŁ ¤˝¤Î¸ĺĄ˘ĽęĽóĽŻĽ­Ąź¤Ď¤˝¤ÎĽÇĽĐĽ¤ĽšźŤżČ¤Ţ¤ż¤ĎĄ˘ ÉÔ´řČŻŔ­ľ­˛ąĽÇĽĐĽ¤ĽšĆâ¤ËłĘÇź¤Ç¤­¤Ţ¤šĄŁ źĄ¤ÎľĄ˛ń¤Ë¤ĎĄ˘ÎžĽÇĽĐĽ¤Ľš¤ĎÁ°¤ËşîŔޤľ¤ě¤żĽęĽóĽŻĽ­Ąź¤ňťČÍѤš¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤Î¤č¤Ś¤ĘźęÂł¤­¤ňĽÚĽ˘ĽęĽóĽ° (pairing) ¤Č¸Ć¤Ó¤Ţ¤šĄŁ¤¤¤ş¤ě¤Ť¤ÎĽÇĽĐĽ¤Ľšžĺ¤ÇĽęĽóĽŻĽ­Ąź¤Źźş¤ď¤ě¤ż¤Č¤­¤Ë¤ĎĄ˘ ĽÚĽ˘ĽęĽóĽ°¤ň¤ä¤ęÄž¤ľ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &man.hcsecd.8; ĽÇĄźĽâĽó¤Ź Bluetooth ǧžÚÍ׾á¤Î¤š¤Ů¤Ć¤ň°ˇ¤ŚŔŐǤ¤ňÉé¤Ă¤Ć¤¤¤Ţ¤šĄŁ ĽÇĽŐĽŠĽëĽČ¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤Ď /etc/bluetooth/hcsecd.conf ¤Ç¤šĄŁ PIN ĽłĄźĽÉ¤Ź 1234 ¤ËŔßÄꤾ¤ě¤żˇČÂÓĹĹĎä˴ؤš¤ëÎă¤Ď°Ę˛ź¤ÎÄ̤ę¤Ç¤šĄŁ device { bdaddr 00:80:37:29:19:a4; name "Pav's T39"; key nokey; pin "1234"; } PIN ĽłĄźĽÉ¤Ë¤Ď (Äš¤ľ¤ň˝ü¤¤¤Ć) ŔŠ¸Â¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ¤¤¤Ż¤Ä¤Ť¤ÎĽÇĽĐĽ¤Ľš (¤ż¤Č¤¨¤Đ Bluetooth ĽŘĽĂĽÉĽŐĽŠĽó) ¤Ë¤Ď¸ÇÄęĹŞ¤Ę PIN ĽłĄźĽÉ¤ŹÁȤߚţ¤Ţ¤ě¤Ć¤¤¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ĽŞĽ×ĽˇĽçĽó¤Ď &man.hcsecd.8; ĽÇĄźĽâĽó¤ŹĽŐĽŠĽ˘Ľ°ĽéĽŚĽóĽÉ¤Çưşî¤š¤ë¤č¤Ś¤ËśŻŔФš¤ë¤ż¤áĄ˘ ˛ż¤ŹľŻ¤­¤Ć¤¤¤ë¤Î¤ŤłÎǧ¤ˇ¤ä¤š¤Ż¤Ę¤ę¤Ţ¤šĄŁ ĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤ŹĽÚĽ˘ĽęĽóĽ°¤ňźő¤ąźč¤ë¤č¤Ś¤ËŔßÄꤡ¤ĆĄ˘ ĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤Ř¤Î Bluetooth ŔÜÂł¤ňłŤťĎ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤ĎĽÚĽ˘ĽęĽóĽ°¤Źźő¤ąĆţ¤ě¤é¤żĄ˘¤ČąţĹú¤ˇ¤Ć PIN ĽłĄźĽÉ¤ňÍ׾ᤚ¤ë¤Ç¤ˇ¤ç¤ŚĄŁ hcsecd.conf Ćâ¤Ë¤˘¤ë¤Î¤ČĆą¤¸ PIN ĽłĄźĽÉ¤ňĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ě¤Ç¤˘¤Ę¤ż¤Î PC ¤ČĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤ŹĽÚĽ˘¤Č¤Ę¤ę¤Ţ¤ˇ¤żĄŁ ¤Ţ¤żĄ˘ĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤Ť¤éĽÚĽ˘ĽęĽóĽ°¤ňłŤťĎ¤š¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ °Ę˛ź¤Ď hcsecd ¤Î˝ĐÎĎÎă¤Ç¤šĄŁ hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4 ĽľĄźĽÓĽšĽÇĽŁĽšĽŤĽĐĽęĽ×ĽíĽČĽłĽë (SDP) SDP ĽľĄźĽÓĽšĽÇĽŁĽšĽŤĽĐĽęĽ×ĽíĽČĽłĽë (SDP) ¤ĎĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ŹĄ˘ ĽľĄźĽĐĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ŹÄ󜥤š¤ëĽľĄźĽÓĽš¤Î¸şß¤Č¤˝¤Î°Ŕ­¤ňČŻ¸Ť¤š¤ëźęĂʤňÄ󜥤ˇ¤Ţ¤šĄŁ ĽľĄźĽÓĽš¤Î°Ŕ­¤Ë¤ĎÄ󟨤ľ¤ě¤Ć¤¤¤ëĽľĄźĽÓĽš¤ÎĽżĽ¤Ľ×¤Ţ¤ż¤ĎĽŻĽéĽšĄ˘ ¤Ş¤č¤ÓĄ˘ĽľĄźĽÓĽš¤ňÍřÍѤš¤ë¤Î¤ËÉŹÍפʝĹÁȤߤޤż¤ĎĽ×ĽíĽČĽłĽë¤ÎžđĘ󤏴ޤޤě¤Ţ¤šĄŁ SDP ¤Ë¤Ď SDP ĽľĄźĽĐ¤Č SDP ĽŻĽéĽ¤Ľ˘ĽóĽČ´Ö¤ÎÄĚżŽ¤Ź´Ţ¤Ţ¤ě¤Ţ¤šĄŁ SDP ĽľĄźĽĐ¤ĎĄ˘ĽľĄźĽĐ¤Ë´ŘϢ¤Ĺ¤ą¤é¤ě¤żĽľĄźĽÓĽš¤ÎĆĂŔ­¤Ë¤Ä¤¤¤Ćľ­˝Ň¤ˇ¤Ć¤¤¤ëĽľĄźĽÓĽšĽěĽłĄźĽÉ¤Î°ěÍ÷¤ň°Ýťý¤ˇ¤Ć¤¤¤Ţ¤šĄŁ łĆĽľĄźĽÓĽšĽěĽłĄźĽÉ¤Ë¤Ď¤˝¤ě¤ž¤ě 1 ¤Ä¤ÎĽľĄźĽÓĽš¤ÎžđĘ󤏽ń¤Ť¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ď SDP ĽęĽŻĽ¨ĽšĽČ¤ň˝Đ¤š¤ł¤Č¤Ë¤č¤Ă¤ĆĄ˘ SDP ĽľĄźĽĐ¤Ź°Ýťý¤ˇ¤Ć¤¤¤ëĽľĄźĽÓĽšĽěĽłĄźĽÉ¤Ť¤éžđĘó¤ň¸Ąş÷¤Ç¤­¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ţ¤ż¤ĎĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ë´ŘϢ¤Ĺ¤ą¤é¤ě¤żĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ŹĽľĄźĽÓĽš¤ňÍřÍѤš¤ë¤ł¤Č¤Ë¤ˇ¤ż¤éĄ˘ ĽľĄźĽÓĽš¤ňÍřÍѤš¤ë¤ż¤á¤Ë¤ĎĄ˘ ĽľĄźĽÓĽšĽ×ĽíĽĐĽ¤ĽŔ¤Ř¤ÎŔÜÂł¤ňĘĚĹÓłŤ¤Ť¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ SDP ¤ĎĽľĄźĽÓĽš¤Č¤˝¤ě¤é¤Î°Ŕ­¤ňČŻ¸Ť¤š¤ë¤ż¤á¤ÎťĹÁȤߤňÄ󜥤ˇ¤Ţ¤š¤ŹĄ˘ ¤˝¤ÎĽľĄźĽÓĽš¤ňÍřÍѤš¤ë¤ż¤á¤ÎťĹÁȤߤĎÄ󜥤ˇ¤Ţ¤ť¤óĄŁ ÄĚžď SDP ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ď´őËž¤š¤ëĽľĄźĽÓĽš¤ÎĆĂŔ­¤Ë´đ¤Ĺ¤¤¤ĆĽľĄźĽÓĽš¤ň¸Ąş÷¤ˇ¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇ¤Ę¤Ź¤éĄ˘ĽľĄźĽÓĽš¤Ë´Ř¤š¤ëťöÁ°¤ÎžđĘó¤Ę¤ˇ¤ËĄ˘ ¤É¤ÎĽżĽ¤Ľ×¤ÎĽľĄźĽÓĽš¤Ź SDP ĽľĄźĽĐ¤ÎĽľĄźĽÓĽšĽěĽłĄźĽÉ¤Ëľ­˝Ň¤ľ¤ě¤Ć¤¤¤ë¤ŤĂΤ뤳¤Č¤ŹËž¤Ţ¤ˇ¤¤¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ÎĄ˘Ä󜥤ľ¤ě¤Ć¤¤¤ëǤ°Ő¤ÎĽľĄźĽÓĽš¤ňąÜÍ÷¤š¤ëźę˝ç¤ňĄ˘ ĽÖĽéĽŚĽ¸ĽóĽ° (browsing) ¤Č¸Ć¤Ó¤Ţ¤šĄŁ ¸˝şß¤Î¤Č¤ł¤í Bluetooth SDP ĽľĄźĽĐ¤Ş¤č¤ÓĽŻĽéĽ¤Ľ˘ĽóĽČ¤ĎĄ˘ ¤ł¤ł ¤Ť¤éĽŔĽŚĽóĽíĄźĽÉ¤Ç¤­¤ëÂčť°źÔĽŃĽĂĽąĄźĽ¸ sdp-1.5 ¤ÇźÂÁő¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ sdptool ¤ĎĽłĽŢĽóĽÉĽéĽ¤Ľó¤Î SDP ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ç¤šĄŁ źĄ¤ÎÎă¤Ď SDP ĽÖĽéĽŚĽş¤ÎĚ䤤šç¤ď¤ťĘýËĄ¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ &prompt.root; sdptool browse 00:80:37:29:19:a4 Browsing 00:80:37:29:19:A4 ... Service Name: Dial-up Networking Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 1 Service Name: Fax Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 2 Service Name: Voice gateway Service Class ID List: "Headset Audio Gateway" (0x1112) "Generic Audio" (0x1203) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 3 ... ĹůĄšĄŁ ¤˝¤ě¤ž¤ě¤ÎĽľĄźĽÓĽš¤Ď°Ŕ­¤Î°ěÍ÷ (¤ż¤Č¤¨¤Đ RFCOMM ĽÁĽăĽÍĽë) ¤ňťý¤Ă¤Ć¤¤¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁĽľĄźĽÓĽš¤Ë¤č¤Ă¤Ć¤ĎĄ˘ °Ŕ­¤ÎĽęĽšĽČ¤Î°ěÉô¤Ë¤Ä¤¤¤ĆĽáĽâ¤ň¤Č¤Ă¤Ć¤Ş¤ŻÉŹÍפʤ˘¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ Bluetooth źÂÁő¤Î¤¤¤Ż¤Ä¤Ť¤ĎĄ˘ĽľĄźĽÓĽšĽÖĽéĽŚĽ¸ĽóĽ°¤ËÂĐąţ¤ˇ¤Ć¤Ş¤é¤şĄ˘ śő¤Î°ěÍ÷¤ňĘÖ¤ˇ¤Ć¤Ż¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ¤ł¤ÎžěšçĄ˘ ĆĂÄę¤ÎĽľĄźĽÓĽš¤ň¸Ąş÷¤ň¤š¤ë¤ł¤Č¤Ď˛ÄÇ˝¤Ç¤šĄŁ˛źľ­¤ÎÎă¤Ď OBEX ĽŞĽÖĽ¸Ľ§ĽŻĽČĽ×ĽĂĽˇĽĺ (OPUSH) ĽľĄźĽÓĽš¤ň¸Ąş÷¤š¤ëĘýËĄ¤Ç¤šĄŁ &prompt.root; sdptool search --bdaddr 00:07:e0:00:0b:ca OPUSH &os; žĺ¤Ë¤Ş¤ą¤ë Bluetooth ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ř¤ÎĽľĄźĽÓĽšÄóśĄ¤Ď sdpd ĽľĄźĽĐ¤ŹšÔ¤¤¤Ţ¤šĄŁ &prompt.root; sdpd sdptool ¤ĎĄ˘ĽíĄźĽŤĽë SDP ĽľĄźĽĐ¤ËĽľĄźĽÓĽš¤ňĹĐĎż¤š¤ë¤Î¤Ë¤âÍѤ¤¤é¤ě¤Ţ¤šĄŁ ˛źľ­¤ÎÎă¤Ď PPP (LAN) ĽľĄźĽÓĽš¤ňČ÷¤¨¤żĽÍĽĂĽČĽďĄźĽŻĽ˘ĽŻĽťĽš¤ňĹĐĎż¤š¤ëĘýËĄ¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ °ěÉô¤ÎĽľĄźĽÓĽš¤Ç¤Ď°Ŕ­ (¤ż¤Č¤¨¤Đ RFCOMM ĽÁĽăĽÍĽë) ¤ňÍ׾ᤚ¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; sdptool add --channel=7 LAN ĽíĄźĽŤĽë SDP ĽľĄźĽĐ¤ËĹĐĎż¤ľ¤ě¤żĽľĄźĽÓĽš¤Î°ěÍ÷¤Ď SDP ĽÖĽéĽŚĽś¤ÎĚ䤤šç¤ď¤ť¤ň ĆĂĘĚ¤Ę BD_ADDR ¤ËÁ÷¤ë¤ł¤Č¤ÇĆŔ¤é¤ě¤Ţ¤šĄŁ &prompt.root; sdptool browse ff:ff:ff:00:00:00 ĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ×ĽÍĽĂĽČĽďĄźĽŻ (DUN) ¤Ş¤č¤Ó PPP (LAN) ¤ňÍѤ¤¤żĽÍĽĂĽČĽďĄźĽŻĽ˘ĽŻĽťĽšĽ×ĽíĽŐĽĄĽ¤Ľë ĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ×ĽÍĽĂĽČĽďĄźĽŻ (DUN) Ľ×ĽíĽŐĽĄĽ¤Ľë¤Ď¤Ű¤Č¤ó¤É¤ÎžěšçĄ˘ ĽâĽÇĽŕ¤äˇČÂÓĹĹĎäȤȤâ¤ËťČÍѤľ¤ě¤Ţ¤šĄŁ ¤ł¤ÎĽ×ĽíĽŐĽĄĽ¤Ľë¤ŹÂОݤȤš¤ëžěĚ̤ϰʲź¤Î¤â¤Î¤Ç¤šĄŁ ĽłĽóĽÔĽĺĄźĽż¤Ť¤éˇČÂÓĹĹĎäޤż¤ĎĽâĽÇĽŕ¤ňĄ˘ ĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ×Ľ¤ĽóĽżĄźĽÍĽĂĽČĽ˘ĽŻĽťĽšĽľĄźĽĐ¤Ř¤ÎŔÜÂłĄ˘ ¤Ţ¤ż¤Ďž¤ÎĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ×ĽľĄźĽÓĽš¤ňÍřÍѤš¤ë¤ż¤á¤ÎĚľŔţĽâĽÇĽŕ¤Č¤ˇ¤ĆťČ¤Ś¤ł¤Č ĽÇĄźĽż¸Ć¤Ó˝Đ¤ˇ¤ňźő¤ą¤ë¤ż¤á¤ÎĄ˘ ĽłĽóĽÔĽĺĄźĽż¤Ë¤č¤ëˇČÂÓĹĹĎäޤż¤ĎĽâĽÇĽŕ¤ÎťČÍŃ PPP (LAN) ¤Ë¤č¤ëĽÍĽĂĽČĽďĄźĽŻĽ˘ĽŻĽťĽšĽ×ĽíĽŐĽĄĽ¤Ľë¤ĎĄ˘ źĄ¤Îžőśˇ¤ÇÍřÍѤǤ­¤Ţ¤šĄŁ Ăą°ě¤Î Bluetooth ĽÇĽĐĽ¤Ľš¤Ř¤Î LAN Ľ˘ĽŻĽťĽš ĽŢĽëĽÁ Bluetooth ĽÇĽĐĽ¤Ľš¤Ř¤Î LAN Ľ˘ĽŻĽťĽš (ĽˇĽęĽ˘ĽëĽąĄźĽÖĽëĽ¨ĽßĽĺĽěĄźĽˇĽçĽóžĺ¤Î PPP ĽÍĽĂĽČĽďĄźĽŻŔÜÂł¤ňťČÍѤˇ¤ż) PC ¤Ť¤é PC ¤Ř¤ÎŔÜÂł &os; ¤Ç¤Ď¤É¤Á¤é¤ÎĽ×ĽíĽŐĽĄĽ¤Ľë¤â &man.ppp.8; ¤Č &man.rfcomm.pppd.8; (RFCOMM Bluetooth ŔÜÂł¤ň PPP ¤ŹŔЏć˛ÄÇ˝¤Ę¤č¤Ś¤ËĘŃ´š¤š¤ëĽéĽĂĽŃ) ¤ÇźÂÁő¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤¤¤ş¤ě¤Ť¤ÎĽ×ĽíĽŐĽĄĽ¤Ľë¤ŹťČÍѲÄÇ˝¤Č¤Ę¤ëÁ°¤ËĄ˘ /etc/ppp/ppp.conf Ćâ¤Ëżˇ¤ˇ¤¤ PPP ĽéĽŮĽë¤ŹşîŔޤľ¤ě¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ Îă¤Ë¤Ä¤¤¤Ć¤ĎĄ˘ &man.rfcomm.pppd.8; ¤ÎĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ źĄ¤ÎÎă¤Ç¤ĎĄ˘DUN RFCOMM ĽÁĽăĽÍĽëžĺ¤Ç BD_ADDR ¤Ź 00:80:37:29:19:a4 ¤ÎĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤Ř¤Î RFCOMM ŔÜÂł¤ňłŤ¤Ż¤Î¤Ë &man.rfcomm.pppd.8; ¤ŹťČ¤ď¤ě¤Ţ¤šĄŁźÂşÝ¤Î RFCOMM ĽÁĽăĽÍĽëČÖšć¤Ď SDP ¤ň˛đ¤ˇ¤ĆĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤Ť¤éĆŔ¤Ţ¤šĄŁ źęư¤Ç RFCOMM ĽÁĽăĽÍĽë¤ňťŘÄꤚ¤ë¤ł¤Č¤â¤Ç¤­Ą˘¤˝¤Îžěšç &man.rfcomm.pppd.8; ¤Ď SDP Ě䤤šç¤ď¤ť¤ňźÂšÔ¤ˇ¤Ţ¤ť¤óĄŁ ĽęĽâĄźĽČĽÇĽĐĽ¤Ľšžĺ¤Î RFCOMM ĽÁĽăĽÍĽë¤ň¸Ť¤Ä¤ą¤ë¤Ë¤ĎĄ˘ sdptool ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup PPP (LAN) ĽľĄźĽÓĽš¤ÇĽÍĽĂĽČĽďĄźĽŻĽ˘ĽŻĽťĽš¤ňÄ󜥤š¤ë¤ż¤á¤Ë¤ĎĄ˘ sdpd ĽľĄźĽĐ¤ŹĆ°¤¤¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ě¤ĎĽíĄźĽŤĽë SDP ĽľĄźĽĐ¤Ë LAN ĽľĄźĽÓĽš¤ňĹĐĎż¤š¤ë¤Î¤Ë¤âÉŹÍ×¤Ç¤šĄŁ LAN ĽľĄźĽÓĽš¤Ď RFCOMM ĽÁĽăĽÍĽë°Ŕ­¤ňÉŹÍפȤš¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /etc/ppp/ppp.conf ĽŐĽĄĽ¤ĽëĆâ¤Ë LAN ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Îżˇ¤ˇ¤¤Ľ¨ĽóĽČĽę¤ňşîŔޤˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ Îă¤Ë¤Ä¤¤¤Ć¤Ď &man.rfcomm.pppd.8; ¤ÎĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ şÇ¸ĺ¤ËĄ˘RFCOMM PPP ĽľĄźĽĐ¤ŹźÂšÔ¤ľ¤ěĄ˘ ĽíĄźĽŤĽë SDP ĽľĄźĽĐ¤ËĹĐĎż¤ľ¤ě¤Ć¤¤¤ë¤Î¤ČĆą¤¸ RFCOMM ĽÁĽăĽÍĽë¤ÇÂÔ¤Áźő¤ą¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ źĄ¤ÎÎă¤Ď RFCOMM PPP ĽľĄźĽĐ¤ňľŻĆ°¤š¤ëĘýËĄ¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ &prompt.root; rfcomm_pppd -s -C 7 -l rfcomm-server OBEX Ľ×ĽĂĽˇĽĺ (OPUSH) Ľ×ĽíĽŐĽĄĽ¤Ľë OBEX OBEX ¤ĎĽâĽĐĽ¤ĽëĽÇĽĐĽ¤Ľš´Ö¤Çš­¤ŻťČ¤ď¤ě¤Ć¤¤¤ëĂą˝ă¤ĘĽŐĽĄĽ¤ĽëĹžÁ÷Ľ×ĽíĽČĽłĽë¤Ç¤šĄŁ ¤ł¤ě¤Ďźç¤ËŔÖł°ŔţÄĚżŽ¤ÇÍřÍѤľ¤ě¤Ć¤Ş¤ęĄ˘ĽÎĄźĽČĽŃĽ˝ĽłĽó¤ä PDA ´Ö¤ÎČĆÍŃĹŞ¤ĘĽŐĽĄĽ¤ĽëĹžÁ÷Ą˘¤Ş¤č¤Ó PIM Ľ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ňĹëşÜ¤ˇ¤żˇČÂÓĹĹĎ佤Ξ¤ÎĽÇĽĐĽ¤Ľš´Ö¤ÇĚžťÉ¤äĽŤĽěĽóĽŔĄźĽ¨ĽóĽČĽę¤ňĹžÁ÷¤š¤ë¤Î¤ËÍѤ¤¤é¤ě¤Ţ¤šĄŁ OBEX ĽľĄźĽĐ¤Ş¤č¤ÓĽŻĽéĽ¤Ľ˘ĽóĽČ¤ĎĄ˘ ¤ł¤ł ¤Ť¤éĽŔĽŚĽóĽíĄźĽÉ¤Ç¤­¤ë obexapp-1.0 ¤Č¤¤¤ŚÂčť°źÔ¤ÎĽŃĽĂĽąĄźĽ¸¤Č¤ˇ¤ĆźÂÁő¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎĽŃĽĂĽąĄźĽ¸¤Ď openobex ĽéĽ¤ĽÖĽéĽę (žĺľ­¤Î obexapp ¤Ë´Ţ¤Ţ¤ě¤Ţ¤š) ¤Ş¤č¤Ó devel/glib12 port ¤ňÉŹÍפȤˇ¤Ţ¤šĄŁ ¤Ę¤ŞĄ˘obexapp ¤ĎĽëĄźĽČ¸˘¸Â¤ňÉŹÍפȤˇ¤Ţ¤ť¤óĄŁ OBEX ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ď OBEX ĽľĄźĽĐ¤Č¤Î´Ö¤ÇĽŞĽÖĽ¸Ľ§ĽŻĽČ¤ňĹϤˇ¤ż¤ę (Ľ×ĽĂĽˇĽĺ) ¤Ş¤č¤Óźő¤ąźč¤Ă¤ż¤ę (Ľ×Ľë) ¤š¤ë¤Î¤ËťČÍѤľ¤ě¤Ţ¤šĄŁ ĽŞĽÖĽ¸Ľ§ĽŻĽČ¤ĎĄ˘¤ż¤Č¤¨¤ĐĚžťÉ¤äÍ˝Äę¤Ę¤É¤Ë¤Ę¤ę¤Ţ¤šĄŁ OBEX ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ď RFCOMM ĽÁĽăĽÍĽëČÖšć¤ň SDP ¤Ë¤č¤Ă¤ĆĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤Ť¤éĆŔ¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤ł¤ě¤Ď RFCOMM ĽÁĽăĽÍĽëČÖšć¤ÎÂĺ¤ď¤ę¤ËĽľĄźĽÓĽšĚž¤ňťŘÄꤚ¤ë¤ł¤Č¤Ë¤č¤Ă¤ĆšÔ¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ÂĐąţ¤ˇ¤Ć¤¤¤ëĽľĄźĽÓĽšĚž¤Ď IrMC, FTRN ¤Ş¤č¤Ó OPUSH ¤Ç¤šĄŁ RFCOMM ĽÁĽăĽÍĽë¤ňČÖšć¤ÇťŘÄꤚ¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ ˛źľ­¤ĎĄ˘ĽÇĽĐĽ¤ĽšžđĘóĽŞĽÖĽ¸Ľ§ĽŻĽČ¤ňˇČÂÓĹĹĎ䍤éźő¤ąźč¤ęĄ˘ żˇ¤ˇ¤¤ĽŞĽÖĽ¸Ľ§ĽŻĽČ (ĚžťÉ) ¤ŹˇČÂÓĹĹĎäËĹϤľ¤ě¤ëžěšç¤Î OBEX ĽťĽĂĽˇĽçĽó¤ÎÎă¤Ç¤šĄŁ &prompt.user; obexapp -a 00:80:37:29:19:a4 -C IrMC obex> get get: remote file> telecom/devinfo.txt get: local file> devinfo-t39.txt Success, response: OK, Success (0x20) obex> put put: local file> new.vcf put: remote file> new.vcf Success, response: OK, Success (0x20) obex> di Success, response: OK, Success (0x20) OBEX Ľ×ĽĂĽˇĽĺĽľĄźĽÓĽš¤ňÄ󜥤š¤ë¤ż¤á¤Ë¤ĎĄ˘ sdpd ĽľĄźĽĐ¤ŹźÂšÔ¤ľ¤ě¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤Ţ¤ż OPUSH ĽľĄźĽÓĽš¤ňĽíĄźĽŤĽë SDP ĽľĄźĽĐ¤ËĹĐĎż¤š¤ë¤ł¤Č¤âÉŹÍ×¤Ç¤šĄŁ ¤Ę¤ŞĄ˘OPUSH ĽľĄźĽÓĽš¤Ë¤Ď RFCOMM ĽÁĽăĽÍĽë°Ŕ­¤ŹÉŹÍ×¤Ç¤šĄŁ ĹϤľ¤ě¤ëĽŞĽÖĽ¸Ľ§ĽŻĽČ¤ň¤š¤Ů¤ĆłĘÇź¤š¤ëĽëĄźĽČĽŐĽŠĽëĽŔ¤ňşîŔޤˇ¤Ę¤ą¤ě¤Đ¤¤¤ą¤Ţ¤ť¤óĄŁ ĽëĄźĽČĽŐĽŠĽëĽŔ¤ÎĽÇĽŐĽŠĽëĽČĽŃĽš¤Ď /var/spool/obex ¤Ç¤šĄŁ şÇ¸ĺ¤Ë OBEX ĽľĄźĽĐ¤ŹźÂšÔ¤ľ¤ěĄ˘ ĽíĄźĽŤĽë SDP ĽľĄźĽĐ¤ËĹĐĎż¤ľ¤ě¤Ć¤¤¤ë¤Î¤ČĆą¤¸ RFCOMM ĽÁĽăĽÍĽë¤ÇÂÔ¤Áźő¤ą¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ˛źľ­¤ÎÎă¤Ď OBEX ĽľĄźĽĐ¤ÎľŻĆ°ĘýËĄ¤ňꍤˇ¤Ţ¤šĄŁ &prompt.root; obexapp -s -C 10 ĽˇĽęĽ˘ĽëĽÝĄźĽČ (SP) Ľ×ĽíĽŐĽĄĽ¤Ľë ĽˇĽęĽ˘ĽëĽÝĄźĽČ (SP) Ľ×ĽíĽŐĽĄĽ¤Ľë¤Ď Bluetooth ĽÇĽĐĽ¤Ľš¤Ź RS232 (¤Ţ¤ż¤ĎĆąÍͤÎ) ĽˇĽęĽ˘ĽëĽąĄźĽÖĽëĽ¨ĽßĽĺĽěĄźĽˇĽçĽó¤ňšÔ¤¨¤ë¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ ¤ł¤ÎĽ×ĽíĽŐĽĄĽ¤Ľë¤ŹÂОݤȤš¤ëžěĚ̤ϥ˘ ĽěĽŹĽˇĄźĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ŹĄ˘˛žÁŰĽˇĽęĽ˘ĽëĽÝĄźĽČĂęžÝ¤ň˛đ¤ˇ¤Ć Bluetooth ¤ňĽąĄźĽÖĽë¤ÎÂĺÂŘÉʤȤˇ¤ĆťČ¤Ś¤Č¤ł¤í¤Ç¤šĄŁ &man.rfcomm.sppd.1; ĽćĄźĽĆĽŁĽęĽĆĽŁ¤ĎĽˇĽęĽ˘ĽëĽÝĄźĽČĽ×ĽíĽŐĽĄĽ¤Ľë¤ňźÂÁő¤ˇ¤Ţ¤šĄŁ Pseudo tty ¤Ź˛žÁŰĽˇĽęĽ˘ĽëĽÝĄźĽČĂęžÝłľÇ°¤Č¤ˇ¤ĆÍѤ¤¤é¤ě¤Ţ¤šĄŁ ˛źľ­¤ÎÎă¤ĎĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤ÎĽˇĽęĽ˘ĽëĽÝĄźĽČĽľĄźĽÓĽš¤ŘŔÜÂł¤š¤ëĘýËĄ¤ňꍤˇ¤Ţ¤šĄŁ ¤Ę¤ŞĄ˘RFCOMM ĽÁĽăĽÍĽë¤ňťŘÄꤚ¤ëÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ— &man.rfcomm.sppd.1; ¤Ď SDP ¤ň˛đ¤ˇ¤ĆĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤Ť¤é¤˝¤ÎžđĘó¤ňĆŔ¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤ł¤ě¤ňžĺ˝ń¤­¤ˇ¤ż¤¤žěšç¤Ë¤ĎĽłĽŢĽóĽÉĽéĽ¤Ľó¤Ç RFCOMM ĽÁĽăĽÍĽë¤ňťŘÄꤡ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; rfcomm_sppd -a 00:07:E0:00:0B:CA -t /dev/ttyp6 rfcomm_sppd[94692]: Starting on /dev/ttyp6... ŔÜÂł¤ľ¤ě¤ż pseudo tty ¤ĎĽˇĽęĽ˘ĽëĽÝĄźĽČ¤Č¤ˇ¤ĆÍřÍѤš¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ &prompt.root; cu -l ttyp6 ĽČĽéĽÖĽëĽˇĽĺĄźĽĆĽŁĽóĽ° ĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤ŹŔÜÂł¤Ç¤­¤Ţ¤ť¤ó ¸Ĺ¤¤ Bluetooth ĽÇĽĐĽ¤Ľš¤Î¤Ę¤Ť¤Ë¤ĎĽíĄźĽëĽšĽ¤ĽĂĽÁĽóĽ° (role switching) ¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ę¤¤¤â¤Î¤Ź¤˘¤ę¤Ţ¤šĄŁ ĽÇĽŐĽŠĽëĽČ¤Ç¤Ď &os; ¤Źżˇ¤ˇ¤¤ŔÜÂł¤ňźő¤ąÉŐ¤ą¤ë¤Č¤­¤ËĄ˘ ĽíĄźĽëĽšĽ¤ĽĂĽÁ¤ňźÂšÔ¤ˇ¤ĆĽŢĽšĽż¤Ë¤Ę¤í¤Ś¤Č¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ę¤¤ĽÇĽĐĽ¤Ľš¤ĎŔÜÂł¤Ç¤­¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ¤Ę¤ŞĄ˘ĽíĄźĽëĽšĽ¤ĽĂĽÁĽóĽ°¤Ďżˇ¤ˇ¤¤ŔÜÂł¤ŹłÎΊ¤ľ¤ě¤ë¤Č¤­¤ËźÂšÔ¤ľ¤ě¤ë¤Î¤ÇĄ˘ ĽíĄźĽëĽšĽ¤ĽĂĽÁĽóĽ°¤ËÂĐąţ¤ˇ¤Ć¤¤¤ë¤Ť¤É¤Ś¤ŤĽęĽâĄźĽČĽÇĽĐĽ¤Ľš¤ËĚ䤤šç¤ď¤ť¤ë¤ł¤Č¤Ď¤Ç¤­¤Ţ¤ť¤óĄŁ ĽíĄźĽŤĽëÂŚ¤ÇĽíĄźĽëĽšĽ¤ĽĂĽÁĽóĽ°¤ňĚľ¸ú¤Ë¤š¤ë HCI ĽŞĽ×ĽˇĽçĽó¤Ź¤˘¤ę¤Ţ¤šĄŁ &prompt.root; hccontrol -n ubt0hci write_node_role_switch 0 ˛ż¤Ť¤Ź¤Ś¤Ţ¤Ż¤¤¤Ă¤Ć¤¤¤Ę¤¤¤ß¤ż¤¤¤Ç¤šĄŁ ˛ż¤ŹźÂşÝ¤ËľŻ¤ł¤Ă¤Ć¤¤¤ë¤ŤłÎǧ¤Ç¤­¤Ţ¤š¤Ť? ¤Ç¤­¤Ţ¤šĄŁ ¤ł¤ł ¤Ť¤éĽŔĽŚĽóĽíĄźĽÉ¤Ç¤­¤ëÂčť°źÔĽŃĽĂĽąĄźĽ¸ hcidump-1.5 ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ hcidump ĽćĄźĽĆĽŁĽęĽĆĽŁ¤Ď &man.tcpdump.1; ¤Čť÷¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ě¤ĎĽżĄźĽßĽĘĽëžĺ¤Î Bluetooth ĽŃĽąĽĂĽČ¤ÎĆâÍƤÎÉ˝ź¨¤Ş¤č¤Ó Bluetooth ĽŃĽąĽĂĽČ¤ňĽŐĽĄĽ¤Ľë¤ËĽŔĽóĽ×¤š¤ë¤Î¤ËťČ¤¨¤Ţ¤šĄŁ
Steve Peterson ¸śşî: ĽÖĽęĽĂĽ¸ ¤Ď¤¸¤á¤Ë IP ĽľĽÖĽÍĽĂĽČ ĽÖĽęĽĂĽ¸ IP ĽľĽÖĽÍĽĂĽČ¤ňşîŔޤˇ¤ĆĄ˘ ¤˝¤ě¤é¤ÎĽťĽ°ĽáĽóĽČ¤ňĽëĄźĽż¤ňťČ¤Ă¤ĆŔÜÂł¤š¤ë¤ł¤Č¤Ę¤ˇ¤ËĄ˘ (Ethernet ĽťĽ°ĽáĽóĽČ¤Î¤č¤Ś¤Ę) °ě¤Ä¤ÎĘŞÍýĽÍĽĂĽČĽďĄźĽŻ¤ňĆó¤Ä¤ÎĽÍĽĂĽČĽďĄźĽŻĽťĽ°ĽáĽóĽČ¤ËĘŹłä¤š¤ë¤ł¤Č¤Ď¤Č¤Ć¤âÍ­¸ú¤Ęžěšç¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ÎĘýËĄ¤ÇĆó¤Ä¤ÎĽÍĽĂĽČĽďĄźĽŻ¤ňˇŇ¤°ĽÇĽĐĽ¤Ľš¤Ď ĽÖĽęĽĂĽ¸ ¤Č¸Ć¤Đ¤ě¤Ţ¤šĄŁ Ćó¤Ä¤ÎĽÍĽĂĽČĽďĄźĽŻĽ¤ĽóĽżĽŐĽ§ĄźĽšĽŤĄźĽÉ¤ňťý¤Ä FreeBSD ĽˇĽšĽĆĽŕ¤ĎĄ˘ĽÖĽęĽĂĽ¸¤Č¤ˇ¤Ćưşî¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ĽÖĽęĽĂĽ¸¤ĎĄ˘łĆĽÍĽĂĽČĽďĄźĽŻĽ¤ĽóĽżĽŐĽ§Ľ¤Ľš¤ËˇŇ¤Ź¤ëĽÇĽĐĽ¤Ľš¤Î MAC Áؤμ˘ĽÉĽěĽš (Ethernet Ľ˘ĽÉĽěĽš) ¤ňľ­˛ą¤š¤ë¤ł¤Č¤Ë¤č¤ęưşî¤ˇ¤Ţ¤šĄŁ ĽÖĽęĽĂĽ¸¤ĎĽČĽéĽŐĽŁĽĂĽŻ¤ÎÁ÷żŽ¸ľ¤ČźőżŽŔ褏°Ű¤Ę¤Ă¤żĽÍĽĂĽČĽďĄźĽŻžĺ¤Ë¤˘¤ëžěšç¤Ë¤Î¤ßĽČĽéĽŐĽŁĽĂĽŻ¤ňĹžÁ÷¤ˇ¤Ţ¤šĄŁ Âż¤Ż¤ÎĹŔ¤ÇĄ˘ĽÖĽęĽĂĽ¸¤ĎĽÝĄźĽČżô¤ÎžŻ¤Ę¤¤ Ethernet ĽšĽ¤ĽĂĽÁ¤Î¤č¤Ś¤Ę¤â¤Î¤Č¤¤¤¨¤Ţ¤šĄŁ ĽÖĽęĽĂĽ¸¤Ź¤Ő¤ľ¤ď¤ˇ¤¤žőśˇ şŁĆüĽÖĽęĽĂĽ¸¤ŹłčĚö¤š¤ëžěĚ̤ĎÂ礭¤ŻĘʤą¤ĆĆó¤Ä¤˘¤ę¤Ţ¤šĄŁ ĽČĽéĽŐĽŁĽĂĽŻ¤Îˇă¤ˇ¤¤ĽťĽ°ĽáĽóĽČ ¤Ň¤Č¤Ä¤ĎĄ˘ ĘŞÍýĽÍĽĂĽČĽďĄźĽŻĽťĽ°ĽáĽóĽČ¤ŹĽČĽéĽŐĽŁĽĂĽŻ˛ážę¤Ë¤Ę¤Ă¤Ć¤¤¤ë¤ŹĄ˘ ¤Ę¤ó¤é¤Ť¤ÎÍýÍł¤Ë¤č¤ęĽÍĽĂĽČĽďĄźĽŻ¤ňĽľĽÖĽÍĽĂĽČ¤ËĘŹ¤ąĄ˘ ĽëĄźĽż¤ÇŔÜÂł¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ę¤¤žěšç¤Ç¤šĄŁ ĘÔ˝¸ÉôĚç¤ČŔ˝şîÉôĚ礏¤Ş¤Ę¤¸ĽľĽÖĽÍĽĂĽČ¤ËĆąľď¤ˇ¤Ć¤¤¤ëżˇĘšźŇ¤ňÎă¤ËšÍ¤¨¤Ć¤ß¤Ţ¤ˇ¤ç¤ŚĄŁ ĘÔ˝¸ÉôĚç¤ÎĽćĄźĽś¤ĎĽŐĽĄĽ¤ĽëĽľĄźĽĐ¤Č¤ˇ¤ĆÁ´°÷ĽľĄźĽĐ A ¤ňÍřÍѤˇĄ˘ Ŕ˝şîÉôĚç¤ÎĽćĄźĽś¤ĎĽľĄźĽĐ B ¤ňÍřÍѤˇ¤Ţ¤šĄŁ ¤š¤Ů¤Ć¤ÎĽćĄźĽś¤ňŔÜÂł¤š¤ë¤Î¤Ë¤Ď Ethernet ¤ŹťČ¤ď¤ě¤Ć¤Ş¤ęĄ˘ šâÉé˛Ů¤Č¤Ę¤Ă¤żĽÍĽĂĽČĽďĄźĽŻ¤ĎĂŮ¤Ż¤Ę¤Ă¤Ć¤ˇ¤Ţ¤¤¤Ţ¤šĄŁ ¤â¤ˇĘÔ˝¸ÉôĚç¤ÎĽćĄźĽś¤ň°ě¤Ä¤ÎĽÍĽĂĽČĽďĄźĽŻĽťĽ°ĽáĽóĽČ¤ËĘŹÎĽ¤š¤ë¤ł¤Č¤Ź¤Ç¤­Ą˘ Ŕ˝şîÉôĚç¤ÎĽćĄźĽś¤âĆąÍͤˤǤ­¤ë¤Î¤Ę¤éĄ˘ Ćó¤Ä¤ÎĽÍĽĂĽČĽďĄźĽŻĽťĽ°ĽáĽóĽČ¤ňĽÖĽęĽĂĽ¸¤ÇˇŇ¤°¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ĽÖĽęĽĂĽ¸¤Î ČżÂĐ ÂŚ¤Ř¸ţ¤Ť¤ŚĽÍĽĂĽČĽďĄźĽŻĽČĽéĽŐĽŁĽĂĽŻ¤Ŕ¤ą¤ŹĹžÁ÷¤ľ¤ěĄ˘ łĆĽÍĽĂĽČĽďĄźĽŻĽťĽ°ĽáĽóĽČ¤ÎşŽť¨¤Ď´ËϤľ¤ě¤Ţ¤šĄŁ ĽŃĽąĽĂĽČĽŐĽŁĽëĽż/ÂÓ°čŔЏćÍŃĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽë ĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽë ĽÍĽĂĽČĽďĄźĽŻĽ˘ĽÉĽěĽšĘŃ´š (NAT) ¤â¤Ś¤Ň¤Č¤Ä¤ĎĽÍĽĂĽČĽďĄźĽŻĽ˘ĽÉĽěĽšĘŃ´š (NAT) ¤ňťČ¤ď¤ş¤ËĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽëľĄÇ˝¤ňÍřÍѤˇ¤ż¤¤žěšç¤Ç¤šĄŁ ¤ł¤ł¤Ç¤Ď DSL ¤â¤ˇ¤Ż¤Ď ISDN ¤Ç ISP ¤ËŔÜÂł¤ˇ¤Ć¤¤¤ëžŽ¤ľ¤Ę˛ńźŇ¤ňÎă¤Ë¤Č¤Ă¤Ć¤ß¤Ţ¤ˇ¤ç¤ŚĄŁ ¤ł¤Î˛ńźŇ¤Ď ISP ¤Ť¤éĽ°ĽíĄźĽĐĽë IP Ľ˘ĽÉĽěĽš¤ň 13 ¸Äłä¤ęĹö¤Ć¤é¤ě¤Ć¤Ş¤ęĄ˘ĽÍĽĂĽČĽďĄźĽŻžĺ¤Ë¤Ď 10 Âć¤Î PC ¤ŹÂ¸şß¤ˇ¤Ţ¤šĄŁ ¤ł¤Î¤č¤Ś¤Ęžőśˇ¤Ç¤ĎĄ˘ĽľĽÖĽÍĽĂĽČ˛˝¤Ë¤Ţ¤Ä¤ď¤ëĚäÂꤍ¤éĄ˘ ĽëĄźĽż¤ňÍѤ¤¤żĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽë¤ňÍřÍѤš¤ë¤ł¤Č¤Ďş¤Ćń¤Ç¤šĄŁ ĽëĄźĽż DSL ISDN ĽÖĽęĽĂĽ¸¤ňÍѤ¤¤żĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽë¤Ę¤éĄ˘ IP Ľ˘ĽÉĽěĽš¤ÎĚäÂę¤ňľ¤¤Ë¤š¤ë¤ł¤ČĚľ¤ŻĄ˘ DSL/ISDN ĽëĄźĽż¤Î˛źÎŽÂڤËĂÖ¤Ż¤č¤Ś¤ËŔßÄę¤Ç¤­¤Ţ¤šĄŁ ĽÖĽęĽĂĽ¸¤ňŔßÄꤚ¤ë ĽÍĽĂĽČĽďĄźĽŻĽ¤ĽóĽżĽŐĽ§ĄźĽšĽŤĄźĽÉ¤ÎÁŞÂň ĽÖĽęĽĂĽ¸¤ňÍřÍѤš¤ë¤Ë¤ĎžŻ¤Ę¤Ż¤Č¤â 2 Ëç¤ÎĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉ¤ŹÉŹÍ×¤Ç¤šĄŁ ťÄǰ¤Ę¤ł¤Č¤Ë FreeBSD 4.0 ¤Ç¤Ď¤š¤Ů¤Ć¤ÎĽÍĽĂĽČĽďĄźĽŻĽ¤ĽóĽżĽŐĽ§ĄźĽšĽŤĄźĽÉ¤ŹĽÖĽęĽĂĽ¸ľĄÇ˝¤ËÂĐąţ¤ˇ¤Ć¤¤¤ë¤ď¤ą¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ĽŤĄźĽÉ¤ËÂĐąţ¤ˇ¤Ć¤¤¤ë¤Ť¤É¤Ś¤Ť¤Ë¤Ä¤¤¤Ć¤Ď &man.bridge.4; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ °Ę˛ź¤ËżĘ¤ŕÁ°¤ËĄ˘ ĆóËç¤ÎĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤ĆĽĆĽšĽČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŤĄźĽÍĽëĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽó¤ÎĘŃšš ĽŤĄźĽÍĽëĽŞĽ×ĽˇĽçĽó options BRIDGE ĽŤĄźĽÍĽë¤ÇĽÖĽęĽĂĽ¸ľĄÇ˝¤ňÍ­¸ú¤Ë¤š¤ë¤Ë¤Ď options BRIDGE ¤Č¤¤¤ŚšÔ¤ňĽŤĄźĽÍĽëĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤ËÄɲ䎤à ĽŤĄźĽÍĽë¤ňşĆš˝Ăۤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽëÂĐąţ ĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽë ĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽë¤Č¤ˇ¤ĆĽÖĽęĽĂĽ¸¤ňÍřÍѤˇ¤č¤Ś¤Č¤ˇ¤Ć¤¤¤ëžěšç¤Ë¤Ď IPFIREWALL ĽŞĽ×ĽˇĽçĽó¤âťŘÄꤚ¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ĽÖĽęĽĂĽ¸¤ňĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽë¤Č¤ˇ¤ĆŔßÄꤚ¤ëşÝ¤Î°ěČĚĹŞ¤ĘžđĘó¤Ë´Ř¤ˇ¤Ć¤ĎĄ˘ ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ IP °Ęł°¤ÎĽŃĽąĽĂĽČ (ARP ¤Ę¤É) ¤ŹĽÖĽęĽĂĽ¸¤ňÄ̲ᤚ¤ë¤č¤Ś¤Ë¤š¤ë¤ż¤á¤Ë¤ĎĄ˘ ĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽëÍŃĽŞĽ×ĽˇĽçĽó¤ňŔßÄꤡ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤Ď IPFIREWALL_DEFAULT_TO_ACCEPT ¤Ç¤šĄŁ¤ł¤ÎĘŃšš¤Ë¤č¤ęĄ˘ ĽÇĽŐĽŠĽëĽČ¤Ç¤ĎĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽë¤Ź¤š¤Ů¤Ć¤ÎĽŃĽąĽĂĽČ¤ňźő¤ąĆţ¤ě¤ë¤č¤Ś¤Ë¤Ę¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎŔßÄę¤ňšÔ¤ŚÁ°¤ËĄ˘ ¤ł¤ÎĘŃšš¤ŹźŤĘŹ¤ÎĽëĄźĽëĽťĽĂĽČ¤Ë¤É¤Î¤č¤Ś¤ĘąĆśÁ¤ň¤Ş¤č¤Ü¤š¤Ť¤ňÇİޤˇ¤Ć¤Ş¤Ť¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ÂÓ°čŔŠ¸ćľĄÇ˝ ĽÖĽęĽĂĽ¸¤ÇÂÓ°čŔŠ¸ćľĄÇ˝¤ňÍřÍѤˇ¤ż¤¤žěšçĄ˘ ĽŤĄźĽÍĽëĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽó¤Ç DUMMYNET ĽŞĽ×ĽˇĽçĽó¤ň˛Ă¤¨¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ žÜ¤ˇ¤¤žđĘó¤Ë´Ř¤ˇ¤Ć¤Ď &man.dummynet.4; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽÖĽęĽĂĽ¸¤ňÍ­¸ú¤Ë¤š¤ë ĽÖĽęĽĂĽ¸¤ňÍ­¸ú¤Ë¤š¤ë¤Ë¤ĎĄ˘ /etc/sysctl.conf ¤Ë°Ę˛ź¤ÎšÔ¤ň˛Ă¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ net.link.ether.bridge=1 ťŘÄꤡ¤żĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ÇĽÖĽęĽĂĽ¸¤ň˛ÄÇ˝¤Ë¤š¤ë¤Ë¤Ď°Ę˛ź¤ň˛Ă¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ net.link.ether.bridge_cfg=if1,if2 (if1 ¤Ş¤č¤Ó if2 ¤ĎĆó¤Ä¤ÎĽÍĽĂĽČĽďĄźĽŻĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ÎĚžÁ°¤ËĂÖ¤­´š¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤)ĄŁ ĽÖĽęĽĂĽ¸¤ňˇĐÍł¤ˇ¤żĽŃĽąĽĂĽČ¤ň &man.ipfw.8; ¤ÇĽŐĽŁĽëĽż¤ˇ¤ż¤¤žěšç¤Ë¤ĎĄ˘ °Ę˛ź¤ÎšÔ¤âÉŐ¤ą˛Ă¤¨¤ëÉŹÍפʤ˘¤ę¤Ţ¤š net.link.ether.bridge_ipfw=1 &os; 5.2-RELEASE °Ęšß¤Ç¤ĎĄ˘¤Ť¤ď¤ę¤Ë°Ę˛ź¤ÎšÔ¤ňťČÍѤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ net.link.ether.bridge.enable=1 net.link.ether.bridge.config=if1,if2 net.link.ether.bridge.ipfw=1 ¤˝¤Îž¤ÎžđĘó ĽÍĽĂĽČĽďĄźĽŻ¤Ť¤éĽÖĽęĽĂĽ¸¤Ë &man.telnet.1; ¤ˇ¤ż¤¤žěšçĄ˘ ĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉ¤Î°ě¤Ä¤Ë IP Ľ˘ĽÉĽěĽš¤ňłä¤ęĹö¤Ć¤ë¤Î¤ŹŔľ¤ˇ¤¤¤Ç¤šĄŁ °ěČĚĹŞ¤ËĄ˘ÎžĘý¤ÎĽŤĄźĽÉ¤Ë IP Ľ˘ĽÉĽěĽš¤ňłä¤ęĹö¤Ć¤ë¤Î¤Ď¤č¤¤šÍ¤¨¤Ç¤Ď¤Ę¤¤¤Č¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻĆâ¤ËĘŁżô¤ÎĽÖĽęĽĂĽ¸¤ňŔßĂÖ¤š¤ëžěšçĄ˘ Ǥ°Ő¤ÎĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó´Ö¤Ç°ě¤Ä°Ęžĺ¤ÎˇĐĎŠ¤ňťý¤Ä¤ł¤Č¤Ď¤Ç¤­¤Ţ¤ť¤óĄŁ ľť˝ŃĹŞ¤Ë¤ĎĄ˘ ¤ł¤ě¤ĎĽšĽŃĽËĽóĽ°ĽÄĽęĄź¤ÎĽęĽóĽŻŔЏć¤ĎĽľĽÝĄźĽČ¤ľ¤ě¤Ć¤¤¤Ę¤¤Ą˘ ¤Č¤¤¤Ś¤ł¤Č¤ň°ŐĚŁ¤ˇ¤Ţ¤šĄŁ ĽÖĽęĽĂĽ¸¤ĎĄ˘&man.ping.8; ¤Ë¤Ť¤Ť¤ëťţ´Ö¤ňĂ٤餝¤ë¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁĆä˥˘ °ěĘý¤ÎĽťĽ°ĽáĽóĽČ¤Ť¤é¤â¤Ś°ěĘý¤Ř¤ÎĽČĽéĽŐĽŁĽĂĽŻ¤Ç¤˝¤Ś¤Ę¤ę¤Ţ¤šĄŁ Tom Rhodes ÄÉľ­¤ČşĆĘÔŔŽ: Bill Swingle ¸śşî: NFS NFS FreeBSD ¤ŹĽľĽÝĄźĽČ¤ˇ¤Ć¤¤¤ëÂż¤Ż¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ÎĂć¤Ë¤ĎĄ˘ NFS ¤Č¤â¸Ć¤Đ¤ě¤Ć¤¤¤ëĽÍĽĂĽČĽďĄźĽŻĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ź¤˘¤ę¤Ţ¤šĄŁ NFS ¤Ď¤˘¤ëĽŢĽˇĽó¤Ť¤éž¤ÎĽŢĽˇĽó¤Ř¤ČĄ˘ ĽÍĽĂĽČĽďĄźĽŻ¤ňÄ̤¸¤ĆĽÇĽŁĽěĽŻĽČĽę¤ČĽŐĽĄĽ¤Ľë¤ňśŚÍ­¤š¤ë¤ł¤Č¤ň˛ÄÇ˝¤Ë¤ˇ¤Ţ¤šĄŁ NFS ¤ňťČ¤Ś¤ł¤Č¤ÇĄ˘ ĽćĄźĽś¤äĽ×ĽíĽ°ĽéĽŕ¤ĎĽęĽâĄźĽČĽˇĽšĽĆĽŕ¤ÎĽŐĽĄĽ¤Ľë¤ňĄ˘ ¤˝¤ě¤ŹĽíĄźĽŤĽëĽŐĽĄĽ¤Ľë¤Ç¤˘¤ë¤Ť¤Î¤č¤Ś¤ËĽ˘ĽŻĽťĽš¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ NFS ¤ŹÄ󜥲ÄÇ˝¤ĘşÇ¤âĆĂÉŽ¤š¤Ů¤­ÍřĹŔ¤¤¤Ż¤Ä¤Ť¤Ď°Ę˛ź¤Î¤â¤Î¤Ç¤šĄŁ °ěČĚĹŞ¤ËťČ¤ď¤ě¤ëĽÇĄźĽż¤ňĂą°ě¤ÎĽŢĽˇĽó¤ËÇź¤á¤ë¤ł¤Č¤Ź¤Ç¤­Ą˘ ĽćĄźĽś¤ĎĽÍĽĂĽČĽďĄźĽŻ¤ňÄ̤¸¤ĆĽÇĄźĽż¤ËĽ˘ĽŻĽťĽš¤Ç¤­¤ë¤ż¤áĄ˘ ĽíĄźĽŤĽëĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ŹťČÍѤš¤ëĽÇĽŁĽšĽŻÍĆÎĚ¤Ź¸ş¤ę¤Ţ¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻžĺ¤Î¤š¤Ů¤Ć¤ÎĽŢĽˇĽó¤ËĄ˘ ĽćĄźĽś¤ŹĘĚĄš¤ËĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę¤ňťý¤ÄÉŹÍפʤ˘¤ę¤Ţ¤ť¤óĄŁ NFS ĽľĄźĽĐžĺ¤ËĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę¤ŹŔßÄꤾ¤ě¤ě¤ĐĄ˘ ĽÍĽĂĽČĽďĄźĽŻ¤Î¤É¤ł¤Ť¤é¤Ç¤âĽ˘ĽŻĽťĽš˛ÄÇ˝¤Ç¤šĄŁ ĽŐĽíĽĂĽÔĄźĽÇĽŁĽšĽŻ¤ä CDROM ĽÉĽéĽ¤ĽÖĄ˘ ZIP ĽÉĽéĽ¤ĽÖ¤Ę¤É¤ÎĽšĽČĽěĄźĽ¸ĽÇĽĐĽ¤Ľš¤ňĄ˘ ĽÍĽĂĽČĽďĄźĽŻžĺ¤Îž¤ÎĽŢĽˇĽó¤ÇÍřÍѤš¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻÁ´ÂΤμęĽŕĄźĽĐĽÖĽëĽÉĽéĽ¤ĽÖ¤Îżô¤ň¸ş¤é¤ť¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ <acronym>NFS</acronym> ¤Ď¤É¤Î¤č¤Ś¤Ëưşî¤š¤ë¤Î¤Ť NFS ¤ĎşÇÄăĆó¤Ä¤ÎźçÍפĘÉôĘŹĄ˘ ĽľĄźĽĐ¤Č°ě¤Ä°Ęžĺ¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ť¤é¤Ę¤ę¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ĎĽľĄźĽĐĽŢĽˇĽóžĺ¤ËłĘÇź¤ľ¤ě¤żĽÇĄźĽż¤ËĽęĽâĄźĽČ¤Ť¤éĽ˘ĽŻĽťĽš¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤ŹĹŹŔڤ˾ĄÇ˝¤š¤ë¤Ë¤ĎĄ˘ ¤¤¤Ż¤Ä¤Ť¤ÎĽ×ĽíĽťĽš¤ŹŔßÄꤾ¤ě¤ĆźÂšÔ¤ľ¤ě¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ &os; 5.X ¤Ç¤Ď portmap ĽćĄźĽĆĽŁĽęĽĆĽŁ¤Ď rpcbind ĽćĄźĽĆĽŁĽęĽĆĽŁ¤ËĂÖ¤­´š¤ď¤ę¤Ţ¤ˇ¤żĄŁ ¤ˇ¤ż¤Ź¤Ă¤Ć &os; 5.X ¤Ç¤ĎĄ˘ĽćĄźĽś¤Ď˛źľ­¤ÎÎă¤ÇĄ˘ portmap ¤ÎÎă¤Î¤š¤Ů¤Ć¤ň rpcbind ¤ËĂÖ¤­´š¤¨¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ĽľĄźĽĐ¤Ď°Ę˛ź¤ÎĽÇĄźĽâĽó¤ňưşî¤ľ¤ť¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ NFS ĽľĄźĽĐ portmap mountd nfsd ĽÇĄźĽâĽó ŔâĚŔ nfsd NFS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ť¤é¤ÎĽęĽŻĽ¨ĽšĽČ¤ň˝čÍý¤š¤ë NFS ĽÇĄźĽâĽó mountd &man.nfsd.8; ¤Ť¤éĹϤľ¤ě¤żĽęĽŻĽ¨ĽšĽČ¤ňźÂşÝ¤ËźÂšÔ¤š¤ë NFS ĽŢĽŚĽóĽČĽÇĄźĽâĽó portmap NFS ĽľĄźĽĐ¤ÎÍřÍѤˇ¤Ć¤¤¤ëĽÝĄźĽČ¤ň NFS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ť¤éźčĆŔ¤Ç¤­¤ë¤č¤Ś¤Ë¤š¤ë¤ż¤á¤ÎĽÝĄźĽČĽŢĽĂĽŃĽÇĄźĽâĽó ĽŻĽéĽ¤Ľ˘ĽóĽČÂŚ¤Ç¤Ď nfsiod ¤Č¤¤¤ŚĽÇĄźĽâĽó¤âźÂšÔ¤Ç¤­¤Ţ¤šĄŁ nfsiod ĽÇĄźĽâĽó¤Ď NFS ĽľĄźĽĐ¤Ť¤é¤ÎĽęĽŻĽ¨ĽšĽČ¤ň˝čÍý¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤ĎǤ°Ő¤Ç¤˘¤ęĄ˘Ŕ­Ç˝¤ň˛ţÁऎ¤Ţ¤š¤ŹĄ˘ ÄĚžď¤ÎŔľ¤ˇ¤¤Ć°şî¤Ë¤ĎÉŹÍפȤˇ¤Ţ¤ť¤óĄŁžÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.nfsiod.8; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ <acronym>NFS</acronym> ¤ÎŔßÄę NFS ŔßÄę NFS ¤ÎŔßÄę¤ĎČćłÓĹŞÁÇÄž¤ĘšŠÄř¤Ç¤šĄŁ ư¤Ť¤ľ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤Ľ×ĽíĽťĽš¤Ď /etc/rc.conf ĽŐĽĄĽ¤Ľë¤ňžŻ¤ˇĘŃšš¤š¤ě¤ĐľŻĆ°ťţ¤ËźÂšÔ¤ľ¤ť¤é¤ě¤Ţ¤šĄŁ NFS ĽľĄźĽĐ¤Ç¤Ď /etc/rc.conf ĽŐĽĄĽ¤Ľë¤ÎĂć¤ÇĄ˘ °Ę˛ź¤ÎĽŞĽ×ĽˇĽçĽó¤ŹŔßÄꤾ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňłÎ¤Ť¤á¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ portmap_enable="YES" nfs_server_enable="YES" mountd_flags="-r" mountd ¤Ď NFS ĽľĄźĽĐ¤ŹÍ­¸ú¤Ë¤Ę¤Ă¤Ć¤¤¤ě¤ĐĄ˘ źŤĆ°ĹŞ¤ËźÂšÔ¤ľ¤ě¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČÂŚ¤Ç¤Ď /etc/rc.conf Ćâ¤Ë°Ę˛ź¤ÎŔßÄꤏ¤˘¤ë¤ł¤Č¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ nfs_client_enable="YES" /etc/exports ĽŐĽĄĽ¤Ľë¤Ď NFS ĽľĄźĽĐ¤Ź¤É¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĽ¨ĽŻĽšĽÝĄźĽČ (¤Č¤­¤É¤­ śŚÍ­ ¤Č¸Ć¤Đ¤ě¤Ţ¤š) ¤š¤ë¤Î¤Ť¤ňťŘÄꤡ¤Ţ¤šĄŁ /etc/exports ĽŐĽĄĽ¤ĽëĂć¤ÎłĆšÔ¤ĎĄ˘ Ľ¨ĽŻĽšĽÝĄźĽČ¤š¤ëĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĄ˘ ¤Ş¤č¤Ó¤˝¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ËĽ˘ĽŻĽťĽš¤Ç¤­¤ëĽŢĽˇĽó¤ňťŘÄꤡ¤Ţ¤šĄŁ ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ËĽ˘ĽŻĽťĽš¤Ç¤­¤ëĽŢĽˇĽó¤Č¤Č¤â¤ËĄ˘ Ľ˘ĽŻĽťĽšĽŞĽ×ĽˇĽçĽó¤âťŘÄę¤Ç¤­¤Ţ¤šĄŁ ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ÇťŘÄę¤Ç¤­¤ëĽŞĽ×ĽˇĽçĽó¤Ď¤ż¤Ż¤ľ¤ó¤˘¤ę¤Ţ¤š¤ŹĄ˘ ¤ł¤ł¤Ç¤Ď¤Ű¤ó¤ÎžŻ¤ˇ¤Ŕ¤ą¸ŔľÚ¤ˇ¤Ţ¤šĄŁ&man.exports.5; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ňĆɤá¤ĐĄ˘ ž¤ÎĽŞĽ×ĽˇĽçĽó¤Ď´ĘĂą¤Ë¤ß¤Ä¤ą¤é¤ě¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤¤¤Ż¤Ä¤Ť /etc/exports ¤ÎŔßÄęÎă¤ňꍤˇ¤Ţ¤šĄŁ NFS Ľ¨ĽŻĽšĽÝĄźĽČ¤ÎÎ㠰ʲź¤ÎÎă¤ĎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ÎĽ¨ĽŻĽšĽÝĄźĽČ¤ÎšÍ¤¨Ęý¤ňꍤˇ¤Ţ¤š¤ŹĄ˘ ¤˘¤Ę¤ż¤Î´Äś­¤ČĽÍĽĂĽČĽďĄźĽŻŔßÄę¤Ëąţ¤¸¤ĆŔßÄę¤ĎžŻ¤ˇĘѤď¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤ż¤Č¤¨¤ĐźĄ¤ÎšÔ¤Ď /cdrom ĽÇĽŁĽěĽŻĽČĽę¤ňĄ˘ĽľĄźĽĐ¤ČĆą¤¸ĽÉĽáĽ¤ĽóĚž¤Ť (¤˝¤Î¤ż¤áĄ˘¤¤¤ş¤ě¤âĽÉĽáĽ¤ĽóĚž¤Ź¤˘¤ę¤Ţ¤ť¤ó)Ą˘ /etc/hosts ¤Ëľ­˝Ň¤ľ¤ě¤Ć¤¤¤ëť°¤Ä¤ÎÎă¤Č¤Ę¤ëĽŢĽˇĽó¤ËÂФˇ¤ĆĽ¨ĽŻĽšĽÝĄźĽČ¤ˇ¤Ţ¤šĄŁ ĽŐĽéĽ°¤ĎśŚÍ­¤ľ¤ě¤ëĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĆɤߚţ¤ßŔěÍѤˤˇ¤Ţ¤šĄŁ ¤ł¤ÎĽŐĽéĽ°¤Ë¤č¤ęĄ˘ ĽęĽâĄźĽČĽˇĽšĽĆĽŕ¤ĎśŚÍ­¤ľ¤ě¤żĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ËÂФˇ¤Ć˛ż¤ÎĘŃšš¤âšÔ¤¨¤Ę¤Ż¤Ę¤ę¤Ţ¤šĄŁ /cdrom -ro host1 host2 host3 °Ę˛ź¤ÎŔßÄę¤Ď IP Ľ˘ĽÉĽěĽš¤ÇťŘÄꤡ¤ż 3 ¤Ä¤ÎĽŰĽšĽČ¤ËÂФˇ¤Ć /home ¤ňĽ¨ĽŻĽšĽÝĄźĽČ¤ˇ¤Ţ¤šĄŁ ¤ł¤ÎŔßÄę¤ĎĽ×ĽéĽ¤ĽŮĄźĽČĽÍĽĂĽČĽďĄźĽŻ¤Ç DNS ¤ŹŔßÄꤾ¤ě¤Ć¤¤¤Ę¤¤žěšç¤ËĘŘÍř¤Ç¤ˇ¤ç¤ŚĄŁ ĆâÉô¤ÎĽŰĽšĽČĚž¤ËÂФˇ¤Ć /etc/hosts ¤ňŔßÄꤚ¤ë¤Č¤¤¤ŚźęĂʤ⤢¤ę¤Ţ¤šĄŁ žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.hosts.5; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŐĽéĽ°¤ĎĽľĽÖĽÇĽŁĽěĽŻĽČĽę¤ŹĽŢĽŚĽóĽČĽÝĽ¤ĽóĽČ¤Č¤Ę¤ë¤ł¤Č¤ňǧ¤á¤Ţ¤šĄŁ ¸Ŕ¤¤Âؤ¨¤ë¤ČĄ˘¤ł¤ě¤ĎĽľĽÖĽÇĽŁĽěĽŻĽČĽę¤ňĽŢĽŚĽóĽČ¤ˇ¤Ţ¤ť¤ó¤ŹĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ŹÍ׾ᤚ¤ë¤ŤĄ˘ ¤Ţ¤ż¤ĎÉŹÍפȤš¤ëĽÇĽŁĽěĽŻĽČĽę¤Ŕ¤ą¤ňĽŢĽŚĽóĽČ¤Ç¤­¤ë¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ /home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4 °Ę˛ź¤ÎŔßÄę¤ĎĄ˘ĽľĄźĽĐ¤Č¤Ď°Ű¤Ę¤ëĽÉĽáĽ¤ĽóĚž¤Î 2 Âć¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČ¤ŹĽ˘ĽŻĽťĽš¤Ç¤­¤ë¤č¤Ś¤Ë /a ¤ňĽ¨ĽŻĽšĽÝĄźĽČ¤ˇ¤Ţ¤šĄŁ ĽŐĽéĽ°¤ĎĄ˘ĽęĽâĄźĽČĽˇĽšĽĆĽŕ¤Î root ĽćĄźĽś¤ŹĄ˘ Ľ¨ĽŻĽšĽÝĄźĽČ¤ľ¤ě¤żĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ë root ¤Č¤ˇ¤Ć˝ń¤­šţ¤ŕ¤ł¤Č¤ňľö˛Ä¤ˇ¤Ţ¤šĄŁ -maproot=root ĽŐĽéĽ°¤ŹĚľ¤ą¤ě¤ĐĄ˘ ĽęĽâĄźĽČĽŢĽˇĽó¤Î root ¸˘¸Â¤ňťý¤Ă¤Ć¤¤¤Ć¤âĄ˘ śŚÍ­¤ľ¤ě¤żĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕžĺ¤ÎĽŐĽĄĽ¤Ľë¤ňĘŃšš¤š¤ë¤ł¤Č¤Ď¤Ç¤­¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ /a -maproot=root host.example.com box.example.org ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ŹĽ¨ĽŻĽšĽÝĄźĽČ¤ľ¤ě¤żĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ËĽ˘ĽŻĽťĽš¤š¤ë¤ż¤á¤Ë¤ĎĄ˘ ¤˝¤Ś¤š¤ë¸˘¸Â¤ŹÍż¤¨¤é¤ě¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ /etc/exports ĽŐĽĄĽ¤Ľë¤Ë ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤ë¤Ť¤É¤Ś¤ŤłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /etc/exports ĽŐĽĄĽ¤Ľë¤Ç¤ĎĄ˘ ¤˝¤ě¤ž¤ě¤ÎšÔ¤Ź°ě¤Ä¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ň°ě¤Ä¤ÎĽŰĽšĽČ¤ËĽ¨ĽŻĽšĽÝĄźĽČ¤š¤ë¤ł¤Č¤ňÉ˝¤ˇ¤Ţ¤šĄŁ ĽęĽâĄźĽČĽŰĽšĽČ¤ĎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕËč¤Ë°ěĹ٤Ŕ¤ąťŘÄꤚ¤ë¤ł¤Č¤Ź¤Ç¤­Ą˘ ¤˝¤ě¤Ë˛Ă¤¨¤Ć°ě¤Ä¤ÎĽÇĽŐĽŠĽëĽČĽ¨ĽóĽČĽę¤ňĂÖ¤ą¤Ţ¤šĄŁ¤ż¤Č¤¨¤Đ /usr ¤ŹĂą°ě¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ç¤˘¤ë¤Č˛žÄꤡ¤Ţ¤šĄŁ źĄ¤Î /etc/exports ¤ĎĚľ¸ú¤Ç¤šĄŁ /usr/src client /usr/ports client Ăą°ě¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ç¤˘¤ë /usr ¤ĎĄ˘2 šÔ¤ËĹϤäƥ˘ĆएĽŰĽšĽČ client ¤ŘĽ¨ĽŻĽšĽÝĄźĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎžěšçĄ˘Ŕľ¤ˇ¤¤˝ńź°¤ĎźĄ¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ /usr/src /usr/ports client ¤˘¤ëĽŰĽšĽČ¤ËĽ¨ĽŻĽšĽÝĄźĽČ¤ľ¤ě¤ë¤˘¤ë 1 ¤Ä¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ÎĽ×ĽíĽŃĽĆĽŁ¤ĎĄ˘ 1 šÔ¤Ç¤š¤Ů¤ĆťŘÄꤡ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎťŘÄę¤Î¤Ę¤¤šÔ¤ĎĄ˘Ăą°ě¤ÎĽŰĽšĽČ¤Č¤ˇ¤Ć°ˇ¤ď¤ě¤Ţ¤šĄŁ ¤ł¤ě¤ĎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĽ¨ĽŻĽšĽÝĄźĽČ¤Ç¤­¤ëĘýËĄ¤ňŔŠ¸Â¤ˇ¤Ţ¤š¤ŹĄ˘ Âż¤Ż¤Îžěšç¤ł¤ě¤ĎĚäÂę¤Ë¤Ę¤ę¤Ţ¤ť¤óĄŁ ˛źľ­¤ĎĄ˘ /usr ¤Ş¤č¤Ó /exports ¤ŹĽíĄźĽŤĽëĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ç¤˘¤ëžěšç¤ÎĄ˘ Í­¸ú¤ĘĽ¨ĽŻĽšĽÝĄźĽČĽęĽšĽČ¤ÎÎă¤Ç¤šĄŁ # Export src and ports to client01 and client02, but only # client01 has root privileges on it /usr/src /usr/ports -maproot=root client01 /usr/src /usr/ports client02 # The client machines have root and can mount anywhere # on /exports. Anyone in the world can mount /exports/obj read-only /exports -alldirs -maproot=root client01 client02 /exports/obj -ro ĘŃšš¤ŹÍ­¸ú¤Č¤Ę¤ë¤č¤Ś¤ËĄ˘ /etc/exports ¤ŹĘŃšš¤ľ¤ě¤ż¤é mountd ¤ňşĆľŻĆ°¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ě¤Ď mountd Ľ×ĽíĽťĽš¤Ë HUP ĽˇĽ°ĽĘĽë¤ňÁ÷¤ë¤ł¤Č¤ÇźÂšÔ¤Ç¤­¤Ţ¤šĄŁ &prompt.root; kill -HUP `cat /var/run/mountd.pid` ž¤Ë¤ĎĄ˘şĆľŻĆ°¤š¤ě¤ĐĄ˘FreeBSD ¤Ď¤š¤Ů¤Ć¤ňĹŹŔÚ¤ËŔßÄꤡ¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇ¤Ę¤Ź¤éĄ˘şĆľŻĆ°¤ĎÉŹżÜ¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ root ¸˘¸Â¤Ç°Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ě¤ĐĄ˘¤š¤Ů¤Ć¤ŹľŻĆ°¤š¤ë¤Ç¤ˇ¤ç¤ŚĄŁ NFS ĽľĄźĽĐ¤Ç¤Ď &prompt.root; portmap &prompt.root; nfsd -u -t -n 4 &prompt.root; mountd -r NFS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ç¤Ď &prompt.root; nfsiod -n 4 ¤ł¤ě¤ÇĽęĽâĄźĽČ¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňźÂşÝ¤ËĽŢĽŚĽóĽČ¤š¤ë˝ŕČ÷¤Ź¤š¤Ů¤Ć¤Ç¤­¤Ţ¤ˇ¤żĄŁ ¤ł¤ÎÎă¤Ç¤ĎĄ˘ĽľĄźĽĐ¤ÎĚžÁ°¤Ď server ¤ÇĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎĚžÁ°¤Ď client ¤Č¤ˇ¤Ţ¤šĄŁ ĽęĽâĄźĽČĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ň°ěťţĹŞ¤ËĽŢĽŚĽóĽČ¤š¤ë¤Ŕ¤ąĄ˘ ¤â¤ˇ¤Ż¤ĎŔßÄę¤ňĽĆĽšĽČ¤š¤ë¤Ŕ¤ą¤Ę¤éĄ˘ĽŻĽéĽ¤Ľ˘ĽóĽČžĺ¤Ç root ¸˘¸Â¤Ç°Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ë¤Ŕ¤ą¤Ç¤šĄŁ NFS ĽŢĽŚĽóĽČ &prompt.root; mount server:/home /mnt ¤ł¤ě¤ÇĄ˘ĽľĄźĽĐ¤Î /home ĽÇĽŁĽěĽŻĽČĽę¤ŹĄ˘ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Î /mnt ¤ËĽŢĽŚĽóĽČ¤ľ¤ě¤Ţ¤šĄŁ¤â¤ˇ¤š¤Ů¤Ć¤ŹŔľ¤ˇ¤ŻŔßÄꤾ¤ě¤Ć¤¤¤ě¤ĐĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Î /mnt ¤ËĆţ¤ęĄ˘ ĽľĄźĽĐ¤Ë¤˘¤ëĽŐĽĄĽ¤Ľë¤š¤Ů¤Ć¤ň¸Ť¤ě¤ë¤Ď¤ş¤Ç¤šĄŁ ĽęĽâĄźĽČĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňľŻĆ°¤Î¤ż¤Ó¤ËźŤĆ°ĹŞ¤ËĽŢĽŚĽóĽČ¤ˇ¤ż¤¤¤Ę¤éĄ˘ ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ň /etc/fstab ĽŐĽĄĽ¤Ľë¤ËÄɲ䎤äݤŔ¤ľ¤¤ĄŁ Îă¤Č¤ˇ¤Ć¤Ď¤ł¤Î¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ server:/home /mnt nfs rw 0 0 &man.fstab.5; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ËÍřÍѲÄÇ˝¤ĘĽŞĽ×ĽˇĽçĽó¤Ź¤š¤Ů¤ĆˇÇşÜ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ źÂÍŃĹŞ¤ĘťČ¤¤Ęý NFS ¤Ë¤ĎźÂÍŃĹŞ¤ĘťČÍŃËĄ¤Ź¤¤¤Ż¤Ä¤â¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ł¤ÇĹľˇżĹŞ¤ĘťČÍŃËĄ¤ň¤¤¤Ż¤Ä¤ŤžŇ˛đ¤ˇ¤Ţ¤ˇ¤ç¤ŚĄŁ NFS ťČÍŃËĄ ˛żÂć¤â¤ÎĽŢĽˇĽó¤Ç CDROM ¤Ę¤É¤ÎĽáĽÇĽŁĽ˘¤ňśŚÍ­¤š¤ë¤č¤Ś¤ËŔßÄꤡ¤Ţ¤šĄŁ ¤ł¤ě¤Ď°Âžĺ¤Ź¤ę¤ÇĄ˘¤ż¤¤¤Ć¤¤¤ĎĄ˘ ĘŁżô¤ÎĽŢĽˇĽó¤ËĽ˝ĽŐĽČĽŚĽ§Ľ˘¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤Î¤Ë¤č¤ęĘŘÍř¤ĘĘýËĄ¤Ç¤šĄŁ Â羏ĚϤʼͼüȼ寧ĽŻ¤Ç¤ĎĄ˘ ¤š¤Ů¤Ć¤ÎĽćĄźĽś¤ÎĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę¤ňłĘÇź¤š¤ëĽáĽ¤Ľó NFS ĽľĄźĽĐ¤ňš˝Ăۤš¤ë¤ČĄ˘¤ş¤Ă¤ČĘŘÍř¤Ç¤ˇ¤ç¤ŚĄŁ ¤É¤ÎĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ËĽíĽ°Ľ¤Ľó¤ˇ¤Ć¤âĄ˘ ĽćĄźĽś¤Ź¤¤¤Ä¤Ç¤âĆą¤¸ĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę¤ňÍřÍѤǤ­¤ë¤č¤Ś¤ËĄ˘ ¤ł¤ě¤é¤ÎĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę¤ĎĽÍĽĂĽČĽďĄźĽŻ¤Ë¸ţ¤ą¤ĆĽ¨ĽŻĽšĽÝĄźĽČ¤ľ¤ě¤Ţ¤šĄŁ ˛żÂć¤â¤ÎĽŢĽˇĽó¤Ç /usr/ports/distfiles ĽÇĽŁĽěĽŻĽČĽę¤ňśŚÍ­¤Ç¤­¤Ţ¤šĄŁ¤ł¤Ś¤š¤ë¤ČĄ˘ ˛żÂć¤â¤ÎĽŢĽˇĽóžĺ¤Ë port ¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ëÉŹÍפʤ˘¤ëťţ¤ËĄ˘ ¤˝¤ě¤ž¤ě¤ÎĽŢĽˇĽó¤ÇĽ˝ĄźĽšĽłĄźĽÉ¤ňĽŔĽŚĽóĽíĄźĽÉ¤š¤ë¤ł¤Č¤Ę¤ŻĄ˘ Äž¤Á¤ËĽ˝ĄźĽš¤ËĽ˘ĽŻĽťĽš¤Ç¤­¤Ţ¤šĄŁ Wylie Stilwell ´óšĆ: Chern Lee şĆš˝ŔŽ: <application>amd</application> ¤Ë¤č¤ëźŤĆ°ĽŢĽŚĽóĽČ amd źŤĆ°ĽŢĽŚĽóĽČĽÇĄźĽâĽó &man.amd.8; (źŤĆ°ĽŢĽŚĽóĽČĽÇĄźĽâĽó) ¤ĎĄ˘ ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĆâ¤ÎĽŐĽĄĽ¤Ľë¤Ţ¤ż¤ĎĽÇĽŁĽěĽŻĽČĽę¤ŹĽ˘ĽŻĽťĽš¤ľ¤ě¤ë¤ČĄ˘ źŤĆ°ĹŞ¤ËĽęĽâĄźĽČĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĽŢĽŚĽóĽČ¤ˇ¤Ţ¤šĄŁ ¤Ţ¤żĄ˘°ěÄę¤Î´ÖĽ˘ĽŻĽťĽš¤ľ¤ě¤Ę¤¤ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ď amd ¤Ë¤č¤Ă¤ĆźŤĆ°ĹŞ¤ËĽ˘ĽóĽŢĽŚĽóĽČ¤ľ¤ě¤Ţ¤šĄŁ amd ¤ňťČÍѤš¤ë¤ł¤Č¤ĎĄ˘ÄĚžď /etc/fstab Ćâ¤Ëľ­˝Ň¤š¤ëšąľ×ĹŞ¤ĘĽŢĽŚĽóĽČ¤ËÂФš¤ëĄ˘ Ăą˝ă¤ĘÂĺÂذƤȤʤę¤Ţ¤šĄŁ amd ¤Ď¤˝¤ěźŤżČ¤ň NFS ĽľĄźĽĐ¤Č¤ˇ¤Ć /host ¤Ş¤č¤Ó /net ĽÇĽŁĽěĽŻĽČĽę¤Ëˇë¤Ó¤Ä¤ą¤ë¤ł¤Č¤Ë¤č¤Ă¤Ćưşî¤ˇ¤Ţ¤šĄŁ ¤ł¤ÎĽÇĽŁĽěĽŻĽČĽęĆâ¤Î¤É¤ł¤Ť¤ÇĽŐĽĄĽ¤Ľë¤ŹĽ˘ĽŻĽťĽš¤ľ¤ě¤ë¤ČĄ˘ amd ¤ĎÂĐąţ¤š¤ëĽęĽâĄźĽČĽŢĽŚĽóĽČ¤ňÄ´¤Ů¤ĆĄ˘ źŤĆ°Ĺޤˤ˝¤ě¤ňĽŢĽŚĽóĽČ¤ˇ¤Ţ¤šĄŁ /net ¤ŹĄ˘Ľ¨ĽŻĽšĽÝĄźĽČ¤ľ¤ě¤żĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ň IP Ľ˘ĽÉĽěĽš¤ÇťŘÄꤡ¤ĆĽŢĽŚĽóĽČ¤š¤ë¤Î¤ËÍřÍѤľ¤ě¤ë°ěĘý¤ÇĄ˘ /host ¤ĎĄ˘Ľ¨ĽŻĽšĽÝĄźĽČ¤ľ¤ě¤żĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĽęĽâĄźĽČĽŰĽšĽČĚž¤ÇťŘÄꤡ¤ĆĽŢĽŚĽóĽČ¤š¤ë¤Î¤ËÍřÍѤľ¤ě¤Ţ¤šĄŁ /host/foobar/usr Ćâ¤ÎĽŐĽĄĽ¤Ľë¤ËĽ˘ĽŻĽťĽš¤š¤ë¤ČĄ˘ amd ¤ĎĽŰĽšĽČ foobar ¤Ť¤éĽ¨ĽŻĽšĽÝĄźĽČ¤ľ¤ě¤ż /usr ¤ňĽŢĽŚĽóĽČ¤ˇ¤Ţ¤šĄŁ <application>amd</application> ¤Ë¤č¤ëĽ¨ĽŻĽšĽÝĄźĽČ¤ľ¤ě¤żĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ÎĽŢĽŚĽóĽČ showmount ĽłĽŢĽóĽÉ¤ňÍѤ¤¤ĆĄ˘ ĽęĽâĄźĽČĽŰĽšĽČ¤ÎĽŢĽŚĽóĽČ¤ÇÍřÍѤǤ­¤ë¤â¤Î¤Ź¸Ť¤é¤ě¤Ţ¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘foobar ¤ČĚžÉŐ¤ą¤é¤ě¤żĽŰĽšĽČ¤ÎĽŢĽŚĽóĽČ¤ň¸Ť¤ë¤ż¤á¤ËźĄ¤Î¤č¤Ś¤ËÍřÍѤǤ­¤Ţ¤šĄŁ &prompt.user; showmount -e foobar Exports list on foobar: /usr 10.10.10.0 /a 10.10.10.0 &prompt.user; cd /host/foobar/usr Îă¤Î¤č¤Ś¤Ë showmount ¤ĎĽ¨ĽŻĽšĽÝĄźĽČ¤Č¤ˇ¤Ć /usr ¤ňÉ˝ź¨¤ˇ¤Ţ¤šĄŁ /host/foobar/usr ¤ËĽÇĽŁĽěĽŻĽČĽę¤ňĘŃšš¤š¤ë¤ČĄ˘ amd ¤ĎĽŰĽšĽČĚž foobar ¤ň˛ňˇč¤ˇĄ˘¤ŞËž¤ß¤ÎĽ¨ĽŻĽšĽÝĄźĽČ¤ňĽŢĽŚĽóĽČ¤ˇ¤č¤Ś¤Čťî¤ß¤Ţ¤šĄŁ amd ¤Ď /etc/rc.conf Ćâ¤ËźĄ¤ÎšÔ¤ňľ­˝Ň¤š¤ě¤ĐĄ˘ ľŻĆ°ĽšĽŻĽęĽ×ĽČ¤Ë¤č¤Ă¤ĆľŻĆ°¤ľ¤ě¤Ţ¤šĄŁ amd_enable="YES" ¤ľ¤é¤Ë amd_flags ĽŞĽ×ĽˇĽçĽó¤Ë¤č¤Ă¤Ć amd ¤ËĽŐĽéĽ°¤ňĽŤĽšĽżĽŢĽ¤Ľş¤ˇ¤ĆĹϤť¤Ţ¤šĄŁĽÇĽŐĽŠĽëĽČ¤Ç¤Ď amd_flags ¤ĎźĄ¤Î¤č¤Ś¤ËŔßÄꤾ¤ě¤Ć¤¤¤Ţ¤šĄŁ amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map" /etc/amd.map ĽŐĽĄĽ¤Ľë¤ĎĄ˘ Ľ¨ĽŻĽšĽÝĄźĽČ¤ŹĽŢĽŚĽóĽČ¤ľ¤ě¤ëĽÇĽŐĽŠĽëĽČĽŞĽ×ĽˇĽçĽó¤ňˇčÄꤡ¤Ţ¤šĄŁ /etc/amd.conf ĽŐĽĄĽ¤Ľë¤ĎĄ˘ amd ¤Î¤č¤ęšâĹ٤ʾĄÇ˝¤Î°ěÉô¤ňŔßÄꤡ¤Ţ¤šĄŁ žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.amd.8; ¤Ş¤č¤Ó &man.amd.conf.5; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ John Lind ´óšĆ: ž¤ÎĽˇĽšĽĆĽŕ¤Č¤ÎĹýšç¤Ë¤Ä¤¤¤Ć¤ÎĚäÂę Ěő: &a.jp.tomo;. 6 September 1996. ISA ĽĐĽšÍѤμ¤ĄźĽľĽÍĽĂĽČĽ˘ĽŔĽ×Ľż¤ÎĂć¤Ë¤ĎŔ­Ç˝¤Ź°­¤¤¤ż¤áĄ˘ ĽÍĽĂĽČĽďĄźĽŻĄ˘ĆĂ¤Ë NFS ¤Çżźšď¤ĘĚäÂꤏ¤Ş¤­¤ë¤â¤Î¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤Ď FreeBSD ¤Ë¸Â¤Ă¤ż¤ł¤Č¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó¤Ź FreeBSD ¤Ç¤âľŻ¤ł¤ęĆŔ¤Ţ¤šĄŁ ¤ł¤ÎĚäÂę¤Ď (FreeBSD ¤ňťČÍѤˇ¤ż) PC ¤ŹĽˇĽęĽłĽóĽ°ĽéĽŐĽŁĽĂĽŻĽšźŇ¤äĽľĽóĄŚĽŢĽ¤ĽŻĽíĽˇĽšĽĆĽŕĽşźŇ¤Ę¤É¤ÎšâŔ­Ç˝¤ĘĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ËĽÍĽĂĽČĽďĄźĽŻŔÜÂł¤ľ¤ě¤Ć¤¤¤ëžěšç¤ËÉŃČË¤ËľŻ¤ł¤ę¤Ţ¤šĄŁ NFS ĽŢĽŚĽóĽČ¤Ď¤Ś¤Ţ¤ŻĆ°şî¤š¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤Ţ¤żĄ˘¤¤¤Ż¤Ä¤Ť¤ÎÁŕşî¤â¤Ś¤Ţ¤ŻĆ°şî¤š¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤ó¤ŹĄ˘ ž¤ÎĽˇĽšĽĆĽŕ¤ËÂФš¤ëÍ׾á¤äąţĹú¤ĎÂł¤¤¤Ć¤¤¤Ć¤âĄ˘ ĆÍÁłĽľĄźĽĐ¤ŹĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎÍ׾á¤ËÂФˇ¤ĆąţĹú¤ˇ¤Ę¤Ż¤Ę¤ę¤Ţ¤šĄŁ¤ł¤ě¤ĎĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ź FreeBSD ¤Ťžĺľ­¤ÎĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤Ç¤˘¤ë¤Č¤­¤ËĽŻĽéĽ¤Ľ˘ĽóĽČÂŚ¤ËľŻ¤­¤ë¸˝žÝ¤Ç¤šĄŁ Âż¤Ż¤ÎĽˇĽšĽĆĽŕ¤Ç¤ĎĄ˘¤¤¤Ă¤ż¤ó¤ł¤ÎĚäÂꤏ¸˝¤ď¤ě¤ë¤ČĄ˘ šÔľˇÎÉ¤ŻĽŻĽéĽ¤Ľ˘ĽóĽČ¤ň˝ŞÎť¤š¤ëźęĂʤϤ˘¤ę¤Ţ¤ť¤óĄŁ NFS ¤Ź¤ł¤ÎžőÂ֤˴٤äƤˇ¤Ţ¤Ś¤ČŔľžď¤ËĚᤚ¤ł¤Č¤Ď¤Ç¤­¤Ę¤¤¤ż¤áĄ˘ Âż¤Ż¤ÎžěšçĽŻĽéĽ¤Ľ˘ĽóĽČ¤ňĽęĽťĽĂĽČ¤š¤ë¤ł¤Č¤ŹÍٰě¤Î˛ňˇčËĄ¤Č¤Ę¤ę¤Ţ¤šĄŁ Ŕľ¤ˇ¤¤ ˛ňˇčËĄ¤ĎĄ˘¤č¤ęšâŔ­Ç˝¤ÎĽ¤ĄźĽľĽÍĽĂĽČĽ˘ĽŔĽ×Ľż¤ň FreeBSD ĽˇĽšĽĆĽŕ¤ËĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤ł¤Č¤Ç¤š¤ŹĄ˘ Ëţ­¤Ëưşî¤ľ¤ť¤ë´ĘĂą¤ĘĘýËĄ¤Ź¤˘¤ę¤Ţ¤šĄŁ FreeBSD ĽˇĽšĽĆĽŕ¤Ź ĽľĄźĽĐ ¤Ë¤Ę¤ë¤Î¤Ę¤éĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ť¤é¤ÎĽŢĽŚĽóĽČťţ¤Ë ĽŞĽ×ĽˇĽçĽó¤ň¤Ä¤ą¤Ć˛ź¤ľ¤¤ĄŁFreeBSD ĽˇĽšĽĆĽŕ¤Ź ĽŻĽéĽ¤Ľ˘ĽóĽČ ¤Ë¤Ę¤ë¤Î¤Ę¤éĄ˘ NFS ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ň ĽŞĽ×ĽˇĽçĽó¤Ä¤­¤ÇĽŢĽŚĽóĽČ¤ˇ¤Ć˛ź¤ľ¤¤ĄŁ ¤ł¤ě¤é¤ÎĽŞĽ×ĽˇĽçĽó¤ĎźŤĆ°ĹŞ¤ËĽŢĽŚĽóĽČ¤ň¤Ş¤ł¤Ę¤Śžěšç¤Ë¤Ď ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Î fstab Ľ¨ĽóĽČĽę¤Î 4 ČÖĚÜ¤ÎĽŐĽŁĄźĽëĽÉ¤ËťŘÄꤡ¤Ć¤â¤č¤¤¤Ç¤š¤ˇĄ˘ źęưĽŢĽŚĽóĽČ¤Îžěšç¤Ď mount ĽłĽŢĽóĽÉ¤Î ĽŃĽéĽáĄźĽż¤ÇťŘÄꤡ¤Ć¤â¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ NFS ĽľĄźĽĐ¤ČĽŻĽéĽ¤Ľ˘ĽóĽČ¤ŹĘĚĄš¤ÎĽÍĽĂĽČĽďĄźĽŻžĺ¤Ë¤˘¤ë¤č¤Ś¤ĘžěšçĄ˘ ¤ł¤ě¤Č´Ö°ă¤¨¤ä¤š¤¤Âž¤ÎĚäÂꤏľŻ¤­¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć˛ź¤ľ¤¤ĄŁ ¤˝¤Î¤č¤Ś¤Ęžěšç¤ĎĄ˘ĽëĄźĽż¤ŹÉŹÍ×¤Ę UDP žđĘó¤ň¤­¤Á¤ó¤ČĽëĄźĽĆĽŁĽóĽ°¤ˇ¤Ć¤¤¤ë¤Ť¤ňłÎ¤Ť¤á¤Ć˛ź¤ľ¤¤ĄŁ ¤ˇ¤Ć¤¤¤Ę¤ą¤ě¤ĐĄ˘¤ż¤Č¤¨¤˘¤Ę¤ż¤Ź˛ż¤ň¤ˇ¤č¤Ś¤Č˛ňˇč¤Ç¤­¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ źĄ¤ÎÎă¤Ç¤Ď fastws ¤ĎšâŔ­Ç˝ĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ÎĽŰĽšĽČ (Ľ¤ĽóĽżĽŐĽ§ĄźĽš) Ěž¤ÇĄ˘ freebox ¤ĎÄăŔ­Ç˝¤ÎĽ¤ĄźĽľĽÍĽĂĽČĽ˘ĽŔĽ×Ľż¤ňČ÷¤¨¤ż FreeBSD ĽˇĽšĽĆĽŕ¤ÎĽŰĽšĽČ (Ľ¤ĽóĽżĽŐĽ§ĄźĽš) Ěž¤Ç¤šĄŁ ¤Ţ¤ż /sharedfs ¤ĎĽ¨ĽŻĽšĽÝĄźĽČ¤ľ¤ě¤ë NFS ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ç¤˘¤ę (&man.exports.5; ¤ňť˛žČ) Ą˘ /project ¤ĎĽ¨ĽŻĽšĽÝĄźĽČ¤ľ¤ě¤żĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ÎĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČžĺ¤ÎĽŢĽŚĽóĽČĽÝĽ¤ĽóĽČ¤Č¤Ę¤ę¤Ţ¤šĄŁ ¤š¤Ů¤Ć¤Îžěšç¤Ë¤Ş¤¤¤ĆĄ˘Ľ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤Ë¤č¤Ă¤Ć¤Ď ¤ä , ¤Č¤¤¤Ă¤żÄÉ˛ĂĽŞĽ×ĽˇĽçĽó¤Ź¤Ő¤ľ¤ď¤ˇ¤¤¤Ť¤â¤ˇ¤ě¤Ę¤¤¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć˛ź¤ľ¤¤ĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČÂŚ FreeBSD ĽˇĽšĽĆĽŕ (freebox) ¤Î /etc/fstab ¤ÎÎă¤Ď°Ę˛ź¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ fastws:/sharedfs /project nfs rw,-r=1024 0 0 freebox žĺ¤Çźęư¤Ç mount ĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ëžěšç¤ĎźĄ¤Î¤č¤Ś¤Ë¤ˇ¤Ć˛ź¤ľ¤¤ĄŁ &prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /project ĽľĄźĽĐÂŚ FreeBSD ĽˇĽšĽĆĽŕ (fastws) ¤Î /etc/fstab ¤ÎÎă¤Ď°Ę˛ź¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ freebox:/sharedfs /project nfs rw,-w=1024 0 0 fastws žĺ¤Çźęư¤Ç mount ĽłĽŢĽóĽÉ¤ÇźÂšÔ¤š¤ëžěšç¤ĎźĄ¤Î¤č¤Ś¤Ë¤ˇ¤Ć˛ź¤ľ¤¤ĄŁ &prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /project śá¤¤¤Ś¤Á¤Ë¤É¤Î¤č¤Ś¤Ę 16 ĽÓĽĂĽČ¤ÎĽ¤ĄźĽľĽÍĽĂĽČĽ˘ĽŔĽ×Ľż¤Ç¤âĄ˘žĺľ­¤ÎĆɤ߽ФˇĄ˘ ˝ń¤­šţ¤ßĽľĽ¤Ľş¤ÎŔŠ¸Â¤Ę¤ˇ¤ÇÁŕşî¤Ç¤­¤ë¤č¤Ś¤Ë¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁ źşÇÔ¤ŹČŻŔ¸¤ˇ¤ż¤Č¤­˛ż¤ŹľŻ¤­¤Ć¤¤¤ë¤Ť´Řż´¤Î¤˘¤ëżÍ¤ËĄ˘ ¤Ę¤ź˛óÉüÉÔ˛ÄÇ˝¤Ę¤Î¤Ť¤â´Ţ¤á¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁNFS ¤ĎÄĚžď (¤č¤ęžŽ¤ľ¤¤ĽľĽ¤Ľş¤ŘĘŹłä¤ľ¤ě¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤ó¤Ź) 8 K ¤Î ĽÖĽíĽĂĽŻ ĽľĽ¤Ľş¤Çưşî¤ˇ¤Ţ¤šĄŁ Ľ¤ĄźĽľĽÍĽĂĽČ¤ÎĽŃĽąĽĂĽČĽľĽ¤Ľş¤ĎşÇÂç 1500 ĽĐĽ¤ĽČÄřĹ٤ʤΤǥ˘ žĺ°ĚłŹÁؤμłĄźĽÉ¤Ë¤Č¤Ă¤Ć¤Ď 1 ¤Ä¤ÎĽćĽËĽĂĽČ¤Ç¤˘¤Ă¤ĆĄ˘ NFS ĽÖĽíĽĂĽŻ ¤ĎĘŁżô¤ÎĽ¤ĄźĽľĽÍĽĂĽČĽŃĽąĽĂĽČ¤ËĘŹłä¤ľ¤ě¤ë¤â¤Î¤ÎĄ˘ žĺ°ĚłŹÁؤμłĄźĽÉ¤Ë¤Č¤Ă¤Ć¤Ď 1 ¤Ä¤ÎĽćĽËĽĂĽČ¤Ç¤˘¤Ă¤ĆĄ˘ ĽćĽËĽĂĽČ¤Č¤ˇ¤ĆźőżŽ¤ľ¤ěĄ˘ÁȤßΊ¤ĆÄž¤ľ¤ěĄ˘ šÎÄęąţĹú (ACK) ¤ľ¤ě¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ šâŔ­Ç˝¤ÎĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ĎźĄĄš¤Ë NFS ĽćĽËĽĂĽČ¤ňš˝Ŕޤš¤ëĽŃĽąĽĂĽČ¤ňĄ˘ ɸ˝ŕ¤Îľö¤š¸Â¤ę´ÖłÖ¤ňľÍ¤á¤ĆźĄĄš¤ËÁ÷¤ę˝Đ¤š¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ žŽ¤ľ¤ŻĄ˘ÍĆÎ̤ÎÄ㤤ĽŤĄźĽÉ¤Ç¤ĎĄ˘ Ćą¤¸ĽćĽËĽĂĽČ¤ÎÁ°¤ÎĽŃĽąĽĂĽČ¤ŹĽŰĽšĽČ¤ËĹžÁ÷¤ľ¤ě¤ëÁ°¤ËĄ˘ ¸ĺ¤ÎĽŃĽąĽĂĽČ¤Ź¤˝¤ě¤ňƧ¤ß¤Ä¤Ö¤ˇ¤Ć¤ˇ¤Ţ¤¤¤Ţ¤šĄŁ ¤ł¤Î¤ż¤áÁ´ÂΤȤˇ¤Ć¤ÎĽćĽËĽĂĽČ¤ĎĄ˘şĆš˝ŔޤâšÎÄęąţĹú¤â¤Ç¤­¤Ţ¤ť¤óĄŁ ¤˝¤Îˇë˛ĚĄ˘ ĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ĎĽżĽ¤ĽŕĽ˘ĽŚĽČ¤ˇ¤ĆşĆÁ÷¤ňťî¤ß¤Ţ¤š¤ŹĄ˘ 8 K ¤ÎĽćĽËĽĂĽČÁ´ÂΤňşĆÁ÷¤ˇ¤č¤Ś¤Č¤š¤ë¤Î¤ÇĄ˘ ¤ł¤ÎĽ×ĽíĽťĽš¤ĎşÝ¸ÂĚľ¤ŻˇŤ¤ęĘÖ¤ľ¤ě¤Ć¤ˇ¤Ţ¤¤¤Ţ¤šĄŁ ĽćĽËĽĂĽČĽľĽ¤Ľş¤ňĽ¤ĄźĽľĽÍĽĂĽČ¤ÎĽŃĽąĽĂĽČĽľĽ¤Ľş¤Î ŔŠ¸Â°Ę˛ź¤ËÍޤ¨¤ë¤ł¤Č¤Ë¤č¤ęĄ˘ źőżŽ¤ˇ¤ż´°Á´¤ĘĽ¤ĄźĽľĽÍĽĂĽČĽŃĽąĽĂĽČ¤Ë¤Ä¤¤¤Ć¸ÄĄš¤ËšÎÄęąţĹú¤ňĘÖ¤ť¤ë¤ł¤Č¤ŹĘÝžÚ¤ľ¤ě¤ë¤Î¤ÇĄ˘ ĽÇĽĂĽÉĽíĽĂĽŻžőÂÖ¤ňČň¤ą¤é¤ě¤ë¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ ¤˝¤ě¤Ç¤âĄ˘šâŔ­Ç˝¤ĘĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ŹÎĎǤ¤ť¤ËźĄĄš¤Č PC ĽˇĽšĽĆĽŕ¤ËĽÇĄźĽż¤ňÁ÷¤Ă¤ż¤Č¤­¤Ë¤ĎƧ¤ß¤Ä¤Ö¤ˇ¤ŹľŻ¤­¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¤ˇ¤Ť¤ˇĄ˘šâŔ­Ç˝¤ÎĽŤĄźĽÉ¤ňťČ¤Ă¤Ć¤¤¤ě¤ĐĄ˘NFS ĽćĽËĽĂĽČ ¤ÇÉŹ¤ş¤˝¤Î¤č¤Ś¤ĘƧ¤ß¤Ä¤Ö¤ˇ¤ŹľŻ¤­¤ë¤Č¤Ď¸Â¤ę¤Ţ¤ť¤óĄŁ Ƨ¤ß¤Ä¤Ö¤ˇ¤ŹľŻ¤­¤ż¤éĄ˘ąĆśÁ¤ňźő¤ą¤żĽćĽËĽĂĽČ¤ĎşĆÁ÷¤ľ¤ě¤ĆĄ˘ źőżŽ¤ľ¤ěĄ˘ÁȤßΊ¤Ć¤é¤ěĄ˘šÎÄęąţĹú¤ľ¤ě¤ë˝˝ĘʤƏŤšţ¤ß¤Ź¤˘¤ę¤Ţ¤šĄŁ Jean-François Dockès ššżˇ: ĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻ Ěő: &a.jp.yasu; ĽÇĽŁĽšĽŻĽěĽšĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó ĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻ FreeBSD ĽŢĽˇĽó¤ĎĽÍĽĂĽČĽďĄźĽŻ¤ňÄ̤¸¤ĆľŻĆ°¤Ç¤­Ą˘ ¤˝¤ˇ¤Ć NFS ĽľĄźĽĐ¤Ť¤éĽŢĽŚĽóĽČ¤ˇ¤żĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňťČÍѤˇ¤ĆĄ˘ ĽíĄźĽŤĽëĽÇĽŁĽšĽŻ¤Ę¤ˇ¤Çưşî¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ɸ˝ŕ¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤ňĘŃšš¤š¤ë°Ęžĺ¤ÎĄ˘ĽˇĽšĽĆĽŕ¤Î˝¤Ŕľ¤ĎÉŹÍפ˘¤ę¤Ţ¤ť¤óĄŁ ÉŹÍפĘÍ×ÁǤΤš¤Ů¤Ć¤ŹÍѰդľ¤ě¤Ć¤¤¤ë¤Î¤ÇĄ˘ ¤ł¤Î¤č¤Ś¤ĘĽˇĽšĽĆĽŕ¤ňŔßÄꤚ¤ë¤Î¤Ď´ĘĂą¤Ç¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻ¤ňÄ̤¸¤ĆĽŤĄźĽÍĽë¤ňĆɤߚţ¤ŕĘýËĄ¤ĎĄ˘ žŻ¤Ę¤Ż¤Č¤âĆó¤Ä¤˘¤ę¤Ţ¤šĄŁ PXE: &intel; ¤Î Preboot Execution Environment ĽˇĽšĽĆĽŕ¤ĎĄ˘ °ěÉô¤ÎĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉ¤Ţ¤ż¤ĎĽŢĽśĄźĽÜĄźĽÉ¤ËÁȤߚţ¤Ţ¤ě¤żĄ˘ ĽšĽŢĄźĽČ¤ĘĽÖĄźĽČ ROM ¤Î°ěˇÁÂÖ¤Ç¤šĄŁ žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.pxeboot.8; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ port ¤Î etherboot (net/etherboot) ¤ĎĄ˘ ĽÍĽĂĽČĽďĄźĽŻ¤ňÄ̤¸¤ĆĽŤĄźĽÍĽë¤ňľŻĆ°¤š¤ë ROM ˛˝˛ÄÇ˝¤ĘĽłĄźĽÉ¤ňÄ󜥤ˇ¤Ţ¤šĄŁ ĽłĄźĽÉ¤ĎĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉžĺ¤ÎĽÖĄźĽČ PROM ¤ËžĆ¤­ÉŐ¤ą¤ë¤ŤĄ˘ ¤˘¤ë¤¤¤ĎĽíĄźĽŤĽëĽŐĽíĽĂĽÔĄź (ĽĎĄźĽÉ) ĽÇĽŁĽšĽŻĽÉĽéĽ¤ĽÖĄ˘ ¤Ţ¤ż¤Ďưşî¤ˇ¤Ć¤¤¤ë &ms-dos; ĽˇĽšĽĆĽŕ¤Ť¤éĆɤߚţ¤ŕ¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ Âż¤Ż¤ÎĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉ¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ĽľĽóĽ×ĽëĽšĽŻĽęĽ×ĽČ (/usr/share/examples/diskless/clone_root) ¤ĎĽľĄźĽĐžĺ¤ÇĄ˘ ĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ÎĽëĄźĽČĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ÎşîŔŽ¤Č°Ýťý¤ň¤ä¤ę°×¤Ż¤ˇ¤Ţ¤šĄŁ ¤ł¤ÎĽšĽŻĽęĽ×ĽČ¤ĎžŻ¤ˇ˝ń¤­´š¤¨¤Ę¤¤¤Č¤¤¤ą¤Ę¤¤¤Ç¤ˇ¤ç¤Ś¤ŹĄ˘ Á᤯źč¤ęłÝ¤Ť¤ě¤ë¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ ĽÇĽŁĽšĽŻĽěĽšĽˇĽšĽĆĽŕľŻĆ°¤ň¸ĄĂΤˇĽľĽÝĄźĽČ¤š¤ëɸ˝ŕ¤ÎĽˇĽšĽĆĽŕľŻĆ°ĽŐĽĄĽ¤Ľë¤Ź /etc Ćâ¤Ë¤˘¤ę¤Ţ¤šĄŁ ÉŹÍפʤ饢NFS ĽŐĽĄĽ¤Ľë¤Ţ¤ż¤ĎĽíĄźĽŤĽëĽÇĽŁĽšĽŻ¤Î¤É¤Á¤é¤Ť¤ËĽšĽďĽĂĽ×¤Ç¤­¤Ţ¤šĄŁ ĽÇĽŁĽšĽŻĽěĽšĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ňŔßÄꤚ¤ëĘýËĄ¤Ď¤¤¤í¤¤¤í¤˘¤ę¤Ţ¤šĄŁ Âż¤Ż¤ÎÍ×ÁÇ¤Ź´Ř¤ď¤Ă¤Ć¤Ş¤ęĄ˘ ¤˝¤ÎÂż¤Ż¤ĎĽíĄźĽŤĽë¤Îžőśˇ¤Ëšç¤ď¤ť¤ĆĽŤĽšĽżĽŢĽ¤Ľş¤Ç¤­¤Ţ¤šĄŁ˛źľ­¤ĎĄ˘ Ăą˝ă¤ľ¤Čɸ˝ŕ¤Î FreeBSD ľŻĆ°ĽšĽŻĽęĽ×ĽČ¤Č¤Î¸ß´šŔ­¤ňśŻÄ´¤ˇ¤ż´°Á´¤ĘĽˇĽšĽĆĽŕ¤ÎŔßÄę¤ňŔâĚŔ¤ˇ¤Ţ¤šĄŁ ľ­˝Ň¤ľ¤ě¤Ć¤¤¤ëĽˇĽšĽĆĽŕ¤ÎĆĂħ¤ĎźĄ¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ ĽÇĽŁĽšĽŻĽěĽšĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ĎĄ˘ śŚÍ­¤ľ¤ě¤żĆɤߟč¤ęŔěÍѤΠĽëĄźĽČĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ČĄ˘ śŚÍ­¤ľ¤ě¤żĆɤߟč¤ęŔěÍѤΠ/usr ¤ňťČÍѤˇ¤Ţ¤šĄŁ ĽëĄźĽČ ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ĎĄ˘ ɸ˝ŕĹŞ¤Ę FreeBSD (ĹľˇżĹŞ¤Ë¤ĎĽľĄźĽĐ¤Î) ¤ÎĽëĄźĽČ¤ÎĽłĽÔĄź¤ÇĄ˘ °ěÉô¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤ŹĄ˘ĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻĄ˘ ¤Ţ¤żžěšç¤Ë¤č¤Ă¤Ć¤Ď¤˝¤ÎĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ËĆĂÍ­¤Î¤â¤Î¤Çžĺ˝ń¤­¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ˝ń¤­šţ¤ß˛ÄÇ˝¤Ç¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤ ĽëĄźĽČ ¤ÎÉôĘŹ¤Ď &man.mfs.8; ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Çʤ¤ď¤ě¤Ţ¤šĄŁ ĽˇĽšĽĆĽŕ¤ŹşĆľŻĆ°¤š¤ë¤Č¤­¤Ë¤Ď¤š¤Ů¤Ć¤ÎĘŃšš¤Źźş¤ď¤ě¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ĽŤĄźĽÍĽë¤Ď DHCP (¤Ţ¤ż¤Ď BOOTP) ¤Ş¤č¤Ó TFTP ¤ňÍѤ¤¤Ć etherboot ¤Ë¤č¤Ă¤ĆĆɤߚţ¤Ţ¤ě¤Ţ¤šĄŁ ľ­˝Ň¤ľ¤ě¤Ć¤¤¤ë¤Č¤Ş¤ęĄ˘ ¤ł¤ÎĽˇĽšĽĆĽŕ¤Ď°ÂÁ´¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ĽÍĽĂĽČĽďĄźĽŻ¤ÎĘݸ¤ě¤żČϰϤǝČÍѤľ¤ě¤ë¤Ů¤­¤Ç¤˘¤ęĄ˘ ž¤ÎĽŰĽšĽČ¤Ť¤éżŽÍꤾ¤ě¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ ĽťĽĂĽČĽ˘ĽĂĽ×¤Îźę˝ç DHCP/BOOTP ¤ÎŔßÄę ĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻ ľŻĆ° ĽÍĽĂĽČĽďĄźĽŻ¤ňÄ̤¸¤ĆŔßÄę¤ňźčĆŔ¤ˇĄ˘ ĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ňľŻĆ°¤š¤ë¤ż¤á¤Ë°ěČĚĹŞ¤ËťČÍѤľ¤ě¤ëĽ×ĽíĽČĽłĽë¤Ë¤ĎĄ˘ BOOTP ¤Č DHCP ¤Î 2 ¤Ä¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤˝¤ě¤é¤ĎĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ÎĽÖĄźĽČĽšĽČĽéĽĂĽ×ťţ¤Ë˛żĽő˝ę¤Ť¤ÇťČÍѤľ¤ě¤Ţ¤šĄŁ etherboot ¤ĎĽŤĄźĽÍĽë¤ň¸Ť¤Ä¤ą¤ë¤ż¤á¤Ë DHCP (ĽÇĽŐĽŠĽëĽČ) ¤Ţ¤ż¤Ď BOOTP (ŔßÄ꼪Ľ×ĽˇĽçĽó¤ŹÉŹÍ×) ¤ňťČÍѤˇ¤Ţ¤š (PXE ¤Ď DHCP ¤ňťČÍѤˇ¤Ţ¤š) ĄŁ NFS ĽëĄźĽČ¤Îžě˝ę¤ňÄę¤á¤ë¤ż¤á¤ËĽŤĄźĽÍĽë¤Ď BOOTP ¤ňťČÍѤˇ¤Ţ¤šĄŁ BOOTP ¤Ŕ¤ą¤ňťČÍѤš¤ë¤č¤Ś¤ËĽˇĽšĽĆĽŕ¤ňŔßÄꤚ¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ &man.bootpd.8; ĽľĄźĽĐĽ×ĽíĽ°ĽéĽŕ¤Ď FreeBSD ¤ÎĽŮĄźĽšĽˇĽšĽĆĽŕ¤Ë´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇ¤Ę¤Ź¤éĄ˘DHCP ¤Ë¤Ď BOOTP ¤ËžĄ¤ëĹŔ¤ŹÂżĄš¤˘¤ę¤Ţ¤šĄŁ (¤č¤ę¤č¤¤ŔßÄęĽŐĽĄĽ¤ĽëĄ˘PXE ¤ŹťČ¤¨¤ë¤ł¤ČĄ˘ ¤˝¤ˇ¤ĆĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻ¤Ë¤ĎÄžŔܴء¸¤ˇ¤Ę¤¤Âż¤Ż¤ÎÄš˝ę) ¤ł¤ł¤Ç¤Ď BOOTP ¤Ŕ¤ąÍřÍѤš¤ëžěšç¤ČĄ˘ BOOTP ¤Č DHCP ¤ňÁȤߚç¤ď¤ť¤żŔßÄę¤ň°ˇ¤¤¤Ţ¤šĄŁĆĂ¤Ë ISC DHCP Ľ˝ĽŐĽČĽŚĽ§Ľ˘ĽŃĽĂĽąĄźĽ¸¤ňÍřÍѤš¤ë¸ĺźÔ¤ÎĘýËĄ¤Ë˝ĹĹŔ¤ň¤Ş¤­¤Ţ¤šĄŁ ISC DHCP ¤ňťČÍѤš¤ëŔßÄę DHCP ĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻ isc-dhcp ĽľĄźĽĐ¤ĎĄ˘ BOOTP ¤Ş¤č¤Ó DHCP ĽęĽŻĽ¨ĽšĽČ¤ÎΞĘý¤ËĹú¤¨¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ 4.4-RELEASE ¤ÎťţĹŔ¤Ç isc-dhcp 3.0 ¤ĎĽŮĄźĽšĽˇĽšĽĆĽŕ¤Î°ěÉô¤Ç¤ĎĚľ¤Ż¤Ę¤ę¤Ţ¤ˇ¤żĄŁ ¤Ţ¤ş¤Ď¤¸¤á¤Ë net/isc-dhcp3-server port ¤Ţ¤ż¤ĎÂĐąţ¤š¤ë package ¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ëÉŹÍפʤ˘¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ports ¤Ş¤č¤Ó package ¤Ë´Ř¤š¤ë°ěČĚĹŞ¤ĘžđĘó¤Ë¤Ä¤¤¤Ć¤Ď ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ isc-dhcp ¤ŹĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤ë¤ČĄ˘ ưşî¤š¤ë¤ż¤á¤ËŔßÄęĽŐĽĄĽ¤Ľë¤ňÉŹÍפȤˇ¤Ţ¤š (ÄĚžď /usr/local/etc/dhcpd.conf ¤ŹťŘÄꤾ¤ě¤Ţ¤š) ĄŁ ˛źľ­¤ËĽłĽáĽóĽČ¤ň´Ţ¤á¤żÎă¤ňꍤˇ¤Ţ¤šĄŁ default-lease-time 600; max-lease-time 7200; authoritative; option domain-name "example.com"; option domain-name-servers 192.168.4.1; option routers 192.168.4.1; subnet 192.168.4.0 netmask 255.255.255.0 { use-host-decl-names on; option subnet-mask 255.255.255.0; option broadcast-address 192.168.4.255; host margaux { hardware ethernet 01:23:45:67:89:ab; fixed-address margaux.example.com; next-server 192.168.4.4; filename "/tftpboot/kernel.diskless"; option root-path "192.168.4.4:/data/misc/diskless"; } } ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤Ď host Ŕë¸Ŕ¤ÎĂͤňĄ˘ ĽÇĽŁĽšĽŻĽěĽšĽŰĽšĽČ¤Ř¤ÎĽŰĽšĽČĚž¤Č¤ˇ¤ĆÁ÷¤ë¤č¤Ś¤Ë dhcpd ¤ËťŘꍤˇ¤Ţ¤šĄŁ Ę̤ÎĘýËĄ¤Č¤ˇ¤ĆĄ˘ĽŰĽšĽČŔë¸ŔĆâ¤Ë option host-name margaux ¤ň˛Ă¤¨¤ë¤â¤Î¤Ź¤˘¤ę¤Ţ¤šĄŁ TFTP ĽľĄźĽĐ¤ň next-server ĽÇĽŁĽěĽŻĽĆĽŁĽÖ¤ËťŘÄꤡ¤Ţ¤š (ĽÇĽŐĽŠĽëĽČ¤Ď DHCP ĽľĄźĽĐ¤ČĆą¤¸ĽŰĽšĽČ¤ňťČ¤¤¤Ţ¤š)ĄŁ ĽŤĄźĽÍĽë¤Č¤ˇ¤Ć etherboot ¤ŹĆɤߚţ¤ŕĽŐĽĄĽ¤Ľë¤ň filename ĽÇĽŁĽěĽŻĽĆĽŁĽÖ¤ËťŘÄꤡ¤Ţ¤šĄŁ PXE ¤ĎÁęÂĐĹŞ¤ĘĽŐĽĄĽ¤ĽëĚž¤ňšĽ¤ŕ¤č¤Ś¤Ç¤šĄŁ ¤Ţ¤żĄ˘ĽŤĄźĽÍĽë¤Ç¤Ď¤Ę¤Ż pxeboot ¤ňĆɤߚţ¤ß¤Ţ¤š (option filename "pxeboot")ĄŁ ĽëĄźĽČĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ř¤ÎĽŃĽš¤ňĄ˘ ÄĚžď¤Î NFS ˝ńź°¤Ç root-path ĽŞĽ×ĽˇĽçĽó¤ËťŘÄꤡ¤Ţ¤šĄŁ BOOTP ¤ňťČÍѤš¤ëŔßÄę BOOTP ĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻ Âł¤ą¤ĆĄ˘bootpd ¤ÇĆąĹů¤Î¤ł¤Č¤ň¤š¤ëŔßÄę¤Ç¤šĄŁ ¤ł¤ě¤Ď /etc/bootptab ¤Ë¤Ş¤­¤Ţ¤šĄŁ BOOTP ¤ňťČÍѤš¤ë¤ż¤á¤ËĄ˘ĽÇĽŐĽŠĽëĽČ¤Ç¤Ď¤Ę¤¤ NO_DHCP_SUPPORT ĽŞĽ×ĽˇĽçĽóÉŐ¤­¤Ç etherboot ¤ňĽłĽóĽŃĽ¤Ľë¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤ł¤Č¤ČĄ˘PXE ¤Ď DHCP ¤ň ÉŹÍ× ¤Č¤š¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ bootpd ¤ÎÍŁ°ěĚŔÇň¤ĘÍřĹŔ¤ĎĄ˘ ¤ł¤ě¤ŹĽŮĄźĽšĽˇĽšĽĆĽŕ¤Ë¸şß¤š¤ë¤Č¤¤¤Ś¤ł¤Č¤Ç¤šĄŁ .def100:\ :hn:ht=1:sa=192.168.4.4:vm=rfc1048:\ :sm=255.255.255.0:\ :ds=192.168.4.1:\ :gw=192.168.4.1:\ :hd="/tftpboot":\ :bf="/kernel.diskless":\ :rp="192.168.4.4:/data/misc/diskless": margaux:ha=0123456789ab:tc=.def100 <application>Etherboot</application> ¤ňÍѤ¤¤ëĽÖĄźĽČĽ×ĽíĽ°ĽéĽŕ¤Î˝ŕČ÷ Etherboot Etherboot ¤ÎĽŚĽ§ĽÖĽľĽ¤ĽČ ¤Ë¤Ďźç¤Ë Linux ĽˇĽšĽĆĽŕ¤Ë¤Ä¤¤¤Ć˝Ň¤Ů¤ż š­ČϰϤÎʸ˝ń ¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇĄ˘¤˝¤ě¤Ë¤â¤Ť¤Ť¤ď¤é¤şÍ­ÍѤʞđĘó¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤šĄŁ ˛źľ­¤Ď FreeBSD ĽˇĽšĽĆĽŕžĺ¤Ç¤Î etherboot ¤ÎťČÍŃËĄ¤Ë¤Ä¤¤¤Ć¤Îłľ´Ń¤ňꍤˇ¤Ţ¤šĄŁ ¤Ţ¤ş¤Ď¤¸¤á¤Ë net/etherboot ¤Î package ¤Ţ¤ż¤Ď port ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ etherboot port ¤ĎÄĚžď /usr/ports/net/etherboot ¤Ë¤˘¤ę¤Ţ¤šĄŁ ports ĽÄĽęĄź¤ŹĽˇĽšĽĆĽŕ¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëžěšçĄ˘ ¤ł¤ÎĽÇĽŁĽěĽŻĽČĽęĆâ¤Ç make ¤ňźÂšÔ¤š¤ě¤ĐĄ˘¤č¤­¤Ëˇ×¤é¤Ă¤Ć¤Ż¤ě¤Ţ¤šĄŁ ports ¤Ş¤č¤Ó packages ¤Ë´Ř¤š¤ëžđĘó¤Ď ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ł¤ÇŔâĚŔ¤ˇ¤Ć¤¤¤ëĘýËĄ¤Ç¤ĎĄ˘ĽÖĄźĽČĽŐĽíĽĂĽÔĄź¤ňťČÍѤˇ¤Ţ¤šĄŁ ž¤ÎĘýËĄ (PROM ¤Ţ¤ż¤Ď DOS Ľ×ĽíĽ°ĽéĽŕ) ¤Ë¤Ä¤¤¤Ć¤Ď etherboot ¤Îʸ˝ń¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽÖĄźĽČĽŐĽíĽĂĽÔĄź¤ňşîŔޤš¤ë¤ż¤á¤Ë¤ĎĄ˘ etherboot ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤żĽŢĽˇĽó¤ÎĽÉĽéĽ¤ĽÖ¤ËĽŐĽíĽĂĽÔĄźĽÇĽŁĽšĽŻ¤ňÁŢĆţ¤ˇ¤Ţ¤šĄŁ ¤˝¤ě¤Ť¤éĽŤĽěĽóĽČĽÇĽŁĽěĽŻĽČĽę¤ň etherboot ĽÄĽęĄźĆâ¤Î src ĽÇĽŁĽěĽŻĽČĽę¤Ë¤ˇ¤ĆźĄ¤Î¤č¤Ś¤ËĆţÎϤˇ¤Ţ¤šĄŁ &prompt.root; gmake bin32/devicetype.fd0 devicetype ¤Ď ĽÇĽŁĽšĽŻĽěĽšĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ÎĽ¤ĄźĽľĽÍĽĂĽČĽŤĄźĽÉĽżĽ¤Ľ×¤Ë°Í¸¤ˇ¤Ţ¤šĄŁ Ŕľ¤ˇ¤¤ devicetype ¤ňˇčÄꤚ¤ë¤ż¤á¤ËĄ˘ Ćą¤¸ĽÇĽŁĽěĽŻĽČĽęĆâ¤Î NIC ĽŐĽĄĽ¤Ľë¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ TFTP ¤Ş¤č¤Ó NFS ĽľĄźĽĐ¤ÎŔßÄę TFTP ĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻ NFS ĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻ TFTP ĽľĄźĽĐžĺ¤Ç tftpd ¤ňÍ­¸ú¤Ë¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ tftpd ¤ŹÄ󜥤š¤ëĽŐĽĄĽ¤Ľë¤ňĂÖ¤ŻĽÇĽŁĽěĽŻĽČĽę (¤ż¤Č¤¨¤Đ /tftpboot) ¤ňşîŔޤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /etc/inetd.conf ĽŐĽĄĽ¤Ľë¤Ë°Ę˛ź¤ÎšÔ¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot žŻ¤Ę¤Ż¤Č¤â PXE ¤Î¤¤¤Ż¤Ä¤Ť¤ÎĽĐĄźĽ¸ĽçĽó¤Ź TCP ČǤΠTFTP ¤ňÍ׾ᤚ¤ë¤č¤Ś¤Ç¤šĄŁ¤˝¤Îžěšç dgram udp ¤ň stream tcp ¤ËĂÖ¤­´š¤¨¤ż 2 ČÖĚܤΚԤňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ inetd ¤ËŔßÄęĽŐĽĄĽ¤Ľë¤ňşĆĆɤߚţ¤ß¤ľ¤ť¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; kill -HUP `cat /var/run/inetd.pid` tftpboot ĽÇĽŁĽěĽŻĽČĽę¤ĎĽľĄźĽĐžĺ¤Î¤É¤ł¤Ë¤Ç¤âĂÖ¤ą¤Ţ¤šĄŁ ¤˝¤Îžě˝ę¤Ź inetd.conf ¤Ş¤č¤Ó dhcpd.conf ¤ÎΞĘý¤ËŔßÄꤾ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňłÎ¤Ť¤á¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ľ¤é¤Ë NFS ¤ňÍ­¸ú¤Ë¤ˇ¤Ć NFS ĽľĄźĽĐ¤ÎĹŹŔڤʼռĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĽ¨ĽŻĽšĽÝĄźĽČ¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤ł¤ÎšÔ¤ň /etc/rc.conf ¤ËÄɲ䎤äݤŔ¤ľ¤¤ĄŁ nfs_server_enable="YES" ˛źľ­¤ň /etc/exports ¤Ë˛Ă¤¨¤ë¤ł¤Č¤ÇĄ˘ ĽÇĽŁĽšĽŻĽěĽšĽŢĽˇĽó¤ÎĽëĄźĽČĽÇĽŁĽěĽŻĽČĽę¤Ź°ĚĂÖ¤š¤ëĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĽ¨ĽŻĽšĽÝĄźĽČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ (ĽÜĽęĽĺĄźĽŕ¤ÎĽŢĽŚĽóĽČĽÝĽ¤ĽóĽČ¤ňĹŹĹö¤ËÄ´ŔᤡĄ˘ margaux ¤ňĽÇĽŁĽšĽŻĽěĽšĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤ÎĚžÁ°¤ËĂÖ¤­´š¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤)ĄŁ /data/misc -alldirs -ro margaux mountd ¤ËŔßÄęĽŐĽĄĽ¤Ľë¤ňşĆĆɤߚţ¤ß¤ľ¤ť¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /etc/rc.conf Ćâ¤Ç NFS ¤ň¤Ď¤¸¤á¤ĆÍ­¸ú¤Ë¤š¤ëÉŹÍפʤ˘¤Ă¤ż¤Î¤Ę¤éĄ˘ Âĺ¤ď¤ę¤ËşĆľŻĆ°¤ˇ¤żĘý¤Ź¤č¤¤¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ &prompt.root; kill -HUP `cat /var/run/mountd.pid` ĽÇĽŁĽšĽŻĽěĽšÍѤμŤĄźĽÍĽëš˝ĂŰ ĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻ ĽŤĄźĽÍĽëŔßÄę źĄ¤ÎĽŞĽ×ĽˇĽçĽó¤ň (ÄĚžď¤Î¤â¤Î¤Ë) Äɲ䡤żĄ˘ ĽÇĽŁĽšĽŻĽěĽšĽŻĽéĽ¤Ľ˘ĽóĽČÍѤμŤĄźĽÍĽëĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤ňşîŔޤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ options BOOTP # Use BOOTP to obtain IP address/hostname options BOOTP_NFSROOT # NFS mount root filesystem using BOOTP info options BOOTP_COMPAT # Workaround for broken bootp daemons. BOOTP_NFSV3 ¤Ş¤č¤Ó BOOTP_WIRED_TO ¤ňÍřÍѤˇ¤Ć¤â¤č¤¤¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤ó (LINT ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤)ĄŁ ĽŤĄźĽÍĽë¤ňš˝Ăۤˇ¤Ć ( ¤ňť˛žČ)Ą˘ dhcpd.conf ¤Ëľ­˝Ň¤ˇ¤żĚžžÎ¤Ç tftp ĽÇĽŁĽěĽŻĽČĽę¤ËĽłĽÔĄź¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽëĄźĽČĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Î˝ŕČ÷ ĽëĄźĽČĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ ĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻ dhcpd.conf ¤Ë root-path ¤Č¤ˇ¤Ćľ­şÜ¤ľ¤ě¤ż ĽÇĽŁĽšĽŻĽěĽšĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤Î¤ż¤á¤ÎĽëĄźĽČĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňşîŔޤš¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤ňšÔ¤ŚşÇ¤â´ĘĂą¤ĘĘýËĄ¤Ď /usr/share/examples/diskless/clone_root ĽˇĽ§ĽëĽšĽŻĽęĽ×ĽČ¤ňťČÍѤš¤ë¤ł¤Č¤Ç¤šĄŁ ¤ł¤ÎĽšĽŻĽęĽ×ĽČ¤ĎĄ˘žŻ¤Ę¤Ż¤Č¤âĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ŹşîŔޤľ¤ě¤ëžě˝ę (DEST ĘŃżô) ¤ňÄ´Ŕᤚ¤ë¤ż¤á¤ËĘŃšš¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ŔâĚŔ¤Ë¤Ä¤¤¤Ć¤ĎĽšĽŻĽęĽ×ĽČ¤Î°ěČÖžĺ¤Ë¤˘¤ëĽłĽáĽóĽČ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŮĄźĽšĽˇĽšĽĆĽŕ¤ň¤É¤Î¤č¤Ś¤Ëš˝Ăۤš¤ë¤ŤĄ˘ ¤Ţ¤żĽŐĽĄĽ¤Ľë¤Ź¤É¤Î¤č¤Ś¤ËĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻĄ˘ĽľĽÖĽÍĽĂĽČĄ˘ ¤Ţ¤ż¤Ď¸ÄĄš¤ÎĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤Ë¸ÇÍ­¤ÎĽĐĄźĽ¸ĽçĽó¤Ë¤č¤Ă¤ĆĄ˘ ÁŞÂňĹŞ¤ËĽŞĄźĽĐĽéĽ¤ĽÉ¤Ç¤­¤ë¤Ť¤ňŔâĚŔ¤ˇ¤Ţ¤šĄŁ ¤Ţ¤żĄ˘ĽÇĽŁĽšĽŻĽěĽš¤Ęžěšç¤Î /etc/fstab ĽŐĽĄĽ¤Ľë¤Ş¤č¤Ó /etc/rc.conf ĽŐĽĄĽ¤Ľë¤ÎÎă¤ňꍤˇ¤Ţ¤šĄŁ /usr/share/examples/diskless Ćâ¤Î README ĽŐĽĄĽ¤Ľë¤Ë¤ĎĄ˘Âż¤Ż¤Îś˝ĚŁżź¤¤ÇءʞđĘ󤏽ń¤Ť¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇ diskless ĽÇĽŁĽěĽŻĽČĽęĆâ¤Îž¤ÎÎă¤ČĆą¤¸¤ŻĄ˘ clone_root ¤Č /etc/rc.diskless[12] ¤ÇźÂşÝ¤ËťČ¤ď¤ě¤Ć¤¤¤ë¤â¤Î¤Č¤Ď°Ű¤Ę¤ëŔßÄęĘýËĄ¤ŹŔâĚŔ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ł¤Ë˝ń¤Ť¤ě¤Ć¤¤¤ëĘýËĄ¤Ď rc ĽšĽŻĽęĽ×ĽČ¤ÎĘŃšš¤ŹÉŹÍפˤʤę¤Ţ¤š¤ŹĄ˘ ¤ł¤Á¤é¤ÎĘý¤Źľ¤¤ËĆţ¤Ă¤ż¤Č¤¤¤Ś¤Î¤Ç¤Ę¤ą¤ě¤ĐĄ˘ ť˛žČ¤Ë¤Č¤É¤á¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽšĽďĽĂĽ×¤ÎŔßÄę ÉŹÍפʤ饢ĽľĄźĽĐ¤ËĂÖ¤Ť¤ě¤żĽšĽďĽĂĽ×ĽŐĽĄĽ¤Ľë¤Ë NFS ˇĐÍł¤ÇĽ˘ĽŻĽťĽš¤Ç¤­¤Ţ¤šĄŁ bootptab ¤Ţ¤ż¤Ď dhcpd.conf ¤ÎŔľłÎ¤ĘĽŞĽ×ĽˇĽçĽó¤ĎĄ˘ ¸˝ťţĹŔ¤Ç¤ĎĚŔłÎ¤Ë¤Ďʸ˝ń˛˝¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ ˛źľ­¤ÎŔßÄęÎă¤Ď isc-dhcp 3.0rc11 ¤ňťČÍѤˇ¤Ćưşî¤ˇ¤ż¤ČĘóšđ¤ľ¤ě¤Ć¤¤¤ë¤â¤Î¤Ç¤šĄŁ dhcpd.conf ¤Ë˛źľ­¤ÎšÔ¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ # Global section option swap-path code 128 = string; option swap-size code 129 = integer 32; host margaux { ... # Standard lines, see above option swap-path "192.168.4.4:/netswapvolume/netswap"; option swap-size 64000; } ¤ł¤ě¤ĎĄ˘žŻ¤Ę¤Ż¤Č¤â FreeBSD ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ë¤Ş¤¤¤Ć¤ĎĄ˘ DHCP/BOOTP ĽŞĽ×ĽˇĽçĽóĽłĄźĽÉ¤Î 128 ¤Ď NFS ĽšĽďĽĂĽ×ĽŐĽĄĽ¤Ľë¤Ř¤ÎĽŃĽš¤ÇĄ˘ĽŞĽ×ĽˇĽçĽóĽłĄźĽÉ 129 ¤Ď KB Ăą°Ě¤ÎĽšĽďĽĂĽ×ĽľĽ¤Ľş¤Ŕ¤Č¤¤¤Ś¤ł¤Č¤Ç¤šĄŁ ¤â¤Ă¤Č¸Ĺ¤¤ĽĐĄźĽ¸ĽçĽó¤Î dhcpd ¤Ç¤Ď option option-128 "... ¤Č¤¤¤Ś˝ńź°¤Źźő¤ąÉŐ¤ą¤é¤ě¤Ţ¤ˇ¤ż¤ŹĄ˘ ¤â¤Ď¤äÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤ť¤óĄŁ Âĺ¤ď¤ę¤ËĄ˘/etc/bootptab ¤Ç¤ĎźĄ¤Î˝ńź°¤ňťČ¤¤¤Ţ¤šĄŁ T128="192.168.4.4:/netswapvolume/netswap":T129=0000fa00 /etc/bootptab ¤Ç¤ĎĄ˘ĽšĽďĽĂĽ×¤ÎÂ礭¤ľ¤Ď 16 żĘżô¤ÇÉ˝¤ľ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ NFS ĽšĽďĽĂĽ×ĽŐĽĄĽ¤ĽëĽľĄźĽĐÂŚ¤ÇĽšĽďĽĂĽ×ĽŐĽĄĽ¤Ľë¤ňşîŔޤˇ¤Ţ¤šĄŁ &prompt.root; mkdir /netswapvolume/netswap &prompt.root; cd /netswapvolume/netswap &prompt.root; dd if=/dev/zero bs=1024 count=64000 of=swap.192.168.4.6 &prompt.root; chmod 0600 swap.192.168.4.6 192.168.4.6 ¤ĎĽÇĽŁĽšĽŻĽěĽšĽŻĽéĽ¤Ľ˘ĽóĽČ¤Î IP Ľ˘ĽÉĽěĽš¤Ç¤šĄŁ NFS ĽšĽďĽĂĽ×ĽŐĽĄĽ¤ĽëĽľĄźĽĐžĺ¤Ç /etc/exports ¤Ë˛źľ­¤ÎšÔ¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ /netswapvolume -maproot=0:10 -alldirs margaux ¤˝¤ě¤Ť¤éĄ˘žĺ˝Ň¤ˇ¤ż¤č¤Ś¤Ë mountd ¤ËĽ¨ĽŻĽšĽÝĄźĽČĽŐĽĄĽ¤Ľë¤ňşĆĆɤߚţ¤ß¤ľ¤ť¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ť¨Âż¤ĘĚäÂę Ćɤߟč¤ęŔěÍѤΠ<filename>/usr</filename> ¤Çưşî¤ľ¤ť¤ë ĽÇĽŁĽšĽŻĽěĽš˛ÔĆŻ Ćɤߟč¤ęŔěÍѤΠ/usr ĽÇĽŁĽšĽŻĽěĽšĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤Ź X ¤ňľŻĆ°¤š¤ë¤č¤Ś¤ËŔßÄꤾ¤ě¤Ć¤¤¤ëžěšçĄ˘ xdm ŔßÄęĽŐĽĄĽ¤Ľë¤ňÄ´Ŕ°¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ě¤ĎĽÇĽŐĽŠĽëĽČ¤ÇĽ¨ĽéĄźĽŐĽĄĽ¤Ľë¤ň /usr ¤ËĂÖ¤­¤Ţ¤šĄŁ FreeBSD ¤Ç¤Ď¤Ę¤¤ĽľĄźĽĐ¤ňťČÍѤš¤ë ĽëĄźĽČĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňÄ󜥤š¤ëĽľĄźĽĐ¤Ź FreeBSD ¤Çưşî¤ˇ¤Ć¤¤¤Ę¤¤žěšçĄ˘ FreeBSD ĽŢĽˇĽóžĺ¤ÇĽëĄźĽČĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňşîŔޤˇĄ˘ tar ¤Ţ¤ż¤Ď cpio ¤ňÍřÍѤˇ¤ĆĂÖ¤­¤ż¤¤žě˝ę¤ËĽłĽÔĄź¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤Îžőśˇ¤Ç¤ĎĄ˘major/minor Ŕ°żôĽľĽ¤Ľş¤Ź°Ű¤Ę¤Ă¤Ć¤¤¤ë¤ł¤Č¤Ë¤č¤ę /dev Ćâ¤ÎĽšĽÚĽˇĽăĽëĽŐĽĄĽ¤Ľë¤Ë´Ř¤š¤ëĚäÂꤏťţĄš¤Ş¤ł¤ę¤Ţ¤šĄŁ ¤ł¤ÎĚäÂę¤ň˛ňˇč¤š¤ë¤Ë¤ĎĄ˘Čó FreeBSD ĽľĄźĽĐ¤Ť¤éĽÇĽŁĽěĽŻĽČĽę¤ňĽ¨ĽŻĽšĽÝĄźĽČ¤ˇ¤ĆĄ˘ ¤˝¤ÎĽÇĽŁĽěĽŻĽČĽę¤ň FreeBSD ĽŢĽˇĽó¤ÇĽŢĽŚĽóĽČ¤ˇĄ˘ FreeBSD ĽŢĽˇĽóžĺ¤Ç MAKEDEV ¤ňźÂšÔ¤ˇ¤ĆŔľ¤ˇ¤¤ĽÇĽĐĽ¤ĽšĽ¨ĽóĽČĽę¤ňşîŔޤˇ¤Ţ¤š (FreeBSD 5.0 ¤Ş¤č¤Ó¤˝¤ě°Ęšß¤Ç¤ĎĄ˘&man.devfs.5; ¤ňťČÍѤˇ¤ĆĽćĄźĽś¤Ë°Őźą¤ľ¤ť¤ş¤ËĽÇĽĐĽ¤ĽšĽÎĄźĽÉ¤ňłä¤ęĹö¤Ć¤ë¤Î¤ÇĄ˘ ¤ł¤ě¤é¤ÎĽĐĄźĽ¸ĽçĽó¤Ç¤Ď MAKEDEV ¤ĎÉŹÍפ˘¤ę¤Ţ¤ť¤ó)ĄŁ ISDN ISDN Ěő: &a.jp.kiroh;. 11 December 1996. ISDN ľť˝Ń¤ČĽĎĄźĽÉĽŚĽ§Ľ˘¤Ë´Ř¤ˇ¤Ć¤ĎĄ˘ Dan Kegel's ISDN Page ¤Ź¤č¤¤ť˛šÍ¤Ë¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁ źęˇÚ¤Ę ISDN ¤ÎĆłĆţźę˝ç¤Ď°Ę˛ź¤Î¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ ĽčĄźĽíĽĂĽŃşß˝ť¤ÎĘý¤Ď ISDN ĽŤĄźĽÉ¤ÎŔá¤ËżĘ¤ó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŔĽ¤ĽäĽëĽ˘ĽĂĽ×ŔěÍѤǤʤ¤˛óŔţžĺ¤ÇĄ˘ Ľ¤ĽóĽżĄźĽÍĽĂĽČĽ×ĽíĽĐĽ¤ĽŔ¤ň¤Ä¤Ť¤Ă¤ĆĽ¤ĽóĽżĄźĽÍĽĂĽČ¤ËŔÜÂł¤š¤ë¤ż¤á¤Ë ISDN ¤ňťČÍѤš¤ë¤ł¤Č¤ňÂč°ě¤ËšÍ¤¨¤Ć¤¤¤ëžěšç¤ĎĄ˘ ĽżĄźĽßĽĘĽëĽ˘ĽŔĽ×Ľż¤ÎťČÍѤňšÍ¤¨¤Ć¤ß¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎĘýËĄ¤Ď¤â¤Ă¤Č¤â˝ŔĆđŔ­¤Ź¤˘¤ęĄ˘ Ľ×ĽíĽĐĽ¤ĽŔ¤ňĘŃšš¤ˇ¤żžěšç¤ÎĚäÂę¤âžŻ¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ 2 ¤Ä¤Î LAN ¤ňŔÜÂł¤š¤ëžěšç¤äĄ˘ ISDN ŔěÍŃŔţ¤ňťČÍѤš¤ëžěšç¤Ë¤ĎĄ˘ ĽšĽżĽóĽÉĽ˘ĽíĽó¤ĘĽëĄźĽż¤Ţ¤ż¤ĎĽÖĽęĽĂĽ¸¤ÎťČÍѤň´Ť¤á¤Ţ¤šĄŁ ČńÍѤϤɤβňˇčËĄ¤ňÁޤ֤Ť¤ňˇč¤á¤ë˝ĹÍפĘÍ×°ř¤Ç¤šĄŁ °Ę˛ź¤ËĄ˘şÇ¤â°Â˛Á¤ĘĘýËĄ¤Ť¤éĄ˘šâ˛Á¤ĘĘýËĄ¤Ţ¤Ç˝ç¤ËŔâĚŔ¤ˇ¤Ć¤¤¤­¤Ţ¤šĄŁ Hellmuth Michaelis ´óšĆ: ISDN ĽŤĄźĽÉ ISDN ĽŤĄźĽÉ FreeBSD ¤Î ISDN źÂÁő¤ĎĄ˘ĽŃĽĂĽˇĽÖĽŤĄźĽÉ¤ňťČÍѤˇ¤ż DSS1/Q.931 (¤Ţ¤ż¤Ď Euro-ISDN) ɸ˝ŕ¤Ŕ¤ą¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤šĄŁFreeBSD 4.4 ¤Ť¤é¤ĎĄ˘ĽŐĽĄĄźĽŕĽŚĽ§Ľ˘¤ŹÂž¤ÎżŽšćĽ×ĽíĽČĽłĽë¤Ë¤âÂĐąţ¤ˇ¤Ć¤¤¤ë °ěÉô¤ÎĽ˘ĽŻĽĆĽŁĽÖĽŤĄźĽÉ¤Ë¤âÂĐąţ¤ˇ¤Ţ¤ˇ¤żĄŁ ¤˝¤ÎĂć¤Ë¤ĎĄ˘¤Ď¤¸¤á¤ĆÂĐąţ¤ľ¤ě¤ż°ěźĄˇ˛ÂŽĹŮĽ¤ĽóĽżĽŐĽ§ĄźĽš (PRI) ISDN ĽŤĄźĽÉ¤â¤˘¤ę¤Ţ¤šĄŁ isdn4bsd ¤Ď IP over raw HDLC ¤Ţ¤ż¤ĎĆą´ü PPP ¤ňÍřÍѤˇ¤Ćž¤Î ISDN ĽëĄźĽż¤ËŔÜÂł¤Ç¤­¤ë¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ PPP ¤Ç¤ĎĄ˘ĽŤĄźĽÍĽë PPP ¤ň &man.sppp.4; ĽÉĽéĽ¤ĽĐ¤ň˝¤Ŕľ¤ˇ¤ż isppp ĽÉĽéĽ¤ĽĐ¤Č¤Č¤â¤ËÍřÍѤš¤ë¤ŤĄ˘¤Ţ¤ż¤Ď ĽćĄźĽśĽ×ĽíĽťĽš &man.ppp.8; ¤ňÍřÍѤš¤ë¤Ť¤Î¤É¤Á¤é¤Ť¤Ë¤Ę¤ę¤Ţ¤šĄŁĽćĄźĽś &man.ppp.8; ¤ňÍřÍѤš¤ë¤ČĄ˘Ćó¤Ä°Ęžĺ¤Î ISDN B ĽÁĽăĽÍĽë¤ňĘť¤ť¤ĆÍřÍѤǤ­¤Ţ¤šĄŁ Ľ˝ĽŐĽČĽŚĽ§Ľ˘ 300 ĽÜĄźĽâĽÇĽŕ¤Î¤č¤Ś¤ĘÂż¤Ż¤ÎĽćĄźĽĆĽŁĽęĽĆĽŁ¤Č¤Č¤â¤ËĄ˘ ÎąźéČÖĹĹĎĂĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤âÍřÍѲÄÇ˝¤Ç¤šĄŁ FreeBSD ¤ŹÂĐąţ¤ˇ¤Ć¤¤¤ë PC ISDN ĽŤĄźĽÉ¤Îżô¤ĎÁý˛Ă¤ˇ¤Ć¤Ş¤ęĄ˘ ĽčĄźĽíĽĂĽŃÁ´°č¤äŔ¤łŚ¤Î¤˝¤Îž¿¤Ż¤ÎĂϰč¤Ç¤Ś¤Ţ¤ŻťČ¤¨¤ë¤ł¤Č¤ŹĘóšđ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ÂĐąţ¤ˇ¤Ć¤¤¤ëĽŃĽĂĽˇĽÖ ISDN ĽŤĄźĽÉ¤Î¤Ű¤Č¤ó¤É¤Ď Infineon (Á°żČ¤Ď Siemens) ¤Î ISAC/HSCX/IPAC ISDN ĽÁĽĂĽ×ĽťĽĂĽČ¤ňČ÷¤¨¤żĽŤĄźĽÉ¤Ç¤š¤ŹĄ˘ Cologne Chip ¤Ť¤éśĄľë¤ľ¤ě¤żĽÁĽĂĽ×¤ňČ÷¤¨¤ż ISDN ĽŤĄźĽÉ (ISA ĽĐĽš¤Î¤ß)Ą˘Winbond W6692 ĽÁĽĂĽ×¤ňČ÷¤¨¤ż PCI ĽŤĄźĽÉĄ˘ Tiger300/320/ISAC ĽÁĽĂĽ×ĽťĽĂĽČ¤ňÁȤߚç¤ď¤żĽŤĄźĽÉ¤Î°ěÉôĄ˘ ¤Ş¤č¤Ó AVM Fritz!Card PCI V.1.0 ¤ä AVM Fritz!Card PnP ¤Î¤č¤Ś¤ĘĽŮĽóĽŔĆČźŤ¤ÎĽÁĽĂĽ×ĽťĽĂĽČ¤Ë´đ¤Ĺ¤¤¤żĽŤĄźĽÉ¤â¤˘¤ę¤Ţ¤šĄŁ ¸˝şß¤Î¤Č¤ł¤íĄ˘ÂĐąţ¤ˇ¤Ć¤¤¤ëĽ˘ĽŻĽĆĽŁĽÖĽŤĄźĽÉ¤Ď AVM B1 (ISA ¤Ş¤č¤Ó PCI) BRI ĽŤĄźĽÉ¤Č AVM T1 PCI PRI ĽŤĄźĽÉ¤Ç¤šĄŁ isdn4bsd ¤Ë¤Ä¤¤¤Ć¤Îʸ˝ń¤Ď FreeBSD ĽˇĽšĽĆĽŕĆâ¤Î /usr/share/examples/isdn/ ĽÇĽŁĽěĽŻĽČĽę¤Ţ¤ż¤Ď isdn4bsd ¤ÎĽŚĽ§ĽÖĽľĽ¤ĽČ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤˝¤ł¤Ë¤ĎĽŇĽóĽČ¤äŔľ¸íÉ˝¤ä isdn4bsd ĽĎĽóĽÉĽÖĽĂĽŻ¤Î¤č¤Ś¤ĘĄ˘ ¤ľ¤é¤ËÂż¤Ż¤Îʸ˝ń¤ËÂФš¤ëĽÝĽ¤ĽóĽż¤Ź¤˘¤ę¤Ţ¤šĄŁ °Ű¤Ę¤ë ISDN Ľ×ĽíĽČĽłĽë¤äĄ˘¸˝şßÂĐąţ¤ľ¤ě¤Ć¤¤¤Ę¤¤ ISDN PC ĽŤĄźĽÉ¤ËÂĐąţ¤š¤ë¤ł¤Č¤äĄ˘¤˝¤Îž isdn4bsd ¤ňłČÄĽ¤š¤ë¤ł¤Č¤Ëś˝Ě٤ʤ˘¤ë¤Ę¤éĄ˘&a.hm; ¤ËϢÍí¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ isdn4bsd ¤ÎĽ¤ĽóĽšĽČĄźĽëĄ˘ŔßÄꥢ ¤˝¤ˇ¤ĆĽČĽéĽÖĽëĽˇĽĺĄźĽĆĽŁĽóĽ°¤Ë´Ř¤ˇ¤ĆźÁĚ䤏¤˘¤ě¤Đ &a.isdn.name; ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤ŹÍřÍѲÄÇ˝¤Ç¤šĄŁ ISDN ĽżĄźĽßĽĘĽëĽ˘ĽŔĽ×Ľż ĽżĄźĽßĽĘĽëĽ˘ĽŔĽ×Ľż (TA) ¤Ď ISDN ¤ÇĄ˘ ÄĚžď¤ÎĹĹĎĂŔţ¤Ë¤Ş¤ą¤ëĽâĽÇĽŕ¤ËÁęĹö¤š¤ë¤â¤Î¤Ç¤šĄŁ ĽâĽÇĽŕ ¤Ű¤Č¤ó¤É¤Î TA ¤ĎĄ˘É¸˝ŕ¤ÎĽŘĽ¤Ľş AT ĽłĽŢĽóĽÉĽťĽĂĽČ¤ňťČÍѤˇ¤Ć¤¤¤ë¤Î¤ÇĄ˘ Ăą¤ËĽâĽÇĽŕ¤ČĂÖ¤­´š¤¨¤ĆťČ¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ TA ¤ĎĄ˘´đËÜĹŞ¤Ë¤ĎĽâĽÇĽŕ¤ČĆą¤¸¤č¤Ś¤Ëưşî¤ˇ¤Ţ¤š¤ŹĄ˘ ŔÜÂłĘýËĄ¤Ď°Ű¤Ę¤ęĄ˘ÄĚżŽÂŽĹ٤â¸Ĺ¤¤ĽâĽÇĽŕ¤č¤ę¤Ď¤ë¤Ť¤ËÂŽ¤Ż¤Ę¤ę¤Ţ¤šĄŁ PPP ¤ÎŔßÄę¤ňĄ˘ ĽâĽÇĽŕ¤Îžěšç¤ČĆą¤¸¤č¤Ś¤ËšÔ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Ćä˼ˇĽęĽ˘ĽëÂŽĹ٤ňťČÍѤǤ­¤ëşÇšâÂŽĹ٤ËŔßÄꤚ¤ë¤Î¤ňËş¤ě¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ PPP Ľ×ĽíĽĐĽ¤ĽŔ¤Ř¤ÎŔÜÂł¤Ë TA ¤ňťČÍѤš¤ëşÇÂç¤ÎĽáĽęĽĂĽČ¤ĎĄ˘Ć°ĹŞ PPP ¤ňšÔ¤¨¤ë¤ł¤Č¤Ç¤šĄŁ şÇśá IP Ľ˘ĽÉĽěĽšśő´Ö¤Ź¤Ţ¤š¤Ţ¤šÉÔ­¤ˇ¤Ć¤­¤Ć¤¤¤ë¤ż¤áĄ˘ ¤Ű¤Č¤ó¤É¤ÎĽ×ĽíĽĐĽ¤ĽŔ¤ĎĄ˘ ¸ÇÄę IP Ľ˘ĽÉĽěĽš¤ňłä¤ęĹö¤Ć¤Ę¤¤¤č¤Ś¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤šĄŁ ¤Ű¤Č¤ó¤É¤ÎĽšĽżĽóĽÉĽ˘ĽíĄźĽóĽëĄźĽż¤ĎĄ˘Ć°ĹŞ IP Ľ˘ĽÉĽěĽšłä¤ęĹö¤Ć¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤ť¤óĄŁ ĚőĂí şÇśá¤Î ISDN ĽëĄźĽż¤Ç¤Ď IP Ľ˘ĽÉĽěĽš¤ÎưŪłä¤ęĹö¤Ć¤ËÂĐąţ¤ˇ¤Ć¤¤¤ë¤â¤Î¤âÂż¤¤¤č¤Ś¤Ç¤šĄŁ ¤ż¤Ŕ¤ˇŔŠ¸Â¤Ź¤˘¤ëžěšç¤â¤˘¤ę¤Ţ¤š¤Î¤ÇĄ˘ žÜ¤ˇ¤Ż¤ĎĽáĄźĽŤ¤ËĚ䤤šç¤ď¤ť¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ TA ¤ňťČÍѤˇ¤żžěšç¤ÎľĄÇ˝¤äŔÜÂł¤Î°ÂÄęŔ­¤ĎĄ˘ťČÍѤˇ¤Ć¤¤¤ë PPP ĽÇĄźĽâĽó¤Ë´°Á´¤Ë°Í¸¤ˇ¤Ţ¤šĄŁ¤˝¤Î¤ż¤áĄ˘FreeBSD ¤Ç PPP ¤ÎŔßÄꤏ´°Îť¤ˇ¤Ć¤¤¤ě¤ĐĄ˘ťČÍѤˇ¤Ć¤¤¤ë´ű¸¤ÎĽâĽÇĽŕ¤ň ISDN ¤Î TA ¤Ë´ĘĂą¤ËĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ¤ż¤Ŕ¤ˇĄ˘¤˝¤ě¤Ţ¤Ç¤Î PPP ¤ÎĽ×ĽíĽ°ĽéĽŕ¤ËĚäÂꤏ¤˘¤Ă¤żžěšçĄ˘¤˝¤ÎĚäÂę¤Ď TA ¤ËĂÖ¤­´š¤¨¤Ć¤â¤˝¤Î¤Ţ¤ŢťÄ¤ę¤Ţ¤šĄŁ şÇšâ¤Î°ÂÄęŔ­¤ňľá¤á¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘ ĽćĄźĽśĽéĽóĽÉ PPP ¤Ç¤Ď¤Ę¤ŻĄ˘ĽŤĄźĽÍĽë PPP¤ňťČÍѤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ °Ę˛ź¤Î TA ¤ĎĄ˘FreeBSD ¤ÇưşîłÎǧ¤ş¤ß¤Ç¤šĄŁ Motorola BitSurfer ¤Ş¤č¤Ó Bitsurfer Pro Adtran ž¤Î TA ¤â¤Ű¤Č¤ó¤É¤Îžěšç¤Ś¤Ţ¤ŻĆ°şî¤š¤ë¤Ç¤ˇ¤ç¤ŚĄŁTA ¤ÎĽáĄźĽŤĄź¤Ç¤ĎĄ˘TA ¤Ź¤Ű¤Č¤ó¤É¤Îɸ˝ŕĽâĽÇĽŕ AT ĽłĽŢĽóĽÉĽťĽĂĽČ¤ňźő¤ąÉŐ¤ą¤ë¤č¤Ś¤Ë¤š¤ë¤č¤ŚĹŘÎϤˇ¤Ć¤¤¤ë¤č¤Ś¤Ç¤šĄŁ ł°Éô TA ¤ňťČ¤ŚşÝ¤ÎşÇÂç¤ÎĚäÂęĹŔ¤ĎĄ˘ ĽâĽÇĽŕ¤Îžěšç¤ČĆą¤¸¤ŻÎɤ¤ĽˇĽęĽ˘ĽëĽŤĄźĽÉ¤ŹÉŹÍפǤ˘¤ë¤Č¤¤¤Ś¤ł¤Č¤Ç¤šĄŁ ĽˇĽęĽ˘ĽëĽÇĽĐĽ¤Ľš¤ÎžÜşŮ¤ČĄ˘ ČóĆą´üĽˇĽęĽ˘ĽëĽÝĄźĽČ¤ČĆą´üĽˇĽęĽ˘ĽëĽÝĄźĽČ¤Îşš¤ňÍý˛ň¤š¤ë¤Ë¤ĎĄ˘FreeBSD ĽˇĽęĽ˘ĽëĽĎĄźĽÉĽŚĽ§Ľ˘ĽÁĽĺĄźĽČĽęĽ˘Ľë¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ɸ˝ŕ¤Î PC ĽˇĽęĽ˘ĽëĽÝĄźĽČ (ČóĆą´ü) ¤ËŔÜÂł¤ľ¤ě¤ż TA ¤Ď 128 Kbs ¤ÎŔÜÂł¤ňšÔ¤Ă¤Ć¤¤¤Ć¤âĄ˘şÇÂçÄĚżŽÂŽĹŮ¤Ź 115.2 Kbs ¤ËŔŠ¸Â¤ľ¤ě¤Ć¤ˇ¤Ţ¤¤¤Ţ¤šĄŁ128 Kbs ¤Î ISDN ¤ÎŔ­Ç˝¤ňşÇÂç¸Â¤ËŔ¸¤Ť¤š¤ż¤á¤Ë¤Ď TA ¤ňĆą´üĽˇĽęĽ˘ĽëĽŤĄźĽÉ¤ËŔÜÂł¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ Ć⢠TA ¤ňšŘĆţ¤š¤ě¤ĐĄ˘ Ćą´ü/ČóĆą´üĚäÂę¤ň˛óČň¤Ç¤­¤ë¤Č¤Ďť×¤ď¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁĆ⢠TA ¤Ë¤ĎĄ˘ Ăą¤Ëɸ˝ŕ PC ĽˇĽęĽ˘ĽëĽÝĄźĽČ¤ÎĽÁĽĂĽ×¤ŹĆ⢤ľ¤ě¤Ć¤¤¤ë¤Ŕ¤ą¤Ç¤šĄŁ Ć⢠TA ¤ÎÍřĹŔ¤Č¤¤¤¨¤ĐĄ˘ ĽˇĽęĽ˘ĽëĽąĄźĽÖĽë¤ňÇă¤ď¤Ę¤Ż¤Ć¤¤¤¤¤Č¤¤¤Ś¤ł¤Č¤ČĄ˘ ĹŸťĽłĽóĽťĽóĽČ¤Ź°ě¤ÄžŻ¤Ę¤Ż¤ĆşŃ¤ŕ¤Č¤¤¤Ś¤ł¤Č¤Ż¤é¤¤¤Ç¤ˇ¤ç¤ŚĄŁ Ćą´üĽŤĄźĽÉ¤Č TA ¤ÎÁȚ礝¤Ç¤âĄ˘ĽšĽżĽóĽÉĽ˘ĽíĽó¤ÎĽëĄźĽż¤ČĆąÄřĹ٤ÎÂŽĹ٤ϳÎĘݤǤ­¤Ţ¤šĄŁ ¤ľ¤é¤ËĄ˘386 ¤Î FreeBSD ĽŢĽˇĽó¤ČÁȚ礝¤ë¤ČĄ˘ ¤č¤ę˝ŔĆđ¤ĘŔßÄꤏ˛ÄÇ˝¤Ç¤šĄŁ Ćą´üĽŤĄźĽÉ/TA ¤ňÁޤ֤ŤĄ˘ĽšĽżĽóĽÉĽ˘ĽíĽóĽëĄźĽż¤ňÁޤ֤Ť¤ĎĄ˘ ¿ʏ¤Ë˝ĄśľĹޤĘĚäÂę¤Ç¤šĄŁ ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤Ç¤â¤¤¤Ż¤Ä¤ŤľÄĎŔ¤Ź¤˘¤ę¤Ţ¤ˇ¤żĄŁľÄĎŔ¤ÎÁ´ÍƤˤĤ¤¤Ć¤ĎĄ˘ Ľ˘ĄźĽŤĽ¤ĽÖ ¤ň¸Ąş÷¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽšĽżĽóĽÉĽ˘ĽíĽó ISDN ĽÖĽęĽĂĽ¸/ĽëĄźĽż ISDN ĽšĽżĽóĽÉĽ˘ĽíĽó ĽÖĽęĽĂĽ¸/ĽëĄźĽż ISDN ĽÖĽęĽĂĽ¸¤˘¤ë¤¤¤ĎĽëĄźĽż¤ĎĄ˘ FreeBSD ¤˘¤ë¤¤¤Ďž¤Î OS ¤ËĆĂÍ­¤Î¤â¤Î¤Ç¤Ďł§Ěܤ˘¤ę¤Ţ¤ť¤óĄŁ ĽëĄźĽĆĽŁĽóĽ°¤äĽÖĽęĽĂĽ¸ĽóĽ°ľť˝Ń¤Ë´Ř¤š¤ëžÜşŮ¤ĎĄ˘ ĽÍĽĂĽČĽďĄźĽŻ¤Îť˛šÍ˝ń¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎŔá¤Ç¤ĎĄ˘ ĽëĄźĽż¤ČĽÖĽęĽĂĽ¸¤Î¤É¤Á¤é¤Ç¤â¤˘¤Ć¤Ď¤Ţ¤ë¤č¤Ś¤Ëľ­˝Ň¤ˇ¤Ţ¤šĄŁ ĽíĄźĽ¨ĽóĽÉ ISDN ĽëĄźĽż/ĽÖĽęĽĂĽ¸Ŕ˝Éʤϥ˘ ˛ÁłĘ¤Ź˛ź¤Ź¤Ă¤Ć¤­¤Ć¤¤¤ë¤ł¤Č¤â¤˘¤ęĄ˘ ¤č¤ęš­¤ŻÁŞÂň¤ľ¤ě¤ë¤č¤Ś¤Ë¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁISDN ĽëĄźĽż¤ĎĄ˘ ĽíĄźĽŤĽëĽ¤ĄźĽľĽÍĽĂĽČĽÍĽĂĽČĽďĄźĽŻ¤ËÄžŔÜŔÜÂł¤ˇĄ˘ źŤżČ¤Çž¤ÎĽÖĽęĽĂĽ¸/ĽëĄźĽż¤Č¤ÎŔÜÂł¤ňŔŠ¸ć¤š¤ëžŽ¤ľ¤ĘȢ¤Ç¤šĄŁPPP ¤äž¤Îš­¤ŻťČÍѤľ¤ě¤Ć¤¤¤ëĽ×ĽíĽČĽłĽë¤ň¤Ä¤Ť¤Ă¤ĆÄĚżŽ¤š¤ë¤ż¤á¤ÎĽ˝ĽŐĽČĽŚĽ§Ľ˘¤ŹÁȤߚţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽëĄźĽż¤ĎĄ˘´°Á´¤ĘĆą´ü ISDN ŔÜÂł¤ňťČÍѤš¤ë¤ż¤áĄ˘ÄĚžď¤Î TA ¤ČČćłÓ¤ˇ¤ĆĽšĽëĄźĽ×ĽĂĽČ¤ŹÂçÉý¤Ë¸ţžĺ¤ˇ¤Ţ¤šĄŁ ISDN ĽëĄźĽż/ĽÖĽęĽĂĽ¸¤ňťČÍѤš¤ëžěšç¤ÎşÇÂç¤ÎĚäÂęĹŔ¤ĎĄ˘ łĆĽáĄźĽŤĄź¤ÎŔ˝ÉĘ´Ö¤ËÁęŔ­¤ÎĚäÂꤏ¤Ţ¤Ŕ¸şß¤š¤ë¤ł¤Č¤Ç¤šĄŁ Ľ¤ĽóĽżĄźĽÍĽĂĽČĽ×ĽíĽĐĽ¤ĽŔ¤Č¤ÎŔÜÂł¤ňšÍ¤¨¤Ć¤¤¤ëžěšç¤Ë¤ĎĄ˘ Ľ×ĽíĽĐĽ¤ĽŔ¤ČÁęĂ̤š¤ë¤ł¤Č¤ň¤Ş´Ť¤á¤ˇ¤Ţ¤šĄŁ ťöĚł˝ę¤Î LAN ¤Č˛ČÄí¤Î LAN ¤Î´Ö¤Ę¤ÉĄ˘Ćó¤Ä¤Î LAN ĽťĽ°ĽáĽóĽČ¤Î´Ö¤ňŔÜÂł¤ˇ¤č¤Ś¤Č¤ˇ¤Ć¤¤¤ëžěšç¤ĎĄ˘ ¤ł¤ě¤Ď¤â¤Ă¤Č¤âĽáĽóĽĆĽĘĽóĽš¤Ź´ĘĂą¤ÇĄ˘°Â¤Ż¤˘¤Ź¤ë˛ňˇčĘýËĄ¤Ç¤šĄŁ ŔÜÂł¤ÎΌ¤ÎľĄşŕ¤ňšŘĆţ¤š¤ë¤Î¤ÇĄ˘ ĽęĽóĽŻ¤Ź¤Ś¤Ţ¤Ż¤¤¤Ż¤Ç¤˘¤í¤Ś¤ł¤Č¤ňĘݞڤǤ­¤Ţ¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘ ˛ČÄí¤ÎĽłĽóĽÔĽĺĄźĽż¤äťŮĹš¤ÎĽÍĽĂĽČĽďĄźĽŻ¤ňËܟҤμͼüȼ寧ĽŻ¤ËŔÜÂł¤š¤ë¤ż¤á¤Ë¤ĎĄ˘ °Ę˛ź¤Î¤č¤Ś¤ĘŔßÄꤏťČÍѤǤ­¤Ţ¤šĄŁ ťŮĹš¤Ţ¤ż¤Ď˛ČÄí¤ÎĽÍĽĂĽČĽďĄźĽŻ 10 base 2 ĽÍĽĂĽČĽďĄźĽŻ¤Ď 10 Base 2 Ľ¤ĄźĽľĽÍĽĂĽČ (thinnet) ¤ÎĽĐĽšˇżĽČĽÝĽíĽ¸¤ňÍѤ¤¤Ć¤¤¤Ţ¤šĄŁĽëĄźĽż¤ČĽÍĽĂĽČĽďĄźĽŻ¤Î´Ö¤ĎĄ˘ ÉŹÍפ˹ţ¤¸¤Ć AUI/10BT ĽČĽéĽóĽˇĄźĽĐ¤ňťČ¤Ă¤ĆŔÜÂł¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ---Sun ĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó | ---FreeBSD box | ---Windows 95 | ĽšĽżĽóĽÉĽ˘ĽíĽóĽëĄźĽż | ISDN BRI ĽéĽ¤Ľó 10 Base 2 Ľ¤ĄźĽľĽÍĽĂĽČ ˛ČÄí/ťŮĹš¤Ç°ěÂ椡¤ŤĽłĽóĽÔĽĺĄźĽż¤ňťČÍѤˇ¤Ę¤¤¤Î¤Ç¤˘¤ě¤ĐĄ˘ ĽŻĽíĽš¤ÎĽÄĽ¤ĽšĽČĽÚĽ˘ĽąĄźĽÖĽë¤ňťČÍѤˇ¤ĆĄ˘ ÄžŔÜĽšĽżĽóĽÉĽ˘ĽíĽóĽëĄźĽż¤ËŔÜÂł¤š¤ë¤ł¤Č¤â˛ÄÇ˝¤Ç¤šĄŁ ËÜźŇ LAN ¤äž¤Î LAN ĽÍĽĂĽČĽďĄźĽŻ¤Ď 10 base T Ľ¤ĄźĽľĽÍĽĂĽČ (Twisted Pair) ¤ÎĽšĽżĄźˇżĽČĽÝĽíĽ¸¤ňÍѤ¤¤Ć¤¤¤Ţ¤šĄŁ -------Novell ĽľĄźĽĐ | | |ĽĎ ---Sun | | | ---FreeBSD | | |ĽÖ ---Windows 95 | | |___---ĽšĽżĽóĽÉĽ˘ĽíĄźĽóĽëĄźĽż | ISDN BRI ĽéĽ¤Ľó ISDN ĽÍĽĂĽČĽďĄźĽŻĽŔĽ¤Ľ˘Ľ°ĽéĽŕ ¤Ű¤Č¤ó¤É¤ÎĽëĄźĽż/ĽÖĽęĽĂĽ¸¤ÎÂ礭¤ĘÍřĹŔ¤ĎĄ˘ ĘĚĄš¤ÎĆó¤Ä¤ÎĽľĽ¤ĽČ¤ËÂФˇ¤ĆĄ˘Ćąťţ ¤Ë¤˝¤ě¤ž¤ěĆČΊ¤ˇ¤żĆó¤Ä¤Î PPP ŔÜÂł¤Ź˛ÄÇ˝¤Ç¤˘¤ë¤ł¤Č¤Ç¤šĄŁ ¤ł¤ě¤ĎĄ˘ĽˇĽęĽ˘ĽëĽÝĄźĽČ¤ň 2 ¤Ä¤â¤Ă¤żĆĂÄę¤Î (ÄĚžď¤Ďšâ˛Á¤Ę) ĽâĽÇĽë¤ň˝ü¤¤¤ĆĄ˘ÄĚžď¤Î TA ¤Ç¤ĎÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤ť¤óĄŁ ĽÁĽăĽÍĽëĽÜĽóĽÇĽŁĽóĽ°¤ä MPP ¤Ę¤É¤ČşŽĆऎ¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ż¤Č¤¨¤ĐĄ˘ťöĚł˝ę¤ÇŔěÍŃŔţ ISDN ŔÜÂł¤ňťČÍѤˇ¤Ć¤¤¤ĆĄ˘ Ę̤ΠISDN ˛óŔţ¤ňšŘĆţ¤ˇ¤ż¤Ż¤Ę¤¤¤Č¤­¤Ë¤ĎÂçĘŃĘŘÍř¤ĘľĄÇ˝¤Ç¤šĄŁ¤ł¤ÎžěšçĄ˘ ťöĚł˝ę¤ÎĽëĄźĽż¤ĎĄ˘Ľ¤ĽóĽżĄźĽÍĽĂĽČ¤ËŔÜÂł¤š¤ë¤ż¤á¤Î°ě¤Ä¤ÎŔěÍŃŔţ B ĽÁĽăĽÍĽëŔÜÂł (64 Kbs) ¤ň´ÉÍý¤ˇĄ˘ Ę̤ΠB ĽÁĽăĽÍĽë¤ňž¤ÎĽÇĄźĽżŔÜÂł¤ËťČÍѤǤ­¤Ţ¤šĄŁ 2 ¤ÄĚܤΠB ĽÁĽăĽÍĽë¤Ďž¤Îžě˝ę¤Č¤ÎĽŔĽ¤Ľ˘ĽëĽ¤ĽóĄ˘ ĽŔĽ¤Ľ˘ĽëĽ˘ĽŚĽČ¤ËťČÍѤˇ¤ż¤ęĄ˘ĽĐĽóĽÉÉý¤ňÁý¤ä¤š¤ż¤á¤ËĄ˘ 1 ¤ÄĚܤΠB ĽÁĽăĽÍĽë¤ČưŪ¤Ëˇëšç¤š¤ë¤ł¤Č (MPP¤Ę¤É) ¤Ź¤Ç¤­¤Ţ¤šĄŁ IPX/SPX ¤Ţ¤żĽ¤ĄźĽľĽÍĽĂĽČĽÖĽęĽĂĽ¸¤ĎĄ˘IP ĽŃĽąĽĂĽČ°Ęł°¤âĂćˇŃ¤Ç¤­¤Ţ¤šĄŁ IPX/SPX ¤Ę¤ÉĄ˘ťČÍѤš¤ë¤š¤Ů¤Ć¤ÎĽ×ĽíĽČĽłĽë¤ňÁ÷¤ë¤ł¤Č¤Ź˛ÄÇ˝¤Ç¤šĄŁ Bill Swingle ¸śşî: Eric Ogren ÄÉľ­: Udo Erdelhoff NIS/YP NIS/YP ¤Č¤Ď? NIS Solaris HP-UX AIX Linux NetBSD OpenBSD NIS ¤Č¤Ď Network Information Services ¤ÎÎŹ¤Ç Sun Microsystems ¤Ë¤č¤Ă¤Ć &unix; ¤Î (¤â¤Č¤â¤Č¤Ď &sunos; ¤Î) ˝¸Ăć´ÉÍý¤Î¤ż¤á¤ËłŤČݤľ¤ě¤Ţ¤ˇ¤żĄŁ¸˝şß¤Ç¤ĎťöźÂžĺ¤ÎśČłŚÉ¸˝ŕ¤Ë¤Ę¤Ă¤Ć¤Ş¤ęĄ˘ źçÍ×¤Ę &unix; ĽéĽ¤ĽŻĽˇĽšĽĆĽŕ (&solaris;, HP-UX, &aix;, Linux, NetBSD, OpenBSD, FreeBSDĄ˘ĹůĄš) ¤Ď¤š¤Ů¤Ć¤ł¤ě¤ňĽľĽÝĄźĽČ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ Ľ¤Ľ¨ĽíĄźĽÚĄźĽ¸NIS NIS ¤Ď¸ľĄšĄ˘Ľ¤Ľ¨ĽíĄźĽÚĄźĽ¸¤Č¤¤¤Ă¤Ć¤¤¤Ţ¤ˇ¤ż¤ŹĄ˘ žŚÉ¸ĚäÂꤍ¤é Sun ¤Ď¤˝¤ÎĚžÁ°¤ňĘѤ¨¤Ţ¤ˇ¤żĄŁ ¸Ĺ¤¤ÍѸě (¤Ş¤č¤Ó yp) ¤Ď¤Ţ¤Ŕ¤č¤Ż¸Ť¤é¤ěĄ˘ťČÍѤľ¤ě¤Ć¤¤¤Ţ¤šĄŁ NIS ĽÉĽáĽ¤Ľó NIS ¤Ď RPC ¤ňťČ¤Ă¤żĽŻĽéĽ¤Ľ˘ĽóĽČ/ĽľĄźĽĐĽˇĽšĽĆĽŕ¤Ç¤šĄŁ ¤ł¤ě¤ňťČ¤Ś¤Č NIS ĽÉĽáĽ¤ĽóĆâ¤ÎĽŢĽˇĽó´Ö¤ÇĄ˘ śŚÄ̤ÎŔßÄęĽŐĽĄĽ¤Ľë¤ňśŚÍ­¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤Ţ¤ż NIS ¤ňťČ¤Ś¤ł¤Č¤ÇĽˇĽšĽĆĽŕ´ÉÍýźÔ¤ĎşÇžŽ¸Â¤ÎŔßÄęĽÇĄźĽż¤Ç NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ňΊ¤Ážĺ¤˛¤ë¤ł¤Č¤Ź¤Ç¤­Ą˘ 1 Ľö˝ę¤Ť¤éŔßÄęĽÇĄźĽż¤ÎÄɲå˘şď˝üĄ˘ĘŃšš¤Ź˛ÄÇ˝¤Ç¤šĄŁ Windows NT NIS ¤Ď &windowsnt; ¤ÎĽÉĽáĽ¤ĽóĽˇĽšĽĆĽŕ¤Ëť÷¤Ć¤¤¤Ţ¤šĄŁ ĆâÉô¤ÎźÂÁő¤Ďť÷¤Ć¤âť÷¤Ä¤Ť¤Ę¤¤¤â¤Î¤Ç¤š¤ŹĄ˘ ´đËÜĹŞ¤ĘľĄÇ˝¤ňÂĐČ椚¤ë¤ł¤Č¤Ď¤Ç¤­¤Ţ¤šĄŁ ĂÎ¤Ă¤Ć¤Ş¤Ż¤Ů¤­ÍѸě / Ľ×ĽíĽťĽš NIS ĽľĄźĽĐ¤ÎΊ¤Ážĺ¤˛¤ä NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎŔßÄę¤Ę¤ÉĄ˘ NIS ¤ň FreeBSD ¤ËĆłĆţ¤š¤ë¤Ë¤˘¤ż¤Ă¤ĆĄ˘ Ěܤˤš¤ë¤Ç¤˘¤í¤ŚÍѸě¤ä˝ĹÍפʼ楟ĽśĽ×ĽíĽťĽš¤Ź¤¤¤Ż¤Ä¤Ť¤˘¤ę¤Ţ¤šĄŁ portmap ÍѸě ŔâĚŔ NIS ĽÉĽáĽ¤ĽóĚž NIS ĽŢĽšĽżĽľĄźĽĐ¤Č¤˝¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČ¤š¤Ů¤Ć (ĽšĽěĄźĽÖĽľĄźĽĐ¤ň´Ţ¤ŕ) ¤Ë¤Ď NIS ĽÉĽáĽ¤ĽóĚž¤Ź¤Ä¤¤¤Ć¤¤¤Ţ¤šĄŁ &windowsnt; ĽÉĽáĽ¤ĽóĚž¤ČĆąÍͤ˥˘NIS ĽÉĽáĽ¤ĽóĚž¤Ď DNS ¤Č¤Ď˛ż¤Î´Řˇ¸¤â¤˘¤ę¤Ţ¤ť¤óĄŁ portmap RPC (Remote Procedure Call, NIS ¤ÇťČÍѤľ¤ě¤ëĽÍĽĂĽČĽďĄźĽŻĽ×ĽíĽČĽłĽë) ¤ňÍřÍѤš¤ë¤ż¤á¤ËźÂšÔ¤ˇ¤Ć¤Ş¤Ť¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ portmap ¤ŹĆ°şî¤ˇ¤Ć¤¤¤Ę¤ą¤ě¤ĐĄ˘ NIS ĽľĄźĽĐ¤ňľŻĆ°¤š¤ë¤ł¤Č¤âĄ˘ NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Č¤ˇ¤Ćưşî¤ľ¤ť¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤ť¤óĄŁ ypbind NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ň NIS ĽľĄźĽĐ¤Ë ˇë¤Ó¤Ä¤ą ¤Ţ¤šĄŁ ¤ł¤ě¤Ď NIS ĽÉĽáĽ¤ĽóĚž¤ňĽˇĽšĽĆĽŕ¤Ť¤éźčĆŔ¤ˇ RPC ¤ňÍѤ¤¤ĆĽľĄźĽĐ¤ËŔÜÂł¤ˇ¤Ţ¤šĄŁypbind ¤Ď NIS ´Äś­¤Ë¤Ş¤ą¤ëĽŻĽéĽ¤Ľ˘ĽóĽČ¤ČĽľĄźĽĐ´Ö¤ÎÄĚżŽ¤ÎĂćżő¤Ç¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČĽŢĽˇĽó¤Î ypbind ¤ŹÄäťß¤ˇ¤żžěšç¤ĎĄ˘NIS ĽľĄźĽĐ¤ŘĽ˘ĽŻĽťĽš¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ę¤Ż¤Ę¤ę¤Ţ¤šĄŁ ypserv ¤Ď NIS ĽľĄźĽĐ¤Ç¤Î¤ßźÂšÔ¤ľ¤ě¤ë¤Ů¤­¤â¤Î¤ÇĄ˘ NIS ĽľĄźĽĐĽ×ĽíĽťĽš¤˝¤Î¤â¤Î¤Ç¤šĄŁ&man.ypserv.8; ¤ŹÄäťß¤ˇ¤żžěšçĄ˘ĽľĄźĽĐ¤Ď¤â¤Ď¤ä NIS ĽęĽŻĽ¨ĽšĽČ¤ËąţĹú¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ę¤Ż¤Ę¤ë¤Ç¤ˇ¤ç¤Ś (¤Ç¤­¤ě¤ĐĄ˘¸ĺ¤ň°ú¤­ˇŃ¤°ĽšĽěĄźĽÖĽľĄźĽĐ¤Ź¤˘¤ë¤Č¤č¤¤¤Ç¤ˇ¤ç¤Ś)ĄŁ şŁ¤Ţ¤ÇťČ¤Ă¤Ć¤¤¤żĽľĄźĽĐ¤ŹľĄÇ˝¤ňÄäťß¤ˇ¤ż¤Č¤­Ą˘ Ę̤μľĄźĽĐ¤ËşĆŔÜÂł¤ˇ¤ËšÔ¤Ť¤Ę¤¤ NIS ¤ÎźÂÁő¤â¤¤¤Ż¤Ä¤Ť¤˘¤ę¤Ţ¤š (FreeBSD ¤Î¤â¤Î¤Ď°ă¤¤¤Ţ¤š)ĄŁ ¤˝¤Î¤č¤Ś¤Ęžěšç¤ËÉüľ˘¤š¤ë¤ż¤á¤ÎÍŁ°ě¤ÎĘýËĄ¤ĎĄ˘ ĽľĄźĽĐĽ×ĽíĽťĽš (¤˘¤ë¤¤¤ĎĽľĄźĽĐÁ´ÂÎ)Ą˘¤â¤ˇ¤Ż¤ĎĽŻĽéĽ¤Ľ˘ĽóĽČ¤Î ypbind Ľ×ĽíĽťĽš¤ňşĆĽšĽżĄźĽČ¤š¤ë¤ł¤Č¤Ç¤šĄŁ rpc.yppasswdd NIS ĽŢĽšĽżĄźĽľĄźĽĐ¤Çư¤Ť¤š¤Ů¤­Ą˘ ¤â¤Ś°ě¤Ä¤ÎĽ×ĽíĽťĽš¤Ç¤šĄŁ¤ł¤ě¤Ď NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ź NIS ĽŃĽšĽďĄźĽÉ¤ňĘŃšš¤š¤ë¤ł¤Č¤ň˛ÄÇ˝¤Ë¤š¤ëĽÇĄźĽâĽó¤Ç¤šĄŁ ¤ł¤ÎĽÇĄźĽâĽó¤ŹĆ°şî¤ˇ¤Ć¤¤¤Ę¤¤¤Č¤­¤ĎĄ˘ ĽćĄźĽś¤Ď NIS ĽŢĽšĽżĽľĄźĽĐ¤ËĽíĽ°Ľ¤Ľó¤ˇĄ˘ ¤˝¤ł¤ÇĽŃĽšĽďĄźĽÉ¤ňĘŃšš¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ưşî¤Î¤ˇ¤Ż¤ß NIS ´Äś­¤Ë¤˘¤ëĽŰĽšĽČ¤ĎĄ˘ ĽŢĽšĽżĄźĽľĄźĽĐĄ˘ĽšĽěĄźĽÖĽľĄźĽĐĄ˘ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Î 3 źďÎŕ¤ËĘŹÎा¤ě¤Ţ¤šĄŁ ĽľĄźĽĐ¤ĎĄ˘ĽŰĽšĽČ¤ÎŔßÄęžđĘó¤ÎĂćż´ĹŞ¤ĘžđĘółĘÇź¸Ë¤ÎĚňłä¤ň¤ˇ¤Ţ¤šĄŁ ĽŢĽšĽżĄźĽľĄźĽĐ¤Ď¸ľ¤Č¤Ę¤ëżŽÍę¤Ç¤­¤ëžđĘó¤ňĘÝťý¤ˇĄ˘ ĽšĽěĄźĽÖĽľĄźĽĐ¤ĎžéÄšŔ­¤ňłÎĘݤš¤ë¤ż¤á¤ł¤ÎžđĘó¤ňĽßĽéĄź¤ˇ¤Ţ¤šĄŁ ¤˝¤ˇ¤ĆĽŻĽéĽ¤Ľ˘ĽóĽČ¤ĎĄ˘ĽľĄźĽĐ¤Ť¤éžđĘó¤ÎÄ󜥤ňźő¤ą¤Ćưşî¤ˇ¤Ţ¤šĄŁ ¤ł¤ÎĘýËĄ¤ňÍѤ¤¤ë¤ł¤Č¤ÇĄ˘żôÂż¤Ż¤ÎĽŐĽĄĽ¤Ľë¤Ë¤˘¤ëžđĘ󤏜ŚÍ­¤Ç¤­¤Ţ¤šĄŁ ¤č¤Ż NIS ¤ÇśŚÍ­¤ľ¤ě¤ë¤Î¤ĎĄ˘ master.passwd ¤ä group, hosts ¤Č¤¤¤Ă¤żĽŐĽĄĽ¤Ľë¤Ç¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČžĺ¤ÎĽ×ĽíĽťĽš¤ŹĄ˘ ÄĚžď¤Ę¤éĽíĄźĽŤĽë¤ÎĽŐĽĄĽ¤Ľë¤Ë¤˘¤ëžđĘó¤ňÉŹÍפȤš¤ë¤Č¤­¤ĎĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ĎÂĺ¤ď¤ę¤ËŔÜÂł¤ˇ¤Ć¤¤¤ë NIS ĽľĄźĽĐ¤ËĚ䤤šç¤ď¤ť¤ňšÔ¤¤¤Ţ¤šĄŁ ĽŢĽˇĽó¤ÎĘŹÎŕ - - NIS - ĽŢĽšĽżĽľĄźĽĐ - - - NIS ĽŢĽšĽżĄźĽľĄźĽĐĄŁ + NIS ĽŢĽšĽżĄźĽľĄźĽĐNISĽŢĽšĽżĽľĄźĽĐĄŁ ¤ł¤ÎĽľĄźĽĐ¤Ď &windowsnt; ¤Ç¸Ŕ¤Ś¤Č¤ł¤í¤ÎĽ×ĽéĽ¤ĽŢĽęĽÉĽáĽ¤ĽóĽłĽóĽČĽíĄźĽé¤Ë¤˘¤ż¤ę¤Ţ¤šĄŁ ¤š¤Ů¤Ć¤Î NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÇÍřÍѤľ¤ě¤ëĽŐĽĄĽ¤Ľë¤ňĘݟ餡¤Ţ¤šĄŁ passwd ¤ä groupĄ˘ ¤˝¤Îž NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Źť˛žČ¤š¤ëĽŐĽĄĽ¤Ľë¤ĎĄ˘ ĽŢĽšĽżĄźĽľĄźĽĐ¤Ë¤˘¤ę¤Ţ¤šĄŁ °ě¤Ä¤ÎĽŢĽˇĽó¤Ź°ě¤Ä°Ęžĺ¤Î NIS ĽÉĽáĽ¤Ľó¤ÎĽŢĽšĽżĄźĽľĄźĽĐ¤Ë¤Ę¤ë¤ł¤Č¤Ď˛ÄÇ˝¤Ç¤šĄŁ ¤ˇ¤Ť¤ˇĄ˘¤ł¤ł¤Ç¤ĎČćłÓĹŞžŽľŹĚϤΠNIS ´Äś­¤ňÂОݤȤˇ¤Ć¤¤¤ë¤ż¤áĄ˘ ¤˝¤Î¤č¤Ś¤Ęžěšç¤Ë¤Ä¤¤¤Ć¤Ď°ˇ¤¤¤Ţ¤ť¤óĄŁ - - NIS - ĽšĽěĄźĽÖĽľĄźĽĐ - - - NIS ĽšĽěĄźĽÖĽľĄźĽĐĄŁ + NIS ĽšĽěĄźĽÖĽľĄźĽĐNISĽšĽěĄźĽÖĽľĄźĽĐĄŁ &windowsnt; ¤ÎĽĐĽĂĽŻĽ˘ĽĂĽ×ĽÉĽáĽ¤ĽóĽłĽóĽČĽíĄźĽé¤Ëť÷¤ż¤â¤Î¤ÇĄ˘ NIS ĽšĽěĄźĽÖĽľĄźĽĐ¤Ď NIS ĽŢĽšĽżĄźĽľĄźĽĐ¤ÎĽÇĄźĽżĽŐĽĄĽ¤Ľë¤ÎĽłĽÔĄź¤ňĘÝťý¤ˇ¤Ţ¤šĄŁ NIS ĽšĽěĄźĽÖĽľĄźĽĐ¤Ď˝ĹÍפʴĜ­¤ÇÉŹÍפȤľ¤ě¤ëžéÄšŔ­¤ňÄ󜥤ˇĄ˘ ĽŢĽšĽżĄźĽľĄźĽĐ¤ÎÉé˛Ů¤ÎĽĐĽéĽóĽš¤ň¤Č¤ę¤Ţ¤šĄŁ NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ďžď¤ËşÇ˝é¤ËĽěĽšĽÝĽóĽš¤ňĘÖ¤ˇ¤żĽľĄźĽĐ¤ň NIS ĽľĄźĽĐ¤Č¤ˇ¤ĆŔÜÂł¤ˇ¤Ţ¤š¤ŹĄ˘ ¤ł¤ě¤Ë¤ĎĽšĽěĄźĽÖĽľĄźĽĐ¤â´Ţ¤Ţ¤ě¤Ţ¤šĄŁ - - NIS - ĽŻĽéĽ¤Ľ˘ĽóĽČ - - - NIS ĽŻĽéĽ¤Ľ˘ĽóĽČĄŁ + NIS ĽŻĽéĽ¤Ľ˘ĽóĽČNISĽŻĽéĽ¤Ľ˘ĽóĽČĄŁ NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ĎÂçÉôĘŹ¤Î &windowsnt; ĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤Î¤č¤Ś¤ËĄ˘ĽíĽ°ĽŞĽó¤ËşÝ¤ˇ¤Ć NIS ĽľĄźĽĐ (&windowsnt; ĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤Îžěšç¤Ď &windowsnt; ĽÉĽáĽ¤ĽóĽłĽóĽČĽíĄźĽé) ¤ËŔÜÂł¤ˇ¤ĆǧžÚ¤ˇ¤Ţ¤šĄŁ NIS/YP ¤ňťČ¤Ś ¤ł¤ÎŔá¤Ç¤Ď NIS ´Äś­¤ÎΊ¤Ážĺ¤˛Îă¤ňźč¤ęžĺ¤˛¤Ţ¤šĄŁ ¤ł¤ÎŔá¤Ç¤Ď¤˘¤Ę¤ż¤Ź FreeBSD 3.3 °Ęšß¤ňťČ¤Ă¤Ć¤¤¤ë¤â¤Î¤Č¤ˇ¤Ţ¤šĄŁ ¤ł¤ł¤ÇÍż¤¨¤é¤ě¤ëťŘź¨¤Ď ¤Ş¤˝¤é¤Ż FreeBSD ¤Î 3.0 °Ęšß¤Î¤É¤ÎĽĐĄźĽ¸ĽçĽó¤Ç¤âľĄÇ˝¤š¤ë¤Ç¤ˇ¤ç¤Ś¤ŹĄ˘ ¤˝¤ě¤ňĘÝžÚ¤š¤ë¤â¤Î¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ˇ×˛č¤ňΊ¤Ć¤ë ¤˘¤Ę¤ż¤ŹÂçłŘ¤ÎžŽ¤ľ¤Ę¸Śľćźź¤Î´ÉÍýżÍ¤Ç¤˘¤ë¤Č¤ˇ¤Ţ¤ˇ¤ç¤ŚĄŁ ¤ł¤Î¸Śľćźź¤Ď 15 Âć¤Î FreeBSD ĽŢĽˇĽó¤Ť¤é¤Ę¤Ă¤Ć¤¤¤ĆĄ˘ ¸˝şß¤Ď¤Ţ¤Ŕ˝¸Ăć´ÉÍý¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ ¤š¤Ę¤ď¤ÁĄ˘łĆĽŢĽˇĽó¤Ď /etc/passwd ¤Č /etc/master.passwd ¤ňłĆĄš¤Źťý¤Ă¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĽŐĽĄĽ¤Ľë¤Ďźęư¤Ç¤Ş¸ß¤¤¤ËĆą´ü¤ľ¤ť¤Ć¤¤¤Ţ¤šĄŁ ¤Ä¤Ţ¤ę¸˝ťţĹŔ¤Ç¤ĎĄ˘żˇ¤ˇ¤¤ĽćĄźĽś¤ň¤˘¤Ę¤ż¤ŹÄɲ䚤ë¤Č¤­Ą˘ adduser ¤ň 15 Ľö˝ę¤š¤Ů¤Ć¤ÇźÂšÔ¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ě¤ĎĚŔ¤é¤Ť¤ËĘѤ¨¤ëÉŹÍפʤ˘¤ë¤ż¤áĄ˘ ¤˘¤Ę¤ż¤Ď¤ł¤Î¤Ś¤Á 2 Âć¤ňĽľĄźĽĐ¤Ë¤ˇ¤Ć NIS ¤ňĆłĆţ¤š¤ë¤ł¤Č¤ňˇč¤á¤Ţ¤ˇ¤żĄŁ ¤˝¤Îˇë˛ĚĄ˘¸Śľćźź¤ÎŔßÄę¤Ď¤ł¤Î¤č¤Ś¤Ę¤â¤Î¤Ë¤Ę¤ę¤Ţ¤šĄŁ ĽŢĽˇĽó¤ÎĚžÁ° IP Ľ˘ĽÉĽěĽš Ěňłä ellington 10.0.0.2 NIS ĽŢĽšĽż coltrane 10.0.0.3 NIS ĽšĽěĄźĽÖ basie 10.0.0.4 śľ°÷ÍѤμ寧ĽŻĽšĽĆĄźĽˇĽçĽó bird 10.0.0.5 ĽŻĽéĽ¤Ľ˘ĽóĽČĽŢĽˇĽó cli[1-11] 10.0.0.[6-17] ¤˝¤Îž¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČĽŢĽˇĽó ¤â¤ˇ NIS ¤Ë¤č¤ëĽˇĽšĽĆĽŕ´ÉÍý¤ÎŔßÄę¤ňšÔ¤Ę¤Ś¤Î¤Ź˝é¤á¤Ć¤Ę¤éĄ˘ ¤É¤Î¤č¤Ś¤Ë¤ˇ¤ż¤¤¤Î¤ŤĄ˘ ¤Ň¤Č¤Č¤Ş¤ęşÇ¸ĺ¤Ţ¤ÇšÍ¤¨¤Ć¤ß¤ë¤ł¤Č¤ň¤Ş´Ť¤á¤ˇ¤Ţ¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻ¤ÎľŹĚϤˤč¤é¤şĄ˘ ¤¤¤Ż¤Ä¤Ťˇč¤á¤ë¤Ů¤­¤ł¤Č¤Ź¤˘¤ë¤Ť¤é¤Ç¤šĄŁ NIS ĽÉĽáĽ¤ĽóĚž¤ňˇč¤á¤ë NIS ĽÉĽáĽ¤ĽóĚž ¤ł¤ł¤Ç¤¤¤ŚĽÉĽáĽ¤ĽóĚž¤ĎĄ˘şŁ¤Ţ¤Ç¤˘¤Ę¤ż¤ŹťČ¤Ă¤Ć¤¤¤żĄ˘ ¤¤¤ď¤ć¤ë ĽÉĽáĽ¤ĽóĚž ¤Č¸Ć¤ó¤Ç¤¤¤ż¤â¤Î¤Č¤Ď°ă¤¤¤Ţ¤šĄŁ ŔľłÎ¤Ë¤Ď NIS ĽÉĽáĽ¤ĽóĚž ¤Č¸Ć¤Đ¤ě¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ŹĽľĄźĽĐ¤ËžđĘó¤ňÍ׾ᤚ¤ë¤Č¤­Ą˘ ¤˝¤ÎÍ׾á¤Ë¤ĎźŤĘʤŹÂ°¤š¤ë NIS ĽÉĽáĽ¤Ľó¤ÎĚžÁ°¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ě¤Ď 1 ¤Ä¤ÎĽÍĽĂĽČĽďĄźĽŻ¤ËĘŁżô¤ÎĽľĄźĽĐ¤Ź¤˘¤ëžěšç¤ËĄ˘ ¤É¤ÎĽľĄźĽĐ¤ŹÍ׾á¤ň˝čÍý¤š¤ě¤ĐÎɤ¤¤Ť¤ňˇč¤á¤ë¤ż¤á¤ËťČ¤ď¤ě¤Ţ¤šĄŁ NIS ĽÉĽáĽ¤ĽóĚž¤Č¤ĎĄ˘ ´ŘϢ¤Î¤˘¤ëĽŰĽšĽČ¤ňĽ°ĽëĄźĽ×˛˝¤š¤ë¤ż¤á¤ÎĚžÁ°¤Ç¤˘¤ëĄ˘ ¤ČšÍ¤¨¤ë¤ČÎɤ¤¤Ç¤ˇ¤ç¤ŚĄŁ ÁČżĽ¤Ë¤č¤Ă¤Ć¤ĎĽ¤ĽóĽżĄźĽÍĽĂĽČ¤ÎĽÉĽáĽ¤ĽóĚž¤ň NIS ĽÉĽáĽ¤ĽóĚž¤ËťČ¤Ă¤Ć¤¤¤ë¤Č¤ł¤í¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤ĎĽÍĽĂĽČĽďĄźĽŻ¤ÎĽČĽéĽÖĽë¤ňĽÇĽĐĽĂĽ°¤š¤ë¤Č¤­¤ËşŽÍđ¤Î¸ś°ř¤Č¤Ę¤ë¤ż¤áĄ˘ ¤Ş´Ť¤á¤Ç¤­¤Ţ¤ť¤óĄŁ NIS ĽÉĽáĽ¤ĽóĚž¤ĎĽÍĽĂĽČĽďĄźĽŻĆâ¤Ç°ě°Ő¤Ę¤ą¤ě¤Đ¤¤¤ą¤Ţ¤ť¤óĄŁ¤˝¤ˇ¤ĆĄ˘ ĽÉĽáĽ¤ĽóĚž¤ŹĽÉĽáĽ¤Ľó¤Ë´Ţ¤Ţ¤ě¤ëĽŢĽˇĽó¤ňÉ˝¤š¤č¤Ś¤Ę¤â¤Î¤Ç¤˘¤ě¤ĐĘŹ¤Ť¤ę°×¤¤¤Ç¤šĄŁ ¤ż¤Č¤¨¤Đ Acme źŇ¤ÎĽ˘ĄźĽČ (Art) ÉôĚç¤Ç¤˘¤ě¤Đ NIS ĽÉĽáĽ¤ĽóĚž¤ň acme-art ¤Č¤š¤ě¤ĐÎɤ¤¤Ç¤ˇ¤ç¤ŚĄŁ¤ł¤ÎÎă¤Ç¤Ď NIS ĽÉĽáĽ¤ĽóĚž¤Č¤ˇ¤Ć test-domain ¤ňťČÍѤˇ¤Ţ¤šĄŁ SunOS ¤ˇ¤Ť¤ˇ¤Ę¤Ź¤éĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤Ë¤č¤Ă¤Ć¤Ď (ĆĂ¤Ë &sunos;)Ą˘ NIS ĽÉĽáĽ¤ĽóĚž¤ňĽÍĽĂĽČĽďĄźĽŻĽÉĽáĽ¤ĽóĚž¤Č¤ˇ¤ĆťČ¤Ś¤â¤Î¤â¤˘¤ę¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤ÎĽÍĽĂĽČĽďĄźĽŻ¤Ë¤˝¤Î¤č¤Ś¤ĘŔŠ¸Â¤Î¤˘¤ëĽŢĽˇĽó¤Ź 1 Âć¤Ç¤â¤˘¤ë¤Č¤­¤ĎĄ˘NIS ¤ÎĽÉĽáĽ¤ĽóĚž¤Č¤ˇ¤ĆĽ¤ĽóĽżĄźĽÍĽĂĽČ¤ÎĽÍĽĂĽČĽďĄźĽŻĽÉĽáĽ¤ĽóĚž¤ňťČ¤ď¤Ę¤ą¤ě¤Đ ¤¤¤ą¤Ţ¤ť¤óĄŁ ĽľĄźĽĐĽŢĽˇĽó¤ÎĘŞÍýĹŞÉŹÍמňˇď NIS ĽľĄźĽĐ¤Č¤ˇ¤ĆťČ¤ŚĽŢĽˇĽó¤ňÁŞ¤ÖşÝ¤Ë¤ĎĄ˘ ¤¤¤Ż¤Ä¤ŤĂí°Ő¤š¤Ů¤­ĹŔ¤Ź¤˘¤ę¤Ţ¤šĄŁ NIS ¤Ë´Ř¤š¤ëş¤¤Ă¤ż¤ł¤Č¤Î°ě¤Ä¤ËĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎĽľĄźĽĐ¤Ř¤Î°Í¸ĹŮ¤Ź¤˘¤ę¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ŹźŤĘŹ¤Î NIS ĽÉĽáĽ¤Ľó¤ÎĽľĄźĽĐ¤ËŔÜÂł¤Ç¤­¤Ę¤¤¤ČĄ˘ ĽŢĽˇĽó¤ŹťČÍŃÉÔÇ˝¤Ë¤Ę¤ë¤ł¤Č¤Ź¤˘¤Ţ¤ę¤ËÂż¤¤¤Î¤Ç¤šĄŁ ¤â¤ˇĄ˘ĽćĄźĽś¤äĽ°ĽëĄźĽ×¤Ë´Ř¤š¤ëžđĘó¤ŹĆŔ¤é¤ě¤Ę¤ą¤ě¤ĐĄ˘ ¤Ű¤Č¤ó¤É¤ÎĽˇĽšĽĆĽŕ¤Ď°ěťţĹŞ¤ËÄäťß¤ˇ¤Ć¤ˇ¤Ţ¤¤¤Ţ¤šĄŁ ¤ł¤Ś¤¤¤Ă¤ż¤ł¤Č¤ňǰƏ¤ËĂÖ¤¤¤ĆĄ˘ÉŃČˤ˼ęĽÖĄźĽČ¤ľ¤ě¤ëĽŢĽˇĽó¤äĄ˘ łŤČŻ¤ËťČ¤ď¤ě¤˝¤Ś¤ĘĽŢĽˇĽó¤ňÁŞ¤Đ¤Ę¤¤¤č¤Ś¤Ë¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ÍýÁŰĹŞ¤Ë¤Ď NIS ĽľĄźĽĐ¤ĎĽšĽżĽóĽÉĽ˘ĽíĽó¤Ç NIS ĽľĄźĽĐŔěÍѤμ޼ˇĽó¤Ë¤š¤ë¤Ů¤­¤Ç¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻ¤ÎÉé˛Ů¤Ź˝Ĺ¤Ż¤Ę¤ą¤ě¤ĐĄ˘ ž¤ÎĽľĄźĽÓĽš¤ňÁö¤é¤ť¤Ć¤¤¤ëĽŢĽˇĽó¤ň NIS ĽľĄźĽĐ¤Ë¤ˇ¤Ć¤â¤Ť¤Ţ¤¤¤Ţ¤ť¤óĄŁ ¤ż¤Ŕ¤ˇ NIS ĽľĄźĽĐ¤ŹťČ¤¨¤Ę¤Ż¤Ę¤ë¤ČĄ˘ ¤š¤Ů¤Ć¤Î ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËąĆśÁ¤ň¤Ş¤č¤Ü¤šĄ˘ ¤Č¤¤¤ŚĹŔ¤Ë¤ĎĂí°Ő¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ NIS ĽľĄźĽĐ ¸ľ¤Č¤Ę¤ë¤š¤Ů¤Ć¤Î NIS žđĘó¤ĎĄ˘ NIS ĽŢĽšĽżĄźĽľĄźĽĐ¤Č¸Ć¤Đ¤ě¤ë 1 Âć¤ÎĽŢĽˇĽó¤ËłĘÇź¤ľ¤ě¤Ţ¤šĄŁ ¤ł¤ÎžđĘ󤏳ĘÇź¤ľ¤ě¤ëĽÇĄźĽżĽŮĄźĽš¤ň NIS ĽŢĽĂĽ×¤Č¸Ć¤Ó¤Ţ¤šĄŁ FreeBSD ¤Ç¤ĎĄ˘¤ł¤ÎĽŢĽĂĽ×¤Ď /var/yp/[domainname] ¤ËĂÖ¤Ť¤ě¤Ţ¤šĄŁ [domainname] ¤ĎĄ˘ ĽľĄźĽĐ¤ŹĽľĄźĽÓĽš¤š¤ë NIS ĽÉĽáĽ¤Ľó¤Ç¤šĄŁ 1 Âć¤Î NIS ĽľĄźĽĐ¤ŹĘŁżô¤ÎĽÉĽáĽ¤Ľó¤ňĽľĽÝĄźĽČ¤š¤ë¤ł¤Č¤â˛ÄÇ˝¤Ç¤šĄŁ ¤Ä¤Ţ¤ęĄ˘¤ł¤ÎĽÇĽŁĽěĽŻĽČĽę¤ňłĆĄš¤ÎĽÉĽáĽ¤Ľó¤´¤Č¤Ëşî¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤˝¤ě¤ž¤ě¤ÎĽÉĽáĽ¤Ľó¤ĎĄ˘ ĆČΊ¤ˇ¤żĽŢĽĂĽ×¤Î˝¸šç¤ňťý¤Ä¤ł¤Č¤Ë¤Ę¤ę¤Ţ¤šĄŁ NIS ¤ÎĽŢĽšĽżĄźĽľĄźĽĐ¤ČĽšĽěĄźĽÖĽľĄźĽĐžĺ¤Ç¤ĎĄ˘ ypserv ĽÇĄźĽâĽó¤Ź¤š¤Ů¤Ć¤Î NIS Í׾á¤ň˝čÍý¤ˇ¤Ţ¤šĄŁ ypserv ¤Ď NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ť¤é¤ÎÍ׾á¤ňźő¤ąÉŐ¤ąĄ˘ ĽÉĽáĽ¤ĽóĚž¤ČĽŢĽĂĽ×Ěž¤ňÂĐąţ¤š¤ëĽÇĄźĽżĽŮĄźĽšĽŐĽĄĽ¤Ľë¤Ř¤ÎĽŃĽš¤ËĘŃ´š¤ˇĄ˘ ĽÇĄźĽż¤ňĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËĘÖÁ÷¤ˇ¤Ţ¤šĄŁ NIS ĽŢĽšĽżĄźĽľĄźĽĐ¤ÎŔßÄę NIS ĽľĄźĽĐŔßÄę ¤ä¤ę¤ż¤¤¤ł¤Č¤Ë¤â¤č¤ę¤Ţ¤š¤Ź NIS ĽŢĽšĽżĄźĽľĄźĽĐ¤ÎŔßÄę¤ĎČćłÓĹŞĂą˝ă¤Ç¤šĄŁ FreeBSD ¤Ď˝é´üžőÂÖ¤Ç NIS ¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ÉŹÍפʤΤϰʲź¤ÎšÔ¤ň /etc/rc.conf ¤ËÄɲ䚤뤳¤Č¤Ŕ¤ą¤ÇĄ˘ ¤˘¤Č¤Ď FreeBSD ¤Ź¤ä¤Ă¤Ć¤Ż¤ě¤Ţ¤šĄŁ nisdomainname="test-domain" ¤ł¤ÎšÔ¤ĎĽÍĽĂĽČĽďĄźĽŻ¤ÎŔßÄę¸ĺ¤Ë (¤ż¤Č¤¨¤ĐşĆľŻĆ°¸ĺ¤Ë) NIS ¤ÎĽÉĽáĽ¤ĽóĚž¤ň test-domain ¤ËŔßÄꤡ¤Ţ¤šĄŁ nis_server_enable="YES" ¤ł¤ě¤Ď FreeBSD ¤ËźĄ¤ËĽÍĽĂĽČĽďĄźĽŻ¤ŹÎФÁžĺ¤Ź¤Ă¤ż¤Č¤­ NIS ¤ÎĽľĄźĽĐĽ×ĽíĽťĽš¤ňľŻĆ°¤ľ¤ť¤Ţ¤šĄŁ nis_yppasswdd_enable="YES" ¤ł¤ě¤Ď rpc.yppasswdd ĽÇĄźĽâĽó¤ňÍ­¸ú¤Ë¤ˇ¤Ţ¤šĄŁžĺ˝Ň¤ˇ¤ż¤č¤Ś¤Ë¤ł¤ě¤ĎĽćĄźĽś¤Ź NIS ¤ÎĽŃĽšĽďĄźĽÉ¤ňĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎĽŢĽˇĽó¤Ť¤éĘŃšš¤š¤ë¤ł¤Č¤ň˛ÄÇ˝¤Ë¤ˇ¤Ţ¤šĄŁ NIS ¤ÎŔßÄę¤Ë¤č¤Ă¤Ć¤ĎĄ˘ ¤ľ¤é¤Ëž¤ÎĽ¨ĽóĽČĽę¤ňÉŐ¤ą˛Ă¤¨¤ëÉŹÍפʤ˘¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ žÜşŮ¤Ë¤Ä¤¤¤Ć¤ĎĄ˘˛źľ­¤Î NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Č¤ˇ¤Ć¤âưşî¤ˇ¤Ć¤¤¤ë NIS ĽľĄźĽĐ Ŕá¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ľ¤ĆĄ˘¤˘¤Č¤ĎĽšĄźĽŃĽćĄźĽś¸˘¸Â¤Ç /etc/netstart ĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ë¤Ŕ¤ą¤Ç¤šĄŁ ¤ł¤ě¤Ë¤č¤ę /etc/rc.conf ¤ÇÄęľÁ¤ľ¤ě¤żĂͤňťČ¤Ă¤Ć¤š¤Ů¤Ć¤ÎŔßÄꤏšÔ¤Ę¤ď¤ě¤Ţ¤šĄŁ NIS ĽŢĽĂĽ×¤Î˝é´ü˛˝ NIS ĽŢĽĂĽ× NIS ĽŢĽĂĽ× ¤Č¤Ď /var/yp ĽÇĽŁĽěĽŻĽČĽę¤Ë¤˘¤ëĽÇĄźĽżĽŮĄźĽšĽŐĽĄĽ¤Ľë¤Ç¤šĄŁ ¤ł¤ě¤é¤Ď NIS ĽŢĽšĽż¤Î /etc ĽÇĽŁĽěĽŻĽČĽę¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤Ť¤éşî¤é¤ě¤Ţ¤šĄŁ ÍŁ°ě¤ÎÎăł°¤Ď /etc/master.passwd ĽŐĽĄĽ¤Ľë¤Ç¤šĄŁ¤ł¤ě¤Ď root ¤äž¤Î´ÉÍýÍŃĽ˘ĽŤĽŚĽóĽČ¤ÎĽŃĽšĽďĄźĽÉ¤Ţ¤Ç¤˝¤Î NIS ĽÉĽáĽ¤Ľó¤Î¤š¤Ů¤Ć¤ÎĽľĄźĽĐ¤ËĹÁ¤¨¤ż¤Ż¤Ę¤¤¤Č¤¤¤ŚĄ˘ ¤â¤Ă¤Č¤â¤ĘÍýÍł¤Ë¤č¤ë¤â¤Î¤Ç¤šĄŁ¤ł¤Î¤ż¤á NIS ĽŢĽĂĽ×¤Î˝é´ü˛˝¤ÎÁ°¤Ë°Ę˛ź¤ňšÔ¤ŚÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ &prompt.root; cp /etc/master.passwd /var/yp/master.passwd &prompt.root; cd /var/yp &prompt.root; vi master.passwd ĽˇĽšĽĆĽŕ¤Ë´Ř¤š¤ëĽ˘ĽŤĽŚĽóĽČ (bin, tty, kmem, games ¤Ę¤É) ¤äĄ˘NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËĹÁ¤¨¤ż¤Ż¤Ę¤¤Ľ˘ĽŤĽŚĽóĽČ (¤ż¤Č¤¨¤Đ root ¤äž¤Î UID ¤Ź 0 (ĽšĄźĽŃĽćĄźĽś) ¤ÎĽ˘ĽŤĽŚĽóĽČ) ¤ň¤š¤Ů¤Ć NIS ĽŢĽĂĽ×¤Ť¤éźč¤ę˝ü¤Ť¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ /var/yp/master.passwd ¤Ź Ľ°ĽëĄźĽ×¤Ţ¤ż¤ĎĂŻ¤â¤ŹĆɤá¤ë¤č¤Ś¤Ë¤Ę¤Ă¤Ć¤¤¤Ę¤¤¤č¤Ś¤Ë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ (ĽâĄźĽÉ 600)! ÉŹÍפʤé chmod ĽłĽŢĽóĽÉ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Tru64 UNIX ¤š¤Ů¤Ć¤Ź˝Ş¤ď¤Ă¤ż¤é NIS ĽŢĽĂĽ×¤ň˝é´ü˛˝¤ˇ¤Ţ¤š! FreeBSD ¤Ë¤ĎĄ˘¤ł¤ě¤ňšÔ¤Ś¤ż¤á¤Ë ypinit ¤Č¤¤¤ŚĚž¤ÎĽšĽŻĽęĽ×ĽČ¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤š (žÜşŮ¤Ď¤˝¤ÎĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤)ĄŁ ¤ł¤ÎĽšĽŻĽęĽ×ĽČ¤Ď¤Ű¤Č¤ó¤É¤Î &unix; OS ¤Ë¸şß¤ˇ¤Ţ¤š¤ŹĄ˘ ¤š¤Ů¤Ć¤Č¤Ď¸Â¤é¤Ę¤¤¤ł¤Č¤ňłĐ¤¨¤Ć¤Ş¤¤¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Digital Unix/Compaq Tru64 UNIX ¤Ç¤Ď ypsetup ¤Č¸Ć¤Đ¤ě¤Ć¤¤¤Ţ¤šĄŁNIS ĽŢĽšĽż¤Î¤ż¤á¤ÎĽŢĽĂĽ×¤ňşî¤ë¤ż¤á¤Ë¤Ď ĽŞĽ×ĽˇĽçĽó¤ň ypinit ¤ËÍż¤¨¤Ţ¤šĄŁžĺ˝Ň¤ÎĽšĽĆĽĂĽ×¤ň´°Îť¤ˇ¤Ć¤¤¤ë¤Ę¤éĄ˘°Ę˛ź¤ňźÂšÔ¤ˇ¤Ć NIS ĽŢĽĂĽ×¤ňŔ¸Ŕޤˇ¤Ţ¤šĄŁ ellington&prompt.root; ypinit -m test-domain Server Type: MASTER Domain: test-domain Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. At this point, we have to construct a list of this domains YP servers. rod.darktech.org is already known as master server. Please continue to add any slave servers, one per line. When you are done with the list, type a <control D>. master server : ellington next host to add: coltrane next host to add: ^D The current list of NIS servers looks like this: ellington coltrane Is this correct? [y/n: y] y [..output from map generation..] NIS Map update completed. ellington has been setup as an YP master server without any errors. ypinit ¤Ď /var/yp/Makefile ¤ň /var/yp/Makefile.dist ¤Ť¤éşîŔޤˇ¤Ţ¤šĄŁ şîŔޤľ¤ě¤żťţĹŔ¤Ç¤ĎĄ˘¤˝¤ÎĽŐĽĄĽ¤Ľë¤Ď¤˘¤Ę¤ż¤Ź FreeBSD ĽŢĽˇĽó¤Ŕ¤ą¤Ť¤é¤Ę¤ëĽľĄźĽĐ¤Ź 1 Âć¤Ŕ¤ą¤Î NIS ´Äś­¤ň°ˇ¤Ă¤Ć¤¤¤ë¤Č˛žÄꤡ¤Ć¤¤¤Ţ¤šĄŁ test-domain ¤ĎĽšĽěĄźĽÖĽľĄźĽĐ¤ň°ě¤Äťý¤Ă¤Ć¤¤¤Ţ¤š¤Î¤Ç /var/yp/Makefile ¤ňĘÔ˝¸¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ellington&prompt.root; vi /var/yp/Makefile °Ę˛ź¤ÎšÔ¤ň (¤â¤ˇ´ű¤ËĽłĽáĽóĽČĽ˘ĽŚĽČ¤ľ¤ě¤Ć¤¤¤Ę¤¤¤Ę¤é¤Đ) ĽłĽáĽóĽČĽ˘ĽŚĽČ¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ NOPUSH = "True" NIS ĽšĽěĄźĽÖĽľĄźĽĐ¤ÎŔßÄę NIS ĽšĽěĄźĽÖĽľĄźĽĐ NIS ĽšĽěĄźĽÖĽľĄźĽĐ¤ÎŔßÄę¤ĎĽŢĽšĽżĄźĽľĄźĽĐ¤ÎŔßÄę°Ęžĺ¤Ë´ĘĂą¤Ç¤šĄŁ ĽšĽěĄźĽÖĽľĄźĽĐ¤ËĽíĽ°ĽŞĽó¤ˇ /etc/rc.conf ĽŐĽĄĽ¤Ľë¤ňÁ°˛ó¤ČĆąÍͤËĘÔ˝¸¤ˇ¤Ţ¤šĄŁÍٰě¤Î°ă¤Ś¤Č¤ł¤í¤Ď ypinit ¤ÎźÂšÔ¤Ë ĽŞĽ×ĽˇĽçĽó¤ňťČ¤ď¤Ę¤ą¤ě¤Đ¤¤¤ą¤Ę¤¤¤ł¤Č¤Ç¤šĄŁ ĽŞĽ×ĽˇĽçĽó¤Ď NIS ĽŢĽšĽżĄźĽľĄźĽĐ¤ÎĚžÁ°¤ňÍ׾ᤡĄ˘ ĽłĽŢĽóĽÉĽéĽ¤Ľó¤Ď°Ę˛ź¤Î¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ coltrane&prompt.root; ypinit -s ellington test-domain Server Type: SLAVE Domain: test-domain Master: ellington Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. There will be no further questions. The remainder of the procedure should take a few minutes, to copy the databases from ellington. Transferring netgroup... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byuser... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byhost... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring group.bygid... ypxfr: Exiting: Map successfully transferred Transferring group.byname... ypxfr: Exiting: Map successfully transferred Transferring services.byname... ypxfr: Exiting: Map successfully transferred Transferring rpc.bynumber... ypxfr: Exiting: Map successfully transferred Transferring rpc.byname... ypxfr: Exiting: Map successfully transferred Transferring protocols.byname... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byaddr... ypxfr: Exiting: Map successfully transferred Transferring netid.byname... ypxfr: Exiting: Map successfully transferred Transferring hosts.byaddr... ypxfr: Exiting: Map successfully transferred Transferring protocols.bynumber... ypxfr: Exiting: Map successfully transferred Transferring ypservers... ypxfr: Exiting: Map successfully transferred Transferring hosts.byname... ypxfr: Exiting: Map successfully transferred coltrane has been setup as an YP slave server without any errors. Don't forget to update map ypservers on ellington. ¤ł¤ÎÎă¤Îžěšç /var/yp/test-domain ¤Č¤¤¤ŚĽÇĽŁĽěĽŻĽČĽę¤ŹÉŹÍפˤʤę¤Ţ¤šĄŁ NIS ĽŢĽšĽżĄźĽľĄźĽĐ¤ÎĽŢĽĂĽ×ĽŐĽĄĽ¤Ľë¤ÎĽłĽÔĄź¤ĎĄ˘ ¤ł¤ÎĽÇĽŁĽěĽŻĽČĽę¤ËĂÖ¤¤¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ě¤é¤ňłÎźÂ¤ËşÇżˇ¤Î¤â¤Î¤Ë°Ýťý¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ źĄ¤ÎĽ¨ĽóĽČĽę¤ňĽšĽěĄźĽÖĽľĄźĽĐ¤Î /etc/crontab ¤ËÄɲ䚤뤳¤Č¤ÇĄ˘şÇżˇ¤Î¤â¤Î¤ËĘݤĤł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ 20 * * * * root /usr/libexec/ypxfr passwd.byname 21 * * * * root /usr/libexec/ypxfr passwd.byuid ¤ł¤ÎĆóšÔ¤ĎĽšĽěĄźĽÖĽľĄźĽĐ¤Ë¤˘¤ëĽŢĽĂĽ×ĽŐĽĄĽ¤Ľë¤ňĄ˘ ĽŢĽšĽżĄźĽľĄźĽĐ¤ÎĽŢĽĂĽ×ĽŐĽĄĽ¤Ľë¤ČĆą´ü¤ľ¤ť¤ë¤â¤Î¤Ç¤šĄŁ ¤ł¤ÎĽ¨ĽóĽČĽę¤ĎÉŹżÜ¤Č¤¤¤Ś¤ď¤ą¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó¤ŹĄ˘ĽŢĽšĽżĄźĽľĄźĽĐ¤Ď NIS ĽŢĽĂĽ×¤ËÂФš¤ëĘŃšš¤ňĽšĽěĄźĽÖĽľĄźĽĐ¤ËĹÁ¤¨¤č¤Ś¤Č¤ˇ¤Ţ¤š¤ˇĄ˘ ĽľĄźĽĐ¤Ź´ÉÍý¤š¤ëĽˇĽšĽĆĽŕ¤Ë¤Č¤Ă¤ĆĽŃĽšĽďĄźĽÉžđĘó¤Ď¤Č¤Ć¤â˝ĹÍפʤΤǥ˘ śŻŔŠĹŞ¤Ëššżˇ¤ˇ¤Ć¤ˇ¤Ţ¤Ś¤ł¤Č¤Ď¤č¤¤šÍ¤¨¤Ç¤šĄŁĆä˥˘ ĽŢĽĂĽ×ĽŐĽĄĽ¤Ľë¤Îššżˇ¤Ź¤­¤Á¤ó¤ČšÔ¤Ę¤ď¤ě¤ë¤Ť¤É¤Ś¤Ť¤ď¤Ť¤é¤Ę¤¤¤Ż¤é¤¤şŽť¨¤š¤ëĽÍĽĂĽČĽďĄźĽŻ¤Ç¤ĎĄ˘ ˝ĹÍפˤʤę¤Ţ¤šĄŁ ĽšĽěĄźĽÖĽľĄźĽĐžĺ¤Ç¤â /etc/netstart ĽłĽŢĽóĽÉ¤ňźÂšÔ¤ˇ¤ĆĄ˘NIS ĽľĄźĽĐ¤ňşĆľŻĆ°¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ď ypbind ĽÇĄźĽâĽó¤ňťČ¤Ă¤ĆĄ˘ĆĂÄę¤Î NIS ĽľĄźĽĐ¤Č¤Î´Ö¤Ëˇëšç (binding) ¤Č¸Ć¤Đ¤ě¤ë´Řˇ¸¤ňŔŽÎФľ¤ť¤Ţ¤šĄŁ ypbind ¤ĎĽˇĽšĽĆĽŕ¤ÎĽÇĽŐĽŠĽëĽČ¤ÎĽÉĽáĽ¤Ľó (domainname ĽłĽŢĽóĽÉ¤ÇŔßÄꤾ¤ě¤Ţ¤š) ¤ňłÎǧ¤ˇĄ˘RPC Í׾á¤ňĽíĄźĽŤĽëĽÍĽĂĽČĽďĄźĽŻ¤ËĽÖĽíĄźĽÉĽ­ĽăĽšĽČ¤ˇ¤Ţ¤šĄŁ ¤ł¤Î RPC Í׾á¤Ë¤č¤ę ypbind ¤Źˇëšç¤ňŔŽÎФľ¤ť¤č¤Ś¤Č¤ˇ¤Ć¤¤¤ëĽÉĽáĽ¤ĽóĚž¤ŹťŘÄꤾ¤ě¤Ţ¤šĄŁ Í׾᤾¤ě¤Ć¤¤¤ëĽÉĽáĽ¤ĽóĚž¤ËÂФˇ¤ĆĽľĄźĽÓĽš¤š¤ë¤č¤ŚŔßÄꤾ¤ě¤żĽľĄźĽĐ¤Ź ĽÖĽíĄźĽÉĽ­ĽăĽšĽČ¤ňźőżŽ¤š¤ë¤ČĄ˘ ĽľĄźĽĐ¤Ď ypbind ¤ËąţĹú¤ˇypbind ¤ĎąţĹú¤Î¤˘¤Ă¤żĽľĄźĽĐ¤ÎĽ˘ĽÉĽěĽš¤ňľ­Ďż¤ˇ¤Ţ¤šĄŁĘŁżô¤ÎĽľĄźĽĐ (¤ż¤Č¤¨¤Đ°ě¤Ä¤ÎĽŢĽšĽżĄźĽľĄźĽĐ¤ČĄ˘ĘŁżô¤ÎĽšĽěĄźĽÖĽľĄźĽĐ) ¤ŹÍřÍѲÄÇ˝¤ĘžěšçĄ˘ypbind ¤ĎĄ˘ şÇ˝é¤ËąţĹú¤ˇ¤żĽľĄźĽĐ¤ÎĽ˘ĽÉĽěĽš¤ňťČÍѤˇ¤Ţ¤šĄŁ ¤ł¤ě°ĘšßĄ˘ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎĽˇĽšĽĆĽŕ¤ĎĄ˘ ¤š¤Ů¤Ć¤Î NIS ¤ÎÍ׾á¤ň¤˝¤ÎĽľĄźĽĐ¤Ë¸ţ¤ą¤ĆÁ÷żŽ¤ˇ¤Ţ¤šĄŁ ypbind ¤ĎĄ˘ ĽľĄźĽĐ¤Ź˝çÄ´¤Ëưşî¤ˇ¤Ć¤¤¤ë¤ł¤Č¤ňłÎǧ¤š¤ë¤ż¤áĄ˘ ťţĄš ping ¤ňĽľĄźĽĐ¤ËÁ÷¤ę¤Ţ¤šĄŁ Čżąţ¤ŹĚá¤Ă¤Ć¤Ż¤ë¤Ů¤­ťţ´ÖĆâ¤Ë ping ¤ËÂФš¤ëąţĹú¤ŹÍč¤Ę¤ą¤ě¤ĐĄ˘ ypbind ¤ĎĄ˘¤˝¤ÎĽÉĽáĽ¤Ľó¤ňˇëšçÉÔÇ˝ (unbound) ¤Č¤ˇ¤Ćľ­Ďż¤ˇĄ˘Ę̤μľĄźĽĐ¤ň¸Ť¤Ä¤ą¤ë¤Ů¤ŻĄ˘ şĆ¤ÓĽÖĽíĄźĽÉĽ­ĽăĽšĽČĽŃĽąĽĂĽČ¤ÎÁ÷żŽ¤ňšÔ¤¤¤Ţ¤šĄŁ NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎŔßÄę NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎŔßÄę FreeBSD ĽŢĽˇĽó¤ň NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ë¤š¤ëŔßÄę¤ĎČóžď¤ËĂą˝ă¤Ç¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻ¤ÎľŻĆ°ťţ¤Ë NIS ĽÉĽáĽ¤ĽóĚž¤ňŔßÄꤡ¤Ć ypbind ¤ňľŻĆ°¤ľ¤ť¤ë¤ż¤á¤Ë /etc/rc.conf ĽŐĽĄĽ¤Ľë¤ňĘÔ˝¸¤ˇ¤Ć°Ę˛ź¤ÎšÔ¤ňÄɲäˇ¤Ţ¤šĄŁ nisdomainname="test-domain" nis_client_enable="YES" NIS ĽľĄźĽĐ¤Ť¤éĄ˘ ÍřÍѲÄÇ˝¤ĘĽŃĽšĽďĄźĽÉĽ¨ĽóĽČĽę¤ň¤š¤Ů¤Ćźč¤ęšţ¤ŕ¤ż¤áĄ˘ /etc/master.passwd ¤Ť¤é¤š¤Ů¤Ć¤ÎĽćĄźĽśĽ˘ĽŤĽŚĽóĽČ¤ňźč¤ę˝ü¤¤¤ĆĄ˘ vipw ĽłĽŢĽóĽÉ¤Ç°Ę˛ź¤ÎšÔ¤ň /etc/master.passwd ¤ÎşÇ¸ĺ¤ËÄɲäˇ¤Ţ¤šĄŁ +::::::::: ¤ł¤ÎšÔ¤Ë¤č¤Ă¤Ć NIS ĽľĄźĽĐ¤ÎĽŃĽšĽďĄźĽÉĽŢĽĂĽ×¤ËĽ˘ĽŤĽŚĽóĽČ¤Ź¤˘¤ëżÍÁ´°÷¤ËĽ˘ĽŤĽŚĽóĽČ¤ŹÍż¤¨¤é¤ě¤Ţ¤šĄŁ ¤ł¤ÎšÔ¤ňĘŃšš¤š¤ë¤ČĄ˘ ¤ľ¤Ţ¤ś¤Ţ¤Ę NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎŔßÄę¤ňšÔ¤Ę¤Ś¤ł¤Č¤Ź˛ÄÇ˝¤Ç¤šĄŁ žÜşŮ¤Ď ĽÍĽĂĽČĽ°ĽëĄźĽ× ¤ňĄ˘¤ľ¤é¤ËžÜ¤ˇ¤¤žđĘó¤Ë¤Ä¤¤¤Ć¤ĎĄ˘O'Reilly ¤Î Managing NFS and NIS ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /etc/master.passwd Ćâ¤ËžŻ¤Ę¤Ż¤Č¤â°ě¤Ä¤ÎĽíĄźĽŤĽëĽ˘ĽŤĽŚĽóĽČ (¤Ä¤Ţ¤ę NIS ˇĐÍł¤ÇĽ¤ĽóĽÝĄźĽČ¤ľ¤ě¤Ć¤¤¤Ę¤¤Ľ˘ĽŤĽŚĽóĽČ) ¤ňĂÖ¤Ż¤Ů¤­¤Ç¤šĄŁ ¤Ţ¤żĄ˘¤ł¤ÎĽ˘ĽŤĽŚĽóĽČ¤Ď wheel Ľ°ĽëĄźĽ×¤ÎĽáĽóĽĐĄź¤Ç¤˘¤ë¤Ů¤­¤Ç¤šĄŁ NIS ¤Ź¤É¤ł¤ŤÄ´ťŇ°­¤¤¤Č¤­¤Ë¤ĎĄ˘ ĽęĽâĄźĽČ¤Ť¤é¤ł¤ÎĽ˘ĽŤĽŚĽóĽČ¤ÇĽíĽ°Ľ¤Ľó¤ˇĄ˘ root ¤Ë¤Ę¤Ă¤Ć˝¤Éü¤š¤ë¤Î¤ËÍřÍѤǤ­¤Ţ¤šĄŁ NIS ĽľĄźĽĐ¤Ë¤˘¤ë¤š¤Ů¤Ć¤ÎĽ°ĽëĄźĽ×Ľ¨ĽóĽČĽę¤ňźč¤ęšţ¤ŕ¤ż¤áĄ˘ °Ę˛ź¤ÎšÔ¤ň /etc/group ¤ËÄɲäˇ¤Ţ¤šĄŁ +:*:: žĺľ­¤Îźę˝ç¤Ź¤š¤Ů¤Ć´°Îť¤š¤ě¤ĐĄ˘ ypcat passwd ¤Ë¤č¤Ă¤Ć NIS ĽľĄźĽĐ¤Î passwd ĽŢĽĂĽ×¤Źť˛žČ¤Ç¤­¤ë¤č¤Ś¤Ë¤Ę¤Ă¤Ć¤¤¤ë¤Ď¤ş¤Ç¤šĄŁ NIS ĽťĽ­ĽĺĽęĽĆĽŁ °ěČ̤˼ɼἤĽóĚž¤ľ¤¨ĂΤäƤ¤¤ě¤ĐĄ˘ ¤É¤ł¤Ë¤¤¤ëĽęĽâĄźĽČĽćĄźĽś¤Ç¤â &man.ypserv.8; ¤Ë RPC ¤ňČŻšÔ¤ˇ¤Ć NIS ĽŢĽĂĽ×¤ÎĆâÍƤň°ú¤­˝Đ¤š¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤ł¤Ś¤¤¤Ă¤żÉÔŔľ¤Ę¤ä¤ę¤Č¤ę¤ňËɤ°¤ż¤áĄ˘ &man.ypserv.8; ¤Ë¤Ď securenets ¤Č¸Ć¤Đ¤ě¤ëľĄÇ˝¤Ź¤˘¤ę¤Ţ¤šĄŁ¤ł¤ě¤ĎĄ˘ Ľ˘ĽŻĽťĽš¤ňˇč¤á¤é¤ě¤żĽŰĽšĽČ¤Ŕ¤ą¤ËŔŠ¸Â¤š¤ë¤Î¤ËťČ¤¨¤ëľĄÇ˝¤Ç¤šĄŁ &man.ypserv.8; ¤ĎľŻĆ°ťţ¤Ë /var/yp/securenets ĽŐĽĄĽ¤Ľë¤Ť¤é securenets ¤Ë´Ř¤š¤ëžđĘó¤ňĆɤߚţ¤ß¤Ţ¤šĄŁ žĺľ­¤ÎĽŃĽšĚž¤Ď ĽŞĽ×ĽˇĽçĽó¤ÇťŘÄꤾ¤ě¤żĽŃĽšĚž¤Ë¤č¤Ă¤ĆĘѤď¤ę¤Ţ¤šĄŁ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ĎĄ˘ śőÇň¤ÇśčŔÚ¤é¤ě¤żĽÍĽĂĽČĽďĄźĽŻťŘÄę¤ČĽÍĽĂĽČĽŢĽšĽŻ¤ÎĽ¨ĽóĽČĽę¤Ť¤é¤Ę¤Ă¤Ć¤¤¤ĆĄ˘ # ¤ÇťĎ¤Ţ¤ëšÔ¤ĎĽłĽáĽóĽČ¤Č¤ß¤Ę¤ľ¤ě¤Ţ¤šĄŁ ´ĘĂą¤Ę securenets ĽŐĽĄĽ¤Ľë¤ÎÎă¤ň°Ę˛ź¤Ëꍤˇ¤Ţ¤šĄŁ # allow connections from local host -- mandatory 127.0.0.1 255.255.255.255 # allow connections from any host # on the 192.168.128.0 network 192.168.128.0 255.255.255.0 # allow connections from any host # between 10.0.0.0 to 10.0.15.255 10.0.0.0 255.255.240.0 &man.ypserv.8; ¤Źžĺľ­¤ÎĽëĄźĽë¤Î°ě¤Ä¤ČšçĂפš¤ëĽ˘ĽÉĽěĽš¤Ť¤é¤ÎÍ׾á¤ňźő¤ąźč¤Ă¤żžěšçĄ˘ ˝čÍý¤ĎŔľžď¤ËšÔ¤Ę¤ď¤ě¤Ţ¤šĄŁ ¤â¤ˇĽ˘ĽÉĽěĽš¤ŹĽëĄźĽë¤ËšçĂפˇ¤Ę¤ą¤ě¤ĐĄ˘ ¤˝¤ÎÍ׾á¤ĎĚľťë¤ľ¤ě¤ĆˇŮšđĽáĽĂĽťĄźĽ¸¤ŹĽíĽ°¤Ëľ­Ďż¤ľ¤ě¤Ţ¤šĄŁ ¤Ţ¤ż /var/yp/securenets ¤ŹÂ¸şß¤ˇ¤Ę¤¤žěšçĄ˘ ypserv ¤Ď¤š¤Ů¤Ć¤ÎĽŰĽšĽČ¤Ť¤é¤ÎŔÜÂł¤ňźő¤ąĆţ¤ě¤Ţ¤šĄŁ ypserv ¤Ď Wietse Venema ťá¤Ë¤č¤ë tcpwrapper ĽŃĽĂĽąĄźĽ¸¤âĽľĽÝĄźĽČ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤˝¤Î¤ż¤á /var/yp/securenets ¤ÎÂĺ¤ď¤ę¤Ë tcpwrapper ¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤ňťČ¤Ă¤ĆĽ˘ĽŻĽťĽšŔЏć¤ňšÔ¤Ę¤Ś¤ł¤Č¤â˛ÄÇ˝¤Ç¤šĄŁ ¤ł¤ě¤é¤ÎĽ˘ĽŻĽťĽšŔŠ¸ćľĄÇ˝¤Ď°ěÄę¤ÎĽťĽ­ĽĺĽęĽĆĽŁ¤ňÄ󜥤ˇ¤Ţ¤š¤ŹĄ˘ ¤É¤Á¤é¤âĆø˘ĽÝĄźĽČ¤ÎĽĆĽšĽČ¤Î¤č¤Ś¤Ę IP spoofing šśˇâ¤ËÂФˇ¤ĆŔČźĺ¤Ç¤šĄŁ¤š¤Ů¤Ć¤Î NIS ´ŘϢ¤ÎĽČĽéĽŐĽŁĽĂĽŻ¤ĎĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽë¤ÇĽÖĽíĽĂĽŻ¤ľ¤ě¤ë¤Ů¤­¤Ç¤šĄŁ /var/yp/securenets ¤ňťČ¤Ă¤Ć¤¤¤ëĽľĄźĽĐ¤ĎĄ˘¸Ĺ¤¤ TCP/IP źÂÁő¤ňťý¤ÄŔľĹö¤ĘĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ř¤ÎĽľĄźĽÓĽš¤ËźşÇÔ¤š¤ë¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎźÂÁő¤ÎĂć¤Ë¤ĎĽÖĽíĄźĽÉĽ­ĽăĽšĽČ¤ÎĽŰĽšĽČĽÓĽĂĽČ¤ň¤š¤Ů¤Ć 0 ¤ÇĽťĽĂĽČ¤ˇ¤Ć¤ˇ¤Ţ¤Ă¤ż¤ęĄ˘ ĽÖĽíĄźĽÉĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤Îˇ×ťť¤ÇĽľĽÖĽÍĽĂĽČĽŢĽšĽŻ¤ň¸ŤÍî¤Č¤ˇ¤Ć¤ˇ¤Ţ¤Ă¤ż¤ę¤š¤ë¤â¤Î¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĚäÂę¤Ë¤ĎĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎŔßÄę¤ňŔľ¤ˇ¤ŻšÔ¤Ę¤¨¤Đ˛ňˇč¤Ç¤­¤ë¤â¤Î¤â¤˘¤ę¤Ţ¤š¤ŹĄ˘ ĚäÂę¤Č¤Ę¤Ă¤Ć¤¤¤ëĽŻĽéĽ¤Ľ˘ĽóĽČĽˇĽšĽĆĽŕ¤ň°úÂा¤ť¤ë¤ŤĄ˘ /var/yp/securenets ¤ňťČ¤ď¤Ę¤¤¤č¤Ś¤Ë¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤â¤Î¤â¤˘¤ę¤Ţ¤šĄŁ ¤ł¤Î¤č¤Ś¤Ę¸ĹÉ÷¤Ę TCP/IP ¤ÎźÂÁő¤ňťý¤ÄĽľĄźĽĐ¤Ç /var/yp/securenets ¤ňťČ¤Ś¤ł¤Č¤ĎźÂ¤Ë°­¤¤šÍ¤¨¤Ç¤˘¤ęĄ˘ ¤˘¤Ę¤ż¤ÎĽÍĽĂĽČĽďĄźĽŻ¤ÎÂçÉôĘŹ¤Ë¤Ş¤¤¤Ć NIS ¤ÎľĄÇ˝ÁÓźş¤ňžˇ¤­¤Ţ¤šĄŁ tcpwrapper tcpwrapper ĽŃĽĂĽąĄźĽ¸¤ňťČ¤Ś¤Č¤˘¤Ę¤ż¤Î NIS ĽľĄźĽĐ¤ÎĽěĽ¤ĽĆĽóĽˇ (ĂŮąä) ¤ŹÁý˛Ă¤ˇ¤Ţ¤šĄŁĆĂ¤ËşŽť¨¤ˇ¤żĽÍĽĂĽČĽďĄźĽŻ¤äĂ٤¤ NIS ĽľĄźĽĐ¤Ç¤ĎĄ˘ĂŮąä¤ÎÁý˛Ă¤Ë¤č¤Ă¤ĆĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČĽ×ĽíĽ°ĽéĽŕ¤ÎĽżĽ¤ĽŕĽ˘ĽŚĽČ¤ŹľŻ¤ł¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ °ě¤Ä°Ęžĺ¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČĽˇĽšĽĆĽŕ¤Ź¤ł¤ě¤é¤ÎĂű¸ő¤ňꍤˇ¤ż¤Ę¤éĄ˘ ¤˘¤Ę¤ż¤ĎĚäÂę¤Č¤Ę¤Ă¤Ć¤¤¤ëĽŻĽéĽ¤Ľ˘ĽóĽČĽˇĽšĽĆĽŕ¤ň NIS ĽšĽěĄźĽÖĽľĄźĽĐ¤Ë¤ˇ¤ĆźŤĘŹźŤżČ¤Ëˇë¤ÓÉŐ¤Ż¤č¤Ś¤ËśŻŔФš¤Ů¤­¤Ç¤šĄŁ ˛żżÍ¤Ť¤ÎĽćĄźĽś¤ÎĽíĽ°ĽŞĽó¤ňź×ĂǤš¤ë ¤ď¤ż¤ˇ¤ż¤Á¤Î¸Śľćźź¤Ë¤Ď basie ¤Č¤¤¤ŚĄ˘ śľ°÷ŔěÍѤμ޼ˇĽó¤Ź¤˘¤ę¤Ţ¤šĄŁ¤ď¤ż¤ˇ¤ż¤Á¤Ď¤ł¤ÎĽŢĽˇĽó¤ň NIS ĽÉĽáĽ¤Ľó¤Îł°¤Ë˝Đ¤ˇ¤ż¤Ż¤Ę¤¤¤Î¤Ç¤š¤ŹĄ˘ ĽŢĽšĽż NIS ĽľĄźĽĐ¤Î passwd ĽŐĽĄĽ¤Ľë¤Ë¤Ďśľ°÷¤ČłŘŔ¸¤ÎΞĘý¤ŹşÜ¤Ă¤Ć¤¤¤Ţ¤šĄŁ ¤É¤Ś¤ˇ¤ż¤é¤¤¤¤¤Ç¤ˇ¤ç¤Ś? ĹöłşżÍĘŞ¤Ź NIS ¤ÎĽÇĄźĽżĽŮĄźĽš¤ËşÜ¤Ă¤Ć¤¤¤Ć¤âĄ˘ ¤˝¤ÎĽćĄźĽś¤ŹĽŢĽˇĽó¤ËĽíĽ°ĽŞĽó¤Ç¤­¤Ę¤¤¤č¤Ś¤Ë¤š¤ëĘýËĄ¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤˝¤Ś¤š¤ë¤Ë¤Ď -username ¤ňĽŻĽéĽ¤Ľ˘ĽóĽČĽŢĽˇĽó¤Î /etc/master.passwd ĽŐĽĄĽ¤Ľë¤ÎËöČř¤ËÉŐ¤ąÂ­¤ˇ¤Ţ¤šĄŁ username ¤Ď¤˘¤Ę¤ż¤ŹĽíĽ°Ľ¤Ľó¤ľ¤ť¤ż¤Ż¤Ę¤¤¤Čť×¤Ă¤Ć¤¤¤ëĽćĄźĽś¤ÎĽćĄźĽśĚž¤Ç¤šĄŁ ¤ł¤ě¤Ď vipw ¤ÇšÔ¤Ś¤Ů¤­¤Ç¤šĄŁ vipw ¤Ď /etc/master.passwd ¤Ř¤ÎĘŃšš¤ňĽÁĽ§ĽĂĽŻ¤ˇĄ˘ĘÔ˝¸˝ŞÎť¸ĺĽŃĽšĽďĄźĽÉĽÇĄźĽżĽŮĄźĽš¤ňşĆš˝Ăۤˇ¤Ţ¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘ĽćĄźĽś bill ¤Ź basie ¤ËĽíĽ°ĽŞĽó¤š¤ë¤Î¤ňËɤޤż¤¤¤Ę¤éĄ˘°Ę˛ź¤Î¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ basie&prompt.root; vipw [add -bill to the end, exit] vipw: rebuilding the database... vipw: done basie&prompt.root; cat /etc/master.passwd root:[password]:0:0::0:0:The super-user:/root:/bin/csh toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin operator:*:2:5::0:0:System &:/:/sbin/nologin bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin news:*:8:8::0:0:News Subsystem:/:/sbin/nologin man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin +::::::::: -bill basie&prompt.root; Udo Erdelhoff ´óšĆ: ĽÍĽĂĽČĽ°ĽëĄźĽ×¤ÎÍřÍŃ ĽÍĽĂĽČĽ°ĽëĄźĽ× Á°Ŕá¤Ţ¤Ç¤Ë¸Ť¤Ć¤­¤żźęËĄ¤ĎĄ˘ śË¤á¤ĆžŻ¤Ę¤¤ĽćĄźĽś/ĽŢĽˇĽó¸ţ¤ą¤Ë¸ÄĘ̤μ륟Ľë¤ňÉŹÍפȤˇ¤Ć¤¤¤ëžěšç¤Ë¤Ď¤Ś¤Ţ¤ŻľĄÇ˝¤ˇ¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇÂ礭¤ĘĽÍĽĂĽČĽďĄźĽŻ¤Ç¤ĎĄ˘ ĽćĄźĽś¤Ëż¨¤é¤ě¤ż¤Ż¤Ę¤¤ĽŢĽˇĽó¤ŘĽíĽ°ĽŞĽó¤ňËɤ°¤Î¤ň Ëş¤ě¤ë¤Ç¤ˇ¤ç¤Ś ¤ˇĄ˘ ¤˝¤Ś¤Ç¤Ę¤Ż¤Č¤âłĆĽŢĽˇĽó¤ň¸ÄĘ̤ËŔßÄꤡ¤Ć˛ó¤é¤Ę¤ą¤ě¤Đ¤Ę¤é¤şĄ˘ ˝¸Ăć´ÉÍý¤Č¤¤¤Ś NIS ¤Î˛¸ˇĂ¤ňźş¤Ă¤Ć¤ˇ¤Ţ¤¤¤Ţ¤šĄŁ NIS ¤ÎłŤČŻźÔ¤Ď¤ł¤ÎĚäÂę¤ň ĽÍĽĂĽČĽ°ĽëĄźĽ× ¤Č¸Ć¤Đ¤ě¤ëĘýËĄ¤Ç˛ňˇč¤ˇ¤Ţ¤ˇ¤żĄŁ ¤˝¤ÎĚÜĹŞ¤Č°ŐĚŁšç¤¤¤Ď &unix; ¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ÇťČ¤ď¤ě¤Ć¤¤¤ë°ěČĚĹŞ¤ĘĽ°ĽëĄźĽ×¤ČČćłÓ¤Ç¤­¤Ţ¤šĄŁ źç¤ż¤ëÁę°ă¤ĎżôĂÍ ID ¤ŹÂ¸şß¤ˇ¤Ę¤¤¤ł¤Č¤ČĄ˘ ĽćĄźĽśĽ˘ĽŤĽŚĽóĽČ¤ČĘ̤μͼüȼ°ĽëĄźĽ×¤ň´Ţ¤á¤żĽÍĽĂĽČĽ°ĽëĄźĽ×¤ňÄęľÁ¤Ç¤­¤ë¤ł¤Č¤Ç¤šĄŁ ĽÍĽĂĽČĽ°ĽëĄźĽ×¤ĎÉ´żÍ/Âć°Ęžĺ¤ÎĽćĄźĽś¤ČĽŢĽˇĽó¤ň´Ţ¤ŕĄ˘ Â礭¤ŻĘŁť¨¤ĘĽÍĽĂĽČĽďĄźĽŻ¤ň°ˇ¤Ś¤ż¤á¤ËłŤČݤľ¤ě¤Ţ¤ˇ¤żĄŁ ¤˘¤Ę¤ż¤Ź¤ł¤Î¤č¤Ś¤Ęžőśˇ¤ň°ˇ¤ď¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Ę¤éĘŘÍř¤Ę¤â¤Î¤Ę¤Î¤Ç¤š¤ŹĄ˘ °ěĘý¤ÇĄ˘¤ł¤ÎĘŁť¨¤ľ¤ĎĂą˝ă¤ĘÎă¤ÇĽÍĽĂĽČĽ°ĽëĄźĽ×¤ÎŔâĚŔ¤ň¤š¤ë¤ł¤Č¤ň¤Ű¤Č¤ó¤ÉÉÔ˛ÄÇ˝¤Ë¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎŔá¤ÎťÄ¤ę¤ÇťČ¤ď¤ě¤Ć¤¤¤ëÎă¤ĎĄ˘¤ł¤ÎĚäÂę¤ňźÂąé¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤ÎšÔ¤Ę¤Ă¤żĄ˘ ¸Śľćźź¤Ř¤Î NIS ¤ÎĆłĆţ¤ÎŔޏů¤ŹžĺťĘ¤ÎĚܤ˝ߤ俤Ȥˇ¤Ţ¤ˇ¤ç¤ŚĄŁ ¤˘¤Ę¤ż¤ÎźĄ¤ÎťĹťö¤ĎĄ˘¤˘¤Ę¤ż¤Î NIS ĽÉĽáĽ¤Ľó¤ňĽ­ĽăĽóĽŃĽš¤Îž¤Î¤¤¤Ż¤Ä¤â¤ÎĽŢĽˇĽó¤ňʤ¤Ś¤â¤Î¤ŘłČÄĽ¤š¤ë¤ł¤Č¤Ç¤šĄŁ Ćó¤Ä¤ÎÉ˝¤Ďżˇ¤ˇ¤¤ĽćĄźĽś¤Čżˇ¤ˇ¤¤ĽŢĽˇĽó¤ÎĚžÁ°¤Č¤˝¤ÎŔâĚŔ¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤šĄŁ ĽćĄźĽś¤ÎĚžÁ° ŔâĚŔ alpha, beta IT łŘ˛Ę¤ÎÄĚžď¤ÎżŚ°÷ charlie, delta IT łŘ˛Ę¤Îżˇ¤ˇ¤¤¸Ť˝Ź¤¤ echo, foxtrott, golf, ... °ěČĚ¤ÎżŚ°÷ able, baker, ... ¤Ţ¤ŔĽ¤ĽóĽżĄźĽó ĽŢĽˇĽó¤ÎĚžÁ° ŔâĚŔ war, death, famine, pollution şÇ¤â˝ĹÍפʼľĄźĽĐĄŁIT żŚ°÷¤Ŕ¤ą¤ŹĽíĽ°ĽŞĽó¤ňľö¤ľ¤ě¤Ţ¤šĄŁ pride, greed, envy, wrath, lust, sloth ¤˘¤Ţ¤ę˝ĹÍפǤʤ¤ĽľĄźĽĐĄŁ IT łŘ˛Ę¤ÎÁ´°÷¤ŹĽíĽ°ĽŞĽó¤ňľö¤ľ¤ě¤Ţ¤šĄŁ one, two, three, four, ... ÄĚžď¤ÎĽďĄźĽŻĽšĽĆĄźĽˇĽçĽóĄŁ ËÜĹö¤Î żŚ°÷¤Ŕ¤ą¤ŹĽíĽ°ĽŞĽó¤ňľö¤ľ¤ě¤Ţ¤šĄŁ trashcan ˝ĹÍ×¤ĘĽÇĄźĽż¤ÎĆţ¤Ă¤Ć¤¤¤Ę¤¤¤Ň¤É¤Ż¸Ĺ¤¤ĽŢĽˇĽóĄŁ Ľ¤ĽóĽżĄźĽó¤Ç¤â¤ł¤ÎĽŢĽˇĽó¤ÎťČÍѤňľö¤ľ¤ě¤Ţ¤šĄŁ ¤â¤ˇ¤˘¤Ę¤ż¤Ź¤ł¤Îźę¤ÎŔŠ¸Â¤ňłĆĽćĄźĽś¤ň¸ÄĘ̤˼ּíĽĂĽŻ¤š¤ëˇÁ¤ÇźÂÁő¤š¤ë¤Ę¤éĄ˘ ¤˘¤Ę¤ż¤Ď¤˝¤ÎĽˇĽšĽĆĽŕ¤ËĽíĽ°ĽŞĽó¤š¤ë¤ł¤Č¤Źľö¤ľ¤ě¤Ć¤¤¤Ę¤¤łĆĽćĄźĽś¤Ë¤Ä¤¤¤Ć -user ¤Č¤¤¤Ś 1 šÔ¤ňĄ˘łĆĽˇĽšĽĆĽŕ¤Î passwd ¤ËÄɲ䡤ʤą¤ě¤Đ¤Ę¤é¤Ę¤Ż¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤â¤ˇ¤˘¤Ę¤ż¤Ź 1 Ľ¨ĽóĽČĽę¤Ç¤âËş¤ě¤ě¤ĐĽČĽéĽÖĽë¤Ë´Ź¤­šţ¤Ţ¤ě¤Ć¤ˇ¤Ţ¤¤¤Ţ¤šĄŁ şÇ˝é¤ÎĽťĽĂĽČĽ˘ĽĂĽ×¤Îťţ¤Ë¤ł¤ě¤ňŔľ¤ˇ¤ŻšÔ¤¨¤ë¤Î¤Ď¤˘¤ę¤¨¤ë¤ł¤Č¤Ť¤âĂΤě¤Ţ¤ť¤ó¤ŹĄ˘ żë¤Ë¤ĎϢĆü¤ÎśČĚł¤Î´Ö¤ËÎă¤ÎšÔ¤ňÄɲäˇËş¤ě¤Ć¤ˇ¤Ţ¤Ś¤Ç¤ˇ¤ç¤ŚĄŁ ˇëśÉĽŢĄźĽŐĽŁĄź¤ĎłÚ´ŃźçľÁźÔ¤Ŕ¤Ă¤ż¤Î¤Ç¤šĄŁ ¤ł¤Îžőśˇ¤ňĽÍĽĂĽČĽ°ĽëĄźĽ×¤Ç°ˇ¤Ś¤Č¤¤¤Ż¤Ä¤Ť¤ÎÍ­Íř¤ĘĹŔ¤Ź¤˘¤ę¤Ţ¤šĄŁ łĆĽćĄźĽś¤ňĘ̸Ĥ˰ˇ¤ŚÉŹÍ×¤Ď¤Ę¤ŻĄ˘ ĽćĄźĽś¤ň°ě¤Ä°Ęžĺ¤ÎĽÍĽĂĽČĽ°ĽëĄźĽ×¤Ëłä¤ęĹö¤ĆĄ˘ ĽÍĽĂĽČĽ°ĽëĄźĽ×¤ÎÁ´ĽáĽóĽĐ¤ÎĽíĽ°Ľ¤Ľó¤ňľö˛Ä¤ˇ¤ż¤ęśŘťß¤ˇ¤ż¤ę¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ żˇ¤ˇ¤¤ĽŢĽˇĽó¤ňÄɲ䚤ë¤Č¤­¤ĎĽÍĽĂĽČĽ°ĽëĄźĽ×¤ŘĽíĽ°Ľ¤Ľó¤ÎŔŠ¸Â¤ňÄęľÁ¤š¤ë¤Ŕ¤ąĄ˘ żˇ¤ˇ¤¤ĽćĄźĽś¤ňÄɲ䚤ë¤Č¤­¤Ď¤˝¤ÎĽćĄźĽś¤ň°ě¤Ä°Ęžĺ¤ÎĽÍĽĂĽČĽ°ĽëĄźĽ×¤ŘÄɲ䚤ë¤Ŕ¤ą¤ÇĄ˘ ¤˝¤ě¤ž¤ěšÔ¤Ę¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĘŃšš¤Ď¸ß¤¤¤ËĆČΊ¤Ę¤Î¤ÇĄ˘ ĽćĄźĽś¤ČĽŢĽˇĽó¤ÎÁČšç¤ď¤ť¤ň¤É¤Ś¤š¤ë¤Ť ¤Ď¸şß¤ˇ¤Ę¤Ż¤Ę¤ę¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤Î NIS ¤ÎĽťĽĂĽČĽ˘ĽĂĽ×¤ŹĂí°Őżź¤Żˇ×˛č¤ľ¤ě¤Ć¤¤¤ě¤ĐĄ˘ ĽŢĽˇĽó¤Ř¤ÎĽ˘ĽŻĽťĽš¤ňǧ¤á¤ë¤Ë¤âľńČݤš¤ë¤Ë¤âĂćż´¤ÎŔßÄę¤ň¤ż¤Ă¤ż°ěĽŤ˝ęĘŃšš¤š¤ë¤Ŕ¤ą¤Ç¤šĄŁ şÇ˝é¤ÎĽšĽĆĽĂĽ×¤Ď NIS ĽŢĽĂĽ×ĽÍĽĂĽČĽ°ĽëĄźĽ×¤Î˝é´ü˛˝¤Ç¤šĄŁ FreeBSD ¤Î &man.ypinit.8; ¤Ď¤ł¤ÎĽŢĽĂĽ×¤ňĽÇĽŐĽŠĽëĽČ¤Çşî¤ę¤Ţ¤ť¤ó¤ŹĄ˘ ¤˝¤Î NIS ¤ÎźÂÁő¤Ď¤˝¤ě¤Źşî¤é¤ě¤ľ¤¨¤š¤ě¤Đ¤˝¤ě¤ňĽľĽÝĄźĽČ¤š¤ë¤â¤Î¤Ç¤šĄŁ śő¤ÎĽŢĽĂĽ×¤ňşî¤ë¤Ë¤ĎĄ˘Ăą¤Ë ellington&prompt.root; vi /var/yp/netgroup ¤ČĽżĽ¤Ľ×¤ˇ¤ĆĆâÍƤňÄɲ䡤Ƥ¤¤­¤Ţ¤šĄŁ ¤ď¤ż¤ˇ¤ż¤Á¤ÎÎă¤Ç¤ĎĄ˘¤š¤Ż¤Ę¤Ż¤Č¤â IT żŚ°÷Ą˘IT ¸Ť˝Ź¤¤Ą˘°ěČĚżŚ°÷Ą˘ Ľ¤ĽóĽżĄźĽó¤Î 4 ¤Ä¤ÎĽÍĽĂĽČĽ°ĽëĄźĽ×¤ŹÉŹÍ×¤Ç¤šĄŁ IT_EMP (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) USERS (,echo,test-domain) (,foxtrott,test-domain) \ (,golf,test-domain) INTERNS (,able,test-domain) (,baker,test-domain) IT_EMP, IT_APP Ĺů¤ĎĽÍĽĂĽČĽ°ĽëĄźĽ×¤ÎĚžÁ°¤Ç¤šĄŁ ¤˝¤ě¤ž¤ě¤Îłç¸Ě¤Ç°Ď¤Ţ¤ě¤żĽ°ĽëĄźĽ×¤Ź°ěżÍ°Ęžĺ¤ÎĽćĄźĽśĽ˘ĽŤĽŚĽóĽČ¤ň¤˝¤ě¤ËĹĐĎż¤ˇ¤Ć¤¤¤Ţ¤šĄŁ Ľ°ĽëĄźĽ×¤Î 3 ¤Ä¤ÎĽŐĽŁĄźĽëĽÉ¤Ď ¤˝¤Îľ­˝Ň¤ŹÍ­¸ú¤ĘĽŰĽšĽČ (ˇ˛) ¤ÎĚžžÎĄŁ ĽŰĽšĽČĚž¤ňĆĂľ­¤ˇ¤Ę¤ą¤ě¤Đ¤˝¤ÎĽ¨ĽóĽČĽę¤Ď¤š¤Ů¤Ć¤ÎĽŰĽšĽČ¤ÇÍ­¸ú¤Ç¤šĄŁ ¤â¤ˇ¤˘¤Ę¤ż¤ŹĽŰĽšĽČĚž¤ňĆĂľ­¤š¤ë¤Ę¤éĄ˘ ¤˘¤Ę¤ż¤Ď°Ç¤Čś˛ÉݤČÁ´¤­şŽÍđ¤ÎÎΰč¤ËĆţ¤ęšţ¤ó¤Ç¤ˇ¤Ţ¤Ś¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ÎĽÍĽĂĽČĽ°ĽëĄźĽ×¤Ë˝ę°¤š¤ëĽ˘ĽŤĽŚĽóĽČ¤ÎĚžžÎĄŁ ¤˝¤ÎĽ˘ĽŤĽŚĽóĽČ¤Î NIS ĽÉĽáĽ¤ĽóĄŁ ¤â¤ˇ¤˘¤Ę¤ż¤Ź°ě¤Ä°Ęžĺ¤Î NIS ĽÉĽáĽ¤Ľó¤ÎÉÔšŹ¤ĘĂç´Ö¤Ę¤éĄ˘ ¤˘¤Ę¤ż¤Ďž¤Î NIS ĽÉĽáĽ¤Ľó¤Ť¤é¤˘¤Ę¤ż¤ÎĽÍĽĂĽČĽ°ĽëĄźĽ×¤ËĽ˘ĽŤĽŚĽóĽČ¤ňĆłĆţ¤Ç¤­¤Ţ¤šĄŁ łĆĽŐĽŁĄźĽëĽÉ¤Ë¤ĎĄ˘ĽďĽ¤ĽëĽÉĽŤĄźĽÉ¤ŹťČ¤¨¤Ţ¤šĄŁ žÜşŮ¤Ď &man.netgroup.5; ¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽÍĽĂĽČĽ°ĽëĄźĽ× 8 ʸťú°Ęžĺ¤ÎĽÍĽĂĽČĽ°ĽëĄźĽ×Ěž¤ĎĄ˘Ćäˤ˘¤Ę¤ż¤Î NIS ĽÉĽáĽ¤Ľó¤Çž¤ÎĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňÁö¤é¤ť¤Ć¤¤¤ë¤Č¤­¤ĎťČ¤Ś¤Ů¤­¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ĚžÁ°¤Ë¤ĎÂçʸťúžŽĘ¸ťú¤ÎśčĘĚ¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤˝¤Î¤ż¤áĽÍĽĂĽČĽ°ĽëĄźĽ×Ěž¤ËÂçʸťú¤ňťČ¤Śťö¤ĎĄ˘ ĽćĄźĽś¤äĽŢĽˇĽóĚž¤ČĽÍĽĂĽČĽ°ĽëĄźĽ×Ěž¤ňśčĘ̤š¤ë´ĘĂą¤ĘĘýËĄ¤Ç¤šĄŁ (FreeBSD °Ęł°¤Î) NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎĂć¤Ë¤Ď Âżżô¤ÎĽ¨ĽóĽČĽę¤ň°ˇ¤¨¤Ę¤¤¤â¤Î¤â¤˘¤ę¤Ţ¤šĄŁ ¤ż¤Č¤¨¤Đ &sunos; ¤Î¸Ĺ¤¤ČÇ¤Ç¤Ď 15 °Ęžĺ¤Î Ľ¨ĽóĽČĽę ¤ň´Ţ¤ŕĽÍĽĂĽČĽ°ĽëĄźĽ×¤ĎĽČĽéĽÖĽë¤ňľŻ¤ł¤ˇ¤Ţ¤šĄŁ ¤ł¤ÎŔŠ¸Â¤Ď 15 ĽćĄźĽś°Ę˛ź¤ÎĽľĽÖĽÍĽĂĽČĽ°ĽëĄźĽ×¤ň¤¤¤Ż¤Ä¤âşî¤ęĄ˘ ËÜĹö¤ÎĽÍĽĂĽČĽ°ĽëĄźĽ×¤Ď¤ł¤ÎĽľĽÖĽÍĽĂĽČĽ°ĽëĄźĽ×¤Ť¤é¤Ę¤ë¤č¤Ś¤Ë¤š¤ë¤ł¤Č¤Ç˛óČň¤Ç¤­¤Ţ¤šĄŁ BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...] BIGGRP2 (,joe16,domain) (,joe17,domain) [...] BIGGRP3 (,joe31,domain) (,joe32,domain) BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3 Ăą°ě¤ÎĽÍĽĂĽČĽ°ĽëĄźĽ×¤Ë 225 żÍ°Ęžĺ¤ÎĽćĄźĽś¤ň¤¤¤ě¤ż¤¤¤Č¤­¤ĎĄ˘ ¤ł¤Î¤ä¤ęĘý¤ňˇŤ¤ęĘÖ¤š¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ żˇ¤ˇ¤¤ NIS ĽŢĽĂĽ×¤ÎÍ­¸ú˛˝¤ČÇŰÉۤϴĘĂą¤Ç¤šĄŁ ellington&prompt.root; cd /var/yp ellington&prompt.root; make ¤ł¤ě¤Çżˇ¤ˇ¤¤ 3 ¤Ä¤Î NIS ĽŢĽĂĽ× netgroup, netgroup.byhost, netgroup.byuser ¤Ź¤Ç¤­¤ë¤Ď¤ş¤Ç¤šĄŁ żˇ¤ˇ¤¤ NIS ĽŢĽĂĽ×¤ŹÍřÍѤǤ­¤ë¤ŤłÎ¤Ť¤á¤ë¤Ë¤Ď &man.ypcat.1; ¤ňťČ¤¤¤Ţ¤šĄŁ ellington&prompt.user; ypcat -k netgroup ellington&prompt.user; ypcat -k netgroup.byhost ellington&prompt.user; ypcat -k netgroup.byuser şÇ˝é¤ÎĽłĽŢĽóĽÉ¤Î˝ĐÎĎ¤Ď /var/yp/netgroup ¤ÎĆâÍƤ˝÷¤Ć¤¤¤ë¤Ď¤ş¤Ç¤šĄŁ 2 ČÖĚܤμłĽŢĽóĽÉ¤ĎĽŰĽšĽČĘ̤μͼüȼ°ĽëĄźĽ×¤ňşî¤Ă¤Ć¤¤¤Ę¤ą¤ě¤Đ˝ĐÎϤľ¤ě¤Ţ¤ť¤óĄŁ 3 ČÖĚܤμłĽŢĽóĽÉ¤ĎĽćĄźĽś¤ËÂФš¤ëĽÍĽĂĽČĽ°ĽëĄźĽ×¤ÎĽęĽšĽČ¤ňĆŔ¤ë¤Î¤ËťČ¤¨¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČÂŚ¤ÎŔßÄę¤ĎČóžď¤Ë´ĘĂą¤Ç¤šĄŁ ĽľĄźĽĐ war ¤ňŔßÄꤚ¤ë¤Ë¤ĎĄ˘ &man.vipw.8; ¤ňźÂšÔ¤ˇ¤Ć°Ę˛ź¤ÎšÔ +::::::::: ¤ň +@IT_EMP::::::::: ¤ËĆţ¤ěÂؤ¨¤ë¤Ŕ¤ą¤Ç¤šĄŁ şŁĄ˘ĽÍĽĂĽČĽ°ĽëĄźĽ× IT_EMP ¤ÇÄęľÁ¤ľ¤ě¤żĽćĄźĽś¤ÎĽÇĄźĽż¤Ŕ¤ą¤Ź war ¤ÎĽŃĽšĽďĄźĽÉĽÇĄźĽżĽŮĄźĽš¤ËĆɤߚţ¤Ţ¤ěĄ˘ ¤˝¤ÎĽćĄźĽś¤Ŕ¤ą¤ŹĽíĽ°Ľ¤Ľó¤ňľö¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ťÄǰ¤Ę¤Ź¤é¤ł¤ÎŔŠ¸Â¤ĎĽˇĽ§Ľë¤Î ~ ¤ÎľĄÇ˝¤äĄ˘ ĽćĄźĽśĚž¤äżôĂͤΠĽćĄźĽś ID ¤ÎĘŃ´šĽëĄźĽÁĽó¤Ë¤âąĆśÁ¤ˇ¤Ţ¤šĄŁ ¤Ä¤Ţ¤ęĄ˘ cd ~user ¤Ď¤Ś¤Ţ¤ŻĆ°¤Ť¤şĄ˘ ls -l ¤ĎĽćĄźĽśĚž¤Î¤Ť¤ď¤ę¤ËżôĂͤΠID ¤ňÉ˝ź¨¤ˇ find . -user joe -print ¤Ď No such user ¤ÇźşÇÔ¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤ňČň¤ą¤ë¤ż¤á¤Ë¤ĎĄ˘¤š¤Ů¤Ć¤ÎĽćĄźĽś¤ÎĽ¨ĽóĽČĽę¤ň ĽľĄźĽĐ¤ËĽíĽ°Ľ¤Ľó¤š¤ë¤ł¤Č¤ňľö¤ľ¤ş¤Ë Ćɤߚţ¤Ţ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ě¤Ď¤â¤Ś°ěšÔ¤ň /etc/master.passwd ¤ËÄɲ䚤뤳¤Č¤ÇźÂ¸˝¤Ç¤­¤Ţ¤šĄŁ¤˝¤ÎšÔ¤Ď°Ę˛ź¤Î +:::::::::/sbin/nologin ¤ň´Ţ¤ó¤Ç¤Ş¤ęĄ˘ ¤ł¤ě¤Ď ¤š¤Ů¤Ć¤ÎĽ¨ĽóĽČĽę¤ňĆɤߚţ¤ŕ¤ŹĄ˘Ćɤߚţ¤Ţ¤ě¤żĽ¨ĽóĽČĽę¤ÎĽˇĽ§Ľë¤Ď /sbin/nologin ¤ÇĂÖ¤­´š¤¨¤é¤ě¤ë ¤Č¤¤¤Ś¤ł¤Č¤ň°ŐĚŁ¤ˇ¤Ţ¤šĄŁpasswd Ľ¨ĽóĽČĽę¤Îž¤ÎĽŐĽŁĄźĽëĽÉ¤ň /etc/master.passwd ¤Î´űÄęĂͤŤ¤éĂÖ¤­´š¤¨¤ë¤ł¤Č¤â˛ÄÇ˝¤Ç¤šĄŁ +:::::::::/sbin/nologin ¤ÎšÔ¤Ź +@IT_EMP::::::::: ¤ÎšÔ¤č¤ę¸ĺ¤í¤Ë°ĚĂÖ¤š¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ľ¤â¤Ę¤¤¤Č NIS ¤Ť¤éĆɤߚţ¤Ţ¤ě¤żÁ´ĽćĄźĽś¤Ź /sbin/nologin ¤ňĽíĽ°Ľ¤ĽóĽˇĽ§Ľë¤Č¤ˇ¤Ćťý¤Ä¤ł¤Č¤Ë¤Ę¤ę¤Ţ¤šĄŁ ¤ł¤ÎĘŃšš¤Î¸ĺ¤Ç¤ĎĄ˘żˇ¤ˇ¤¤żŚ°÷¤Ź IT łŘ˛Ę¤Ëť˛˛Ă¤ˇ¤Ć¤â NIS ĽŢĽĂĽ×¤ň°ě¤Ä˝ń¤­´š¤¨¤ë¤Ŕ¤ą¤ÇşŃ¤ß¤Ţ¤šĄŁ ĆąÍͤˤˇ¤ĆĄ˘¤˘¤Ţ¤ę˝ĹÍפǤʤ¤ĽľĄźĽĐ¤ÎĽíĄźĽŤĽë¤Î /etc/master.passwd ¤Î¤Ť¤Ä¤Ć¤Î +::::::::: šÔ¤ň°Ę˛ź¤Î¤č¤Ś¤ËĂÖ¤­´š¤¨¤Ţ¤šĄŁ +@IT_EMP::::::::: +@IT_APP::::::::: +:::::::::/sbin/nologin ¤ł¤ÎšÔ¤ĎĄ˘°ěČ̤μ寧ĽŻĽšĽĆĄźĽˇĽçĽó¤Ç¤Ď°Ę˛ź¤Î¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ +@IT_EMP::::::::: +@USERS::::::::: +:::::::::/sbin/nologin ¤ł¤ě¤Ç¤ˇ¤Đ¤é¤Ż˝çÄ´¤ËążÍѤˇ¤Ć¤¤¤Ţ¤ˇ¤ż¤ŹĄ˘ żô˝ľ´Ö¸ĺĄ˘ĽÝĽęĽˇ¤ËĘŃšš¤Ź¤˘¤ę¤Ţ¤ˇ¤żĄŁ IT łŘ˛Ę¤ĎĽ¤ĽóĽżĄźĽó¤ň¸Ű¤¤ťĎ¤áĄ˘IT Ľ¤ĽóĽżĄźĽó¤Ď°ěČ̤μ寧ĽŻĽšĽĆĄźĽˇĽçĽó¤ČÍž¤ę˝ĹÍפǤϤʤ¤ĽľĄźĽĐ¤ňťČ¤Ś¤ł¤Č¤Źľö¤ľ¤ěĄ˘ IT ¸Ť˝Ź¤¤¤ĎĽáĽ¤ĽóĽľĄźĽĐ¤Ř¤ÎĽíĽ°Ľ¤Ľó¤Źľö¤ľ¤ě¤Ţ¤ˇ¤żĄŁ ¤˘¤Ę¤ż¤Ďżˇ¤ż¤ĘĽÍĽĂĽČĽ°ĽëĄźĽ× IT_INTERN ¤ňÄɲ䡤ƿˇ¤ˇ¤¤ IT Ľ¤ĽóĽżĄźĽó¤ż¤Á¤ň¤˝¤ÎĽ°ĽëĄźĽ×¤ËĹĐĎż¤ˇĄ˘ ¤š¤Ů¤Ć¤ÎĽŢĽˇĽó¤ÎŔßÄę¤ňĘѤ¨¤Ć˛ó¤ë¤ł¤Č¤Ë¤ˇ¤Ţ¤ˇ¤żĄŁ ¸Ĺ¤¤¸Á¤Ë¤ł¤Ś¤˘¤ę¤Ţ¤šĄŁ ˝¸Ăć´ÉÍý¤Ë¤Ş¤ą¤ë˛á¤Á¤ĎĄ˘Â羏ĚϤʺŽÍđ¤ňĆł¤ŻĄŁ ¤¤¤Ż¤Ä¤Ť¤ÎĽÍĽĂĽČĽ°ĽëĄźĽ×¤Ť¤éżˇ¤ż¤ĘĽÍĽĂĽČĽ°ĽëĄźĽ×¤ňşî¤ë¤Č¤¤¤Ś NIS ¤ÎľĄÇ˝¤ĎĄ˘¤ł¤Î¤č¤Ś¤Ęžőśˇ¤ËÂн褚¤ë¤ż¤á¤ËÍřÍѤǤ­¤Ţ¤šĄŁ ¤˝¤ÎĘýËĄ¤Î°ě¤Ä¤ĎĄ˘ĚňłäĘ̤μͼüȼ°ĽëĄźĽ×¤ňşî¤ë¤ł¤Č¤Ç¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘˝ĹÍפʼľĄźĽĐ¤Ř¤ÎĽíĽ°Ľ¤ĽóŔŠ¸Â¤ňÄęľÁ¤š¤ë¤ż¤á¤Ë BIGSRV ¤Č¤¤¤ŚĽÍĽĂĽČĽ°ĽëĄźĽ×¤ňşî¤ę ¤˘¤Ţ¤ę˝ĹÍפǤϤʤ¤ĽľĄźĽĐ¤Ř¤Ď SMALLSRV ¤Č¤¤¤ŚĽÍĽĂĽČĽ°ĽëĄźĽ×¤ňĄ˘¤˝¤ˇ¤Ć°ěČ̤μ寧ĽŻĽšĽĆĄźĽˇĽçĽóÍŃ¤Ë USERBOX ¤Č¤¤¤ŚÂč 3 ¤ÎĽÍĽĂĽČĽ°ĽëĄźĽ×¤ň şî¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ¤ł¤ě¤é¤ÎĽÍĽĂĽČĽ°ĽëĄźĽ×¤ÎłĆĄš¤ĎĄ˘ łĆĽŢĽˇĽó¤ËĽíĽ°Ľ¤Ľó¤š¤ë¤ł¤Č¤ňľö¤ľ¤ě¤żĽÍĽĂĽČĽ°ĽëĄźĽ×¤ň´Ţ¤ß¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤Î NIS ĽŢĽĂĽ×ĽÍĽĂĽČĽ°ĽëĄźĽ×¤Îżˇ¤ˇ¤¤Ľ¨ĽóĽČĽę¤ĎĄ˘ °Ę˛ź¤Î¤č¤Ś¤Ë¤Ę¤ë¤Ď¤ş¤Ç¤šĄŁ BIGSRV IT_EMP IT_APP SMALLSRV IT_EMP IT_APP ITINTERN USERBOX IT_EMP ITINTERN USERS ¤ł¤ÎĽíĽ°Ľ¤ĽóŔŠ¸Â¤ÎÄęľÁËĄ¤ĎĄ˘ Ćą°ě¤ÎŔŠ¸Â¤ňťý¤ÄĽŢĽˇĽó¤ÎĽ°ĽëĄźĽ×¤ňÄęľÁ¤Ç¤­¤ë¤Č¤­¤Ë¤ĎĘŘÍř¤Ę¤â¤Î¤Ç¤šĄŁ ťÄǰ¤Ę¤Ź¤é¤ł¤Î¤č¤Ś¤ĘĽąĄźĽš¤ĎÎăł°ĹŞ¤Ę¤â¤Î¤Ç¤šĄŁ ¤Ű¤Č¤ó¤É¤ÎžěšçĄ˘ łĆĽŢĽˇĽó¤Ë´đ¤Ĺ¤ŻĽíĽ°Ľ¤ĽóŔŠ¸Â¤ÎÄęľÁľĄÇ˝¤ŹÉŹÍפȤʤë¤Ç¤ˇ¤ç¤ŚĄŁ ĽŢĽˇĽó¤´¤Č¤ÎĽÍĽĂĽČĽ°ĽëĄźĽ×¤ÎÄęľÁ¤ĎĄ˘ žĺ˝Ň¤ˇ¤ż¤č¤Ś¤ĘĽÝĽęĽˇ¤ÎĘŃšš¤ň°ˇ¤Ś¤ł¤Č¤Ź¤Ç¤­¤ë¤â¤Ś¤Ň¤Č¤Ä¤ÎĘýËĄ¤Ç¤šĄŁ ¤ł¤ÎĽˇĽĘĽęĽŞ¤Ç¤ĎĄ˘łĆĽŢĽˇĽó¤Î /etc/master.passwd ¤Ď + ¤ÇťĎ¤Ţ¤ë 2 ¤Ä¤ÎšÔ¤Ť¤é¤Ę¤ę¤Ţ¤šĄŁ şÇ˝é¤Î¤â¤Î¤Ď¤˝¤ÎĽŢĽˇĽó¤Ř¤ÎĽíĽ°Ľ¤Ľó¤ňľö¤ľ¤ě¤żĽ˘ĽŤĽŚĽóĽČ¤ňÄɲ䚤ë¤â¤Î¤ÇĄ˘ 2 ČÖĚܤϤ˝¤Îž¤ÎĽ˘ĽŤĽŚĽóĽČ¤ň /sbin/nologin ¤ňĽˇĽ§Ľë¤Č¤ˇ¤ĆÄɲ䚤ë¤â¤Î¤Ç¤šĄŁ ĽŢĽˇĽóĚž¤ň¤š¤Ů¤ĆÂçʸťú¤Çľ­˝Ň¤ˇ¤ż¤â¤Î¤ňĽÍĽĂĽČĽ°ĽëĄźĽ×¤ÎĚžÁ°¤Č¤ˇ¤ĆťČ¤Ś¤Î¤ĎÎɤ¤šÍ¤¨¤Ç¤šĄŁ ¸Ŕ¤¤´š¤¨¤ě¤ĐĄ˘ˇď¤ÎšÔ¤ĎźĄ¤Î¤č¤Ś¤Ë¤Ę¤ë¤Ď¤ş¤Ç¤šĄŁ +@BOXNAME::::::::: +:::::::::/sbin/nologin °ěĹŮĄ˘łĆĽŢĽˇĽó¤ËÂФˇ¤Ć¤ł¤ÎşîśČ¤ňşŃ¤Ţ¤ť¤Ć¤ˇ¤Ţ¤¨¤ĐĄ˘ ĆóĹŮ¤ČĽíĄźĽŤĽë¤Î /etc/master.passwd ¤ňĘÔ˝¸¤š¤ëÉŹÍפʤƤݤƤę¤Ţ¤šĄŁ °Ęšß¤Î¤š¤Ů¤Ć¤ÎĘŃšš¤Ď NIS ĽŢĽĂĽ×¤ÎĘÔ˝¸¤Ç°ˇ¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ °Ę˛ź¤Ď¤ł¤ÎĽˇĽĘĽęĽŞ¤ËÂĐąţ¤š¤ëĽÍĽĂĽČĽ°ĽëĄźĽ×ĽŢĽĂĽ×¤ËĄ˘ ¤¤¤Ż¤Ä¤Ť¤ÎĘŘÍř¤ĘÄęľÁ¤ňÄɲ䡤żÎă¤Ç¤šĄŁ # Define groups of users first IT_EMP (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) DEPT1 (,echo,test-domain) (,foxtrott,test-domain) DEPT2 (,golf,test-domain) (,hotel,test-domain) DEPT3 (,india,test-domain) (,juliet,test-domain) ITINTERN (,kilo,test-domain) (,lima,test-domain) D_INTERNS (,able,test-domain) (,baker,test-domain) # # Now, define some groups based on roles USERS DEPT1 DEPT2 DEPT3 BIGSRV IT_EMP IT_APP SMALLSRV IT_EMP IT_APP ITINTERN USERBOX IT_EMP ITINTERN USERS # # And a groups for a special tasks # Allow echo and golf to access our anti-virus-machine SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain) # # machine-based netgroups # Our main servers WAR BIGSRV FAMINE BIGSRV # User india needs access to this server POLLUTION BIGSRV (,india,test-domain) # # This one is really important and needs more access restrictions DEATH IT_EMP # # The anti-virus-machine mentioned above ONE SECURITY # # Restrict a machine to a single user TWO (,hotel,test-domain) # [...more groups to follow] ¤â¤ˇĽćĄźĽśĽ˘ĽŤĽŚĽóĽČ¤ň´ÉÍý¤š¤ë¤Î¤ËĽÇĄźĽżĽŮĄźĽš¤ÎÎŕ¤ňťČ¤Ă¤Ć¤¤¤ë¤Ę¤éĄ˘ ĽÇĄźĽżĽŮĄźĽš¤ÎĽěĽÝĄźĽČĽÄĄźĽë¤Ť¤éĽŢĽĂĽ×¤ÎşÇ˝é¤ÎÉôĘŹ¤ňşî¤ě¤ë¤č¤Ś¤Ë¤š¤ë¤Ů¤­¤Ç¤šĄŁ ¤˝¤Ś¤š¤ě¤ĐĄ˘żˇ¤ˇ¤¤ĽćĄźĽś¤ĎźŤĆ°ĹŞ¤ËĽŢĽˇĽó¤ËĽ˘ĽŻĽťĽš¤Ç¤­¤ë¤Ç¤ˇ¤ç¤ŚĄŁ şÇ¸ĺ¤ËťČÍŃžĺ¤ÎĂí°Ő¤ň: ĽŢĽˇĽóĘ̤μͼüȼ°ĽëĄźĽ×¤ňťČ¤Ś¤ł¤Č¤Źžď¤Ë¸­ĚŔ¤Č¤¤¤Ś¤ď¤ą¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ¤˘¤Ę¤ż¤ŹżôĽŔĄźĽš¤Ť¤éżôÉ´¤ÎĆą°ě¤Î´Äś­¤ÎĽŢĽˇĽó¤ňłŘŔ¸¤Î¸Śľćźź¤ËÇŰĂÖ¤ˇ¤Ć¤¤¤ë¤Î¤Ę¤é¤ĐĄ˘ NIS ĽŢĽĂĽ×¤ÎĽľĽ¤Ľş¤ňźęş˘¤ĘČϰϤ˲Ą¤ľ¤¨¤ë¤ż¤á¤ËĄ˘ ĽŢĽˇĽóĘ̤μͼüȼ°ĽëĄźĽ×¤Î¤Ť¤ď¤ę¤ËĚňłäĘ̤μͼüȼ°ĽëĄźĽ×¤ňťČ¤Ś¤Ů¤­¤Ç¤šĄŁ Ëş¤ě¤Ć¤Ď¤¤¤ą¤Ę¤¤¤ł¤Č NIS ´Äś­¤Ë¤˘¤ëşŁĄ˘ şŁ¤Ţ¤Ç¤Č¤Ď°ă¤Ă¤ż¤ä¤ęĘý¤ŹÉŹÍפʤł¤Č¤Ź¤¤¤Ż¤Ä¤Ť¤˘¤ę¤Ţ¤šĄŁ ¸Śľćźź¤ËĽćĄźĽś¤ňÄɲ䚤ë¤Č¤­¤ĎĄ˘¤˝¤ě¤ňĽŢĽšĽżĄź NIS ĽľĄźĽĐ¤Ë ¤Ŕ¤ą Äɲ䡤ʤą¤ě¤Đ¤Ę¤é¤şĄ˘¤ľ¤é¤Ë NIS ĽŢĽĂĽ×¤ňşĆš˝Ăۤš¤ë¤ł¤Č¤ňËş¤ě¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ ¤ł¤ě¤ňËş¤ě¤ë¤Čżˇ¤ˇ¤¤ĽćĄźĽś¤Ď NIS ĽŢĽšĽż°Ęł°¤Î¤É¤ł¤Ë¤âĽíĽ°Ľ¤Ľó¤Ç¤­¤Ę¤Ż¤Ę¤ę¤Ţ¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘żˇ¤ˇ¤ŻĽćĄźĽś jsmith ¤ňĽéĽÜ¤ËĹĐĎż¤ˇ¤ż¤¤¤Č¤­¤Ď°Ę˛ź¤Î¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ &prompt.root; pw useradd jsmith &prompt.root; cd /var/yp &prompt.root; make test-domain pw useradd jsmith ¤Î¤Ť¤ď¤ę¤Ë adduser jsmith ¤ňťČ¤Ś¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ ´ÉÍýÍŃĽ˘ĽŤĽŚĽóĽČ¤ň NIS ĽŢĽĂĽ×¤Ť¤éşď˝ü¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ´ÉÍýÍŃĽ˘ĽŤĽŚĽóĽČ¤äĽŃĽšĽďĄźĽÉ¤ňĄ˘ ¤˝¤ě¤é¤ÎĽ˘ĽŤĽŚĽóĽČ¤ŘĽ˘ĽŻĽťĽš¤ľ¤ť¤Ć¤Ď¤¤¤ą¤Ę¤¤ĽćĄźĽś¤Źľď¤ë¤Ť¤âĂΤě¤Ę¤¤ĽŢĽˇĽó¤Ë¤Ţ¤ÇĹÁ¤¨¤Ć˛ó¤ę¤ż¤¤¤Č¤Ďť×¤ď¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ NIS ¤ÎĽŢĽšĽż¤ČĽšĽěĄźĽÖ¤ňĽťĽ­ĽĺĽ˘¤ËĄ˘ ¤˝¤ˇ¤ĆľĄÇ˝Ääťßťţ´Ö¤ňşÇĂť¤ËĘÝ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤â¤ˇĂݤŤ¤Ź¤ł¤ě¤é¤ÎĽŢĽˇĽó¤ňĽŻĽéĽĂĽŻ¤ˇ¤ż¤ęĄ˘ ¤˘¤ë¤¤¤ĎĂą¤ËĹŸť¤ňÍî¤Č¤ˇ¤ż¤ę¤š¤ë¤ČĄ˘ Čŕ¤é¤ĎźÂźÁĹŞ¤ËÂż¤Ż¤ÎżÍ¤ň¸Śľćźź¤ŘĽíĽ°Ľ¤Ľó¤Ç¤­¤Ę¤Ż¤ˇ¤Ć¤ˇ¤Ţ¤¨¤Ţ¤šĄŁ ¤ł¤ě¤Ď¤É¤Î˝¸Ăć´ÉÍýĽˇĽšĽĆĽŕ¤Ë¤Č¤Ă¤Ć¤â¤â¤Ă¤Č¤âÂ礭¤ĘźĺĹŔ¤Ç¤ˇ¤ç¤ŚĄŁ ¤˘¤Ę¤ż¤Î NIS ĽľĄźĽĐ¤ňźé¤é¤Ę¤ą¤ě¤ĐĹܤě¤ëĽćĄźĽś¤ČÂĐĚ̤š¤ë¤ł¤Č¤Ë¤Ę¤ë¤Ç¤ˇ¤ç¤Ś! NIS v1 ¤Č¤Î¸ß´šŔ­ FreeBSD ¤Î ypserv ¤ĎĄ˘ NIS v1 ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ňÉôĘŹĹŞ¤ËĽľĽÝĄźĽČ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ FreeBSD ¤Î NIS źÂÁő¤Ď NIS v2 Ľ×ĽíĽČĽłĽë¤Î¤ß¤ňťČÍѤˇ¤Ć¤¤¤Ţ¤š¤ŹĄ˘ ¤Ű¤Ť¤ÎźÂÁő¤Ç¤ĎĄ˘¸Ĺ¤¤ĽˇĽšĽĆĽŕ¤Č¤Î˛ź°Ě¸ß´šŔ­¤ňťý¤ż¤ť¤ë¤ż¤á v1 Ľ×ĽíĽČĽłĽë¤ňĽľĽÝĄźĽČ¤ˇ¤Ć¤¤¤ë¤â¤Î¤â¤˘¤ę¤Ţ¤šĄŁ ¤˝¤Î¤č¤Ś¤ĘĽˇĽšĽĆĽŕ¤ËÉŐ¤¤¤Ć¤¤¤ë ypbind ĽÇĄźĽâĽó¤ĎĄ˘ ÉŹÍפʤƤ¤¤Ë¤â¤Ť¤Ť¤ď¤é¤ş NIS v1 ¤ÎĽľĄźĽĐ¤Č¤Îˇëšç¤ňŔŽÎФľ¤ť¤č¤Ś¤Č¤ˇ¤Ţ¤š (¤ˇ¤Ť¤â v2 ĽľĄźĽĐ¤Ť¤é¤ÎąţĹú¤ňźőżŽ¤ˇ¤ż¸ĺ¤Ç¤âĄ˘ ĽÖĽíĄźĽÉĽ­ĽăĽšĽČ¤ň¤ˇÂł¤ą¤ë¤Ť¤âĂΤě¤Ţ¤ť¤ó)ĄŁ FreeBSD ¤Î ypserv ¤ĎĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ť¤é¤ÎÄĚžď¤ÎĽęĽŻĽ¨ĽšĽČ¤ĎĽľĽÝĄźĽČ¤ˇ¤Ć¤¤¤Ţ¤š¤ŹĄ˘ v1 ¤ÎĽŢĽĂĽ×ĹžÁ÷ĽęĽŻĽ¨ĽšĽČ¤ĎĽľĽÝĄźĽČ¤ˇ¤Ć¤¤¤Ę¤¤¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤Ä¤Ţ¤ę FreeBSD ¤Î ypserv ¤ňĄ˘ v1 ¤Ŕ¤ą¤ňĽľĽÝĄźĽČ¤š¤ë¤č¤Ś¤Ę¸Ĺ¤¤ NIS ĽľĄźĽĐ¤ČÁȤߚç¤ď¤ť¤Ć ĽŢĽšĽżĄź¤äĽšĽěĄźĽÖĽľĄźĽĐ¤Č¤ˇ¤ĆťČ¤Ś¤ł¤Č¤Ď¤Ç¤­¤Ţ¤ť¤óĄŁ šŹ¤¤¤Ę¤ł¤Č¤ËĄ˘¸˝şßĄ˘¤˝¤Î¤č¤Ś¤ĘĽľĄźĽĐ¤ŹťČ¤ď¤ě¤Ć¤¤¤ë¤ł¤Č¤Ď ¤Ű¤Č¤ó¤É¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Č¤ˇ¤Ć¤âưşî¤ˇ¤Ć¤¤¤ë NIS ĽľĄźĽĐ ĘŁżô¤ÎĽľĄźĽĐ¤ŹÂ¸şß¤ˇĄ˘ĽľĄźĽĐźŤżČ¤Ź NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ç¤â¤˘¤ë¤č¤Ś¤ĘĽÉĽáĽ¤Ľó¤Ç ypserv ¤ŹźÂšÔ¤ľ¤ě¤ëžěšç¤Ë¤ĎĂí°Ő¤ŹÉŹÍ×¤Ç¤šĄŁ °ěČĚĹŞ¤ËÎɤ¤¤Č¤ľ¤ě¤Ć¤¤¤ë¤Î¤ĎĄ˘ ž¤ÎĽľĄźĽĐ¤Čˇëšç¤ň¤Ä¤Ż¤ë¤č¤Ś¤ËĽÖĽíĄźĽÉĽ­ĽăĽšĽČ¤ľ¤ť¤ë¤Î¤Ç¤Ď¤Ę¤ŻĄ˘ ĽľĄźĽĐ¤ň¤˝¤ěźŤżČ¤Ëˇëšç¤ľ¤ť¤ë¤ł¤Č¤Ç¤šĄŁ ¤â¤ˇĄ˘ĽľĄźĽĐĆąťÎ¤Ź°Í¸´Řˇ¸¤ňťý¤Ă¤Ć¤¤¤ĆĄ˘°ě¤Ä¤ÎĽľĄźĽĐ¤ŹÄäťß¤š¤ë¤ČĄ˘ ´ńĚŻ¤ĘĽľĄźĽÓĽšÉÔÇ˝žőÂ֤˴٤뤳¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤˝¤Îˇë˛ĚĄ˘¤š¤Ů¤Ć¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČ¤ĎĽżĽ¤ĽŕĽ˘ĽŚĽČ¤ňľŻ¤ł¤ˇ¤Ć ž¤ÎĽľĄźĽĐ¤Ëˇëšç¤ˇ¤č¤Ś¤Čťî¤ß¤Ţ¤š¤ŹĄ˘ ¤ł¤ě¤Ë¤Ť¤Ť¤ëťţ´Ö¤Ď¤Ť¤Ę¤ęÂ礭¤ŻĄ˘ ĽľĄźĽĐĆąťÎ¤Ź¤Ţ¤ż¸ß¤¤¤Ëˇëšç¤ˇ¤Ć¤ˇ¤Ţ¤Ă¤ż¤ę¤š¤ë¤ČĄ˘ ĽľĄźĽÓĽšÉÔÇ˝žőÂ֤Ϥľ¤é¤ËˇŃÂł¤š¤ë¤ł¤Č¤Ë¤Ę¤ę¤Ţ¤šĄŁ ypbind ¤Ë ĽŞĽ×ĽˇĽçĽóĽŐĽéĽ°¤ňťŘÄꤡ¤ĆźÂšÔ¤š¤ë¤ł¤Č¤ÇĄ˘ ĽŰĽšĽČ¤ňĆĂÄę¤ÎĽľĄźĽĐ¤Ëˇëšç¤š¤ë¤ł¤Č¤Ź˛ÄÇ˝¤Ç¤šĄŁ NIS ĽľĄźĽĐ¤ňşĆľŻĆ°¤š¤ë¤ż¤Ó¤ËĄ˘¤ł¤ě¤ňźęư¤ÇšÔ¤¤¤ż¤Ż¤Ę¤¤¤Ę¤éĄ˘ źĄ¤ÎšÔ¤ň /etc/rc.conf ¤ËÄɲ䚤ě¤Đ¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ nis_client_enable="YES" # run client stuff as well nis_client_flags="-S NIS domain,server" žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.ypbind.8; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŃĽšĽďĄźĽÉˇÁź° NIS ĽŃĽšĽďĄźĽÉˇÁź° NIS ¤ňźÂÁő¤ˇ¤č¤Ś¤š¤ëżÍ¤ÎĂŻ¤â¤Ź¤Ö¤Ä¤Ť¤ëĚäÂę¤Î°ě¤Ä¤ËĄ˘ ĽŃĽšĽďĄźĽÉˇÁź°¤Î¸ß´šŔ­¤Ź¤˘¤ę¤Ţ¤šĄŁ NIS ĽľĄźĽĐ¤Ź DES °Ĺšć˛˝ĽŃĽšĽďĄźĽÉťČ¤Ă¤Ć¤¤¤ëžěšç¤Ë¤ĎĄ˘ ĆąÍÍ¤Ë DES ¤ňťČÍѤˇ¤Ć¤¤¤ëĽŻĽéĽ¤Ľ˘ĽóĽČ¤ˇ¤ŤÂĐąţ¤Ç¤­¤Ţ¤ť¤óĄŁ ¤ż¤Č¤¨¤Đ &solaris;Ą¨ ¤Î NIS ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ŹĽÍĽĂĽČĽďĄźĽŻĆâ¤Ë¤˘¤ëžěšçĄ˘ ¤Ű¤ÜłÎźÂ¤Ë DES °Ĺšć˛˝ĽŃĽšĽďĄźĽÉ¤ňťČÍѤˇ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ĽľĄźĽĐ¤ČĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ź¤É¤ÎĽéĽ¤ĽÖĽéĽę¤ňťČÍѤˇ¤Ć¤¤¤ë¤Ť¤ĎĄ˘ /etc/login.conf ¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŰĽšĽČ¤Ź DES °ĹšćĽŃĽšĽďĄźĽÉ¤ňťČÍѤš¤ë¤č¤Ś¤ËŔßÄꤾ¤ě¤Ć¤¤¤ëžěšçĄ˘ default ĽŻĽéĽš¤Ë¤Ď°Ę˛ź¤Î¤č¤Ś¤ĘĽ¨ĽóĽČĽę¤Ź´Ţ¤Ţ¤ě¤Ţ¤šĄŁ default:\ :passwd_format=des:\ :copyright=/etc/COPYRIGHT:\ [Further entries elided] passwd_format ĆĂŔ­¤Ë¤Ä¤¤¤Ćž¤ËÍřÍѲÄÇ˝¤ĘĂÍ¤Ď blf ¤Ş¤č¤Ó md5 (¤˝¤ě¤ž¤ě Blowfish ¤Ş¤č¤Ó MD5 °Ĺšć˛˝ĽŃĽšĽďĄźĽÉ) ¤Ç¤šĄŁ /etc/login.conf ¤ňĘŃšš¤ˇ¤ż¤Č¤­¤ĎĄ˘ ĽíĽ°Ľ¤ĽóĆĂŔ­ĽÇĄźĽżĽŮĄźĽš¤âşĆš˝Ăۤˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ě¤Ď root ¸˘¸Â¤Ç˛źľ­¤Î¤č¤Ś¤ËĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ě¤Đ¤Ç¤­¤Ţ¤šĄŁ &prompt.root; cap_mkdb /etc/login.conf ¤š¤Ç¤Ë /etc/master.passwd Ćâ¤Ëľ­Ďż¤ľ¤ě¤Ć¤¤¤ëĽŃĽšĽďĄźĽÉˇÁź°¤ĎĄ˘ ĽíĽ°Ľ¤ĽóĆĂŔ­ĽÇĄźĽżĽŮĄźĽš¤ŹşĆš˝Ăۤľ¤ě¤ż¸ĺĄ˘ ĽćĄźĽś¤ŹČŕ¤é¤ÎĽŃĽšĽďĄźĽÉ¤ň¤Ď¤¸¤á¤ĆĘŃšš¤š¤ë¤Ţ¤ÇĘŃšš¤ľ¤ě¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ źĄ¤ËĄ˘ ĽŃĽšĽďĄźĽÉ¤ŹÁŞÂň¤ˇ¤żˇÁź°¤Ç°Ĺšć˛˝¤ľ¤ě¤ë¤ł¤Č¤ňłÎźÂ¤Ë¤š¤ë¤ż¤á¤ËĄ˘ ¤ľ¤é¤Ë /etc/auth.conf Ćâ¤Î crypt_default ¤Ë¤Ş¤¤¤ĆĄ˘ ÁŞÂň¤ˇ¤żĽŃĽšĽďĄźĽÉˇÁź°¤Ëšâ¤¤ÍĽŔč˝ç°Ě¤Ź¤Ä¤¤¤Ć¤¤¤ë¤ł¤Č¤âłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤˝¤Ś¤š¤ë¤ż¤á¤Ë¤ĎĄ˘ÁŞÂň¤ˇ¤żˇÁź°¤ňĽęĽšĽČ¤ÎŔčĆŹ¤ËĂÖ¤¤¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ż¤Č¤¨¤Đ DES °Ĺšć˛˝¤ľ¤ě¤żĽŃĽšĽďĄźĽÉ¤ňťČÍѤš¤ë¤Č¤­¤ĎĄ˘ Ľ¨ĽóĽČĽę¤ĎźĄ¤Î¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ crypt_default = des blf md5 &os; žĺ¤ÎłĆ NIS ĽľĄźĽĐ¤Ş¤č¤ÓĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ë¤Ş¤¤¤Ćžĺľ­¤Îźę˝ç¤Ë˝ž¤¨¤ĐĄ˘ ĽÍĽĂĽČĽďĄźĽŻĆâ¤Ç¤É¤ÎĽŃĽšĽďĄźĽÉˇÁź°¤ŹťČÍѤľ¤ě¤ë¤Ť¤Ź ¤˝¤ě¤é¤ÎĽŢĽˇĽó´Ö¤ÇŔ°šç¤ľ¤ě¤Ć¤¤¤ë¤Č¤¤¤Ś¤ł¤Č¤ňłÎżŽ¤Ç¤­¤Ţ¤šĄŁ NIS ĽŻĽéĽ¤Ľ˘ĽóĽČžĺ¤ÇĚäÂꤏ¤˘¤ě¤ĐĄ˘ ¤ł¤ł¤Ť¤éĚäÂę¤Č¤Ę¤ę¤˝¤Ś¤ĘÉôĘŹ¤ňĂľ¤š¤ČÎɤ¤¤Ç¤ˇ¤ç¤ŚĄŁ łĐ¤¨¤Ć¤Ş¤¤¤Ć¤Ż¤Ŕ¤ľ¤¤: °ŰźďşŽşßĽÍĽĂĽČĽďĄźĽŻ¤Ë NIS ĽľĄźĽĐ¤ňÇŰĂÖ¤ˇ¤ż¤¤¤Č¤­¤Ë¤ĎĄ˘ DES ¤ŹşÇÂç¸řĚóżôĹŞ¤Ęɸ˝ŕ¤Č¤Ę¤ë¤Ç¤ˇ¤ç¤Ś¤Ť¤éĄ˘ ¤š¤Ů¤Ć¤ÎĽˇĽšĽĆĽŕ¤Ç DES ¤ňťČÍѤˇ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ Greg Sutter ¸śşî: DHCP DHCP ¤Č¤Ď˛ż¤Ç¤ˇ¤ç¤Ś¤Ť? ĽŔĽ¤ĽĘĽßĽĂĽŻĽŰĽšĽČĽłĽóĽŐĽŁĽŽĽĺĽěĄźĽˇĽçĽóĽ×ĽíĽČĽłĽë (DHCP) DHCP Ľ¤ĽóĽżĄźĽÍĽĂĽČĽ˝ĽŐĽČĽŚĽ§Ľ˘ĽłĽóĽ˝ĄźĽˇĽ˘Ľŕ (ISC) DHCP (Dynamic Host Configuration Protocol) ¤ĎĄ˘ ĽˇĽšĽĆĽŕ¤ňĽÍĽĂĽČĽďĄźĽŻ¤ËŔÜÂł¤š¤ë¤Ŕ¤ą¤ÇĄ˘ ĽÍĽĂĽČĽďĄźĽŻ¤Ç¤ÎÄĚżŽ¤ËÉŹÍפʞđĘó¤ňĆţźę¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤ëťĹÁČ¤ß¤Ç¤šĄŁ FreeBSD ¤Ç¤Ď ISC (Internet Software Consortium) ¤Ë¤č¤ë DHCP ¤ÎźÂÁő¤ňťČÍѤˇ¤Ć¤¤¤Ţ¤šĄŁ¤ˇ¤ż¤Ź¤Ă¤ĆĄ˘ ¤ł¤ł¤Ç¤ÎŔâĚŔ¤Î¤Ś¤ÁźÂÁő¤Ë¤č¤Ă¤Ć°Ű¤Ę¤ëÉôĘŹ¤Ď ISC ¤Î¤â¤ÎÍѤˤʤäƤ¤¤Ţ¤šĄŁ ¤ł¤ÎŔá¤ÇŔâĚŔ¤ˇ¤Ć¤¤¤ë¤ł¤Č ¤ł¤ÎŔá¤Ď ISC DHCP ĽˇĽšĽĆĽŕ¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČÂŚ¤Ş¤č¤ÓĽľĄźĽĐÂŚ¤Îš˝ŔŽÍ×ÁǤÎΞĘý¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČÂŚ¤ÎĽ×ĽíĽ°ĽéĽŕ¤Ç¤˘¤ë dhclient ¤Ď FreeBSD ¤ÎĽŮĄźĽšĽˇĽšĽĆĽŕĆâ¤Ë´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ¤˝¤ˇ¤ĆĄ˘ĽľĄźĽĐÂŚ¤ÎÍ×ÁÇ¤Ď net/isc-dhcp3-server port ¤Ť¤éÍřÍѲÄÇ˝¤Ç¤šĄŁ˛źľ­¤ÎŔâĚŔ¤Îž¤ËĄ˘ &man.dhclient.8;, &man.dhcp-options.5; ¤Ş¤č¤Ó &man.dhclient.conf.5; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ŹĚň¤Ë¤ż¤ÄžđĘó¸ť¤Ç¤šĄŁ DHCP ¤Îưşî UDP ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Č¤Ę¤ëĽŢĽˇĽóžĺ¤ÇĄ˘ DHCP ¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ç¤˘¤ë dhclient ¤ňźÂšÔ¤š¤ë¤ČĄ˘ ¤Ţ¤şŔßÄęžđĘó¤ÎÍ׾á¤ňĽÖĽíĄźĽÉĽ­ĽăĽšĽČ¤ˇ¤Ţ¤šĄŁĽÇĽŐĽŠĽëĽČ¤Ç¤ĎĄ˘ ¤ł¤ÎĽęĽŻĽ¨ĽšĽČ¤Ë¤Ď UDP ¤ÎĽÝĄźĽČ 68 ¤ňťČÍѤˇ¤Ţ¤šĄŁ ĽľĄźĽĐ¤Ď UDP ¤ÎĽÝĄźĽČ 67 ¤ÇąţĹú¤ˇĄ˘ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Î IP Ľ˘ĽÉĽěĽš¤ČĄ˘ ĽÍĽĂĽČĽŢĽšĽŻ¤äĽëĄźĽżĄ˘DNS ĽľĄźĽĐ¤Ę¤É¤Î´ŘϢ¤š¤ëžđĘó¤ňÄ󜥤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎžđĘó¤Î¤š¤Ů¤Ć¤Ď DHCP ¤Î ĽęĄźĽš ¤ÎˇÁ¤ÇÁ÷¤é¤ěĄ˘DHCP ĽľĄźĽĐ´ÉÍýźÔ¤Ë¤č¤Ă¤Ćˇč¤á¤é¤ě¤ż¤˘¤ë°ěÄę¤Îťţ´ÖĆâ¤Ç¤Î¤ßÍ­¸ú¤Ë¤Ę¤ę¤Ţ¤šĄŁ ¤ł¤ě¤Ë¤č¤Ă¤ĆĄ˘ĽÍĽĂĽČĽďĄźĽŻ¤Ë¸şß¤ˇ¤Ę¤Ż¤Ę¤Ă¤żĽŰĽšĽČ¤Î IP Ľ˘ĽÉĽěĽš¤ĎźŤĆ°ĹŞ¤Ë˛óźý¤ľ¤ě¤ë¤ł¤Č¤Ë¤Ę¤ę¤Ţ¤šĄŁ DHCP ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ĎĽľĄźĽĐ¤Ť¤éČóžď¤ËÂż¤Ż¤ÎžđĘó¤ňźčĆŔ¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ &man.dhcp-options.5; ¤ËČóžď¤ËÂ礭¤ĘĽęĽšĽČ¤ŹşÜ¤Ă¤Ć¤¤¤Ţ¤šĄŁ FreeBSD ¤Ř¤ÎÁȤߚţ¤ß FreeBSD ¤Ď ISC ¤Î DHCP ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ç¤˘¤ë dhclient ¤ň´°Á´¤ËÁȤߚţ¤ó¤Ç¤¤¤Ţ¤šĄŁ DHCP ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ĎĽ¤ĽóĽšĽČĄźĽé¤Č´đËÜĽˇĽšĽĆĽŕ¤ÎΞĘý¤ÇÄ󜥤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤Ç¤š¤Ť¤é DHCP ĽľĄźĽĐ¤ňÁö¤é¤ť¤Ć¤¤¤ëĽÍĽĂĽČĽďĄźĽŻžĺ¤Ç¤ĎĽÍĽĂĽČĽďĄźĽŻ´Řˇ¸¤ÎŔßÄę¤Ë¤Ä¤¤¤Ć¤ÎžÜşŮ¤ĘĂÎźą¤ĎÉŹÍפˤʤę¤Ţ¤ť¤óĄŁ dhclient ¤ĎĄ˘3.2 °Ęšß¤Î¤š¤Ů¤Ć¤Î FreeBSD ¤ÎÇŰÉŰĘŞ¤Ë´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ sysinstall DHCP ¤Ď sysinstall ¤ÇÂĐąţ¤ľ¤ě¤Ć¤Ş¤ęĄ˘sysinstall ¤Ç¤ÎĽÍĽĂĽČĽďĄźĽŻĽ¤ĽóĽżĽŐĽ§Ľ¤ĽšŔßÄę¤ÎşÝ¤ĎĄ˘ ¤ł¤ÎĽ¤ĽóĽżĽŐĽ§Ľ¤Ľš¤ÎŔßÄę¤Č¤ˇ¤Ć DHCP ¤ňťî¤ˇ¤Ć¤ß¤Ţ¤š¤Ť? (Do you want to try DHCP configuration of this interface?) ¤Č¤¤¤ŚźÁĚ䤏şÇ˝é¤Ë¤Ę¤ľ¤ě¤Ţ¤šĄŁ ¤ł¤ě¤ËĆą°Ő¤š¤ë¤ł¤Č¤Ç dhclient ¤ŹźÂšÔ¤ľ¤ěĄ˘ ¤˝¤ě¤ŹŔޏů¤š¤ě¤ĐĽÍĽĂĽČĽďĄźĽŻ¤ÎŔßÄęžđĘó¤ĎźŤĆ°ĹŞ¤ËźčĆŔ¤ľ¤ě¤Ţ¤šĄŁ ĽˇĽšĽĆĽŕľŻĆ°ťţ¤Ë DHCP ¤ňťČ¤Ă¤ĆĽÍĽĂĽČĽďĄźĽŻžđĘó¤ňźčĆŔ¤š¤ë¤č¤Ś¤Ë ¤š¤ë¤Ë¤ĎĄ˘źĄ¤ÎĆó¤Ä¤ňšÔ¤Ę¤ŚÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ DHCP ÉŹÍמňˇď bpf ĽÇĽĐĽ¤Ľš¤ŹĽŤĄźĽÍĽë¤ËÁȤߚţ¤Ţ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňłÎǧ¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤ňÁȤߚţ¤ŕ¤Ë¤ĎĄ˘ĽŤĄźĽÍĽëĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤Ë pseudo-device bpf ¤Č¤¤¤ŚšÔ¤ňÄɲ䡥˘ĽŤĄźĽÍĽë¤ňşĆš˝Ăۤˇ¤Ţ¤šĄŁ ĽŤĄźĽÍĽë¤Îš˝Ăۤ˴ؤš¤ëžÜşŮ¤ĎĄ˘ ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ bpf ĽÇĽĐĽ¤Ľš¤ĎĄ˘ FreeBSD ¤Ë¤Ď¤¸¤á¤Ť¤éÍѰդľ¤ě¤Ć¤¤¤ë GENERIC ĽŤĄźĽÍĽë¤ËÁȤߚţ¤Ţ¤ě¤Ć¤¤¤Ţ¤š¤Î¤ÇĄ˘ źŤĘʤÇŔßÄę¤ňĘѤ¨¤żĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ňťČ¤Ă¤Ć¤¤¤ë¤Î¤Ç¤Ę¤ą¤ě¤ĐĄ˘ DHCP ¤ňưşî¤ľ¤ť¤ë¤ż¤á¤ËĽŤĄźĽÍĽë¤ňşĆš˝Ăۤš¤ëÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ ĽťĽ­ĽĺĽęĽĆĽŁ¤Ë´Řż´¤Î¤˘¤ëĘý¸ţ¤ą¤ËĂí°Ő¤ˇ¤Ć¤Ş¤­¤Ţ¤šĄŁ bpf ĽÇĽĐĽ¤Ľš¤ĎĄ˘ĽŃĽąĽĂĽČĽšĽËĽŐĽĄ (ĹđİĽ×ĽíĽ°ĽéĽŕ) ¤ňưşî¤ľ¤ť¤ë¤ł¤Č¤Ź¤Ç¤­¤ë (¤ż¤Ŕ¤ˇ root ¸˘¸Â¤ŹÉŹÍ×) ĽÇĽĐĽ¤Ľš¤Ç¤šĄŁ bpf ¤Ď DHCP ¤ňưşî¤ľ¤ť¤ë¤ż¤á¤Ë ¤Ť¤Ę¤é¤şÉŹÍ×¤Ç¤š¤ŹĄ˘ ĽťĽ­ĽĺĽęĽĆĽŁ¤ŹČóžď¤Ë˝ĹÍפʞěĚĚ¤Ç¤Ď DHCP ¤ň¤¤¤Ä¤ŤťČ¤Ś¤Ť¤â¤ˇ¤ě¤Ę¤¤¤Č¤¤¤Ś¤Ŕ¤ą¤Ç bpf ĽÇĽĐĽ¤Ľš¤ňĽŤĄźĽÍĽë¤ËÄɲ䚤٤­¤Ç¤Ď¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ /etc/rc.conf ¤ňĘÔ˝¸¤ˇ¤ĆĄ˘ źĄ¤ÎšÔ¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ ifconfig_fxp0="DHCP" ¤ÇŔâĚŔ¤ľ¤ě¤Ć¤¤¤ë¤č¤Ś¤Ë fxp0 ¤ÎÉôĘŹ¤ňĄ˘ ưŪ¤ËŔßÄꤡ¤ż¤¤Ľ¤ĽóĽżĽŐĽ§ĄźĽš¤ÎĚžÁ°¤ÇĂÖ¤­´š¤¨¤ë¤ł¤Č¤ňËş¤ě¤Ę¤¤¤č¤Ś¤Ë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤â¤ˇĄ˘ťČ¤Ă¤Ć¤¤¤ë dhclient ¤Îžě˝ę¤ňĘŃšš¤ˇ¤Ć¤¤¤ż¤ęĄ˘dhclient ¤ËĽŐĽéĽ°¤ňĹϤˇ¤ż¤¤žěšç¤ĎĄ˘ ĆąÍͤ˲ź¤Î¤č¤Ś¤Ë˝ń¤­˛Ă¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ dhcp_program="/sbin/dhclient" dhcp_flags="" DHCP ĽľĄźĽĐ DHCP ĽľĄźĽĐ dhcpd ¤ĎĄ˘Ports Collection ¤Ë net/isc-dhcp3-server ¤Î°ěÉô¤Č¤ˇ¤ĆźýĎż¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤Î port ¤Ë¤Ď ISC DHCP ĽľĄźĽĐ¤Čʸ˝ń¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ ´ŘϢĽŐĽĄĽ¤Ľë DHCP ŔßÄęĽŐĽĄĽ¤Ľë /etc/dhclient.conf dhclient ¤ĎŔßÄęĽŐĽĄĽ¤Ľë /etc/dhclient.conf ¤ňÉŹÍפȤˇ¤Ţ¤šĄŁ ÂçÄń¤ÎžěšçĄ˘¤ł¤ÎĽŐĽĄĽ¤Ľë¤ĎĽłĽáĽóĽČ¤Ŕ¤ą¤Ç¤˘¤ęĄ˘ ĽÇĽŐĽŠĽëĽČ¤ŹÄĚžďťČ¤¤¤ä¤š¤¤ŔßÄę¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤Ď &man.dhclient.conf.5; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ÇŔâĚŔ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ /sbin/dhclient dhclient ¤ĎŔĹĹŞ¤ËĽęĽóĽŻ¤ľ¤ě¤Ć¤Ş¤ęĄ˘ /sbin ¤ËĂÖ¤Ť¤ě¤Ć¤¤¤Ţ¤šĄŁ&man.dhclient.8; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤Ç dhclient ĽłĽŢĽóĽÉ¤Ë¤Ä¤¤¤Ć¤č¤ęžÜ¤ˇ¤ŻŔâĚŔ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ /sbin/dhclient-script dhclient-script ¤Ď FreeBSD ĆĂÍ­¤ÎĄ˘ DHCP ĽŻĽéĽ¤Ľ˘ĽóĽČŔßÄ꼚ĽŻĽęĽ×ĽČ¤Ç¤šĄŁ¤ł¤ě¤Ë¤Ä¤¤¤Ć¤Ď &man.dhclient-script.8; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ÇŔâĚŔ¤ľ¤ě¤Ć¤¤¤Ţ¤š¤ŹĄ˘ ¤ł¤ě¤ňĘÔ˝¸¤š¤ëÉŹÍפϤۤȤó¤ÉČŻŔ¸¤ˇ¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ /var/db/dhclient.leases DHCP ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ď¤ł¤ÎĽŐĽĄĽ¤Ľë¤ËÍ­¸ú¤ĘĽęĄźĽš¤ÎĽÇĄźĽżĽŮĄźĽš¤ňĽíĽ°¤Č¤ˇ¤Ćľ­Ďż¤ˇ¤Ţ¤šĄŁ &man.dhclient.leases.5; ¤Ë¤â¤Ś¤š¤ł¤ˇžÜ¤ˇ¤¤˛ňŔ⤏¤˘¤ę¤Ţ¤šĄŁ ť˛šÍ¤Ë¤Ę¤ëʸ¸Ľ DHCP ¤ÎĽ×ĽíĽČĽłĽë¤Ď RFC 2131 ¤Ë´°Á´¤Ëľ­˝Ň¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ¤Ţ¤ż dhcp.org ¤Ë¤âÍ­ÍѤʞđĘ󸝤ŹÍѰդľ¤ě¤Ć¤¤¤Ţ¤šĄŁ DHCP ĽľĄźĽĐ¤ÎĽ¤ĽóĽšĽČĄźĽë¤ČŔßÄę ¤ł¤ÎŔá¤ÇŔâĚŔ¤ˇ¤Ć¤¤¤ë¤ł¤Č ¤ł¤ÎŔá¤Ď DHCP ¤Î ISC (Internet Software Consortium) źÂÁő¤ňÍѤ¤¤Ć FreeBSD ĽˇĽšĽĆĽŕ¤ň DHCP ĽľĄźĽĐ¤Č¤ˇ¤Ćưşî¤ľ¤ť¤ëĘýËĄ¤ÎžđĘó¤ňÄ󜥤ˇ¤Ţ¤šĄŁ DHCP ¤ÎĽľĄźĽĐÉôĘŹ¤Ď FreeBSD ¤Î°ěÉô¤Č¤ˇ¤ĆÄ󜥤ľ¤ě¤Ţ¤ť¤óĄŁ ¤ˇ¤ż¤Ź¤Ă¤ĆĄ˘¤ł¤ÎĽľĄźĽÓĽš¤ňÄ󜥤š¤ë¤ż¤á¤Ë net/isc-dhcp3-server port ¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ëÉŹÍפʤ˘¤ë¤Ç¤ˇ¤ç¤ŚĄŁ Ports Collection ¤ňťČÍѤš¤ëžđĘó¤Ë¤Ä¤¤¤Ć¤ÎžÜşŮ¤Ď ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ DHCP ĽľĄźĽĐ¤ÎĽ¤ĽóĽšĽČĄźĽë DHCP Ľ¤ĽóĽšĽČĄźĽë FreeBSD ĽˇĽšĽĆĽŕ¤ň DHCP ĽľĄźĽĐ¤Č¤ˇ¤ĆŔßÄꤚ¤ë¤ż¤á¤ËĄ˘&man.bpf.4; ĽÇĽĐĽ¤Ľš¤ŹĽŤĄźĽÍĽë¤ËÁȤߚţ¤Ţ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňĘÝžÚ¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤˝¤Ś¤š¤ë¤ż¤á¤Ë¤ĎĄ˘ĽŤĄźĽÍĽëĽłĽóĽŐĽŁĽŽĽĺĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤Ë pseudo-device bpf ¤ňÄɲ䡤ƥ˘ ĽŤĄźĽÍĽë¤ňşĆš˝Ăۤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŤĄźĽÍĽë¤Îš˝Ăۤ˴ؤš¤ëžÜşŮ¤Ď ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ bpf ĽÇĽĐĽ¤Ľš¤ĎĄ˘ FreeBSD ¤Ë¤Ď¤¸¤á¤Ť¤éÍѰդľ¤ě¤Ć¤¤¤ë GENERIC ĽŤĄźĽÍĽë¤Î°ěÉô¤Ę¤Î¤ÇĄ˘DHCP ¤ňưşî¤ľ¤ť¤ë¤ż¤á¤ËĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ňşîŔޤš¤ëÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ ĽťĽ­ĽĺĽęĽĆĽŁ¤ňĆĂ¤Ë°Őźą¤š¤ëżÍ¤ĎĄ˘bpf bpf ¤ĎĽŃĽąĽĂĽČĽšĽËĽŐĽĄ (ĹđİĽ×ĽíĽ°ĽéĽŕ) ¤ŹŔľžď¤Ë (¤ł¤Î¤č¤Ś¤ĘĽ×ĽíĽ°ĽéĽŕ¤Ď¤ľ¤é¤ËĆø˘Ľ˘ĽŻĽťĽš¤ňÉŹÍפȤˇ¤Ţ¤š¤Ź) ưşî¤š¤ë¤ł¤Č¤ň˛ÄÇ˝¤Ë¤š¤ëĽÇĽĐĽ¤Ľš¤Ç¤â¤˘¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ bpf ¤Ď DHCP ¤ňťČÍѤš¤ë¤ż¤á¤ËÉŹÍ× ¤Ç¤šĄŁ ¤ˇ¤Ť¤ˇĄ˘ĽťĽ­ĽĺĽęĽĆĽŁ¤ň¤Č¤Ć¤âľ¤¤Ë¤ˇ¤Ć¤¤¤ë¤Ę¤éĄ˘ DHCP ¤ň¤¤¤Ä¤ŤťČ¤Ś¤Ť¤â¤ˇ¤ě¤Ę¤¤¤Č¤¤¤Ś¤Ŕ¤ą¤Ç bpf ĽÇĽĐĽ¤Ľš¤ňĽŤĄźĽÍĽë¤Ë´Ţ¤á¤ë¤Ů¤­¤Ç¤Ď¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ źĄ¤ËšÔ¤ď¤Í¤Đ¤Ę¤é¤Ę¤¤¤Î¤ĎĄ˘ net/isc-dhcp3-server port ¤Ë¤č¤Ă¤ĆĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤ż dhcpd.conf ¤ÎĽľĽóĽ×Ľë¤ňĘÔ˝¸¤š¤ë¤ł¤Č¤Ç¤šĄŁ ĽÇĽŐĽŠĽëĽČ¤Ç¤ĎĄ˘¤ł¤ě¤Ď /usr/local/etc/dhcpd.conf.sample ¤ÇĄ˘ ĘÔ˝¸¤š¤ëÁ°¤Ë¤ł¤ě¤ň /usr/local/etc/dhcpd.conf ¤ËĽłĽÔĄź¤š¤ë¤Ů¤­¤Ç¤ˇ¤ç¤ŚĄŁ DHCP ĽľĄźĽĐ¤ÎŔßÄę DHCP dhcpd.conf dhcpd.conf ¤ĎĽľĽÖĽÍĽĂĽČ¤Ş¤č¤ÓĽŰĽšĽČ¤Ë´Ř¤š¤ëŔë¸Ŕ¤Çš˝Ŕޤľ¤ě¤Ţ¤šĄŁ Îă¤ňťČ¤Ă¤ĆŔâĚŔ¤š¤ë¤Î¤ŹşÇ¤â´ĘĂą¤Ç¤ˇ¤ç¤ŚĄŁ option domain-name "example.com"; option domain-name-servers 192.168.4.100; option subnet-mask 255.255.255.0; default-lease-time 3600; max-lease-time 86400; ddns-update-style none; subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.129 192.168.4.254; option routers 192.168.4.1; } host mailhost { hardware ethernet 02:03:04:05:06:07; fixed-address mailhost.example.com; } ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ĎĄ˘ ĽÇĽŐĽŠĽëĽČĂľş÷ĽÉĽáĽ¤Ľó¤Č¤ˇ¤ĆĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËĹϤľ¤ě¤ëĽÉĽáĽ¤Ľó¤ňťŘÄꤡ¤Ţ¤šĄŁ ¤ł¤ě¤Ź°ŐĚŁ¤š¤ë¤Č¤ł¤í¤ÎžÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.resolv.conf.5; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ĎĽŻĽéĽ¤Ľ˘ĽóĽČ¤ŹťČÍѤš¤ëĄ˘ ĽłĽóĽŢ¤ÇśčŔÚ¤é¤ě¤ż DNS ĽľĄźĽĐ¤ÎĽęĽšĽČ¤ňťŘÄꤡ¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËĹϤľ¤ě¤ëĽÍĽĂĽČĽŢĽšĽŻ¤Ç¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ĎĆĂÄę¤ÎĽęĄźĽš´ü¸Â¤ňÍ׾ᤚ¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ ¤˝¤ě°Ęł°¤Îžěšç¤ĎĄ˘ĽľĄźĽĐ¤Ď¤ł¤ÎĽęĄźĽš´ü¸ÂĂÍ (ÉĂ) ¤ÇĽęĄźĽš¤ňłä¤ęĹö¤Ć¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ě¤ĎĽľĄźĽĐ¤ŹĽęĄźĽš¤š¤ëťţ´Ö¤ÎşÇÂçĂÍ¤Ç¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ź¤ł¤ě¤č¤ęÄš¤¤ĽęĄźĽš¤ňÍ׾ᤡ¤Ć¤âĄ˘ max-lease-time ÉäŔ¤ą¤ˇ¤ŤÍ­¸ú¤Ë¤Ę¤é¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ĎĄ˘ĽęĄźĽš¤ŹźőÍýĄ˘¤Ţ¤ż¤ĎĽęĽęĄźĽš¤ľ¤ě¤ż¤Č¤­¤Ë DHCP ĽľĄźĽĐ¤Ź DNS ¤ňššżˇ¤ˇ¤č¤Ś¤Č¤š¤ë¤Ť¤É¤Ś¤Ť¤ňťŘÄꤡ¤Ţ¤šĄŁ ISC źÂÁő¤Ç¤ĎĄ˘¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤Ď ÉŹżÜ ¤Ç¤šĄŁ ¤ł¤ě¤Ď¤É¤ÎČϰϤΠIP Ľ˘ĽÉĽěĽš¤ŹĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ëłä¤ęĹö¤Ć¤ë¤ż¤á¤ËÍ˝Ě󤾤줿Ľ×ĄźĽë¤ËťČÍѤľ¤ě¤ë¤Ť¤ňꍤˇ¤Ţ¤šĄŁ ¤ł¤ÎČϰϤ˴ޤޤě¤Ć¤¤¤ë IP Ľ˘ĽÉĽěĽš¤ĎĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËĹϤľ¤ě¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËśĄľë¤ľ¤ě¤ëĽÇĽŐĽŠĽëĽČĽ˛ĄźĽČĽŚĽ§Ľ¤¤ňŔë¸Ŕ¤ˇ¤Ţ¤šĄŁ (ĽęĽŻĽ¨ĽšĽČ¤ŹŔ¸¤¸¤żťţ¤Ë DHCP ĽľĄźĽĐ¤ŹĽŰĽšĽČ¤ňÇ§źą¤Ç¤­¤ë¤č¤Ś¤Ë) ĽŰĽšĽČ¤ÎĽĎĄźĽÉĽŚĽ§Ľ˘ MAC Ľ˘ĽÉĽěĽš¤ňťŘÄꤡ¤Ţ¤šĄŁ ĽŰĽšĽČ¤Ëžď¤ËĆą¤¸ IP Ľ˘ĽÉĽěĽš¤ňÉŐÍż¤š¤ë¤ł¤Č¤ňťŘÄꤡ¤Ţ¤šĄŁ DHCP ĽľĄźĽĐ¤ĎĽęĄźĽšžđĘó¤ňĘÖ¤šÁ°¤ËĽŰĽšĽČĚž¤ÎĚžÁ°˛ňˇč¤ň¤š¤ë¤Î¤ÇĄ˘ ¤ł¤ł¤ËĽŰĽšĽČĚž¤ň˝ń¤¤¤Ć¤âš˝¤¤¤Ţ¤ť¤óĄŁ dhcpd.conf ¤ň˝ń¤­˝Ş¤¨¤ż¤é°Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ÇĽľĄźĽĐ¤ňľŻĆ°¤Ç¤­¤Ţ¤šĄŁ &prompt.root; /usr/local/etc/rc.d/isc-dhcpd.sh start şŁ¸ĺĽľĄźĽĐ¤ÎŔßÄę¤ËĘŃšš¤ň˛Ă¤¨¤ëÉŹÍפŹŔ¸¤¸¤żťţ¤Ë¤ĎĄ˘ SIGHUP ĽˇĽ°ĽĘĽë¤ň dhcpd ¤ËÁ÷¤Ă¤Ć¤âĄ˘ Âż¤Ż¤ÎĽÇĄźĽâĽó¤Ź¤˝¤Ś¤Ç¤˘¤ë¤č¤Ś¤Ë¤ĎĄ˘ ŔßÄęĽŐĽĄĽ¤Ľë¤ŹşĆĆɤߚţ¤ß ¤ľ¤ě¤Ę¤¤ ¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ SIGTERM ĽˇĽ°ĽĘĽë¤ňÁ÷¤Ă¤ĆĽ×ĽíĽťĽš¤ňÄäťß¤ˇĄ˘ ¤˝¤ě¤Ť¤éžĺľ­¤ÎĽłĽŢĽóĽÉ¤ňÍѤ¤¤ĆşĆľŻĆ°¤ľ¤ť¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ĽŐĽĄĽ¤Ľë DHCP ŔßÄęĽŐĽĄĽ¤Ľë /usr/local/sbin/dhcpd dhcpd ¤ĎŔĹĹŞ¤ËĽęĽóĽŻ¤ľ¤ě /usr/local/sbin ¤ËĂÖ¤Ť¤ě¤Ţ¤šĄŁ dhcpd ¤Ë´Ř¤š¤ë¤˝¤ě°Ęžĺ¤ÎžđĘó¤Ď port ¤Č¤Č¤â¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤ë &man.dhcpd.8; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤Ë¤˘¤ę¤Ţ¤šĄŁ /usr/local/etc/dhcpd.conf dhcpd ¤ĎĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ř¤ÎĽľĄźĽÓĽšÄ󜥤ň¤Ď¤¸¤á¤ëÁ°¤ËŔßÄęĽŐĽĄĽ¤Ľë /usr/local/etc/dhcpd.conf ¤ňÉŹÍפȤˇ¤Ţ¤šĄŁ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ĎĄ˘ ĽľĄźĽĐ¤Î˛ÔĆŻ¤Ë´Ř¤š¤ëžđĘó¤Ë˛Ă¤¨¤ĆĄ˘ ĽľĄźĽÓĽš¤ľ¤ě¤Ć¤¤¤ëĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËÄ󜥤ľ¤ě¤ëžđĘó¤Î¤š¤Ů¤Ć¤ň´Ţ¤ŕÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤ł¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤Ë¤Ä¤¤¤Ć¤ÎžÜşŮ¤ĎĄ˘ port ¤Ë¤č¤Ă¤ĆĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤ë &man.dhcpd.conf.5; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /var/db/dhcpd.leases DHCP ĽľĄźĽĐ¤ĎČŻšÔ¤ˇ¤żĽęĄźĽš¤ÎĽÇĄźĽżĽŮĄźĽš¤ň¤ł¤ÎĽŐĽĄĽ¤Ľë¤ËĽíĽ°¤Č¤ˇ¤ĆĘÝťý¤ˇ¤Ţ¤šĄŁ port ¤Ë¤č¤Ă¤ĆĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤ë &man.dhcpd.leases.5; ¤Ë¤Ď¤â¤ŚžŻ¤ˇžÜ¤ˇ¤¤ŔâĚŔ¤Ź¤˘¤ę¤Ţ¤šĄŁ /usr/local/sbin/dhcrelay dhcrelay ¤ĎĄ˘DHCP ĽľĄźĽĐ¤ŹĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ť¤é¤ÎĽęĽŻĽ¨ĽšĽČ¤ňĄ˘ Ę̤μͼüȼ寧ĽŻžĺ¤Ë¤˘¤ë DHCP ĽľĄźĽĐ¤ËĹžÁ÷¤š¤ëšâĹ٤ʴĜ­˛ź¤ÇťČÍѤľ¤ě¤Ţ¤šĄŁ ¤ł¤ÎľĄÇ˝¤ŹÉŹÍפʤ饢net/isc-dhcp3-server port ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ port ¤Č¤Č¤â¤ËÄ󜥤ľ¤ě¤ë &man.dhcrelay.8; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤Ë¤Ď¤č¤ęžÜşŮ¤ĘžđĘ󤏴ޤޤě¤Ţ¤šĄŁ Chern Lee ´óšĆ: DNS łľ´Ń BIND FreeBSD ¤ĎĽÇĽŐĽŠĽëĽČ¤Ç¤Ď DNS Ľ×ĽíĽČĽłĽë¤ÎşÇ¤â°ěČĚĹŞ¤ĘźÂÁő¤Ç¤˘¤ë BIND (Berkeley Internet Name Domain) ¤ňťČÍѤˇ¤Ţ¤šĄŁDNS ¤ĎĽŰĽšĽČĚž¤ň IP Ľ˘ĽÉĽěĽš¤ËĄ˘¤˝¤ˇ¤Ć IP Ľ˘ĽÉĽěĽš¤ňĽŰĽšĽČĚž¤Ë´ŘϢ¤Ĺ¤ą¤ëĽ×ĽíĽČĽłĽë¤Ç¤šĄŁ ¤ż¤Č¤¨¤Đ www.FreeBSD.org ¤ËÂФš¤ëĚ䤤šç¤ď¤ť¤Ď The FreeBSD Project ¤Î ĽŚĽ§ĽÖĽľĄźĽĐ¤Î IP Ľ˘ĽÉĽěĽš¤ňźő¤ąźč¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤˝¤Î°ěĘý¤Ç ftp.FreeBSD.org ¤ËÂФš¤ëĚ䤤šç¤ď¤ť¤ĎĄ˘ ÂĐąţ¤š¤ë FTP ĽŢĽˇĽó¤Î IP Ľ˘ĽÉĽěĽš¤ňĘÖ¤š¤Ç¤ˇ¤ç¤ŚĄŁ ĆąÍͤ˥˘¤˝¤ÎľŐ¤Î¤ł¤Č¤â˛ÄÇ˝¤Ç¤šĄŁ IP Ľ˘ĽÉĽěĽš¤ËÂФš¤ëĚ䤤šç¤ď¤ť¤ňšÔ¤Ś¤ł¤Č¤ÇĄ˘ ¤˝¤ÎĽŰĽšĽČĚž¤ň˛ňˇč¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ DNS ¸Ąş÷¤ňźÂšÔ¤š¤ë¤ż¤á¤ËĄ˘ ĽˇĽšĽĆĽŕžĺ¤ÇĽÍĄźĽŕĽľĄźĽĐ¤ňưşî¤ľ¤ť¤ëÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ DNS DNS ¤ĎĄ˘ ¸ÄĄš¤ÎĽÉĽáĽ¤ĽóžđĘó¤ňłĘÇź¤Ş¤č¤ÓĽ­ĽăĽĂĽˇĽĺ¤ˇ¤żĄ˘ ¸˘°Ň¤Î¤˘¤ëĽëĄźĽČĽľĄźĽĐ¤Ş¤č¤Óž¤ÎžŽľŹĚϤʼͥźĽŕĽľĄźĽĐ¤Ë¤č¤ëÂżžŻĘŁť¨¤ĘĽˇĽšĽĆĽŕ¤Ë¤č¤Ă¤ĆĄ˘ Ľ¤ĽóĽżĄźĽÍĽĂĽČÁ´ÂΤˤ錄¤Ă¤Ćś¨Ä´¤ˇ¤Ćưşî¤ˇ¤Ţ¤šĄŁ ¤ł¤Îʸ˝ń¤Ď FreeBSD ¤Ç°ÂÄęČǤȤˇ¤ĆÍřÍѤľ¤ě¤Ć¤¤¤ë BIND 8.x ¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ FreeBSD ¤Ç¤Ď BIND 9.x ¤ň net/bind9 port ¤Ť¤éĽ¤ĽóĽšĽČĄźĽë¤Ç¤­¤Ţ¤šĄŁ RFC1034 ¤Ş¤č¤Ó RFC1035 ¤Ď DNS Ľ×ĽíĽČĽłĽë¤ňÄęľÁ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¸˝şß¤Î¤Č¤ł¤í BIND ¤Ď Internet Software Consortium (www.isc.org) ¤Ë¤č¤Ă¤ĆĘݟ餾¤ě¤Ć¤¤¤Ţ¤šĄŁ ÍŃ¸ě ¤ł¤Îʸ˝ń¤ňÍý˛ň¤š¤ë¤Ë¤Ď DNS ´ŘϢ¤ÎÍѸě¤ň¤¤¤Ż¤Ä¤ŤÍý˛ň¤ˇ¤Ę¤ą¤ě¤Đ¤¤¤ą¤Ţ¤ť¤óĄŁ ĽęĽžĽëĽĐ ľŐ°ú¤­ DNS ĽëĄźĽČĽžĄźĽó ÍѸě ÄęľÁ Ŕľ°ú¤­ DNS ĽŰĽšĽČĚž¤Ť¤é IP Ľ˘ĽÉĽěĽš¤Ř¤ÎÂĐąţ¤Ç¤šĄŁ ĽŞĽęĽ¸Ľó (origine) ĆĂÄę¤ÎĽžĄźĽóĽŐĽĄĽ¤Ľë¤Ë¤č¤Ă¤ĆĽŤĽĐĄź¤ľ¤ě¤ëĽÉĽáĽ¤Ľó¤Ř¤Îť˛žČ¤Ç¤šĄŁ named, BIND, ĽÍĄźĽŕĽľĄźĽĐ FreeBSD Ćâ¤Î BIND ĽÍĄźĽŕĽľĄźĽĐĽŃĽĂĽąĄźĽ¸¤Î°ěČĚĚžžÎ¤Ç¤šĄŁ ĽęĽžĽëĽĐ (resolver) ĽŢĽˇĽó¤ŹĽžĄźĽóžđĘó¤Ë¤Ä¤¤¤ĆĽÍĄźĽŕĽľĄźĽĐ¤ËĚ䤤šç¤ď¤ť¤ëĽˇĽšĽĆĽŕĽ×ĽíĽťĽš¤Ç¤šĄŁ ľŐ°ú¤­ DNS Ŕľ°ú¤­ DNS ¤ÎľŐ¤Ç¤šĄŁ¤Ä¤Ţ¤ę IP Ľ˘ĽÉĽěĽš¤Ť¤éĽŰĽšĽČĚž¤Ř¤ÎÂĐąţ¤Ç¤šĄŁ ĽëĄźĽČĽžĄźĽó Ľ¤ĽóĽżĄźĽÍĽĂĽČĽžĄźĽółŹÁؤξŻĹŔ¤Ç¤šĄŁ ¤š¤Ů¤Ć¤ÎĽžĄźĽó¤ĎĽëĄźĽČĽžĄźĽó¤Î˛ź¤Ë°¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤ĎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Î¤š¤Ů¤Ć¤ÎĽŐĽĄĽ¤Ľë¤ŹĽëĄźĽČĽÇĽŁĽěĽŻĽČĽę¤Î˛ź¤Ë°¤š¤ë¤ł¤Č¤Čť÷¤Ć¤¤¤Ţ¤šĄŁ ĽžĄźĽó Ćą¤¸¸˘°Ň¤Ë¤č¤Ă¤Ć´ÉÍý¤ľ¤ě¤ë¸ÄĄš¤Î DNS ĽÉĽáĽ¤ĽóĄ˘ DNS ĽľĽÖĽÉĽáĽ¤ĽóĄ˘¤˘¤ë¤¤¤Ď DNS ¤Î°ěÉôĘŹ¤Ç¤šĄŁ ĽžĄźĽó Îă ĽžĄźĽó¤ÎÎă: . ¤ĎĽëĄźĽČĽžĄźĽó¤Ç¤šĄŁ org. ¤ĎĽëĄźĽČĽžĄźĽó¤Î˛ź¤ÎĽžĄźĽó¤Ç¤šĄŁ example.org ¤Ď org. ĽžĄźĽó¤Î˛ź¤ÎĽžĄźĽó¤Ç¤šĄŁ foo.example.org. ¤ĎĽľĽÖĽÉĽáĽ¤Ľó¤ÇĄ˘ example.org. ¤Î˛ź¤ÎĽžĄźĽó¤Ç¤šĄŁ 1.2.3.in-addr.arpa ¤Ď 3.2.1.* ¤Î IP śő´Ö¤Ë´Ţ¤Ţ¤ě¤ë¤š¤Ů¤Ć¤Î IP Ľ˘ĽÉĽěĽš¤ňť˛žČ¤š¤ëĽžĄźĽó¤Ç¤šĄŁ ¸Ť¤ĆĘŹ¤Ť¤ë¤č¤Ś¤ËĄ˘ĽŰĽšĽČĚž¤Î¤č¤ęžÜşŮ¤ĘÉôĘŹ¤Ď¤˝¤Îş¸ÂŚ¤Ë¸˝¤ě¤Ţ¤šĄŁ ¤ż¤Č¤¨¤Đ example.org. ¤Ď org. ¤č¤ę¸ÂÄęĹŞ¤Ç¤šĄŁĆąÍÍ¤Ë org. ¤ĎĽëĄźĽČĽžĄźĽó¤č¤ę¸ÂÄęĹŞ¤Ç¤šĄŁ ĽŰĽšĽČĚž¤ÎłĆÉôĘŹ¤ÎĽěĽ¤Ľ˘ĽŚĽČ¤ĎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ËČóžď¤Ëť÷¤Ć¤¤¤Ţ¤šĄŁ ¤ż¤Č¤¨¤Đ /dev ¤ĎĽëĄźĽČ¤Î˛ź¤Ç¤˘¤ë¤ł¤Č¤Ę¤É¤Ç¤šĄŁ ĽÍĄźĽŕĽľĄźĽĐ¤ňźÂšÔ¤š¤ëÍýÍł ĽÍĄźĽŕĽľĄźĽĐ¤ĎÄĚžďĆó¤Ä¤ÎˇÁ갤ʤ˘¤ę¤Ţ¤š: ¸˘°Ň¤Î¤˘¤ëĽÍĄźĽŕĽľĄźĽĐ¤ČĽ­ĽăĽĂĽˇĽĺĽÍĄźĽŕĽľĄźĽĐ¤Ç¤šĄŁ ¸˘°Ň¤Î¤˘¤ëĽÍĄźĽŕĽľĄźĽĐ¤Ď°Ę˛ź¤Îžěšç¤ËÉŹÍ×¤Ç¤šĄŁ Ě䤤šç¤ď¤ť¤ËÂФˇ¤ĆżŽÍę¤Ç¤­¤ëĘÖĹú¤ň¤š¤ë¤ł¤Č¤ÇĄ˘ ¤˘¤ëżÍ¤Ź DNS žđĘó¤ňŔ¤łŚ¤Ë¸ţ¤ą¤ĆČŻżŽ¤ˇ¤ż¤¤¤Č¤­ĄŁ example.org ¤Č¤¤¤Ă¤żĽÉĽáĽ¤Ľó¤ŹĹĐĎż¤ľ¤ě¤Ć¤Ş¤ęĄ˘ ¤˝¤Î˛ź¤Ë¤˘¤ëĽŰĽšĽČĚž¤Ë IP Ľ˘ĽÉĽěĽš¤ňłä¤ęĹö¤Ć¤ëÉŹÍפʤ˘¤ë¤Č¤­ĄŁ IP Ľ˘ĽÉĽěĽšĽÖĽíĽĂĽŻ¤Ź (IP ¤Ť¤éĽŰĽšĽČĚž¤Ř¤Î) ľŐ°ú¤­ DNS Ľ¨ĽóĽČĽę¤ňÉŹÍפȤš¤ë¤Č¤­ĄŁ Ľ×ĽéĽ¤ĽŢĽęĽľĄźĽĐ¤ŹĽŔĽŚĽó¤ˇ¤Ć¤¤¤ë¤Ť¤Ţ¤ż¤ĎĽ˘ĽŻĽťĽš¤Ç¤­¤Ę¤¤žěšç¤ËĄ˘ Âĺ¤ď¤ę¤ËĚ䤤šç¤ď¤ť¤ËÂФˇ¤ĆĽšĽěĄźĽÖ¤Č¸Ć¤Đ¤ě¤ëĽĐĽĂĽŻĽ˘ĽĂĽ×ĽÍĄźĽŕĽľĄźĽĐ¤ŹĘÖĹú¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Č¤­ĄŁ Ľ­ĽăĽĂĽˇĽĺĽÍĄźĽŕĽľĄźĽĐ¤Ď°Ę˛ź¤Îžěšç¤ËÉŹÍ×¤Ç¤šĄŁ ĽíĄźĽŤĽë¤ÎĽÍĄźĽŕĽľĄźĽĐ¤ŹĄ˘ ł°Éô¤ÎĽÍĄźĽŕĽľĄźĽĐ¤ËĚ䤤šç¤ď¤ť¤š¤ë¤č¤ę¤âĄ˘ Ľ­ĽăĽĂĽˇĽĺ¤ˇ¤Ć¤č¤ęÂŽ¤ŻĘÖĹú¤Ç¤­¤ë¤Č¤­ĄŁ ĽÍĽĂĽČĽďĄźĽŻĽČĽéĽŐĽŁĽĂĽŻ¤ÎÁíÎ̤ň¸ş¤é¤ˇ¤ż¤¤¤Č¤­ (DNS ¤ÎĽČĽéĽŐĽŁĽĂĽŻ¤ĎĽ¤ĽóĽżĄźĽÍĽĂĽČĽČĽéĽŐĽŁĽĂĽŻÁ´ÂΤΠ5% °Ęžĺ¤ňŔę¤á¤ë¤ł¤Č¤ŹÂŹÄꤾ¤ě¤Ć¤¤¤Ţ¤š) www.FreeBSD.org ¤ËÂФš¤ëĚ䤤šç¤ď¤ť¤ňČŻ¤ˇ¤ż¤Č¤­Ą˘ ĽęĽžĽëĽĐ¤ĎÂçÂΤΞěšçžĺÎŽ¤Î ISP ¤ÎĽÍĄźĽŕĽľĄźĽĐ¤ËĚ䤤šç¤ď¤ť¤ň¤ˇ¤ĆĘÖĹú¤ňĆŔ¤Ţ¤šĄŁ ĽíĄźĽŤĽë¤ÎĽ­ĽăĽĂĽˇĽĺ DNS ĽľĄźĽĐ¤Ź¤˘¤ě¤ĐĄ˘ Ě䤤šç¤ď¤ť¤ĎĽ­ĽăĽĂĽˇĽĺ DNS ĽľĄźĽĐ¤Ë¤č¤Ă¤Ćł°Éô¤ËÂФˇ¤Ć°ěĹ٤Ŕ¤ąČݤť¤é¤ě¤Ţ¤šĄŁ žđĘó¤ŹĽíĄźĽŤĽë¤ËĂߤ¨¤é¤ě¤ë¤Î¤ÇĄ˘ ÄɲäÎĚ䤤šç¤ď¤ť¤Ď¤¤¤ş¤ě¤âĽíĄźĽŤĽëĽÍĽĂĽČĽďĄźĽŻ¤Îł°ÂŚ¤Ë¤Ţ¤ÇłÎǧ¤ˇ¤Ę¤Ż¤Ć¤â¤č¤Ż¤Ę¤ę¤Ţ¤šĄŁ ưşî¤Î¤ˇ¤Ż¤ß FreeBSD ¤Ç¤Ď BIND ĽÇĄźĽâĽó¤ĎźŤĚŔ¤ĘÍýÍł¤Ť¤é named ¤Č¸Ć¤Đ¤ě¤Ţ¤šĄŁ ĽŐĽĄĽ¤Ľë ŔâĚŔ named BIND ĽÇĄźĽâĽó ndc ĽÍĄźĽŕĽÇĄźĽâĽóĽłĽóĽČĽíĄźĽëĽ×ĽíĽ°ĽéĽŕ /etc/namedb BIND ¤ÎĽžĄźĽóžđĘó¤ŹĂÖ¤Ť¤ě¤ëĽÇĽŁĽěĽŻĽČĽę /etc/namedb/named.conf ĽÇĄźĽâĽó¤ÎŔßÄęĽŐĽĄĽ¤Ľë ĽžĄźĽóĽŐĽĄĽ¤Ľë¤ĎÄĚžď /etc/namedb ĽÇĽŁĽěĽŻĽČĽęĆâ¤Ë´Ţ¤Ţ¤ě¤Ć¤Ş¤ęĄ˘ĽÍĄźĽŕĽľĄźĽĐ¤Ë¤č¤Ă¤Ć˝čÍý¤ľ¤ě¤ë DNS ĽžĄźĽóžđĘó¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤šĄŁ BIND ¤ÎľŻĆ° BIND ľŻĆ° BIND ¤ĎĽÇĽŐĽŠĽëĽČ¤ÇĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ë¤Î¤ÇĄ˘ ¤š¤Ů¤Ć¤ňŔßÄꤚ¤ë¤ł¤Č¤ĎČćłÓĹŞĂą˝ă¤Ç¤šĄŁ named ĽÇĄźĽâĽó¤ŹľŻĆ°ťţ¤ËłŤťĎ¤ľ¤ě¤ë¤ł¤Č¤ňĘÝžÚ¤š¤ë¤Ë¤ĎĄ˘ /etc/rc.conf ¤Ë°Ę˛ź¤ÎĘŃšš¤ň¤¤¤ě¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ named_enable="YES" ĽÇĄźĽâĽó¤ňźęư¤ÇľŻĆ°¤š¤ë¤ż¤á¤Ë¤Ď (ŔßÄę¤ň¤ˇ¤ż¸ĺ¤Ç) &prompt.root; ndc start ŔßÄęĽŐĽĄĽ¤Ľë BIND ŔßÄęĽŐĽĄĽ¤Ľë <command>make-localhost</command> ¤ÎÍřÍŃ źĄ¤ÎĽłĽŢĽóĽÉ¤Ź &prompt.root; cd /etc/namedb &prompt.root; sh make-localhost ĽíĄźĽŤĽëľŐ°ú¤­ DNS ĽžĄźĽóĽŐĽĄĽ¤Ľë¤ň /etc/namedb/localhost.rev ¤ËĹŹŔڤ˺îŔޤš¤ë¤ł¤Č¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ <filename>/etc/namedb/named.conf</filename> // $FreeBSD$ // // žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď named(8) ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁĽ×ĽéĽ¤ĽŢĽęĽľĄźĽĐ // ¤ňŔßÄꤚ¤ë¤Ä¤â¤ę¤Ę¤éĄ˘DNS ¤Ź¤É¤Î¤č¤Ś¤Ëưşî¤š¤ë¤Ť¤ÎžÜşŮ¤ňłÎźÂ¤ËÍý˛ň¤ˇ¤Ć¤Ż¤Ŕ¤ľ // ¤¤ĄŁĂą˝ă¤Ę´Ö°ă¤¤¤Ç¤˘¤Ă¤Ć¤âĄ˘ąĆśÁ¤ň¤Ś¤ą¤ëÁęźę¤ËÂФš¤ëŔÜÂł¤ň˛ő¤ˇ¤ż¤ęĄ˘ĚľÂĚ¤Ę // Ľ¤ĽóĽżĄźĽÍĽĂĽČĽČĽéĽŐĽŁĽĂĽŻ¤ňÂçÎ̤˰ú¤­ľŻ¤ł¤ˇĆŔ¤Ţ¤šĄŁ options { directory "/etc/namedb"; // "forwarders" Ŕá¤Ë˛Ă¤¨¤ĆźĄ¤ÎšÔ¤ňÍ­¸ú¤Ë¤š¤ë¤ł¤Č¤ÇĄ˘ĽÍĄźĽŕĽľĄźĽĐ¤Ëˇč¤ˇ¤ĆźŤČŻĹŞ // ¤ËĚ䤤šç¤ď¤ť¤ňČŻ¤ť¤şĄ˘žď¤Ë¤˝¤ÎĽŐĽŠĽďĄźĽŔ¤Ë¤ż¤¤¤ˇ¤ĆżŇ¤Í¤ë¤č¤Ś¤ËśŻŔФš¤ë¤ł¤Č // ¤Ź¤Ç¤­¤Ţ¤š: // // forward only; // ¤˘¤Ę¤ż¤ŹžĺÎŽ¤ÎĽ×ĽíĽĐĽ¤ĽŔźţĘդΠDNS ĽľĄźĽĐ¤ňÍřÍѤǤ­¤ëžěšçĄ˘¤˝¤Î IP Ľ˘ĽÉĽěĽš // ¤ň¤ł¤ł¤ËĆţÎϤˇĄ˘˛źľ­¤ÎšÔ¤ňÍ­¸ú¤Ë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ¤ł¤Ś¤š¤ě¤ĐĄ˘¤˝¤ÎĽ­ĽăĽĂĽˇĽĺ¤Î // ˛¸ˇĂ¤Ë¤˘¤ä¤Ť¤ë¤ł¤Č¤Ź¤Ç¤­Ą˘Ľ¤ĽóĽżĄźĽÍĽĂĽČÁ´ÂΤΠDNS ĽČĽéĽŐĽŁĽĂĽŻ¤Ź¸ş¤ë¤Ç¤ˇ¤ç¤ŚĄŁ /* forwarders { 127.0.0.1; }; */ ĽłĽáĽóĽČ¤Ź¸Ŕ¤Ă¤Ć¤¤¤ëÄ̤ꥢžĺÎŽ¤ÎĽ­ĽăĽĂĽˇĽĺ¤Î˛¸ˇĂ¤ňźő¤ą¤ë¤ż¤á¤Ë forwarders ¤ň¤ł¤ł¤ÇÍ­¸ú¤Ë¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ÄĚžď¤Îžőśˇ¤Ç¤ĎĄ˘ĽÍĄźĽŕĽľĄźĽĐ¤ĎĽ¤ĽóĽżĄźĽÍĽĂĽČ¤ÎĆĂÄę¤ÎĽÍĄźĽŕĽľĄźĽĐ¤ňÄ´¤Ů¤ĆĄ˘ Ăľ¤ˇ¤Ć¤¤¤ëĘÖĹú¤ň¸Ť¤Ä¤ą¤ë¤Ţ¤ÇşĆľ˘ĹޤËĚ䤤šç¤ď¤ť¤ňšÔ¤¤¤Ţ¤šĄŁ ¤ł¤ě¤ŹÍ­¸ú¤Ë¤Ę¤Ă¤Ć¤¤¤ě¤ĐĄ˘¤Ţ¤şžĺÎŽ¤ÎĽÍĄźĽŕĽľĄźĽĐ (¤Ţ¤ż¤Ď Íż¤¨¤é¤ě¤żĽÍĄźĽŕĽľĄźĽĐ) ¤ËĚ䤤šç¤ď¤ť¤ĆĄ˘ ¤˝¤ÎĽ­ĽăĽĂĽˇĽĺ¤ňÍřÍѤš¤ë¤Ç¤ˇ¤ç¤ŚĄŁ Ě䤤šç¤ď¤ť¤ň¤š¤ëžĺÎŽ¤ÎĽÍĄźĽŕĽľĄźĽĐ¤ŹśËĹ٤ËÄĚżŽÎ̤ŹÂż¤ŻĄ˘ šâÂŽ¤Ç¤˘¤Ă¤żžěšçĄ˘¤ł¤ě¤ňÍ­¸ú¤Ë¤š¤ë˛ÁĂÍ¤Ź¤˘¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¤ł¤ł¤Ë 127.0.0.1 ¤ňťŘÄꤡ¤Ć¤âưşî ¤ˇ¤Ţ¤ť¤óĄŁ žĺÎŽ¤ÎĽÍĄźĽŕĽľĄźĽĐ¤Î IP Ľ˘ĽÉĽěĽš¤ËĘŃšš¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /* * ¤˘¤Ę¤ż¤ČÍřÍѤˇ¤ż¤¤ĽÍĄźĽŕĽľĄźĽĐ¤Č¤Î´Ö¤ËĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽë¤Ź¤˘¤ëžěšçĄ˘ * ˛źľ­¤Î quiery-source ťŘÎá¤ňÍ­¸ú¤Ë¤š¤ëÉŹÍפʤ˘¤ë¤Ç¤ˇ¤ç¤ŚĄŁ * ˛áľî¤Î BIND ¤ÎĽĐĄźĽ¸ĽçĽó¤Ďžď¤Ë 53 ČÖĽÝĄźĽČ¤ËĚ䤤šç¤ď¤ť¤ň¤ˇ¤Ţ¤š¤ŹĄ˘ * BIND 8.1 ¤ĎĽÇĽŐĽŠĽëĽČ¤ÇČóĆø˘ĽÝĄźĽČ¤ňťČÍѤˇ¤Ţ¤šĄŁ */ // query-source address * port 53; /* * ş˝žěĆâ¤Çưşî¤ľ¤ť¤Ć¤¤¤ëžěšçĄ˘ĽŔĽóĽ×ĽŐĽĄĽ¤Ľë¤Î¤ż¤á¤Ë°Ű¤Ę¤ëžě˝ę¤ňťŘÄę * ¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ */ // dump-file "s/named_dump.db"; }; // Ăí°Ő: ˛źľ­¤Ďž­Íč¤ÎĽęĽęĄźĽš¤ÇÂĐąţ¤ľ¤ě¤ë¤Ç¤ˇ¤ç¤ŚĄŁ /* host { any; } { topology { 127.0.0.0/8; }; }; */ // ĽťĽŤĽóĽŔĽę¤ňŔßÄꤚ¤ë¤ł¤Č¤Ď¤č¤ę´ĘĂą¤ĘĘýËĄ¤ÇĄ˘¤˝¤Î¤Ş¤Ş¤Ţ¤Ť¤ĘťŃ¤Ź˛źľ­¤ÇŔâĚŔ¤ľ // ¤ě¤Ć¤¤¤Ţ¤šĄŁ // // ĽíĄźĽŤĽëĽÍĄźĽŕĽľĄźĽĐ¤ňÍ­¸ú¤Ë¤š¤ëžěšçĄ˘¤ł¤ÎĽľĄźĽĐ¤ŹşÇ˝é¤ËżŇ¤Í¤é¤ě¤ë¤č¤Ś¤Ë // /etc/resolv.conf ¤Ë 127.0.0.1 ¤ňĆţÎϤš¤ë¤ł¤Č¤ňËş¤ě¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ¤ľ¤é¤ËĄ˘ // /etc/rc.conf Ćâ¤ÇÍ­¸ú¤Ë¤š¤ë¤ł¤Č¤âłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ zone "." { type hint; file "named.root"; }; zone "0.0.127.IN-ADDR.ARPA" { type master; file "localhost.rev"; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" { type master; file "localhost.rev"; }; // Ăí°Ő: ˛źľ­¤Î IP Ľ˘ĽÉĽěĽš¤ňťČÍѤˇ¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ¤ł¤ě¤ĎĽŔĽßĄź¤Ç¤˘¤ęĽÇĽâ¤äʸ˝ń // ¤Ŕ¤ą¤ňĚÜĹŞ¤Č¤ˇ¤ż¤â¤Î¤Ç¤šĄŁ // // ĽťĽŤĽóĽŔĽęŔßÄę¤ÎÎă¤Ç¤šĄŁžŻ¤Ę¤Ż¤Č¤â¤˘¤Ę¤ż¤ÎĽÉĽáĽ¤Ľó¤ŹÂ°¤š¤ëĽžĄźĽó¤ËÂФš¤ëĽťĽŤ // ĽóĽŔĽę¤Ë¤Ę¤ë¤ł¤Č¤ĎĘŘÍř¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁĽ×ĽéĽ¤ĽŢĽę¤ÎŔŐ¤ňÉé¤Ă¤Ć¤¤¤ë IP Ľ˘ĽÉĽěĽš // ¤ňĽÍĽĂĽČĽďĄźĽŻ´ÉÍýźÔ¤ËżŇ¤Í¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ // // ľŐ°ú¤­ť˛žČĽžĄźĽó (IN-ADDR.ARPA) ¤ň´Ţ¤á¤ë¤ł¤Č¤ňˇč¤ˇ¤ĆËş¤ě¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤! // (¤ł¤ě¤Ď ".IN-ADDR.ARPA" ¤ňÉŐ¤ą˛Ă¤¨¤é¤ě¤ż¤˝¤ě¤ž¤ě¤Î IP Ľ˘ĽÉĽěĽš¤ÎşÇ˝é¤ÎĽĐĽ¤ĽČ // ¤ÎľŐ˝ç¤Ç¤šĄŁ) // // Ľ×ĽéĽ¤ĽŢĽęĽžĄźĽó¤ÎŔßÄę¤ň¤Ď¤¸¤á¤ëÁ°¤Ë DNS ¤Ş¤č¤Ó BIND ¤Ź¤É¤Î¤č¤Ś¤Ëưşî¤š¤ë¤Ť // ´°Á´¤ËÍý˛ň¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁťţĄšźŤĚŔ¤Ç¤Ę¤¤Íˇę¤Ź¤˘¤ę¤Ţ¤šĄŁ¤˝¤ě¤ËČć¤Ů¤ë¤ČĽťĽŤĽó // ĽŔĽę¤ňŔßÄꤚ¤ë¤Î¤ĎĂą˝ă¤Ç¤šĄŁ // // Ăí°Ő: ˛źľ­¤ÎÎă¤ňą­Ćݤߤˤˇ¤ĆÍ­¸ú¤Ë¤ˇ¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ:-) źÂşÝ¤ÎĚžÁ°¤ČĽ˘ĽÉĽěĽš // ¤ňÂĺ¤ď¤ę¤ËťČÍѤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ // // Ăí°Ő!!! FreeBSD ¤Ď bind ¤ňş˝žě¤Î¤Ę¤Ť¤Çư¤Ť¤ˇ¤Ţ¤š (rc.conf Ćâ¤Î named_flags // ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤)ĄŁĽťĽŤĽóĽŔĽęĽžĄźĽó¤ň´Ţ¤ó¤ŔĽÇĽŁĽěĽŻĽČĽę¤ĎĄ˘bind ¤Ë¤č¤Ă¤Ć // ˝ń¤­šţ¤ß˛ÄÇ˝¤Ç¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁźĄ¤Îźę˝ç¤ŹżäžŠ¤ľ¤ě¤Ţ¤š: // // mkdir /etc/namedb/s // chown bind:bind /etc/namedb/s // chmod 750 /etc/namedb/s BIND ¤ňş˝žě (sandbox) ¤Ç (ĚőĂí: chroot ¤ň¤â¤Á¤¤¤Ć) ưşî¤ľ¤ť¤ë¤ż¤á¤ÎžÜşŮ¤Ď ş˝žě¤Ç named ¤ňźÂšÔ¤š¤ë ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /* zone "example.com" { type slave; file "s/example.com.bak"; masters { 192.168.1.1; }; }; zone "0.168.192.in-addr.arpa" { type slave; file "s/0.168.192.in-addr.arpa.bak"; masters { 192.168.1.1; }; }; */ named.conf ¤ÎĂć¤ÇĄ˘ žĺľ­¤ĎĹžÁ÷¤ČľŐ°ú¤­ĽžĄźĽó¤Î¤ż¤á¤ÎĽšĽěĄźĽÖĽ¨ĽóĽČĽę¤ÎÎă¤Ç¤šĄŁ żˇ¤ˇ¤ŻĽľĄźĽÓĽš¤š¤ë¤˝¤ě¤ž¤ě¤ÎĽžĄźĽó¤Ë¤Ä¤¤¤ĆĄ˘żˇľŹ¤ÎĽ¨ĽóĽČĽę¤ň named.conf ¤Ë˛Ă¤¨¤Ę¤ą¤ě¤Đ¤¤¤ą¤Ţ¤ť¤óĄŁ ¤ż¤Č¤¨¤Đ example.org ¤ËÂФš¤ëşÇ¤âĽˇĽóĽ×Ľë¤ĘĽžĄźĽóĽ¨ĽóĽČĽę¤Ď°Ę˛ź¤Î¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ zone "example.org" { type master; file "example.org"; }; ¤ł¤ÎĽžĄźĽó¤Ď ĚżÎá¤Çꍤľ¤ě¤Ć¤¤¤ë¤č¤Ś¤ËĽŢĽšĽż¤ÇĄ˘ĽžĄźĽóžđĘó¤ň ĚżÎá¤ÇťŘꍤľ¤ě¤ż /etc/namedb/example.org ĽŐĽĄĽ¤Ľë¤ËĘÝťý¤ˇ¤Ć¤¤¤Ţ¤šĄŁ zone "example.org" { type slave; file "example.org"; }; ĽšĽěĄźĽÖ¤ÎžěšçĄ˘ ĽžĄźĽóžđĘó¤ĎĆĂÄę¤ÎĽžĄźĽó¤ÎĽŢĽšĽżĽÍĄźĽŕĽľĄźĽĐ¤Ť¤éĹžÁ÷¤ľ¤ěĄ˘ ťŘÄꤾ¤ě¤żĽŐĽĄĽ¤Ľë¤ËĘݸ¤ľ¤ě¤Ţ¤šĄŁ ĽŢĽšĽżĽľĄźĽĐ¤ŹÄäťß¤š¤ë¤ŤĹţĂŁ¤Ç¤­¤Ę¤¤žěšç¤Ë¤ĎĄ˘ ĽšĽěĄźĽÖĽľĄźĽĐ¤ŹĹžÁ÷¤ľ¤ě¤żĽžĄźĽóžđĘó¤ňĘÝťý¤ˇ¤Ć¤¤¤ĆĄ˘ ĽľĄźĽÓĽš¤Ç¤­¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ĽžĄźĽóĽŐĽĄĽ¤Ľë example.org ¤ËÂФš¤ëĽŢĽšĽżĽžĄźĽóĽŐĽĄĽ¤Ľë (/etc/namedb/example.org ¤ËĘÝťý¤ľ¤ě¤Ţ¤š) ¤ÎÎă¤Ď°Ę˛ź¤Î¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ $TTL 3600 example.org. IN SOA ns1.example.org. admin.example.org. ( 5 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL ; DNS Servers @ IN NS ns1.example.org. @ IN NS ns2.example.org. ; Machine Names localhost IN A 127.0.0.1 ns1 IN A 3.2.1.2 ns2 IN A 3.2.1.3 mail IN A 3.2.1.10 @ IN A 3.2.1.30 ; Aliases www IN CNAME @ ; MX Record @ IN MX 10 mail.example.org. . ¤ŹşÇ¸ĺ¤Ë¤Ä¤¤¤Ć¤¤¤ë¤š¤Ů¤Ć¤ÎĽŰĽšĽČĚž¤ĎŔľłÎ¤ĘĽŰĽšĽČĚž¤Ç¤˘¤ęĄ˘ °ěĘý¤Ç . ¤Ç˝ŞÎť¤ˇ¤Ę¤¤¤š¤Ů¤Ć¤ÎšÔ¤ĎĽŞĽęĽ¸Ľó¤Źť˛žČ¤ľ¤ě¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ż¤Č¤¨¤Đ www ¤Ď www + ĽŞĽęĽ¸Ľó ¤ËŸłŤ¤ľ¤ě¤Ţ¤šĄŁ¤ł¤Î˛Íśő¤ÎĽžĄźĽóĽŐĽĄĽ¤Ľë¤Ç¤ĎĄ˘ ĽŞĽęĽ¸Ľó¤Ď example.org. ¤Ę¤Î¤Ç www ¤Ď www.example.org. ¤ËŸłŤ¤ľ¤ě¤Ţ¤šĄŁ ĽžĄźĽóĽŐĽĄĽ¤Ľë¤Î˝ńź°¤ĎźĄ¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ recordname IN recordtype value DNS ĽěĽłĄźĽÉ DNS ĽěĽłĄźĽÉ¤ËťČ¤ď¤ě¤ëşÇ¤â°ěČĚĹŞ¤Ę¤â¤Î¤Ď°Ę˛ź¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ SOA ĽžĄźĽó¸˘°Ň¤ÎľŻĹŔ NS ¸˘°Ň¤Î¤˘¤ëĽÍĄźĽŕĽľĄźĽĐ A ĽŰĽšĽČ¤ÎĽ˘ĽÉĽěĽš CNAME ĘĚĚž¤Č¤ˇ¤Ć¤ÎŔľľŹ¤ÎĚžžÎ MX ĽáĄźĽëĽ¨ĽŻĽšĽÁĽ§ĽóĽ¸Ľă PTR ĽÉĽáĽ¤ĽóĽÍĄźĽŕĽÝĽ¤ĽóĽż (ľŐ°ú¤­ DNS ¤ÇťČÍѤľ¤ě¤Ţ¤š) example.org. IN SOA ns1.example.org. admin.example.org. ( 5 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hour 604800 ; Expire after 1 week 86400 ) ; Minimum TTL of 1 day example.org. ¤ł¤ÎĽžĄźĽó¤ÎĽŞĽęĽ¸Ľó¤Ç¤â¤˘¤ëĽÉĽáĽ¤ĽóĚž ns1.example.org. ¤ł¤ÎĽžĄźĽó¤ËÂФˇ¤Ć¸˘°Ň¤Î¤˘¤ëĽ×ĽéĽ¤ĽŢĽęĽÍĄźĽŕĽľĄźĽĐ admin.example.org. ¤ł¤ÎĽžĄźĽó¤ÎŔŐǤźÔĄŁ@ ¤ňĂÖ¤­´š¤¨¤żĹŝҼᥟĽëĽ˘ĽÉĽěĽš¤ňťŘÄꤡ¤Ţ¤šĄŁ (admin@example.org ¤Ď admin.example.org ¤Ë¤Ę¤ę¤Ţ¤š) 5 ĽŐĽĄĽ¤Ľë¤ÎĽˇĽęĽ˘ĽëČÖšć¤Ç¤šĄŁ ¤ł¤ě¤ĎĽŐĽĄĽ¤Ľë¤ŹĘŃšš¤ľ¤ě¤ë¤ż¤Ó¤ËÁý˛Ă¤ľ¤ť¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¸˝şß¤Ç¤ĎÂż¤Ż¤Î´ÉÍýźÔ¤Ď yyyymmddrr ¤Č¤¤¤ŚˇÁź°¤ňĽˇĽęĽ˘ĽëČÖšć¤Č¤ˇ¤ĆťČÍѤš¤ë¤ł¤Č¤ňšĽ¤ß¤Ţ¤šĄŁ 2001041002 ¤ĎşÇ¸ĺ¤Ë˝¤Ŕľ¤ľ¤ě¤ż¤Î¤Ź 2001/04/10 ¤ÇĄ˘¸ĺ¤í¤Î 02 ¤Ď¤˝¤ÎĆü¤ÇĆó˛óĚܤ˽¤Ŕľ¤ľ¤ě¤ż¤â¤Î¤Ç¤˘¤ë¤Č¤¤¤Ś¤ł¤Č¤ň°ŐĚŁ¤š¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ĽˇĽęĽ˘ĽëČÖšć¤ĎĄ˘ ¤˝¤ě¤Źššżˇ¤ľ¤ě¤ż¤Č¤­¤ËĽšĽěĄźĽÖĽÍĄźĽŕĽľĄźĽĐ¤ËÂФˇ¤ĆĽžĄźĽó¤ňÄĚĂΤš¤ë¤Î¤Ç˝ĹÍ×¤Ç¤šĄŁ @ IN NS ns1.example.org. ¤ł¤ě¤Ď NS Ľ¨ĽóĽČĽę¤Ç¤šĄŁ ¤ł¤ÎĽžĄźĽó¤ËÂФˇ¤Ć¸˘°Ň¤Î¤˘¤ëĘÖĹú¤ňĘÖ¤šĽÍĄźĽŕĽľĄźĽĐ¤Ď¤š¤Ů¤ĆĄ˘ ¤ł¤ÎĽ¨ĽóĽČĽę¤ň°ě¤ÄÍ­¤ˇ¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ł¤Ë¤˘¤ë @ ¤Ď example.org. ¤ň°ŐĚŁ¤ˇ¤Ţ¤šĄŁ @ ¤ĎĽŞĽęĽ¸Ľó¤ËŸłŤ¤ľ¤ě¤Ţ¤šĄŁ localhost IN A 127.0.0.1 ns1 IN A 3.2.1.2 ns2 IN A 3.2.1.3 mail IN A 3.2.1.10 @ IN A 3.2.1.30 A ĽěĽłĄźĽÉ¤ĎĽŢĽˇĽóĚž¤ňꍤˇ¤Ţ¤šĄŁ žĺľ­¤Î¤č¤Ś¤Ë ns1.example.org ¤Ď 3.2.1.2 ¤Ëˇë¤Ó¤Ä¤ą¤é¤ě¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤Ő¤ż¤ż¤ÓĽŞĽęĽ¸Ľó¤ňꍤš @ ¤Ź¤ł¤ł¤ËťČÍѤľ¤ě¤Ć¤¤¤Ţ¤š¤ŹĄ˘¤ł¤ě¤Ď example.org ¤Ź 3.2.1.30 ¤Ëˇë¤ÓÉŐ¤ą¤é¤ě¤ë¤ł¤Č¤ň°ŐĚŁ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ www IN CNAME @ CNAME ĽěĽłĄźĽÉ¤ĎÄĚžďĽŢĽˇĽó¤ËĘĚĚž¤ňÍż¤¨¤ë¤Č¤­¤ËťČÍѤľ¤ě¤Ţ¤šĄŁ Îă¤Ç¤Ď www ¤ĎĽŞĽęĽ¸ĽóĄ˘¤š¤Ę¤ď¤Á example.org (3.2.1.30) ¤ÎĽ˘ĽÉĽěĽš¤ň¤Ő¤é¤ě¤żĽŢĽˇĽó¤Ř¤ÎĘĚĚž¤ňÍż¤¨¤Ţ¤šĄŁ CNAME ¤ĎĽŰĽšĽČĚž¤ÎĘĚĚžĄ˘ ¤Ţ¤ż¤ĎĘŁżô¤ÎĽŢĽˇĽó´Ö¤Ç°ě¤Ä¤ÎĽŰĽšĽČĚž¤ňĽéĽŚĽóĽÉĽíĽÓĽó (ĚőĂí: Ě䤤šç¤ď¤ť¤Ź¤˘¤ë¤ż¤Ó¤ËĘ̤ΠIP Ľ˘ĽÉĽěĽš¤ňĘÖ¤š¤ł¤Č¤ÇĄ˘ °ěÂć¤ËĽ˘ĽŻĽťĽš¤Ź˝¸Ă椚¤ë¤ł¤Č¤ňËɤ°źęËĄ) ¤š¤ë¤Č¤­¤ËÍѤ¤¤é¤ě¤Ţ¤šĄŁ @ IN MX 10 mail.example.org. MX ĽěĽłĄźĽÉ¤ĎĄ˘ ĽžĄźĽó¤ËÂФˇ¤Ć¤É¤ÎĽáĄźĽëĽľĄźĽĐ¤Ź¤ä¤Ă¤Ć¤­¤żĽáĄźĽë¤ň°ˇ¤Ś¤ł¤Č¤ËŔŐǤ¤ňťý¤Ă¤Ć¤¤¤ë¤Ť¤ňꍤˇ¤Ţ¤šĄŁ mail.example.org ¤ĎĽáĄźĽëĽľĄźĽĐ¤ÎĽŰĽšĽČĚž¤ÇĄ˘10 ¤ĎĽáĄźĽëĽľĄźĽĐ¤ÎÍĽŔčĹ٤ňꍤˇ¤Ţ¤šĄŁ ÍĽŔčĹŮ¤Ź 3,2 ¤Ţ¤ż¤Ď 1 ¤Ę¤É¤ÎĽáĄźĽëĽľĄźĽĐ¤ň¤¤¤Ż¤Ä¤âĂ֤ݤł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ example.org ¤ŘÁ÷¤í¤Ś¤Č¤ˇ¤Ć¤¤¤ëĽáĄźĽëĽľĄźĽĐ¤Ď¤Ď¤¸¤á¤Ë°ěČÖÍĽŔčĹ٤Κ⤤ĽáĄźĽëĽľĄźĽĐ¤ËŔÜÂł¤ˇ¤č¤Ś¤Č¤ˇ¤Ţ¤šĄŁ ¤˝¤ˇ¤ĆŔÜÂł¤Ç¤­¤Ę¤¤žěšçĄ˘ĆóČÖĚܤËÍĽŔčĹ٤Κ⤤ĽľĄźĽĐ¤ËŔÜÂł¤ˇ¤č¤Ś¤Č¤ˇĄ˘ °Ę˛źĄ˘ĽáĄźĽë¤ŹĹŹŔÚ¤ËÇŰÁ÷¤ľ¤ě¤ë¤Ţ¤ÇĆąÍͤˡŤ¤ęĘÖ¤ˇ¤Ţ¤šĄŁ in-addr.arpa ĽžĄźĽóĽŐĽĄĽ¤Ľë (ľŐ°ú¤­ DNS) ¤ËÂФˇ¤Ć¤â A ¤Ţ¤ż¤Ď CNAME ¤ÎÂĺ¤ď¤ę¤Ë PTR Ľ¨ĽóĽČĽę¤ŹÍѤ¤¤é¤ě¤ë¤ł¤Č¤ň˝ü¤ą¤ĐĄ˘ Ćą¤¸˝ńź°¤ŹťČ¤ď¤ě¤Ţ¤šĄŁ $TTL 3600 1.2.3.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. ( 5 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 3600 ) ; Minimum @ IN NS ns1.example.org. @ IN NS ns2.example.org. 2 IN PTR ns1.example.org. 3 IN PTR ns2.example.org. 10 IN PTR mail.example.org. 30 IN PTR example.org. ¤ł¤ÎĽŐĽĄĽ¤Ľë¤Ďžĺľ­¤Î˛Íśő¤ÎĽÉĽáĽ¤Ľó¤Î IP Ľ˘ĽÉĽěĽš¤Ť¤éĽŰĽšĽČĚž¤Ř¤ÎÂĐąţ¤ňÍż¤¨¤Ţ¤šĄŁ Ľ­ĽăĽĂĽˇĽĺĽÍĄźĽŕĽľĄźĽĐ BIND Ľ­ĽăĽĂĽˇĽĺĽÍĄźĽŕĽľĄźĽĐ Ľ­ĽăĽĂĽˇĽĺĽÍĄźĽŕĽľĄźĽĐ¤Ď¤É¤ÎĽžĄźĽó¤ËÂФˇ¤Ć¤â¸˘°Ň¤ň¤â¤ż¤Ę¤¤ĽÍĄźĽŕĽľĄźĽĐ¤Ç¤šĄŁ Ľ­ĽăĽĂĽˇĽĺĽÍĄźĽŕĽľĄźĽĐ¤ĎĂą¤ËźŤĘʤÇĚ䤤šç¤ď¤ť¤ň¤ˇĄ˘ ¸ĺ¤ÇťČ¤¨¤ë¤č¤Ś¤ËĚ䤤šç¤ď¤ť¤Îˇë˛Ě¤ňłĐ¤¨¤Ć¤Ş¤­¤Ţ¤šĄŁ ¤ł¤ě¤ňŔßÄꤚ¤ë¤Ë¤ĎĄ˘ĽžĄźĽó¤ň˛ż¤â´Ţ¤Ţ¤ş¤ËĄ˘ ÄĚžďÄ̤ęĽÍĄźĽŕĽľĄźĽĐ¤ňŔßÄꤡ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ş˝žě¤Ç <application>named</application> ¤ňźÂšÔ¤š¤ë BIND ş˝žě¤Ç¤ÎźÂšÔ chroot ĽťĽ­ĽĺĽęĽĆĽŁ¤ňśŻ¤á¤ë¤ż¤á¤Ë &man.named.8; ¤ňČóĆø˘ĽćĄźĽś¤ÇźÂšÔ¤ˇĄ˘ ş˝žě¤ÎĽÇĽŁĽěĽŻĽČĽęĆâ¤Ë &man.chroot.8; ¤ˇ¤ĆźÂšÔ¤ˇ¤ż¤¤¤Čť×¤Ś¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¤ł¤Ś¤š¤ë¤Č named ĽÇĄźĽâĽó¤Ďş˝žě¤Îł°¤Ë¤Ď¤Ţ¤Ă¤ż¤Żźę¤ň˝Đ¤š¤ł¤Č¤Ź¤Ç¤­¤Ţ¤ť¤óĄŁ named ¤Źžč¤Ăźč¤é¤ě¤ż¤Č¤ˇ¤Ć¤âĄ˘ ¤ł¤ě¤Ë¤č¤Ă¤ĆľŻ¤ł¤ę¤Ś¤ëÂťł˛¤ŹžŽ¤ľ¤Ż¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁ FreeBSD ¤Ë¤ĎĽÇĽŐĽŠĽëĽČ¤ÇĄ˘¤˝¤Î¤ż¤á¤Î bind ¤Č¤¤¤ŚĽćĄźĽś¤ČĽ°ĽëĄźĽ×¤Ź¤˘¤ę¤Ţ¤šĄŁ Âż¤Ż¤ÎżÍĄš¤Ď named ¤ň chroot ¤š¤ë¤č¤Ś¤ËŔßÄꤚ¤ëÂĺ¤ď¤ę¤ËĄ˘ &man.jail.8; ´Äś­Ćâ¤Ç named ¤ňźÂšÔ¤š¤ë¤ł¤Č¤ňžŠ¤á¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ÎŔá¤Ç¤Ď¤˝¤ě¤Ď°ˇ¤¤¤Ţ¤ť¤óĄŁ named ¤Ďş˝žě¤Îł° (śŚÍ­ĽéĽ¤ĽÖĽéĽęĄ˘ĽíĽ°Ľ˝ĽąĽĂĽČ¤Ę¤É) ¤ËĽ˘ĽŻĽťĽš¤Ç¤­¤Ę¤¤¤Î¤ÇĄ˘ named ¤ňŔľ¤ˇ¤ŻĆ°şî¤ľ¤ť¤ë¤ż¤á¤Ë¤¤¤Ż¤Ä¤â¤ÎĂĘłŹ¤ňˇĐ¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ˛źľ­¤ÎĽÁĽ§ĽĂĽŻĽęĽšĽČ¤Ë¤Ş¤¤¤Ć¤ĎĄ˘ş˝žě¤ÎĽŃĽš¤Ď /etc/namedb ¤ÇĄ˘ ¤ł¤ÎĽÇĽŁĽěĽŻĽČĽę¤ÎĆâÍƤˤϲż¤âźę¤ň˛Ă¤¨¤Ć¤¤¤Ę¤¤¤Č˛žÄꤡ¤Ţ¤šĄŁ root ¸˘¸Â¤ÇźĄ¤ÎĽšĽĆĽĂĽ×¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ named ¤ŹÂ¸şß¤š¤ë¤ł¤Č¤ň´üÂÔ¤ˇ¤Ć¤¤¤ëĽÇĽŁĽěĽŻĽČĽę¤ň¤š¤Ů¤ĆşîŔޤˇ¤Ţ¤šĄŁ &prompt.root; cd /etc/namedb &prompt.root; mkdir -p bin dev etc var/tmp var/run master slave &prompt.root; chown bind:bind slave var/* ¤ł¤ě¤é¤ÎĽÇĽŁĽěĽŻĽČĽę¤ËÂФˇ¤Ć named ¤ŹÉŹÍפʤΤϽń¤­šţ¤ß¸˘¸Â¤Ŕ¤ą¤Ę¤Î¤ÇĄ˘¤˝¤ě¤Ŕ¤ą¤ňÍż¤¨¤Ţ¤šĄŁ ´đËÜĽžĄźĽóĽŐĽĄĽ¤Ľë¤ČŔßÄęĽŐĽĄĽ¤Ľë¤ÎĘÔ˝¸¤ČşîŔޤňšÔ¤¤¤Ţ¤šĄŁ &prompt.root; cp /etc/localtime etc &prompt.root; mv named.conf etc && ln -sf etc/named.conf &prompt.root; mv named.root master &prompt.root; sh make-localhost && mv localhost.rev localhost-v6.rev master &prompt.root; cat > master/named.localhost $ORIGIN localhost. $TTL 6h @ IN SOA localhost. postmaster.localhost. ( 1 ; serial 3600 ; refresh 1800 ; retry 604800 ; expiration 3600 ) ; minimum IN NS localhost. IN A 127.0.0.1 ^D ¤ł¤ě¤Ď named ¤Ź &man.syslogd.8; ¤ËŔľ¤ˇ¤¤ťţšď¤ÇĽíĽ°¤ň˝ń¤­šţ¤ŕ¤ł¤Č¤ň˛ÄÇ˝¤Ë¤ˇ¤Ţ¤šĄŁ 4.9-RELEASE ¤č¤ęÁ°¤ÎĽĐĄźĽ¸ĽçĽó¤Î &os; ¤ňťČÍѤˇ¤Ć¤¤¤ëžěšçĄ˘ ŔĹĹŞĽęĽóĽŻ¤ľ¤ě¤ż named-xfer ¤ňš˝ĂۤˇĄ˘ş˝žě¤ËĽłĽÔĄź¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cd /usr/src/lib/libisc &prompt.root; make cleandir && make cleandir && make depend && make all &prompt.root; cd /usr/src/lib/libbind &prompt.root; make cleandir && make cleandir && make depend && make all &prompt.root; cd /usr/src/libexec/named-xfer &prompt.root; make cleandir && make cleandir && make depend && make NOSHARED=yes all &prompt.root; cp named-xfer /etc/namedb/bin && chmod 555 /etc/namedb/bin/named-xfer ŔĹĹŞĽęĽóĽŻ¤ľ¤ě¤ż named-xfer ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤ż¤éĄ˘ Ľ˝ĄźĽšĽÄĽęĄź¤ÎĂć¤ËĽéĽ¤ĽÖĽéĽę¤Ţ¤ż¤ĎĽ×ĽíĽ°ĽéĽŕ¤Î¸Ĺ¤Ż¤Ę¤Ă¤żĽłĽÔĄź¤ňťÄ¤ľ¤Ę¤¤¤č¤Ś¤ËĄ˘ ÁÝ˝ü¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ &prompt.root; cd /usr/src/lib/libisc &prompt.root; make cleandir &prompt.root; cd /usr/src/lib/libbind &prompt.root; make cleandir &prompt.root; cd /usr/src/libexec/named-xfer &prompt.root; make cleandir ¤ł¤ÎĽšĽĆĽĂĽ×¤ĎťţĄšźşÇÔ¤š¤ë¤ł¤Č¤ŹĘóšđ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤â¤ˇźşÇÔ¤ˇ¤żžěšçĄ˘źĄ¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cd /usr/src && make cleandir && make cleandir ¤˝¤ˇ¤Ć /usr/obj ĽÄĽęĄź¤ňşď˝ü¤ˇ¤Ţ¤šĄŁ &prompt.root; rm -fr /usr/obj && mkdir /usr/obj ¤ł¤ě¤ĎĽ˝ĄźĽšĽÄĽęĄź¤Ť¤é¤š¤Ů¤Ć¤Î ¤Ź¤é¤Ż¤ż ¤ň°ěÁݤˇ¤Ţ¤šĄŁ ¤â¤Ś°ěĹŮžĺľ­¤Îźę˝ç¤ňšÔ¤Ś¤ČĄ˘şŁĹŮ¤Ď¤Ś¤Ţ¤ŻĆ°şî¤š¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ĽĐĄźĽ¸ĽçĽó 4.9-RELEASE °Ęšß¤Î &os; ¤ňťČÍѤˇ¤Ć¤¤¤ëžěšç /usr/libexec ¤Ë¤˘¤ë named-xfer ¤ÎĽłĽÔĄź¤ĎĽÇĽŐĽŠĽëĽČ¤ÇŔĹĹŞĽęĽóĽŻ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ş˝žě¤ËĽłĽÔĄź¤š¤ë¤ż¤á¤ËĂą˝ă¤Ë &man.cp.1; ¤ŹťČ¤¨¤Ţ¤šĄŁ named ¤Ź¸Ť¤ë¤ł¤Č¤Ź¤Ç¤­Ą˘ ˝ń¤­šţ¤ŕ¤ł¤Č¤Î¤Ç¤­¤ë dev/null ¤ňşîŔޤˇ¤Ţ¤šĄŁ &prompt.root; cd /etc/namedb/dev && mknod null c 2 2 &prompt.root; chmod 666 null /etc/namedb/var/run/ndc ¤Ť¤é /var/run/ndc ¤Ř¤ÎĽˇĽóĽÜĽęĽĂĽŻĽęĽóĽŻ¤ňşîŔޤˇ¤Ţ¤šĄŁ &prompt.root; ln -sf /etc/namedb/var/run/ndc /var/run/ndc ¤ł¤ě¤ĎĂą¤Ë &man.ndc.8; ¤ňźÂšÔ¤š¤ë¤ż¤Ó¤Ë ĽŞĽ×ĽˇĽçĽó¤ňťŘÄꤡ¤Ę¤Ż¤Ć¤â¤č¤¤¤č¤Ś¤Ë¤š¤ë¤Ŕ¤ą¤Ç¤šĄŁ /var/run ¤ÎĂćżČ¤ĎľŻĆ°ťţ¤Ëşď˝ü¤ľ¤ě¤ë¤ż¤áĄ˘ ¤ł¤ě¤ŹÍ­ÍѤŔ¤Čť×¤Ś¤Ę¤éĄ˘¤ł¤ÎĽłĽŢĽóĽÉ¤ňĽëĄźĽČ¤Î crontab ¤Ë ĽŞĽ×ĽˇĽçĽó¤ňťŘÄꤡ¤ĆÄɲ䎤äݤŔ¤ľ¤¤ĄŁ žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.crontab.5; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ named ¤Ź˝ń¤­šţ¤á¤ëÄɲäΠlog Ľ˝ĽąĽĂĽČ¤ňşîŔޤš¤ë¤č¤Ś¤Ë &man.syslogd.8; ¤ňŔßÄꤡ¤Ţ¤šĄŁ ¤ł¤ě¤ňšÔ¤Ś¤ż¤á¤Ë¤ĎĄ˘/etc/rc.conf Ćâ¤Î syslogd_flags ĘŃżô¤Ë -l /etc/namedb/dev/log ¤ň˛Ă¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ źĄ¤ÎšÔ¤ň /etc/rc.conf ¤Ë˛Ă¤¨¤Ć named ¤ŹľŻĆ°¤ˇĄ˘ źŤżČ¤ňş˝žěĆâ¤Ë chroot ¤š¤ë¤č¤Ś¤ËÄ´Ŕ°¤ˇ¤Ţ¤š named_enable="YES" named_flags="-u bind -g bind -t /etc/namedb /etc/named.conf" ŔßÄęĽŐĽĄĽ¤Ľë /etc/named.conf ¤Ď ş˝žě¤ÎĽÇĽŁĽěĽŻĽČĽę¤ËÂФˇ¤ĆÁęÂĐĹŞ¤Ę ĽŐĽëĽŃĽš¤ÇÉ˝¤ľ¤ě¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤Ä¤Ţ¤ęĄ˘žĺľ­¤ÎšÔ¤Çꍤľ¤ě¤żĽŐĽĄĽ¤Ľë¤ĎźÂşÝ¤Ë¤Ď /etc/namedb/etc/named.conf ¤Ç¤šĄŁ źĄ¤ÎĽšĽĆĽĂĽ×¤Ď named ¤Ź¤É¤ÎĽžĄźĽó¤ňĆɤߚţ¤ŕ¤ŤĄ˘ ¤˝¤ˇ¤ĆĽÇĽŁĽšĽŻžĺ¤Î¤É¤ł¤ËĽžĄźĽóĽŐĽĄĽ¤Ľë¤Ź¤˘¤ë¤Î¤Ť¤ňĂΤ뤿¤á¤Ë /etc/namedb/etc/named.conf ¤ňĘÔ˝¸¤š¤ë¤ł¤Č¤Ç¤šĄŁ ˛źľ­¤ËÎă¤ňĽłĽáĽóĽČ¤ň˛Ă¤¨¤Ćꍤˇ¤Ţ¤š (¤ł¤ł¤ÇĆä˼łĽáĽóĽČ¤ľ¤ě¤Ć¤¤¤Ę¤¤ĆâÍƤˤĤ¤¤Ć¤ĎĄ˘ ş˝žě¤ÎĂć¤Çưşî¤ľ¤ť¤Ę¤¤ DNS ĽľĄźĽĐ¤ÎŔßÄę¤ČĆą¤¸¤Ç¤š)ĄŁ options { directory "/"; named-xfer "/bin/named-xfer"; version ""; // Don't reveal BIND version query-source address * port 53; }; // ndc control socket controls { unix "/var/run/ndc" perm 0600 owner 0 group 0; }; // Zones follow: zone "localhost" IN { type master; file "master/named.localhost"; allow-transfer { localhost; }; notify no; }; zone "0.0.127.in-addr.arpa" IN { type master; file "master/localhost.rev"; allow-transfer { localhost; }; notify no; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int" { type master; file "master/localhost-v6.rev"; allow-transfer { localhost; }; notify no; }; zone "." IN { type hint; file "master/named.root"; }; zone "private.example.net" in { type master; file "master/private.example.net.db"; allow-transfer { 192.168.10.0/24; }; }; zone "10.168.192.in-addr.arpa" in { type slave; masters { 192.168.10.2; }; file "slave/192.168.10.db"; }; directory ¤Ď / ¤ňťŘÄꤡ¤Ţ¤šĄŁ named ¤ŹÉŹÍפȤš¤ëĽŐĽĄĽ¤Ľë¤Ď¤š¤Ů¤Ć¤ł¤ÎĽÇĽŁĽěĽŻĽČĽę¤Ë¤˘¤ę¤Ţ¤šĄŁ (¤ł¤ÎťŘÄę¤Ď ÄĚžď¤Î (ĚőĂí: ş˝žěĆâ¤Çưşî¤ľ¤ť¤Ę¤¤) ĽćĄźĽś¤Ë¤Č¤Ă¤Ć¤Î /etc/namedb ¤ČĹů˛Á¤Ç¤š)ĄŁ named-xfer ĽĐĽ¤ĽĘĽę¤Ř¤Î (named ¤Ë¤Č¤Ă¤Ć¤Î) ĽŐĽëĽŃĽš¤ňťŘÄꤡ¤Ţ¤šĄŁ named ¤ĎĽÇĽŐĽŠĽëĽČ¤Ç named-xfer ¤ň /usr/libexec ¤Ť¤éĂľ¤š¤č¤Ś¤ËĽłĽóĽŃĽ¤Ľë¤ľ¤ě¤Ć¤¤¤ë¤Î¤ÇĄ˘¤ł¤ě¤ŹÉŹÍ×¤Ç¤š ¤ł¤ÎĽžĄźĽó¤ËÂФš¤ëĽžĄźĽóĽŐĽĄĽ¤Ľë¤ň named ¤Ź¸Ť¤Ä¤ą¤é¤ě¤ë¤č¤Ś¤ËĽŐĽĄĽ¤ĽëĚž¤ň (žĺľ­¤ČĆąÍÍ¤Ë directory ¤Ť¤é¤ÎÁęÂĐĽŃĽš¤Ç) ťŘÄꤡ¤Ţ¤šĄŁ ¤ł¤ÎĽžĄźĽó¤ËÂФš¤ëĽžĄźĽóžđĘó¤ŹĽŢĽšĽżĽľĄźĽĐ¤Ť¤é¤ŹĹžÁ÷¤ľ¤ě¤ż¤˘¤Č¤ËĄ˘ named ¤ŹĽžĄźĽóĽŐĽĄĽ¤Ľë¤ÎĽłĽÔĄź¤ň˝ń¤­šţ¤ŕĽŐĽĄĽ¤ĽëĚž¤ň (žĺľ­¤ČĆąÍÍ¤Ë directory ¤Ť¤é¤ÎÁęÂĐĽŃĽš¤Ç) ťŘÄꤡ¤Ţ¤šĄŁ¤ł¤ě¤ŹĄ˘žĺľ­¤Î¤č¤Ś¤ËŔßÄęĂĘłŹ¤Ç slave ĽÇĽŁĽěĽŻĽČĽę¤Î˝ęÍ­źÔ¤ň bind ¤ËĘŃšš¤š¤ëÍýÍł¤Ç¤šĄŁ žĺľ­¤ÎĽšĽĆĽĂĽ×¤ň´°Îť¤ˇ¤ż¤éĄ˘ĽľĄźĽĐ¤ňşĆľŻĆ°¤š¤ë¤Ť &man.syslogd.8; ¤ňşĆľŻĆ°¤ˇĄ˘&man.named.8; ¤ňľŻĆ°¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ¤˝¤ÎşÝĄ˘ syslogd_flags ¤Ş¤č¤Ó named_flags ¤Ëżˇ¤ż¤ËťŘÄꤡ¤żĽŞĽ×ĽˇĽçĽó¤ŹÍ­¸ú¤Ë¤Ę¤Ă¤Ć¤¤¤ë¤ł¤Č¤ňłÎ¤Ť¤á¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ě¤Ç named ¤ňş˝žě¤Î¤Ę¤Ť¤Çưşî¤ľ¤ť¤ë¤ł¤Č¤Ź¤Ç¤­¤Ć¤¤¤ë¤Ď¤ş¤Ç¤š! ĽťĽ­ĽĺĽęĽĆĽŁ BIND ¤Ď DNS ¤ÎşÇ¤â°ěČĚĹŞ¤ĘźÂÁő¤Ç¤Ď¤˘¤ę¤Ţ¤š¤ŹĄ˘ žď¤ËĽťĽ­ĽĺĽęĽĆĽŁĚäÂę¤ňĘú¤¨¤Ć¤¤¤Ţ¤šĄŁ ĚäÂę¤Ë¤Ę¤ęĆŔ¤ëĄ˘¤Ţ¤ż°­ÍѲÄÇ˝¤ĘĽťĽ­ĽĺĽęĽĆĽŁĽŰĄźĽë¤ŹťţĄš¤ß¤Ä¤Ť¤ę¤Ţ¤šĄŁ ¸˝şß¤ÎĽ¤ĽóĽżĄźĽÍĽĂĽČ¤Ş¤č¤Ó FreeBSD ¤ÎĽťĽ­ĽĺĽęĽĆĽŁĚäÂę¤Ë¤Ä¤¤¤Ćžď¤ËşÇżˇ¤ÎžđĘó¤ňĆŔ¤ë¤ż¤á¤Ë CERT ¤Ş¤č¤Ó freebsd-security-notifications ¤ňšŘĆɤš¤ë¤Č¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ĚäÂꤏŔ¸¤¸¤ż¤Č¤ˇ¤Ć¤âĄ˘ şÇżˇ¤ÎĽ˝ĄźĽš¤Ť¤éĽÓĽëĽÉ¤ˇ¤ż named ¤ňÍѰդˇ¤Ć¤Ş¤ą¤ĐĄ˘ ĚäÂę¤Ë¤Ę¤é¤Ę¤¤¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¤ľ¤é¤Ę¤ëžđĘó¸ť BIND/named ¤ÎĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸: &man.ndc.8; &man.named.8; &man.named.conf.5; ISC Bind ¸řź°ĽÚĄźĽ¸ BIND FAQ O'Reilly DNS and BIND 4th Edition RFC1034 - Domain Names - Concepts and Facilities (ĽÉĽáĽ¤ĽóĚžĄ˘¤˝¤ÎłľÇ°¤Č´đČ×) RFC1035 - Domain Names - Implementation and Specification (ĽÉĽáĽ¤ĽóĚžĄ˘¤˝¤ÎźÂÁő¤ČťĹÍÍ) Tom Hukins ´óšĆ: NTP NTP łľŔâ ťţ´Ö¤ÎˇĐ˛á¤Č¤Č¤â¤ËĄ˘ĽłĽóĽÔĽĺĄźĽż¤Îťţˇ×¤Ď¤ş¤ě¤Ć¤ˇ¤Ţ¤¤¤Ź¤Á¤Ç¤šĄŁ ťţ´Ö¤ŹˇĐ¤Ä¤ČĄ˘ĽłĽóĽÔĽĺĄźĽż¤Îťţˇ×¤ĎŔľłÎ¤Ç¤Ę¤Ż¤Ę¤Ă¤Ć¤ć¤­¤Ţ¤šĄŁ NTP (Network Time Protocol) ¤Ďťţˇ×¤ŹŔľłÎ¤Ç¤˘¤ë¤ł¤Č¤ňĘÝžÚ¤š¤ëĘýËĄ¤Î°ě¤Ä¤Ç¤šĄŁ Ľ¤ĽóĽżĄźĽÍĽĂĽČĽľĄźĽÓĽš¤ÎÂż¤Ż¤ĎĄ˘ ĽłĽóĽÔĽĺĄźĽż¤Îťţˇ×¤ŹŔľłÎ¤Ç¤˘¤ë¤ł¤Č¤Ë°Í¸¤ˇ¤Ć¤¤¤ë¤ŤĄ˘ ¤˘¤ë¤¤¤ĎÂż¤Ż¤ňÉé¤Ă¤Ć¤¤¤Ţ¤šĄŁ ¤ż¤Č¤¨¤Đ web ĽľĄźĽĐ ¤ĎĄ˘ ¤˘¤ëĽŐĽĄĽ¤Ľë¤Ź¤˘¤ëťţšď°Ęšß¤Ë˝¤Ŕľ¤ľ¤ě¤Ć¤¤¤ż¤é¤˝¤ÎĽŐĽĄĽ¤Ľë¤ňÁ÷¤Ă¤Ć¤Ű¤ˇ¤¤¤Č¤¤¤ŚÍ׾á¤ňźő¤ąźč¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ &man.cron.8; ¤Î¤č¤Ś¤ĘĽľĄźĽÓĽš¤Ď˝ęÄę¤Îťţ´Ö¤ËĽłĽŢĽóĽÉ¤ňźÂšÔ¤ˇ¤Ţ¤šĄŁ ťţˇ×¤ŹŔľłÎ¤Ç¤Ę¤¤žěšçĄ˘ ¤ł¤ě¤é¤ÎĽłĽŢĽóĽÉ¤Ď´üÂÔ¤ˇ¤ż¤Č¤Ş¤ę¤Ë¤ĎźÂšÔ¤ľ¤ě¤Ę¤¤¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ NTP ntpd FreeBSD ¤Ď &man.ntpd.8; NTP ĽľĄźĽĐ¤ňĹëşÜ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ¤ł¤ě¤ĎĄ˘ ĽŢĽˇĽó¤Îťţˇ×¤ňšç¤ď¤ť¤ë¤ż¤á¤Ëž¤Î NTP ĽľĄźĽĐ¤ËĚ䤤šç¤ď¤ť¤ň¤ˇ¤ż¤ęĄ˘ ž¤ÎĽŢĽˇĽó¤ËÂФˇ¤Ćťţšď¤ňĘ󤸤뤿¤á¤ËťČÍѤǤ­¤Ţ¤šĄŁ ĹŹŔÚ¤Ę NTP ĽľĄźĽĐ¤ÎÁŞÂň NTP ĽľĄźĽĐÁŞÂň ťţšď¤ňĆą´ü¤š¤ë¤ż¤á¤ËÍřÍѤš¤ë NTP ĽľĄźĽĐ¤ňĄ˘ °ě¤Ä°Ęžĺ¸Ť¤Ä¤ą¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻ´ÉÍýźÔĄ˘¤Ţ¤ż¤Ď ISP ¤Ď¤ł¤ÎĚÜĹŞ¤Î¤ż¤á¤Ë NTP ĽľĄźĽĐ¤ňŔßÄꤡ¤Ć¤¤¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤ó — ËÜĹö¤Ë¤˝¤Ś¤Ę¤Î¤ŤłÎ¤Ť¤á¤ë¤ż¤á¤ËĽÉĽ­ĽĺĽáĽóĽČ¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤˘¤Ę¤ż¤Îśá¤Ż¤Î NTP ĽľĄźĽĐ¤ňĂľ¤ť¤ë ¸ř¤ËĽ˘ĽŻĽťĽš˛ÄÇ˝¤Ę NTP ĽľĄźĽĐ¤ÎĽęĽšĽČ ¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤É¤ÎĽľĄźĽĐ¤ňÁŞÂň¤š¤ë¤Č¤ˇ¤Ć¤âĄ˘¤˝¤ÎĽľĄźĽĐ¤ÎążąÄĽÝĽęĽˇ¤ňÍý˛ň¤ˇĄ˘ Í׾᤾¤ě¤Ć¤¤¤ë¤Ę¤éÍřÍŃľö˛Ä¤ňľá¤á¤ë¤ł¤Č¤ňËş¤ě¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ ťČÍѤˇ¤Ć¤¤¤ëĽľĄźĽĐ¤Î¤Ś¤Á¤Î¤É¤ě¤Ť¤ŹĹţĂŁÉÔÇ˝¤Ë¤Ę¤ë¤ŤĄ˘ ¤˝¤Îťţˇ×¤ÎżŽÍęŔ­¤ŹÄ㤤žěšçĄ˘Ěľ´Řˇ¸¤Î NTP ĽľĄźĽĐ¤ň¤¤¤Ż¤Ä¤ŤÁŞÂň¤š¤ë¤Č¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ &man.ntpd.8; ¤Ďž¤ÎĽľĄźĽĐ¤Ť¤éźő¤ąźč¤Ă¤żąţĹú¤ň¸­¤ŻÍřÍѤˇ¤Ţ¤š — żŽÍę¤Ç¤­¤Ę¤¤ĽľĄźĽĐ¤č¤ężŽÍę¤Ç¤­¤ëĽľĄźĽĐ¤ň˝Ĺťë¤ˇ¤Ţ¤šĄŁ ĽŢĽˇĽó¤ÎŔßÄę NTP ŔßÄę ´đËÜŔßÄę ntpdate ĽŢĽˇĽó¤ŹľŻĆ°¤š¤ë¤Č¤­¤Ŕ¤ąťţˇ×¤ňĆą´ü¤ľ¤ť¤ż¤¤žěšç¤Ď &man.ntpdate.8; ¤ŹťČ¤¨¤Ţ¤šĄŁÉŃČˤ˺ƾŻĆ°¤ľ¤ěĄ˘ ¤ż¤Ţ¤ËĆą´ü¤š¤ě¤Đ˝˝ĘŹ¤ĘĽÇĽšĽŻĽČĽĂĽ×ĽŢĽˇĽó¤Ë¤ĎĹŹŔÚ¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¤ˇ¤Ť¤ˇ¤Ű¤Č¤ó¤É¤ÎĽŢĽˇĽó¤Ç¤Ď &man.ntpd.8; ¤ňźÂšÔ¤š¤ë¤Ů¤­¤Ç¤šĄŁ &man.ntpd.8; ¤ňư¤Ť¤ˇ¤Ć¤¤¤ëĽŢĽˇĽó¤Ç¤âĄ˘ľŻĆ°ťţ¤Ë &man.ntpdate.8; ¤ňťČÍѤš¤ë¤Î¤Ď¤č¤¤šÍ¤¨¤Ç¤šĄŁ &man.ntpd.8; Ľ×ĽíĽ°ĽéĽŕ¤Ďťţˇ×¤ň˝ůĄš¤ËĘŃšš¤ˇ¤Ţ¤šĄŁ¤ˇ¤Ť¤ˇ &man.ntpdate.8; ¤ĎŔľ¤ˇ¤¤ťţšď¤Č¸˝şßŔßÄꤾ¤ě¤Ć¤¤¤ëĽŢĽˇĽó¤Îťţšď¤Ź¤É¤ó¤Ę¤ËÎĽ¤ě¤Ć¤¤¤č¤Ś¤Č¤âťţˇ×¤ňŔßÄꤡ¤Ţ¤šĄŁ ľŻĆ°ťţ¤Ë &man.ntpdate.8; ¤ňÍ­¸ú¤Ë¤š¤ë¤ż¤á¤Ë¤ĎĄ˘ ntpdate_enable="YES" ¤ň /etc/rc.conf ¤ËÄɲ䎤äݤŔ¤ľ¤¤ĄŁ ¤ľ¤é¤ËĄ˘Ćą´ü¤ˇ¤ż¤¤¤š¤Ů¤Ć¤ÎĽľĄźĽĐ¤Ş¤č¤ÓĄ˘&man.ntpdate.8; ¤ËĹĎ¤š¤˘¤é¤ć¤ëĽŐĽéĽ°¤ň ntpdate_flags ¤ËťŘÄꤚ¤ëÉŹÍפʤ˘¤ë¤Ç¤ˇ¤ç¤ŚĄŁ °ěČĚŔßÄę NTP ntp.conf NTP ¤Ď &man.ntp.conf.5; ¤Ëľ­˝Ň¤ľ¤ě¤ż˝ńź°¤Î /etc/ntp.conf ĽŐĽĄĽ¤Ľë¤Ë¤č¤Ă¤ĆŔßÄꤾ¤ě¤Ţ¤šĄŁ ´ĘĂą¤ĘÎă¤ň°Ę˛ź¤Ëꍤˇ¤Ţ¤šĄŁ server ntplocal.example.com prefer server timeserver.example.org server ntp2a.example.net driftfile /var/db/ntp.drift server ĽŞĽ×ĽˇĽçĽó¤ĎĄ˘ ťČÍѤš¤ëĽľĄźĽĐ¤ň°ěšÔ¤Ë°ě¤Ä¤ş¤ÄťŘÄꤡ¤Ţ¤šĄŁĽľĄźĽĐ¤Źžĺľ­¤Î ntplocal.example.com ¤Î¤č¤Ś¤Ë prefer °úżô¤Č¤Č¤â¤ËťŘÄꤾ¤ě¤żžěšçĄ˘ ¤ł¤ÎĽľĄźĽĐ¤Ďž¤ÎĽľĄźĽĐ¤č¤ęÍĽŔ褾¤ě¤Ţ¤šĄŁ ÍĽŔ褾¤ě¤żĽľĄźĽĐ¤Ť¤é¤ÎąţĹú¤ĎĄ˘ ž¤ÎĽľĄźĽĐ¤ÎąţĹú¤ČĂř¤ˇ¤Ż°Ű¤Ę¤ëžěšç¤ĎÇË´ţ¤ľ¤ě¤Ţ¤š¤ŹĄ˘ ¤˝¤Ś¤Ç¤Ę¤ą¤ě¤Đž¤ÎąţĹú¤ňšÍθ¤š¤ë¤ł¤Č¤Ę¤ŻťČÍѤľ¤ě¤Ţ¤šĄŁ prefer °úżô¤ĎĄ˘Ä̞異 ĆĂĘ̤ʝţ´ÖĽâĽËĽżĽĎĄźĽÉĽŚĽ§Ľ˘¤ňČ÷¤¨¤Ć¤¤¤ë¤č¤Ś¤ĘČóžď¤ËŔľłÎ¤Ç¤˘¤ë¤Č¤ľ¤ě¤Ć¤¤¤ë NTP ĽľĄźĽĐ¤ËÂФˇ¤ĆťČÍѤľ¤ě¤Ţ¤šĄŁ driftfile ĽŞĽ×ĽˇĽçĽó¤ĎĽˇĽšĽĆĽŕťţˇ×¤ÎźţÇČżôĽŞĽŐĽťĽĂĽČ¤ňłĘÇź¤š¤ë¤ż¤á¤ËťČÍѤš¤ëĽŐĽĄĽ¤Ľë¤ňťŘÄꤡ¤Ţ¤šĄŁ &man.ntpd.8; Ľ×ĽíĽ°ĽéĽŕ¤ĎĄ˘ ťţˇ×¤ÎźŤÁłĘŃư¤ňźŤĆ°ĹޤËĘäŔľ¤š¤ë¤ż¤á¤Ë¤ł¤ě¤ňÍѤ¤¤Ţ¤šĄŁ ¤ł¤ě¤Ë¤č¤ęĄ˘°ěÄęťţ´Öł°Éô¤ÎťţšďĽ˝ĄźĽš¤Ť¤éŔÚ¤ęÎĽ¤ľ¤ě¤ż¤Č¤ˇ¤Ć¤âĄ˘ ˝˝ĘŹŔľłÎ¤Ęťţšď¤ň°Ýťý¤š¤ë¤ł¤Č¤ň˛ÄÇ˝¤Ë¤ˇ¤Ţ¤šĄŁ driftfile ĽŞĽ×ĽˇĽçĽó¤ĎĄ˘ťČÍѤˇ¤Ć¤¤¤ë NTP ĽľĄźĽĐ¤Ť¤é˛áľî¤Ëźő¤ąźč¤Ă¤żąţĹú¤Ë´Ř¤š¤ëžđĘó¤ňłĘÇź¤š¤ë¤ż¤á¤ËĄ˘ ¤É¤ÎĽŐĽĄĽ¤Ľë¤ŹťČÍѤľ¤ě¤ë¤ŤťŘÄꤡ¤Ţ¤šĄŁ ¤ł¤ÎĽŐĽĄĽ¤Ľë¤Ď NTP ¤Ë´Ř¤š¤ëĆâÉôžđĘó¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤šĄŁ ¤ł¤ě¤Ďž¤ÎĽ×ĽíĽťĽš¤Ë¤č¤Ă¤Ć˝¤Ŕľ¤ľ¤ě¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ ĽľĄźĽĐ¤Ř¤ÎĽ˘ĽŻĽťĽšŔŠ¸ć ĽÇĽŐĽŠĽëĽČ¤Ç¤Ď NTP ĽľĄźĽĐ¤ĎĽ¤ĽóĽżĄźĽÍĽĂĽČžĺ¤Î¤š¤Ů¤Ć¤ÎĽŰĽšĽČ¤Ť¤éĽ˘ĽŻĽťĽš¤Ź˛ÄÇ˝¤Ç¤šĄŁ /etc/ntp.conf Ćâ¤Ç restrict ĽŞĽ×ĽˇĽçĽó¤ňťŘÄꤚ¤ë¤ł¤Č¤Ë¤č¤Ă¤ĆĄ˘ ¤É¤ÎĽŢĽˇĽó¤ŹĽľĄźĽĐ¤ËĽ˘ĽŻĽťĽš¤Ç¤­¤ë¤Ť¤ňŔЏć¤Ç¤­¤ë¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ NTP ĽľĄźĽĐ¤ËĽ˘ĽŻĽťĽš¤š¤ëĽŢĽˇĽó¤Î¤š¤Ů¤Ć¤ňľńČݤˇ¤ż¤¤¤Î¤Ę¤éĄ˘ °Ę˛ź¤ÎšÔ¤ň /etc/ntp.conf ¤ËÄɲ䎤äݤŔ¤ľ¤¤ĄŁ restrict default ignore ¤˘¤Ę¤ż¤ÎĽÍĽĂĽČĽďĄźĽŻĆâ¤ÎĽŢĽˇĽó¤Ë¤Ŕ¤ąĽľĄźĽĐ¤ËŔÜÂł¤ˇ¤Ćťţˇ×¤ňĆą´ü¤š¤ë¤ł¤Č¤ňǧ¤á¤ż¤¤¤ŹĄ˘ ¤˝¤ě¤é¤Ť¤éĽľĄźĽĐ¤ËÂФˇ¤ĆŔßÄę¤ňšÔ¤Ś¤Î¤ňľö¤ľ¤şĄ˘ Ćą´ü¤š¤ëĂźËö¤Č¤ˇ¤Ć¤âÍřÍѤľ¤ě¤Ę¤¤¤č¤Ś¤Ë¤ˇ¤ż¤¤¤Î¤Ę¤éĄ˘ °Ę˛ź¤ň˛Ă¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ restrict 192.168.1.0 mask 255.255.255.0 notrust nomodify notrap 192.168.1.0 ¤ň¤˘¤Ę¤ż¤ÎĽÍĽĂĽČĽďĄźĽŻ¤Î IP Ľ˘ĽÉĽěĽš¤Ë 255.255.255.0 ¤ň¤˘¤Ę¤ż¤ÎĽÍĽĂĽČĽďĄźĽŻ¤ÎĽÍĽĂĽČĽŢĽšĽŻ¤ËĂÖ¤­´š¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /etc/ntp.conf ¤Ë¤ĎĘŁżô¤Î restrict ĽŞĽ×ĽˇĽçĽó¤ňĂÖ¤ą¤Ţ¤šĄŁ žÜşŮ¤ËÉŐ¤¤¤Ć¤Ď &man.ntp.conf.5; ¤Î Access Control Support ĽľĽÖĽťĽŻĽˇĽçĽó¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ NTP ĽľĄźĽĐ¤ÎźÂšÔ NTP ĽľĄźĽĐ¤ŹľŻĆ°ťţ¤ËźÂšÔ¤ľ¤ě¤ë¤ł¤Č¤ňĘÝžÚ¤š¤ë¤ż¤á¤ËĄ˘ xntpd_enable="YES" ¤ň /etc/rc.conf ¤Ë˛Ă¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &man.ntpd.8; ¤ËĽŐĽéĽ°¤ňÄɲ䡤ż¤¤žěšç¤Ď /etc/rc.conf Ćâ¤Î xntpd_flags ĽŃĽéĽáĄźĽż¤ňĘÔ˝¸¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŢĽˇĽó¤ňşĆľŻĆ°¤š¤ë¤ł¤Č¤Ę¤ŻĽľĄźĽĐ¤ňźÂšÔ¤ˇ¤ż¤¤¤Č¤­¤ĎĄ˘ /etc/rc.conf Ćâ¤Î xntpd_flags ¤ÇÄɲ侤줿ĽŃĽéĽáĄźĽż¤ň¤š¤Ů¤ĆťŘÄꤡ¤Ć ntpd ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ°Ę˛ź¤ËÎă¤ňꍤˇ¤Ţ¤šĄŁ &prompt.root; ntpd -p /var/run/ntpd.pid &os; 5.X ¤Ç¤Ď /etc/rc.conf Ćâ¤Î¤ľ¤Ţ¤ś¤Ţ¤ĘĽŞĽ×ĽˇĽçĽó¤ÎĚžÁ°¤ŹĘѤď¤ę¤Ţ¤ˇ¤żĄŁ ¤ˇ¤ż¤Ź¤Ă¤ĆĄ˘žĺľ­¤Î xntpd ¤Ë´Ř¤š¤ëĽŞĽ×ĽˇĽçĽó¤Ď ntpd ¤ËĂÖ¤­´š¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ °ěťţĹŞ¤ĘĽ¤ĽóĽżĄźĽÍĽĂĽČŔÜÂł¤Ç ntpd ¤ňťČÍѤš¤ë &man.ntpd.8; Ľ×ĽíĽ°ĽéĽŕ¤ĎŔľ¤ˇ¤ŻľĄÇ˝¤š¤ë¤ż¤á¤ËĄ˘ Ľ¤ĽóĽżĄźĽÍĽĂĽČ¤Ř¤ÎžďťţŔÜÂł¤ňÉŹÍפȤˇ¤Ţ¤ť¤óĄŁ¤ˇ¤Ť¤ˇ¤Ę¤Ź¤éĄ˘ ĽŞĽóĽÇĽŢĽóĽÉ¤ÇĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ×¤ľ¤ě¤ë¤č¤Ś¤ËŔßÄꤾ¤ě¤ż°ěťţĹŞ¤ĘŔÜÂł¤ÎžěšçĄ˘ NTP ĽČĽéĽŐĽŁĽĂĽŻ¤ŹĽŔĽ¤Ľ˘Ľë¤ň°ú¤­ľŻ¤ł¤ˇ¤ż¤ęĄ˘ ŔÜÂł¤ň°Ýťý¤ˇÂł¤ą¤ë¤č¤Ś¤Ę¤ł¤Č¤ňČň¤ą¤ë¤č¤Ś¤Ë¤ˇ¤żĘý¤Ź¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ĽćĄźĽś PPP ¤ňťČÍѤˇ¤Ć¤¤¤ëžěšçĄ˘°Ę˛ź¤ÎÎă¤Î¤č¤Ś¤Ë /etc/ppp/ppp.conf Ćâ¤Ç filter ĽÇĽŁĽěĽŻĽĆĽŁĽÖ¤ŹťČÍѤǤ­¤Ţ¤šĄŁ set filter dial 0 deny udp src eq 123 # Prevent NTP traffic from initiating dial out set filter dial 1 permit 0 0 set filter alive 0 deny udp src eq 123 # Prevent incoming NTP traffic from keeping the connection open set filter alive 1 deny udp dst eq 123 # Prevent outgoing NTP traffic from keeping the connection open set filter alive 2 permit 0/0 0/0 žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.ppp.8; Ćâ¤Î PACKET FILTERING ĽťĽŻĽˇĽçĽóĄ˘¤Ş¤č¤Ó /usr/share/examples/ppp/ Ćâ¤ÎÎă¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ žŽ¤ľ¤¤ČÖšć¤ÎĽÝĄźĽČ¤ňĽÖĽíĽĂĽŻ¤š¤ëĽ¤ĽóĽżĄźĽÍĽĂĽČĽ˘ĽŻĽťĽšĽ×ĽíĽĐĽ¤ĽŔ¤Ç¤ĎĄ˘ ąţĹú¤Ź¤˘¤Ę¤ż¤ÎĽŢĽˇĽó¤ËĹţĂŁ¤ˇ¤Ę¤¤¤Î¤Ç NTP ¤Ź¤­¤Á¤ó¤Čưşî¤ˇ¤Ę¤¤žěšç¤â¤˘¤ę¤Ţ¤šĄŁ ¤ľ¤é¤Ę¤ëžđĘó¸ť NTP ĽľĄźĽĐ¤Ë´Ř¤š¤ëʸ˝ń¤Ď HTML ˇÁź°¤Ç /usr/share/doc/ntp/ ¤Ë¤˘¤ę¤Ţ¤šĄŁ Chern Lee ´óšĆ: ĽÍĽĂĽČĽďĄźĽŻĽ˘ĽÉĽěĽšĘŃ´š (NAT) łľÍ× natd °ěČĚ¤Ë &man.natd.8; ¤Č¤ˇ¤ĆĂΤé¤ě¤Ć¤¤¤ë FreeBSD ĽÍĽĂĽČĽďĄźĽŻĽ˘ĽÉĽěĽšĘŃ´šĽÇĄźĽâĽó¤ĎĄ˘ raw IP ĽŃĽąĽĂĽČ¤ňźőżŽ¤ˇ¤ĆĄ˘ Ľ˝ĄźĽšĽ˘ĽÉĽěĽš¤ňĽíĄźĽŤĽëĽŢĽˇĽó¤ËĘŃšš¤ˇĄ˘ ¤˝¤ÎĽŃĽąĽĂĽČ¤ňł°¸ţ¤­¤Î IP ĽŃĽąĽĂĽČ¤ÎÎŽ¤ě¤ËşĆĂíĆţ¤š¤ëĽÇĄźĽâĽó¤Ç¤šĄŁ &man.natd.8; ¤ĎĄ˘ ĽÇĄźĽż¤ŹĚá¤Ă¤Ć¤­¤ż¤Č¤­¤ËĄ˘ĽÇĄźĽż¤ÎËÜÍč¤Îžě˝ę¤ňČ˝Ę̤ˇĄ˘ ¤â¤Č¤â¤ČÍ׾ᤡ¤żÁęźę¤ŘĽÇĄźĽż¤ňĘÖ¤š¤ł¤Č¤Ź¤Ç¤­¤ë¤č¤Ś¤ËĽ˝ĄźĽš IP Ľ˘ĽÉĽěĽš¤ČĽÝĄźĽČ¤ňĘŃšš¤ˇ¤Ţ¤šĄŁ Ľ¤ĽóĽżĄźĽÍĽĂĽČŔÜÂłśŚÍ­ IP ĽŢĽšĽŤĽěĄźĽÉ NAT ¤ÎşÇ¤â°ěČĚĹŞ¤ĘťČÍŃËĄ¤ĎĄ˘ °ěČĚĹŞ¤Ë¤ĎĽ¤ĽóĽżĄźĽÍĽĂĽČŔÜÂłśŚÍ­¤Č¤ˇ¤ĆĂΤé¤ě¤Ć¤¤¤ë¤â¤Î¤ňźÂšÔ¤š¤ë¤ł¤Č¤Ç¤šĄŁ ŔßÄę IPv4 ¤Î IP śő´Ö¤ŹÂ­¤ę¤Ę¤Ż¤Ę¤ę¤Ä¤Ä¤˘¤ë¤ł¤ČĄ˘¤Ş¤č¤ÓĄ˘ ĽąĄźĽÖĽë¤ä DSL ¤Î¤č¤Ś¤ĘšâÂŽ¤Î˛ĂĆţźÔ˛óŔţÍřÍŃźÔ¤ÎÁý˛Ă¤Ë¤č¤Ă¤ĆĄ˘ żÍĄš¤Ď¤Ţ¤š¤Ţ¤šĽ¤ĽóĽżĄźĽÍĽĂĽČŔÜÂł¤ňśŚÍ­¤š¤ëźęĂʤňÉŹÍפȤˇ¤Ć¤¤¤Ţ¤šĄŁ °ě¤Ä¤ÎŔÜÂł¤Ş¤č¤Ó IP Ľ˘ĽÉĽěĽš¤ňÄ̤ˇ¤Ć¤¤¤Ż¤Ä¤â¤ÎĽłĽóĽÔĽĺĄźĽż¤ň˛óŔţ¤ËŔÜÂł¤š¤ëÇ˝ÎĎ¤Ź¤˘¤ë &man.natd.8; ¤ŹšçÍýĹŞ¤ĘÁŞÂň¤Ë¤Ę¤ę¤Ţ¤šĄŁ ¤â¤Ă¤Č¤â¤č¤Ż¤˘¤ë¤Î¤ĎĄ˘ĽćĄźĽś¤Ź 1 ¤Ä¤Î IP Ľ˘ĽÉĽěĽš¤ÇĽąĄźĽÖĽë¤Ţ¤ż¤Ď DSL ˛óŔţ¤ËŔÜÂł¤ľ¤ě¤żĽŢĽˇĽó¤ňťý¤Ă¤Ć¤Ş¤ęĄ˘ Ľ¤ĽóĽżĄźĽÍĽĂĽČ¤Ř¤ÎĽ˘ĽŻĽťĽš¤ň LAN ˇĐÍł¤Ç¤¤¤Ż¤Ä¤Ť¤ÎĽłĽóĽÔĽĺĄźĽż¤ËÄ󜥤š¤ë¤Î¤ËĄ˘ ¤ł¤ÎŔÜÂł¤ľ¤ě¤żĽłĽóĽÔĽĺĄźĽż¤ňťČÍѤˇ¤ż¤¤¤Č¤¤¤Śžěšç¤Ç¤šĄŁ ¤˝¤Î¤ż¤á¤Ë¤ĎĄ˘Ľ¤ĽóĽżĄźĽÍĽĂĽČ¤ËŔÜÂł¤ľ¤ě¤Ć¤¤¤ë FreeBSD ĽŢĽˇĽó¤ĎĽ˛ĄźĽČĽŚĽ§Ľ¤¤Č¤ˇ¤Ćưşî¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ÎĽ˛ĄźĽČĽŚĽ§Ľ¤ĽŢĽˇĽó¤Ď 2 ¤Ä¤Î NIC ¤ŹÉŹÍפǤš (1 ¤Ä¤ĎĽ¤ĽóĽżĄźĽÍĽĂĽČĽëĄźĽż¤ŘŔÜÂł¤š¤ë¤ż¤á¤ÇĄ˘¤â¤Ś 1 ¤Ä¤Ď LAN ¤ËŔÜÂł¤š¤ë¤ż¤á¤Ç¤š)ĄŁ LAN žĺ¤Î¤š¤Ů¤Ć¤ÎĽŢĽˇĽó¤ĎĽĎĽÖ¤Ţ¤ż¤ĎĽšĽ¤ĽĂĽÁ¤ňÄ̤ˇ¤ĆŔÜÂł¤ľ¤ě¤Ţ¤šĄŁ _______ __________ ________ | | | | | | | Hub |-----| Client B |-----| Router |----- Internet |_______| |__________| |________| | ____|_____ | | | Client A | |__________| ĽÍĽĂĽČĽďĄźĽŻĽěĽ¤Ľ˘ĽŚĽČ Ľ¤ĽóĽżĄźĽÍĽĂĽČŔÜÂł¤ňśŚÍ­¤š¤ë¤ż¤á¤ËĄ˘ ¤ł¤Î¤č¤Ś¤ĘŔßÄꤏ¤č¤ŻťČÍѤľ¤ě¤Ć¤¤¤Ţ¤šĄŁ LAN Ćâ¤ÎĽŢĽˇĽó¤Î 1 Â椏Ľ¤ĽóĽżĄźĽÍĽĂĽČ¤ËŔÜÂł¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ťÄ¤ę¤ÎĽŢĽˇĽó¤Ď¤˝¤Î Ľ˛ĄźĽČĽŚĽ§Ľ¤ ĽŢĽˇĽó¤ňÄ̤ˇ¤ĆĽ¤ĽóĽżĄźĽÍĽĂĽČ¤ËĽ˘ĽŻĽťĽš¤ˇ¤Ţ¤šĄŁ ŔßÄę ĽŤĄźĽÍĽë ŔßÄę źĄ¤ÎĽŞĽ×ĽˇĽçĽó¤ŹĽŤĄźĽÍĽëĽłĽóĽŐĽŁĽŽĽĺĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤ËÉŹÍ×¤Ç¤šĄŁ options IPFIREWALL options IPDIVERT ¤ľ¤é¤ËĄ˘źĄ¤ÎĽŞĽ×ĽˇĽçĽó¤ňĆţ¤ě¤Ć¤â¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ options IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_VERBOSE ˛źľ­¤ÎŔßÄę¤ň /etc/rc.conf ¤ÇšÔ¤ď¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ gateway_enable="YES" firewall_enable="YES" firewall_type="OPEN" natd_enable="YES" natd_interface="fxp0" natd_flags="" gateway_enable="YES" ĽŢĽˇĽó¤ŹĽ˛ĄźĽČĽŚĽ§Ľ¤¤Č¤ˇ¤Ćưşî¤š¤ë¤č¤Ś¤ËŔßÄꤡ¤Ţ¤šĄŁ sysctl net.inet.ip.forwarding=1 ĽłĽŢĽóĽÉ¤ňźÂšÔ¤ˇ¤Ć¤âĆą¤¸¸ú˛Ě¤Ź¤¨¤é¤ě¤Ţ¤šĄŁ firewall_enable="YES" /etc/rc.firewall ¤Ë¤˘¤ëĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽëĽëĄźĽë¤ňľŻĆ°ťţ¤ËÍ­¸ú¤Ë¤ˇ¤Ţ¤šĄŁ firewall_type="OPEN" ¤ł¤ě¤Ď¤˘¤é¤Ť¤¸¤áÄęľÁ¤ľ¤ě¤Ć¤¤¤ëĄ˘ ¤š¤Ů¤Ć¤ÎĽŃĽąĽĂĽČ¤ňÄ̤šĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽëĽëĄźĽëĽťĽĂĽČ¤ňťŘÄꤡ¤Ţ¤šĄŁ ž¤ÎĽżĽ¤Ľ×¤Ë¤Ä¤¤¤Ć¤Ď /etc/rc.firewall ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ natd_interface="fxp0" ĽŃĽąĽĂĽČ¤ňĹžÁ÷¤š¤ëĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ňťŘÄꤡ¤Ţ¤š (Ľ¤ĽóĽżĄźĽÍĽĂĽČ¤ËŔÜÂł¤ľ¤ě¤żĽ¤ĽóĽżĽŐĽ§ĄźĽš)ĄŁ natd_flags="" ľŻĆ°ťţ¤Ë &man.natd.8; ¤ËĹϤľ¤ě¤ëÄɲäΰúżô /etc/rc.conf ¤ËÁ°˝Ň¤ˇ¤żĽŞĽ×ĽˇĽçĽó¤ňÄęľÁ¤š¤ë¤ČĄ˘ľŻĆ°ťţ¤Ë natd -interface fxp0 ¤ŹźÂšÔ¤ľ¤ě¤Ţ¤šĄŁ ¤ł¤ě¤Ďźęư¤Ç¤âźÂšÔ¤Ç¤­¤Ţ¤šĄŁ ĽŞĽ×ĽˇĽçĽó¤ÎÄęľÁ¤Ë &man.natd.8; ¤ÎĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤ňťČ¤Ś¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ ¤ł¤Îžěšç¤Ë¤ĎĄ˘/etc/rc.conf ¤Ë°Ę˛ź¤ÎšÔ¤ňÄɲ䡥˘ ĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤ňÄęľÁ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ natd_flags="-f /etc/natd.conf" /etc/natd.conf ĽŐĽĄĽ¤Ľë¤Ç¤ĎĄ˘°ěšÔ¤´¤Č¤ËĽŞĽ×ĽˇĽçĽó¤ňŔßÄꤡ¤Ţ¤šĄŁ¤ż¤Č¤¨¤ĐĄ˘ źĄŔá¤ÎÎă¤Ç¤Ď°Ę˛ź¤Î¤č¤Ś¤ĘšÔ¤ň´Ţ¤ŕĽŐĽĄĽ¤Ľë¤ňÍѰդˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ redirect_port tcp 192.168.0.2:6667 6667 redirect_port tcp 192.168.0.3:80 80 ĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤Ë´Ř¤š¤ëĄ˘¤č¤ęžÜşŮ¤ĘžđĘó¤Ë¤Ä¤¤¤Ć¤ĎĄ˘ &man.natd.8; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤Î ĽŞĽ×ĽˇĽçĽó¤ňÄ´¤Ů¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ LAN ¤Ë¤Ö¤é˛ź¤Ź¤Ă¤Ć¤¤¤ëĽŢĽˇĽó¤Ş¤č¤ÓĽ¤ĽóĽżĽŐĽ§ĄźĽš¤Î¤˝¤ě¤ž¤ě¤Ë¤Ď RFC 1918 ¤ÇÄęľÁ¤ľ¤ě¤Ć¤¤¤ëĽ×ĽéĽ¤ĽŮĄźĽČĽÍĽĂĽČĽďĄźĽŻśő´Ö¤Î IP Ľ˘ĽÉĽěĽšČÖšć¤ňłä¤ęĹö¤ĆĄ˘ĽÇĽŐĽŠĽëĽČĽ˛ĄźĽČĽŚĽ§Ľ¤Ľ˘ĽÉĽěĽš¤ň natd ĽŢĽˇĽó¤ÎĆâÂŚ¤Î IP Ľ˘ĽÉĽěĽš¤Ë¤š¤Ů¤­¤Ç¤šĄŁ ¤ż¤Č¤¨¤Đ LAN ÂŚ¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČ A ¤Ş¤č¤Ó B ¤Ď IP Ľ˘ĽÉĽěĽš 192.168.0.2 ¤Ş¤č¤Ó 192.168.0.3 ¤ňłä¤ęĹö¤Ć¤é¤ě¤Ć¤Ş¤ęĄ˘ natd ĽŢĽˇĽó¤Î LAN Ľ¤ĽóĽżĽŐĽ§ĄźĽš¤Ď IP Ľ˘ĽÉĽěĽš 192.168.0.1 ¤ňłä¤ęĹö¤Ć¤é¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽŻĽéĽ¤Ľ˘ĽóĽČ A ¤Ş¤č¤Ó B ¤ÎĽÇĽŐĽŠĽëĽČĽ˛ĄźĽČĽŚĽ§Ľ¤¤Ď natd ĽŢĽˇĽó¤Î 192.168.0.1 ¤ËŔßÄꤾ¤ě¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ natd ĽŢĽˇĽó¤Îł°ÉôĄ˘ ¤Ţ¤ż¤ĎĽ¤ĽóĽżĄźĽÍĽĂĽČĽ¤ĽóĽżĽŐĽ§ĄźĽš¤Ď &man.natd.8; ¤Îưşî¤ËşÝ¤ˇ¤ĆĆĂĘ̤ν¤Ŕľ¤ňÉŹÍפȤˇ¤Ţ¤ť¤óĄŁ ĽÝĄźĽČĹžÁ÷ &man.natd.8; ¤ÎĂť˝ę¤ĎĄ˘Ľ¤ĽóĽżĄźĽÍĽĂĽČ¤Ť¤é LAN Ćâ¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËĽ˘ĽŻĽťĽš¤Ç¤­¤Ę¤¤¤Č¤¤¤Ś¤ł¤Č¤Ç¤šĄŁ LAN Ćâ¤ÎĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ďł°Éô¤Ë¸ţ¤ą¤ĆŔÜÂł¤ňšÔ¤Ś¤ł¤Č¤Ď¤Ç¤­¤Ţ¤š¤ŹĄ˘ Ćţ¤Ă¤ĆÍč¤ë¤â¤Î¤ňźő¤ąźč¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤ť¤óĄŁ¤ł¤ě¤ĎĄ˘LAN ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Î¤É¤ě¤Ť¤ÇĽ¤ĽóĽżĄźĽÍĽĂĽČĽľĄźĽÓĽš¤ňư¤Ť¤˝¤Ś¤Č¤ˇ¤żžěšç¤ËĄ˘ ĚäÂę¤Ë¤Ę¤ę¤Ţ¤šĄŁ¤ł¤ě¤ň˛ż¤Č¤Ť¤š¤ëĂą˝ă¤ĘĘýËĄ¤Ď natd ĽŢĽˇĽó¤Ť¤é LAN ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ŘĄ˘ ÁŞÂň¤ˇ¤żĽ¤ĽóĽżĄźĽÍĽĂĽČĽÝĄźĽČ¤ňĹžÁ÷¤š¤ë¤ł¤Č¤Ç¤šĄŁ ¤ż¤Č¤¨¤ĐĽŻĽéĽ¤Ľ˘ĽóĽČ A ¤ÇźÂšÔ¤ľ¤ě¤Ć¤¤¤ë IRC ĽľĄźĽĐ¤Ź¤˘¤ęĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČ B žĺ¤ÇźÂšÔ¤ľ¤ě¤Ć¤¤¤ë web ĽľĄźĽĐ¤Ź¤˘¤ë¤Č¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤ŹŔľ¤ˇ¤ŻĆ°şî¤š¤ë¤Ë¤ĎĄ˘ĽÝĄźĽČ 6667 (IRC) ¤Ş¤č¤Ó 80 (web) ¤Ř¤ÎŔÜÂł¤ňÂĐąţ¤š¤ëĽŢĽˇĽó¤ËĹžÁ÷¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ËĹŹŔÚ¤ĘĽŞĽ×ĽˇĽçĽó¤ň˛Ă¤¨¤Ć &man.natd.8; ¤ËĹϤľ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ˝ńź°¤Ď°Ę˛ź¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ -redirect_port proto targetIP:targetPORT[-targetPORT] [aliasIP:]aliasPORT[-aliasPORT] [remoteIP[:remotePORT[-remotePORT]]] žĺľ­¤ÎÎă¤Ç¤ĎĄ˘°úżô¤Ď°Ę˛ź¤Î¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ -redirect_port tcp 192.168.0.2:6667 6667 -redirect_port tcp 192.168.0.3:80 80 ¤ł¤ě¤ÇĹŹŔÚ¤Ę tcp ĽÝĄźĽČ¤Ź LAN ĽŻĽéĽ¤Ľ˘ĽóĽČĽŢĽˇĽó¤ËĹžÁ÷¤ľ¤ě¤Ţ¤šĄŁ °úżô¤Ď¸ÄĄš¤ÎĽÝĄźĽČ¤ňÂĐąţ¤ľ¤ť¤ëĽÝĄźĽČČϰϤňꍤš¤Î¤ËťČ¤¨¤Ţ¤šĄŁ ¤ż¤Č¤¨¤Đ tcp 192.168.0.2:2000-3000 2000-3000 ¤Ď 2000 ČÖ¤Ť¤é 3000ČÖĽÝĄźĽČ¤Ëźő¤ąźč¤é¤ě¤ż¤š¤Ů¤Ć¤ÎŔÜÂł¤ňĄ˘ ĽŻĽéĽ¤Ľ˘ĽóĽČ A žĺ¤Î 2000 ČÖ¤Ť¤é 3000 ČÖ¤ËĹžÁ÷¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĽŞĽ×ĽˇĽçĽó¤Ď &man.natd.8; ¤ňÄžŔܟšԤš¤ë¤ŤĄ˘ /etc/rc.conf Ćâ¤Î natd_flags="" ĽŞĽ×ĽˇĽçĽó¤ÇŔßÄꤚ¤ë¤ŤĄ˘ ¤â¤ˇ¤Ż¤ĎĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤Ť¤éĹϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ŔßÄ꼪Ľ×ĽˇĽçĽó¤ÎžÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.natd.8; ¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ Ľ˘ĽÉĽěĽšĹžÁ÷ Ľ˘ĽÉĽěĽšĹžÁ÷ ĘŁżô¤Î IP Ľ˘ĽÉĽěĽš¤ŹÍřÍѲÄÇ˝¤Ç¤š¤ŹĄ˘ ¤˝¤ě¤é¤Ź 1 Âć¤ÎĽŢĽˇĽóžĺ¤Ë¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Č¤­¤Ë¤ĎĄ˘ Ľ˘ĽÉĽěĽšĹžÁ÷¤ŹĘŘÍř¤Ç¤šĄŁ ¤ł¤ě¤ňÍѤ¤¤ě¤Đ &man.natd.8; ¤Ď LAN ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Î¤˝¤ě¤ž¤ě¤Ëł°Éô IP Ľ˘ĽÉĽěĽš¤ňłä¤ęĹö¤Ć¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ &man.natd.8; ¤Ď LAN ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ť¤éł°Éô¤Ř˝Đ¤ĆšÔ¤ŻĽŃĽąĽĂĽČ¤ňĹŹŔڤʳ°Éô¤Î IP Ľ˘ĽÉĽěĽš¤Ç˝ń¤­Äž¤ˇĄ˘ ¤˝¤ˇ¤ĆĆĂÄę¤Î IP Ľ˘ĽÉĽěĽš¤ËÂФˇ¤Ć¤ä¤Ă¤ĆÍč¤ëĽČĽéĽŐĽŁĽĂĽŻ¤Î¤š¤Ů¤Ć¤ňĄ˘ ťŘÄꤾ¤ě¤ż LAN ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËĹžÁ÷¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤ĎŔĹĹŞ NAT ¤Č¤ˇ¤Ć¤âĂΤé¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ż¤Č¤¨¤Đ 128.1.1.1, 128.1.1.2 ¤Ş¤č¤Ó 128.1.1.3 ¤Î IP Ľ˘ĽÉĽěĽš¤ŹĄ˘ natd Ľ˛ĄźĽČĽŚĽ§Ľ¤ĽŢĽˇĽó¤Ë°¤ˇ¤Ć¤¤¤ë¤Č¤ˇ¤Ţ¤šĄŁ 128.1.1.2 ¤Ş¤č¤Ó 128.1.1.3 ¤Ď LAN ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Î A ¤Ş¤č¤Ó B ¤ËĹžÁ÷¤ľ¤ě¤ë°ěĘý¤ÇĄ˘128.1.1.1 ¤Ď natd Ľ˛ĄźĽČĽŚĽ§Ľ¤ĽŢĽˇĽó¤Îł°Éô IP Ľ˘ĽÉĽěĽš¤Č¤ˇ¤ĆťČÍѤš¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤Î˝ńź°¤Ď°Ę˛ź¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ -redirect_address localIP publicIP localIP LAN ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎĆâÉô IP Ľ˘ĽÉĽěĽš publicIP LAN ĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËÂĐąţ¤š¤ëł°Éô IP Ľ˘ĽÉĽěĽš žĺľ­¤ÎÎă¤Ç¤Ď°úżô¤Ď°Ę˛ź¤Î¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ -redirect_address 192.168.0.2 128.1.1.2 -redirect_address 192.168.0.3 128.1.1.3 ¤ČĆąÍͤ˥˘¤ł¤ě¤é¤Î°úżô¤Ď /etc/rc.conf Ćâ¤Î natd_flags="" ĽŞĽ×ĽˇĽçĽó¤ÇŔßÄꤚ¤ë¤ŤĄ˘ ĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤Ť¤éĹĎ¤š¤ł¤Č¤ÇťŘÄę¤Ç¤­¤Ţ¤šĄŁ Ľ˘ĽÉĽěĽšĹžÁ÷¤Ç¤ĎĄ˘ ĆĂÄę¤Î IP Ľ˘ĽÉĽěĽš¤Çźő¤ąźč¤é¤ě¤żĽÇĄźĽż¤Ď¤š¤Ů¤ĆĹžÁ÷¤ľ¤ě¤ë¤Î¤ÇĄ˘ port ĹžÁ÷¤ĎÉŹÍפ˘¤ę¤Ţ¤ť¤óĄŁ natd ĽŢĽˇĽóžĺ¤Îł°Éô IP Ľ˘ĽÉĽěĽš¤ĎĄ˘ Ľ˘ĽŻĽĆĽŁĽÖ¤Çł°ÉôĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ËĽ¨Ľ¤ĽęĽ˘Ľš¤ľ¤ě¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ä¤ę¤Ť¤ż¤Ď &man.rc.conf.5; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Chern Lee ´óšĆ: <application>inetd</application> <quote>ĽšĄźĽŃĽľĄźĽĐ</quote> łľ´Ń &man.inetd.8; ¤ĎĘŁżô¤ÎĽÇĄźĽâĽó¤ËÂФš¤ëŔÜÂł¤ňŔŠ¸ć¤š¤ë¤Î¤ÇĄ˘ Ľ¤ĽóĽżĄźĽÍĽĂĽČĽšĄźĽŃĽľĄźĽĐ ¤Č¸Ć¤Đ¤ě¤Ţ¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻĽľĄźĽÓĽš¤ňÄ󜥤š¤ëĽ×ĽíĽ°ĽéĽŕ¤ĎĄ˘ °ěČĚĹŞ¤ËĽÇĄźĽâĽó¸Ć¤Đ¤ě¤Ţ¤šĄŁinetd ¤Ďž¤ÎĽÇĄźĽâĽó¤ň´ÉÍý¤š¤ëĽľĄźĽĐ¤ňĹؤá¤Ţ¤šĄŁ ŔÜÂł¤Ź inetd ¤Ë¤č¤Ă¤Ćźő¤ąÉŐ¤ą¤é¤ě¤ë¤ČĄ˘ inetd ¤ĎŔÜÂł¤Ź¤É¤ÎĽÇĄźĽâĽó¤ËÂФš¤ë¤â¤Î¤ŤČ˝ĂǤˇ¤ĆĄ˘ ¤˝¤ÎĽÇĄźĽâĽó¤ňľŻĆ°¤ˇĄ˘Ľ˝ĽąĽĂĽČ¤ňĹϤˇ¤Ţ¤šĄŁ inetd ¤ň 1 ¤ÄźÂšÔ¤š¤ë¤ł¤Č¤Ë¤č¤ęĄ˘ ¤˝¤ě¤ž¤ě¤ÎĽÇĄźĽâĽó¤ňĽšĽżĽóĽÉĽ˘ĽíĽóĽâĄźĽÉ¤ÇźÂšÔ¤š¤ë¤ł¤Č¤ËČć¤ŮĄ˘ Á´ÂΤȤˇ¤Ć¤ÎĽˇĽšĽĆĽŕÉé˛Ů¤ň¸ş¤é¤ˇ¤Ţ¤šĄŁ ´đËÜĹŞ¤ËĄ˘inetd ¤Ďž¤ÎĽÇĄźĽâĽó¤ňľŻĆ°¤š¤ë¤ż¤á¤ËťČÍѤľ¤ě¤Ţ¤šĄŁ¤ˇ¤Ť¤ˇĄ˘ chargen, auth ¤Ş¤č¤Ó daytime ¤Î¤č¤Ś¤Ę¤ľ¤ľ¤¤¤ĘĽ×ĽíĽČĽłĽë¤ĎÄžŔܰˇ¤ď¤ě¤Ţ¤šĄŁ ¤ł¤ÎŔá¤Ç¤ĎĽłĽŢĽóĽÉĽéĽ¤ĽóĽŞĽ×ĽˇĽçĽó¤Ş¤č¤ÓŔßÄęĽŐĽĄĽ¤Ľë /etc/inetd.conf ¤Ë¤č¤ë inetd ¤ÎŔßÄę¤Î´đËܤňŔâĚŔ¤ˇ¤Ţ¤šĄŁ ŔßÄę inetd ¤Ď /etc/rc.conf ¤ÎťĹÁȤˤč¤Ă¤Ć˝é´ü˛˝¤ľ¤ě¤Ţ¤šĄŁ ĽÇĽŐĽŠĽëĽČ¤Ç¤Ď inetd_enable ĽŞĽ×ĽˇĽçĽó¤Ď NO ¤ËŔßÄꤾ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇÂż¤Ż¤ÎžěšçĄ˘sysinstall ¤ÇĽťĽ­ĽĺĽęĽĆĽŁĽ×ĽíĽŐĽĄĽ¤Ľë¤ň medium ¤ËŔßÄꤚ¤ë¤ł¤Č¤Ë¤č¤ęĄ˘Í­¸ú˛˝¤ľ¤ě¤Ţ¤šĄŁ inetd_enable="YES" ¤Ţ¤ż¤Ď inetd_enable="NO" ¤ň /etc/rc.conf ¤ËĂ֤ݤł¤Č¤ÇĄ˘ľŻĆ°ťţ¤Ë inetd ¤ňÍ­¸ú¤Ţ¤ż¤ĎĚľ¸ú¤Ë¤Ç¤­¤Ţ¤šĄŁ ¤ľ¤é¤Ë inetd_flags ĽŞĽ×ĽˇĽçĽó¤Ë¤č¤Ă¤ĆĄ˘ ¤¤¤í¤¤¤í¤ĘĽłĽŢĽóĽÉĽéĽ¤ĽóĽŞĽ×ĽˇĽçĽó¤ň inetd ¤ËĹĎ¤š¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ĽłĽŢĽóĽÉĽéĽ¤ĽóĽŞĽ×ĽˇĽçĽó inetd ˝ńź° -d ĽÇĽĐĽĂĽ°ĽâĄźĽÉ¤Ë¤ˇ¤Ţ¤šĄŁ -l Ŕޏů¤ˇ¤żŔÜÂł¤ÎĽíĽ°¤ň¤Č¤ę¤Ţ¤šĄŁ -w ł°ÉôĽľĄźĽÓĽš¤ËÂФˇ¤Ć TCP Wrapper ¤ňÍ­¸ú¤Ë¤ˇ¤Ţ¤š (ĽÇĽŐĽŠĽëĽČ)ĄŁ -W inetd ÁȤߚţ¤ß¤ÎĆâÉôĽľĄźĽÓĽš¤ËÂФˇ¤Ć TCP Wrapper ¤ňÍ­¸ú¤Ë¤ˇ¤Ţ¤š (ĽÇĽŐĽŠĽëĽČ)ĄŁ -c maximum ĽľĄźĽÓĽšËč¤ËĆąťţ¤ËľŻĆ°˛ÄÇ˝¤ĘşÇÂçĂÍ¤ÎĽÇĽŐĽŠĽëĽČ¤ňťŘÄꤡ¤Ţ¤šĄŁ ĽÇĽŐĽŠĽëĽČ¤Ç¤ĎĚľŔŠ¸Â¤Ç¤šĄŁĽľĄźĽÓĽš¤´¤Č¤ËťŘÄꤚ¤ë ĽŃĽéĽáĄźĽż¤Çžĺ˝ń¤­¤Ç¤­¤Ţ¤šĄŁ -C rate 1 ĘŹ´Ö¤Ë¤Ň¤Č¤Ä¤Î IP Ľ˘ĽÉĽěĽš¤Ť¤éľŻĆ°¤ľ¤ě¤ëĽľĄźĽÓĽš¤ÎĄ˘ şÇÂçĂÍ¤ÎĽÇĽŐĽŠĽëĽČ¤ňťŘÄꤡ¤Ţ¤šĄŁĽÇĽŐĽŠĽëĽČ¤ĎĚľŔŠ¸Â¤Ç¤šĄŁ ĽľĄźĽÓĽš¤´¤Č¤ËťŘÄꤚ¤ë ĽŃĽéĽáĄźĽż¤Çžĺ˝ń¤­¤Ç¤­¤Ţ¤šĄŁ -R rate ¤˘¤ëĽľĄźĽÓĽš¤ň 1 ĘŹ´Ö¤ËľŻĆ°¤Ç¤­¤ëşÇÂç¤Îżô¤ňťŘÄꤡ¤Ţ¤šĄŁ ĽÇĽŐĽŠĽëĽČ¤Ď 256 ¤Ç¤šĄŁrate ¤Ë 0 ¤ňťŘÄꤚ¤ë¤ČĄ˘ ľŻĆ°˛ÄÇ˝¤Ężô¤ĎĚľŔŠ¸Â¤Ë¤Ę¤ę¤Ţ¤šĄŁ -a ĽĐĽ¤ĽóĽÉ¤š¤ë IP Ľ˘ĽÉĽěĽš¤ň°ě¤ÄťŘÄꤡ¤Ţ¤šĄŁ Âĺ¤ď¤ę¤ËĽŰĽšĽČĚž¤âťŘÄę¤Ç¤­¤Ţ¤šĄŁ¤ł¤ÎžěšçĄ˘ĽŰĽšĽČĚž¤ËÂĐąţ¤š¤ë IPv4 ¤Ţ¤ż¤Ď IPv6 Ľ˘ĽÉĽěĽš¤ŹťČÍѤľ¤ě¤Ţ¤šĄŁÄĚžď inetd ¤Ź &man.jail.8; Ćâ¤ÇľŻĆ°¤ľ¤ě¤ëťţĹŔ¤ÇĄ˘ĽŰĽšĽČĚž¤ŹťŘÄꤾ¤ě¤Ţ¤šĄŁ¤ł¤ÎžěšçĄ˘ ĽŰĽšĽČĚž¤Ď &man.jail.8; ´Äś­¤ËÂĐąţ¤š¤ë¤â¤Î¤Ç¤šĄŁ ĽŰĽšĽČĚžťŘÄꤏťČÍѤľ¤ěĄ˘ IPv4 ¤Ş¤č¤Ó IPv6 ΞĘý¤ËĽĐĽ¤ĽóĽÉ¤ˇ¤ż¤¤žěšçĄ˘ /etc/inetd.conf ¤ÎłĆĽľĄźĽÓĽš¤ËÂФˇ¤ĆĄ˘ łĆĽĐĽ¤ĽóĽÉ¤ËÂФš¤ëĹŹŔڤʼ׼íĽČĽłĽë¤ÎĽ¨ĽóĽČĽę¤ŹÉŹÍ×¤Ç¤šĄŁ ¤ż¤Č¤¨¤Đ TCP ĽŮĄźĽš¤ÎĽľĄźĽÓĽš¤ĎĄ˘ ¤Ň¤Č¤Ä¤ĎĽ×ĽíĽČĽłĽë¤Ë tcp4 ¤ňťČÍѤˇĄ˘ ¤â¤Ś°ě¤Ä¤Ď tcp6 ¤ňťČÍѤš¤ëĄ˘ 2 ¤Ä¤ÎĽ¨ĽóĽČĽę¤ŹÉŹÍ×¤Ç¤šĄŁ -p ĽÇĽŐĽŠĽëĽČ¤Č¤Ď°Ű¤Ę¤ë PID ¤ňĘÝťý¤š¤ëĽŐĽĄĽ¤Ľë¤ňťŘÄꤡ¤Ţ¤šĄŁ /etc/rc.conf Ćâ¤Î inetd_flags ĽŞĽ×ĽˇĽçĽó¤ňÍѤ¤¤ĆĄ˘¤ł¤ě¤é¤ÎĽŞĽ×ĽˇĽçĽó¤ň inetd ¤ËĹĎ¤š¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁĽÇĽŐĽŠĽëĽČ¤Ç¤Ď inetd_flags ¤Ď -wW ¤ËŔßÄꤾ¤ě¤Ć¤Ş¤ęĄ˘ ¤ł¤ě¤Ď inetd ¤ÎĆâÉô¤Ş¤č¤Ół°ÉôĽľĄźĽÓĽš¤ËÂФˇ¤Ć TCP wrapper ¤ňÍ­¸ú¤Ë¤ˇ¤Ţ¤šĄŁ ˝éż´źÔĽćĄźĽś¤Ď¤ł¤ě¤é¤ÎĽŃĽéĽáĄźĽż¤ňĘŃšš¤š¤ëÉŹÍפĎÄ̞濫¤ę¤Ţ¤ť¤ó¤ˇĄ˘ /etc/rc.conf ¤ËĆţÎϤš¤ëÉŹÍפ⤢¤ę¤Ţ¤ť¤óĄŁ ł°ÉôĽľĄźĽÓĽš¤ĎĄ˘ŔÜÂł¤ňźő¤ąźč¤Ă¤ż¤Č¤­¤ËľŻĆ°¤ľ¤ě¤ë inetd ¤Îł°Éô¤Ë¤˘¤ëĽÇĄźĽâĽó¤ÇĄ˘ ¤˝¤ě¤ËÂФˇ¤ĆĄ˘ĆâÉôĽľĄźĽÓĽš¤Ď inetd źŤżČ¤ŹÄ󜥤š¤ëĆâÉô¤ÎĽÇĄźĽâĽó¤Ç¤šĄŁ <filename>inetd.conf</filename> inetd ¤ÎŔßÄę¤Ď /etc/inetd.conf ĽŐĽĄĽ¤Ľë¤Ë¤č¤Ă¤ĆŔŠ¸ć¤ľ¤ě¤Ţ¤šĄŁ /etc/inetd.conf ¤ŹĘŃšš¤ľ¤ě¤ż¤Č¤­¤ĎĄ˘ °Ę˛ź¤Î¤č¤Ś¤Ë inetd Ľ×ĽíĽťĽš¤Ë HangUP ĽˇĽ°ĽĘĽë¤ňÁ÷¤ë¤ł¤Č¤Ë¤č¤ęĄ˘inetd ¤ËŔßÄęĽŐĽĄĽ¤Ľë¤ňşĆĆɤߚţ¤ß¤ľ¤ť¤é¤ě¤Ţ¤šĄŁ <application>inetd</application> ¤Ř¤Î HangUP ĽˇĽ°ĽĘĽëÁ÷ÉŐ &prompt.root; kill -HUP `cat /var/run/inetd.pid` ŔßÄęĽŐĽĄĽ¤Ľë¤Î¤˝¤ě¤ž¤ě¤ÎšÔ¤ĎĄ˘ ¸ÄĄš¤ÎĽÇĄźĽâĽó¤Ë¤Ä¤¤¤Ć¤ÎťŘź¨¤Ë¤Ę¤ę¤Ţ¤šĄŁ ĽŐĽĄĽ¤ĽëĆâ¤ÎĽłĽáĽóĽČ¤Ď # ¤ŹŔčĆŹ¤Ë¤Ä¤­¤Ţ¤šĄŁ /etc/inetd.conf ¤Î˝ńź°¤Ď°Ę˛ź¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ service-name socket-type protocol {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]] user[:group][/login-class] server-program server-program-arguments IPv4 ¤ňÍřÍѤš¤ë ftpd ĽÇĄźĽâĽó¤ÎĽ¨ĽóĽČĽę¤ÎÎă¤Ç¤šĄŁ ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l service-name ¤ł¤ě¤ĎĆĂÄę¤ÎĽÇĄźĽâĽó¤ÎĽľĄźĽÓĽšĚž¤Ç¤šĄŁ ¤ł¤ě¤Ď /etc/services Ćâ¤ÎĽľĄźĽÓĽšĽęĽšĽČ¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ě¤Ď inetd ¤Ź¤É¤ÎĽÝĄźĽČ¤Çźő¤ąÉŐ¤ą¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Ť¤ňˇčÄꤡ¤Ţ¤šĄŁ żˇ¤ˇ¤¤ĽľĄźĽÓĽš¤ŹşîŔޤľ¤ě¤żžěšçĄ˘¤Ţ¤ş¤Ď¤¸¤á¤Ë /etc/services Ćâ¤Ëľ­şÜ¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ socket-type stream, dgram, raw ¤Ţ¤ż¤Ď seqpacket ¤Î¤É¤ě¤Ť¤ňťŘÄꤡ¤Ţ¤šĄŁ stream ¤ĎĽłĽÍĽŻĽˇĽçĽó¤Ë´đ¤Ĺ¤¤¤ż TCP ĽÇĄźĽâĽó¤ËťČÍѤˇ¤Ę¤ą¤ě¤Đ¤Ę¤é¤şĄ˘ °ěĘý¤Ç dgram ¤Ď UDP ĹžÁ÷Ľ×ĽíĽČĽłĽë¤ňÍřÍѤˇ¤żĽÇĄźĽâĽó¤ËÂФˇ¤ĆťČÍѤľ¤ě¤Ţ¤šĄŁ protocol źĄ¤Î¤Ś¤Á¤Î¤É¤ě¤Ť 1 ¤Ä¤ňťŘÄꤡ¤Ţ¤šĄŁ Ľ×ĽíĽČĽłĽë ŔâĚŔ tcp, tcp4 TCP IPv4 udp, udp4 UDP IPv4 tcp6 TCP IPv6 udp6 UDP IPv6 tcp46 TCP IPv4 ¤Ş¤č¤Ó v6 ¤ÎΞĘý udp46 UDP IPv4 ¤Ş¤č¤Ó v6 ¤ÎΞĘý {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]] ¤Ď inetd ¤Ť¤éľŻĆ°¤ˇ¤żĽÇĄźĽâĽó¤ŹĄ˘ źŤĘŹ¤ÎĽ˝ĽąĽĂĽČ¤ň´ÉÍý¤Ç¤­¤ë¤Ť¤É¤Ś¤Ť¤ňꍤˇ¤Ţ¤šĄŁ ÄĚžďĽŢĽëĽÁĽšĽěĽĂĽÉ˛˝¤ľ¤ě¤Ć¤¤¤ë stream Ľ˝ĽąĽĂĽČĽÇĄźĽâĽó¤Ď ¤ňťČÍѤš¤ë¤Ů¤­¤Ç¤˘¤ë°ěĘýĄ˘ Ľ˝ĽąĽĂĽČĽżĽ¤Ľ×¤Ď wait ĽŞĽ×ĽˇĽçĽó¤ňťČÍѤˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤Ďżˇ¤ˇ¤¤Ľ˝ĽąĽĂĽČËč¤ËťŇ¤ÎĽÇĄźĽâĽó¤ňľŻĆ°¤š¤ë°ěĘý¤ÇĄ˘ ¤ĎÄĚžďĘŁżô¤ÎĽ˝ĽąĽĂĽČ¤ň 1 ¤Ä¤ÎĽÇĄźĽâĽó¤ËĹϤˇ¤Ţ¤šĄŁ inetd ¤ŹľŻĆ°¤Ç¤­¤ëťŇ¤ÎĽÇĄźĽâĽó¤ÎşÇÂçżô¤Ď ĽŞĽ×ĽˇĽçĽó¤ÇŔßÄę¤Ç¤­¤Ţ¤šĄŁ ĆĂÄę¤ÎĽÇĄźĽâĽó¤ËÂФˇ¤ĆĄ˘ľŻĆ°¤š¤ëżô¤Ź 10 ¤Ţ¤Ç¤Č¤¤¤ŚŔŠ¸Â¤ŹÉŹÍפʞěšçĄ˘ ¤Î¸ĺ¤Ë /10 ¤ňĂÖ¤­¤Ţ¤šĄŁ ¤Ë˛Ă¤¨¤ĆĄ˘Âž¤Ë¤˘¤ë 1 ¤Ä¤Îžě˝ę¤Ť¤éĆĂÄę¤ÎĽÇĄźĽâĽó¤Ř¤ÎşÇÂçŔÜÂłżô¤ňŔŠ¸Â¤š¤ëĽŞĽ×ĽˇĽçĽó¤ŹÍřÍѤǤ­¤Ţ¤šĄŁ ¤Ź¤˝¤ě¤Ç¤šĄŁ¤ł¤ł¤Ë 10 ¤ňťŘÄꤚ¤ë¤ČĄ˘ĆĂÄę¤Î IP Ľ˘ĽÉĽěĽš¤Ť¤é¤ÎĆĂÄę¤ÎĽľĄźĽÓĽš¤Ř¤ÎŔÜÂł¤ň 1 ĘŹ´Ö¤Ë¤Ä¤­ 10 ˛ó¤ËŔŠ¸Â¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤Ď¸Î°Ő¤Ţ¤ż¤Ď¸Î°Ő¤Ç¤Ę¤¤ťń¸ť¤ÎϲČń¤Ş¤č¤ÓĄ˘ ĽŢĽˇĽó¤Ř¤ÎĽľĄźĽÓĽšÉÔÇ˝ (DoS) šśˇâ¤ňËɤ°¤Î¤ËÍ­ÍŃ¤Ç¤šĄŁ ¤Ţ¤ż¤Ď ¤Ď¤ł¤ÎÍó¤ËÉŹ¤şÉŹÍ×¤Ç¤šĄŁ ¤Ş¤č¤Ó ¤ĎǤ°Ő¤Ç¤šĄŁ ¤Ţ¤ż¤Ď ŔŠ¸Â¤ň¤Ť¤ą¤Ę¤¤ stream ĽżĽ¤Ľ×¤ÎĽŢĽëĽÁĽšĽěĽĂĽÉĽÇĄźĽâĽó¤ÎŔßÄę¤Ď nowait ¤Ë¤Ę¤ę¤Ţ¤šĄŁ şîŔŽ¤Ç¤­¤ëťŇĽ×ĽíĽťĽš¤Îžĺ¸Â¤Ź 10 ¤Ç¤˘¤ëĆą¤¸ĽÇĄźĽâĽó¤ÎŔßÄę¤Ď nowait/10 ¤Ë¤Ę¤ę¤Ţ¤šĄŁ ¤ľ¤é¤ËĄ˘ 1 ĘŹ´Ö¤Ë IP Ľ˘ĽÉĽěĽš¤˘¤ż¤ę¤ÎŔÜÂłŔŠ¸Â¤Ź 20Ą˘ ťŇĽ×ĽíĽťĽš¤Îžĺ¸Â¤Ź 10 ¤Ç¤˘¤ëĆą¤¸ĽÇĄźĽâĽó¤ÎŔßÄę¤Ď nowait/10/20 ¤Ë¤Ę¤ę¤Ţ¤šĄŁ °Ę˛ź¤Î¤č¤Ś¤ËĄ˘¤ł¤ě¤é¤ÎĽŞĽ×ĽˇĽçĽó¤Ď¤š¤Ů¤Ć fingerd ĽÇĄźĽâĽó¤ÎĽÇĽŐĽŠĽëĽČŔßÄę¤ËťČ¤ď¤ě¤Ć¤¤¤Ţ¤šĄŁ finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s user user ¤Ď¤˘¤ëĽÇĄźĽâĽó¤ŹźÂšÔ¤š¤ë¤Č¤­¤ÎĽćĄźĽśĚž¤ňťŘÄꤡ¤Ţ¤šĄŁ °ěČĚĹŞ¤ËĽÇĄźĽâĽó¤Ď root ĽćĄźĽś¤Č¤ˇ¤ĆźÂšÔ¤ˇ¤Ţ¤šĄŁĽťĽ­ĽĺĽęĽĆĽŁ¤ňšÍθ¤ˇ¤ĆĄ˘ ¤¤¤Ż¤Ä¤Ť¤ÎĽľĄźĽĐ¤Ď daemon ĽćĄźĽśĄ˘ ¤Ţ¤ż¤ĎşÇÄă¤Î¸˘¸Â¤ŹÍż¤¨¤é¤ě¤Ć¤¤¤ë nobody ĽćĄźĽś¤Č¤ˇ¤ĆźÂšÔ¤š¤ë¤ł¤Č¤âÂż¤Ż¸Ť¤é¤ě¤Ţ¤šĄŁ server-program ŔÜÂł¤ňźő¤ąźč¤Ă¤ż¤Č¤­¤ËźÂšÔ¤š¤ëĽÇĄźĽâĽó¤ÎĽŐĽëĽŃĽš¤Ç¤šĄŁ ĽÇĄźĽâĽó¤Ź inetd ¤Ë¤č¤Ă¤ĆĆâÉôĹŞ¤ËÄ󜥤ľ¤ě¤ëĽľĄźĽÓĽš¤Îžěšç ¤ňťČÍѤˇ¤Ţ¤šĄŁ server-program-arguments ¤ł¤ł¤Ë¤ĎĄ˘ľŻĆ°¤š¤ë¤Č¤­¤ËĽÇĄźĽâĽó¤ËĹϤľ¤ě¤ëĄ˘ argv[0] ¤Ť¤éťĎ¤Ţ¤ë°úżô¤ňťŘÄꤡ¤ĆĄ˘ ¤Čś¨Ä´¤ˇ¤Ćưşî¤ˇ¤Ţ¤šĄŁ mydaemon -d ¤ŹĽłĽŢĽóĽÉĽéĽ¤Ľó¤ÎžěšçĄ˘ ¤ÎĂÍ¤Ë mydaemon -d ¤ňťŘÄꤡ¤Ţ¤šĄŁ ¤Ţ¤żĄ˘ĽÇĄźĽâĽó¤ŹĆâÉôĽľĄźĽÓĽš¤ÎžěšçĄ˘¤ł¤ł¤Ë ¤ňťŘÄꤡ¤Ţ¤šĄŁ ĽťĽ­ĽĺĽęĽĆĽŁ Ľ¤ĽóĽšĽČĄźĽë¤Îťţ¤ËÁŞÂň¤ˇ¤żĽťĽ­ĽĺĽęĽĆĽŁĽ×ĽíĽŐĽĄĽ¤Ľë¤Ë¤č¤Ă¤Ć¤ĎĄ˘ Âż¤Ż¤Î inetd ¤ÎĽÇĄźĽâĽó¤ŹĽÇĽŐĽŠĽëĽČ¤ÇÍ­¸ú¤Ë¤Ę¤Ă¤Ć¤¤¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¤˘¤ëĽÇĄźĽâĽó¤ŹĆäËÉŹÍפǤʤ¤žěšç¤Ë¤ĎĄ˘¤˝¤ě¤ňĚľ¸ú¤Ë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤! ĚäÂę¤Č¤Ę¤Ă¤Ć¤¤¤ëĽÇĄźĽâĽó¤Źľ­˝Ň¤ľ¤ě¤Ć¤¤¤ëšÔ¤ÎŔčĆŹ¤Ë # ¤ň¤Ş¤¤¤Ć inetd ¤ËĽĎĽóĽ°Ľ˘ĽĂĽ×ĽˇĽ°ĽĘĽë¤ňÁ÷¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ fingerd ¤Î¤č¤Ś¤Ę¤¤¤Ż¤Ä¤Ť¤ÎĽÇĄźĽâĽó¤ĎĄ˘ ư¤Ť¤˝¤Ś¤Č¤š¤Ů¤­¤Ç¤Ď¤Ę¤¤¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ¤Ę¤ź¤Ę¤éĄ˘ ¤˝¤ě¤é¤ĎšśˇâźÔ¤ËÂФˇ¤Ć¤˘¤Ţ¤ę¤Ë¤âÂż¤Ż¤ÎžđĘó¤ňÍż¤¨¤ë¤Ť¤é¤Ç¤šĄŁ ĽťĽ­ĽĺĽęĽĆĽŁ¤ň¤˘¤Ţ¤ęšÍθ¤ť¤şĄ˘ ŔÜÂłťîšÔ¤ËÂФˇ¤ĆĽżĽ¤ĽŕĽ˘ĽŚĽČ¤Ţ¤Ç¤Îťţ´Ö¤ŹÄ𤤤ŤĄ˘ ĽżĽ¤ĽŕĽ˘ĽŚĽČ¤ˇ¤Ę¤¤ĽÇĄźĽâĽó¤â¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤ĎĄ˘ĆĂÄę¤ÎĽÇĄźĽâĽó¤ËšśˇâźÔ¤Ź¤ć¤Ă¤Ż¤ęŔÜÂłÍ׾á¤ňÁ÷¤ë¤ł¤Č¤Ë¤č¤Ă¤ĆĄ˘ ÍřÍѲÄÇ˝¤ĘĽęĽ˝ĄźĽš¤ň˰Ϥľ¤ť¤ë¤ł¤Č¤ň˛ÄÇ˝¤Ë¤ˇ¤Ţ¤šĄŁ¤˘¤ëźď¤ÎĽÇĄźĽâĽó¤Ë ¤Ş¤č¤Ó ŔŠ¸Â¤ňŔߤą¤ë¤ł¤Č¤Ď¤č¤¤šÍ¤¨¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ TCP wrapper ¤ĎĽÇĽŐĽŠĽëĽČ¤ÇÍ­¸ú¤Ç¤šĄŁ inetd ¤Ť¤éľŻĆ°¤ľ¤ě¤ë¤ľ¤Ţ¤ś¤Ţ¤ĘĽÇĄźĽâĽó¤ËÂФˇ¤Ć TCP ŔŠ¸Â¤ňŔߤą¤ë¤ł¤Č¤ÎžÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.hosts.access.5; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤˝¤Îž daytime, time, echo, discard, chargen ¤Ş¤č¤Ó auth ¤Ď¤š¤Ů¤Ć inetd ¤ŹĆâÉôĹŞ¤ËÄ󜥤š¤ëĽľĄźĽÓĽš¤Ç¤šĄŁ auth ĽľĄźĽÓĽš¤Ď identity (ident, identd) ĽÍĽĂĽČĽďĄźĽŻĽľĄźĽÓĽš¤ňÄ󜥤ˇĄ˘ ¤˘¤ëÄřĹŮŔßÄę˛ÄÇ˝¤Ç¤šĄŁ žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.inetd.8; ĽŢĽËĽĺĽ˘Ľë¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŃĽéĽěĽëĽéĽ¤Ľó IP (PLIP) PLIP ĽŃĽéĽěĽëĽéĽ¤Ľó IP PLIP ¤ĎĽŃĽéĽěĽëĽÝĄźĽČ´Ö¤Ç TCP/IP ÄĚżŽ¤ň˛ÄÇ˝¤Ë¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤ĎĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉ¤ÎĚľ¤¤ĽŢĽˇĽó¤äĽÎĄźĽČĽŃĽ˝ĽłĽó¤ËĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤Č¤­¤ËĚň¤ËΊ¤Á¤Ţ¤šĄŁ ¤ł¤ÎŔá¤Ç¤Ď°Ę˛ź¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ ĽŃĽéĽěĽë (ĽéĽĂĽ×ĽęĽóĽŻ ¤Ţ¤ż¤Ď ĽŃĽéĽěĽëĽŻĽíĽš) ĽąĄźĽÖĽë¤ÎşîŔŽĄŁ 2 Âć¤ÎĽłĽóĽÔĽĺĄźĽż¤Î PLIP ¤Ë¤č¤ëŔÜÂłĄŁ ĽŃĽéĽěĽë (ĽŻĽíĽš) ĽąĄźĽÖĽë¤ÎşîŔŽ ĽłĽóĽÔĽĺĄźĽżÍŃÉĘĹš¤Î¤Ű¤Č¤ó¤É¤ÇĽŃĽéĽěĽë (ĽŻĽíĽš) ĽąĄźĽÖĽë¤ňšŘĆţ¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ šŘĆţ¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ę¤¤¤ŤĄ˘ Ăą¤ËĽąĄźĽÖĽë¤Ź¤É¤Î¤č¤Ś¤Ęš˝Â¤¤Ç¤˘¤ë¤ŤĂΤꤿ¤¤žěšç¤ĎĄ˘ źĄ¤ÎÉ˝¤ËÄĚžď¤ÎĽŃĽéĽěĽëĽ×ĽęĽóĽżĽąĄźĽÖĽë¤ň¤â¤Č¤ËşîŔޤš¤ëĘýËĄ¤Źź¨¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻ¸ţ¤ą¤ÎĽŃĽéĽěĽë (ĽŻĽíĽš) ĽąĄźĽÖĽëˇëŔţ A-ĚžžÎ A-Ăź B-Ăź ŔâĚŔ Post/Bit DATA0 -ERROR 2 15 15 2 Data 0/0x01 1/0x08 DATA1 +SLCT 3 13 13 3 Data 0/0x02 1/0x10 DATA2 +PE 4 12 12 4 Data 0/0x04 1/0x20 DATA3 -ACK 5 10 10 5 Strobe 0/0x08 1/0x40 DATA4 BUSY 6 11 11 6 Data 0/0x10 1/0x80 GND 18-25 18-25 GND -
PLIP ¤ÎŔßÄę ¤Ď¤¸¤á¤ËĄ˘ĽéĽĂĽ×ĽęĽóĽŻĽąĄźĽÖĽë¤ňĆţźę¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ źĄ¤ËĄ˘ÎžĘý¤ÎĽłĽóĽÔĽĺĄźĽż¤ÎĽŤĄźĽÍĽë¤Ź &man.lpt.4; ĽÉĽéĽ¤ĽĐÂĐąţ¤Ç¤˘¤ë¤ł¤Č¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; grep lp /var/run/dmesg.boot lpt0: <Printer> on ppbus0 lpt0: Interrupt-driven port ĽŃĽéĽěĽëĽÝĄźĽČ¤Ďłä¤ęšţ¤ßśîưĽÝĄźĽČ¤Ç¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ &os; 4.X ¤Ç¤ĎĄ˘ °Ę˛ź¤Î¤č¤Ś¤ĘšÔ¤ŹĽŤĄźĽÍĽëĽłĽóĽŐĽŁĽŽĽĺĽěĄźĽˇĽçĽóĽŐĽĄĽ¤ĽëĆâ¤Ë¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ device ppc0 at isa? irq 7 &os; 5.X ¤Ç¤Ď /boot/device.hints ĽŐĽĄĽ¤Ľë¤Ë°Ę˛ź¤ÎšÔ¤Ź¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ hint.ppc.0.at="isa" hint.ppc.0.irq="7" ¤˝¤ě¤Ť¤éĽŤĄźĽÍĽëĽłĽóĽŐĽŁĽŽĽĺĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤Ë device plip ¤Č¤¤¤ŚšÔ¤Ź¤˘¤ë¤ŤĄ˘¤Ţ¤ż¤Ď plip.ko ĽŤĄźĽÍĽëĽâĽ¸ĽĺĄźĽë¤ŹĆɤߚţ¤Ţ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤É¤Á¤é¤Îžěšç¤Ç¤â &man.ifconfig.8; ĽłĽŢĽóĽÉ¤ňÄžŔܟšԤˇ¤ż¤Č¤­¤ËĄ˘ ĽŃĽéĽěĽëĽÍĽĂĽČĽďĄźĽŻĽ¤ĽóĽżĽŐĽ§ĄźĽš¤Ź¸˝¤ě¤ë¤Ď¤ş¤Ç¤šĄŁ &os; 4.X ¤Ç¤Ď¤ł¤Î¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ &prompt.root; ifconfig lp0 lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500 &os; 5.X ¤Ç¤Ď¤ł¤Î¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ &prompt.root; ifconfig plip0 plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500 ĽŃĽéĽěĽëĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ËÂФˇ¤ĆÍѤ¤¤é¤ě¤ëĽÇĽĐĽ¤ĽšĚž¤Ď &os; 4.X (lpX) ¤Č &os; 5.X (plipX) ´Ö¤Ç°Ű¤Ę¤ę¤Ţ¤šĄŁ ΞĘý¤ÎĽłĽóĽÔĽĺĄźĽż¤ÎĽŃĽéĽěĽëĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ËĽéĽĂĽ×ĽęĽóĽŻĽąĄźĽÖĽë¤ňŔÜÂł¤ˇ¤Ţ¤šĄŁ ΞĘý¤ÎĽÍĽĂĽČĽďĄźĽŻĽ¤ĽóĽżĽŐĽ§ĄźĽšĽŃĽéĽáĄźĽż¤ň root ¤ÇŔßÄꤡ¤Ţ¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘&os; 4.X ¤ňưşî¤ľ¤ť¤Ć¤¤¤ë host1 ¤Č &os; 5.X ¤ňưşî¤ľ¤ť¤Ć¤¤¤ë host2 ¤ÎΞĽŰĽšĽČ¤ňŔÜÂł¤ˇ¤ż¤¤žěšç¤ĎźĄ¤Î¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ host1 <-----> host2 IP Address 10.0.0.1 10.0.0.2 źĄ¤ÎĽłĽŢĽóĽÉ¤Ç host1 žĺ¤ÎĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ňŔßÄꤡ¤Ţ¤šĄŁ &prompt.root; ifconfig lp0 10.0.0.1 10.0.0.2 źĄ¤ÎĽłĽŢĽóĽÉ¤Ç host2 žĺ¤ÎĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ňŔßÄꤡ¤Ţ¤šĄŁ &prompt.root; ifconfig plip0 10.0.0.2 10.0.0.1 ¤ľ¤ĆĄ˘¤ł¤ě¤ÇŔÜÂł¤ŹłÎΊ¤ˇ¤ż¤Ď¤ş¤Ç¤šĄŁžÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď &man.lp.4; ¤Ş¤č¤Ó &man.lpt.4; ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ľ¤é¤Ë/etc/hosts ¤ËΞĽŰĽšĽČ¤ň˛Ă¤¨¤ë¤Č¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ 127.0.0.1 localhost.my.domain localhost 10.0.0.1 host1.my.domain host1 10.0.0.2 host2.my.domain ŔÜÂł¤Ź¤Ś¤Ţ¤Ż¤¤¤Ă¤Ć¤¤¤ë¤ŤłÎ¤Ť¤á¤ë¤ż¤á¤ËĄ˘ ΞĘý¤ÎĽŰĽšĽČžĺ¤Ç¸ß¤¤¤ň ping ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ż¤Č¤¨¤Đ host1 ¤Ç°Ę˛ź¤ňźÂšÔ¤ˇ¤Ţ¤šĄŁ &prompt.root; ifconfig lp0 lp0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000 &prompt.root; netstat -r Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire host2 host1 UH 0 0 lp0 &prompt.root; ping -c 4 host2 PING host2 (10.0.0.2): 56 data bytes 64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms 64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms 64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms 64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms --- host2 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms
Aaron Kaplan ¸śşî: Tom Rhodes şĆš˝ŔޤČÄÉľ­: IPv6 IPv6 (IPng IP next generation ¤Č¤â¸Ć¤Đ¤ě¤Ţ¤š) ¤ĎĄ˘ĂřĚž¤Ę IP Ľ×ĽíĽČĽłĽë (IPv4 ¤Č¤â¸Ć¤Đ¤ě¤Ţ¤š) ¤Îżˇ¤ˇ¤¤ĽĐĄźĽ¸ĽçĽó¤Ç¤šĄŁ ž¤ÎşÇżˇ¤Î *BSD ĽˇĽšĽĆĽŕ¤ČĆąÍÍ¤Ë FreeBSD ¤Ď KAME IPv6 ĽęĽŐĽĄĽěĽóĽšźÂÁő¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤šĄŁ¤ˇ¤ż¤Ź¤Ă¤ĆĄ˘¤˘¤Ę¤ż¤Î FreeBSD ĽˇĽšĽĆĽŕ¤Ë¤Ď IPv6¤ňťî¤š¤ż¤á¤ËÉŹÍפʤâ¤Î¤š¤Ů¤Ć¤ŹČ÷¤ď¤Ă¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎŔá¤Ç¤Ď IPv6 ¤ÎŔßÄę¤ČźÂšÔ¤Ë´Ř¤ˇ¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ 1990 ÇŻÂĺ¤Î¤Ď¤¸¤á¤Ë¤ĎĄ˘żÍĄš¤Ď IPv4 Ľ˘ĽÉĽěĽšśő´Ö¤ŹľŢÂŽ¤Ë˝ĚžŽ¤ˇ¤Ć¤¤¤ë¤ł¤Č¤Ëľ¤¤Ĺ¤Ż¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤ˇ¤żĄŁ Ľ¤ĽóĽżĄźĽÍĽĂĽČ¤ÎŔŽÄšÎ¨¤ŹÁýÂ礚¤ë¤Ë¤ˇ¤ż¤Ź¤Ă¤ĆĄ˘ 2 ¤Ä¤Îż´Çۤ´¤Č¤Ź¤Ç¤Ć¤­¤Ţ¤ˇ¤żĄŁ Ľ˘ĽÉĽěĽš¤Î¸ĎłéĄŁ şŁĆü¤Ç¤ĎĄ˘Ľ×ĽéĽ¤ĽŮĄźĽČĽ˘ĽÉĽěĽšśő´Ö (10.0.0.0/8, 192.168.0.0/24 ¤Ę¤É) ¤Ş¤č¤ÓĽÍĽĂĽČĽďĄźĽŻĽ˘ĽÉĽěĽšĘŃ´š (NAT) ¤ŹťČÍѤľ¤ě¤Ć¤¤¤ë¤Î¤ÇĄ˘¤˝¤ě¤Ű¤Éż´Çۤľ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ ĽëĄźĽĆĽŁĽóĽ°ĽĆĄźĽÖĽë¤ÎĽ¨ĽóĽČĽę¤ŹÂ礭¤Ż¤Ę¤ę¤š¤Ž¤Ć¤¤¤Ţ¤ˇ¤żĄŁ ¤ł¤ě¤ĎşŁ¤Ç¤âż´ÇۤʝöĘÁ¤Ç¤šĄŁ IPv6 ¤Ď°Ę˛ź¤ÎĄ˘¤˝¤ˇ¤Ć¤˝¤Îž¿¤Ż¤ÎĚäÂę¤ň°ˇ¤¤¤Ţ¤šĄŁ 128 bit Ľ˘ĽÉĽěĽšśő´ÖĄŁ¸Ŕ¤¤´š¤¨¤ë¤ČĄ˘ÍýĎŔžĺ 340,282,366,920,938,463,463,374,607,431,768,211,456 ¸Ä¤ÎĽ˘ĽÉĽěĽš¤ŹÍřÍѲÄÇ˝¤Ç¤šĄŁ¤ł¤ě¤ĎĂĎľĺžĺ¤Î°ěĘżĘýĽáĄźĽż¤˘¤ż¤ęĄ˘ ¤Ş¤č¤˝ 6.67 * 10^27 ¸Ä¤Î IPv6 Ľ˘ĽÉĽěĽš¤Ź¤˘¤ë¤ł¤Č¤ň°ŐĚŁ¤ˇ¤Ţ¤šĄŁ ĽëĄźĽż¤ĎĄ˘ ĽëĄźĽĆĽŁĽóĽ°ĽĆĄźĽÖĽëĆâ¤ËĽÍĽĂĽČĽďĄźĽŻ˝¸Ě󼢼ɼ켚¤Ŕ¤ą¤ňłĘÇź¤š¤ë¤ł¤Č¤ÇĄ˘ ĽëĄźĽĆĽŁĽóĽ°ĽĆĄźĽÖĽë¤ÎĘżśŃ¤ň 8192 šŕĚÜÄřĹ٤˸ş¤é¤ˇ¤Ţ¤šĄŁ ž¤Ë¤â°Ę˛ź¤Î¤č¤Ś¤Ë IPv6 ¤ÎĘŘÍř¤ĘľĄÇ˝¤Ź¤ż¤Ż¤ľ¤ó¤˘¤ę¤Ţ¤šĄŁ Ľ˘ĽÉĽěĽšźŤĆ°ŔßÄę (RFC2462) Ľ¨ĽËĄźĽ­ĽăĽšĽČ (anycast) Ľ˘ĽÉĽěĽš (one-out-of many ĚőĂí: ĘŁżô¤Î°Ű¤Ę¤ëĽÎĄźĽÉ¤ŹąţĹú¤š¤ë 1 ¤Ä¤ÎĽ˘ĽÉĽěĽšĄŁ RFC2526 ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤)ĄŁ śŻŔŠĽŢĽëĽÁĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš IPsec (IP ĽťĽ­ĽĺĽęĽĆĽŁ) ĽˇĽóĽ×Ľë¤ĘĽŘĽĂĽŔš˝Â¤ ĽâĽĐĽ¤Ľë IP IPv4 ¤Ť¤é IPv6 ¤Ř¤Î°ÜšÔźęĂĘ žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď˛źľ­¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Sun.com ¤Î IPv6 łľ´Ń IPv6.org KAME.net 6bone.net IPv6 Ľ˘ĽÉĽěĽš¤ÎÇŘˇĘ ¤¤¤Ż¤Ä¤Ť°ă¤ŚĽżĽ¤Ľ×¤Î IPv6 Ľ˘ĽÉĽěĽš¤Ź¤˘¤ę¤Ţ¤šĄŁ ĽćĽËĽ­ĽăĽšĽČ (Unicast)Ą˘Ľ¨ĽËĄźĽ­ĽăĽšĽČ (Anycast) ¤Ş¤č¤ÓĽŢĽëĽÁĽ­ĽăĽšĽČ (Multicast) ¤Ç¤šĄŁ ĽćĽËĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤ĎźţĂΤμ˘ĽÉĽěĽš¤Ç¤šĄŁ ĽćĽËĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤ŘÁ÷¤é¤ě¤żĽŃĽąĽĂĽČ¤ĎĄ˘ ¤Ţ¤ľ¤Ë¤˝¤ÎĽ˘ĽÉĽěĽš¤Ë°¤š¤ëĽ¤ĽóĽżĄźĽŐĽ§ĄźĽš¤ËĹţĂ夡¤Ţ¤šĄŁ Ľ¨ĽËĄźĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤ĎĽćĽËĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤Čš˝Ę¸žĺČ˝ĘĚÉÔ˛ÄÇ˝¤Ç¤š¤ŹĄ˘ Ľ¤ĽóĽżĽŐĽ§ĄźĽšˇ˛¤Ë°¸¤Ć¤é¤ě¤Ć¤¤¤Ţ¤šĄŁ Ľ¨ĽËĄźĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤ËÁ÷¤é¤ě¤żĽŃĽąĽĂĽČ¤Ď (ĽëĄźĽżĽáĽČĽęĽĂĽŻĹޤË) şÇ¤âśá¤¤Ľ¤ĽóĽżĽŐĽ§ĄźĽš¤ËĹţĂ夡¤Ţ¤šĄŁ Ľ¨ĽËĄźĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤ĎĽëĄźĽż¤Ç¤ˇ¤ŤťČ¤Ă¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ ĽŢĽëĽÁĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤ĎĽ¤ĽóĽżĽŐĽ§ĄźĽšˇ˛¤ňźąĘ̤ˇ¤Ţ¤šĄŁ ĽŢĽëĽÁĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤ËÁ÷¤é¤ě¤żĽŃĽąĽĂĽČ¤ĎĄ˘ ĽŢĽëĽÁĽ­ĽăĽšĽČˇ˛¤Ë°¤š¤ë¤š¤Ů¤Ć¤ÎĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ËĹţĂ夡¤Ţ¤šĄŁ IPv4 ¤ÎĽÖĽíĄźĽÉĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš (ÄĚžď xxx.xxx.xxx.255) ¤ĎĄ˘IPv6 ¤Ç¤ĎĽŢĽëĽÁĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤ÇÉ˝¸˝¤ľ¤ě¤Ţ¤šĄŁ Í˝Ě󤾤줿 IPv6 Ľ˘ĽÉĽěĽš IPv6 Ľ˘ĽÉĽěĽš Ľ×ĽěĽŐĽŁĽĂĽŻĽšÄš (ĽÓĽĂĽČ) ŔâĚŔ Č÷šÍ :: 128 ĽÓĽĂĽČ ÉÔĆĂÄę IPv4 ¤Î 0.0.0.0 ť˛žČ ::1 128 ĽÓĽĂĽČ ĽëĄźĽ×ĽĐĽĂĽŻĽ˘ĽÉĽěĽš IPv4 ¤Î 127.0.0.1 ť˛žČ ::00:xx:xx:xx:xx 96 ĽÓĽĂĽČ IPv4 Ëä¤ášţ¤ßĽ˘ĽÉĽěĽš ˛ź°Ě¤Î 32 ĽÓĽĂĽČ¤Ď IPv4 Ľ˘ĽÉĽěĽš¤Ç¤šĄŁ IPv4 ¸ß´š IPv6 Ľ˘ĽÉĽěĽš ¤Č¤â¸Ć¤Đ¤ě¤Ţ¤šĄŁ ::ff:xx:xx:xx:xx 96 ĽÓĽĂĽČ IPv4 źÍąĆ IPv6 Ľ˘ĽÉĽěĽš ˛ź°Ě¤Î 32 ĽÓĽĂĽČ¤Ď IPv4 Ľ˘ĽÉĽěĽš¤Ç¤šĄŁ IPv6 ¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ę¤¤ĽŰĽšĽČ¤ËÂФš¤ëĽ˘ĽÉĽěĽš¤Ç¤šĄŁ fe80:: - feb:: 10 ĽÓĽĂĽČ ĽęĽóĽŻĽíĄźĽŤĽë IPv4 ¤ÎĽëĄźĽ×ĽĐĽĂĽŻĽ˘ĽÉĽěĽšť˛žČ fec0:: - fef:: 10 ĽÓĽĂĽČ ĽľĽ¤ĽČĽíĄźĽŤĽë   ff:: 8 ĽÓĽĂĽČ ĽŢĽëĽÁĽ­ĽăĽšĽČ   001 (´đżô 2) 3 ĽÓĽĂĽČ Ľ°ĽíĄźĽĐĽëĽćĽËĽ­ĽăĽšĽČ ¤š¤Ů¤Ć¤ÎĽ°ĽíĄźĽĐĽëĽćĽËĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤Ď¤ł¤ÎĽ×ĄźĽë¤Ť¤éłä¤ęĹö¤Ć¤é¤ě¤Ţ¤šĄŁ ¤Ď¤¸¤á¤Î 3 ĽÓĽĂĽČ¤Ď 001 ¤Ç¤šĄŁ
IPv6 Ľ˘ĽÉĽěĽš¤ňĆɤŕ ŔľľŹ¤Î˝ńź°¤Ç¤Ď x:x:x:x:x:x:x:x ¤ČÉ˝¤ľ¤ě¤Ţ¤šĄŁ¤˝¤ě¤ž¤ě¤Î x ¤Ď 16 ĽÓĽĂĽČ¤Î 16 żĘżô¤Ç¤šĄŁ¤ż¤Č¤¨¤Đ FEBC:A574:382B:23C1:AA49:4592:4EFE:9982 ¤Č¤Ę¤ę¤Ţ¤šĄŁ ¤š¤Ů¤ĆĽźĽí¤ÎÄš¤¤ÉôʏʸťúÎ󤏼˘ĽÉĽěĽšĆâ¤Ë¤č¤Ż¸˝¤ě¤Ţ¤šĄŁ ¤˝¤Î¤ż¤áĄ˘¤˝¤Î¤č¤Ś¤ĘÉôʏʸťúÎó¤Ď :: ¤ËĂť˝Ě¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘fe80::1 ¤ĎŔľľŹˇÁ¤Î fe80:0000:0000:0000:0000:0000:0000:0001 ¤ËÂĐąţ¤ˇ¤Ţ¤šĄŁ 3 ČÖĚܤΡÁź°¤ĎĄ˘şÇ¸ĺ¤Î 32 ĽÓĽĂĽČ¤ÎÉôĘŹ¤ň . ¤ňĘŹłäʸťú¤Č¤ˇ¤ĆťČ¤ŚĄ˘ ¤Ę¤¸¤ßżź¤¤ IPv4 (10 żĘ) ˇÁź°¤Ç˝ń¤Ż¤ł¤Č¤Ç¤šĄŁ ¤ż¤Č¤¨¤Đ 2002::10.0.0.1 ¤Ď (16 żĘ) ŔľľŹˇÁ¤Î 2002:0000:0000:0000:0000:0000:0a00:0001 ¤ËÂĐąţ¤ˇĄ˘Ćąťţ¤Ë 2002::a00:1 ¤Č˝ń¤Ż¤ł¤Č¤Č¤âĹů˛Á¤Ç¤šĄŁ ¤ł¤ł¤Ţ¤ÇÍč¤ě¤ĐĄ˘˛źľ­¤ňÍý˛ň¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤ë¤Ç¤ˇ¤ç¤ŚĄŁ &prompt.root; ifconfig rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255 inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1 ether 00:00:21:03:08:e1 media: Ethernet autoselect (100baseTX ) status: active fe80::200:21ff:fe03:8e1%rl0 ¤ĎźŤĆ°ĹޤËŔßÄꤾ¤ě¤żĽęĽóĽŻĽíĄźĽŤĽëĽ˘ĽÉĽěĽš¤Ç¤šĄŁ ¤ł¤ě¤ĎźŤĆ°ŔßÄę¤Î°ě´Ä¤Č¤ˇ¤ĆĄ˘ Ľ¤ĄźĽľĽÍĽĂĽČ MAC Ľ˘ĽÉĽěĽš¤ňĘѴ𤎤ż¤â¤Î¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤šĄŁ IPv6 Ľ˘ĽÉĽěĽšš˝Â¤¤Ë¤Ä¤¤¤Ć¤ÎžÜşŮ¤Ď RFC3513 ¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ ŔÜÂł ¸˝şßĄ˘Âž¤Î IPv6 ĽŰĽšĽČ¤Ş¤č¤ÓĽÍĽĂĽČĽďĄźĽŻ¤ËŔÜÂł¤š¤ë¤ż¤á¤Ë¤Ď 4 ¤Ä¤ÎĘýËĄ¤Ź¤˘¤ę¤Ţ¤šĄŁ 6bone źÂ¸łĽÍĽĂĽČĽďĄźĽŻ¤Ëť˛˛Ă¤š¤ëĄŁ žĺÎŽ¤ÎĽ×ĽíĽĐĽ¤ĽŔ¤Ť¤é IPv6 ĽÍĽĂĽČĽďĄźĽŻ¤Îłä¤ęĹö¤Ć¤ňźő¤ą¤ëĄŁ źę˝ç¤Ë¤Ä¤¤¤Ć¤ĎĄ˘Ľ¤ĽóĽżĄźĽÍĽĂĽČĽ×ĽíĽĐĽ¤ĽŔ¤ËĚ䤤šç¤ď¤ť¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ IPv6 over IPv4 ¤Ë¤č¤ëĽČĽóĽÍĽëĄŁ ĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ×ŔÜÂł¤Îžěšç freenet6 port ¤ňťČÍѤš¤ëĄŁ ¤ł¤ł¤Ç¤ĎĄ˘¸˝şß¤â¤Ă¤Č¤â¤č¤ŻťČ¤ď¤ě¤Ć¤¤¤ëĘýËĄ¤Čť×¤ď¤ě¤ë 6bone ¤ŘŔÜÂł¤š¤ëĘýËĄ¤ňŔâĚŔ¤ˇ¤Ţ¤šĄŁ ¤Ď¤¸¤á¤Ë 6bone ĽľĽ¤ĽČ¤ň¤ß¤ĆĄ˘ ¤˘¤Ę¤ż¤ËşÇ¤âśá¤¤ 6bone ŔÜÂłŔč¤ň¸Ť¤Ä¤ą¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ŔŐǤźÔ¤ËϢÍí¤š¤ë¤ČĄ˘žŻ¤ˇ¤Đ¤Ť¤ęąż¤Ź¤č¤ą¤ě¤ĐĄ˘ ŔÜÂł¤ňŔßÄꤚ¤ëĘýËĄ¤Ë¤Ä¤¤¤Ć¤ÎťŘꍤňźő¤ą¤é¤ě¤ë¤Ç¤ˇ¤ç¤ŚĄŁ Âż¤Ż¤Î¤Đ¤˘¤¤Ą˘¤ł¤ě¤Ë¤Ď GRE (gif) ĽČĽóĽÍĽë¤ÎŔßÄꤏ´Ţ¤Ţ¤ě¤Ţ¤šĄŁ ĚőĂí 6bone ¤Ď 3ffe:: (16 ĽÓĽĂĽČ) ¤Č¤¤¤Ś IPv6 Ľ˘ĽÉĽěĽš¤ňłä¤ężś¤é¤ě¤żźÂ¸łĚÜĹŞ¤ÎĽÍĽĂĽČĽďĄźĽŻ¤Ç¤ˇ¤ż¤ŹĄ˘ 2006 ÇŻ 6 ˇî¤ËążÍѤňÄäťß¤š¤ë¤ł¤Č¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤šĄŁ ž¤ÎžŚÍѤäťî¸łĹŞ¤Ę IPv6 ŔÜÂłĽľĄźĽÓĽš¤ňĂľ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ł¤Ë &man.gif.4; ĽČĽóĽÍĽë¤ňŔßÄꤚ¤ëĹľˇżĹޤĘÎă¤ňꍤˇ¤Ţ¤šĄŁ &prompt.root; ifconfig gif0 create &prompt.root; ifconfig gif0 gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280 &prompt.root; ifconfig gif0 tunnel MY_IPv4_ADDR HIS_IPv4_ADDR &prompt.root; ifconfig gif0 inet6 alias MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR Âçʸťú¤Ë¤Ę¤Ă¤Ć¤¤¤ëĂą¸ě¤ňĄ˘ žĺÎŽ¤Î 6bone ĽÎĄźĽÉ¤Ť¤éźő¤ąźč¤Ă¤żžđĘó¤ËĂÖ¤­´š¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ě¤ÇĽČĽóĽÍĽë¤ŹłÎΊ¤ľ¤ě¤Ţ¤šĄŁ&man.ping6.8; ¤ň ff02::1%gif0 ¤ËÁ÷¤ë¤ł¤Č¤Ë¤č¤Ă¤ĆĄ˘ĽČĽóĽÍĽë¤ŹĆ°şî¤ˇ¤Ć¤¤¤ë¤ŤłÎ¤Ť¤á¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ping ¤ÎąţĹú¤ň 2 ¤Äźő¤ąźč¤ë¤Ď¤ş¤Ç¤šĄŁ ff02:1%gif0 ¤Č¤¤¤ŚĽ˘ĽÉĽěĽš¤Ëś˝Ě٤ň¤˝¤˝¤é¤ě¤Ć¤¤¤ëžěšç¤Î¤ż¤á¤ËŔâĚŔ¤š¤ë¤ČĄ˘ ¤ł¤ě¤ĎĽŢĽëĽÁĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤Ç¤šĄŁ %gif0 ¤ĎĄ˘ĽÍĽĂĽČĽďĄźĽŻĽ¤ĽóĽżĽŐĽ§ĄźĽš gif0 žĺ¤ÎĽŢĽëĽÁĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤ŹťČÍѤľ¤ě¤ë¤Č¤¤¤Ś¤ł¤Č¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ ĽŢĽëĽÁĽ­ĽăĽšĽČĽ˘ĽÉĽěĽš¤ËÂФˇ¤Ć ping ¤ňÁ÷¤Ă¤ż¤Î¤ÇĄ˘ĽČĽóĽÍĽë¤Î¤â¤Ś°ěĘý¤ÎĂź¤âąţĹú¤ˇ¤Ţ¤šĄŁ ¤ł¤ł¤Ţ¤ÇÍč¤ë¤Č 6bone Ľ˘ĽĂĽ×ĽęĽóĽŻ¤ËˇĐĎŠŔßÄꤚ¤ë¤ł¤Č¤ĎČćłÓĹŞ´ĘĂą¤Ç¤ˇ¤ç¤ŚĄŁ &prompt.root; route add -inet6 default -interface gif0 &prompt.root; ping6 -n MY_UPLINK &prompt.root; traceroute6 www.jp.FreeBSD.org (3ffe:505:2008:1:2a0:24ff:fe57:e561) from 3ffe:8060:100::40:2, 30 hops max, 12 byte packets 1 atnet-meta6 14.147 ms 15.499 ms 24.319 ms 2 6bone-gw2-ATNET-NT.ipv6.tilab.com 103.408 ms 95.072 ms * 3 3ffe:1831:0:ffff::4 138.645 ms 134.437 ms 144.257 ms 4 3ffe:1810:0:6:290:27ff:fe79:7677 282.975 ms 278.666 ms 292.811 ms 5 3ffe:1800:0:ff00::4 400.131 ms 396.324 ms 394.769 ms 6 3ffe:1800:0:3:290:27ff:fe14:cdee 394.712 ms 397.19 ms 394.102 ms ¤ł¤Î˝ĐÎϤϼ޼ˇĽó¤Ë¤č¤Ă¤Ć°Ű¤Ę¤ę¤Ţ¤šĄŁ ¤ł¤ě¤ÇĄ˘¤˘¤Ę¤ż¤Ź www/mozilla ¤Î¤č¤Ś¤Ę IPv6 ¤ŹÍřÍѲÄÇ˝¤ĘĽÖĽéĽŚĽś¤ňťý¤Ă¤Ć¤¤¤ě¤ĐĄ˘ IPv6 ĽľĽ¤ĽČ www.kame.net ¤Ë¤¤¤Ă¤ĆÍ٤뼍Ľá¤ň¸Ť¤ë¤ł¤Č¤Ź¤Ç¤­¤ë¤Ç¤ˇ¤ç¤ŚĄŁ IPv6 Ŕ¤łŚ¤Î DNS IPv6 ¤Î¤ż¤á¤Îżˇ¤ˇ¤¤ DNS ĽěĽłĄźĽÉ¤Ź 2 źďÎढ¤ę¤Ţ¤šĄŁ AAAA ĽěĽłĄźĽÉ A6 ĽěĽłĄźĽÉ AAAA ĽěĽłĄźĽÉ¤Ď´ĘĂą¤ËťČ¤¨¤Ţ¤šĄŁ MYHOSTNAME AAAA MYIPv6ADDR žĺľ­¤ňĽ×ĽéĽ¤ĽŢĽęĽžĄźĽó DNS ĽŐĽĄĽ¤Ľë¤Ë˛Ă¤¨¤ĆĄ˘ ¤â¤é¤Ă¤ż¤Đ¤Ť¤ę¤Î IPv6 Ľ˘ĽÉĽěĽš¤ËĽŰĽšĽČĚž¤ňłä¤ęĹö¤Ć¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤˘¤Ę¤żźŤżČ¤Ç DNS ĽžĄźĽó¤ň´ÉÍý¤ˇ¤Ć¤¤¤Ę¤¤žěšç¤ĎĄ˘ DNS Ľ×ĽíĽĐĽ¤ĽŔ¤ËÍę¤ó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ bind ¤ÎşÇżˇĽĐĄźĽ¸ĽçĽó (ĽĐĄźĽ¸ĽçĽó 8.3 ¤Ş¤č¤Ó 9) ¤Ď AAAA ĽěĽłĄźĽÉ¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ
diff --git a/ja_JP.eucJP/books/handbook/boot/chapter.xml b/ja_JP.eucJP/books/handbook/boot/chapter.xml index 5c39217ace..8e41e4daaf 100644 --- a/ja_JP.eucJP/books/handbook/boot/chapter.xml +++ b/ja_JP.eucJP/books/handbook/boot/chapter.xml @@ -1,899 +1,895 @@ FreeBSD ¤ÎľŻĆ°¤ÎĽ×ĽíĽťĽš ¤ł¤ÎžĎ¤Ç¤Ď ľŻĆ° ĽÖĄźĽČĽšĽČĽéĽĂĽ× (bootstrap) ˇ×ťťľĄ¤ňľŻĆ°¤ˇĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňĽíĄźĽÉ¤š¤ëĽ×ĽíĽťĽš¤ĎĄ˘ ĽÖĄźĽČĽšĽČĽéĽĂĽ×Ľ×ĽíĽťĽšĄ˘ ¤â¤ˇ¤Ż¤ĎĂą¤Ë ľŻĆ° ¤Č¸Ć¤Đ¤ě¤Ţ¤šĄŁ FreeBSD ¤ÎľŻĆ°Ľ×ĽíĽťĽš¤ňťČ¤¨¤ĐĄ˘ ĽˇĽšĽĆĽŕ¤ňĽšĽżĄźĽČ¤š¤ë¤Č¤­¤ËľŻ¤­¤ë¤ł¤Č¤ň ¤Ť¤Ę¤ę˝ŔĆđ¤ËĽŤĽšĽżĽŢĽ¤Ľş¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ Ćą¤¸ˇ×ťťľĄ¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤ż ĘĚ¤ÎĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňÁŞÂň¤š¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤š¤ˇĄ˘ Ćą¤¸ĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤Î°ă¤ŚĽĐĄźĽ¸ĽçĽó¤ňÁŞÂň¤š¤ë¤ł¤Č¤âĄ˘ Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤żĘ̤μŤĄźĽÍĽë¤ňÁŞÂň¤š¤ë¤ł¤Č¤ľ¤¨¤Ç¤­¤Ţ¤šĄŁ ¤ł¤ÎžĎ¤Ç¤ĎĄ˘ťŘÄę¤Ç¤­¤ëŔßÄ꼪Ľ×ĽˇĽçĽó¤Č FreeBSD ¤ÎľŻĆ°Ľ×ĽíĽťĽš¤ÎĽŤĽšĽżĽŢĽ¤ĽşĘýËĄ¤Ë¤Ä¤¤¤ĆžÜ¤ˇ¤Ż˝Ň¤Ů¤Ţ¤šĄŁ ¤ł¤ÎžĎ¤Ç¤Ď FreeBSD ĽŤĄźĽÍĽë¤ŹĽšĽżĄźĽČ¤ˇĄ˘ĽÇĽĐĽ¤Ľš¤ň¸Ą˝Đ¤ˇĄ˘ &man.init.8; ¤ňľŻĆ°¤š¤ë¤Ţ¤Ç¤ËľŻ¤­¤ë¤ł¤Č¤š¤Ů¤Ć¤ň°ˇ¤¤¤Ţ¤šĄŁ ¤É¤ÎşÇĂć¤Î¤ł¤Č¤Ŕ¤Ť¤Ď¤Ă¤­¤ę¤ˇ¤Ć¤¤¤Ę¤¤żÍ¤Î¤ż¤á¤ËĘä­¤š¤ë¤ČĄ˘ ĽĆĽ­ĽšĽČ¤Îż§¤ŹĚŔ¤ë¤¤Çň¤Ť¤éłĽż§¤ËĘѤď¤ë¤Ţ¤Ç¤ËľŻ¤­¤Ć¤¤¤ë¤ł¤Č¤Ç¤šĄŁ ¤ł¤ÎžĎ¤ňĆɤŕ¤ČĄ˘°Ę˛ź¤Î¤ł¤Č¤ŹĘʤŤ¤ę¤Ţ¤šĄŁ ¤É¤Î¤č¤Ś¤Ë FreeBSD ¤ÎĽÖĄźĽČĽšĽČĽéĽĂĽ×ĽˇĽšĽĆĽŕ¤Źš˝Ŕޤľ¤ěĄ˘ ¤˝¤ˇ¤Ć¤˝¤ě¤é¤Ź¸ß¤¤¤Ë¤É¤Ś´Řˇ¸¤ˇ¤Ć¤¤¤ë¤Î¤Ť ľŻĆ°Ľ×ĽíĽťĽš¤ňŔŠ¸ć¤š¤ë¤ż¤á¤Ë FreeBSD ¤ÎĽÖĄźĽČĽšĽČĽéĽĂĽ×¤ÎłĆÍ×ÁǤËÉղäǤ­¤ëĽŞĽ×ĽˇĽçĽó &man.device.hints.5; ¤Î´đËÜĹŞ¤Ęľ­˝ŇĘýËĄ x86 ¸ÂÄę ¤ł¤ÎžĎ¤Ç¤Ď Intel x86 ĽˇĽšĽĆĽŕžĺ¤Çưşî¤š¤ë FreeBSD ¤ÎľŻĆ°Ľ×ĽíĽťĽš¤Ŕ¤ą¤ň°ˇ¤¤¤Ţ¤šĄŁ ľŻĆ°ťţ¤ÎĚäÂę ˇ×ťťľĄ¤ÎĹŸť¤ňĆţ¤ěĄ˘ĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňĽšĽżĄźĽČ¤ľ¤ť¤ë¤Î¤Ë¤ĎĄ˘ ¤Ş¤â¤ˇ¤í¤¤Ľ¸ĽěĽóĽŢ¤Ź¤˘¤ę¤Ţ¤šĄŁÄęľÁ¤Ë¤č¤ęĄ˘ ˇ×ťťľĄ¤ĎĄ˘ĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ŹľŻĆ°¤š¤ë¤Ţ¤Ç¤ĎĄ˘ ĽÇĽŁĽšĽŻ¤Ť¤éĽ×ĽíĽ°ĽéĽŕ¤ňư¤Ť¤š¤ł¤Č¤â´Ţ¤á¤ĆĄ˘ ˛ż¤ň¤É¤Ś¤š¤ě¤Đ¤č¤¤¤Ť¤Ţ¤Ă¤ż¤ŻĂΤę¤Ţ¤ť¤óĄŁ ¤Ç¤ĎĄ˘ˇ×ťťľĄ¤ĎĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤Ę¤ˇ¤Ë ĽÇĽŁĽšĽŻ¤Ť¤éĽ×ĽíĽ°ĽéĽŕ¤ňźÂšÔ¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤şĄ˘ ĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ÎĽ×ĽíĽ°ĽéĽŕ¤ŹĽÇĽŁĽšĽŻžĺ¤Ë¤˘¤ë¤Î¤Ę¤éĄ˘ ¤É¤Ś¤ä¤Ă¤ĆĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňľŻĆ°¤š¤ë¤Î¤Ç¤ˇ¤ç¤Ś¤Ť? ¤ł¤ÎĚäÂę¤Ď¤Ű¤é¤Ő¤­Ă˟ߤÎËÁ¸ą ¤Č¤¤¤ŚËܤÎĂć¤Ë˝ń¤Ť¤ě¤Ć¤¤¤ëĚäÂę¤Č¤Č¤Ć¤â¤č¤Żť÷¤Ć¤¤¤Ţ¤šĄŁ ĹĐžěżÍĘŞ¤ŹĽŢĽóĽŰĄźĽë¤Î˛ź¤ËȞʏÍî¤Ă¤ł¤Á¤ĆĄ˘ ˇ¤Éł (ĽÖĄźĽČĽšĽČĽéĽĂĽ×) ¤ň¤Ä¤Ť¤ó¤ÇźŤĘʤň°ú¤Ă¤Ń¤ęĄ˘ťý¤Ážĺ¤˛¤ë¤Î¤Ç¤šĄŁ ˇ×ťťľĄ¤ÎóŐĚŔ´ü¤Ë¤ĎĄ˘ĽÖĄźĽČĽšĽČĽéĽĂĽ× ¤Č¤¤¤ŚÍѸě¤ÇĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňĽíĄźĽÉ¤š¤ë ľĄš˝¤Î¤ł¤Č¤ňťŘ¤ˇ¤Ć¤¤¤ż¤Î¤Ç¤š¤ŹĄ˘ ¤¤¤Ţ¤Ď¤ł¤ě¤ň˝Ě¤á¤Ć ĽÖĄźĽČ (ľŻĆ°) ¤Č¸Ŕ¤¤¤Ţ¤šĄŁ BIOS ´đËÜĆţ˝ĐÎĎĽˇĽšĽĆĽŕ (Basic Input/Output System)BIOS x86 ĽĎĄźĽÉĽŚĽ§Ľ˘¤Ç¤ĎĄ˘´đËÜĆţ˝ĐÎĎĽˇĽšĽĆĽŕ (Basic Input/Output System: BIOS) ¤ËĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňĽíĄźĽÉ¤š¤ëŔŐǤ¤Ź¤˘¤ę¤Ţ¤šĄŁ ĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňĽíĄźĽÉ¤š¤ë¤ż¤á¤ËĄ˘ BIOS ¤ŹĽĎĄźĽÉĽÇĽŁĽšĽŻžĺ¤ÎĽŢĽšĽżĄźĽÖĄźĽČĽěĽłĄźĽÉ (Master Boot Record: MBR) ¤ňĂľ¤ˇ¤Ţ¤šĄŁ MBR ¤ĎĽĎĄźĽÉĽÇĽŁĽšĽŻžĺ¤ÎĆĂÄę¤Îžě˝ę¤Ë¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ BIOS ¤Ë¤Ď MBR ¤ňĽíĄźĽÉ¤ˇľŻĆ°¤š¤ë¤Î¤Ë˝˝ĘʤĘĂÎźą¤Ź¤˘¤ęĄ˘ ĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňĽíĄźĽÉ¤š¤ë¤ż¤á¤ËÉŹÍפʺîśČ¤ÎťÄ¤ę¤ĎĄ˘ žěšç¤Ë¤č¤Ă¤Ć¤Ď BIOS ¤Î˝ő¤ą¤ňĆŔ¤żžĺ¤Ç MBR ¤ŹźÂšÔ¤Ç¤­¤ë¤ł¤Č¤ň˛žÄꤡ¤Ć¤¤¤Ţ¤šĄŁ ĽŢĽšĽżĄźĽÖĄźĽČĽěĽłĄźĽÉ (Master Boot Record: MBR) ĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă (Boot Manager) ĽÖĄźĽČĽíĄźĽŔ (Boot Loader) MBR ĆâÉô¤ÎĽłĄźĽÉ¤ĎĄ˘ ÄĚžďĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă¤Č¸Ć¤Đ¤ě¤Ţ¤šĄŁ ¤Č¤ę¤ď¤ąĽćĄźĽś¤Č¤ÎÂĐĎĂ¤Ź¤˘¤ëžěšç¤Ë¤˝¤Ś¸Ć¤Đ¤ě¤Ţ¤šĄŁ ¤˝¤Îžěšç¤ĎĄ˘ÄĚžď¤â¤Ă¤ČÂż¤Ż¤ÎĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă¤ÎĽłĄźĽÉ¤ŹĄ˘ ĽÇĽŁĽšĽŻ¤ÎşÇ˝é¤ÎĽČĽéĽĂĽŻ ¤Ţ¤ż¤Ď OS ¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕžĺ¤Ë¤Ş¤Ť¤ě¤Ţ¤š (ĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă¤ĎĽÖĄźĽČĽíĄźĽŔ ¤Č¸Ć¤Đ¤ě¤ë¤ł¤Č¤â¤˘¤ę¤Ţ¤š¤ŹĄ˘ FreeBSD ¤Ď¤ł¤Î¸ŔÍŐ¤ňľŻĆ°¤Î¤â¤Ă¤Č¸ĺ¤ÎĂĘłŹ¤ËÂФˇ¤ĆťČ¤¤¤Ţ¤š)ĄŁ ¤č¤ŻťČ¤ď¤ě¤ëĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă¤Ë¤ĎĄ˘ boot0 (Boot Easy ¤Č¤â¸Ć¤Đ¤ě¤ë &os; ɸ˝ŕ¤ÎĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă), Grub, GAG ¤ä LILO Ĺů¤Ź¤˘¤ę¤Ţ¤š (MBR Ćâ¤Ëźý¤Ţ¤ë¤Î¤Ď boot0 ¤Ŕ¤ą¤Ç¤š)ĄŁ ĽÇĽŁĽšĽŻžĺ¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤Ź 1 ¤Ä¤Ç¤˘¤ě¤ĐĄ˘É¸˝ŕ¤Î PC MBR ¤Ç˝˝ĘŹ¤Ç¤šĄŁ ¤ł¤Î MBR ¤ĎĽÇĽŁĽšĽŻžĺ¤ÎşÇ˝é¤ÎľŻĆ°˛ÄÇ˝¤Ę (Ľ˘ĽŻĽĆĽŁĽÖ¤Ę) ĽšĽéĽ¤Ľš¤ňĂľ¤ˇĄ˘ ¤˝¤ÎĽšĽéĽ¤Ľš¤Ë¤˘¤ëĽłĄźĽÉ¤ňľŻĆ°¤ˇ¤ĆĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ÎťÄ¤ę¤ňĽíĄźĽÉ¤ˇ¤Ţ¤šĄŁ ĽÇĽŐĽŠĽëĽČ¤Ç &man.fdisk.8; ¤ŹĽ¤ĽóĽšĽČĄźĽë¤š¤ë MBR ¤ĎĄ˘¤ł¤Î¤č¤Ś¤Ę MBR ¤Ç¤šĄŁ/boot/mbr ¤ň´đ¤Ë¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ĽÇĽŁĽšĽŻžĺ¤ËĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňĘŁżôĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤¤¤ë¤Ę¤éĄ˘ Ę̤μ֥źĽČĽŢĽÍĄźĽ¸Ľă (ĘŁżô¤ÎĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤Î°ěÍ÷¤ňÉ˝ź¨¤Ç¤­¤ĆĄ˘ ľŻĆ°¤š¤ëĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňÁŞÂň¤Ç¤­¤ë¤č¤Ś¤Ę¤â¤Î) ¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤Č¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤Î¤č¤Ś¤ĘĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă¤ÎĂ植¤é 2 ¤Ä¤ňźĄ¤ÎŔá¤ÇŔâĚŔ¤ˇ¤Ţ¤šĄŁ FreeBSD ĽÖĄźĽČĽšĽČĽéĽĂĽ×ĽˇĽšĽĆĽŕ¤ÎťÄ¤ę¤Ď 3 ĂĘłŹ¤ËĘŹ¤Ť¤ě¤Ţ¤šĄŁ Âč 1 ĽšĽĆĄźĽ¸¤Ď MBR ¤Ë¤č¤Ă¤ĆľŻĆ°¤ľ¤ě¤ë¤â¤Î¤ÇĄ˘ MBR ¤Ďˇ×ťťľĄ¤ňĆĂÄę¤ÎžőÂ֤ˤš¤ë¤ż¤á¤ËÉŹÍפʤł¤Č¤Ŕ¤ąĂΤäƤ¤¤ĆĄ˘ Âč 2 ĽšĽĆĄźĽ¸¤ňľŻĆ°¤ˇ¤Ţ¤šĄŁ Âč 2 ĽšĽĆĄźĽ¸¤Ç¤ĎĄ˘Âč 3 ĽšĽĆĄźĽ¸¤ňľŻĆ°¤š¤ëÁ°¤ËĄ˘ ¤â¤Ś¤Á¤ç¤Ă¤Č¤ä¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ Âč 3 ĽšĽĆĄźĽ¸¤ÇĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ÎĽíĄźĽÉşîśČ¤ň´°Îť¤ˇ¤Ţ¤šĄŁ ľŻĆ°şîśČ¤Ź¤ł¤ě¤é¤Î 3 ĂĘłŹ¤ËĘŹ¤Ť¤ě¤Ć¤¤¤ë¤Î¤ĎĄ˘ PC ¤ÎľŹłĘ¤ŹĽšĽĆĄźĽ¸ 1 ¤ČĽšĽĆĄźĽ¸ 2 ¤ÇźÂšÔ¤Ç¤­¤ëĽ×ĽíĽ°ĽéĽŕ¤ÎĽľĽ¤Ľş¤ËŔŠ¸Â¤ň˛Ý¤ˇ¤Ć¤¤¤ë¤Ť¤é¤Ç¤šĄŁ ¤ł¤ě¤é¤ÎşîśČ¤ň¤Ä¤Ę¤Žšç¤ď¤ť¤ë¤ł¤Č¤Ë¤č¤Ă¤ĆĄ˘ FreeBSD ¤Ď¤č¤ę˝ŔĆđ¤ĘĽíĄźĽŔ (loader) ¤ňÄ󜥤ˇ¤Ć¤¤¤ë¤Î¤Ç¤šĄŁ ĽŤĄźĽÍĽë (kernel) init ¤˝¤Î¸ĺĽŤĄźĽÍĽë¤ŹľŻĆ°¤ˇĄ˘ĽÇĽĐĽ¤Ľš¤Î¸Ą˝Đ¤Č˝é´ü˛˝¤ňłŤťĎ¤ˇ¤Ţ¤šĄŁ ¤˝¤ˇ¤ĆĽŤĄźĽÍĽë¤ÎľŻĆ°¤Ź˝Ş¤ď¤ë¤ČĄ˘ŔЏć¤ĎĽćĄźĽśĄźĽ×ĽíĽťĽš¤Î &man.init.8; ¤Ř°Ü¤ľ¤ě¤Ţ¤šĄŁ&man.init.8; ¤Ď¤Ţ¤ş ĽÇĽŁĽšĽŻ¤ŹÍřÍѲÄÇ˝¤Ç¤˘¤ë¤ł¤Č¤ňłÎ¤Ť¤áĄ˘ ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ÎĽŢĽŚĽóĽČĄ˘ ĽÍĽĂĽČĽďĄźĽŻ¤ÇÍřÍѤš¤ëĽÍĽĂĽČĽďĄźĽŻĽŤĄźĽÉ¤ÎĽťĽĂĽČĽ˘ĽĂĽ×Ą˘ ¤˝¤ˇ¤ĆÄĚžď FreeBSD ĽˇĽšĽĆĽŕ¤Ç˝é´üťţ¤ËľŻĆ°¤ľ¤ě¤ë¤š¤Ů¤Ć¤ÎĽ×ĽíĽťĽš¤ÎľŻĆ°Ą˘ ¤Č¤¤¤Ă¤żĽćĄźĽśĄźĽěĽŮĽë¤Ç¤ÎĽęĽ˝ĄźĽš (ťń¸ť) ŔßÄę¤ňšÔ¤Ę¤¤¤Ţ¤šĄŁ ĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă¤ČľŻĆ°ĽšĽĆĄźĽ¸ ĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă ĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă ĽŢĽšĽżĄźĽÖĄźĽČĽěĽłĄźĽÉ (MBR) MBR ¤äĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă¤ÎĽłĄźĽÉ¤ĎľŻĆ°Ľ×ĽíĽťĽš¤ÎÂč 0 ĽšĽĆĄźĽ¸¤Č¸Ć¤Đ¤ě¤ë¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ÎŔá¤Ç¤ĎÁ°˝Ň¤Î 2 ¤Ä¤ÎĽÖĄźĽČĽŢĽÍĄźĽ¸ĽăĄ˘ boot0 ¤Č LILO ¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ <application>boot0</application> ĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă FreeBSD ¤ÎĽ¤ĽóĽšĽČĄźĽé¤ä &man.boot0cfg.8; ¤ŹĽÇĽŐĽŠĽëĽČ¤ÇĽ¤ĽóĽšĽČĄźĽë¤š¤ë MBR ¤ĎĄ˘/boot/boot0 ¤ň´đ¤Ë¤ˇ¤Ć¤¤¤Ţ¤š (boot0 ¤ĎČóžď¤ËĂą˝ă¤ĘĽ×ĽíĽ°ĽéĽŕ¤Ç¤šĄŁ MBR ¤Ë¤˘¤ëĽ×ĽíĽ°ĽéĽŕ¤ĎĄ˘ ĽšĽéĽ¤ĽšĽĆĄźĽÖĽë¤ČËöČř¤ÎźąĘĚťŇ 0x55AA ¤Ź¤˘¤ë¤ż¤áĄ˘ 446 ĽĐĽ¤ĽČ¤ÎÂ礭¤ľ¤Ç¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Č¤¤¤ŚŔŠ¸Â¤Ź¤˘¤ë¤ż¤á¤Ç¤š)ĄŁ ĽĎĄźĽÉĽÇĽŁĽšĽŻ¤Ë boot0 ¤ČĘŁżô¤ÎĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤żžěšçĄ˘ ľŻĆ°ťţ¤Ë°Ę˛ź¤Î¤č¤Ś¤Ę˛čĚĚ¤Ź˝Đ¤ë¤Ç¤ˇ¤ç¤ŚĄŁ <filename>boot0</filename> ¤ÎĽšĽŻĽęĄźĽóĽˇĽçĽĂĽČ F1 DOS F2 FreeBSD F3 Linux F4 ?? F5 Drive 1 Default: F2 ž¤ÎĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕĄ˘ĆĂ¤Ë &windows; ¤ĎĄ˘ ´ű¸¤Î MBR ¤ňźŤ¤é¤Î MBR ¤Çžĺ˝ń¤­¤ˇ¤Ć¤ˇ¤Ţ¤Ś¤ł¤Č¤ÇĂΤé¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤â¤ˇ¤˝¤Ś¤Ę¤Ă¤Ć¤ˇ¤Ţ¤Ă¤ż¤éĄ˘ ¤â¤ˇ¤Ż¤Ď´ű¸¤Î MBR ¤ň FreeBSD ¤Î MBR ¤ÇĂÖ¤­´š¤¨¤ż¤¤¤Î¤Ę¤éĄ˘ źĄ¤ÎĽłĽŢĽóĽÉ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; fdisk -B -b /boot/boot0 device device ¤ĎľŻĆ°¤š¤ëĽÇĽĐĽ¤ĽšĚž¤ÇĄ˘ ¤ż¤Č¤¨¤Đ 1 ČÖĚܤΠIDE ĽÇĽŁĽšĽŻ¤Ď ad0Ą˘ 2 ČÖĚܤΠIDE ĽłĽóĽČĽíĄźĽé¤ËŔÜÂł¤ľ¤ě¤Ć¤¤¤ë 1 ČÖĚܤΠIDE ĽÇĽŁĽšĽŻ¤Ď ad2Ą˘ 1 ČÖĚܤΠSCSI ĽÇĽŁĽšĽŻ¤Ď da0 ¤Ę¤É¤Č¤Ę¤ę¤Ţ¤šĄŁ MBR ¤ÎŔßÄę¤ňĽŤĽšĽżĽŢĽ¤Ľş¤ˇ¤ż¤¤žěšç¤Ď &man.boot0cfg.8; ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ LILO ĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă ¤ł¤ÎĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć FreeBSD ¤ňľŻĆ°¤š¤ë¤č¤Ś¤Ë¤š¤ë¤Ë¤ĎĄ˘¤Ţ¤ş Linux ¤ňľŻĆ°¤ˇ¤Ć /etc/lilo.conf ĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤Ë°Ę˛ź¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD žĺľ­¤Ë¤Ş¤¤¤ĆĄ˘FreeBSD ¤ÎĽ×ĽéĽ¤ĽŢĽęĽŃĄźĽĆĽŁĽˇĽçĽó¤ČĽÉĽéĽ¤ĽÖ¤ň Linux ¤ÎźąĘ̝ҤňťČ¤Ă¤ĆťŘÄꤡ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ X ¤ň Linux ¤ÎĽÉĽéĽ¤ĽÖʸťú¤ËĄ˘¤Ţ¤ż Y ¤ň Linux ¤ÎĽ×ĽéĽ¤ĽŢĽęĽŃĄźĽĆĽŁĽˇĽçĽóČÖšć¤ËĂÖ¤­´š¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ SCSI ĽÉĽéĽ¤ĽÖ¤ňťČ¤Ă¤Ć¤¤¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘ /dev/hd ¤ň /dev/sd ¤Î¤č¤Ś¤ËĆɤßÂؤ¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Ćą¤¸ĽÉĽéĽ¤ĽÖžĺ¤ËΞĘý¤ÎĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ŹĂÖ¤¤¤Ć¤˘¤ë¤Ę¤éĄ˘ šÔ¤ĎÉÔÍ×¤Ç¤šĄŁ ¤ł¤ě¤Ç /sbin/lilo -v ¤ňźÂšÔ¤š¤ë¤ČĽˇĽšĽĆĽŕ¤Ëżˇ¤ˇ¤¤ĘŃšš¤ŹČżąÇ¤ľ¤ě¤Ţ¤šĄŁ ˛čĚ̤μáĽĂĽťĄźĽ¸¤ň¸Ť¤ĆłÎǧ¤ˇ¤Ć¤Ş¤­¤Ţ¤ˇ¤ç¤ŚĄŁ ľŻĆ°ĽšĽĆĄźĽ¸ 1 <filename>/boot/boot1</filename> ¤ČľŻĆ°ĽšĽĆĄźĽ¸ 2 <filename>/boot/boot2</filename> łľÇ°žĺĄ˘Âč 1 ĽšĽĆĄźĽ¸¤ČÂč 2 ĽšĽĆĄźĽ¸¤Ď ĽĎĄźĽÉĽÇĽŁĽšĽŻ¤ÎĆą¤¸Îΰčžĺ¤ÎĆą°ě¤ÎĽ×ĽíĽ°ĽéĽŕ¤ÎÉôĘŹÉôĘŹ¤Ç¤šĄŁ ĽšĽÚĄźĽš¤ÎŔŠĚó¤Î¤ż¤á 2 ¤Ä¤ËĘŹłä¤ľ¤ě¤Ć¤¤¤Ţ¤š¤ŹĄ˘ ¤¤¤Ä¤â°ě˝ď¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ţ¤šĄŁ Ľ¤ĽóĽšĽČĄźĽé¤Ţ¤ż¤Ď bsdlabel ¤ĎĄ˘ÎžźÔ¤ň 1 ¤Ä¤Ë¤Ţ¤Č¤á¤żĽŐĽĄĽ¤Ľë /boot/boot ¤ňĽłĽÔĄź¤ˇ¤Ţ¤š (˛źľ­ť˛žČ)ĄŁ Âč 1 ĽšĽĆĄźĽ¸¤ČÂč 2 ĽšĽĆĄźĽ¸¤ĎĄ˘ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Îł°ÉôĄ˘ ľŻĆ°ĽšĽéĽ¤Ľš¤ÎşÇ˝é¤ÎĽČĽéĽĂĽŻ¤ËĂÖ¤Ť¤ěĄ˘ ŔčĆŹ¤ŹşÇ˝é¤ÎĽťĽŻĽż¤Ë¤­¤Ţ¤šĄŁ boot0 ¤Ţ¤ż¤Ď¤˝¤Îž¤ÎĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă¤ĎĄ˘ ľŻĆ°Ľ×ĽíĽťĽš¤ňÂł¤ą¤ë¤ż¤á¤ËÉŹÍ×¤ĘĽ×ĽíĽ°ĽéĽŕ¤Ź¤˝¤ł¤Ë¤˘¤ë¤ČÁŰÄꤡ¤Ć¤¤¤Ţ¤šĄŁ ťČÍѤľ¤ě¤ëĽťĽŻĽż¤Îżô¤ĎĄ˘/boot/boot ¤ÎÂ礭¤ľ¤Ť¤é´ĘĂą¤ËĘŹ¤Ť¤ę¤Ţ¤šĄŁ boot1 ¤Ď 512 ĽĐĽ¤ĽČ¤ÎÂ礭¤ľ¤Ç¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Č¤¤¤ŚŔŠ¸Â¤Ź¤˘¤ë¤Î¤ÇĄ˘ Čóžď¤ËĂą˝ă¤ĘĽ×ĽíĽ°ĽéĽŕ¤Ç¤šĄŁ ¤ł¤ÎĽ×ĽíĽ°ĽéĽŕ¤Ď boot2 ¤ň¸Ąş÷¤ˇĄ˘ źÂšÔ¤š¤ë¤ż¤áĄ˘¤˝¤ÎĽšĽéĽ¤Ľš¤ÎžđĘó¤ňĘÝťý¤š¤ë FreeBSD ¤Î BSD ĽéĽŮĽë ¤Ë´Ř¤š¤ëşÇÄă¸Â¤ÎžđĘó¤Ŕ¤ą¤ňťý¤Ă¤Ć¤¤¤Ţ¤šĄŁ boot2 ¤Ď¤â¤ŚžŻ¤ˇšâľĄÇ˝¤Ç¤šĄŁ ¤ł¤ě¤Ď FreeBSD ¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕžĺ¤ÇĽŐĽĄĽ¤Ľë¤ň¸Ť¤Ä¤ą¤ëÇ˝ÎϤňťý¤ÁĄ˘ źÂšÔ¤š¤ëĽŤĄźĽÍĽë¤äĽíĄźĽŔ¤ňťŘÄꤚ¤ë¤ż¤á¤Î´ĘĂą¤ĘĽ¤ĽóĽżĽŐĽ§ĄźĽš¤ňÄ󜥤ˇ¤Ţ¤šĄŁ ĽíĄźĽŔ (loader) ¤Ď¤ľ¤é¤ËšâľĄÇ˝¤Ę¤â¤Î¤ÇĄ˘ ťČ¤¤¤ä¤š¤Ż´ĘĂą¤ĘľŻĆ°ŔßÄꤏšÔ¤Ę¤¨¤ëźęĂʤňÄ󜥤ˇ¤Ţ¤šĄŁ boot2 ¤ĎÄ̞綠¤ě¤ňľŻĆ°¤ˇ¤Ţ¤šĄŁ °ĘÁ°¤Î boot2 ¤Ë¤ĎĄ˘ ĽŤĄźĽÍĽë¤ňÄžŔÜľŻĆ°¤š¤ëľĄÇ˝¤ˇ¤Ť¤˘¤ę¤Ţ¤ť¤ó¤Ç¤ˇ¤żĄŁ <filename>boot2</filename> ¤ÎĽšĽŻĽęĄźĽóĽˇĽçĽĂĽČ >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader boot: ¤â¤ˇ˛ž¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤ż boot1 ¤Č boot2 ¤ňĘŃšš¤ˇ¤ż¤¤¤Î¤Ç¤˘¤ě¤ĐĄ˘ &man.bsdlabel.8; ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; bsdlabel -B diskslice diskslice ¤ĎľŻĆ°¤š¤ëĽÇĽŁĽšĽŻ¤ČĽšĽéĽ¤Ľš¤ÇĄ˘ ¤ż¤Č¤¨¤ĐşÇ˝é¤Î IDE ĽÇĽŁĽšĽŻ¤Î 1 ČÖĚܤμšĽéĽ¤Ľš¤Ď ad0s1 ¤Č¤Ę¤ę¤Ţ¤šĄŁ Dangerously Dedicated Mode &man.bsdlabel.8; ¤ňťČ¤Ś¤Č¤­Ą˘ ad0 ¤Î¤č¤Ś¤ËĽÇĽŁĽšĽŻĚž¤Ŕ¤ą¤ňťŘÄꤚ¤ë¤ČĄ˘ ĽšĽéĽ¤Ľš¤ňťý¤ż¤Ę¤¤´í¸ą¤ĘŔěÍŃĽÇĽŁĽšĽŻ¤ňşîŔޤˇ¤Ć¤ˇ¤Ţ¤¤¤Ţ¤šĄŁ ¤ł¤ě¤Ď¤Ţ¤ş´Ö°ă¤¤¤Ę¤ŻĄ˘¤˘¤Ę¤ż¤Ź¤ä¤ę¤ż¤¤¤ł¤Č¤Ç¤Ď¤Ę¤¤¤Ç¤ˇ¤ç¤Ś¤Ť¤éĄ˘ ÉŹ¤ş Return Ľ­Ąź¤ň˛Ą¤šÁ°¤Ë &man.bsdlabel.8; ĽłĽŢĽóĽÉ¤ňĆó˝Ĺ¤ËĽÁĽ§ĽĂĽŻ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ľŻĆ°ĽšĽĆĄźĽ¸ 3 <filename>/boot/loader</filename> ĽÖĄźĽČĽíĄźĽŔ (boot-loader) ĽíĄźĽŔ¤Ďť°ĂĘłŹ¤ÎľŻĆ°Ľ×ĽíĽťĽš¤ÎşÇ˝ŞĂĘłŹ¤Ç¤šĄŁ ĽíĄźĽŔ¤ĎÄ̞異ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕžĺ¤Î /boot/loader ¤Č¤ˇ¤Ć¸şß¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ĽíĄźĽŔ¤ĎĄ˘¤č¤ę¤ľ¤Ţ¤ś¤Ţ¤ĘĽłĽŢĽóĽÉˇ˛¤ňĽľĽÝĄźĽČ¤ˇ¤ż śŻÎϤʼ¤ĽóĽżĽ×ĽęĽż¤Ë¤č¤Ă¤ĆÄ󜥤ľ¤ě¤ë´Ę°×ÁȤߚţ¤ßĽłĽŢĽóĽÉˇ˛¤ňÍřÍѤš¤ë¤ł¤Č¤ÇĄ˘ ĽćĄźĽś¤ŹÍřÍѤˇ¤ä¤š¤¤ŔßÄęźęĂʤȤʤë¤č¤Ś¤ËŔߡפľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽíĄźĽŔĽ×ĽíĽ°ĽéĽŕ¤Î˝čÍý¤ÎÎŽ¤ě ĽíĄźĽŔ¤Ď˝é´ü˛˝¤ÎşÝ¤ËĽłĽóĽ˝ĄźĽë¤ČĽÇĽŁĽšĽŻ¤Î¸Ą˝Đ¤ňšÔ¤Ę¤¤Ą˘ ¤É¤ÎĽÇĽŁĽšĽŻ¤Ť¤éľŻĆ°¤ˇ¤Ć¤¤¤ë¤Ť¤ňÄ´¤Ů¤Ţ¤šĄŁ ¤˝¤ˇ¤ĆÉŹÍפĘĘŃżô¤ňŔßÄꤡ¤Ć¤Ť¤éĽ¤ĽóĽżĽ×ĽęĽż¤ňľŻĆ°¤ˇĄ˘ ĽšĽŻĽęĽ×ĽČ¤Ť¤éĽłĽŢĽóĽÉ¤ňÁ÷¤Ă¤ż¤ęźę¤ÇĽłĽŢĽóĽÉ¤ňĆţÎϤˇ¤ż¤ę¤Ç¤­¤Ţ¤šĄŁ ĽíĄźĽŔ ĽíĄźĽŔ¤ÎŔßÄę ĽíĄźĽŔ¤ĎźĄ¤Ë /boot/loader.rc ¤ňĆɤߚţ¤ßĄ˘Ä̞異ĘŃżô¤Îɸ˝ŕĂͤňÄęľÁ¤ˇ¤ż /boot/defaults/loader.conf ¤ČĄ˘¤˝¤ÎĽŢĽˇĽó¤ËĽíĄźĽŤĽë¤ĘĘŃżô¤ňÄęľÁ¤ˇ¤ż /boot/loader.conf ¤ňĆɤߚţ¤ß¤Ţ¤šĄŁ loader.rc ¤Ď¤˝¤ě¤é¤ÎĘŃżô¤Ë¤â¤Č¤Ĺ¤­Ą˘ ÁŞÂň¤ľ¤ě¤żĽâĽ¸ĽĺĄźĽë¤ČĽŤĄźĽÍĽë¤ňĽíĄźĽÉ¤ˇ¤Ţ¤šĄŁ ĽíĄźĽŔ¤ĎşÇ¸ĺ¤ËĄ˘É¸˝ŕŔßÄę¤Ç 10 Éäμ­ĄźĆţÎĎÂÔ¤Áťţ´Ö¤ňÍѰդˇĄ˘ ĆţÎĎ¤Ź¤Ę¤ą¤ě¤ĐĽŤĄźĽÍĽë¤ňľŻĆ°¤ˇ¤Ţ¤šĄŁ ĆţÎĎ¤Ź¤˘¤Ă¤żžěšçĄ˘´Ę°×ĽłĽŢĽóĽÉˇ˛¤ŹťČ¤¨¤ëĽ×ĽíĽóĽ×ĽČ¤ŹÉ˝ź¨¤ľ¤ěĄ˘ ĽćĄźĽś¤ĎĘŃżô¤ňÄ´Ŕ°¤ˇ¤ż¤ęĄ˘ ¤š¤Ů¤Ć¤ÎĽâĽ¸ĽĺĄźĽë¤ňĽ˘ĽóĽíĄźĽÉ¤ˇ¤ż¤ęĄ˘ ĽâĽ¸ĽĺĄźĽë¤ňĽíĄźĽÉ¤ˇ¤ż¤ę¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤˝¤Î¸ĺĄ˘şÇ˝ŞĹŞ¤ĘľŻĆ°¤äşĆľŻĆ°¤Ř°ÜšÔ¤ˇ¤Ţ¤šĄŁ ĽíĄźĽŔ¤ÎÁȤߚţ¤ßĽłĽŢĽóĽÉ ¤â¤Ă¤Č¤â¤č¤ŻťČ¤ď¤ě¤ëĽíĄźĽŔ¤ÎĽłĽŢĽóĽÉ¤ň°Ę˛ź¤Ëꍤˇ¤Ţ¤šĄŁ ÍřÍѲÄÇ˝¤ĘĽłĽŢĽóĽÉ¤ň¤š¤Ů¤ĆĂΤꤿ¤¤žěšçĄ˘ &man.loader.8; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ autoboot seconds seconds ¤ÇÍż¤¨¤é¤ě¤żťţ´ÖĆâ¤ËĆţÎĎ¤Ź¤Ę¤ą¤ě¤ĐĄ˘ ĽŤĄźĽÍĽë¤ÎľŻĆ°¤Ř¤ČżĘ¤ß¤Ţ¤šĄŁ ĽŤĽŚĽóĽČĽŔĽŚĽó¤ňÉ˝ź¨¤ˇĄ˘É¸˝ŕŔßÄę¤Ç¤Ď 10 ÉĂ´Ö¤Ç¤šĄŁ boot -options kernelname ¤š¤°¤ËĽŤĄźĽÍĽë¤ÎľŻĆ°¤ŘżĘ¤ß¤Ţ¤šĄŁ ĽŞĽ×ĽˇĽçĽóĄ˘ĽŤĄźĽÍĽëĚž¤ŹťŘÄꤾ¤ě¤Ć¤¤¤ëžěšç¤ĎĄ˘ ¤˝¤ě¤é¤ŹťČ¤ď¤ě¤Ţ¤šĄŁ boot-conf ¤š¤Ů¤Ć¤ÎĽâĽ¸ĽĺĄźĽë¤ÎŔßÄę¤ňĄ˘ ľŻĆ°ťţ¤ČĆą¤¸¤č¤Ś¤ËĘŃżô¤Ë¤â¤Č¤Ĺ¤¤¤ĆźŤĆ°ĹŞ¤ËšÔ¤Ę¤¤¤Ţ¤šĄŁ ¤ł¤ÎĽłĽŢĽóĽÉ¤ĎĄ˘¤Ţ¤ş unload ¤ňšÔ¤Ę¤Ă¤ĆĄ˘ ĘŃżô—ÉáÄĚ kernel ¤Ę¤É—¤ňĘŃšš¤ˇ¤żžěšç¤Ë¤Î¤ßÍ­¸ú¤ËĆŻ¤­¤Ţ¤šĄŁ help topic /boot/loader.help ¤ňĆɤߚţ¤ßĄ˘ĽŘĽëĽ×ĽáĽĂĽťĄźĽ¸¤ňÉ˝ź¨¤ˇ¤Ţ¤šĄŁ topic ¤Ë index ¤ŹťŘÄꤾ¤ě¤żžěšçĄ˘ÍřÍѲÄÇ˝¤Ę topic ¤ňÉ˝ź¨¤ˇ¤Ţ¤šĄŁ include filename ťŘÄꤾ¤ě¤żĽŐĽĄĽ¤ĽëĚž¤ÎĽŐĽĄĽ¤Ľë¤ň˝čÍý¤ˇ¤Ţ¤šĄŁ ĽíĄźĽŔ¤ĎĽŐĽĄĽ¤Ľë¤ňĆɤߚţ¤ßĄ˘šÔĂą°Ě¤Ç˛ňźá¤ˇ¤Ţ¤šĄŁ Ľ¨ĽéĄź¤ŹČŻŔ¸¤ˇ¤żžěšçĄ˘ include ĽłĽŢĽóĽÉ¤ÎźÂšÔ¤Ď¤˝¤ÎťţĹŔ¤ÇÄäťß¤ˇ¤Ţ¤šĄŁ load type filename ťŘÄꤾ¤ě¤żĽŐĽĄĽ¤ĽëĚž¤ÎĽŤĄźĽÍĽëĄ˘ ĽŤĄźĽÍĽëĽâĽ¸ĽĺĄźĽëĄ˘¤˘¤ë¤¤¤Ď type ¤ËťŘÄꤾ¤ě¤żźďÎŕ¤ÎĽŐĽĄĽ¤Ľë¤ňĽíĄźĽÉ¤ˇ¤Ţ¤šĄŁ ĽŐĽĄĽ¤ĽëĚž°Ęšß¤ËťŘÄꤾ¤ě¤ż°úżô¤ĎĽŐĽĄĽ¤Ľë¤Ř¤ČĹϤľ¤ě¤Ţ¤šĄŁ ls path ťŘÄꤾ¤ě¤ż path ¤Ë¤˘¤ëĽŐĽĄĽ¤Ľë¤ňÉ˝ź¨¤ˇ¤Ţ¤šĄŁ path ¤ŹťŘÄꤾ¤ě¤Ć¤¤¤Ę¤ą¤ě¤ĐĄ˘ĽëĄźĽČĽÇĽŁĽěĽŻĽČĽę¤ňÉ˝ź¨¤ˇ¤Ţ¤šĄŁ ¤ŹťŘÄꤾ¤ě¤Ć¤¤¤ě¤ĐĽŐĽĄĽ¤ĽëĽľĽ¤Ľş¤âÉ˝ź¨¤ľ¤ě¤Ţ¤šĄŁ lsdev ĽâĽ¸ĽĺĄźĽë¤ŹĽíĄźĽÉ˛ÄÇ˝¤Ę¤š¤Ů¤Ć¤ÎĽÇĽĐĽ¤Ľš¤ňÉ˝ź¨¤ˇ¤Ţ¤šĄŁ ¤â¤ˇ ¤ŹťŘÄꤾ¤ě¤Ć¤¤¤ě¤ĐĄ˘ ¤č¤ęžÜşŮ¤Ę˝ĐÎĎ¤Ź¤ľ¤ě¤Ţ¤šĄŁ lsmod ĽíĄźĽÉşŃ¤ß¤ÎĽâĽ¸ĽĺĄźĽë¤ňÉ˝ź¨¤ˇ¤Ţ¤šĄŁ ¤ŹťŘÄꤾ¤ě¤Ć¤¤¤ě¤ĐĄ˘ ¤č¤ęžÜşŮ¤ĘĆâÍĆ¤Ź˝ĐÎϤľ¤ě¤Ţ¤šĄŁ more filename LINES šÔ¤ňÉ˝ź¨¤š¤ë¤´¤Č¤ËÄäťß¤ˇ¤Ę¤Ź¤éťŘÄꤾ¤ě¤żĽŐĽĄĽ¤Ľë¤ňÉ˝ź¨¤ˇ¤Ţ¤šĄŁ reboot ¤š¤°¤ËĽˇĽšĽĆĽŕ¤ňşĆľŻĆ°¤ˇ¤Ţ¤šĄŁ set variable set variable=value ĽíĄźĽŔ¤Î´Äś­ĘŃżô¤ňŔßÄꤡ¤Ţ¤šĄŁ unload ¤š¤Ů¤Ć¤ÎĽíĄźĽÉşŃ¤ßĽâĽ¸ĽĺĄźĽë¤ňşď˝ü¤ˇ¤Ţ¤šĄŁ ĽíĄźĽŔ¤ÎťČÍŃÎă źĄ¤Ë¤˘¤˛¤ë¤Î¤ĎĄ˘ĽíĄźĽŔ¤ÎźÂÁŠĹŞ¤ĘťČÍŃÎă¤Ç¤šĄŁ - ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ - ÉáĂʝȤäƤ¤¤ëĽŤĄźĽÍĽë¤ňĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ÇľŻĆ°¤ˇ¤Ţ¤šĄŁ + ÉáĂʝȤäƤ¤¤ëĽŤĄźĽÍĽë¤ňĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ÇľŻĆ°¤ˇ¤Ţ¤šĄŁ boot -s ÉáĂʝȤäƤ¤¤ëĽŤĄźĽÍĽë¤ČĽâĽ¸ĽĺĄźĽë¤ňĽ˘ĽóĽíĄźĽÉ¤ˇĄ˘ ¸Ĺ¤¤ (¤â¤ˇ¤Ż¤ĎĘ̤Î) ĽŤĄźĽÍĽë¤ňĽíĄźĽÉ¤ˇ¤Ţ¤šĄŁ - - kernel.old - unload load kernel.old kernel.GENERIC ¤Č¤š¤ë¤ČĄ˘ Ľ¤ĽóĽšĽČĄźĽëĽÇĽŁĽšĽŻ¤ËĆţ¤Ă¤Ć¤¤¤ż generic ĽŤĄźĽÍĽë¤ňťŘÄꤚ¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤Ţ¤żĄ˘ÄžÁ°¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤żĽŤĄźĽÍĽë (¤ż¤Č¤¨¤ĐĄ˘ ĽŤĄźĽÍĽë¤ňźŤĘʤÇŔßÄꤡ¤ż¤ęĄ˘ Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ˇ¤ż¤ę¤ˇ¤żžěšç) ¤ňťŘÄꤚ¤ë¤Ë¤Ď - kernel.old ¤Č¤ˇ¤Ţ¤šĄŁ + kernel.oldkernel.old ¤Č¤ˇ¤Ţ¤šĄŁ ÉáĂʤμŤĄźĽÍĽë¤ÇťČ¤Ă¤Ć¤¤¤ëĽâĽ¸ĽĺĄźĽë¤ň ťŘÄꤡ¤żĽŤĄźĽÍĽë¤ÇĽíĄźĽÉ¤š¤ëžěšç¤ĎĄ˘˛ź¤Î¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ unload set kernel="kernel.old" boot-conf ĽŤĄźĽÍĽë¤ÎŔßÄ꼚ĽŻĽęĽ×ĽČ (Ä̞異 ĽŤĄźĽÍĽëľŻĆ°ťţ¤ËŔßÄꤾ¤ě¤ëĆâÍƤňźŤĆ°˛˝¤š¤ëĽšĽŻĽęĽ×ĽČ) ¤ňĽíĄźĽÉ¤ˇ¤Ţ¤šĄŁ load -t userconfig_script /boot/kernel.conf ĽŤĄźĽÍĽëľŻĆ°ťţ¤ÎąţĹú ĽŤĄźĽÍĽë (kernel) ľŻĆ°ťţ¤ÎąţĹú ĽŤĄźĽÍĽë¤ŹĽíĄźĽŔ (ÄĚžď¤Ď) ¤Ťboot2 (ĽíĄźĽŔ¤ňąŞ˛ó¤ˇ¤Ć) ¤Ë¤č¤Ă¤ĆĽíĄźĽÉ¤ľ¤ě¤ë¤ČĄ˘ ľŻĆ°ĽŐĽéĽ°¤ňÄ´¤Ů¤Ţ¤šĄŁ ¤â¤ˇľŻĆ°ĽŐĽéĽ°¤Ź¤˘¤ě¤ĐĄ˘¤˝¤ě¤Ëąţ¤¸¤Ćưşî¤ňÄ´Ŕ°¤ˇ¤Ţ¤šĄŁ ĽŤĄźĽÍĽëľŻĆ°ĽŐĽéĽ° ĽŤĄźĽÍĽë (kernel) ľŻĆ°ĽŐĽéĽ° ÎÉ¤ŻťČ¤ď¤ě¤ëľŻĆ°ĽŐĽéĽ°¤ĎźĄ¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ ĽŤĄźĽÍĽë˝é´ü˛˝Ăć¤ËĄ˘ ĽëĄźĽČĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Č¤ˇ¤ĆĽŢĽŚĽóĽČ¤š¤ëĽÇĽĐĽ¤Ľš¤ňżŇ¤Í¤Ţ¤šĄŁ CDROM ¤Ť¤éľŻĆ°¤ˇ¤Ţ¤šĄŁ ľŻĆ°ťţ¤ËĽŤĄźĽÍĽëĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽó¤ňšÔ¤Ę¤Ś UserConfig ¤ňźÂšÔ¤ˇ¤Ţ¤šĄŁ ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ÇľŻĆ°¤ˇ¤Ţ¤šĄŁ ĽŤĄźĽÍĽëľŻĆ°ťţ¤Ë¤č¤ęžÜşŮ¤ĘžđĘó¤ňÉ˝ź¨¤ˇ¤Ţ¤šĄŁ ľŻĆ°ĽŐĽéĽ°¤Ď¤ł¤Îž¤Ë¤â¤˘¤ę¤Ţ¤šĄŁ ¤˝¤ě¤é¤Ë¤Ä¤¤¤Ć¤Ď &man.boot.8; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Tom Rhodes ´óšĆ: Device Hints device.hints ¤ł¤ě¤Ď FreeBSD 5.0 °Ęšß¤ÎľĄÇ˝¤Ç¤šĄŁ ¤ł¤ě°ĘÁ°¤ÎĽĐĄźĽ¸ĽçĽó¤Ë¤Ď¸şß¤ˇ¤Ţ¤ť¤óĄŁ ľŻĆ°Ľ×ĽíĽťĽš¤Î´Ö¤Ë &man.loader.8; ¤Ď &man.device.hints.5; ¤ňĆɤߚţ¤ß¤Ţ¤šĄŁ ¤ł¤ÎĽŐĽĄĽ¤Ľë¤Ë¤ĎĽŤĄźĽÍĽëľŻĆ°¤Î´Äś­ĘŃżô¤ŹłĘÇź¤ľ¤ě¤Ć¤Ş¤ęĄ˘ ¤ł¤ě¤é¤Î´Äś­ĘŃżô¤Ď device hints ¤Č¸Ć¤Đ¤ě¤ë¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁdevice hints ¤ĎĽÇĽĐĽ¤Ľš¤ňŔßÄꤚ¤ë¤ż¤á¤ËĽÇĽĐĽ¤ĽšĽÉĽéĽ¤ĽĐ¤ŹťČÍѤˇ¤Ţ¤šĄŁ device hints ¤Ď ĽšĽĆĄźĽ¸ 3 ĽÖĄźĽČĽíĄźĽŔ ¤Ç¤âŔßÄę¤Ç¤­¤Ţ¤šĄŁĘŃżô¤Ď set ĽłĽŢĽóĽÉ¤ňÍѤ¤¤ĆÄɲ䡤ż¤ęĄ˘ unset ĽłĽŢĽóĽÉ¤ňÍѤ¤¤Ćşď˝ü¤Ç¤­¤Ţ¤šĄŁ show ĽłĽŢĽóĽÉ¤ňÍѤ¤¤Ć°ěÍ÷¤ň¸Ť¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ /boot/device.hints ¤ËŔßÄꤾ¤ě¤Ć¤¤¤ëĘŃżô¤Ď ¤ł¤Î¤Č¤­¤Ëžĺ˝ń¤­¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ĽíĄźĽŔ¤ÇŔßÄꤡ¤ż device hints ¤Î¸ú˛Ě¤Ď°ěťţĹŞ¤Ę¤â¤Î¤Ç¤˘¤ë¤ż¤áĄ˘ źĄ˛óľŻĆ°¤š¤ë¤Č¤­¤Ë¤ĎĚľ¸ú¤Ë¤Ę¤ę¤Ţ¤šĄŁ ĽˇĽšĽĆĽŕ¤ŹľŻĆ°¤š¤ë¤ČĄ˘&man.kenv.1; ĽłĽŢĽóĽÉ¤ÇĽŤĄźĽÍĽë´Äś­ĘŃżô¤ňĽŔĽóĽ×¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ /boot/device.hints ¤Ď 1 šÔ¤Ë¤Ä¤­°ě¤Ä¤ÎĘŃżô¤ňŔßÄę¤Ç¤­Ą˘šÔĆŹ¤Î # ¤Ď¤˝¤ÎšÔ¤ŹĽłĽáĽóĽČ¤Ç¤˘¤ë¤ł¤Č¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ ˝ńź°¤ĎźĄ¤ÎÄ̤ę¤Ç¤šĄŁ hint.driver.unit.keyword="value" ĽšĽĆĄźĽ¸ 3 ĽÖĄźĽČĽíĄźĽŔ ¤ÇŔßÄꤚ¤ë¤Č¤­¤Î˝ńź°¤ĎźĄ¤ÎÄ̤ę¤Ç¤šĄŁ set hint.driver.unit.keyword=value driver ¤ĎĽÇĽĐĽ¤ĽšĽÉĽéĽ¤ĽĐ¤ÎĚžÁ°Ą˘ unit ¤ĎĽÇĽĐĽ¤ĽšĽÉĽéĽ¤ĽĐ¤ÎĽćĽËĽĂĽČČ֚楢 keyword ¤ĎĽŇĽóĽČĽ­ĄźĽďĄźĽÉ¤Ç¤šĄŁ Ľ­ĄźĽďĄźĽÉ¤ĎźĄ¤ÎŔßÄę¤ňťŘÄꤡ¤Ţ¤š: at: ĽÇĽĐĽ¤Ľš¤Ź¤É¤ÎĽĐĽš¤ËŔÜÂł¤ľ¤ě¤Ć¤¤¤ë¤ŤťŘÄꤡ¤Ţ¤šĄŁ port: ťČÍѤš¤ë I/O ĽÝĄźĽČ¤ÎłŤťĎĽ˘ĽÉĽěĽš¤ňťŘÄꤡ¤Ţ¤šĄŁ irq: ťČÍѤš¤ë IRQ ¤ňťŘÄꤡ¤Ţ¤šĄŁ drq: ťČÍѤš¤ë DMA ĽÁĽăĽÍĽë¤ňťŘÄꤡ¤Ţ¤šĄŁ maddr: ťČÍѤš¤ëĘŞÍýĽáĽâĽęĽ˘ĽÉĽěĽš¤ňťŘÄꤡ¤Ţ¤šĄŁ flags: ĽÇĽĐĽ¤Ľš¤ËÂФˇ¤Ć¤ľ¤Ţ¤ś¤Ţ¤ĘĽŐĽéĽ°¤ňŔßÄꤡ¤Ţ¤šĄŁ disabled: 1 ¤ŹŔßÄꤾ¤ě¤Ć¤¤¤ë¤ČĄ˘¤˝¤ÎĽÇĽĐĽ¤Ľš¤ĎĚľ¸ú¤Ë¤Ę¤ę¤Ţ¤šĄŁ ĽÇĽĐĽ¤ĽšĽÉĽéĽ¤ĽĐ¤Ď¤ł¤ÎĽęĽšĽČ°Ęł°¤ÎĘŃżô¤ňŔßÄę¤Ç¤­¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤ó¤ˇĄ˘ ¤ł¤ÎĽęĽšĽČ°Ęł°¤ÎĘŃżô¤ňÉŹÍפȤš¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¤ˇ¤ż¤Ź¤Ă¤ĆĄ˘ĽÇĽĐĽ¤ĽšĽÉĽéĽ¤ĽĐ¤ÎĽŢĽËĽĺĽ˘Ľë¤ňĆɤळ¤Č¤ň¤Ş¤š¤š¤á¤ˇ¤Ţ¤šĄŁ ¤č¤ęÂż¤Ż¤ÎžđĘó¤ňĂΤꤿ¤ą¤ě¤ĐĄ˘&man.device.hints.5;, &man.kenv.1;, &man.loader.conf.5;, &man.loader.8; ¤Ę¤É¤ÎĽŢĽËĽĺĽ˘Ľë¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ init: Ľ×ĽíĽťĽšŔЏć¤Î˝é´ü˛˝ init ĽŤĄźĽÍĽë¤ÎľŻĆ°¤Ź´°Îť¤š¤ë¤ČĄ˘&man.init.8; ¤Č¤¤¤ŚĽćĄźĽśĽ×ĽíĽťĽš¤ËŔŠ¸ć¤Ź°Ü¤ľ¤ě¤Ţ¤šĄŁ ¤ł¤ě¤Ď /sbin/initĄ˘ ¤â¤ˇ¤Ż¤Ď loader ¤Î init_path ĘŃżô¤ÇťŘÄꤾ¤ě¤ëžě˝ę¤Ë¤˘¤ę¤Ţ¤šĄŁ źŤĆ°şĆľŻĆ° (automatic reboot)¤Îưşî źŤĆ°şĆľŻĆ°¤Ç¤ĎĄ˘ ĽˇĽšĽĆĽŕžĺ¤ÇÍřÍѤǤ­¤ëĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Î°ě´ˇŔ­¤ňłÎǧ¤ˇ¤Ţ¤šĄŁ ¤â¤ˇ¤˝¤ě¤ËĚäÂꤏ¤˘¤Ă¤Ć &man.fsck.8; ¤Ź¤˝¤ÎÉÔ°ěĂפň˝¤Éü¤Ç¤­¤Ę¤ą¤ě¤ĐĄ˘´ÉÍýźÔ¤ËÄžŔÜÂн褾¤ť¤ë¤ż¤á &man.init.8; ¤ĎĽˇĽšĽĆĽŕ¤ňĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤Ř¤Č°ÜšÔ¤ľ¤ť¤Ţ¤šĄŁ ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ ĽłĽóĽ˝ĄźĽë (console) ¤ł¤ÎĽâĄźĽÉ¤Ë¤ĎĄ˘ źŤĆ°şĆľŻĆ°¤Î˝čÍýĂ植Ą˘ ĽćĄźĽś¤ŹľŻĆ°ťţ¤Ë ĽŞĽ×ĽˇĽçĽó¤ňťŘÄꤡ¤żžěšçĄ˘ ¤˘¤ë¤¤¤Ď loader ¤Ç boot_single ĘŃżô¤ňŔßÄꤚ¤ë¤ł¤Č¤Ë¤č¤Ă¤Ć°ÜšÔ¤ˇ¤Ţ¤šĄŁ ¤Ţ¤żĄ˘ ĽŢĽëĽÁĽćĄźĽśĽâĄźĽÉ¤Ť¤é şĆľŻĆ°ĽŞĽ×ĽˇĽçĽó () ¤äÄäťß (halt) ĽŞĽ×ĽˇĽçĽó () ¤Ę¤ˇ¤Ç &man.shutdown.8; ¤ň¸Ć¤Ó˝Đ¤š¤Č¤ł¤ÎĽâĄźĽÉ¤Ë°ÜšÔ¤ˇ¤Ţ¤šĄŁ /etc/ttys ¤ÇĽˇĽšĽĆĽŕĽłĽóĽ˝ĄźĽë console ¤Ź insecure ¤ËŔßÄꤾ¤ě¤Ć¤¤¤ëžěšçĄ˘ ĽˇĽšĽĆĽŕ¤ĎĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤Ë°ÜšÔ¤š¤ëÁ°¤Ë root ¤ÎĽŃĽšĽďĄźĽÉ¤ňĆţÎϤš¤ë¤č¤Ś¤Ëľá¤á¤Ţ¤šĄŁ <filename>/etc/ttys</filename> ¤Î insecure ĽłĽóĽ˝ĄźĽë # name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. # # Ěő) console ¤Ë "insecure" ¤Č¤¤¤Ś°ő¤ň¤Ä¤ą¤ë¤ČĄ˘ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤Ř°ÜšÔ¤š¤ë # şÝ¤Ë init ¤Ź root ¤ÎĽŃĽšĽďĄźĽÉ¤ňÍ׾ᤚ¤ë¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ # console none unknown off insecure insecure ĽłĽóĽ˝ĄźĽë¤Č¤ĎĄ˘ ¤˘¤Ę¤żźŤżČĄ˘ĽłĽóĽ˝ĄźĽë¤ŹĘŞÍýĹŞ¤Ë°ÂÁ´¤Ç¤Ę¤¤¤ČšÍ¤¨¤Ć¤¤¤ĆĄ˘ root ¤ÎĽŃĽšĽďĄźĽÉ¤ňĂΤëżÍ¤Ŕ¤ą¤ŹĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ň ťČ¤¨¤ë¤č¤Ś¤Ë¤ˇ¤ż¤¤¤Č¤¤¤Ś°ŐĚŁ¤Ç¤˘¤ęĄ˘ ĽłĽóĽ˝ĄźĽë¤ň°ÂÁ´¤Ç¤Ę¤¤žőÂ֤ǝȤ¤¤ż¤¤¤Č¤¤¤Ś°ŐĚŁ¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ¤˝¤Î¤ż¤áĄ˘°ÂÁ´Ŕ­¤ňľá¤á¤ë¤Ę¤é¤Đ secure ¤Ç¤Ę¤Ż insecure ¤ňÁޤó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŢĽëĽÁĽćĄźĽśĽâĄźĽÉ ĽŢĽëĽÁĽćĄźĽśĽâĄźĽÉ &man.init.8; ¤ŹĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ŹŔľžď¤Ç¤˘¤ë¤ČČ˝ĂǤš¤ë¤ŤĄ˘ ĽćĄźĽś¤ŹĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ň˝ŞÎť¤š¤ë¤ČĄ˘ ĽˇĽšĽĆĽŕ¤ĎĽŢĽëĽÁĽćĄźĽśĽâĄźĽÉ¤Ř°ÜšÔ¤ˇĄ˘ ĽęĽ˝ĄźĽš¤ÎŔßÄę¤ňťĎ¤á¤Ţ¤šĄŁ ĽęĽ˝ĄźĽšŔßÄę (rc) rc ĽŐĽĄĽ¤Ľëˇ˛ ĽęĽ˝ĄźĽšŔßÄ꼡ĽšĽĆĽŕ¤ĎĽÇĽŐĽŠĽëĽČŔßÄę¤ň /etc/defaults/rc.conf ¤Ť¤éĄ˘ ¤˝¤ÎĽˇĽšĽĆĽŕĆČźŤ¤ÎşŮ¤Ť¤ĘŔßÄę¤ň /etc/rc.conf ¤Ť¤éĆɤߚţ¤ß¤Ţ¤šĄŁ ¤˝¤ˇ¤Ć /etc/fstab ¤Ëľ­˝Ň¤ľ¤ě¤ëĽˇĽšĽĆĽŕĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĽŢĽŚĽóĽČ¤ˇĄ˘ ĽÍĽĂĽČĽďĄźĽŻĽľĄźĽÓĽš¤ÎłŤťĎĄ˘ ¤ľ¤Ţ¤ś¤Ţ¤ĘĽˇĽšĽĆĽŕĽÇĄźĽâĽó¤ÎłŤťĎĄ˘ ¤˝¤ˇ¤ĆşÇ¸ĺ¤ËĄ˘ĽíĄźĽŤĽë¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤ż package ¤ÎľŻĆ°ĽšĽŻĽęĽ×ĽČ¤ÎźÂšÔ¤Ř¤ČżĘ¤ß¤Ţ¤šĄŁ ĽęĽ˝ĄźĽšŔßÄ꼡ĽšĽĆĽŕ¤Ë´Ř¤š¤ëť˛šÍťńÎÁ¤ĎĄ˘&man.rc.8; ¤Ë¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤ĎĽšĽŻĽęĽ×ĽČ¤˝¤Î¤â¤Î¤ňÄ´¤Ů¤ë¤ł¤Č¤ČĆą¤¸¤Ż¤é¤¤ÍĽ¤ě¤ż¤â¤Î¤Ç¤šĄŁ ĽˇĽăĽĂĽČĽŔĽŚĽóưşî shutdown &man.shutdown.8; ¤ňÍѤ¤¤ĆĽˇĽšĽĆĽŕ¤ň°ŐżŢĹŞ¤ËĽˇĽăĽĂĽČĽŔĽŚĽó¤ˇ¤żžěšçĄ˘ &man.init.8; ¤Ď /etc/rc.shutdown ¤Č¤¤¤ŚĽšĽŻĽęĽ×ĽČ¤ÎźÂšÔ¤ňťî¤ß¤Ţ¤šĄŁ ¤˝¤ˇ¤ĆĄ˘¤š¤Ů¤Ć¤ÎĽ×ĽíĽťĽš¤Ř TERM ĽˇĽ°ĽĘĽë¤ňÁ÷¤ęĄ˘Âł¤¤¤Ć¤Ś¤Ţ¤Ż˝ŞÎť¤Ç¤­¤Ę¤Ť¤Ă¤żĽ×ĽíĽťĽš¤Ř KILL ĽˇĽ°ĽĘĽë¤ňÁ÷¤ę¤Ţ¤šĄŁ ĹŸť´ÉÍýľĄÇ˝¤ňťý¤Ă¤żĽˇĽšĽĆĽŕ¤Ç˛ÔĆŻ¤ˇ¤Ć¤¤¤ë FreeBSD ¤Ç¤Ď shutdown -p now ĽłĽŢĽóĽÉ¤Ë¤č¤Ă¤ĆĄ˘ Äž¤Á¤ËĹŸť¤ňÍî¤Č¤š¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁFreeBSD ¤ňşĆľŻĆ°¤š¤ë¤Ë¤ĎĄ˘ shutdown -r now ¤ňźÂšÔ¤š¤ë¤Ŕ¤ą¤Ç¤šĄŁ &man.shutdown.8; ¤ňźÂšÔ¤š¤ë¤Ë¤ĎĄ˘root ¤Ç¤˘¤ë¤ŤĄ˘operator Ľ°ĽëĄźĽ×¤ÎĽáĽóĽĐ¤Ç¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ&man.halt.8; ¤ä &man.reboot.8; ĽłĽŢĽóĽÉ¤ňÍřÍѤš¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤š¤ŹĄ˘ ¤č¤ęÂż¤Ż¤ÎžđĘó¤ňĂΤ뤿¤á¤ËĄ˘¤˝¤ě¤é¤Č &man.shutdown.8; ¤ÎĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĹŸť´ÉÍýľĄÇ˝¤Ë¤Ď &man.acpi.4; ¤ŹĽŤĄźĽÍĽë¤ËÁȤߚţ¤Ţ¤ě¤Ć¤¤¤ë¤ŤĄ˘ ĽâĽ¸ĽĺĄźĽë¤ŹĆɤߚţ¤Ţ¤ě¤Ć¤¤¤ë¤ł¤Č¤ŹÉŹÍ×¤Ç¤šĄŁ diff --git a/ja_JP.eucJP/books/handbook/cutting-edge/chapter.xml b/ja_JP.eucJP/books/handbook/cutting-edge/chapter.xml index 88bdc10e22..d96c6bb4b9 100644 --- a/ja_JP.eucJP/books/handbook/cutting-edge/chapter.xml +++ b/ja_JP.eucJP/books/handbook/cutting-edge/chapter.xml @@ -1,3233 +1,3183 @@ Jim Mock şĆš˝ŔŽĄ˘şĆĘÔŔŽ¤Ş¤č¤Ó˛ţÄű: Jordan Hubbard ¸śşî: Poul-Henning Kamp John Polstra Nik Clayton &os; ¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČ¤ČĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ ¤ł¤ÎžĎ¤Ç¤Ď ¤˘¤ëĽęĽęĄźĽš¤Ť¤éźĄ¤ÎĽęĽęĄźĽš¤Ţ¤Ç¤Î´ü´Ö¤Ë¤âĄ˘ &os; ¤ÎłŤČŻ¤ĎľŮ¤ß¤Ę¤ŻÂł¤ą¤é¤ě¤Ć¤¤¤Ţ¤šĄŁ şÇżˇ¤ÎłŤČŻĽÄĽęĄź¤ČĆą´ü¤š¤ë¤ł¤Č¤ňšĽ¤ŕżÍ¤â¤¤¤Ţ¤š¤ˇĄ˘ ¸řź°¤ÎĽęĽęĄźĽšČǤňšĽ¤ó¤ÇťČ¤ŚĘý¤â¤¤¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇ¤Ę¤Ź¤éĄ˘¸řź°¤ÎĽęĽęĄźĽš¤Č¤¤¤¨¤É¤âĄ˘ ĽťĽ­ĽĺĽęĽĆĽŁ¤äž¤Î˝ĹÍפʽ¤Ŕľ¤Î¤ż¤áĄ˘ťţ¤Ë¤ĎĽ˘ĽĂĽ×ĽÇĄźĽČ¤ňšÔ¤ŚÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ťČÍѤˇ¤Ć¤¤¤ëĽĐĄźĽ¸ĽçĽó¤Ë´Ř¤ď¤é¤şĄ˘&os; ¤ĎĄ˘ źę¸ľ¤ÎĽˇĽšĽĆĽŕ¤ňşÇżˇ¤ÎłŤČŻĽÄĽęĄź¤ČĆą´ü¤š¤ë¤ż¤á¤ËÉŹÍפʼĥźĽë¤ň¤š¤Ů¤ĆÍѰդˇ¤Ć¤¤¤Ţ¤šĄŁ ¤˝¤ˇ¤ĆĄ˘¤ł¤ě¤é¤ÎĽÄĄźĽë¤ĎĄ˘&os; ¤ÎĽĐĄźĽ¸ĽçĽó¤ňĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤š¤ë¤ż¤á¤ËťČ¤¨¤Ţ¤šĄŁ ¤ł¤ÎžĎ¤Ç¤ĎĄ˘łŤČŻĽÖĽéĽóĽÁ¤ňÄɤ¤¤Ť¤ą¤ëĘýËĄĄ˘¤Ş¤č¤ÓĄ˘&os; ĽˇĽšĽĆĽŕ¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë´đËÜĹŞ¤ĘĽÄĄźĽë¤Ë¤Ä¤¤¤Ć˛ňŔ⤡¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎžĎ¤ňĆɤó¤ÇĘŹ¤Ť¤ë¤Î¤Ď: ĽˇĽšĽĆĽŕ¤Č Ports Collection ¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČ¤ËÍѤ¤¤ëĽćĄźĽĆĽŁĽęĽĆĽŁ¤Ë¤Ä¤¤¤Ć freebsd-update, Subversion ¤â¤ˇ¤Ż¤Ď CTM ¤ňťČ¤Ă¤ż &os; ĽˇĽšĽĆĽŕ¤ÎššżˇĘýËĄ Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽˇĽšĽĆĽŕ¤ČĄ˘ĘŃšš¤ŹšÔ¤ď¤ě¤Ć¤¤¤Ę¤¤žőÂ֤ȤÎČćłÓĘýËĄĄŁ Subversion ¤Ţ¤ż¤ĎĽÉĽ­ĽĺĽáĽóĽČÍѤΠports ¤ňťČ¤Ă¤ĆĄ˘ Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽÉĽ­ĽĺĽáĽóĽČ¤ňşÇżˇ¤Î¤â¤Î¤ËĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ëĘýËĄĄŁ 2 ¤Ä¤ÎłŤČŻĽÖĽéĽóĽÁĄ˘&os.stable; ¤Č &os.current; ¤Î°ă¤¤ ĽŮĄźĽšĽˇĽšĽĆĽŕÁ´ÂΤňşĆš˝ĂۤˇĽ¤ĽóĽšĽČĄźĽë¤š¤ëĘýËĄ ¤ł¤ÎžĎ¤ňĆɤŕÁ°¤ËĄ˘°Ę˛ź¤Î˝ŕČ÷¤ň¤ˇ¤Ţ¤ˇ¤ç¤ŚĄŁ ĽÍĽĂĽČĽďĄźĽŻŔÜÂł¤ÎĹŹŔÚ¤ĘŔßÄę () ĽľĄźĽÉĽŃĄźĽĆĽŁŔ˝¤ÎĽ˝ĽŐĽČĽŚĽ§Ľ˘¤ÎĽ¤ĽóĽšĽČĄźĽëĘýËĄ¤Î˝ŹĆŔ () ¤ł¤ÎžĎ¤ňÄ̤¸¤ĆĄ˘ &os; ¤ÎĽ˝ĄźĽšĽłĄźĽÉ¤ňĽŔĽŚĽóĽíĄźĽÉ¤ˇ¤ż¤ęĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë¤Î¤Ë svn ¤ŹÍѤ¤¤é¤ě¤Ţ¤šĄŁ ¤ł¤ÎĽłĽŢĽóĽÉ¤ňťČ¤Ś¤ż¤á¤Ë¤ĎĄ˘devel/subversion port ¤Ţ¤ż¤Ď package ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤Ş¤ŻÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ Tom Rhodes ´óšĆ: Colin Percival ĽŮĄźĽš¤Č¤Ę¤Ă¤żĽÎĄźĽČ¤ÎÄóśĄ: &os; Update Updating and Upgrading freebsd-update updating-upgrading ĽťĽ­ĽĺĽęĽĆĽŁĽŃĽĂĽÁ¤ňĹŹÍѤš¤ë¤ł¤Č¤ĎĄ˘ĽłĽóĽÔĽĺĄźĽżĽ˝ĽŐĽČĽŚĽ§Ľ˘Ą˘ ĆĂ¤ËĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ň´ÉÍý¤š¤ëžĺ¤Ç˝ĹÍפĘĚňłä¤ň˛Ě¤ż¤ˇ¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇ¤Ę¤Ź¤éĄ˘&os; ¤Ë¤Ş¤¤¤Ć¤ĎĄ˘ ¤ł¤ÎĽ×ĽíĽťĽš¤Ď´ĘĂą¤Ę¤â¤Î¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó¤Ç¤ˇ¤żĄŁ Ľ˝ĄźĽšĽłĄźĽÉ¤ËĽŃĽĂĽÁ¤ňĹö¤ĆĄ˘ĽłĄźĽÉ¤Ť¤éĽĐĽ¤ĽĘĽę¤ňşĆš˝ĂۤˇĄ˘ ĽĐĽ¤ĽĘĽę¤ňşĆ¤ÓĽ¤ĽóĽšĽČĄźĽë¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤ˇ¤żĄŁ ¸˝şß¤Î &os; ¤Ç¤Ď freebsd-update ¤Č¸Ć¤Đ¤ě¤ëĽćĄźĽĆĽŁĽęĽĆĽŁ¤ŹÄɲ侤쥢žőśˇ¤ĎĘѤď¤ę¤Ţ¤ˇ¤żĄŁ ¤ł¤ÎĽćĄźĽĆĽŁĽęĽĆĽŁ¤Ď 2 ¤Ä¤ÎľĄÇ˝¤ňťý¤Ă¤Ć¤¤¤Ţ¤šĄŁ Âč°ě¤ËĄ˘&os; ĽŮĄźĽšĽˇĽšĽĆĽŕ¤ÎĽÓĽëĽÉ¤äĽ¤ĽóĽšĽČĄźĽë¤ňšÔ¤Ś¤ł¤Č¤Ę¤ŻĄ˘ ĽĐĽ¤ĽĘĽę¤Ë¤č¤Ă¤ĆĽťĽ­ĽĺĽęĽĆĽŁ¤Ş¤č¤Ó eratta Ľ˘ĽĂĽ×ĽÇĄźĽČ¤Ç¤­¤Ţ¤šĄŁ ÂčĆó¤ËĄ˘¤ł¤ÎĽćĄźĽĆĽŁĽęĽĆĽŁ¤ĎĽŢĽ¤ĽĘĄź¤Ş¤č¤ÓĽáĽ¸ĽăĄźĽęĽęĄźĽš¤ÎĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ĽĐĽ¤ĽĘĽęĽ˘ĽĂĽ×ĽÇĄźĽČ¤ĎĄ˘ ĽťĽ­ĽĺĽęĽĆĽŁĽÁĄźĽŕ¤ŹĽľĽÝĄźĽČ¤ˇ¤Ć¤¤¤ë¤š¤Ů¤Ć¤ÎĽ˘ĄźĽ­ĽĆĽŻĽÁĽă¤ČĽęĽęĄźĽš¤ÇÍřÍѤǤ­¤Ţ¤šĄŁ żˇ¤ˇ¤¤ĽęĽęĄźĽš¤ËĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ëÁ°¤ËĄ˘ Ľ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤č¤Ś¤Č¤ˇ¤Ć¤¤¤ëĽęĽęĄźĽš¤ÎĽ˘ĽĘĽŚĽóĽš¤ËĚܤňÄ̤ˇĄ˘ ˝ĹÍפʞđĘ󤏤ʤ¤¤Ť¤É¤Ś¤Ť¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽęĽęĄźĽš¤ÎĽ˘ĽĘĽŚĽóĽš¤Ď ¤ÇłÎǧ¤Ç¤­¤Ţ¤šĄŁ ¤â¤ˇ crontab ¤ÎĂć¤Ë &man.freebsd-update.8; ¤ÎľĄÇ˝¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤ż¤éĄ˘ °Ę˛ź¤ÎşîśČ¤ňšÔ¤Ś¤Ţ¤Ç¤ĎĚľ¸ú¤Ë¤ˇ¤Ć¤Ş¤¤¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ŔßÄęĽŐĽĄĽ¤Ľë /etc/freebsd-update.conf ¤ÎŔßÄę¤ňĽÇĽŐĽŠĽëĽČ¤Ť¤é¤­¤áşŮ¤Ť¤ŻÄ´Ŕ°¤ˇ¤ĆĄ˘ Ľ˘ĽĂĽ×ĽÇĄźĽČĽ×ĽíĽťĽš¤ňŔŠ¸ć¤š¤ëĽćĄźĽś¤â¤¤¤Ţ¤šĄŁ ¤ł¤ÎşîśČ¤ĎÎɤŻĘ¸˝ń˛˝¤ľ¤ě¤Ć¤¤¤Ţ¤š¤ŹĄ˘ °Ę˛ź¤ÎšŕĚܤˤĤ¤¤Ć¤ĎŔâĚŔ¤ŹÉŹÍפǤˇ¤ç¤ŚĄŁ # Components of the base system which should be kept updated. Components src world kernel ¤ł¤ÎĽŃĽéĽáĄźĽż¤ĎĄ˘&os; ¤Î¤É¤ÎÉôĘŹ¤ňşÇżˇ¤Ë°Ýťý¤š¤ë¤Ť¤ňŔßÄꤡ¤Ţ¤šĄŁ ĽÇĽŐĽŠĽëĽČ¤Ç¤ĎĽ˝ĄźĽšĽłĄźĽÉĄ˘ĽŮĄźĽšĽˇĽšĽĆĽŕÁ´ÂÎĄ˘¤˝¤ˇ¤ĆĽŤĄźĽÍĽë¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤Ţ¤šĄŁ Components ¤ËŔßÄę¤Ç¤­¤ëšŕĚܤϥ˘Ľ¤ĽóĽšĽČĄźĽëťţ¤ËÁŞÂň¤Ç¤­¤ë¤â¤Î¤ČĆą¤¸¤Ç¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘¤ł¤ł¤Ç world/games ¤ňÄɲ䚤ë¤ČĄ˘ game ¤ËĽŃĽĂĽÁ¤ŹĹö¤ż¤ë¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ src/bin ¤ňÄɲ䚤ë¤ČĄ˘ src/bin Ľ˝ĄźĽšĽłĄźĽÉ¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČ¤ňľö˛Ä¤ˇ¤Ţ¤šĄŁ ¤ł¤ÎÉôĘŹ¤Ë¤Ä¤¤¤Ć¤ĎĽÇĽŐĽŠĽëĽČ¤Î¤Ţ¤Ţ¤Ë¤ˇ¤Ć¤Ş¤­Ą˘ Ľ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ëšŕĚܤňĽćĄźĽś¤ŹĽęĽšĽČ¤Ë˛Ă¤¨¤ëˇÁ¤Ë¤š¤ë¤Î¤ŹĽŮĽšĽČ¤Ç¤ˇ¤ç¤ŚĄŁ Ľ˝ĄźĽšĽłĄźĽÉ¤ČĽĐĽ¤ĽĘĽę¤ŹĆą´ü¤ˇ¤Ć¤¤¤Ę¤¤¤ČĄ˘ Čáť´¤Ęˇë˛Ě¤ň¤â¤ż¤é¤š˛ÄÇ˝Ŕ­¤Ź¤˘¤ę¤Ţ¤šĄŁ # Paths which start with anything matching an entry in an IgnorePaths # statement will be ignored. IgnorePaths /bin ¤ä /sbin Ĺů¤ÎĆĂÄę¤ÎĽÇĽŁĽěĽŻĽČĽę¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤ÇĘŃšš¤ˇ¤Ę¤¤¤č¤Ś¤ËĄ˘ ¤ł¤ě¤é¤ÎĽŃĽš¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ĎĄ˘ĽíĄźĽŤĽë¤ÎĘŃššĹŔ¤ň freebsd-update ¤Źžĺ˝ń¤­¤š¤ë¤ł¤Č¤ňËɤ°ĚÜĹŞ¤Ë¤âÍřÍѤǤ­¤Ţ¤šĄŁ # Paths which start with anything matching an entry in an UpdateIfUnmodified # statement will only be updated if the contents of the file have not been # modified by the user (unless changes are merged; see below). UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ĎĄ˘ťŘÄꤡ¤żĽÇĽŁĽěĽŻĽČĽę¤Ë¤˘¤ëŔßÄęĽŐĽĄĽ¤Ľë¤ňĄ˘ ĽíĄźĽŤĽë¤ÇĘŃšš¤ľ¤ě¤Ć¤¤¤Ę¤¤žěšç¤Î¤ßĽ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤Ţ¤šĄŁ ĽćĄźĽś¤Ź¤ł¤ě¤é¤ÎĽŐĽĄĽ¤Ľë¤ňĘŃšš¤ˇ¤Ć¤¤¤ë¤ČĄ˘ ¤ł¤ě¤é¤ÎĽŐĽĄĽ¤Ľë¤ÎźŤĆ°Ľ˘ĽĂĽ×ĽÇĄźĽČ¤ĎĚľ¸ú¤Ë¤Ę¤ę¤Ţ¤šĄŁ ž¤ËĄ˘KeepModifiedMetadata ¤Č¤¤¤ŚĘĚ¤ÎĽŞĽ×ĽˇĽçĽó¤ŹÂ¸şß¤ˇ¤Ţ¤šĄŁ ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ĎĄ˘freebsd-update ¤ŹĽŢĄźĽ¸Ăć¤ËĘŃššĹŔ¤ňĘݸ¤š¤ë¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ # When upgrading to a new &os; release, files which match MergeChanges # will have any local changes merged into the version from the new release. MergeChanges /etc/ /var/named/etc/ freebsd-update ¤ŹĽŢĄźĽ¸¤š¤Ů¤­ĽŐĽĄĽ¤Ľë¤ŹÂ¸şß¤š¤ëĽÇĽŁĽěĽŻĽČĽę¤Î°ěÍ÷¤Ç¤šĄŁ ĽŐĽĄĽ¤Ľë¤ÎĽŢĄźĽ¸¤ÎĽ×ĽíĽťĽš¤ĎĄ˘ &man.mergemaster.8; ¤ČĆąÍÍ &man.diff.1; ĽŃĽĂĽÁ¤ÎϢ³¤Ç¤š¤ŹĄ˘ ÁŞÂňťč¤ĎžŻ¤Ę¤ŻĄ˘ĽŢĄźĽ¸¤ňžľÇ§¤š¤ë¤ŤĄ˘Ľ¨ĽÇĽŁĽż¤ňľŻĆ°¤š¤ë¤ŤĄ˘ freebsd-update ¤ňĂćĂǤš¤ë¤Ť¤É¤Ś¤Ť¤ňÁޤó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤â¤ˇĄ˘ż´ÇۤĘĹŔ¤Ź¤˘¤ě¤ĐĄ˘ /etc ¤ňĽĐĽĂĽŻĽ˘ĽĂĽ×¤ˇ¤Ć¤Ť¤éĽŢĄźĽ¸¤ňžľÇ§¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ mergemaster ¤ÎžÜşŮ¤ĘžđĘó¤Ë¤Ä¤¤¤Ć¤ĎĄ˘ ¤ÇłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ # Directory in which to store downloaded updates and temporary # files used by &os; Update. # WorkDir /var/db/freebsd-update ¤ł¤ł¤Ç¤Ď¤š¤Ů¤Ć¤ÎĽŃĽĂĽÁ¤ä°ěźĄĽŐĽĄĽ¤Ľë¤ňĂÖ¤ŻĽÇĽŁĽěĽŻĽČĽę¤ňťŘÄꤡ¤Ć¤¤¤Ţ¤šĄŁ ĽĐĄźĽ¸ĽçĽó¤ňĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤š¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘ ¤ł¤Îžě˝ę¤Ë¤ĎžŻ¤Ę¤Ż¤Č¤âĽŽĽŹĽĐĽ¤ĽČ¤Îśő¤­ÍĆÎ̤ŹÉŹÍ×¤Ç¤šĄŁ # When upgrading between releases, should the list of Components be # read strictly (StrictComponents yes) or merely as a list of components # which *might* be installed of which &os; Update should figure out # which actually are installed and upgrade those (StrictComponents no)? # StrictComponents no ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ň yes ¤ËŔßÄꤚ¤ë¤ČĄ˘ freebsd-update ¤Ď Components ¤ÎĽęĽšĽČ¤Ź´°Á´¤ËŔľ¤ˇ¤¤¤ČČ˝ĂǤˇĄ˘ ¤ł¤ÎĽęĽšĽČ°Ęł°¤ÎĘŃššĹŔ¤Ë¤Ä¤¤¤Ć¤Ďźč¤ę°ˇ¤¤¤Ţ¤ť¤óĄŁ freebsd-update ¤ĎĄ˘¸úΨŪ¤Ë Components ĽęĽšĽČ¤Ë°¤š¤ëĽŐĽĄĽ¤Ľë¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤Ţ¤šĄŁ ĽťĽ­ĽĺĽęĽĆĽŁĽŃĽĂĽÁ °Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ë¤ČĄ˘&os; ¤ÎĽťĽ­ĽĺĽęĽĆĽŁĽŃĽĂĽÁ¤ŹĽŔĽŚĽóĽíĄźĽÉ¤ľ¤ěĄ˘Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ţ¤šĄŁ &prompt.root; freebsd-update fetch &prompt.root; freebsd-update install Ľ˘ĽĂĽ×ĽÇĄźĽČ¤Ë¤č¤Ă¤ĆĽŤĄźĽÍĽë¤ËĽŃĽĂĽÁ¤ŹĹö¤ż¤Ă¤żžěšç¤Ë¤ĎĄ˘ ĽŃĽĂĽÁ¤ŹĹö¤ż¤Ă¤żĽŤĄźĽÍĽë¤ÇľŻĆ°¤š¤ë¤č¤Ś¤ËĄ˘ ĽˇĽšĽĆĽŕ¤ňşĆľŻĆ°¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤â¤ˇ¤Ż¤ĎĄ˘ĽˇĽšĽĆĽŕ¤ËĽŃĽĂĽÁ¤ŹĹö¤Ć¤é¤ěĄ˘ ËčČդΠ&man.cron.8; Ľ¸ĽçĽÖ¤Č¤ˇ¤ĆĄ˘freebsd-update ¤ňźÂšÔ¤š¤ë¤č¤Ś¤ËĄ˘ °Ę˛ź¤ÎĽ¨ĽóĽČĽę¤ň /etc/crobntab ¤ËÄɲ䎤äݤŔ¤ľ¤¤ĄŁ @daily root freebsd-update cron ¤ł¤ÎĽ¨ĽóĽČĽę¤ĎĄ˘ËčĆü°ěĹŮ freebsd-update ¤ňźÂšÔ¤š¤ë¤ł¤Č¤ň°ŐĚŁ¤ˇ¤Ţ¤šĄŁ ¤ČśŚ¤ËźÂšÔ¤š¤ë¤ČĄ˘ freebsd-update ¤ĎĽ˘ĽĂĽ×ĽÇĄźĽČ¤ŹÂ¸şß¤š¤ë¤Č¤­¤Ŕ¤ąłÎǧ¤ˇ¤Ţ¤šĄŁ ĽŃĽĂĽÁ¤ŹÂ¸şß¤š¤ë¤ČĄ˘ źŤĆ°ĹŞ¤ËĽíĄźĽŤĽëĽÇĽŁĽšĽŻ¤ËĽŔĽŚĽóĽíĄźĽÉ¤ľ¤ě¤Ţ¤š¤ŹĄ˘ĹŹÍѤϤľ¤ě¤Ţ¤ť¤óĄŁ ĽŔĽŚĽóĽíĄźĽÉ¤ľ¤ě¤żĽŃĽĂĽÁ¤ňłÎǧ¤ˇĄ˘źęư¤ÇĽ¤ĽóĽšĽČĄźĽë¤š¤ëÉŹÍפΤ˘¤ë¤ł¤Č¤ŹĄ˘ root °¸¤Ć¤ËĽáĄźĽë¤ÇÄĚĂΤľ¤ě¤Ţ¤šĄŁ ¤Ś¤Ţ¤ŻšÔ¤Ť¤Ę¤Ť¤Ă¤żžěšç¤Ë¤ĎĄ˘freebsd-update ¤ň°Ę˛ź¤Î¤č¤Ś¤ËźÂšÔ¤š¤ë¤ČĄ˘şÇ¸ĺ¤ÎĘŃšš¤Ţ¤ÇĽíĄźĽëĽĐĽĂĽŻ¤Ç¤­¤Ţ¤šĄŁ &prompt.root; freebsd-update rollback ĽŤĄźĽÍĽë¤Ţ¤ż¤ĎĽŤĄźĽÍĽëĽâĽ¸ĽĺĄźĽë¤ŹĽ˘ĽĂĽ×ĽÇĄźĽČ¤ľ¤ě¤żžěšç¤Ë¤ĎĄ˘ ´°Îť¸ĺ¤ËĽˇĽšĽĆĽŕ¤ňşĆľŻĆ°¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎşîśČ¤Ë¤č¤Ă¤ĆĄ˘&os; ¤ŹĽĐĽ¤ĽĘĽę¤ňĽáĽâĽę¤ËĆɤߚţ¤ß¤Ţ¤šĄŁ freebsd-update ĽćĄźĽĆĽŁĽęĽĆĽŁ¤ŹźŤĆ°ĹŞ¤ËĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ëĽŤĄźĽÍĽë¤Ď GENERIC ¤Î¤ß¤Ç¤šĄŁ ĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ŹĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëžěšç¤Ë¤ĎĄ˘ freebsd-update ¤ŹÂž¤ÎÉôĘŹ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤ż¸ĺĄ˘ ĽŤĄźĽÍĽë¤ňşĆš˝ĂۤˇĄ˘¤â¤Ś°ěĹŮĽ¤ĽóĽšĽČĄźĽë¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇ¤Ę¤Ź¤éĄ˘GENERIC ĽŤĄźĽÍĽë¤Ź /boot/GENERIC ¤Ë¸şß¤š¤ëžěšç¤Ë¤ĎĄ˘ ¸˝şß¤ÎĽˇĽšĽĆĽŕ¤ÇźÂšÔ¤ľ¤ě¤Ć¤¤¤ëĽŤĄźĽÍĽë¤Ç¤Ę¤Ż¤Č¤âĄ˘ freebsd-update ¤Ë¤č¤ęĽ˘ĽĂĽ×ĽÇĄźĽČ¤ľ¤ě¤Ţ¤šĄŁ GENERIC ĽŤĄźĽÍĽë¤ňĄ˘žď¤Ë /boot/GENERIC ¤ËĂÖ¤¤¤Ć¤Ş¤Ż¤ł¤Č¤ĎÎɤ¤šÍ¤¨¤Ç¤šĄŁ ¤ľ¤Ţ¤ś¤Ţ¤ĘĚäÂę¤ň˛ňˇč¤š¤ëşÝ¤äĄ˘ ¤ËŔâĚŔ¤ľ¤ě¤Ć¤¤¤ë¤č¤Ś¤ËĄ˘ freebsd-update ¤ňÍѤ¤¤ĆĽĐĄźĽ¸ĽçĽó¤ňĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤š¤ëşÝ¤Ë˝ő¤ą¤Č¤Ę¤ę¤Ţ¤šĄŁ /etc/freebsd-update.conf ¤ÎĽÇĽŐĽŠĽëĽČ¤ÎŔßÄę¤ňĘŃšš¤ˇ¤Ę¤¤¸Â¤ęĄ˘ freebsd-update ¤ĎĄ˘ ž¤Îššżˇ¤ČśŚ¤ËĽŤĄźĽÍĽëĽ˝ĄźĽš¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤Ţ¤šĄŁ żˇ¤ˇ¤¤ĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ÎşĆš˝ĂۤȺƼ¤ĽóĽšĽČĄźĽë¤ĎĄ˘ ÄĚžďÄ̤ęšÔ¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ freebsd-update ¤ĎĄ˘ žď¤ËĽŤĄźĽÍĽë¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë¤Č¤Ď¸Â¤ę¤Ţ¤ť¤óĄŁ freebsd-update install ¤Ë¤č¤Ă¤ĆĽŤĄźĽÍĽëĽ˝ĄźĽš¤ŹĘŃšš¤ľ¤ě¤Ę¤Ť¤Ă¤żžěšç¤Ë¤ĎĄ˘ ĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ňşĆš˝Ăۤš¤ëÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ ¤ˇ¤Ť¤ˇ¤Ę¤Ź¤é freebsd-update ¤ĎĄ˘ /usr/src/sys/conf/newvers.sh ¤ňžď¤ËĽ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤ĎĄ˘¸˝şß¤ÎĽˇĽšĽĆĽŕ¤ÎĽŃĽĂĽÁĽěĽŮĽë¤ň uname -r ¤Ź -p ¤ÇÉ˝ź¨¤š¤ëťţ¤Ë¤ł¤ÎĽŐĽĄĽ¤Ľë¤Źť˛žČ¤ľ¤ě¤Ţ¤šĄŁ ¤˝¤Î¤ż¤áĄ˘˛ż¤âĘŃšš¤ľ¤ě¤Ć¤¤¤Ę¤¤žěšç¤Ç¤âĄ˘ĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ňşĆš˝Ăۤš¤ë¤ł¤Č¤Ë¤č¤ęĄ˘ &man.uname.1; ¤ŹĽˇĽšĽĆĽŕ¤ÎŔľłÎ¤ĘĽŃĽĂĽÁĽěĽŮĽë¤ňĘóšđ¤š¤ë¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ łĆĽˇĽšĽĆĽŕ¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽ˘ĽĂĽ×ĽÇĄźĽČ¤ň¤š¤Đ¤ä¤ŻÇÄ°Ž¤Ç¤­¤ë¤č¤Ś¤Ë¤Ę¤ë¤Î¤ÇĄ˘ ĆäËĘŁżô¤ÎĽˇĽšĽĆĽŕ¤ň´ÉÍý¤š¤ë¤Č¤­¤Ë˝ő¤ą¤Č¤Ę¤ę¤Ţ¤šĄŁ ĽáĽ¸ĽăĄź¤Ş¤č¤ÓĽŢĽ¤ĽĘĄźĽĐĄźĽ¸ĽçĽó¤ÎĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ &os; ¤ÎĽŢĽ¤ĽĘĄźĽĐĄźĽ¸ĽçĽó´Ö¤ÎĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉĄ˘ ¤ż¤Č¤¨¤ĐĄ˘&os; 9.0 ¤Ť¤é &os; 9.1 ¤Ř¤ÎĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ĎĄ˘ ĽŢĽ¤ĽĘĄźĽĐĄźĽ¸ĽçĽó Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Č¸Ć¤Đ¤ě¤Ţ¤šĄŁ ÄĚžď¤ĎĄ˘ĽŢĽ¤ĽĘĄźĽĐĄźĽ¸ĽçĽó¤ÎĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ňšÔ¤Ă¤ż¸ĺ¤Ç¤âĄ˘ Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ĎĚäÂę¤Ę¤ŻĆ°¤­¤Ţ¤šĄŁ ĽáĽ¸ĽăĄźĽĐĄźĽ¸ĽçĽó Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ĎĄ˘ &os; 8.X ¤Ť¤é &os; 9.X ¤Ř¤ÎĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Č¤¤¤Ă¤żĄ˘ &os; ¤ÎĽáĽ¸ĽăĄźĽĐĄźĽ¸ĽçĽó¤ŹĘѤď¤ë¤č¤Ś¤ĘĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Î¤ł¤Č¤Ç¤šĄŁ ĽáĽ¸ĽăĄźĽĐĄźĽ¸ĽçĽó¤ÎĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Ç¤ĎĄ˘ ¸Ĺ¤¤ĽŞĽÖĽ¸Ľ§ĽŻĽČĽŐĽĄĽ¤Ľë¤äĽéĽ¤ĽÖĽéĽę¤Źşď˝ü¤ľ¤ěĄ˘ ¤ł¤ě¤é¤Ë°Í¸¤š¤ëÂż¤Ż¤ÎĽľĄźĽÉĽŃĄźĽĆĽŁŔ˝Ľ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ËąĆśÁ¤ňÍż¤¨¤ë˛ÄÇ˝Ŕ­¤Ź¤˘¤ę¤Ţ¤šĄŁ Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ë¤š¤Ů¤Ć¤Î ports ¤ňşď˝ü¤ˇ¤ĆşĆĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤ŤĄ˘ ĽáĽ¸ĽăĄźĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¸ĺĄ˘ ports-mgmt/portmaster ¤Č¤¤¤Ă¤żĽćĄźĽĆĽŁĽęĽĆĽŁ¤ňťČ¤Ă¤ĆĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤š¤ë¤ł¤Č¤ŹżäžŠ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ÎĽÖĽëĄźĽČĽŐĽŠĄźĽšĹŞ¤ĘşĆš˝Ăۤϥ˘ °Ę˛ź¤ÎĽłĽŢĽóĽÉ¤Ë¤č¤ęšÔ¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ &prompt.root; portmaster -af ¤ł¤ÎĽłĽŢĽóĽÉ¤ĎĄ˘¤š¤Ů¤Ć¤Î ports ¤ňĹŹŔڤ˺Ƽ¤ĽóĽšĽČĄźĽë¤ˇ¤č¤Ś¤Č¤ˇ¤Ţ¤šĄŁ BATCH ´Äś­ĘŃżô¤ň yes ¤ËŔßÄꤡ¤Ć¤Ş¤Ż¤ČĄ˘ Ľ˘ĽĂĽ×ĽÇĄźĽČĽ×ĽíĽťĽš¤ÎĹÓĂć¤ÎźÁĚä¤ËÂФˇ yes ¤ČĹú¤¨¤ë¤č¤Ś¤Ë¤Ę¤ë¤Î¤ÇĄ˘ ĽÓĽëĽÉĽ×ĽíĽťĽš¤Ç¤ÎźęưÁŕşî¤ňžĘÎŹ¤Ç¤­¤Ţ¤šĄŁ ĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤Îźč¤ę°ˇ¤¤ ĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ňťČÍѤˇ¤Ć¤¤¤ëžěšç¤Ë¤ĎĄ˘Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ÎĽ×ĽíĽťĽš¤ĎĄ˘ ´öĘŹĘŁť¨¤Č¤Ę¤ę¤Ţ¤šĄŁ Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Îźę˝ç¤Ď &os; ¤ÎĽĐĄźĽ¸ĽçĽó¤Ë¤č¤Ă¤ĆĘѤď¤ę¤Ţ¤šĄŁ &os; 8.X ¤Ë¤Ş¤ą¤ëĽŤĽšĽżĽŕĽŤĄźĽÍĽë GENERIC ĽŤĄźĽÍĽë¤Ź /boot/GENERIC ¤ËĂÖ¤Ť¤ě¤Ć¤¤¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤â¤ˇ GENERIC ĽŤĄźĽÍĽë¤ŹĽˇĽšĽĆĽŕ¤Ë¸şß¤ˇ¤Ę¤¤žěšç¤Ë¤ĎĄ˘ °Ę˛ź¤Î¤É¤ě¤Ť¤ÎĘýËĄ¤ÇÍѰդˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ż¤Ŕ°ěĹ٤Ŕ¤ąĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ňš˝Ăۤˇ¤ż¤Î¤Ç¤˘¤ě¤ĐĄ˘ /boot/kernel.old ¤Ď GENERIC ĽŤĄźĽÍĽë¤˝¤Î¤â¤Î¤Ç¤šĄŁ ¤ł¤ÎĽÇĽŁĽěĽŻĽČĽę¤ÎĚžÁ°¤ň /boot/GENERIC ¤Ř¤ČĘŃšš¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽłĽóĽÔĽĺĄźĽż¤Ř¤ÎĘŞÍýĹŞ¤ĘĽ˘ĽŻĽťĽš¤Ź˛ÄÇ˝¤Ç¤˘¤ě¤ĐĄ˘ °Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ë¤ł¤Č¤ÇĄ˘ Ľ¤ĽóĽšĽČĄźĽëĽáĽÇĽŁĽ˘¤Ť¤é GENERIC ĽŤĄźĽÍĽë¤ňĽ¤ĽóĽšĽČĄźĽë¤Ç¤­¤Ţ¤šĄŁ &prompt.root; mount /cdrom &prompt.root; cd /cdrom/X.Y-RELEASE/kernels &prompt.root; ./install.sh GENERIC ¤ł¤ł¤Ç X.Y-RELEASE ¤ňźÂşÝ¤ÎĽęĽęĄźĽšČÖšć¤ËĂÖ¤­´š¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ GENERIC ¤ĎĄ˘ĽÇĽŐĽŠĽëĽČ¤Ç /boot/GENERIC ¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ţ¤šĄŁ žĺľ­¤ÎĘýËĄ¤Ź¤š¤Ů¤ĆźşÇÔ¤š¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘ GENERIC ĽŤĄźĽÍĽë¤ňĽ˝ĄźĽš¤Ť¤éşĆš˝Ăۤˇ¤ĆĄ˘ Ľ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cd /usr/src &prompt.root; env DESTDIR=/boot/GENERIC make kernel __MAKE_CONF=/dev/null SRCCONF=/dev/null &prompt.root; mv /boot/GENERIC/boot/kernel/* /boot/GENERIC &prompt.root; rm -rf /boot/GENERIC/boot freebsd-update ¤ĎĄ˘¤ł¤ÎĽŤĄźĽÍĽë¤ň GENERIC ĽŤĄźĽÍĽë¤Č¤ˇ¤Ć°ˇ¤¤¤Ţ¤šĄŁ GENERIC ĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤ĎĄ˘ ¤Č¤Ë¤Ť¤ŻĘŃšš¤ˇ¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ ¤Ţ¤żĄ˘ĆĂĘĚ¤ĘĽŞĽ×ĽˇĽçĽó¤ňťŘÄꤡ¤Ę¤¤¤Çš˝Ăۤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎťţĹŔ¤Ç GENERIC ĽŤĄźĽÍĽë¤ÇşĆľŻĆ°¤š¤ëÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ &os; 9.X °Ęšß¤ÎĽˇĽšĽĆĽŕ¤Ë¤Ş¤ą¤ëĽŤĽšĽżĽŕĽŤĄźĽÍĽë ¤ż¤Ŕ°ěĹ٤Ŕ¤ąĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ňš˝Ăۤˇ¤ż¤Î¤Ç¤˘¤ě¤ĐĄ˘ /boot/kernel.old ¤Ď GENERIC ĽŤĄźĽÍĽë¤˝¤Î¤â¤Î¤Ç¤šĄŁ ¤ż¤ŔĂą¤Ë¤ł¤ÎĽÇĽŁĽěĽŻĽČĽę¤ÎĚžÁ°¤ň /boot/kernel ¤Ř¤ČĘŃšš¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽłĽóĽÔĽĺĄźĽż¤Ř¤ÎĘŞÍýĹŞ¤ĘĽ˘ĽŻĽťĽš¤Ź˛ÄÇ˝¤Ç¤˘¤ě¤ĐĄ˘ °Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ÇĄ˘Ľ¤ĽóĽšĽČĄźĽëĽáĽÇĽŁĽ˘¤Ť¤é GENERIC ĽŤĄźĽÍĽë¤ňĽ¤ĽóĽšĽČĄźĽë¤Ç¤­¤Ţ¤šĄŁ &prompt.root; mount /cdrom &prompt.root; cd /cdrom/usr/freebsd-dist &prompt.root; tar -C/ -xvf kernel.txz boot/kernel/kernel žĺľ­¤ÎĘýËĄ¤ŹźşÇÔ¤š¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘ GENERIC ĽŤĄźĽÍĽë¤ňĽ˝ĄźĽš¤Ť¤éşĆš˝Ăۤˇ¤ĆĄ˘ Ľ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cd /usr/src &prompt.root; make kernel __MAKE_CONF=/dev/null SRCCONF=/dev/null freebsd-update ¤ĎĄ˘¤ł¤ÎĽŤĄźĽÍĽë¤ň GENERIC ĽŤĄźĽÍĽë¤Č¤ˇ¤Ć°ˇ¤¤¤Ţ¤šĄŁ GENERIC ĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤ĎĄ˘ ¤Č¤Ë¤Ť¤ŻĘŃšš¤ˇ¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ ¤Ţ¤żĄ˘ĆĂĘĚ¤ĘĽŞĽ×ĽˇĽçĽó¤ňťŘÄꤡ¤Ę¤¤¤Çš˝Ăۤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎťţĹŔ¤Ç GENERIC ĽŤĄźĽÍĽë¤ÇşĆľŻĆ°¤š¤ëÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ňšÔ¤Ś freebsd-update ¤Ë¤č¤ëĽáĽ¸ĽăĄźĄ˘¤Ţ¤ż¤ĎĽŢĽ¤ĽĘĄźĽĐĄźĽ¸ĽçĽó¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČ¤Ç¤ĎĄ˘ ĽęĽęĄźĽšĽĐĄźĽ¸ĽçĽó¤ňĽżĄźĽ˛ĽĂĽČ¤Ë¤ˇ¤ĆźÂšÔ¤ˇ¤Ţ¤šĄŁ °Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ĎĄ˘&os; 9.1 ¤ËĽ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤Ţ¤šĄŁ &prompt.root; freebsd-update -r 9.1-RELEASE upgrade ĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ë¤ČĄ˘freebsd-update ¤ĎŔßÄęĽŐĽĄĽ¤Ľë¤Č¸˝şß¤ÎĽˇĽšĽĆĽŕ¤ňÉž˛Á¤ˇĄ˘ Ľ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë¤ż¤á¤ËÉŹÍפʞđĘó¤ňźý˝¸¤ˇ¤Ţ¤šĄŁ ˛čĚ̤ˤϥ˘¤É¤ÎĽłĽóĽÝĄźĽÍĽóĽČ¤ŹÇ§źą¤ľ¤ěĄ˘ ¤É¤ÎĽłĽóĽÝĄźĽÍĽóĽČ¤ŹÇ§źą¤ľ¤ě¤Ć¤¤¤Ę¤¤¤Č¤¤¤Ă¤żĽęĽšĽČ¤ŹÉ˝ź¨¤ľ¤ě¤Ţ¤šĄŁ ¤ż¤Č¤¨¤Đ°Ę˛ź¤Î¤č¤Ś¤ËÉ˝ź¨¤ľ¤ě¤Ţ¤šĄŁ Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching metadata signature for 9.0-RELEASE from update1.FreeBSD.org... done. Fetching metadata index... done. Inspecting system... done. The following components of FreeBSD seem to be installed: kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin world/base world/info world/lib32 world/manpages The following components of FreeBSD do not seem to be installed: kernel/generic world/catpages world/dict world/doc world/games world/proflibs Does this look reasonable (y/n)? y ¤ł¤ł¤ÇĄ˘freebsd-update ¤ĎĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ËÉŹÍפʤš¤Ů¤Ć¤ÎĽŐĽĄĽ¤Ľë¤ňĽŔĽŚĽóĽíĄźĽÉ¤ˇ¤Ţ¤šĄŁ ˛ż¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇĄ˘¤É¤Î¤č¤Ś¤ËżĘ¤ŕ¤Ť¤Č¤¤¤Ă¤żźÁĚä¤ň¤ľ¤ě¤ë¤ł¤Č¤â¤˘¤ę¤Ţ¤šĄŁ ĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ňťČ¤Ă¤Ć¤¤¤ë¤ČĄ˘ žĺľ­¤ÎĽšĽĆĽĂĽ×¤Ç°Ę˛ź¤Î¤č¤Ś¤ĘˇŮšđ¤ŹÉ˝ź¨¤ľ¤ě¤Ţ¤šĄŁ WARNING: This system is running a "MYKERNEL" kernel, which is not a kernel configuration distributed as part of FreeBSD 9.0-RELEASE. This kernel will not be updated: you MUST update the kernel manually before running "/usr/sbin/freebsd-update install" ¤ł¤ÎťţĹŔ¤Ç¤Ď¤ł¤ÎˇŮšđ¤ňĚľťë¤ˇ¤Ć¤â¤Ť¤Ţ¤¤¤Ţ¤ť¤óĄŁ Ľ˘ĽĂĽ×ĽÇĄźĽČ¤ľ¤ě¤ż GENERIC ĽŤĄźĽÍĽë¤ĎĄ˘ Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉĽ×ĽíĽťĽš¤ÎĹÓĂć¤ÇÍřÍѤľ¤ě¤Ţ¤šĄŁ ¤š¤Ů¤Ć¤ÎĽŃĽĂĽÁ¤ŹĽíĄźĽŤĽëĽˇĽšĽĆĽŕ¤ŘĽŔĽŚĽóĽíĄźĽÉ¤ľ¤ě¤ż¤éĄ˘ źĄ¤ËĽŃĽĂĽÁ¤ŹĹŹÍѤľ¤ě¤Ţ¤šĄŁ ¤ł¤ÎĽ×ĽíĽťĽš¤Ë¤Ďťţ´Ö¤Ź¤Ť¤Ť¤ę¤Ţ¤šĄŁ ¤ł¤Îťţ´Ö¤ĎĽłĽóĽÔĽĺĄźĽż¤ÎŔ­Ç˝¤ČĽďĄźĽŻĽíĄźĽÉ¤Ë°Í¸¤ˇ¤Ţ¤šĄŁ ¤˝¤Î¸ĺĄ˘ŔßÄęĽŐĽĄĽ¤Ľë¤ŹĽŢĄźĽ¸¤ľ¤ě¤Ţ¤šĄŁ ¤ł¤ÎĽ×ĽíĽťĽš¤Ç¤ĎĄ˘ĽćĄźĽś¤ĎĽŐĽĄĽ¤Ľë¤ňĽŢĄźĽ¸¤š¤ë¤ŤĄ˘ ˛čĚĚžĺ¤ËĽ¨ĽÇĽŁĽż¤ňΊ¤Ážĺ¤˛¤Ćźęư¤ÇĽŢĄźĽ¸¤š¤ë¤Ť¤ňżŇ¤Í¤é¤ě¤Ţ¤šĄŁ Ľ×ĽíĽťĽš¤ŹżĘ¤ŕ¤´¤Č¤ËĄ˘Ŕޏů¤ˇ¤żĽŢĄźĽ¸¤Î¤š¤Ů¤Ć¤Îˇë˛Ě¤ÎžđĘ󤏼楟Ľś¤Ëꍤľ¤ě¤Ţ¤šĄŁ ĽŢĄźĽ¸¤ËźşÇÔ¤ˇ¤ż¤ęĄ˘Ěľťë¤ˇ¤żžěšç¤Ë¤ĎĄ˘Ľ×ĽíĽťĽš¤ŹĂćĂǤˇ¤Ţ¤šĄŁ ĽćĄźĽś¤Ë¤č¤Ă¤Ć¤Ď /etc ¤ÎĽĐĽĂĽŻĽ˘ĽĂĽ×¤ňźč¤ęĄ˘ master.passwd ¤ä group ¤Î¤č¤Ś¤Ę˝ĹÍפʼռĄĽ¤Ľë¤ň¸ĺ¤Çźęư¤ÇĽŢĄźĽ¸¤š¤ëĘý¤â¤¤¤Ţ¤šĄŁ ¤š¤Ů¤Ć¤ÎĽŃĽĂĽÁ¤ĎĘĚ¤ÎĽÇĽŁĽěĽŻĽČĽę¤ÇĽŢĄźĽ¸¤ľ¤ě¤Ć¤Ş¤ęĄ˘ ¤Ţ¤ŔĄ˘ĽˇĽšĽĆĽŕ¤Ë¤ĎČżąÇ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ ¤š¤Ů¤Ć¤ÎĽŃĽĂĽÁ¤ŹŔľ¤ˇ¤ŻĹŹÍѤľ¤ěĄ˘ ¤š¤Ů¤Ć¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤ŹĽŢĄźĽ¸¤ľ¤ě¤ĆĽ×ĽíĽťĽš¤ŹĽšĽŕĄźĽş¤ËżĘ¤ó¤Ŕ¤éĄ˘ ĽćĄźĽś¤Ď°Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňÍѤ¤¤ĆĄ˘ ĘŃššĹŔ¤ňĽÇĽŁĽšĽŻ¤ËČżąÇ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; freebsd-update install ĽŃĽĂĽÁ¤ĎşÇ˝é¤ËĽŤĄźĽÍĽë¤ČĽŤĄźĽÍĽëĽâĽ¸ĽĺĄźĽë¤ËÂФˇ¤ĆĹö¤Ć¤é¤ě¤Ţ¤šĄŁ ¤ł¤ł¤ÇĽłĽóĽÔĽĺĄźĽż¤ňşĆľŻĆ°¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ĽˇĽšĽĆĽŕ¤ŹĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ňźÂšÔ¤ˇ¤Ć¤¤¤ëžěšç¤Ë¤ĎĄ˘ &man.nextboot.8; ¤ňťČ¤Ă¤ĆźĄ˛ó¤ÎşĆľŻĆ°ťţ¤ÎĽŤĄźĽÍĽë¤ňĄ˘ Ľ˘ĽĂĽ×ĽÇĄźĽČ¤ľ¤ě¤ż /boot/GENERIC ¤ËŔßÄꤡ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; nextboot -k GENERIC GENERIC ĽŤĄźĽÍĽë¤ÇşĆľŻĆ°¤š¤ëÁ°¤ËĄ˘ ĽŤĄźĽÍĽë¤ËĽˇĽšĽĆĽŕ¤ŹĹŹŔڤ˾ŻĆ°¤š¤ë¤ż¤á¤ËÉŹÍפʤš¤Ů¤Ć¤ÎĽÉĽéĽ¤ĽĐ¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤ë¤ł¤ČĄ˘ ¤â¤ˇĽ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤Ć¤¤¤ëĽłĽóĽÔĽĺĄźĽż¤ŹĽęĽâĄźĽČ¤ÇĽ˘ĽŻĽťĽš¤ˇ¤Ć¤¤¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘ ĽÍĽĂĽČĽďĄźĽŻŔÜÂł¤ËÉŹÍפʤš¤Ů¤Ć¤ÎĽÉĽéĽ¤ĽĐ¤â´Ţ¤Ţ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Ćä˥˘¤ł¤ě¤Ţ¤ÇźÂšÔ¤ˇ¤Ć¤¤¤ëĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ŹĄ˘ ĽŤĄźĽÍĽëĽâĽ¸ĽĺĄźĽë¤Č¤ˇ¤ĆÄ󜥤ľ¤ě¤Ć¤¤¤ëĽÓĽëĽÉĽ¤Ľó¤ÎľĄÇ˝¤ň´Ţ¤ó¤Ç¤¤¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘ ¤ł¤ě¤é¤ÎĽâĽ¸ĽĺĄźĽë¤ň°ěťţĹŞ¤Ë /boot/loader.conf ¤ÎľĄÇ˝¤ňÍѤ¤¤ĆĄ˘ GENERIC ¤ËĆɤߚţ¤ó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉĽ×ĽíĽťĽš¤Ź˝Ş¤ď¤ë¤Ţ¤Ç¤ĎĄ˘ ˝ĹÍפǤϤʤ¤ĽľĄźĽÓĽš¤ňĚľ¸ú¤Ë¤š¤ë¤Č¤Č¤â¤ËĄ˘ ÉŹÍפΤʤ¤ĽÇĽŁĽšĽŻ¤äĽÍĽĂĽČĽďĄźĽŻ¤ÎĽŢĽŚĽóĽČ¤Ę¤É¤âČň¤ą¤ë¤ł¤Č¤ŹżäžŠ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ Ľ˘ĽĂĽ×ĽÇĄźĽČ¤ľ¤ě¤żĽŤĄźĽÍĽë¤ÇĽłĽóĽÔĽĺĄźĽż¤ňşĆľŻĆ°¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; shutdown -r now ĽˇĽšĽĆĽŕ¤ŹĽŞĽóĽéĽ¤Ľó¤ËĚá¤Ă¤ż¤éĄ˘°Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňťČ¤Ă¤Ć freebsd-update ¤ňşĆ¤ÓźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Ľ˘ĽĂĽ×ĽÇĄźĽČĽ×ĽíĽťĽš¤ÎžőÂÖ¤ĎĘݸ¤ľ¤ě¤Ć¤¤¤ë¤Î¤ÇĄ˘ freebsd-update ¤ňźÂšÔ¤š¤ë¤ČĄ˘şÇ˝é¤Ť¤é¤Ç¤Ď¤Ę¤ŻĄ˘ ¸Ĺ¤¤śŚÍ­ĽéĽ¤ĽÖĽéĽę¤ČĽŞĽÖĽ¸Ľ§ĽŻĽČĽŐĽĄĽ¤Ľë¤ňşď˝ü¤š¤ëĽ×ĽíĽťĽš¤Ť¤éťĎ¤Ţ¤ę¤Ţ¤šĄŁ &prompt.root; freebsd-update install ťČÍѤˇ¤Ć¤¤¤ëĽéĽ¤ĽÖĽéĽę¤ÎĽĐĄźĽ¸ĽçĽóČÖšć¤ÎÉŐ¤ą¤é¤ěĘý¤Ë¤č¤Ă¤ĆĄ˘ 3 ¤Ä¤ÎĽ¤ĽóĽšĽČĄźĽëĽŐĽ§ĄźĽş¤Ź 2 ¤Ä¤Ë¤Ę¤ëžěšç¤â¤˘¤ę¤Ţ¤šĄŁ ĽáĽ¸ĽăĄźĽĐĄźĽ¸ĽçĽóĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¸ĺ¤Î ports ¤ÎşĆš˝ĂŰ ĽáĽ¸ĽăĄźĽĐĄźĽ¸ĽçĽóĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ňšÔ¤Ă¤ż¸ĺ¤Ç¤ĎĄ˘ ¤š¤Ů¤Ć¤ÎĽľĄźĽÉĽŃĄźĽĆĽŁŔ˝¤ÎĽ˝ĽŐĽČĽŚĽ§Ľ˘¤ňşĆš˝ĂۤˇĄ˘ şĆĽ¤ĽóĽšĽČĄźĽë¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤ł¤ÎşîśČ¤ŹÉŹÍפʤΤϥ˘Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽ˝ĽŐĽČĽŚĽ§Ľ˘¤ŹĄ˘ Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ÎşÝ¤Ëşď˝ü¤ľ¤ě¤żĽéĽ¤ĽÖĽéĽę¤Ë°Í¸¤ˇ¤Ć¤¤¤ë˛ÄÇ˝Ŕ­¤Ź¤˘¤ë¤ż¤á¤Ç¤šĄŁ ports-mgmt/portupgrade ¤ĎĄ˘¤ł¤ÎĽ×ĽíĽťĽš¤ňźŤĆ°˛˝¤ˇ¤Ţ¤šĄŁ &prompt.root; portmaster -f ¤ł¤ÎşîśČ¤Î˝ŞÎť¸ĺĄ˘şÇ¸ĺ¤Ë¤â¤Ś°ěĹŮ freebsd-update ¤ňźÂšÔ¤ˇ¤ĆĄ˘ ¤š¤Ů¤Ć¤ÎĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉĽ×ĽíĽťĽš¤Î¤ä¤ęťÄ¤ˇşîśČ¤ňšÔ¤¤Ą˘ Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ÎĽ×ĽíĽťĽš¤ň´°Îť¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; freebsd-update install GENERIC ĽŤĄźĽÍĽë¤ň°ěťţĹŞ¤ËĆɤߚţ¤ó¤Ç¤¤¤ż¤Î¤Ç¤˘¤ě¤ĐĄ˘ ¤ł¤ł¤ÇĄ˘ÄĚžď¤ÎĘýËĄ¤ňÍѤ¤¤Ćżˇ¤ˇ¤¤ĽŤĽšĽżĽŕ¤ňš˝ĂۤˇĄ˘Ľ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽłĽóĽÔĽĺĄźĽż¤ňşĆľŻĆ°¤ˇĄ˘żˇ¤ˇ¤¤ &os; ¤ňΊ¤Ážĺ¤˛¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ě¤ÇĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ÎĽ×ĽíĽťĽš¤Ď´°Îť¤Ç¤šĄŁ ĽˇĽšĽĆĽŕ¤ÎžőÂÖ¤ÎČćłÓ freebsd-update ¤ňÍѤ¤¤ĆĄ˘ Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ë &os; ¤ÎžőÂ֤ȥ˘ Ŕľ¤ˇ¤ŻĆ°şî¤š¤ë¤ł¤Č¤ŹĘʤŤ¤Ă¤Ć¤¤¤ëžőÂ֤ȤňČćłÓ¤Ç¤­¤Ţ¤šĄŁ ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ĎĄ˘ĽˇĽšĽĆĽŕ¤ÎĽćĄźĽĆĽŁĽęĽĆĽŁĄ˘ĽéĽ¤ĽÖĽéĽęĄ˘ ŔßÄęĽŐĽĄĽ¤Ľë¤ňÉž˛Á¤ˇ¤Ţ¤šĄŁ ČćłÓ¤ňšÔ¤Ś¤Ë¤ĎĄ˘°Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; freebsd-update IDS >> outfile.ids ĽłĽŢĽóĽÉĽéĽ¤ĽóĚž¤Ď IDS ¤Ç¤š¤ŹĄ˘ security/snort ¤Î¤č¤Ś¤ĘżŻĆţ¸ĄĂÎĽˇĽšĽĆĽŕ¤ÎËÜĹö¤ÎĂÖ¤­´š¤¨¤Ë¤Ę¤ë¤â¤Î¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ freebsd-update ¤ĎĽÇĄźĽż¤ňĽÇĽŁĽšĽŻ¤ËĘݸ¤š¤ë¤Î¤ÇĄ˘ ÉÔŔľ¤ĘĘŃšš¤ŹšÔ¤ď¤ě¤ë˛ÄÇ˝Ŕ­¤Ź¤˘¤ę¤Ţ¤šĄŁ kern.securelevel ¤ČĄ˘ freebsd-update ¤ÎĽÇĄźĽż¤ňťČÍѤˇ¤Ę¤¤¤Č¤­¤ËĄ˘ Ćɤߟč¤ę¤Î¤ß¤Îľö˛Ä°Ŕ­¤ËŔßÄꤾ¤ě¤Ć¤¤¤ëĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ËĂ֤ݤł¤Č¤ÇĄ˘ ÉÔŔľ¤ĘĘŃšš¤Î˛ÄÇ˝Ŕ­¤ňÄ㤯¤Ç¤­¤Ţ¤š¤ŹĄ˘ ¤č¤ę¤č¤¤˛ňˇčĘýËĄ¤ĎĄ˘ DVD ¤Ţ¤ż¤Ď°ÂÁ´¤ËĘݸ¤ľ¤ě¤Ć¤¤¤ëł°Éô USB ĽÇĽŁĽšĽŻ¤Î¤č¤Ś¤Ę°ÂÁ´¤ĘĽÇĽŁĽšĽŻ¤ČĽˇĽšĽĆĽŕ¤ňČćłÓ¤š¤ë¤ł¤Č¤Ç¤šĄŁ ¤ł¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ë¤ČĄ˘ĽˇĽšĽĆĽŕ¤Ď¸Ąşş¤ľ¤ěĄ˘ ĽęĽęĄźĽšĽŐĽĄĽ¤Ľë¤Î &man.sha256.1; ĽĎĽĂĽˇĽĺĂͤȸ˝şßĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽŐĽĄĽ¤Ľë¤ÎĽĎĽĂĽˇĽĺĂÍ¤ŹĽŐĽĄĽ¤Ľë¤Î°ěÍ÷¤ČśŚ¤ËĄ˘ťŘÄꤡ¤ż outfile.ids ĽŐĽĄĽ¤Ľë¤ËÁ÷¤é¤ě¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎšÔ¤ĎśË¤á¤ĆÄš¤¤¤Î¤Ç¤š¤ŹĄ˘˝ĐÎϡÁź°¤Ď´ĘĂą¤Ë¤š¤°¤Ë˛ňŔϤǤ­¤Ţ¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘¤ł¤ě¤é¤ÎĽęĽęĄźĽš¤Ç°Ű¤Ę¤Ă¤Ć¤¤¤ë¤š¤Ů¤Ć¤ÎĽŐĽĄĽ¤Ľë¤ňĂΤꤿ¤¤¤Î¤Ç¤˘¤ě¤ĐĄ˘ °Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cat outfile.ids | awk '{ print $1 }' | more /etc/master.passwd /etc/motd /etc/passwd /etc/pf.conf žĺ¤ÎÉ˝ź¨Îă¤Ç¤Ď˝ĐÎϤĎŔÚ¤ęźÎ¤Ć¤é¤ě¤Ć¤Ş¤ęĄ˘ źÂşÝ¤Ë¤Ď¤â¤Ă¤ČÂż¤Ż¤ÎĽŐĽĄĽ¤Ľë¤ŹÂ¸şß¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĽŐĽĄĽ¤Ľë¤Ë¤ĎĄ˘ążÍŃĂć¤ËĘŃšš¤ľ¤ě¤ëĽŐĽĄĽ¤Ľë¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘/etc/passwd ¤ĎĽćĄźĽś¤ŹĽˇĽšĽĆĽŕ¤ËÄɲ侤ě¤ë¤ČĘŃšš¤ľ¤ě¤Ţ¤šĄŁ ¤Ţ¤żĄ˘ĽŤĄźĽÍĽëĽâĽ¸ĽĺĄźĽë¤Î¤č¤Ś¤ĘĽŐĽĄĽ¤Ľë¤ĎĄ˘ freebsd-update ¤Ë¤č¤ęĽ˘ĽĂĽ×ĽÇĄźĽČ¤ľ¤ě¤ë¤ż¤áĄ˘ĘŃšš¤ľ¤ě¤Ţ¤šĄŁ ¤ł¤Î¤č¤Ś¤ĘĆĂĘ̤ʼռĄĽ¤Ľë¤äĽÇĽŁĽěĽŻĽČĽę¤ň˝üł°¤š¤ë¤Ë¤ĎĄ˘ ¤˝¤ě¤é¤ň /etc/freebsd-update.conf ¤Î IDSIgnorePaths ĽŞĽ×ĽˇĽçĽó¤ËÄɲ䎤äݤŔ¤ľ¤¤ĄŁ °ĘÁ°¤ËľÄĎŔ¤ˇ¤żĘýËĄ¤Č¤ĎĘ̤˥˘ ¤ł¤ÎĽˇĽšĽĆĽŕ¤ňĆţǰ¤ĘĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉĘýËĄ¤Î°ěÉô¤Č¤ˇ¤ĆÍѤ¤¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ Tom Rhodes ´óšĆ: Colin Percival ĽŮĄźĽš¤Č¤Ę¤Ă¤żĽÎĄźĽČ¤ÎÄóśĄ: Portsnap: Ports Collection Ľ˘ĽĂĽ×ĽÇĄźĽČĽÄĄźĽë Ľ˘ĽĂĽ×ĽÇĄźĽČ¤ČĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ Portsnap Ľ˘ĽĂĽ×ĽÇĄźĽČ¤ČĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ &os; ¤ÎĽŮĄźĽšĽˇĽšĽĆĽŕ¤Ë¤ĎĄ˘ Ports Collection ¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë &man.portsnap.8; ¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ÎĽćĄźĽĆĽŁĽęĽĆĽŁ¤ĎĄ˘&os; ¤ÎĽľĽ¤ĽČ¤ËŔÜÂł¤ˇĄ˘ĽťĽ­ĽĺĽęĽĆĽŁĽ­Ąź¤ň¸ĄžÚ¤ˇĄ˘ Ports Collection ¤ÎşÇżˇČǤňĽŔĽŚĽóĽíĄźĽÉ¤ˇ¤Ţ¤šĄŁ ĽťĽ­ĽĺĽęĽĆĽŁĽ­Ąź¤ĎĄ˘ ĽŔĽŚĽóĽíĄźĽÉ¤ˇ¤ż¤š¤Ů¤Ć¤ÎĽŐĽĄĽ¤Ľë¤Î¸ĄžÚ¤ËÍѤ¤¤é¤ě¤Ţ¤šĄŁ şÇżˇ¤Î Ports Collection ĽŐĽĄĽ¤Ľë¤ňĽŔĽŚĽóĽíĄźĽÉ¤š¤ë¤Ë¤ĎĄ˘ °Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; portsnap fetch Looking up portsnap.FreeBSD.org mirrors... 9 mirrors found. Fetching snapshot tag from geodns-1.portsnap.freebsd.org... done. Fetching snapshot metadata... done. Updating from Tue May 22 02:12:15 CEST 2012 to Wed May 23 16:28:31 CEST 2012. Fetching 3 metadata patches.. done. Applying metadata patches... done. Fetching 3 metadata files... done. Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done. Applying patches... done. Fetching 133 new ports or files... done. ¤ł¤ÎÎă¤Ç¤ĎĄ˘&man.portsnap.8; ¤Ź¸˝şß¤Î ports ¤ËÂФš¤ëĽŃĽĂĽÁ¤ň¸Ť¤Ä¤ąĄ˘¸ĄžÚ¤ˇ¤ż¤ł¤Č¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ ¤Ţ¤żĄ˘ĽćĄźĽĆĽŁĽęĽĆĽŁ¤Ď°ĘÁ°¤ËźÂšÔ¤ˇ¤Ć¤¤¤ë¤ł¤Č¤âꍤˇ¤Ć¤¤¤Ţ¤šĄŁ ¤â¤ˇ˝é¤á¤ĆźÂšÔ¤ˇ¤ż¤Î¤Ç¤˘¤ě¤ĐĄ˘Ports Collection ¤ÎĽŔĽŚĽóĽíĄźĽÉ¤Î¤ß¤ŹšÔ¤ď¤ě¤Ţ¤šĄŁ &man.portsnap.8; ¤Ź fetch ¤ËŔޏů¤š¤ë¤ČĄ˘ ¸ĄžÚ¤ňÄ̤äż Ports Collection ¤ČĄ˘ ¤˝¤ě¤ËÂł¤ŻĽŃĽĂĽÁ¤ŹĽíĄźĽŤĽëĽˇĽšĽĆĽŕ¤Ë¸şß¤ˇ¤Ţ¤šĄŁ ¤Ď¤¸¤á¤Ć portsnap ¤ňźÂšÔ¤ˇ¤żťţ¤Ë¤ĎĄ˘ extract ¤ňťČ¤Ă¤ĆĄ˘ ĽŔĽŚĽóĽíĄźĽÉ¤ˇ¤żĽŐĽĄĽ¤Ľë¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; portsnap extract /usr/ports/.cvsignore /usr/ports/CHANGES /usr/ports/COPYRIGHT /usr/ports/GIDs /usr/ports/KNOBS /usr/ports/LEGAL /usr/ports/MOVED /usr/ports/Makefile /usr/ports/Mk/bsd.apache.mk /usr/ports/Mk/bsd.autotools.mk /usr/ports/Mk/bsd.cmake.mk ... ¤š¤Ç¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ë Ports Collection ¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë¤Ë¤ĎĄ˘ portsnap update ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; portsnap update ¤ł¤ě¤ÇĽ˘ĽĂĽ×ĽÇĄźĽČĽ×ĽíĽťĽš¤Ď´°Îť¤ˇ¤Ţ¤ˇ¤żĄŁ ššżˇ¤ľ¤ě¤ż Ports Collection ¤ňťČ¤Ă¤ĆĄ˘ Ľ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤ż¤ęĄ˘ Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Ç¤­¤Ţ¤šĄŁ fetch ¤ňťČ¤Śžěšç¤Ë¤ĎĄ˘ extract ¤Ş¤č¤Ó update ¤ňϢ³¤ˇ¤ĆšÔ¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ &prompt.root; portsnap fetch update ¤ł¤ÎĽłĽŢĽóĽÉ¤Ë¤č¤ęşÇżˇ¤Î Ports Collection ¤ŹĽŔĽŚĽóĽíĄźĽÉ¤ľ¤ěĄ˘ /usr/ports °Ę˛ź¤Ë¤˘¤ëĽíĄźĽŤĽë¤Î Ports Collection ¤ŹĽ˘ĽĂĽ×ĽÇĄźĽČ¤ľ¤ě¤Ţ¤šĄŁ ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČ Updating and Upgrading Documentation Updating and Upgrading ĽÉĽ­ĽĺĽáĽóĽČ¤ĎĄ˘&os; ĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ÎÉŹżÜÍ×ÁÇ¤Ç¤šĄŁ &os; ĽÉĽ­ĽĺĽáĽóĽČĽťĽĂĽČ¤ÎşÇżˇĽĐĄźĽ¸ĽçĽó¤ĎĄ˘&os; ĽŚĽ§ĽÖĽľĽ¤ĽČ ¤Ť¤éĆţźę¤Ç¤­¤Ţ¤š¤ŹĄ˘ ĽÍĽĂĽČĽďĄźĽŻŔÜÂł¤ŹĂ٤¤Ą˘¤â¤ˇ¤Ż¤Ď¤Ţ¤Ă¤ż¤ŻŔÜÂł¤Ç¤­¤Ę¤¤ĽćĄźĽś¤â¤¤¤Ţ¤šĄŁ ĽíĄźĽŤĽë¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤ňşÇżˇ¤Î &os; ĽÉĽ­ĽĺĽáĽóĽČĽťĽĂĽČ¤ËĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ëĘýËĄ¤Ź¤¤¤Ż¤Ä¤âÍѰդľ¤ě¤Ć¤¤¤Ţ¤šĄŁ <application>Subversion</application> ¤ňÍѤ¤¤żĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČĘýËĄ &os; ¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˝ĄźĽš¤ĎĄ˘ svn ¤ňÍѤ¤¤ĆĆţźę¤Ç¤­¤Ţ¤šĄŁ ¤ł¤ÎŔá¤Ç¤Ď°Ę˛ź¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ ĽÉĽ­ĽĺĽáĽóĽČĽÄĄźĽëĽÁĽ§Ľ¤Ľó¤ÎĽ¤ĽóĽšĽČĄźĽëĘýËĄĄŁ ¤ł¤ÎĽÄĄźĽë¤ĎĄ˘&os; ¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤ňĽ˝ĄźĽš¤Ť¤éşĆš˝Ăۤš¤ë¤Î¤ËÉŹÍ×¤Ç¤šĄŁ svn ¤ňÍѤ¤¤ĆĄ˘ ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˝ĄźĽš¤ň /usr/doc °Ę˛ź¤ËĽŔĽŚĽóĽíĄźĽÉ¤š¤ëĘýËĄĄŁ &os; ĽÉĽ­ĽĺĽáĽóĽČ¤ňĽ˝ĄźĽš¤Ť¤éşĆš˝ĂۤˇĄ˘ /usr/share/doc °Ę˛ź¤ËĽ¤ĽóĽšĽČĄźĽë¤š¤ëĘýËĄĄŁ ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽÓĽëĽÉĽˇĽšĽĆĽŕ¤Ë¤Ş¤¤¤ĆĽľĽÝĄźĽČ¤ľ¤ě¤Ć¤¤¤ëĽÓĽëĽÉĽŞĽ×ĽˇĽçĽó¤ÎŔâĚŔĄŁ ¤ż¤Č¤¨¤ĐĄ˘ËÝĚő¤ľ¤ě¤żĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó¤Î¤ß¤ňš˝Ăۤš¤ëĽŞĽ×ĽˇĽçĽó¤äĄ˘ ¤˘¤ëĆĂÄę¤Î˝ĐÎĎĽŐĽŠĄźĽŢĽĂĽČ¤ňťŘÄꤚ¤ë¤č¤Ś¤ĘĽŞĽ×ĽˇĽçĽó¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ <application>svn</application> ¤Ş¤č¤ÓĽÉĽ­ĽĺĽáĽóĽČĽÄĄźĽëĽÁĽ§Ľ¤Ľó¤ÎĽ¤ĽóĽšĽČĄźĽë &os; ¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤ňĽ˝ĄźĽš¤Ť¤éşĆš˝Ăۤš¤ë¤Ë¤ĎĄ˘ ĽÄĄźĽë¤ÎĽłĽěĽŻĽˇĽçĽó¤ŹÉŹÍ×¤Ç¤šĄŁ ¤ł¤ě¤é¤ÎĽÄĄźĽë¤ĎÂż¤Ż¤ÎĽÇĽŁĽšĽŻÍĆÎ̤ňťČÍѤš¤ë¤ż¤áĄ˘ &os; ĽŮĄźĽšĽˇĽšĽĆĽŕ¤Î°ěÉô¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ¤Ţ¤żĄ˘¤š¤Ů¤Ć¤Î &os; ĽćĄźĽś¤Ë¤Č¤Ă¤ĆÍ­ÍѤȤ¤¤Ś¤ď¤ą¤Ç¤Ď¤Ę¤ŻĄ˘&os; ¤Î¤ż¤á¤Ëżˇ¤ˇ¤¤ĽÉĽ­ĽĺĽáĽóĽČ¤ňłčČŻ¤ËźšÉޤˇ¤Ć¤¤¤ëĘý¤äĄ˘ ÉŃČˤ˼ɼ­ĽĺĽáĽóĽČ¤ňĽ˝ĄźĽš¤Ť¤éĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ëĘý¤Ë¸ţ¤ą¤ż¤â¤Î¤Ç¤šĄŁ svn ¤ň´Ţ¤áÉŹÍפʼĥźĽë¤ĎĄ˘ textproc/docproj ĽáĽż port ¤Ť¤éĽ¤ĽóĽšĽČĄźĽë¤Ç¤­¤Ţ¤šĄŁ¤ł¤Î port ¤ĎĄ˘ &os; ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽóĽ×ĽíĽ¸Ľ§ĽŻĽČ¤Ë¤č¤ęłŤČݤľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽÉĽ­ĽĺĽáĽóĽČ¤Î &postscript; ¤ä PDF ČǤŹÉŹÍפʤą¤ě¤ĐĄ˘¤Ť¤ď¤ę¤Ë textproc/docproj-nojadetex ¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤ł¤Č¤âšÍ¤¨¤Ć¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ÎĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó¤ÎĽÄĄźĽëĽÁĽ§Ľ¤Ľó¤ĎĄ˘ teTeX ¤Č¸Ć¤Đ¤ě¤ëÁČČÇĽ¨ĽóĽ¸Ľó¤ň˝ü¤¤¤ż¤š¤Ů¤Ć¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ţ¤šĄŁ teTeX ¤ĎÂ礭¤ĘĽÄĄźĽë¤ÎĽłĽěĽŻĽˇĽçĽó¤Ç¤šĄŁ ¤˝¤Î¤ż¤áĄ˘¤â¤ˇ PDF ˝ĐÎϤňËÜĹö¤ËÉŹÍפȤˇ¤Ę¤ą¤ě¤ĐĄ˘ ¤ł¤ÎĽÄĄźĽë¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ę¤¤¤ł¤Č¤Ď¤Č¤Ć¤â¸­ĚŔ¤Ç¤šĄŁ ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˝ĄźĽš¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë °Ę˛ź¤ÎÎă¤Ç¤ĎĄ˘svn ¤ňťČ¤Ă¤Ć western US ĽßĽéĄź¤Ť¤é HTTPS Ľ×ĽíĽČĽłĽë¤ňÍѤ¤¤ĆĄ˘ ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˝ĄźĽš¤ňĽŔĽŚĽóĽíĄźĽÉ¤ˇ¤Ţ¤šĄŁ &prompt.root; svn checkout https://svn0.us-west.FreeBSD.org/doc/head /usr/doc ÍřÍѲÄÇ˝¤Ę Subversion ĽßĽéĄźĽľĽ¤ĽČ ¤ÎĂ植¤é¤â¤Ă¤Č¤âśá¤¤ĽßĽéĄź¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ şÇ˝é¤ËĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˝ĄźĽš¤ňĽŔĽŚĽóĽíĄźĽÉ¤š¤ë¤Ë¤ĎžŻ¤ˇťţ´Ö¤Ź¤Ť¤Ť¤ę¤Ţ¤šĄŁ ĽŔĽŚĽóĽíĄźĽÉ¤Ź˝Ş¤ď¤ë¤Ţ¤Ç¤ŞÂÔ¤Á¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŔĽŚĽóĽíĄźĽÉ¤ˇ¤żĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˝ĄźĽš¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë¤Ë¤ĎĄ˘ °Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; svn update /usr/doc Ľ˝ĄźĽš¤ňĆţźę¤ˇ¤ż¤éĄ˘ /usr/doc/Makefile ¤ňťČ¤¤Ą˘ °Ę˛ź¤Î¤č¤Ś¤ËĽÉĽ­ĽĺĽáĽóĽČ¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ &prompt.root; cd /usr/doc &prompt.root; make update ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˝ĄźĽš¤ÎÄ´Ŕ°˛ÄÇ˝¤ĘĽŞĽ×ĽˇĽçĽó &os; ¤ÎĽÉĽ­ĽĺĽáĽóĽČĽťĽĂĽČ¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČ¤ČĽÓĽëĽÉĽˇĽšĽĆĽŕ¤ĎĄ˘ ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó¤Î°ěÉô¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČ¤ň´ĘĂą¤Ë¤š¤ëĽŞĽ×ĽˇĽçĽó¤äĄ˘ ĆĂÄę¤ÎËÝĚő¤ÎĽÓĽëĽÉ¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĽŞĽ×ĽˇĽçĽó¤ĎĄ˘ĽˇĽšĽĆĽŕÁ´ČĚ¤ÎĽŞĽ×ĽˇĽçĽó¤Ç¤˘¤ë /etc/make.conf ¤äĄ˘&man.make.1; ¤ËÍż¤¨¤ëĽłĽŢĽóĽÉĽéĽ¤ĽóĽŞĽ×ĽˇĽçĽó¤ÇŔßÄę¤Ç¤­¤Ţ¤šĄŁ ĽŞĽ×ĽˇĽçĽó¤Ë¤Ď°Ę˛ź¤Î¤č¤Ś¤Ę¤â¤Î¤Ź¤˘¤ę¤Ţ¤šĄŁ DOC_LANG ĽÓĽëĽÉ¤Ş¤č¤ÓĽ¤ĽóĽšĽČĄźĽë¤Î¸Ŕ¸ě¤Ş¤č¤ÓĽ¨ĽóĽłĄźĽÇĽŁĽóĽ°¤Î°ěÍ÷ĄŁ ¤ż¤Č¤¨¤ĐĄ˘ąŃ¸ě¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤ňťŘÄꤚ¤ë¤Ë¤Ď en_US.ISO8859-1 ¤ňŔßÄꤡ¤Ţ¤šĄŁ FORMATS ĽÓĽëĽÉ¤ňšÔ¤ŚĽŐĽŠĄźĽŢĽĂĽČĄ˘¤Ţ¤ż¤Ď˝ĐÎĎĽŐĽŠĄźĽŢĽĂĽČ¤Î°ěÍ÷ĄŁ ¸˝şß¤Ď html, html-split, txt, ps, pdf, ¤˝¤ˇ¤Ć rtf ¤ËÂĐąţ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ DOCDIR ĽÉĽ­ĽĺĽáĽóĽČ¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ëžě˝ęĄŁĽÇĽŐĽŠĽëĽČ¤Ď /usr/share/doc ¤Ç¤šĄŁ &os; ¤ÎĽˇĽšĽĆĽŕÁ´ČĚ¤ÎĽŞĽ×ĽˇĽçĽó¤Ë´ŘϢ¤š¤ë¤â¤Ă¤ČÂż¤Ż¤Î make ĘŃżô¤Ë¤Ä¤¤¤Ć¤ĎĄ˘ &man.make.conf.5; ¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ &os; ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽÓĽëĽÉĽˇĽšĽĆĽŕ¤ÇÂĐąţ¤ˇ¤Ć¤¤¤ë¤ľ¤é¤Ę¤ë make ¤ÎĘŃżô¤Ë´Ř¤ˇ¤Ć¤ĎĄ˘ żˇ¤ˇ¤¤š×¸ĽźÔ¤Î¤ż¤á¤Î &os; ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽóĽ×ĽíĽ¸Ľ§ĽŻĽČĆţĚç ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Ľ˝ĄźĽš¤Ť¤é &os; ĽÉĽ­ĽĺĽáĽóĽČ¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ë ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˝ĄźĽš¤ÎşÇżˇĽšĽĘĽĂĽ×ĽˇĽçĽĂĽČ¤ň /usr/doc ¤ËĽŔĽŚĽóĽíĄźĽÉ¤ˇ¤ż¤éĄ˘ Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽÉĽ­ĽĺĽáĽóĽČ¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë˝ŕČ÷¤Ź¤š¤Ů¤ĆŔ°¤¤¤Ţ¤ˇ¤żĄŁ DOC_LANG ¤ÇÄęľÁ¤ľ¤ě¤Ć¤¤¤ë¤š¤Ů¤Ć¤Î¸Ŕ¸ě¤ň´°Á´¤ËĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë¤Ë¤ĎĄ˘ °Ę˛ź¤Î¤č¤Ś¤ËĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cd /usr/doc &prompt.root; make install clean ¤â¤ˇĄ˘¤˘¤ëĆĂÄę¤Î¸Ŕ¸ě¤Î¤ß¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤ż¤¤¤Î¤Ç¤˘¤ě¤ĐĄ˘ /usr/doc ĽľĽÖĽÇĽŁĽěĽŻĽČĽę¤Ç°Ę˛ź¤Î¤č¤Ś¤Ë &man.make.1; ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cd /usr/doc/en_US.ISO8859-1 &prompt.root; make update install clean FORMATS ¤ňŔßÄꤡ¤ĆĄ˘ °Ę˛ź¤Î¤č¤Ś¤ËĽ¤ĽóĽšĽČĄźĽë¤š¤ë˝ĐÎϡÁź°¤ňťŘÄę¤Ç¤­¤Ţ¤šĄŁ &prompt.root; cd /usr/doc &prompt.root; make FORMATS='html html-split' install clean ĽÉĽ­ĽĺĽáĽóĽČ¤ňĘÔ˝¸¤ˇ¤ż¤ęĄ˘ÄűŔľ¤ˇ¤ż¤â¤Î¤ňÄó˝Đ¤š¤ëĘýËĄ¤Ë¤Ä¤¤¤Ć¤ĎĄ˘ żˇ¤ˇ¤¤š×¸ĽźÔ¤Î¤ż¤á¤Î &os; ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽóĽ×ĽíĽ¸Ľ§ĽŻĽČĆţĚç ¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ Marc Fonvieille ĽŮĄźĽš¤Č¤Ę¤Ă¤żşîśČ: ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó ports Updating and Upgrading documentation package Updating and Upgrading ¤ł¤ě¤Ţ¤Ç¤ÎĽťĽŻĽˇĽçĽó¤Ç¤ĎĄ˘Ľ˝ĄźĽšĽłĄźĽÉ¤ňÍѤ¤¤ż &os; ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČĘýËĄ¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ć¤­¤Ţ¤ˇ¤żĄŁ ¤š¤Ů¤Ć¤Î &os; ĽˇĽšĽĆĽŕ¤ÇĄ˘ Ľ˝ĄźĽš¤Ť¤éĽÉĽ­ĽĺĽáĽóĽČ¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë¤ł¤Č¤ĎĆń¤ˇ¤¤¤Ť¤âĂΤě¤Ţ¤ť¤ó¤ˇĄ˘ ¤Ç¤­¤ż¤Č¤ˇ¤Ć¤â¸˝źÂĹŞ¤Ç¤Ď¤Ę¤¤¤ł¤Č¤â¤˘¤ę¤Ţ¤šĄŁ ĽÉĽ­ĽĺĽáĽóĽČ¤ňĽ˝ĄźĽš¤Ť¤éš˝Ăۤš¤ë¤Ë¤ĎĄ˘ ¤Ť¤Ę¤ęÂ礭¤ĘĽÄĄźĽë¤ČĽćĄźĽĆĽŁĽęĽĆĽŁ¤Ť¤éš˝Ŕޤľ¤ě¤ë ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽóĽÄĄźĽëĽÁĽ§Ľ¤Ľó ¤ŹÉŹÍפʤż¤á¤Ç¤šĄŁ ¤Ţ¤żĄ˘svn ĽęĽÝĽ¸ĽČĽę¤Ť¤éĽ˝ĄźĽš¤ňĽÁĽ§ĽĂĽŻĽ˘ĽŚĽČ¤ˇĄ˘ ĽÁĽ§ĽĂĽŻĽ˘ĽŚĽČ¤ˇ¤żĽ˝ĄźĽš¤Ť¤éĽÉĽ­ĽĺĽáĽóĽČ¤ňźęư¤Çš˝Ăۤš¤ëĘýËĄ¤Ë¤Ä¤¤¤ĆĄ˘ ¤˝¤ě¤Ę¤ę¤Ë˝ĎĂΤˇ¤Ć¤¤¤ëÉŹÍפ⤢¤ę¤Ţ¤šĄŁ ¤ł¤ÎŔá¤Ç¤ĎĄ˘Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ë &os; ¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë¤â¤Ś°ě¤Ä¤ÎĘýËĄ¤Ç¤˘¤ëĄ˘ Ports Collection ¤ňÍѤ¤¤żĘýËĄ¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇĄ˘ °Ę˛ź¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ š˝ĂۺѤμɼ­ĽĺĽáĽóĽČ¤ÎĽšĽĘĽĂĽ×ĽˇĽçĽĂĽČ¤ňĽŔĽŚĽóĽíĄźĽÉ¤ˇ¤ĆĽ¤ĽóĽšĽČĄźĽë¤š¤ëĘýËĄĄŁ ĽíĄźĽŤĽë¤Ç¤Îš˝ĂŰşîśČ¤äĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽóĽÄĄźĽëĽÁĽ§Ľ¤Ľó¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ëÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˝ĄźĽš¤ňĽŔĽŚĽóĽíĄźĽÉ¤ˇĄ˘ports ĽŐĽěĄźĽŕĽďĄźĽŻ¤ňťČ¤Ă¤Ćš˝Ăۤš¤ëĘýËĄ¤Ç¤šĄŁ ĽÁĽ§ĽĂĽŻĽ˘ĽŚĽČ¤Ş¤č¤Óš˝ĂŰşîśČ¤Ź´ĘĂą¤Ë¤Ę¤ę¤Ţ¤šĄŁ &os; ¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë¤ł¤ě¤é¤ÎĘýËĄ¤ĎĄ˘ &a.doceng; ¤ŹËčˇîĽ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤Ć¤¤¤ë ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó ports ¤Ë¤č¤ęĽľĽÝĄźĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ě¤é¤Î ports ¤ĎĄ˘&os; Ports Collection ¤Î docs ĽŤĽĆĽ´Ľę¤Ë¤Ţ¤Č¤á¤é¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó ports ¤Îš˝Ăۤȼ¤ĽóĽšĽČĄźĽë ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó ports ¤Ç¤ĎĄ˘ ports ¤Îš˝Ăۼռ쥟ĽŕĽďĄźĽŻ¤ŹÍѤ¤¤é¤ě¤ë¤Î¤ÇĄ˘ ĽÉĽ­ĽĺĽáĽóĽČ¤ň´ĘĂą¤Ëš˝ĂۤǤ­¤Ţ¤šĄŁ ¤ł¤Î ports ¤ĎĄ˘ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ˝ĄźĽš¤ňźŤĆ°ĹŞ¤ËĽÁĽ§ĽĂĽŻĽ˘ĽŚĽČ¤ˇĄ˘ ´Äś­ĘŃżô¤äĽłĽŢĽóĽÉĽéĽ¤ĽóĽŞĽ×ĽˇĽçĽó¤ňĹŹŔÚ¤ËŔßÄꤡ¤Ć &man.make.1; ¤ňźÂšÔ¤ˇ¤Ţ¤šĄŁ ¤Ţ¤żĄ˘Âž¤Î &os; port, package ¤ÎĽ¤ĽóĽšĽČĄźĽë¤ČĆąÍͤ˴ĘĂą¤ĘĘýËĄ¤ÇĄ˘ ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ¤ĽóĽšĽČĄźĽë¤äĽ˘ĽóĽ¤ĽóĽšĽČĄźĽë¤ňšÔ¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ÄɲäξĄÇ˝¤Č¤ˇ¤ĆĄ˘¤ł¤Î ports ¤Ď ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽóĽÄĄźĽëĽÁĽ§Ľ¤Ľó ports ¤Ř¤Î°Í¸¤ňÍý˛ň¤ˇ¤Ć¤¤¤ë¤Î¤ÇĄ˘ š˝ĂŰťţ¤Ë¤ĎĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽóĽÄĄźĽëĽÁĽ§Ľ¤Ľó¤âźŤĆ°ĹŞ¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ţ¤šĄŁ ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó ports ¤Îš˝ŔŽ¤Ď°Ę˛ź¤ÎÄ̤ę¤Ç¤šĄŁ ĽŢĽšĽż port, misc/freebsd-doc-enĄŁ ¤š¤Ů¤Ć¤ÎąŃ¸ěʸ˝ń¤Î ports ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ţ¤šĄŁ ¤š¤Ů¤Ć¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤Î port, misc/freebsd-doc-allĄŁ ¤ł¤ě¤ĎĄ˘¤š¤Ů¤Ć¤ÎÍřÍѲÄÇ˝¤Ę¸Ŕ¸ě¤Î¤š¤Ů¤Ć¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤ňš˝Ăۤˇ¤Ţ¤šĄŁ łĆ¸Ŕ¸ě¤Î¤ż¤á¤Ë ĽšĽěĄźĽÖ port ¤ŹÍѰդľ¤ě¤Ć¤¤¤Ţ¤šĄŁ¤ż¤Č¤¨¤ĐĄ˘misc/freebsd-doc-hu ¤ĎĽĎĽóĽŹĽęĄź¸ě¤ÎĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó port ¤Ç¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘ ¤ČĆą¤¸ˇÁź°¤Ç¤˘¤ëĄ˘ ąŃ¸ěČǤÎĘŹłä¤ľ¤ě¤ż HTML ˇÁź°¤ňš˝ĂۤˇĄ˘ /usr/local/share/doc/freebsd ¤ËĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤Ë¤Ď°Ę˛ź¤Î port ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cd /usr/ports/misc/freebsd-doc-en &prompt.root; make install clean śŚÄĚ¤ÎĽŞĽ×ĽˇĽçĽó ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó ports ¤Ë¤Ď¤ż¤Ż¤ľ¤ó¤ÎĽŞĽ×ĽˇĽçĽó¤ŹÍѰդľ¤ě¤Ć¤Ş¤ęĄ˘ °Ę˛ź¤Î¤č¤Ś¤Ë ports ¤Îżś¤ëÉń¤¤¤ňĽÇĽŐĽŠĽëĽČ¤ÎŔßÄꤍ¤éĘŃšš¤Ç¤­¤Ţ¤šĄŁ WITH_HTML HTML ˇÁź°¤ňš˝Ăۤˇ¤Ţ¤šĄŁ łĆĽÉĽ­ĽĺĽáĽóĽČ¤ËÂФˇĄ˘Ăą°ěČǤΠHTML ĽŐĽĄĽ¤Ľë¤Źš˝Ăۤľ¤ě¤Ţ¤šĄŁ Ŕ°ˇÁ¤ľ¤ě¤żĽÉĽ­ĽĺĽáĽóĽČ¤ĎĄ˘ article.html ¤ä book.html ¤Č¤¤¤Ă¤żĚžÁ°¤ÇĄ˘ ÉŹÍפ˹ţ¤¸¤Ć˛čÁü¤Č¤Č¤â¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ţ¤šĄŁ WITH_PDF &adobe; Portable Document Format (PDF) ¤ňš˝Ăۤˇ¤Ţ¤šĄŁ Ŕ°ˇÁ¤ľ¤ě¤żĽÉĽ­ĽĺĽáĽóĽČ¤ĎĄ˘ article.pdf ¤ä book.pdf ¤Č¤¤¤Ă¤żĚžÁ°¤ÇĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ţ¤šĄŁ DOCBASE ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĽ¤ĽóĽšĽČĄźĽëŔč¤ňŔßÄꤡ¤Ţ¤šĄŁ ĽÇĽŐĽŠĽëĽČ¤ÎĽ¤ĽóĽšĽČĄźĽëŔč¤Ď /usr/local/share/doc/freebsd ¤Ç¤šĄŁ ĽÇĽŐĽŠĽëĽČ¤ÎĽżĄźĽ˛ĽĂĽČĽÇĽŁĽěĽŻĽČĽę¤ĎĄ˘ svn ¤ňÍѤ¤¤ëĘýËĄ¤Č¤Ď°Ű¤Ę¤ę¤Ţ¤šĄŁ ports ¤ĎÄĚžď /usr/local ĽÇĽŁĽěĽŻĽČĽę°Ę˛ź¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤ë¤ż¤á¤Ç¤šĄŁ PREFIX ĘŃżô¤ňťČ¤Ś¤ł¤Č¤ÇĄ˘ ¤ł¤ÎĽÇĽŁĽěĽŻĽČĽę°Ęł°¤Ë¤âĽ¤ĽóĽšĽČĄźĽë¤Ç¤­¤Ţ¤šĄŁ °Ę˛ź¤ĎĄ˘žĺľ­¤ÎĘŃżô¤ňÍѤ¤¤ĆĽĎĽóĽŹĽęĄź¸ě¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤ň PDF ˇÁź°¤ÇĽ¤ĽóĽšĽČĄźĽë¤š¤ëĘýËĄ¤Ç¤šĄŁ &prompt.root; cd /usr/ports/misc/freebsd-doc-hu &prompt.root; make -DWITH_PDF DOCBASE=share/doc/freebsd/hu install clean ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó package ¤ÎÍřÍŃ Á°Ŕá¤ÇŔâĚŔ¤ˇ¤żĄ˘ Ľ˝ĄźĽš¤Ť¤éĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó port ¤ňš˝Ăۤš¤ëĘýËĄ¤Ç¤ĎĄ˘ ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽóĽÄĄźĽëĽÁĽ§Ľ¤Ľó¤ňĽíĄźĽŤĽë¤ËĽ¤ĽóĽšĽČĄźĽë¤š¤ëÉŹÍפʤ˘¤ęĄ˘ ¤Ţ¤żĄ˘ports ¤Îš˝ĂۤΤż¤á¤ËĽÇĽŁĽšĽŻÍĆÎ̤ňÉŹÍפȤˇ¤Ţ¤šĄŁ ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽóĽÄĄźĽëĽÁĽ§Ľ¤Ľó¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ëĽęĽ˝ĄźĽš¤Ź¤Ę¤¤žěšç¤äĄ˘ Ľ˝ĄźĽš¤Ť¤éš˝Ăۤš¤ëžěšç¤Ë¤ĎÂż¤Ż¤ÎĽÇĽŁĽšĽŻÍĆÎ̤ňÉŹÍפȤš¤ë¤ż¤áĄ˘ š˝ĂۺѤߤμɼ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó ports ¤ÎĽšĽĘĽĂĽ×ĽˇĽçĽĂĽČ¤ŹÍѰդľ¤ě¤Ć¤¤¤Ţ¤šĄŁ &a.doceng; ¤ĎĄ˘Ëčˇî &os; ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó package ¤ÎĽšĽĘĽĂĽ×ĽˇĽçĽĂĽČ¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĽĐĽ¤ĽĘĽę package ¤ĎĄ˘ĽˇĽšĽĆĽŕ¤ËÍѰդľ¤ě¤Ć¤¤¤ë &man.pkg.add.1;, &man.pkg.delete.1; ¤Ę¤É¤Î package ´ÉÍýĽÄĄźĽë¤ňÍѤ¤¤Ć°ˇ¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ĽĐĽ¤ĽĘĽę package ¤ňťČ¤Ś¤ČĄ˘ Ľ¤ĽóĽšĽČĄźĽë¤š¤ë¸Ŕ¸ě¤ËÍѰդľ¤ě¤Ć¤¤¤ë ¤š¤Ů¤Ć ¤ÎˇÁź°¤Î &os; ĽÉĽ­ĽĺĽáĽóĽČ¤ŹĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ţ¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘°Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ë¤ČĄ˘ ĽĎĽóĽŹĽęĄź¸ě¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤ÎşÇżˇ package ¤ŹĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ţ¤šĄŁ &prompt.root; pkg_add -r hu-freebsd-doc ĽÉĽ­ĽĺĽáĽóĽČ¤Î package ¤ĎĄ˘ÂĐąţ¤š¤ë port Ěž¤Č¤Ď°Ű¤Ę¤ęĄ˘ lang-freebsd-doc ¤ÎˇÁź°¤ÇĚžÁ°¤Ź¤Ä¤ą¤é¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ł¤ÇĄ˘lang ¤Ď¸Ŕ¸ěĽłĄźĽÉ¤ÎĂť˝ĚˇÁ¤Ç¤šĄŁ ĽĎĽóĽŹĽęĄź¸ě¤Îžěšç¤Ď huĄ˘´ĘÂÎťú¤Îžěšç¤Ë¤Ď zh_cn ¤Ç¤šĄŁ ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó ports ¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČ ž¤Î port ¤ČĆąÍͤ˥˘ĽÉĽ­ĽĺĽáĽóĽĆĄźĽˇĽçĽó port ¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤Ç¤­¤Ţ¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘°Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ë¤ČĄ˘ports-mgmt/portupgrade ¤Ť¤éĄ˘package ¤Ŕ¤ą¤ňťČ¤Ă¤ĆĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽĎĽóĽŹĽęĄź¸ě¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤Ţ¤šĄŁ &prompt.root; portmaster -PP hu-freebsd-doc łŤČŻĽÖĽéĽóĽÁ¤ňÄɤ¤¤Ť¤ą¤ë -CURRENT -STABLE &os; ¤Ë¤ĎĆó¤Ä¤ÎłŤČŻĽÖĽéĽóĽÁ¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤˝¤ě¤Ď &os.current; ¤Č &os.stable; ¤Ç¤šĄŁ ¤ł¤ÎžĎ¤Ç¤Ď¤˝¤ě¤ž¤ě¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇĄ˘ ¤É¤Î¤č¤Ś¤Ë¤ˇ¤ĆĽˇĽšĽĆĽŕ¤ÎÂĐąţ¤š¤ëĽÄĽęĄź¤ňşÇżˇ¤ÎžőÂÖ¤ËĘݤĤŤ¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ ¤Ţ¤ş¤Ď &os.current;Ą˘źĄ¤Ë &os.stable; ¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ Ěő: &a.hanai;Ą˘1996 ÇŻ 11 ˇî 6 Ćü şÇżˇ¤Î &os; ¤ňÄɤ¤¤Ť¤ą¤ë &os.current; ¤Č¤Ď &os; ¤ÎłŤČŻ¤Î şÇÁ°Ŕţ ¤Ç¤šĄŁ &os.current; ¤ÎĽćĄźĽś¤Ďšâ¤¤ľť˝ŃÎϤňťý¤Ä¤ł¤Č¤ŹÍ׾᤾¤ěĄ˘ źŤĘŹ¤ÎĽˇĽšĽĆĽŕ¤ŹĘú¤¨¤ëş¤Ćń¤ĘĚäÂę¤ňźŤÎϤDzňˇč¤Ç¤­¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤â¤ˇ &os; ¤ňťČ¤¤ťĎ¤á¤ż¤Đ¤Ť¤ę¤Ę¤éĄ˘ ¤ł¤ě¤ňążÍѤš¤ë¤ł¤Č¤Ë¤Ä¤¤¤Ć˝˝ĘʏĄĆ¤¤ň˝Ĺ¤Í¤żĘý¤ŹÎɤ¤¤Ç¤ˇ¤ç¤ŚĄŁ &os.current; ¤Ă¤Ć¤Ę¤Ë? &os.current; ¤Ď &os; ¤ÎşÇżˇ¤ÎĽ˝ĄźĽšĽłĄźĽÉ¤Ç¤šĄŁ Ăć¤Ë¤Ď¸˝şßłŤČŻĹÓžĺ¤ÎĽ˝ĽŐĽČĽŚĽ§Ľ˘Ą˘ źÂ¸łĹޤĘĘŃššĄ˘¤˘¤ë¤¤¤Ď˛áĹĎĹŞ¤ĘľĄÇ˝¤Ę¤É¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤Ţ¤żĄ˘¤ł¤ÎĂć¤ËĆţ¤Ă¤Ć¤¤¤ëľĄÇ˝¤Ź¤š¤Ů¤ĆĄ˘ źĄ¤Î¸řź°ĽęĽęĄźĽš¤ËĆţ¤ë¤Č¤Ď¸Â¤ę¤Ţ¤ť¤óĄŁ&os.current; ¤ňĽ˝ĄźĽš¤Ť¤é¤Ű¤ÜËčĆüĽłĽóĽŃĽ¤Ľë¤ˇ¤Ć¤¤¤ëżÍ¤Ď¤ż¤Ż¤ľ¤ó¤¤¤Ţ¤š¤ŹĄ˘ ťţ´ü¤Ë¤č¤Ă¤Ć¤ĎĽłĽóĽŃĽ¤Ľë¤ľ¤¨¤Ç¤­¤Ę¤¤žőÂ֤ˤʤäƤ¤¤ë¤ł¤Č¤â¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĚäÂę¤Ď˛ÄÇ˝¤Ę¸Â¤ęż×ÂŽ¤Ë˛ňˇč¤ľ¤ě¤Ţ¤š¤ŹĄ˘ &os.current; ¤ŹÉÔšŹ¤ň¤â¤ż¤é¤š¤ŤĄ˘ ¤˝¤ě¤Č¤âČóžď¤ËÁÇŔ˛¤é¤ˇ¤¤ľĄÇ˝¤ň¤â¤ż¤é¤š¤Ť¤ĎĄ˘ ¤Ţ¤ľ¤ËĽ˝ĄźĽšĽłĄźĽÉ¤ňĆą´ü¤ˇ¤ż˝Ö´Ö¤Ë¤č¤ë¤Î¤Ç¤š! ĂŻ¤Ź &os.current; ¤ňÉŹÍפȤˇ¤Ć¤ë¤Î? &os.current; ¤ĎĄ˘ źĄ¤Î 3 ¤Ä¤Î˝ĹÍפʼ°ĽëĄźĽ×¤ňÂОݤȤˇ¤Ć¤¤¤Ţ¤šĄŁ Ľ˝ĄźĽšĽÄĽęĄź¤Î¤˘¤ëÉôĘŹ¤Ë´Ř¤ˇ¤ĆłčČŻ¤ËşîśČ¤ˇ¤Ć¤¤¤ë &os; ĽłĽßĽĺĽËĽĆĽŁ¤ÎĽáĽóĽĐĄŁ Čŕ¤é¤Ë¤Č¤Ă¤Ć¤Ď şÇżˇ¤Î¤â¤Î ¤Ë¤ˇ¤Ć¤Ş¤Ż¤Î¤Ź ŔäÂФËÉŹÍפʤł¤Č¤Ę¤Î¤Ç¤šĄŁ łčČŻ¤ËĽĆĽšĽČ¤ˇ¤Ć¤¤¤ë &os; ĽłĽßĽĺĽËĽĆĽŁ¤ÎĽáĽóĽĐĄŁ Čŕ¤é¤ĎĄ˘&os.current; ¤Ź ˇňÁ´¤Ç¤˘¤ë ¤ł¤Č¤ň˛ÄÇ˝¤Ę¸Â¤ęĘÝžÚ¤š¤ë¤ż¤á¤ËĄ˘ źďĄš¤ÎĚäÂę¤ň˛ňˇč¤š¤ë¤Î¤Ëťţ´Ö¤ňŔˤˇ¤Ţ¤Ę¤¤żÍĄš¤Ç¤šĄŁ ¤ł¤ě¤é¤ÎĽĆĽšĽżĄź¤ĎĄ˘¤ľ¤Ţ¤ś¤Ţ¤ĘĘŃšš¤Ë´Ř¤š¤ëÄó°Ć¤ä &os; ¤ÎÂç¤Ţ¤Ť¤ĘĘý¸ţÉŐ¤ą¤ňšÔ¤Ę¤¤¤ż¤¤¤Čť×¤Ă¤Ć¤¤¤ë żÍĄš¤Ç¤â¤˘¤ęĄ˘¤˝¤ě¤ňźÂÁő¤š¤ë¤ż¤á¤ÎĽŃĽĂĽÁ¤ňÄ󟨤ˇ¤Ţ¤šĄŁ Ăą¤ËĄ˘¤ľ¤Ţ¤ś¤Ţ¤Ęťö¤ËĚܤň¸ţ¤ąĄ˘ ť˛šÍ¤Î¤ż¤á¤ËşÇżˇ¤ÎĽ˝ĄźĽš¤ňťČ¤¤¤ż¤¤¤Čť×¤Ă¤Ć¤¤¤ëżÍĄšĄŁ ¤ł¤ě¤é¤ÎżÍĄš¤Ď¤Ţ¤żĄ˘ ťţĄšĽłĽáĽóĽČ¤äĽłĄźĽÉ¤ň´óšĆ¤ˇ¤Ć¤Ż¤ě¤Ţ¤šĄŁ &os.current; ¤Ë´üÂÔ¤ˇ¤Ć¤Ď<emphasis>¤¤¤ą¤Ę¤¤</emphasis>¤ł¤Č¤Ď? źĄ¤ÎĽęĽęĄźĽš¤ÎÁ°¤ËĄ˘şÇ¤âÁ᤯żˇ¤ˇ¤¤ľĄÇ˝¤ňĆţźę¤š¤ë¤ł¤ČĄŁ ĽęĽęĄźĽšÁ°¤ÎľĄÇ˝¤Ď˝˝ĘŹ¤ËĽĆĽšĽČ¤ľ¤ě¤Ć¤¤¤Ę¤¤¤ż¤áĄ˘ ĽĐĽ°¤ň´Ţ¤ó¤Ç¤¤¤Ż˛ÄÇ˝Ŕ­¤ŹÂ礤¤Ë¤˘¤ę¤Ţ¤šĄŁ ĽĐĽ°¤ň˝¤Ŕľ¤š¤ë¤ż¤á¤ÎÁÇÁᤤĘýËĄĄŁ ¤¤¤Ť¤Ę¤ëĽłĽßĽĂĽČ¤ĎĄ˘ ¸ľ¤Ť¤é¤˘¤ëĽĐĽ°¤ň˝¤Ŕľ¤š¤ë¤Î¤ČĆą¤¸¤ŻĄ˘ żˇ¤ˇ¤¤ĽĐĽ°¤ňŔ¸¤ß˝Đ¤š¤Ş¤˝¤ě¤Ź¤˘¤ę¤Ţ¤šĄŁ ¸řź°¤ÎĽľĽÝĄźĽČ ¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ &os.current; ¤ňťČ¤Ś - - -CURRENT - ťČÍŃ - - &a.current.name; ¤Č &a.svn-src-head.name; ĽáĄźĽęĽóĽ°ĽęĽšĽČ + &a.current.name; ¤Č &a.svn-src-head.name;-CURRENTťČÍŃ ĽáĄźĽęĽóĽ°ĽęĽšĽČ ¤Ë˛Ă¤ď¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ľ¤Ţ¤ś¤Ţ¤ĘżÍ¤ŹĽˇĽšĽĆĽŕ¤Î¸˝şß¤ÎžőÂ֤ˤĤ¤¤Ć˝Ň¤Ů¤Ć¤¤¤ëĽłĽáĽóĽČ¤ň¸Ť¤ż¤ęĄ˘ ĽˇĽšĽĆĽŕ¤ňŔľžď¤ËĘݤĤż¤á¤Î˝ĹÍפʞđĘó¤ň¸ŤĆ¨¤ľ¤Ę¤¤¤ż¤á¤ËĄ˘ ÉŹżÜ¤Î ¤ł¤Č¤Ç¤šĄŁ &a.svn-src-head.name; ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤Ç¤ĎĄ˘ ¤˝¤ě¤ž¤ě¤ÎĘŃšš¤Ë¤Ä¤¤¤Ć¤Î commit ĽíĽ°¤Źľ­Ďż¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤Ţ¤żĄ˘¤˝¤ě¤Ë´Ř¤ˇ¤ĆľŻ¤ł¤ęĆŔ¤ëÉűşîÍѤΞđĘó¤ňĆŔ¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤š¤Î¤ÇĄ˘ ť˛˛Ă¤š¤ë˛ÁĂͤΤ˘¤ëĽáĄźĽęĽóĽ°ĽęĽšĽČ¤Ç¤šĄŁ ¤ł¤ě¤é¤ÎĽáĄźĽęĽóĽ°ĽęĽšĽČ¤ËĆţ¤ë¤Ë¤ĎĄ˘ &a.mailman.lists.link; ¤ň¤ż¤É¤Ă¤Ćť˛˛Ă¤ˇ¤ż¤¤ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤ňĽŻĽęĽĂĽŻ¤ˇĄ˘ źę˝ç¤ÎŔâĚŔ¤Ë¤ˇ¤ż¤Ź¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Ľ˝ĄźĽšĽÄĽęĄźÁ´ÂΤÎĘŃššĹŔ¤ňÄɤ¤¤Ť¤ą¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘ &a.svn-src-all.name; ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤ňšŘĆɤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &os; ĽßĽéĄźĽľĽ¤ĽČ ¤Ť¤éĽ˝ĄźĽš¤ÎĆţźę¤š¤ë¤Ë¤ĎĄ˘°Ę˛ź¤Î¤č¤Ś¤Ę¤¤¤Ż¤Ä¤Ť¤ÎĘýËĄ¤Ź¤˘¤ę¤Ţ¤šĄŁ - - Subversion - - - cron - - - -CURRENT - Subversion ¤ňťČ¤Ă¤żĆą´ü - - - -CURRENT - CTM ¤ňťČ¤Ă¤żĆą´ü - - - svn ¤ňťČ¤Ă¤ĆĄ˘ + svnSubversion ¤ňťČ¤Ă¤ĆĄ˘ ´őËž¤š¤ëłŤČŻĽÖĽéĽóĽÁĄ˘ ¤â¤ˇ¤Ż¤ĎĽęĽęĄźĽšĽÖĽéĽóĽÁ¤ňĽÁĽ§ĽĂĽŻĽ˘ĽŚĽČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎĘýËĄ¤ĎĄ˘łŤČŻĂć¤Î &os; ĽęĽÝĽ¸ĽČĽę¤Ř¤ÎĽ˘ĽŻĽťĽš¤ňÄ󜥤ˇ¤Ć¤Ş¤ęĄ˘ żäžŠ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ Subversion ĽßĽéĄźĽľĽ¤ĽČ ¤Î¤Ň¤Č¤Ä¤Î head ĽÖĽéĽóĽÁ¤Ť¤é - -CURRENT ĽłĄźĽÉ¤ňĽÁĽ§ĽĂĽŻĽ˘ĽŚĽČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ + -CURRENT-CURRENTSubversion ¤ňťČ¤Ă¤żĆą´ü ĽłĄźĽÉ¤ňĽÁĽ§ĽĂĽŻĽ˘ĽŚĽČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽęĽÝĽ¸ĽČĽęĽľĽ¤Ľş¤Î´ŃĹŔ¤Ť¤éĄ˘ ´őËž¤š¤ëĽľĽÖĽÄĽęĄź¤Î¤ß¤ňĽÁĽ§ĽĂĽŻĽ˘ĽŚĽČ¤š¤ë¤ł¤Č¤ŹżäžŠ¤ľ¤ě¤Ţ¤šĄŁ - - -CURRENT - CTM ¤ňťČ¤Ă¤żĆą´ü - - - CTM¤ňÍѤ¤¤ëĄŁ + CTM-CURRENTCTM ¤ňťČ¤Ă¤żĆą´ü¤ňÍѤ¤¤ëĄŁ ŔÜÂłÎÁ¤ŹšâłŰ¤Ŕ¤Ă¤ż¤ęĄ˘email ¤Ç¤ÎĽ˘ĽŻĽťĽš¤ˇ¤Ť¤Ç¤­¤Ę¤¤¤č¤Ś¤ĘĄ˘ ¤˘¤Ţ¤ęÎÉźÁ¤Ç¤Ę¤¤ TCP/IP ŔÜÂł¤Îžěšç¤Ë¤ĎĄ˘CTM ¤ňÍřÍѤš¤ë¤ČÎɤ¤¤Ç¤ˇ¤ç¤ŚĄŁ¤ż¤Ŕ¤ˇĄ˘Subversion ¤Ű¤É¤Ë¤ĎżŽÍę¤Ď¤Ç¤­¤Ţ¤ť¤óĄŁ ¤˝¤Î¤ż¤áĄ˘Ľ¤ĽóĽżĄźĽÍĽĂĽČ¤ËŔÜÂł¤ˇ¤Ć¤¤¤ëĽˇĽšĽĆĽŕ¤Ç¤˘¤ě¤ĐĄ˘ Subversion ¤ňÍřÍѤľ¤ě¤ë¤ł¤Č¤ňżäžŠ¤ˇ¤Ţ¤šĄŁ ¤â¤ˇĄ˘Ľ˝ĄźĽš¤ňÄŻ¤á¤ë¤Ŕ¤ą¤Ç¤Ę¤ŻĄ˘ Áö¤é¤ť¤ë¤ż¤á¤ËĆţźę¤š¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘ °ěÉô¤Ŕ¤ąÁŞ¤Ö¤Î¤Ç¤Ď¤Ę¤ŻĄ˘&os.current; ¤ÎÁ´ÂΤňźę¤ËĆţ¤ě¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Ľ˝ĄźĽš¤Î¤ľ¤Ţ¤ś¤Ţ¤ĘÉôĘŹ¤ŹÂž¤ÎÉôĘŹ¤Îššżˇ¤Ë°Í¸¤ˇ¤Ć¤Ş¤ęĄ˘ °ěÉô¤Î¤ß¤ňĽłĽóĽŃĽ¤Ľë¤ˇ¤č¤Ś¤Č¤š¤ë¤ČĄ˘ ¤Ű¤Ü´Ö°ă¤¤¤Ę¤ŻĚäÂꤏľŻ¤­¤Ţ¤šĄŁ - - -CURRENT - ĽłĽóĽŃĽ¤Ľë - - &os.current; ¤ňĽłĽóĽŃĽ¤Ľë¤š¤ëÁ°¤Ë + &os.current; ¤ňĽłĽóĽŃĽ¤Ľë-CURRENTĽłĽóĽŃĽ¤Ľë¤š¤ëÁ°¤Ë /usr/src/Makefile ¤ňĂí°Őżź¤ŻĆɤó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Î˝čÍý¤Î°ěÉô¤Č¤ˇ¤ĆĄ˘şÇ˝é¤Ë żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ ¤ĆĄ˘world ¤ňşĆš˝ĂŰ ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ&a.current; ¤Č /usr/src/UPDATING ¤ňĆɤá¤ĐĄ˘ źĄ¤ÎĽęĽęĄźĽš¤Ř¸ţ¤ą¤Ć°Ü¤Ă¤Ć¤ć¤Ż¤ËĹö¤ż¤Ă¤ĆĄ˘ ¤Č¤­¤É¤­ÉŹÍפȤʤë´ű¸ĽˇĽšĽĆĽŕ¤Ť¤é¤ÎżˇĽˇĽšĽĆĽŕ¤Îš˝ĂŰźę˝ç¤Ë¤Ä¤¤¤Ć¤ÎşÇżˇžđĘó¤ŹĆŔ¤é¤ě¤ë¤Ç¤ˇ¤ç¤ŚĄŁ Ľ˘ĽŻĽĆĽŁĽÖ¤Ë¤Ę¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤! &os.current; ¤ÎĽćĄźĽś¤Ë¤ĎĄ˘ łČÄĽ¤äĽĐĽ°Ä٤ˇ¤Ë´Ř¤ˇ¤ĆÄó°Ć¤š¤ë¤ł¤Č¤Ź´Ť¤á¤é¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽłĄźĽÉ¤ňČź¤ŚÄó°Ć¤Ď¤â¤Ă¤Č¤â´żˇŢ¤ľ¤ě¤ë¤â¤Î¤Ç¤š! °ÂÄęČǤΠ&os; ¤ňťČ¤Ś Ěő: &a.jp.iwasaki; &os.stable; ¤Ă¤Ć¤Ę¤Ë? -STABLE &os.stable; ¤Č¤ĎÄę´üĹŞ¤Ë¸řłŤ¤ľ¤ě¤ëĽęĽęĄźĽš¤ňşîŔޤš¤ë¤ż¤á¤ÎłŤČŻĽÖĽéĽóĽÁ¤Ç¤šĄŁ ¤ł¤ÎĽÖĽéĽóĽÁ¤Ë˛Ă¤¨¤é¤ě¤ëĘŃšš¤Ď¸śÂ§¤Č¤ˇ¤ĆĄ˘ ťöÁ°¤Ë &os.current; ¤Çťî¸ł¤ş¤ß¤Ç¤˘¤ë¤Č¤¤¤ŚĆĂħ¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ż¤Ŕ¤˝¤Ś¤Ç¤˘¤Ă¤Ć¤âĄ˘ ¤ł¤ě¤ĎłŤČŻÍŃĽÖĽéĽóĽÁ¤Î°ě¤Ä¤Ç¤˘¤ë¤Č¤¤¤Ś¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤Ä¤Ţ¤ęĄ˘¤˘¤ëťţĹŔ¤Ë¤Ş¤ą¤ë &os.stable; ¤ÎĽ˝ĄźĽš¤Ź ¤É¤ó¤Ęžěšç¤Ë¤âťČ¤¨¤ë¤â¤Î¤Ç¤˘¤ë¤Č¤Ď¸Â¤é¤Ę¤¤¤Č¤¤¤Ś¤ł¤Č¤Ç¤šĄŁ ¤ł¤ÎĽÖĽéĽóĽÁ¤Ď¤â¤Ś°ě¤Ä¤ÎłŤČݤÎÎŽ¤ě¤Č¤¤¤Ś¤Ŕ¤ą¤Ç¤˘¤Ă¤ĆĄ˘ Ľ¨ĽóĽÉĽćĄźĽś¸ţ¤ą¤Î¤â¤Î¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ĂŻ¤Ź &os.stable; ¤ňÉŹÍפȤˇ¤Ć¤¤¤ë¤Î? FreeBSD ¤ÎłŤČŻĽ×ĽíĽťĽš¤Ëś˝Ě٤ʤ˘¤Ă¤ż¤ęĄ˘ ¤˝¤ě¤ËÂФš¤ëš×¸Ľ¤ňšÍ¤¨¤Ć¤¤¤ĆĄ˘Ćäˤ˝¤ě¤ŹźĄ˛ó¤Î ĽÝĽ¤ĽóĽČ ĽęĽęĄźĽš¤Ë´Řˇ¸¤š¤ë¤â¤Î¤Ç¤˘¤ë¤Ę¤é &os.stable; ¤ňÄɤڤł¤Č¤ňšÍ¤¨¤ë¤ČÎɤ¤¤Ç¤ˇ¤ç¤ŚĄŁ ĽťĽ­ĽĺĽęĽĆĽŁžĺ¤Î˝¤Ŕľ¤Ď &os.stable; ĽÖĽéĽóĽÁ¤ËÂФˇ¤ĆšÔ¤Ę¤ď¤ě¤Ţ¤š¤ŹĄ˘ ¤˝¤Î¤ż¤á¤Ë &os.stable; ¤ňÄɤŚÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ ¤š¤Ů¤Ć¤Î &os; ĽťĽ­ĽĺĽęĽĆĽŁ´Ťšđ¤Ë¤Ď EOL ¤ËĂŁ¤ˇ¤Ć¤¤¤Ę¤¤¤š¤Ů¤Ć¤ÎĽęĽęĄźĽš¤ËÂФš¤ëĚäÂęĹŔ¤Î˝¤ŔľĘýËĄ¤ŹŔâĚŔ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¸˝ťţĹŔ¤Ç¤Î¸Ĺ¤¤ĽęĽęĄźĽš¤Î FreeBSD ¤ÎĽťĽ­ĽĺĽęĽĆĽŁĽÝĽęĽˇĄź¤ÎÁ´ŔâĚŔ¤ňĂΤë¤Ë¤ĎĄ˘http://www.FreeBSD.org/ja/security/ ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĄŁ &os.stable; ĽÖĽéĽóĽÁ¤Ď¤¤¤Ä¤âĽłĽóĽŃĽ¤Ľë¤Ź¤Ç¤­Ą˘ °ÂÄę¤Ëưşî¤š¤Ů¤­¤Ç¤š¤ŹĄ˘ ¤˝¤ě¤ŹĘÝžÚ¤ľ¤ě¤Ć¤¤¤ë¤Č¤¤¤Ś¤ď¤ą¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ¤Ţ¤żĄ˘ĽłĄźĽÉ¤Ď &os.stable; ¤Ë˛Ă¤¨¤é¤ě¤ëÁ°¤Ë &os.current; ¤ÇłŤČݤľ¤ě¤ë¤Î¤Ç¤š¤ŹĄ˘&os.stable; ¤ÎĽćĄźĽś¤Ď &os.current; ¤č¤ę¤âÂż¤¤¤ż¤áĄ˘&os.current; ¤ÇČŻ¸Ť¤ľ¤ě¤Ę¤Ť¤Ă¤żĽĐĽ°¤Ź &os.stable; ¤ÇČŻ¸Ť¤ľ¤ěĄ˘ ¤Č¤­¤É¤­¤˝¤ě¤ŹĚäÂę¤Č¤Ę¤ë¤ł¤Č¤Ź¤˘¤ë¤Î¤ĎČň¤ą¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤ť¤óĄŁ ¤ł¤Î¤č¤Ś¤ĘÍýÍł¤Ť¤éĄ˘ĚŐĚÜĹŞ¤Ë &os.stable; ¤ňÄɤ¤¤Ť¤ą¤ë¤Ů¤­¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ Ćä˥˘şÇ˝é¤ËłŤČŻ´Äś­¤â¤ˇ¤Ż¤ĎĽĆĽšĽČ´Äś­¤ÇĽłĄźĽÉ¤ň˝˝ĘŹ¤Ëťî¸ł¤ť¤ş¤ËĄ˘ Ľ×ĽíĽŔĽŻĽˇĽçĽóÉĘźÁ¤ŹÍ׾᤾¤ě¤ëĽľĄźĽĐ¤ň &os.stable; ¤ËĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ˇ¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ ¤â¤ˇťî¸ł¤ň¤š¤ëťń¸ťĹޤĘ͞;¤Ź¤Ę¤¤žěšç¤ĎĄ˘ ĽęĽęĄźĽš´Ö¤ÎĽĐĽ¤ĽĘĽęĽ˘ĽĂĽ×ĽÇĄźĽČľĄÇ˝¤ňÍřÍѤˇ¤ĆĄ˘ şÇżˇ¤Î FreeBSD ĽęĽęĄźĽš¤ňťČ¤Ś¤ł¤Č¤ňżäžŠ¤ˇ¤Ţ¤šĄŁ &os.stable; ¤ňťČ¤Ś -STABLE ÍřÍѤš¤ë &os.stable; ¤Îš˝Ăۤ˴ŘϢ¤š¤ëťöĘÁ¤äĄ˘ ¤˝¤Îž¤ÎĂí°Ő¤š¤Ů¤­ĹŔ ¤Ë´Ř¤š¤ëžđĘó¤ňĆŔ¤ë¤ż¤á¤ËĄ˘ &a.stable.name; ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤Ë˛Ă¤ď¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤Ţ¤żłŤČŻźÔ¤ĎľÄĎŔ¤ÎÍžĂĎ¤Ź¤˘¤ë˝¤Ŕľ¤äĘŃšš¤ňšÍ¤¨¤Ć¤¤¤ëžěšç¤ËĄ˘ ¤ł¤ÎĽáĄźĽęĽóĽ°ĽęĽšĽČ¤Ç¸řÉ˝¤ˇĄ˘ Äó°Ć¤ľ¤ě¤żĘŃšš¤Ë´Ř¤ˇ¤ĆĚäÂꤏŔ¸¤¸¤ë¤Ť¤É¤Ś¤Ť¤ňĘÖĹú¤š¤ëľĄ˛ń¤ňĽćĄźĽś¤ËÍż¤¨¤Ţ¤šĄŁ Äɤ¤¤Ť¤ą¤Ć¤¤¤ëĽÖĽéĽóĽÁ¤Ë´ŘϢ¤š¤ë svn ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤Ëť˛˛Ă¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ż¤Č¤¨¤ĐĄ˘9-STABLE ĽÖĽéĽóĽÁ¤ňÄɤ¤¤Ť¤ą¤Ć¤¤¤ëĽćĄźĽś¤Ď &a.svn-src-stable-9.name; ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤Ëť˛˛Ă¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎĽęĽšĽČ¤Ç¤ĎĄ˘ ĘŃšš¤Ź¤Ę¤ľ¤ě¤ë¤´¤Č¤ËşîŔޤľ¤ě¤ë commit log ¤ä¤˝¤ě¤ËČź¤Ś ľŻ¤ł¤ę¤Ś¤ëÉűşîÍѤˤĤ¤¤Ć¤ÎžđĘ󤏾­Ďż¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĽáĄźĽęĽóĽ°ĽęĽšĽČ¤ËĆţ¤ë¤Ë¤ĎĄ˘ &a.mailman.lists.link; ¤ň¤ż¤É¤Ă¤Ćť˛˛Ă¤ˇ¤ż¤¤ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤ňĽŻĽęĽĂĽŻ¤ˇĄ˘ źę˝ç¤ÎŔâĚŔ¤Ë¤ˇ¤ż¤Ź¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Ľ˝ĄźĽšĽÄĽęĄźÁ´ÂΤÎĘŃššĹŔ¤ňÄɤ¤¤Ť¤ą¤ë¤Ë¤ĎĄ˘ &a.svn-src-all.name; ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤ňšŘĆɤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Ëčˇî¸řłŤ¤ľ¤ě¤Ć¤¤¤ë &os.stable; ¤Ť¤éĽÓĽëĽÉ¤ľ¤ě¤żĽšĽĘĽĂĽ×ĽˇĽçĽĂĽČ¤Îżˇ¤ˇ¤¤ĽˇĽšĽĆĽŕ¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤Ë¤ĎĄ˘ žÜşŮ¤Ë¤Ä¤¤¤ĆĄ˘ ĽšĽĘĽĂĽ×ĽˇĽçĽĂĽČ ¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤â¤ˇ¤Ż¤ĎĄ˘ĽßĽéĄźĽľĽ¤ĽČ¤Ť¤éşÇśá¤Î &os.stable; ĽęĽęĄźĽš¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇĄ˘˛źľ­¤ÎŔâĚŔ¤Ë˝ž¤Ă¤ĆşÇżˇ¤Î &os.stable; ¤ÎĽ˝ĄźĽšĽłĄźĽÉ¤Ëššżˇ¤š¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ ´ű¤Ë &os; ¤Î°ĘÁ°¤ÎĽęĽęĄźĽš¤ŹĆ°¤¤¤Ć¤¤¤ëĽˇĽšĽĆĽŕ¤ň &os; ĽßĽéĄźĽľĽ¤ĽČ ¤Ť¤éĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤š¤ë¤Ë¤ĎĄ˘ °Ę˛ź¤Î¤č¤Ś¤Ę¤¤¤Ż¤Ä¤Ť¤ÎĘýËĄ¤Ź¤˘¤ę¤Ţ¤šĄŁ - - - Subversion - - - cron - - - -STABLE - Subversion - ¤ňťČ¤Ă¤żĆą´ü - - + - svn ¤ňťČ¤Ă¤ĆĄ˘ + svnSubversion ¤ňťČ¤Ă¤ĆĄ˘ ´őËž¤š¤ëłŤČŻĽÖĽéĽóĽÁĄ˘ ¤â¤ˇ¤Ż¤ĎĽęĽęĄźĽšĽÖĽéĽóĽÁ¤ňĽÁĽ§ĽĂĽŻĽ˘ĽŚ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎĘýËĄ¤ĎĄ˘łŤČŻĂć¤Î &os; ĽęĽÝĽ¸ĽČĽę¤Ř¤ÎĽ˘ĽŻĽťĽš¤ňÄ󜥤ˇ¤Ć¤Ş¤ęĄ˘ żäžŠ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽÖĽéĽóĽÁĚž¤Ë¤Ä¤¤¤Ć¤ĎĄ˘¸˝şß¤ÎłŤČŻ¤ÎĽŘĽĂĽÉĽÖĽéĽóĽÁ¤Ď headĄ˘¤Ş¤č¤Ó ĽęĽęĄźĽšĽ¨ĽóĽ¸ĽËĽ˘ĽęĽóĽ°¤ÎĽÚĄźĽ¸ ¤ÎĆĂÄę¤ÎĽÖĽéĽóĽÁ¤Ç¤Ď stable/9Ą˘¤Ţ¤ż¤Ď releng/9.0 ¤Č¤Ę¤ę¤Ţ¤šĄŁ - Subversion + Subversion-STABLESubversion ¤ňťČ¤Ă¤żĆą´ü ¤ňťČ¤Ă¤ĆĽŮĄźĽšĽˇĽšĽĆĽŕ¤ňĽÁĽ§ĽĂĽŻĽ˘ĽŚĽČ¤š¤ëşÝ¤Î URL ¤ÎĽ×ĽěĽŐĽŁĽĂĽŻĽš¤ĎĄ˘Subversion ĽßĽéĄźĽľĽ¤ĽČ ¤ÇŔâĚŔ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽęĽÝĽ¸ĽČĽęĽľĽ¤Ľş¤Î´ŃĹŔ¤Ť¤éĄ˘ ´őËž¤š¤ëĽľĽÖĽÄĽęĄź¤Î¤ß¤ňĽÁĽ§ĽĂĽŻĽ˘ĽŚĽČ¤š¤ë¤ł¤Č¤ŹżäžŠ¤ľ¤ě¤Ţ¤šĄŁ - - -STABLE - CTM ¤ňťČ¤Ă¤ĆĆą´ü¤š¤ë - - Ľ¤ĽóĽżĄźĽÍĽĂĽČ¤Ř¤ÎŔÜÂł¤ËšâÂŽ¤Ę˛óŔţ¤ňÍřÍѤǤ­¤Ę¤¤¤Î¤Ç¤˘¤ě¤ĐĄ˘ - CTM + CTM-STABLECTM ¤ňťČ¤Ă¤ĆĆą´ü¤š¤ë ¤ň¸ĄĆ¤¤ˇ¤Ć¤ß¤Ţ¤ˇ¤ç¤ŚĄŁ - - -STABLE - š˝ĂŰĄ˘ĽłĽóĽŃĽ¤Ľë - - - &os.stable; ¤ňĽłĽóĽŃĽ¤Ľë¤š¤ëÁ°¤ËĄ˘ + &os.stable;-STABLEš˝ĂŰĄ˘ĽłĽóĽŃĽ¤Ľë ¤ňĽłĽóĽŃĽ¤Ľë¤š¤ëÁ°¤ËĄ˘ /usr/src/Makefile ¤ň¤č¤ŻĆɤó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Î˝čÍý¤Î°ěÉô¤Č¤ˇ¤ĆşÇ˝é¤Ë żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤ĆĄ˘ world ¤ňşĆš˝ĂŰ ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ&a.stable; ¤Č /usr/src/UPDATING ¤ňĆɤó¤ÇĄ˘ źĄ¤ÎĽęĽęĄźĽš¤Ř¸ţ¤ą¤Ć°Ü¤Ă¤Ć¤ć¤Ż¤ËĹö¤ż¤Ă¤ĆĄ˘ ¤Č¤­¤É¤­ÉŹÍפȤʤë´ű¸ĽˇĽšĽĆĽŕ¤Ť¤é¤ÎżˇĽˇĽšĽĆĽŕ¤Îš˝ĂŰźę˝ç¤Ë¤Ä¤¤¤Ć¤ÎşÇżˇžđĘó¤ňĆŔ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Ľ˝ĄźĽš¤ÎĆą´ü Ěő: &a.jp.iwasaki;Ą˘1997 ÇŻ 9 ˇî 13 Ćü Ľ¤ĽóĽżĄźĽÍĽĂĽČŔÜÂł¤Ţ¤ż¤ĎĹŝҼᥟĽë¤ňťČÍѤˇ¤ĆĄ˘&os; Ľ×ĽíĽ¸Ľ§ĽŻĽČ¤ÎĽ˝ĄźĽš¤Î¤˘¤ë°ěÉôĘŹ¤Ţ¤ż¤ĎÁ´ÂΤκǿˇ¤ňÄɤ¤¤Ť¤ą¤ëĘýËĄ¤Ďż§Ąš¤˘¤ę¤Ţ¤šĄŁ ´đËÜĹŞ¤ĘĽľĄźĽÓĽš¤Ď Subversion ¤Č CTM ¤Ç¤šĄŁ Ľ˝ĄźĽšĽÄĽęĄź¤Î°ěÉô¤ňşÇżˇ¤Î¤â¤Î¤Ëššżˇ¤š¤ë¤ł¤Č¤Ď˛ÄÇ˝¤Ç¤šĄŁ ¤ż¤Ŕ¤ˇĄ˘ĽľĽÝĄźĽČ¤ľ¤ě¤Ć¤¤¤ëĽ˘ĽĂĽ×ĽÇĄźĽČźę˝ç¤ĎĄ˘ Ľ˝ĄźĽšĽÄĽęĄźÁ´ÂΤňşÇżˇ¤Î¤â¤Î¤Ëššżˇ¤ˇĄ˘ /bin, /sbin ¤Č¤¤¤Ă¤żĽćĄźĽśśő´Ö¤Çưşî¤š¤ë¤â¤ÎĄ˘ ¤Ş¤č¤ÓĽŤĄźĽÍĽëĽ˝ĄźĽš¤ňşĆš˝Ăۤš¤ë¤ł¤Č¤Î¤ß¤Ç¤šĄŁ Ľ˝ĄźĽšĽÄĽęĄź¤Î°ěÉô¤Ŕ¤ą¤Ç¤˘¤Ă¤ż¤ęĄ˘ĽŤĄźĽÍĽë¤Ŕ¤ąĄ˘ ¤â¤ˇ¤Ż¤ĎĽćĄźĽśĽéĽóĽÉ¤ÎĽ×ĽíĽ°ĽéĽŕ¤Ŕ¤ą¤ňššżˇ¤ˇ¤żžěšç¤ĎĄ˘ ĚäÂꤏŔ¸¤¸¤ë¤ł¤Č¤Ź¤č¤Ż¤˘¤ę¤Ţ¤šĄŁ ¤ł¤Îťţ¤ËČŻŔ¸¤š¤ëĚäÂę¤ĎĽłĽóĽŃĽ¤Ľëťţ¤ÎĽ¨ĽéĄź¤Ť¤éĽŤĄźĽÍĽëĽŃĽËĽĂĽŻĄ˘ ĽÇĄźĽż¤ÎÇ˲ő¤Č¤ľ¤Ţ¤ś¤Ţ¤Ç¤šĄŁ Subversion Subversion ¤Ď pull Ćą´üĽâĽÇĽë¤ňşÎÍѤˇ¤Ć¤¤¤Ţ¤šĄŁ ĽćĄźĽś (¤Ţ¤ż¤Ď cron ĽšĽŻĽęĽ×ĽČ) ¤Ź svn ¤ňľŻĆ°¤ˇĄ˘ĽŐĽĄĽ¤Ľë¤ňşÇżˇžőÂ֤ˤˇ¤Ţ¤šĄŁ Subversion ¤ĎĄ˘ ĽíĄźĽŤĽë¤ÎĽ˝ĄźĽšĽÄĽęĄź¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ëşÇ¤âšĽ¤Ţ¤ˇ¤¤ĘýËĄ¤Ç¤šĄŁ ššżˇžđĘó¤Ď¤˝¤ÎťţĹŔ¤ÎşÇżˇ¤Î¤â¤Î¤Ç¤˘¤ęĄ˘ ĽćĄźĽś¤Ď¤¤¤ÄĽŔĽŚĽóĽíĄźĽÉ¤š¤ë¤Ť¤ňĽłĽóĽČĽíĄźĽë¤ˇ¤Ţ¤šĄŁ ĆĂÄę¤ÎĽŐĽĄĽ¤Ľë¤äĽÇĽŁĽěĽŻĽČĽę¤Ë¸ÂÄꤡ¤Ćššżˇ¤š¤ë¤ł¤Č¤â´ĘĂą¤Ë¤Ç¤­¤Ţ¤šĄŁ ššżˇžđĘó¤ĎĽľĄźĽĐ¤Ë¤č¤Ă¤ĆÁÇÁ᤯Ŕ¸Ŕޤľ¤ě¤Ţ¤šĄŁ CTM °ěĘýĄ˘CTM ¤Ď¤˘¤Ę¤ż¤Źťý¤Ă¤Ć¤¤¤ëĽ˝ĄźĽš¤ČĽŢĽšĽżĽ˘ĄźĽŤĽ¤ĽÖžĺ¤Ë ¤˘¤ë¤˝¤ě¤Č¤ÎÂĐĎĂĹŞ¤ĘČćłÓ¤ň¤Ş¤ł¤Ę¤¤¤Ţ¤ť¤ó¤ˇĄ˘ ¤˘¤ë¤¤¤Ď¸ţ¤ł¤ŚÂڤŤ¤éĘŃššĹŔ¤ň pull ¤ˇ¤ż¤ę¤â¤ˇ¤Ţ¤ť¤óĄŁ ¤˝¤Î¤Ť¤ď¤ę¤ËĄ˘Á°˛ó¤ÎźÂšÔťţ¤Ť¤é¤ÎĘŃšš¤ňÇ§źą¤š¤ëĽšĽŻĽęĽ×ĽČ¤Ź ĽŢĽšĽż CTM ĽŢĽˇĽóžĺ¤Ç°ěĆü¤Ëżô˛óźÂšÔ¤ľ¤ěĄ˘ ¤š¤Ů¤Ć¤ÎĘŃšš¤ň compress ¤ˇ¤ĆÄ̤ˇČÖšć¤ňżś¤ęĄ˘ ¤ľ¤é¤ËĹŝҼᥟĽë¤ÇĄ˘°őťú˛ÄÇ˝¤Ę ASCII Ľ­ĽăĽéĽŻĽż¤Î¤ß¤ÇĹžÁ÷¤Ç¤­¤ë¤č¤Ś¤ËĽ¨ĽóĽłĄźĽÉ¤ˇ¤Ţ¤šĄŁ źőżŽ¤ˇ¤ż¸ĺ¤ĎĄ˘ ¤ł¤ě¤é¤Î CTM ¤ÎĽÇĽëĽż ¤ĎźŤĆ° ĹŞ¤ËĽÇĽłĄźĽÉĄ˘¸Ąşş¤ˇ¤ĆĽćĄźĽś¤ÎĽ˝ĄźĽš¤ÎĽłĽÔĄź¤ËĘŃšš¤ňĹŹÍѤš¤ë &man.ctm.rmail.1; ¤Ë¤č¤Ă¤Ć˝čÍý˛ÄÇ˝¤Č¤Ę¤ę¤Ţ¤šĄŁ ¤ł¤Î˝čÍý¤Ď Subversion ¤č¤ę¤ş¤Ă¤Č¸úΨŪ¤Ç¤˘¤ęĄ˘pull ĽâĽÇĽë¤Č¤¤¤Ś¤č¤ę¤ŕ¤ˇ¤í push ĽâĽÇĽë¤Ç¤˘¤ë¤ż¤áĄ˘ ĽľĄźĽĐťń¸ť¤ÎÉé˛Ů¤ĎˇÚ¤Ż¤Ę¤ę¤Ţ¤šĄŁ ž¤ÎĽČĽěĄźĽÉĽŞĽŐ¤â¤˘¤ę¤Ţ¤šĄŁ Subversion ¤Ç¤˘¤ě¤ĐĄ˘ ¤Ś¤Ă¤Ť¤ęĽíĄźĽŤĽë¤ÎĽ˘ĄźĽŤĽ¤ĽÖ¤Î°ěÉô¤ňžĂ¤ˇ¤Ć¤ˇ¤Ţ¤Ă¤Ć¤âĄ˘ ˛ő¤ě¤żÉôĘŹ¤ň¸Ą˝Đ¤ˇ¤ĆşĆš˝Ăۤˇ¤Ć¤Ż¤ě¤Ţ¤šĄŁ CTM ¤Ď¤ł¤ě¤ň¤ä¤Ă¤Ć¤Ż¤ě¤Ţ¤ť¤óĄŁ ¤â¤ˇĽ˝ĄźĽšĽÄĽęĄź¤Î°ěÉô¤ňžĂ¤ˇ¤Ć¤ˇ¤Ţ¤¤Ą˘ ¤˝¤ˇ¤ĆĽĐĽĂĽŻĽ˘ĽĂĽ×¤ňźč¤Ă¤Ć¤¤¤Ę¤¤¤Î¤Ç¤˘¤ě¤ĐĄ˘şÇżˇ¤Î CTM ĽŮĄźĽšĽÇĽëĽż ¤ňÍѤ¤¤ĆĄ˘°ě¤Ť¤é¤ä¤ęÄž¤ˇĄ˘ CTM ¤ňťČ¤Ă¤Ć¤š¤Ů¤Ć¤ňşĆš˝Ăۤˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ <quote>world</quote> ¤ÎşĆš˝ĂŰ world ¤ÎşĆš˝ĂŰ &os.stable;Ą˘&os.current; ¤Ę¤É¤Î &os; ¤Î¤É¤ě¤ŤĆĂÄę¤ÎĽĐĄźĽ¸ĽçĽó¤Ë¤Ä¤¤¤ĆĄ˘ ĽíĄźĽŤĽë¤ÎĽ˝ĄźĽšĽÄĽęĄź¤ňĆą´ü¤ľ¤ť¤ż¤éĄ˘ ¤˝¤ÎĽ˝ĄźĽšĽÄĽęĄź¤ňťČ¤Ă¤ĆĽˇĽšĽĆĽŕ¤ňşĆš˝ĂۤǤ­¤Ţ¤šĄŁ ĽĐĽĂĽŻĽ˘ĽĂĽ×¤ÎşîŔŽ ĽˇĽšĽĆĽŕ¤ňşĆš˝Ăۤš¤ëÁ°¤ËĄ˘ ĽĐĽĂĽŻĽ˘ĽĂĽ×¤ňşîŔޤš¤ë¤ł¤Č¤Î˝ĹÍ×Ŕ­¤ĎĄ˘ ¤¤¤Ż¤éśŻÄ´¤ˇ¤Ć¤â¤ˇ˛á¤Ž¤ë¤Č¸Ŕ¤Ś¤ł¤Č¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ĽˇĽšĽĆĽŕÁ´ÂΤκƚ˝ĂۤȤĎĆń¤ˇ¤¤şîśČ¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó¤ŹĄ˘ ¤É¤ó¤Ę¤ËĂí°Ő¤ˇ¤Ć¤¤¤ż¤Č¤ˇ¤Ć¤âĄ˘ Ľ˝ĄźĽšĽÄĽęĄź¤˝¤Î¤â¤Î¤Ëźę°ă¤¤¤Ź¤˘¤Ă¤żťţ¤Ë¤ĎĄ˘ ĽˇĽšĽĆĽŕ¤ŹľŻĆ°¤ˇ¤Ę¤Ż¤Ę¤Ă¤Ć¤ˇ¤Ţ¤ŚžőÂ֤ˤʤ뤳¤Č¤Ź¤˘¤ë¤Î¤Ç¤šĄŁ ¤Ţ¤şĄ˘ĽĐĽĂĽŻĽ˘ĽĂĽ×¤Ź¤­¤Á¤ó¤ČşîŔޤľ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňłÎǧ¤ˇ¤ĆĄ˘ ľŻĆ°˛ÄÇ˝Ľ¤ĽóĽšĽČĄźĽëĽáĽÇĽŁĽ˘¤ňÍѰդˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¿ʏĄ˘¤˝¤ě¤ňťČ¤Ś¤ł¤Č¤Ď¤Ę¤¤¤Čť×¤¤¤Ţ¤š¤ŹĄ˘ ¤˘¤Č¤Ç¸ĺ˛ů¤š¤ë¤ł¤Č¤Î¤Ę¤¤¤č¤ŚĄ˘Ç°¤Î¤ż¤áÍѰդˇ¤Ć¤Ş¤­¤Ţ¤ˇ¤ç¤ŚĄŁ ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤Ëť˛˛Ă¤š¤ë ĽáĄźĽęĽóĽ°ĽęĽšĽČ ¤â¤Č¤â¤ČĄ˘&os.stable; ¤Č &os.current; ¤ÎĽłĄźĽÉĽÖĽéĽóĽÁ¤ĎĄ˘ łŤČŻĂć¤Î¤â¤Î¤Ç¤šĄŁ &os; ¤ÎşîśČ¤Ëš×¸Ľ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤Ă¤Ć¤¤¤ëżÍĂŁ¤âżÍ´Ö¤Ç¤š¤Ť¤éĄ˘ ťţ¤Ë¤ĎĽßĽš¤ň¤š¤ë¤ł¤Č¤Ŕ¤Ă¤Ć¤˘¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤˝¤Î¤č¤Ś¤Ę´Ö°ă¤¤¤ĎĄ˘ Ăą¤ËˇŮšđ¤ňź¨¤š¸Ť´ˇ¤ě¤Ę¤¤żÇĂÇĽáĽĂĽťĄźĽ¸¤ňĽˇĽšĽĆĽŕ¤ŹÉ˝ź¨¤š¤ë¤č¤Ś¤ĘĄ˘ ¤Ţ¤Ă¤ż¤Żł˛¤Î¤Ę¤¤¤â¤Î¤Ç¤˘¤ë¤ł¤Č¤â¤˘¤ě¤ĐĄ˘ĽˇĽšĽĆĽŕ¤ňľŻĆ°¤Ç¤­¤Ę¤Ż¤ˇ¤ż¤ęĄ˘ ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňÇ˲ő¤ˇ¤Ć¤ˇ¤Ţ¤Ś¤č¤Ś¤ĘĄ˘ ś˛¤í¤ˇ¤¤ˇë˛Ě¤ňžˇ¤Ż¤â¤Î¤Ť¤âĂΤě¤Ţ¤ť¤óĄŁ ĚäÂꤏŔ¸¤¸¤żžěšçĄ˘ ĚäÂę¤ÎžÜşŮ¤ČĄ˘¤É¤Î¤č¤Ś¤ĘĽˇĽšĽĆĽŕ¤ŹąĆśÁ¤ňźő¤ą¤ë¤Ť¤Ë¤Ä¤¤¤Ć˝ń¤Ť¤ě¤ż Ăí°Ő (heads up) ¤Îľ­ťö¤ŹĹŹŔڤʼᥟĽęĽóĽ°ĽęĽšĽČ¤ËĹęšĆ¤ľ¤ě¤Ţ¤šĄŁ ¤˝¤ˇ¤ĆĄ˘¤˝¤ÎĚäÂꤏ˛ňˇč¤ľ¤ě¤ë¤ČĄ˘ ĚäÂę˛ňˇč (all clear) ¤ÎĽ˘ĽĘĽŚĽóĽšľ­ťö¤ŹĆąÍͤËĹęšĆ¤ľ¤ě¤Ţ¤šĄŁ &os.stable; ¤ä &os.current; ĽÖĽéĽóĽÁ¤ňÄɿ嵐¤Ć¤¤¤ëĽćĄźĽś¤ÇĄ˘ &a.stable; ¤ä &a.current; ¤ňĆɤޤʤ¤¤Č¤¤¤Ś¤Î¤ĎĄ˘ źŤ¤éşŇĆń¤ňžˇ¤Ż¤č¤Ś¤Ę¤â¤Î¤Ç¤šĄŁ ĚőĂí: ¤ł¤ě¤é¤ÎĽáĄźĽęĽóĽ°ĽęĽšĽČ¤ĎąŃ¸ě¤Ç¤ä¤ę¤Č¤ę¤ľ¤ě¤Ć¤¤¤ë¤ż¤áĄ˘ ĆüËܸě¤Ç¤ÎĹęšĆ¤Ď´żˇŢ¤ľ¤ě¤Ţ¤ť¤óĄŁąŃ¸ě¤Ç¤Î¤ä¤ę¤Č¤ę¤Ź¤Ç¤­¤Ę¤¤żÍ¤ĎĄ˘ FreeBSD ͧ¤Î˛ń ¤ÎążąÄ¤ˇ¤Ć¤¤¤ëĽáĄźĽęĽóĽ°ĽęĽšĽČ¤ň¤˘¤ż¤Ă¤Ć¤ß¤ë¤Î¤Ź¤¤¤¤¤Ç¤ˇ¤ç¤ŚĄŁ <command>make world</command> ¤ĎťČ¤ď¤Ę¤¤¤ł¤Č ¸Ĺ¤¤ĽÉĽ­ĽĺĽáĽóĽČ¤ÎĂć¤Ë¤ĎĄ˘ make world ¤ňťČ¤Ś¤ł¤Č¤ňÁڤá¤Ć¤¤¤ë¤â¤Î¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤ĎĄ˘˝ĹÍפʟę˝ç¤ň¤¤¤Ż¤Ä¤ŤČ´¤Ť¤ˇ¤Ć¤ˇ¤Ţ¤Ś¤Î¤ÇĄ˘ Ľ¨Ľ­ĽšĽŃĄźĽČ¤Ç¤Ę¤ą¤ě¤ĐťČ¤Ś¤Ů¤­¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ¤Ű¤Ü¤˘¤é¤ć¤ëžěšç¤Ë¤Ş¤¤¤ĆĄ˘make world ¤ňźÂšÔ¤š¤ë¤Î¤Ď´Ö°ă¤Ă¤Ć¤Ş¤ęĄ˘ ¤ł¤ł¤ÇŔâĚŔ¤ľ¤ě¤Ć¤¤¤ëźę˝ç¤ňÍѤ¤¤ë¤Ů¤­¤Ç¤šĄŁ ĽˇĽšĽĆĽŕ¤ňššżˇ¤š¤ëŔľź°¤ĘĘýËĄ ĽˇĽšĽĆĽŕ¤ňššżˇ¤š¤ëÁ°¤ËĄ˘ /usr/src/UPDATING ¤ňĆɤó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎĽŐĽĄĽ¤Ľë¤Ë¤ĎĄ˘ÍѰդˇ¤żĽ˝ĄźĽšĽłĄźĽÉ¤Ç buildworld ¤ňšÔ¤ŚÁ°¤ËÉŹÍפʟę˝ç¤Ź˝ń¤Ť¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤˝¤Î¸ĺĄ˘°Ę˛ź¤Îźę˝ç¤ňƧ¤ó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎŔá¤ÇŔâĚŔ¤š¤ëĽ˘ĽĂĽ×ĽÇĄźĽČ¤ÎĽ×ĽíĽťĽš¤ĎĄ˘¸Ĺ¤¤ĽłĽóĽŃĽ¤ĽéĄ˘ ¸Ĺ¤¤ĽŤĄźĽÍĽëĄ˘¸Ĺ¤¤ worldĄ˘¤˝¤ˇ¤Ć¸Ĺ¤¤ĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤Ť¤é¤Ę¤ëĄ˘ ¸Ĺ¤¤ĽĐĄźĽ¸ĽçĽó¤Î &os; ¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë¤ł¤Č¤ňÁŰÄꤡ¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ł¤Ç world ¤ĎĄ˘ĽłĽ˘ĽˇĽšĽĆĽŕ¤ÎĽĐĽ¤ĽĘĽęĄ˘ĽéĽ¤ĽÖĽéĽęĄ˘ Ľ×ĽíĽ°ĽéĽßĽóĽ°ĽŐĽĄĽ¤Ľë¤ň°ŐĚŁ¤ˇ¤Ţ¤šĄŁ ĽłĽóĽŃĽ¤Ľé¤Ď world ¤Î°ěÉô¤Ç¤š¤ŹĄ˘ ¤¤¤Ż¤Ä¤ŤĆĂĘ̤˾¤¤ň¤Ä¤ą¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤Ţ¤żĄ˘¤ł¤ě¤é¤ÎĽšĽĆĽĂĽ×¤Ç¤ĎĄ˘ żˇ¤ˇ¤¤ĽĐĄźĽ¸ĽçĽó¤ÎĽ˝ĄźĽš¤ň¤š¤Ç¤ËĆţźę¤ˇ¤Ć¤¤¤ë¤ł¤Č¤â˛žÄꤡ¤Ć¤¤¤Ţ¤šĄŁ ¤â¤ˇĽˇĽšĽĆĽŕ¤ÎĽ˝ĄźĽšĽłĄźĽÉ¤Ź¸Ĺ¤¤¤č¤Ś¤Ç¤ˇ¤ż¤éĄ˘ ¤ňĆɤó¤ÇĄ˘ Ľ˝ĄźĽšĽłĄźĽÉ¤ňżˇ¤ˇ¤¤ĽĐĄźĽ¸ĽçĽó¤ŘĆą´ü¤š¤ëĘýËĄ¤ÎžÜşŮ¤ňÍý˛ň¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Ľ˝ĄźĽš¤Ť¤é¤ÎĽˇĽšĽĆĽŕ¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČ¤ĎĄ˘ Ĺö˝éÍ˝Áۤˇ¤Ć¤¤¤ż¤â¤Î¤č¤ę¤Č¤é¤¨¤Ź¤ż¤¤¤â¤Î¤Ç¤šĄŁ Äš¤¤Çݎî¤Ë¤Ş¤¤¤ĆČň¤ą¤é¤ě¤Ę¤¤°Í¸ĚäÂꤏȽĚŔ¤ˇ¤ż¤ż¤áĄ˘ &os; ¤ÎłŤČŻźÔĂŁ¤ĎĄ˘żäžŠ¤ľ¤ě¤ëĽ˘Ľ×ĽíĄźĽÁ¤ňÂ礭¤ŻĘŃšš¤ˇ¤Ţ¤ˇ¤żĄŁ ¤ł¤ÎŔá¤Ç¤ĎĄ˘¸˝şßżäžŠ¤ľ¤ě¤Ć¤¤¤ëĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Îźę˝ç¤ÎÇظĺ¤Ë¤˘¤ëĄ˘ ÍýĎŔĹŞşŹľň¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ Ϣ³¤ˇ¤żĽ˘ĽĂĽ×ĽÇĄźĽČ¤Îźę˝ç¤ĎĄ˘°Ę˛ź¤ÎĚäÂę¤ËÂĐąţ¤ˇ¤Ć¤¤¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¸Ĺ¤¤ĽłĽóĽŃĽ¤Ľé¤ĎĄ˘ ĄĄ ĽĐĽ°¤ň´Ţ¤ßżˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤ňĽłĽóĽŃĽ¤Ľë¤Ç¤­¤Ę¤¤˛ÄÇ˝Ŕ­¤Ź¤˘¤ę¤Ţ¤š ¤˝¤Î¤ż¤áĄ˘żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤Îš˝Ăۤˤϥ˘ żˇ¤ˇ¤¤ĽłĽóĽŃĽ¤Ľé¤ňťČ¤ŚÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤ł¤Č¤Î¤ł¤Č¤ĎĄ˘żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤ňš˝Ăۤš¤ëÁ°¤ËĄ˘ żˇ¤ˇ¤¤ĽłĽóĽŃĽ¤Ľé¤ňš˝Ăۤˇ¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤ł¤Č¤ň°ŐĚŁ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ÉŹ¤ş¤ˇ¤âĄ˘żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤ňš˝Ăۤš¤ëÁ°¤ËĄ˘żˇ¤ˇ¤¤ĽłĽóĽŃĽ¤Ľé¤Ź Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ë ÉŹÍפʤ˘¤ë¤ł¤Č¤ň°ŐĚŁ¤ˇ¤Ć¤¤¤ë¤ď¤ą¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ żˇ¤ˇ¤¤ world ¤ĎĄ˘ żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤ÎľĄÇ˝¤Ë°Í¸¤ˇ¤Ć¤¤¤ë˛ÄÇ˝Ŕ­¤Ź¤˘¤ë¤ż¤áĄ˘ żˇ¤ˇ¤¤ world ¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ëÁ°¤ËĄ˘ żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤ŹĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ě¤é 2 ¤Ä¤Î˝ĹÍםöšŕ¤ĎĄ˘ °Ę˛ź¤ÎŔâĚŔ¤ÇĂćż´¤Č¤Ę¤ë buildworld, buildkernel, installkernel, installworld ¤Î´đËÜ¤Ç¤šĄŁ Âž¤ÎÍýÍł¤Ë¤Ä¤¤¤Ć¤Ď°Ę˛ź¤ÇĽęĽšĽČĽ˘ĽĂĽ×¤ˇ¤Ţ¤šĄŁ ¸Ĺ¤¤ world ¤ĎĄ˘żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤Ç¤ĎŔľ¤ˇ¤ŻĆ°¤Ť¤Ę¤¤¤Ť¤âĂΤě¤Ţ¤ť¤óĄŁ ¤˝¤Î¤ż¤áĄ˘żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤ż¤éĄ˘ Äž¤Á¤Ëżˇ¤ˇ¤¤ world ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ŔßÄę¤ÎĂć¤Ë¤ĎĄ˘żˇ¤ˇ¤¤ world ¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ëÁ°¤ËĘŃšš¤š¤Ů¤­¤â¤Î¤Ź¤˘¤ę¤Ţ¤š¤ŹĄ˘ ¸Ĺ¤¤ world ¤ň˛ő¤š˛ÄÇ˝Ŕ­¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤˝¤Î¤ż¤áĄ˘°ěČĚĹŞ¤ËŔßÄę¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČ¤ĎĄ˘ 2 ¤Ä¤Îźę˝ç¤ŹÉŹÍ×¤Ç¤šĄŁ Âż¤Ż¤ÎžěšçĄ˘Ľ˘ĽĂĽ×ĽÇĄźĽČ¤ÎĽ×ĽíĽťĽš¤ĎĄ˘ĽŐĽĄĽ¤Ľë¤ňĂÖ¤­´š¤¨¤ż¤ęĄ˘ ÄɲäΤߤňšÔ¤¤Ą˘¸Ĺ¤¤ĽŐĽĄĽ¤Ľë¤ňşď˝ü¤ˇ¤Ţ¤ť¤óĄŁ ¤ł¤Î¤ł¤Č¤ŹĚäÂę¤ň°ú¤­ľŻ¤ł¤š˛ÄÇ˝Ŕ­¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤˝¤Î¤ż¤áĄ˘Ľ˘ĽĂĽ×ĽÇĄźĽČ¤Ë¤Ş¤¤¤Ć¤ĎĄ˘ źęư¤Çşď˝ü¤š¤Ů¤­ĽŐĽĄĽ¤Ľë¤Ź¤˘¤ë¤ł¤Č¤ňĄ˘ ĆĂÄę¤ÎĽšĽĆĽĂĽ×¤ÇťŘÄꤚ¤ë¤ł¤Č¤â¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤Ďž­Í蟍ư˛˝¤ľ¤ě¤ë¤Ť¤â¤ˇ¤ě¤Ę¤¤¤ˇĄ˘¤ľ¤ě¤Ę¤¤¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¤ł¤ě¤é¤ňÇŰθ¤ˇĄ˘°Ę˛ź¤ÎżäžŠźę˝ç¤Źşî¤é¤ě¤Ţ¤ˇ¤żĄŁ Ľ˘ĽĂĽ×ĽÇĄźĽČ¤ÎşŮ¤Ť¤¤źę˝ç¤Ë¤Ş¤¤¤Ć¤ĎĄ˘ÄɲäΟę˝ç¤ŹÉŹÍפˤʤ뤍¤â¤ˇ¤ě¤Ţ¤ť¤ó¤ŹĄ˘ ¤ł¤ÎĂćż´¤Č¤Ę¤ëĽ×ĽíĽťĽš¤ĎĄ˘¤ˇ¤Đ¤é¤Ż¤Î´ÖĘѤď¤Ă¤Ć¤¤¤Ţ¤ť¤óĄŁ make buildworld żˇ¤ˇ¤¤ĽłĽóĽŃĽ¤Ľé¤Č´ŘϢĽÄĄźĽë¤ňşÇ˝é¤ËĽłĽóĽŃĽ¤Ľë¤ˇĄ˘ ¤˝¤Î¸ĺĄ˘żˇ¤ˇ¤¤ĽłĽóĽŃĽ¤Ľé¤ÇĄ˘ żˇ¤ˇ¤¤ world ¤ÎťÄ¤ę¤ÎÉôĘŹ¤ňĽłĽóĽŃĽ¤Ľë¤ˇ¤Ţ¤šĄŁ ĽłĽóĽŃĽ¤Ľë¤ľ¤ě¤ż¤â¤Î¤ĎĄ˘ /usr/obj ¤ËłĘÇź¤ľ¤ě¤Ţ¤šĄŁ make buildkernel ¤ł¤ł¤Ç¤ĎĄ˘ /usr/obj ¤Ë¤˘¤ë żˇ¤ˇ¤¤ ĽłĽóĽŃĽ¤Ľé¤ŹÍѤ¤¤é¤ě¤Ţ¤šĄŁ ¤ł¤ě¤Ë¤č¤ęĄ˘ĽłĽóĽŃĽ¤Ľé¤ČĽŤĄźĽÍĽë¤ÎĽßĽšĽŢĽĂĽÁ¤ňËɤ°¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ make installkernel żˇ¤ˇ¤ŻĽ˘ĽĂĽ×ĽÇĄźĽČ¤ľ¤ě¤żĽŤĄźĽÍĽë¤ÇľŻĆ°¤Ç¤­¤ë¤č¤Ś¤ËĄ˘ żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤ČĽŤĄźĽÍĽëĽâĽ¸ĽĺĄźĽë¤ňĽÇĽŁĽšĽŻžĺ¤ËÇŰĂÖ¤ˇ¤Ţ¤šĄŁ ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ÇşĆľŻĆ° ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ĎĄ˘ ¤š¤Ç¤ËźÂšÔ¤ľ¤ě¤Ć¤¤¤ëĽ˝ĽŐĽČĽŚĽ§Ľ˘¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ëşÝ¤ÎĚäÂę¤ňşÇžŽ¸Â¤Ë¤ˇ¤Ţ¤šĄŁ ¤Ţ¤żĄ˘żˇ¤ˇ¤¤ĽŤĄźĽÍĽëžĺ¤Ç¸Ĺ¤¤ world ¤ŹźÂšÔ¤ľ¤ě¤ëşÝ¤ÎĚäÂę¤âşÇžŽ¸Â¤Ë¤ˇ¤Ţ¤šĄŁ mergemaster żˇ¤ˇ¤¤ world ¤Ë¤Ş¤ą¤ëşÇ˝é¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČ¤ňšÔ¤¤¤Ţ¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘żˇ¤ˇ¤¤ĽćĄźĽśĽ°ĽëĄźĽ×¤ňĽˇĽšĽĆĽŕ¤ËÄɲ䡤ż¤ęĄ˘ ĽŃĽšĽďĄźĽÉĽÇĄźĽżĽŮĄźĽš¤ËÂФˇĄ˘żˇ¤ˇ¤¤ĽćĄźĽśĚž¤ňÄɲ䚤뤍¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ Á°˛ó¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČ¸ĺ¤ËĄ˘ żˇ¤ˇ¤¤Ľ°ĽëĄźĽ×¤äĆĂĘ̤μˇĽšĽĆĽŕ¤ÎĽćĄźĽśĽ˘ĽŤĽŚĽóĽČ¤ŹÄɲ侤줿žěšç¤ËĄ˘ installworld ¤ÎĽšĽĆĽĂĽ×¤ÇĄ˘ żˇ¤ˇ¤ŻĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤żĽˇĽšĽĆĽŕ¤ÎĽćĄźĽś¤Ţ¤ż¤ĎĽˇĽšĽĆĽŕ¤ÎĽ°ĽëĄźĽ×Ěž¤ňĚäÂę¤Ę¤ŻťČ¤Ś¤ł¤Č¤Ź¤Ç¤­¤ë¤č¤Ś¤ËĄ˘ ¤ł¤ÎşîśČ¤Ź¤Č¤­¤É¤­ÉŹÍפȤʤę¤Ţ¤šĄŁ make installworld world ¤ň /usr/obj ¤Ť¤éĽłĽÔĄź¤ˇ¤Ţ¤šĄŁ ¤ł¤ě¤ÇĄ˘ĽÇĽŁĽšĽŻ¤Ë¤Ďżˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤Č world ¤ŹĂÖ¤Ť¤ě¤ż¤ł¤Č¤Ë¤Ę¤ę¤Ţ¤šĄŁ mergemaster ĽÇĽŁĽšĽŻ¤Ëżˇ¤ˇ¤¤ world ¤ŹĂÖ¤Ť¤ě¤ż¤Î¤ÇĄ˘ ťÄ¤ę¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤ňĽ˘ĽĂĽ×ĽÇĄźĽČ¤ˇ¤Ţ¤šĄŁ make delete-old ¤ł¤ÎĽżĄźĽ˛ĽĂĽČ¤Ď (ťČ¤ď¤ě¤Ę¤Ż¤Ę¤Ă¤ż) ĽŐĽĄĽ¤Ľë¤ňşď˝ü¤ˇ¤Ţ¤šĄŁ ¤â¤ˇťČ¤ď¤ě¤Ę¤Ż¤Ę¤Ă¤żĽŐĽĄĽ¤Ľë¤ŹĽÇĽŁĽšĽŻ¤ËťÄ¤Ă¤Ć¤¤¤ë¤ČĄ˘ ĚäÂꤏľŻ¤­¤ë˛ÄÇ˝Ŕ­¤Ź¤˘¤ë¤ż¤á˝ĹÍפʺîśČ¤Ç¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘¸Ĺ¤¤ utmp.h ¤ŹťÄ¤Ă¤Ć¤¤¤ë¤ČĄ˘ żˇ¤ˇ¤¤ utmpx.h ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤ż¤Č¤­¤ËĄ˘ ĚäÂꤏľŻ¤­¤ë ports ¤Ź¤˘¤ę¤Ţ¤šĄŁ şĆľŻĆ° żˇ¤ˇ¤¤ĽŤĄźĽÍĽëĄ˘world ¤˝¤ˇ¤ĆŔßÄęĽŐĽĄĽ¤Ľë¤ŹĽíĄźĽÉ¤ľ¤ě¤ż¤Î¤ÇĄ˘ şĆľŻĆ°¤ŹÉŹÍ×¤Ç¤šĄŁ make delete-old-libs ťČ¤ď¤ě¤Ę¤Ż¤Ę¤Ă¤żĽéĽ¤ĽÖĽéĽę¤Źżˇ¤ˇ¤¤ĽéĽ¤ĽÖĽéĽę¤ČśĽšç¤š¤ë¤ł¤Č¤ňČň¤ą¤ë¤ż¤áşď˝ü¤ˇ¤Ţ¤šĄŁ ¸Ĺ¤¤ĽéĽ¤ĽÖĽéĽę¤ňşď˝ü¤š¤ëÁ°¤Ë¤š¤Ů¤Ć¤Î ports ¤ňşĆš˝Ăۤš¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤â¤ˇĄ˘&os; ¤Î¤˘¤ëĽÖĽéĽóĽÁ¤Î¤˘¤ëĽęĽęĄźĽš¤Ť¤éĄ˘ Ćą¤¸ĽÖĽéĽóĽÁ¤ÎşÇżˇĽęĽęĄźĽš¤ËĽ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ë¤Î¤Ç¤˘¤ě¤Đ (¤ż¤Č¤¨¤Đ 9.0 ¤Ť¤é 9.1)Ą˘ ¤ł¤Îźę˝ç¤Ë¤ˇ¤ż¤Ź¤ď¤Ę¤Ż¤Ć¤âÎɤ¤¤Ç¤ˇ¤ç¤ŚĄŁ ¤Ę¤ź¤Ę¤é¤ĐĄ˘ĽłĽóĽŃĽ¤ĽéĄ˘ĽŤĄźĽÍĽëĄ˘ĽćĄźĽśĽéĽóĽÉĄ˘¤˝¤ˇ¤ĆŔßÄęĽŐĽĄĽ¤Ľë¤Î´Ö¤ÇĄ˘ ˝ĹĹ٤μ߼šĽŢĽĂĽÁ¤ŹľŻ¤­¤ë¤ł¤Č¤Ď¤˘¤Ţ¤ęšÍ¤¨¤é¤ě¤Ę¤¤¤ż¤á¤Ç¤šĄŁ ĽŢĽ¤ĽĘĄź¤ĘĽ˘ĽĂĽ×ĽÇĄźĽČ¤Ç¤ĎĄ˘żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤Îš˝Ăۤȼ¤ĽóĽšĽČĄźĽë¸ĺ¤ËĄ˘ ¸Ĺ¤¤Ľ˘Ľ×ĽíĄźĽÁ¤Ç¤˘¤ë make world ¤ňÍѤ¤¤Ć¤â¤Ś¤Ţ¤Ż¤¤¤Ż¤Ç¤ˇ¤ç¤ŚĄŁ ĽáĽ¸ĽăĄźĽęĽęĄźĽš¤ň¤Ţ¤ż¤¤¤ŔĽ˘ĽĂĽ×ĽÇĄźĽČ¤Ç¤ĎĄ˘ ¤ł¤ÎĘýËĄ¤ňÍѤ¤¤Ę¤¤¤ČĄ˘˛ż¤é¤Ť¤ÎĚäÂę¤Ë¤Ö¤Ä¤Ť¤ë¤Ç¤ˇ¤ç¤ŚĄŁ Â礭¤ĘĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Ë¤Ş¤¤¤Ć¤ĎĄ˘ installworld ¤ÎÁ°¤ËĆĂÄę¤ÎĽŐĽĄĽ¤Ľë¤ÎĚžÁ°¤ÎĘŃšš¤äşď˝ü¤š¤ë¤Č¤¤¤Ă¤żĄ˘ ĆĂĘ̤ĘÄɲäμšĽĆĽĂĽ×¤ŹÉŹÍפȤʤ뤳¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ /usr/src/UPDATING ¤ňĂí°Őżź¤ŻĆɤó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ Ćä˼ռĄĽ¤Ľë¤ÎşÇ¸ĺ¤Ë¤ĎĄ˘ ¸˝şßżäžŠ¤ľ¤ě¤Ć¤¤¤ëĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Îźę˝ç¤ŹžÜ¤ˇ¤ŻŔľłÎ¤ËŔâĚŔ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎźęÂł¤­¤ĎĄ˘ łŤČŻźÔ¤ż¤Á¤Ź¤˘¤ëźď¤ÎĽßĽšĽŢĽĂĽÁ¤ň´°Á´¤ËČň¤ą¤ë¤ż¤á¤ËĄ˘Äš¤¤Çݎî¤ň¤Ť¤ą¤ĆżĘ˛˝¤ˇ¤Ć¤­¤Ţ¤ˇ¤żĄŁ ´ę¤ď¤Ż¤ĐĄ˘¤ł¤Î¸˝şß¤Îźę˝ç¤ŹÄ𤤴ְÂÄꤡ¤Ć¤Ű¤ˇ¤¤¤â¤Î¤Ç¤šĄŁ ¤Ţ¤Č¤á¤ë¤ČĄ˘¸˝şßĄ˘Ľ˝ĄźĽš¤Ť¤é¤Î &os; ¤ÎĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Ë¤Ş¤¤¤ĆżäžŠ¤ľ¤ě¤Ć¤¤¤ëĘýËĄ¤Ď°Ę˛ź¤Č¤Ę¤ę¤Ţ¤šĄŁ &prompt.root; cd /usr/src &prompt.root; make buildworld &prompt.root; make buildkernel &prompt.root; make installkernel &prompt.root; shutdown -r now ¤Ţ¤ě¤Ë buildworld ¤ÎÁ°¤Ë mergemaster -p ¤ň͞ʏ¤ËźÂšÔ¤š¤ë¤ł¤Č¤ŹÉŹÍפʞěšç¤Ź¤˘¤ę¤Ţ¤šĄŁ¤˝¤Îžěšç¤Ď UPDATING ¤Ë¤˝¤Ś˝ń¤Ť¤ě¤Ć¤¤¤Ţ¤šĄŁ &os; ¤ÎĽáĽ¸ĽăĄźĽĐĄźĽ¸ĽçĽó¤ň¤Ţ¤ż¤¤¤Çššżˇ¤š¤ë¤Î¤Ç¤Ę¤ą¤ě¤ĐĄ˘ ÄĚžď¤Ď¤ł¤Îźę˝ç¤ňžĘÎŹ¤ˇ¤Ć¤â¤Ę¤ó¤éĚäÂę¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ installkernel ¤ŹĚľťö¤Ë˝ŞÎť¤ˇ¤ż¤éĄ˘ĽíĄźĽŔ¤ÎĽ×ĽíĽóĽ×ĽČ¤Ť¤é boot -s ¤ňťČ¤Ă¤ĆĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ÇΊ¤Ážĺ¤˛¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤˝¤ě¤Ť¤éĄ˘°Ę˛ź¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; adjkerntz -i &prompt.root; mergemaster -p &prompt.root; cd /usr/src &prompt.root; make installworld &prompt.root; mergemaster &prompt.root; make delete-old &prompt.root; reboot &prompt.root; make delete-old-libs ¤ł¤Î¸ĺ¤ÎŔâĚŔ¤ňĆɤó¤Ç¤Ż¤Ŕ¤ľ¤¤ ¤ł¤Î¸ĺ¤ÎŔá¤Ç¤Ď¤˝¤ě¤ž¤ě¤ÎĽšĽĆĽĂĽ×¤Ë¤Ä¤¤¤ĆžÜ¤ˇ¤ŻŔâĚŔ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ Ćä˼ŤĽšĽżĽŕĽŤĄźĽÍĽë¤ňÍřÍѤš¤ëžěšç¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ <filename>/usr/src/UPDATING</filename> ¤ňĆÉ¤ŕ Ľ˘ĽĂĽ×ĽÇĄźĽČ¤š¤ëÁ°¤ËĄ˘ /usr/src/UPDATING ¤ňĆɤó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎĽŐĽĄĽ¤Ľë¤Ë¤ĎŔřşßĹŞ¤ĘĚäÂę¤ä ĆĂÄę¤ÎĽłĽŢĽóĽÉ¤Î˝ç¤Ę¤É¤Î˝ĹÍפʞđĘ󤏴ޤޤě¤Ć¤¤¤Ţ¤šĄŁ UPDATING ¤Ź¤ł¤ÎŔá¤Ë˝ń¤Ť¤ě¤Ć¤¤¤ë¤â¤Î¤Č̡˝â¤ˇ¤Ć¤¤¤ëťţ¤Ď UPDATING ¤ňÍĽŔ褡¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ UPDATING ¤ňĆɤŕ¤Č¤¤¤Ś¤ł¤Č¤ĎĄ˘ ĹŹŔڤʼᥟĽęĽóĽ°ĽęĽšĽČ¤ňšŘĆɤš¤ëÂĺ¤ď¤ę¤Ë¤Ď¤Ę¤ę¤Ţ¤ť¤óĄŁ Ćó¤Ä¤ÎÍ׾á¤ĎÁęĘäĹŞ¤Ę¤â¤Î¤ÇÇÓžŪ¤Ę¤â¤Î¤Ç¤Ď¤Ę¤¤¤Î¤Ç¤šĄŁ <filename>/etc/make.conf</filename> ¤ÎłÎǧ make.conf &man.make.1; ¤ÎĽŞĽ×ĽˇĽçĽó¤ÎŔâĚŔ¤ĎĄ˘&man.make.conf.5; ¤ä /usr/share/examples/etc/make.conf ¤Ë¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎŔßÄę¤ň /etc/make.conf ¤ËÄɲ䡤ƥ˘ &man.make.1; ¤ÎźÂšÔ¤äĽ×ĽíĽ°ĽéĽŕ¤Îš˝ĂŰĘýËĄ¤ňŔßÄꤡ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤˘¤ëŔßÄę¤ňĘŃšš¤ˇ¤ż¤ł¤Č¤Ë¤č¤ęĄ˘ąĆśÁ¤Źš­¤¤ČĎ°Ď¤Ë¤Ş¤č¤ÓĄ˘ śĂ¤Ż¤Ů¤­ˇë˛Ě¤ň¤â¤ż¤é¤š˛ÄÇ˝Ŕ­¤Ź¤˘¤ę¤Ţ¤šĄŁ ΞĘý¤ÎĽŐĽĄĽ¤Ľë¤Ë˝ń¤Ť¤ě¤Ć¤¤¤ëĽłĽáĽóĽČ¤ňĆɤळ¤Č¤ČĄ˘ ĽÇĽŐĽŠĽëĽČ¤ÎŔßÄę¤ĎĄ˘ĽŃĽŐĽŠĄźĽŢĽóĽš¤Č°ÂÁ´Ŕ­¤Î´ŃĹŔ¤Ť¤éÁŞ¤Đ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňłĐ¤¨¤Ć¤Ş¤¤¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /etc/make.conf ¤ÇŔßÄꤾ¤ě¤żĽŞĽ×ĽˇĽçĽó¤ĎĄ˘ &man.make.1; ¤ŹťČ¤ď¤ě¤ëşÝ¤Ë¤Ďžď¤ËÍ­¸ú¤Č¤Ę¤ę¤Ţ¤šĄŁ Ports Collection ¤Ť¤éĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ňĽłĽóĽŃĽ¤Ľë¤š¤ëťţĄ˘ ĽćĄźĽś¤Ź˝ń¤¤¤ż C Ľ×ĽíĽ°ĽéĽŕ¤ä &os; ĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤ňš˝Ăۤš¤ëşÝ¤ËąĆśÁ¤ňľÚ¤Ü¤ˇ¤Ţ¤šĄŁ <filename>/etc/src.conf</filename> ¤ňłÎǧ¤š¤ë src.conf /etc/src.conf ¤ĎĄ˘ Ľ˝ĄźĽšĽłĄźĽÉ¤ňÍѤ¤¤żĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤Îš˝ĂۤˤĤ¤¤ĆĽłĽóĽČĽíĄźĽë¤ˇ¤Ţ¤šĄŁ /etc/make.conf ¤Č¤Ď°Ű¤Ę¤ęĄ˘ /etc/src.conf ¤Ë˝ń¤Ť¤ě¤żŔßÄę¤ĎĄ˘ &os; ĽŞĽÚĽěĄźĽĆĽŁĽóĽ°ĽˇĽšĽĆĽŕ¤˝¤Î¤â¤Î¤ňš˝Ăۤš¤ë¤Č¤­¤Ë¤Î¤ßąĆśÁ¤ˇ¤Ţ¤šĄŁ ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ÇŔßÄę˛ÄÇ˝¤ĘÂż¤Ż¤ÎĽŞĽ×ĽˇĽçĽó¤Ë¤Ä¤¤¤Ć¤ĎĄ˘ &man.src.conf.5; ¤Ëľ­˝Ň¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ °ě¸Ť¤ˇ¤ż¤Č¤ł¤íĚľ¸ú¤Ë¤ľ¤ě¤Ć¤¤¤ëĄ˘ ťČ¤ď¤ě¤Ć¤¤¤Ę¤¤ĽŤĄźĽÍĽëĽâĽ¸ĽĺĄźĽë¤äĽÓĽëĽÉĽŞĽ×ĽˇĽçĽó¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤Č¤­¤É¤­Í˝´ü¤ˇ¤Ę¤Ť¤Ă¤ż¤ęĄ˘¤ď¤ş¤Ť¤ĘąĆśÁ¤ňÍż¤¨¤ë¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ <filename>/etc</filename> ¤Ë¤˘¤ëĽŐĽĄĽ¤Ľë¤Îššżˇ /etc ¤Ë¤ĎĄ˘ ĽˇĽšĽĆĽŕľŻĆ°ťţ¤ËźÂšÔ¤ľ¤ě¤ëĽšĽŻĽęĽ×ĽČ¤Ŕ¤ą¤Ç¤Ę¤ŻĄ˘ ĽˇĽšĽĆĽŕ¤ÎŔßÄę¤Ë´ŘϢ¤š¤ëžđĘó¤ÎÂçÉôĘŹ¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤˝¤ÎĽÇĽŁĽěĽŻĽČĽę¤Ë´Ţ¤Ţ¤ě¤ëĽšĽŻĽęĽ×ĽČ¤ĎĄ˘ &os; ¤ÎĽĐĄźĽ¸ĽçĽó¤Ë¤č¤Ă¤ĆÂżžŻ°Ű¤Ę¤ę¤Ţ¤šĄŁ ŔßÄęĽŐĽĄĽ¤Ľë¤Î¤Ę¤Ť¤Ë¤ĎĄ˘/etc/group ¤Î¤č¤Ś¤Ë˛ÔĆŻĂć¤ÎĽˇĽšĽĆĽŕ¤ŹĆüĄšÍřÍѤˇ¤Ć¤¤¤ë¤â¤Î¤â¤˘¤ę¤Ţ¤šĄŁ make installworld ¤Ë¤č¤ëĽ¤ĽóĽšĽČĄźĽë¤ÎĂĘłŹ¤Ç¤ĎĄ˘ ĆĂÄę¤ÎĽćĄźĽśĚžĄ˘¤˘¤ë¤¤¤ĎĽ°ĽëĄźĽ×¤ŹÂ¸şß¤ˇ¤Ć¤¤¤ë¤ł¤Č¤ň Í׾ᤚ¤ëžěĚĚ¤Ź¤˘¤ę¤Ţ¤šĄŁĽˇĽšĽĆĽŕ¤ÎĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ňšÔ¤Ę¤ŚşÝ¤Ë¤ĎĄ˘ ¤˝¤ě¤é¤ÎĽćĄźĽśĚž¤äĽ°ĽëĄźĽ×¤Źşď˝üĄ˘ ¤˘¤ë¤¤¤ĎĘŃšš¤ľ¤ě¤Ć¸şß¤ˇ¤Ć¤¤¤Ę¤¤˛ÄÇ˝Ŕ­¤ŹšÍ¤¨¤é¤ě¤Ţ¤šĄŁ make buildworld ¤Ë¤Ş¤¤¤ĆĄ˘ ¤˝¤ě¤é¤ÎĽćĄźĽśĚž¤äĽ°ĽëĄźĽ×¤ŹÂ¸şß¤š¤ë¤ŤłÎǧ¤ŹšÔ¤ď¤ě¤ëžěšç¤â¤˘¤ę¤Ţ¤šĄŁ ˛ňˇčĘýËĄ¤ĎĄ˘buildworld ¤ÎÁ°¤Ë ¤ň¤Ä¤ą¤Ć &man.mergemaster.8; ¤ňźÂšÔ¤š¤ë¤ł¤Č¤Ç¤šĄŁ ¤ł¤ě¤ňźÂšÔ¤š¤ë¤ČĄ˘buildworld ¤ä installworld ¤ŹŔޏů¤š¤ë¤ż¤á¤ËÉŹÍפʼռĄĽ¤Ľë¤Ŕ¤ą¤ňČćłÓ¤ˇ¤Ţ¤šĄŁ ĚžÁ°¤ňĘŃšš¤ˇ¤ż¤ęĄ˘şď˝ü¤ˇ¤Ć¤ˇ¤Ţ¤Ă¤żĽ°ĽëĄźĽ×¤Ź˝ęÍ­¤ˇ¤Ć¤¤¤ëĽŐĽĄĽ¤Ľë¤ňĄ˘ źĄ¤Î¤č¤Ś¤Ë¤ˇ¤ĆÄ´¤Ů¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ &prompt.root; find / -group GID -print ¤ł¤ÎĽłĽŢĽóĽÉ¤ĎĽ°ĽëĄźĽ×Ěž¤â¤ˇ¤Ż¤Ďżôťú¤Çꍤľ¤ě¤ëĽ°ĽëĄźĽ× ID ¤ÇťŘÄꤾ¤ě¤żĽ°ĽëĄźĽ× GID ¤Ź˝ęÍ­¤š¤ë¤š¤Ů¤Ć¤ÎĽŐĽĄĽ¤Ľë¤ňÉ˝ź¨¤ˇ¤Ţ¤šĄŁ ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤Ř¤Î°ÜšÔ ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ ĽłĽóĽŃĽ¤Ľë¤ĎĄ˘ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ÇšÔ¤Ę¤Ś¤ł¤Č¤ňšÍ¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽˇĽšĽĆĽŕ¤ÎşĆĽ¤ĽóĽšĽČĄźĽë¤Ď˝ĹÍפʼˇĽšĽĆĽŕĽŐĽĄĽ¤ĽëĄ˘ ¤š¤Ů¤Ć¤Îɸ˝ŕĽˇĽšĽĆĽŕ¤ÎĽĐĽ¤ĽĘĽęĄ˘ĽéĽ¤ĽÖĽéĽęĄ˘Ľ¤ĽóĽŻĽëĄźĽÉĽŐĽĄĽ¤Ľë¤ňÁŕşî¤ˇ¤Ţ¤šĄŁ ˛ÔĆŻĂć¤ÎĽˇĽšĽĆĽŕ¤Ë (ĆäËž¤ÎĽćĄźĽś¤Ź¤˝¤ÎĽˇĽšĽĆĽŕ¤ËĽíĽ°Ľ¤Ľó¤ˇ¤Ć¤¤¤ëťţ¤Ë) ¤˝¤Î¤č¤Ś¤ĘĘŃšš¤ň˛Ă¤¨¤ë¤ł¤Č¤ĎĄ˘ĽČĽéĽÖĽë¤ň°ú¤­ľŻ¤ł¤š¸ś°ř¤Č¤Ę¤ę¤Ţ¤šĄŁ ĽŢĽëĽÁĽćĄźĽśĽâĄźĽÉ ¤â¤Ś°ě¤Ä¤ÎĘýËĄ¤Č¤ˇ¤ĆĄ˘ĽŢĽëĽÁĽćĄźĽśĽâĄźĽÉ¤ÇĽˇĽšĽĆĽŕ¤ňşĆš˝Ăۤˇ¤ĆĄ˘ ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤Ë°ÜšÔ¤ˇ¤Ć¤Ť¤é¤˝¤ě¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ëĄ˘ ¤Č¤¤¤Ś¤Î¤Ź¤˘¤ę¤Ţ¤šĄŁ¤â¤ˇ¤ł¤Î¤č¤Ś¤ĘĘýËĄ¤ÇšÔ¤Ę¤¤¤ż¤¤žěšç¤ĎĄ˘ °Ę˛ź¤Îźę˝ç¤ňš˝ĂŰ¤Ź´°Îť¤š¤ë¤Č¤ł¤í¤Ţ¤ÇČô¤Đ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ installkernel ¤â¤ˇ¤Ż¤Ď installworld ¤ňźÂšÔ¤š¤ëşÝ¤ËĄ˘ ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤Ë°ÜšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; shutdown now ¤˘¤ë¤¤¤ĎĽˇĽšĽĆĽŕ¤ňşĆľŻĆ°¤ˇĄ˘ĽÖĄźĽČĽ×ĽíĽóĽ×ĽČ¤Ť¤é single user ĽŞĽ×ĽˇĽçĽó¤ňÁŞÂň¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ÇľŻĆ°¤ˇ¤ż¸ĺ¤ĎĄ˘ ĽˇĽ§ĽëĽ×ĽíĽóĽ×ĽČ¤Ť¤éźĄ¤Î¤č¤Ś¤ËźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; fsck -p &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; swapon -a ¤ł¤ě¤ĎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĽÁĽ§ĽĂĽŻ¤ˇ¤ż¸ĺĄ˘ / ¤ňĆɤ߽ń¤­˛ÄÇ˝¤Ë¤ˇ¤ĆşĆĽŢĽŚĽóĽČĄ˘ /etc/fstab ¤ËťŘÄꤾ¤ě¤Ć¤¤¤ëĄ˘ ¤˝¤ě°Ęł°¤Î UFS ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ň¤š¤Ů¤ĆĽŢĽŚĽóĽČ¤ˇ¤Ć¤Ť¤é ĽšĽďĽĂĽ×¤ňÍ­¸ú¤Ë¤ˇ¤Ţ¤šĄŁ CMOS ĽŻĽíĽĂĽŻ¤ŹĂϰčťţ´Ö¤ËŔßÄꤾ¤ě¤Ć¤¤¤Ć GMT ¤Ç¤Ď¤Ę¤¤žěšç (&man.date.1; ¤ŹŔľ¤ˇ¤¤ťţ´Ö¤ČĂϰč¤ňÉ˝ź¨¤ˇ¤Ę¤¤¤Ę¤éĹö¤Ć¤Ď¤Ţ¤ę¤Ţ¤š)Ą˘ źĄ¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; adjkerntz -i ¤ł¤Ś¤š¤ě¤ĐĄ˘ łÎźÂ¤ËĂϰčťţšď¤ŹŔľ¤ˇ¤ŻŔßÄꤾ¤ě¤Ţ¤šĄŁ <filename>/usr/obj</filename> ¤Îşď˝ü ĽˇĽšĽĆĽŕ¤ŹşĆš˝Ăۤľ¤ě¤ëťţĄ˘š˝Ăۤľ¤ě¤ż¤â¤Î¤ĎĽÇĽŐĽŠĽëĽČ¤Ç /usr/obj °Ę˛ź¤ÎĽľĽÖĽÇĽŁĽěĽŻĽČĽę¤ËłĘÇź¤ľ¤ě¤Ţ¤šĄŁ ¤˝¤ÎĽÇĽŁĽěĽŻĽČĽę¤Î˛ź¤Ď /usr/src ¤ČĆą¤¸š˝Â¤¤Č¤Ę¤ę¤Ţ¤šĄŁ ¤â¤ˇ¤ł¤ÎĽÇĽŁĽěĽŻĽČĽę¤ŹÂ¸şß¤ˇ¤Ć¤¤¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘ ¤ł¤ÎĽÇĽŁĽěĽŻĽČĽę¤ňşď˝ü¤ˇ¤ĆĄ˘ make buildworld ¤ÎšÔÄř¤Ë¤Ť¤Ť¤ëťţ´Ö¤ňĂť˝Ě¤ˇĄ˘ °Í¸ĚäÂę¤ËÇş¤Ţ¤ľ¤ě¤ë¤č¤Ś¤ĘĽČĽéĽÖĽë¤ň˛óČň¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ /usr/obj °Ę˛ź¤ÎĽŐĽĄĽ¤Ľë¤Ë¤ĎĄ˘ĘŃššÉÔ˛Ä (immutable) ĽŐĽéĽ°¤ŹĽťĽĂĽČ¤ľ¤ě¤Ć¤¤¤ë¤â¤Î¤Ź¤˘¤ë˛ÄÇ˝Ŕ­¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ł¤Î¤č¤Ś¤ĘĽŐĽĄĽ¤Ľë¤ĎşÇ˝é¤Ë &man.chflags.1; ¤ňÍѤ¤¤Ć¤Ť¤éşď˝ü¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ &prompt.root; cd /usr/obj &prompt.root; chflags -R noschg * &prompt.root; rm -rf * ĽŮĄźĽšĽˇĽšĽĆĽŕ¤ÎşĆš˝ĂŰ ˝ĐÎĎĽáĽĂĽťĄźĽ¸¤ÎĘݸ źÂšÔ¤ľ¤ě¤ë &man.make.1; ¤Ť¤é¤Î˝ĐÎϤϥ˘ĽŐĽĄĽ¤Ľë¤ËĘݸ¤š¤ë¤ČÎɤ¤¤Ç¤ˇ¤ç¤ŚĄŁ ¤â¤ˇĄ˘˛ż¤Ťžăł˛¤ŹČŻŔ¸¤ˇ¤żžěšçĄ˘Ľ¨ĽéĄźĽáĽĂĽťĄźĽ¸¤ÎĽłĽÔĄź¤ň &os; ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤ËĹęšĆ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŐĽĄĽ¤Ľë¤ËĘݸ¤š¤ëşÇ¤â´ĘĂą¤ĘĘýËĄ¤ĎĄ˘&man.script.1; ĽłĽŢĽóĽÉ¤ňťČ¤¤Ą˘°úżô¤Ë˝ĐÎϤňĘݸ¤ˇ¤ż¤¤ĽŐĽĄĽ¤ĽëĚž¤ňťŘÄꤚ¤ë¤ł¤Č¤Ç¤šĄŁ ¤ł¤ě¤ň make world ¤ÎÄžÁ°¤ËšÔ¤Ę¤¤Ą˘şĆš˝ĂŰ¤Ź˝ŞÎť¤ˇ¤ż¤é °Ę˛ź¤Î¤č¤Ś¤Ë exit ¤ČĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; script /var/tmp/mw.out Script started, output file is /var/tmp/mw.out &prompt.root; make TARGET … compile, compile, compile … &prompt.root; exit Script done, … /tmp ¤Ë˝ĐÎϤňĘݸ¤ˇ¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ ¤ł¤ÎĽÇĽŁĽěĽŻĽČĽę¤ĎĄ˘źĄ¤ÎşĆľŻĆ°¤Çşď˝ü¤ľ¤ě¤Ć¤ˇ¤Ţ¤Ś˛ÄÇ˝Ŕ­¤Ź¤˘¤ę¤Ţ¤šĄŁ ˝ĐÎϤÎĘݸ¤Ë¤ĎĄ˘/var/tmp ¤ä root ¤ÎĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę¤ŹĹʤˇ¤Ć¤¤¤Ţ¤šĄŁ ĽŮĄźĽšĽˇĽšĽĆĽŕ¤Îš˝ĂŰ /usr/src ¤Ë¤ĆĄ˘ źĄ¤Î¤č¤Ś¤ËźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cd /usr/src make world ¤ňşĆš˝Ăۤš¤ë¤Ë¤ĎĄ˘&man.make.1; ¤ňťČÍѤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎĽłĽŢĽóĽÉ¤ĎĄ˘Makefile ¤Ť¤éĄ˘ &os; ¤ňš˝Ŕޤš¤ëĽ×ĽíĽ°ĽéĽŕ¤ÎşĆš˝ĂŰĘýËĄ¤äĄ˘ ¤É¤Ś¤¤¤Ś˝çČ֤Ǥ˝¤ě¤é¤ňš˝Ăۤš¤Ů¤­¤Ť¤Č¤¤¤Ă¤ż¤č¤Ś¤ĘťŘꍤňĆɤߚţ¤ß¤Ţ¤šĄŁ ĽłĽŢĽóĽÉĽéĽ¤Ľó¤Î°ěČĚĹŞ¤Ę˝ńź°¤ĎĄ˘źĄ¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ &prompt.root; make -x -DVARIABLE target ¤ł¤ÎÎă¤Ç¤ĎĄ˘ ¤Ź &man.make.1; ¤ËĹϤľ¤ě¤ëĽŞĽ×ĽˇĽçĽó¤Ë¤Ę¤ę¤Ţ¤šĄŁ ¤É¤Î¤č¤Ś¤ĘĽŞĽ×ĽˇĽçĽó¤ŹÍřÍѤǤ­¤ë¤Ť¤Ë¤Ä¤¤¤Ć¤ĎĄ˘&man.make.1; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ĎĄ˘ Makefile ¤ËĹϤľ¤ě¤ëĘŃżô¤Ç¤˘¤ęĄ˘ ¤ł¤ÎĘŃżô¤Ď Makefile ¤Îưşî¤ňĽłĽóĽČĽíĄźĽë¤ˇ¤Ţ¤šĄŁ ¤Ţ¤żĄ˘/etc/make.conf ¤ÇŔßÄꤾ¤ě¤ëĘŃżô¤â ĆąÍÍ¤Ç¤šĄŁ¤ł¤ě¤ĎĘŃżô¤ňŔßÄꤚ¤ë¤â¤Ś°ě¤Ä¤ÎĘýËĄ¤Č¤ˇ¤ĆÍѰդľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ż¤Č¤¨¤Đ°Ę˛ź¤ÎÄ̤ę¤Ç¤šĄŁ &prompt.root; make -DNO_PROFILE target ¤ĎĄ˘Ľ×ĽíĽŐĽĄĽ¤ĽëČǤμ鼤ĽÖĽéĽę¤ňš˝Ăۤˇ¤Ę¤¤¤ł¤Č¤ňťŘÄꤚ¤ë ¤â¤Ś°ě¤Ä¤Îľ­ËĄ¤ÇĄ˘/etc/make.conf Ăć¤Î NO_PROFILE= true # Avoid compiling profiled libraries ¤ÎšÔ¤ËÂĐąţ¤ˇ¤Ţ¤šĄŁ target ¤ĎĄ˘&man.make.1; ¤Ë ¤É¤Î¤č¤Ś¤Ëưşî¤š¤ë¤Î¤Ť¤ňťŘꍤš¤ë¤ż¤á¤Î¤â¤Î¤Ç¤šĄŁ łĆ Makefile ¤Ë¤ĎĄ˘żôÂż¤Ż¤Î°Ű¤Ę¤ë ĽżĄźĽ˛ĽĂĽČ (target) ¤ŹÄęľÁ¤ľ¤ě¤Ć¤¤¤ĆĄ˘ ťŘÄꤾ¤ě¤żĽżĄźĽ˛ĽĂĽČ¤Ë¤č¤Ă¤Ćưşî¤Źˇč¤Ţ¤ę¤Ţ¤šĄŁ Makefile ¤Ë˝ń¤Ť¤ě¤Ć¤¤¤ëĽżĄźĽ˛ĽĂĽČ¤Ë¤ĎĄ˘ ĽˇĽšĽĆĽŕ¤ÎşĆš˝ĂۤËÉŹÍפĘĂĘłŹ¤ňĄ˘ Âż¤Ż¤Î¤ľ¤é¤ËşŮ¤Ť¤¤ĂĘłŹ¤ËĘŹłä¤š¤ë¤ż¤áĄ˘ š˝ĂۤβáÄř¤ÇÍřÍѤľ¤ě¤ë¤â¤Î¤Ź¤˘¤ę¤Ţ¤šĄŁ ÂçÄń¤ÎžěšçĄ˘&man.make.1; ¤ËĽŃĽéĽáĄźĽż¤ňťŘÄꤚ¤ëÉŹÍפϤʤ¤¤Ç¤ˇ¤ç¤Ś¤Ť¤éĄ˘ ĽłĽŢĽóĽÉĽéĽ¤Ľó¤ĎźĄ¤Î¤č¤Ś¤Ę¤â¤Î¤Ë¤Ę¤ę¤Ţ¤šĄŁ &prompt.root; make target ¤ł¤ł¤ÇĄ˘target ¤ĎĄ˘Âż¤Ż¤ÎĽÓĽëĽÉĽŞĽ×ĽˇĽçĽó¤Î¤É¤ě¤Ť¤Ë¤Ę¤ę¤Ţ¤šĄŁ şÇ˝é¤ÎĽżĄźĽ˛ĽĂĽČ¤Ď¤¤¤Ä¤â buildworld ¤Ë¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤˝¤ÎĚžÁ°¤Źź¨¤š¤č¤Ś¤ËĄ˘buildworld ¤Ď /usr/obj °Ę˛ź¤Ëżˇ¤ˇ¤¤´°Á´¤ĘĽÇĽŁĽěĽŻĽČĽęĽÄĽęĄź¤ňš˝ĂۤˇĄ˘ installworld ¤ĎĄ˘¤˝¤ÎĽÄĽęĄź¤ň ¸˝şß¤ÎĽŢĽˇĽó¤ËĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ţ¤šĄŁ ÁŞÂňťč¤ŹĘʤą¤é¤ě¤Ć¤¤¤ë¤ł¤Č¤ĎĄ˘Ćó¤Ä¤ÎÍýÍł¤Ť¤éÍ­ÍŃ¤Ç¤šĄŁ ¤Ţ¤şÂč°ě¤ËĄ˘š˝ĂŰşîśČ¤Ď ˛ż¤Ë¤â°Í¸¤ť¤şĆČΊ¤ˇ¤ĆšÔ¤Ę¤ď¤ěĄ˘ ˛ÔĆŻĂć¤ÎĽˇĽšĽĆĽŕ¤Ë¤Ţ¤Ă¤ż¤ŻąĆśÁ¤ňÍż¤¨¤Ţ¤ť¤óĄŁ ¤˝¤Î¤ż¤áĄ˘ĽŢĽëĽÁĽćĄźĽśĽâĄźĽÉ¤Ç˛ÔĆŻĂć¤ÎĽˇĽšĽĆĽŕ¤Ç¤âĄ˘˛ż°ě¤Ä °­ąĆśÁ¤ňÍż¤¨¤ş¤Ë buildworld ¤ň źÂšÔ¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤ż¤Ŕ¤ˇĄ˘installworld ¤Ď ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ÇšÔ¤Ę¤Ś¤ł¤Č¤ň¤Ş¤š¤š¤á¤ˇ¤Ţ¤šĄŁ ÂčĆó¤ËĄ˘NFS ĽŢĽŚĽóĽČ¤ňÍřÍѤš¤ë¤ł¤Č¤ÇĄ˘ ĽÍĽĂĽČĽďĄźĽŻžĺ¤ÎĘŁżô¤ÎĽŢĽˇĽó¤ňĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤š¤ë¤ł¤Č¤Ź˛ÄÇ˝¤ĘĹŔ¤Ź¤˘¤˛¤é¤ě¤Ţ¤šĄŁ ¤ż¤Č¤¨¤Đť°Âć¤ÎĽŢĽˇĽóĄ˘ A, B, C ¤ňĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ˇ¤ż¤¤žěšç¤Ë¤ĎĄ˘¤Ţ¤şĽŢĽˇĽó A ¤Ç make buildworld ¤Č make installworld ¤ňźÂšÔ¤ˇ¤Ţ¤šĄŁ ¤˝¤ě¤Ť¤éĄ˘ĽŢĽˇĽó B ¤ČĽŢĽˇĽó C ¤ÇĽŢĽˇĽó A ¤Î /usr/src ¤Č /usr/obj ¤ň NFS ĽŢĽŚĽóĽČ¤ˇĄ˘make installworld ¤Č¤š¤ë¤ł¤Č¤Çš˝ĂۺѤߤμˇĽšĽĆĽŕ¤ňłĆĽŢĽˇĽó¤ËĽ¤ĽóĽšĽČĄźĽë¤Ç¤­¤Ţ¤šĄŁ world ĽżĄźĽ˛ĽĂĽČ¤âÍřÍѲÄÇ˝¤Ç¤š¤ŹĄ˘ ¤ł¤ÎĽżĄźĽ˛ĽĂĽČ¤ÎÍřÍѤϿ䞊¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ ¤˝¤Î¤Ť¤ď¤ęĄ˘źĄ¤ÎĽłĽŢĽóĽÉ &prompt.root; make buildworld ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ¤ł¤ł¤Ç make ¤Ë ¤ň¤Ä¤ą¤ë¤ČĄ˘ Ćąťţ¤ËĘŁżô¤ÎĽ×ĽíĽťĽš¤ňŔ¸ŔŽ¤Ç¤­¤Ţ¤šĄŁ ¤ł¤ÎľĄÇ˝¤ĎĽŢĽëĽÁ CPU ĽŢĽˇĽó¤ÇĆä˸ú˛Ě¤ňČŻ´ř¤ˇ¤Ţ¤šĄŁ š˝Ă۲áÄř¤ÎÂçÉôĘŹ¤Ç¤Ď CPU Ŕ­Ç˝¤Î¸ÂłŚ¤č¤ę I/O Ŕ­Ç˝¤Î¸ÂłŚ¤ÎĘý¤ŹĚäÂę¤Č¤Ę¤ë¤ż¤áĄ˘ĽˇĽóĽ°Ľë CPU ĽŢĽˇĽó¤Ë¤â¸ú˛Ě¤Ź¤˘¤ę¤Ţ¤šĄŁ ÉáÄ̤μˇĽóĽ°Ľë CPU ĽŢĽˇĽó¤Ç°Ę˛ź¤ÎĽłĽŢĽóĽÉ &prompt.root; make -j4 buildworld ¤ňźÂšÔ¤š¤ë¤ČĄ˘&man.make.1; ¤ĎşÇÂç 4 ¸Ä¤Ţ¤Ç¤ÎĽ×ĽíĽťĽš¤ňĆąťţ¤ËźÂšÔ¤ˇ¤Ţ¤šĄŁ ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤ËĹęšĆ¤ľ¤ě¤żˇĐ¸łĹޤĘĘóšđ¤Ë¤č¤ë¤ČĄ˘ 4 ¸Ä¤Č¤¤¤ŚťŘÄꤏşÇ¤âÎɤ¤ĽŃĽŐĽŠĄźĽŢĽóĽš¤ňꍤš¤č¤Ś¤Ç¤šĄŁ ¤â¤ˇĄ˘ĘŁżô¤Î CPU ¤ňČ÷¤¨¤żĽŢĽˇĽó¤Ç SMP ŔßÄꤏšÔ¤Ę¤ď¤ě¤żĽŤĄźĽÍĽë¤ň ÍřÍѤˇ¤Ć¤¤¤ë¤Ę¤éĄ˘6 ¤Ť¤é 10 ¤Î´Ö¤ÎĂͤňŔßÄꤡĄ˘ÂŽĹŮ¤Ź¤É¤ě¤Ż¤é¤¤ ¸ţžĺ¤š¤ë¤ŤłÎǧ¤ˇ¤Ć¤ß¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽˇĽšĽĆĽŕ¤Îš˝ĂۤˤŤ¤Ť¤ëťţ´Ö world ¤ÎşĆš˝ĂŰ ťţ´Ö š˝ĂŰťţ´Ö¤ňˇč¤á¤ëÍ×ÁǤϤľ¤Ţ¤ś¤Ţ¤˘¤ę¤Ţ¤š¤ŹĄ˘ ˝˝ĘŹżˇ¤ˇ¤¤ĽŢĽˇĽó¤Ç¤˘¤ě¤ĐĄ˘ ĽČĽęĽĂĽŻ¤äśáĆť¤ňťČ¤ď¤ş¤ËÉáÄ̤˚˝Ăۤˇ¤żžěšçĄ˘&os.stable; ¤Îš˝ĂŰ¤Ë¤Ď 1, 2 ťţ´Ö¤ˇ¤Ť¤Ť¤Ť¤é¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ &os.current; ¤Îš˝Ăۤϥ˘¤â¤ŚžŻ¤ˇťţ´Ö¤Ź¤Ť¤Ť¤ę¤Ţ¤šĄŁ żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤Îš˝Ăۤȼ¤ĽóĽšĽČĄźĽë ĽŤĄźĽÍĽë (kernel) š˝ĂŰĄ˘ĽłĽóĽŃĽ¤Ľë żˇ¤ˇ¤¤ĽˇĽšĽĆĽŕ¤ÎÁ´ľĄÇ˝¤ň´°Á´¤ËÍřÍѤǤ­¤ë¤č¤Ś¤Ë¤š¤ë¤Ë¤ĎĄ˘ ĽŤĄźĽÍĽë¤ňşĆš˝Ăۤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ şĆš˝Ăۤϥ˘¤˘¤ëźď¤ÎĽáĽâĽęš˝Â¤ÂΤŹĘŃšš¤ľ¤ě¤żťţ¤Ë¤ĎĆäËÉŹżÜ¤Ç¤˘¤ęĄ˘ &man.ps.1; ¤ä &man.top.1; ¤Î¤č¤Ś¤ĘĽ×ĽíĽ°ĽéĽŕ¤ĎĄ˘ ĽŤĄźĽÍĽë¤ČĽ˝ĄźĽšĽłĄźĽÉ¤ÎĽĐĄźĽ¸ĽçĽó¤Ź°ěĂפˇ¤Ę¤¤¤ČŔľžď¤Ëưşî¤ˇ¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ şÇ¤â´ĘĂą¤Ç°ÂÁ´¤ËĽŤĄźĽÍĽë¤ÎşĆš˝ĂۤňšÔ¤Ę¤ŚĘýËĄ¤ĎĄ˘ GENERIC ¤ňťČ¤Ă¤żĽŤĄźĽÍĽë¤ňš˝ĂŰĄŚĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤ł¤Č¤Ç¤šĄŁ GENERIC ¤Ë¤Ď¤˘¤Ę¤ż¤ŹÉŹÍפȤš¤ëĽÇĽĐĽ¤Ľš¤Ź¤š¤Ů¤Ć´Ţ¤Ţ¤ě¤Ć¤¤¤Ę¤¤ ¤Ť¤âĂΤě¤Ţ¤ť¤ó¤ŹĄ˘¤˘¤Ę¤ż¤ÎĽˇĽšĽĆĽŕ¤ňĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤Ç ľŻĆ°¤ľ¤ť¤ë¤Î¤ËÉŹÍפʤâ¤Î¤Ď¤š¤Ů¤ĆĆţ¤Ă¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ě¤Ďżˇ¤ˇ¤¤ĽĐĄźĽ¸ĽçĽó¤ÎĽˇĽšĽĆĽŕ¤Ź¤­¤Á¤ó¤Čưşî¤š¤ë¤Ť¤É¤Ś¤Ť Ä´¤Ů¤ëÎɤ¤ĘýËĄ¤Î°ě¤Ä¤Ç¤šĄŁ GENERIC ¤ÇľŻĆ°¤ˇ¤ĆĄ˘ ĽˇĽšĽĆĽŕ¤ŹŔľžď¤Ëưşî¤ˇ¤Ć¤¤¤ë¤Ť¤É¤Ś¤Ť¤ňłÎ¤Ť¤á¤ż¤éĄ˘ ĽŤĽšĽżĽŕĽŤĄźĽÍĽëĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤ňťČ¤Ă¤Ćżˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤ňš˝Ăۤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &os; ¤Ç¤ĎĄ˘żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤ňš˝Ăۤš¤ëÁ°¤Ë build world ¤ňšÔ¤Ś¤ł¤Č¤Ź˝ĹÍ×¤Ç¤šĄŁ ´ű¤Ë¤˘¤ëĽłĽóĽŐĽŁĽ°ĽěĄźĽˇĽçĽóĽŐĽĄĽ¤Ľë¤ňťČ¤Ă¤ĆĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ňš˝Ăۤš¤ë¤Ë¤ĎĄ˘ KERNCONF=MYKERNEL ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cd /usr/src &prompt.root; make buildkernel KERNCONF=MYKERNEL &prompt.root; make installkernel KERNCONF=MYKERNEL kern.securelevel ¤ň 1 ¤č¤ęÂ礭¤Ż¤ˇ¤Ć¤¤¤ĆĄ˘ ¤Ť¤Ä ĽŤĄźĽÍĽë¤ÎĽĐĽ¤ĽĘĽęĽŐĽĄĽ¤Ľë¤Ë noschg ¤Î¤č¤Ś¤ĘĽŐĽéĽ°¤ňŔßÄꤡ¤Ć¤¤¤ëžěšç¤ĎĄ˘ installkernel ¤ňšÔ¤Ś¤Î¤ËĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤Ë°ÜšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤˝¤ě°Ęł°¤Îžěšç¤ĎĄ˘ ĽŢĽëĽÁĽćĄźĽśĽâĄźĽÉ¤Ç¤ł¤ě¤é¤ÎĽłĽŢĽóĽÉ¤ňĚäÂę¤Ę¤ŻĆ°¤Ť¤ť¤ë¤Ď¤ş¤Ç¤šĄŁ kern.securelevel ¤Ë¤Ä¤¤¤ĆžÜ¤ˇ¤Ż¤Ď &man.init.8; ¤ňĄ˘ĽŐĽĄĽ¤Ľë¤ÎÍÍĄš¤ĘĽŐĽéĽ°¤Ë¤Ä¤¤¤ĆžÜ¤ˇ¤Ż¤Ď &man.chflags.1; ¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ÇşĆľŻĆ°¤š¤ë single-user mode żˇ¤ˇ¤¤ĽŤĄźĽÍĽë¤ŹĆ°şî¤š¤ë¤Ť¤É¤Ś¤ŤĽĆĽšĽČ¤š¤ë¤ż¤á¤ËĄ˘ ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤ÇşĆľŻĆ°¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤Ç¤ÎľŻĆ°¤ĎĄ˘ ¤Ë˝ń¤Ť¤ě¤Ć¤¤¤ëźę˝ç¤Ë˝ž¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ żˇ¤ˇ¤¤ĽˇĽšĽĆĽŕĽĐĽ¤ĽĘĽę¤ÎĽ¤ĽóĽšĽČĄźĽë źĄ¤ËĄ˘installworld ¤ňťČ¤Ă¤Ćżˇ¤ˇ¤¤ĽˇĽšĽĆĽŕĽĐĽ¤ĽĘĽę¤ÎĽ¤ĽóĽšĽČĄźĽë¤ňšÔ¤Ę¤¤¤Ţ¤šĄŁ &prompt.root; cd /usr/src &prompt.root; make installworld make buildworld ¤ËĘŃżô¤ňťŘÄꤡ¤żžěšç¤ĎĄ˘ĆएťŘÄę¤ň make installworld ¤Ë¤âťŘÄꤡ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ż¤Ŕ¤ˇ ¤Ď installworld ¤ÇŔäÂФ˝ȤäƤϤ¤¤ą¤Ţ¤ť¤óĄŁ ¤ż¤Č¤¨¤Đ°Ę˛ź¤Î¤č¤Ś¤ËźÂšÔ¤ˇ¤ż¤Ę¤éĄ˘ &prompt.root; make -DNO_PROFILE buildworld °Ę˛ź¤Î¤č¤Ś¤Ë¤ˇ¤ĆĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ &prompt.root; make -DNO_PROFILE installworld ¤â¤ˇ¤˝¤Ś¤ˇ¤Ę¤Ť¤Ă¤żžěšçĄ˘ make buildworld ¤ÎĂĘłŹ¤Çš˝Ăۤľ¤ě¤Ć¤¤¤Ę¤¤ Ľ×ĽíĽŐĽĄĽ¤ĽëČǼ鼤ĽÖĽéĽę¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤č¤Ś¤Č¤ˇ¤Ć¤ˇ¤Ţ¤Ś¤Ç¤ˇ¤ç¤ŚĄŁ <command>make installworld</command> ¤Çššżˇ¤ľ¤ě¤Ę¤¤ĽŐĽĄĽ¤Ľë¤Îššżˇ ĽˇĽšĽĆĽŕ¤ÎşĆš˝Ăۤϥ˘¤¤¤Ż¤Ä¤Ť¤ÎĽÇĽŁĽěĽŻĽČĽęĄ˘ Ćä˥˘/etc ¤ä /var ¤ä /usr ¤Ë¤Ş¤¤¤ĆĄ˘ żˇľŹ¤ËĆłĆţ¤ľ¤ě¤ż¤ęĄ˘ĘŃšš¤ľ¤ě¤żŔßÄęĽŐĽĄĽ¤Ľë¤Ë¤č¤ë ĽŐĽĄĽ¤Ľë¤Îššżˇ¤ĎšÔ¤Ę¤ď¤ě¤Ţ¤ť¤óĄŁ ¤ł¤ě¤é¤ÎĽÇĽŁĽěĽŻĽČĽę¤ÎĽŐĽĄĽ¤Ľë¤ňššżˇ¤š¤ë¤â¤Ă¤Č¤â´ĘĂą¤ĘĘýËĄ¤ĎĄ˘ &man.mergemaster.8; ¤ňťČ¤Ś¤ł¤Č¤Ç¤šĄŁ ÉŹ¤ş /etc ¤ÎĽĐĽĂĽŻĽ˘ĽĂĽ×¤ňźč¤Ă¤ĆÉÔÂŹ¤ÎťöÂÖ¤ËČ÷¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Tom Rhodes ´óšĆ: <command>mergemaster</command> mergemaster &man.mergemaster.8; ¤Ď Bourne ĽˇĽ§ĽëĽšĽŻĽęĽ×ĽČ¤ÇĄ˘ /etc ¤Ë¤˘¤ëŔßÄęĽŐĽĄĽ¤Ľë¤ČĽ˝ĄźĽšĽÄĽęĄź¤Î /usr/src/etc ¤Ë¤˘¤ëŔßÄęĽŐĽĄĽ¤Ľë¤Î°ă¤¤¤ňłÎǧ¤š¤ë¤Î¤ňźęĹÁ¤Ă¤Ć¤Ż¤ě¤Ţ¤šĄŁ ¤ł¤ě¤ňťČ¤Ś¤Î¤ŹĄ˘Ľ˝ĄźĽšĽÄĽęĄź¤Ë¤˘¤ëŔßÄęĽŐĽĄĽ¤Ľë¤ËĽˇĽšĽĆĽŕ¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤ň ššżˇ¤š¤ë¤ż¤á¤ËżäžŠ¤ľ¤ě¤ëĘýËĄ¤Ç¤šĄŁ ťĎ¤á¤ë¤Ë¤ĎĄ˘Ľ×ĽíĽóĽ×ĽČ¤Ť¤é mergemaster ¤ČĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ mergemaster ¤Ď / ¤ňľŻĹŔ¤Č¤ˇ¤ż°ěťţĹŞ¤ĘĽëĄźĽČ´Äś­¤ňš˝ĂۤˇĄ˘ ¤ľ¤Ţ¤ś¤Ţ¤ĘĽˇĽšĽĆĽŕŔßÄęĽŐĽĄĽ¤Ľë¤ň (ĚőĂí: ĽÇĽŐĽŠĽëĽČ¤Ç¤Ď /var/tmp/temproot ¤Ë) ĂÖ¤¤¤Ć¤¤¤­¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĽŐĽĄĽ¤Ľë¤Ď¸˝şßĽˇĽšĽĆĽŕ¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽŐĽĄĽ¤Ľë¤ČČćłÓ¤ľ¤ě¤Ţ¤šĄŁ °Ű¤Ę¤ëĽŐĽĄĽ¤Ľë¤Ď &man.diff.1; ˇÁź°¤Çź¨¤ľ¤ěĄ˘ ¤Îľ­šć¤ĎÄɲäޤż¤ĎĘŃšš¤ľ¤ě¤żšÔ¤ňÉ˝¤ˇĄ˘ ¤Ď´°Á´¤Ëşď˝ü¤ľ¤ě¤ż¤Ťżˇ¤ˇ¤ŻĂÖ¤­´š¤¨¤é¤ě¤żšÔ¤ňÉ˝¤ˇ¤Ţ¤šĄŁ &man.diff.1; ¤Î˝ńź°¤ČĽŐĽĄĽ¤Ľë¤Î°ă¤¤¤ÎÉ˝ź¨ĘýËĄ¤Ë¤Ä¤¤¤Ć¤Î¤č¤ęžÜ¤ˇ¤¤žđĘó¤ĎĄ˘ &man.diff.1; ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &man.mergemaster.8; ¤Ď°ă¤¤¤Î¤˘¤ëĽŐĽĄĽ¤Ľë¤ň¤˝¤ě¤ž¤ěꍤˇ¤Ţ¤šĄŁ żˇ¤ˇ¤¤ĽŐĽĄĽ¤Ľë¤ňşď˝ü¤š¤ë¤ŤĄ˘ °ěťţĽŐĽĄĽ¤Ľë¤ň¤˝¤Î¤Ţ¤ŢĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤ŤĄ˘ °ěťţĽŐĽĄĽ¤Ľë¤Č¸˝şßĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽŐĽĄĽ¤Ľë¤ňĹýšç¤š¤ë¤ŤĄ˘ ¤â¤ˇ¤Ż¤Ď &man.diff.1; ¤Îˇë˛Ě¤ň¤â¤Ś°ěĹٸŤ¤ë¤ŤÁŞÂň¤Ç¤­¤Ţ¤šĄŁ °ěťţĽŐĽĄĽ¤Ľë¤Îşď˝ü¤ňÁŞ¤Ö¤ČĄ˘&man.mergemaster.8; ¤Ë¸˝şß¤ÎĽŐĽĄĽ¤Ľë¤ňĘŃšš¤ˇ¤Ę¤¤¤Çżˇ¤ˇ¤¤ĽĐĄźĽ¸ĽçĽó¤ňşď˝ü¤ť¤č¤ČĹÁ¤¨¤Ţ¤šĄŁ ¤ł¤ÎÁŞÂň¤ĎĄ˘¸˝şß¤ÎĽŐĽĄĽ¤Ľë¤ňĘŃšš¤š¤ëÍýÍł¤ŹĘʤŤ¤é¤Ę¤¤¤Î¤Ç¤˘¤ě¤ĐĄ˘ ¤Ş´Ť¤á¤Ç¤­¤Ţ¤ť¤óĄŁ &man.mergemaster.8; ¤ÎĽ×ĽíĽóĽ×ĽČ¤Ç ? ¤ČĽżĽ¤Ľ×¤š¤ě¤ĐĄ˘ ¤¤¤Ä¤Ç¤âĽŘĽëĽ×¤Ź¸Ť¤é¤ě¤Ţ¤šĄŁ ĽŐĽĄĽ¤Ľë¤ÎĽšĽ­ĽĂĽ×¤ňÁŞ¤Ö¤ČĄ˘Âž¤Î¤š¤Ů¤Ć¤ÎĽŐĽĄĽ¤Ľë¤ň˝Ş¤¨¤ż¤˘¤ČĄ˘ ¤â¤Ś°ěĹ٤˝¤ÎĽŐĽĄĽ¤Ľë¤ŹÄ󟨤ľ¤ě¤Ţ¤šĄŁ °ěťţĽŐĽĄĽ¤Ľë¤ň¤˝¤Î¤Ţ¤ŢĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤ł¤Č¤ňÁŞ¤Ö¤ČĄ˘ ¸˝şß¤ÎĽŐĽĄĽ¤Ľë¤ňżˇ¤ˇ¤¤ĽŐĽĄĽ¤Ľë¤ÇĂÖ¤­´š¤¨¤Ţ¤šĄŁ ¤Ű¤Č¤ó¤É¤Îźę¤ň˛Ă¤¨¤Ć¤¤¤Ę¤¤ĽŐĽĄĽ¤Ľë¤ĎĄ˘ ¤ł¤ě¤Ź°ěČ֤褤ÁŞÂň¤Ç¤šĄŁ ĽŐĽĄĽ¤Ľë¤ÎĹýšç¤ňÁޤó¤ŔžěšçĄ˘ ĽĆĽ­ĽšĽČĽ¨ĽÇĽŁĽż¤ŹľŻĆ°¤ľ¤ěĄ˘ÎžĘý¤ÎĽŐĽĄĽ¤Ľë¤ÎĂćżČ¤ŹÄ󟨤ľ¤ě¤Ţ¤šĄŁ ˛čĚĚžĺ¤ËʤÖΞĘý¤ÎĽŐĽĄĽ¤Ľë¤ň¸Ť¤Ćżˇ¤ˇ¤¤ĽŐĽĄĽ¤Ľë¤ňşîŔޤš¤ë¤ż¤á¤ËΞĘý¤Ť¤éÉŹÍפĘÉôĘŹ¤ňÁŞÂň¤ˇĄ˘ 2 ¤Ä¤ÎĽŐĽĄĽ¤Ľë¤ňĹýšç¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ʤó¤Ç¤¤¤ëĽŐĽĄĽ¤Ľë¤ňČćłÓ¤š¤ë¤Č¤­Ą˘ l ¤Çş¸ÂڤÎĂćżČ¤ňÁŞÂň¤ˇĄ˘ r ¤ÇąŚÂڤÎĂćżČ¤ňÁŞÂň¤ˇ¤Ţ¤šĄŁ şÇ˝Ş˝ĐÎϤϺ¸ąŚÎžĘý¤ÎÉôĘŹ¤Ç¤Ç¤­¤żĽŐĽĄĽ¤Ľë¤Ë¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤ż¤¤¤Ć¤¤Ą˘¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ĎĽćĄźĽś¤ŹŔßÄę¤ňĘŃšš¤ˇ¤żĽŐĽĄĽ¤Ľë¤ËťČ¤ď¤ě¤Ţ¤šĄŁ &man.diff.1; ¤Îˇë˛Ě¤ň¤â¤Ś°ěĹٸŤ¤ëĄ˘¤ňÁŞÂň¤š¤ë¤ČĄ˘ ¤Á¤ç¤Ś¤ÉŔč¤Ű¤É &man.mergemaster.8; ¤ŹÁŞÂňťč¤ňÉ˝ź¨¤š¤ëÁ°¤ČĆą¤¸¤č¤Ś¤ËĄ˘ ĽŐĽĄĽ¤Ľë¤ÎÁę°ŰĹŔ¤ň¸Ť¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ &man.mergemaster.8; ¤ŹĽˇĽšĽĆĽŕĽŐĽĄĽ¤Ľë¤ÎČćłÓ¤ň˝Ş¤¨¤ż¤˘¤ČĄ˘ ž¤ÎĽŞĽ×ĽˇĽçĽó¤Ë¤Ä¤¤¤Ć¤âĽ×ĽíĽóĽ×ĽČ¤ŹÉ˝ź¨¤ľ¤ě¤Ţ¤šĄŁ &man.mergemaster.8; ¤ŹĄ˘ĽŃĽšĽďĄźĽÉĽŐĽĄĽ¤Ľë¤ňşĆš˝Ăۤš¤ë¤Ť¤É¤Ś¤Ť¤ňżŇ¤Í¤ë¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ şÇ¸ĺ¤ËťÄ¤Ă¤ż°ěťţĽŐĽĄĽ¤Ľë¤ňşď˝ü¤š¤ë¤Ť¤É¤Ś¤Ť¤ňżŇ¤Í¤Ć˝ŞÎť¤ˇ¤Ţ¤šĄŁ źęư¤Ç¤Îššżˇ źęư¤Çššżˇ¤š¤ëžěšç¤Ë¤ĎĄ˘Ăą¤ËĽŐĽĄĽ¤Ľë¤ň /usr/src/etc ¤Ť¤é /etc ¤Ë ĽłĽÔĄź¤ˇ¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁŔľžď¤Ëưşî¤ˇ¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ĽŐĽĄĽ¤Ľë¤ÎĂć¤Ë¤ĎĄ˘ Ľ¤ĽóĽšĽČĄźĽë¤Č¤¤¤Śźę˝ç¤ňƧ¤Ţ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤â¤Î ¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ /usr/src/etc ¤Ď /etc ¤Ë¤˝¤Î¤Ţ¤ŢĂÖ¤­´š¤¨¤é¤ě¤ë¤č¤Ś¤ĘĽłĽÔĄź¤Ç¤Ď ¤Ę¤¤¤Ť¤é¤Ç¤šĄŁ ¤Ţ¤żĄ˘/etc ¤Ë¤˘¤ë¤Ů¤­ĽŐĽĄĽ¤Ľë¤Î¤Ś¤Á¤Ç /usr/src/etc ¤Ë¤Ę¤¤¤â¤Î¤â¤˘¤ę¤Ţ¤šĄŁ &man.mergemaster.8; ¤ň (´Ť¤á¤é¤ě¤żÄ̤ę) ťČ¤Ă¤Ć¤¤¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘źĄ¤ÎŔá ¤Ţ¤ÇČô¤Đ¤ˇ¤Ć¤â¤Ť¤Ţ¤¤¤Ţ¤ť¤óĄŁ źęư¤ÇšÔ¤ŚşÝ¤Î°ěČÖ´ĘĂą¤ĘĘýËĄ¤ĎĄ˘ ĽŐĽĄĽ¤Ľë¤ňżˇ¤ˇ¤¤ĽÇĽŁĽěĽŻĽČĽę¤ËĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤Ť¤éĄ˘ °ĘÁ°¤Î¤â¤Î¤Č°Ű¤Ę¤Ă¤Ć¤¤¤ëÉôĘŹ¤ňÄ´¤Ů¤ĆššżˇşîśČ¤ňšÔ¤Ę¤Ś¤ł¤Č¤Ç¤šĄŁ ´ű¸¤Î <filename>/etc</filename> ¤ňĽĐĽĂĽŻĽ˘ĽĂĽ×¤š¤ë ¤ż¤Č¤¨¤Đ°Ę˛ź¤Î¤č¤Ś¤Ë¤ˇ¤ĆĄ˘ ´ű¸¤Î /etc ¤ň¤É¤ł¤Ť°ÂÁ´¤Ęžě˝ę¤ËĽłĽÔĄź¤ˇ¤Ć¤Ş¤­¤Ţ¤ˇ¤ç¤ŚĄŁ &prompt.root; cp -Rp /etc /etc.old ¤ł¤ł¤ÇĄ˘ ¤ĎşĆľ˘ĹŞ¤ĘĽłĽÔĄź¤ňšÔ¤Ę¤¤Ą˘ ¤ĎĽŐĽĄĽ¤Ľë¤Îššżˇťţ´Ö¤ä˝ęÍ­źÔ¤Ę¤É¤ňĘݸ¤ˇ¤Ţ¤šĄŁ żˇ¤ˇ¤¤ /etc ¤ä¤˝¤Îž¤ÎĽŐĽĄĽ¤Ľë¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤ż¤á¤ÎĄ˘ ˛ž¤ÎĽÇĽŁĽěĽŻĽČĽę¤ňşî¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; mkdir /var/tmp/root &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distribution žĺ¤ÎÎă¤ĎĄ˘ÉŹÍ×¤ĘĽÇĽŁĽěĽŻĽČĽęš˝Â¤¤ň¤Ä¤Ż¤ęĄ˘ĽŐĽĄĽ¤Ľë¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ţ¤šĄŁ /var/tmp/root °Ę˛ź¤Ëşî¤é¤ě¤ëĄ˘ ¤ż¤Ż¤ľ¤ó¤Îśő¤ÎĽľĽÖĽÇĽŁĽěĽŻĽČĽę¤Ďşď˝ü¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ °ěČÖ´ĘĂą¤Ę¤ä¤ęĘý¤ĎĄ˘źĄ¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ &prompt.root; cd /var/tmp/root &prompt.root; find -d . -type d | xargs rmdir 2>/dev/null ¤ł¤ě¤ĎśőĽÇĽŁĽěĽŻĽČĽę¤ň¤š¤Ů¤Ćşď˝ü¤ˇ¤Ţ¤šĄŁ śő¤Ç¤Ę¤¤ĽÇĽŁĽěĽŻĽČĽę¤Ë´Ř¤š¤ëˇŮšđ¤ňČň¤ą¤ë¤ż¤á¤ËĄ˘ ɸ˝ŕĽ¨ĽéĄź˝ĐÎĎ¤Ď /dev/null ¤Ë ĽęĽŔĽ¤ĽěĽŻĽČ¤ľ¤ě¤Ţ¤šĄŁ ¤ł¤ÎĂĘłŹ¤Î /var/tmp/root ¤Ë¤ĎĄ˘ ËÜÍč / °Ę˛ź¤Ë¤˘¤ë¤Ů¤­ĽŐĽĄĽ¤Ľë¤Ź¤š¤Ů¤Ć´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁłĆĽŐĽĄĽ¤Ľë¤ň˝ç¤Ë¸Ť¤ĆĄ˘ ´ű¸¤ÎĽˇĽšĽĆĽŕ¤Ë¤˘¤ëĽŐĽĄĽ¤Ľë¤Č°Ű¤Ę¤ëÉôĘŹ¤ňÄ´¤Ů¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /var/tmp/root °Ę˛ź¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ëĽŐĽĄĽ¤Ľë¤ÎĂć¤Ë¤ĎĄ˘ . ¤Ť¤éťĎ¤Ţ¤Ă¤Ć¤¤¤ë¤â¤Î¤Ź¤˘¤ę¤Ţ¤šĄŁ ls -a ¤ňťČ¤Ă¤ĆłÎ¤Ť¤á¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤â¤Ă¤Č¤â´ĘĂą¤ĘĘýËĄ¤ĎĄ˘Ćó¤Ä¤ÎĽŐĽĄĽ¤Ľë¤ňČćłÓ¤š¤ëĽłĽŢĽóĽÉ &man.diff.1; ¤ňťČ¤Ś¤ł¤Č¤Ç¤šĄŁ &prompt.root; diff /etc/shells /var/tmp/root/etc/shells ¤ł¤ÎĽłĽŢĽóĽÉ¤ĎĄ˘/etc/shells ĽŐĽĄĽ¤Ľë¤Č żˇ¤ˇ¤¤ /var/tmp/root/etc/shells ĽŐĽĄĽ¤Ľë¤Î°Ű¤Ę¤ëÉôĘŹ¤ňÉ˝ź¨¤ˇ¤Ţ¤šĄŁ ĆâÍƤňłÎǧ¤ˇ¤ĆĄ˘˝ń¤­´š¤¨¤ż¤â¤Î¤ËĘŃššĹŔ¤ňĽŢĄźĽ¸¤š¤ë¤ŤĄ˘ ¤˝¤ě¤Č¤â´ű¸¤ÎĽŐĽĄĽ¤Ľë¤ňżˇ¤ˇ¤¤¤â¤Î¤Çžĺ˝ń¤­¤š¤ë¤Ť¤ňČ˝ĂǤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ żˇ¤ˇ¤¤ root ĽÇĽŁĽěĽŻĽČĽę (<filename class="directory">/var/tmp/root</filename>) ¤ÎĚžÁ°¤Ë ĽżĽ¤ĽŕĽšĽżĽóĽ×¤ňÉŐ¤ą¤Ć¤Ş¤Ż¤ČĄ˘ °Ű¤Ę¤ëĽĐĄźĽ¸ĽçĽó´Ö¤ÎČćłÓ¤ňłÚ¤ËšÔ¤Ę¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ÉŃČˤ˼ˇĽšĽĆĽŕ¤ÎşĆš˝ĂۤňšÔ¤Ę¤Ś¤Č¤¤¤Ś¤ł¤Č¤ĎĄ˘ /etc ¤Îššżˇ¤â¤Ţ¤żĄ˘ ÉŃČˤ˚ԤŚÉŹÍפʤ˘¤ë¤Č¤¤¤Ś¤ł¤Č¤Ç¤šĄŁ ¤ł¤ě¤Ď¤Á¤ç¤Ă¤Čźę´Ö¤Î¤Ť¤Ť¤ëşîśČ¤Ç¤šĄŁ ¤ł¤ÎşîśČ¤ĎĄ˘¤˘¤Ę¤ż¤Ź /etc ¤ËĽŢĄźĽ¸¤ˇ¤żĄ˘ żˇ¤ˇ¤ŻĘŃšš¤ľ¤ě¤żĽŐĽĄĽ¤Ľë¤ÎşÇżˇ¤ÎĽťĽĂĽČ¤ÎĽłĽÔĄź¤ňĘݸ¤ˇ¤Ć¤Ş¤Ż¤ł¤Č¤Ç ÁÇÁ᤯šÔ¤Ę¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ÉáÄĚ¤Ë make world ¤ˇ¤Ţ¤šĄŁ /etc ¤ä ž¤ÎĽÇĽŁĽěĽŻĽČĽę¤ňššżˇ¤ˇ¤ż¤Ż¤Ę¤Ă¤ż¤Č¤­¤ĎĄ˘ĽżĄźĽ˛ĽĂĽČ ĽÇĽŁĽěĽŻĽČĽę¤ËĄ˘¤˝¤Î¤Č¤­¤ÎĆüÉդ˴đ¤Ĺ¤ŻĚžÁ°¤ň¤Ä¤ą¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; mkdir /var/tmp/root-20130214 &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root-20130214 \ distrib-dirs distribution žĺ¤ËŔâĚŔ¤ľ¤ě¤Ć¤¤¤ë¤č¤Ś¤ËĄ˘ ¤ł¤ÎĽÇĽŁĽěĽŻĽČĽę¤Ť¤éĘŃššĹŔ¤ňĽŢĄźĽ¸¤ˇ¤Ţ¤šĄŁ ¤˝¤ÎşîśČ¤Ź˝ŞÎť¤ˇ¤Ć¤âĄ˘ /var/tmp/root-20130214 ¤ňşď˝ü¤ˇ¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ şÇżˇČǤμ˝ĄźĽš¤ňĽŔĽŚĽóĽíĄźĽÉ¤ˇ¤ĆşĆš˝Ăۤˇ¤ż¤éĄ˘ ĽšĽĆĽĂĽ× 1 ¤Ë¤ˇ¤ż¤Ź¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁşŁĹ٤ϥ˘ żˇ¤ˇ¤¤ĆüÉŐ¤ňČżąÇ¤ˇ¤żĽÇĽŁĽěĽŻĽČĽę¤ňşîŔޤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎÎă¤Ç¤ĎĄ˘/var/tmp/root-20130221 ¤Č¤¤¤Śżˇ¤ˇ¤¤ĽÇĽŁĽěĽŻĽČĽę¤ň¤Ä¤Ż¤ę¤Ţ¤šĄŁ &man.diff.1; ¤ňťČÍѤˇĄ˘ Ćó¤Ä¤ÎĽÇĽŁĽěĽŻĽČĽę¤ňČćłÓ¤š¤ëşĆľ˘ĹŞ diff ¤ňşîŔޤš¤ë¤ł¤Č¤ÇĄ˘ °ě˝ľ´Ö¤Î´Ö¤ËšÔ¤Ę¤ď¤ě¤żĽ˝ĄźĽš¤Ř¤ÎĘŃšš¤Ë¤č¤ëÁę°ăĹŔ¤ňÄ´¤Ů¤Ţ¤šĄŁ &prompt.root; cd /var/tmp &prompt.root; diff -r root-20130214 root-20130221 ¤ł¤ě¤Ë¤č¤Ă¤ĆĘóšđ¤ľ¤ě¤ëÁę°ăĹŔ¤ĎĄ˘ÂçÄń¤ÎžěšçĄ˘/var/tmp/root-20130221/etc ¤Č /etc ¤Č¤ÎÁę°ăĹŔ¤ËČć¤Ů¤ĆČóžď¤ËžŻ¤Ę¤¤¤â¤Î¤Ë¤Ę¤ę¤Ţ¤šĄŁ Áę°ăĹŔ¤ŹžŻ¤Ę¤¤¤ż¤áĄ˘ĘŃššĹŔ¤ň´ű¸¤Î /etc ¤ËĽŢĄźĽ¸¤š¤ë¤ł¤Č¤ĎĄ˘ČćłÓĹŞÍưפˤʤę¤Ţ¤šĄŁ ¤ł¤ł¤Ţ¤Ç˝ŞÎť¤ˇ¤ż¤éĄ˘ /var/tmp/root-* ¤ÎĆó¤Ä¤Î¤Ś¤ÁĄ˘¸Ĺ¤¤Ęý¤ÎĽÇĽŁĽěĽŻĽČĽę¤Ďşď˝ü¤ˇ¤Ćš˝¤¤¤Ţ¤ť¤óĄŁ &prompt.root; rm -rf /var/tmp/root-20130214 ¤ł¤ÎšŠÄř¤ňĄ˘ /etc ¤ŘĘŃššĹŔ¤ňĽŢĄźĽ¸¤š¤ëÉŹÍפʤ˘¤ë¤ż¤ÓĄ˘ˇŤ¤ęĘÖ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽÇĽŁĽěĽŻĽČĽęĚž¤ÎŔ¸ŔޤňźŤĆ°˛˝¤š¤ë¤Ë¤ĎĄ˘&man.date.1; ¤ňÍřÍѤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"` Anton Shterenlikht ĽŮĄźĽš¤Č¤Ę¤Ă¤żĽÎĄźĽČ¤ÎÄóśĄ: ťČ¤ď¤ě¤Ę¤Ż¤Ę¤Ă¤żĽŐĽĄĽ¤ĽëĄ˘ĽÇĽŁĽěĽŻĽČĽę¤Îşď˝ü Deleting obsolete files and directories &os; ¤ÎłŤČŻĽľĽ¤ĽŻĽë¤Ë¤Ş¤¤¤ĆĄ˘ ĽŐĽĄĽ¤Ľë¤äĽˇĽšĽĆĽŕ¤Î°ěÉô¤ŹťČ¤ď¤ě¤Ę¤Ż¤Ę¤ë¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤˝¤ě¤é¤ÎľĄÇ˝¤ŹĘ̤Ξě˝ę¤ÇźÂÁő¤ľ¤ě¤ż¤ęĄ˘ ĽéĽ¤ĽÖĽéĽę¤ÎĽĐĄźĽ¸ĽçĽóČ֚椏ĘѤď¤Ă¤ż¤ęĄ˘ ĽˇĽšĽĆĽŕ¤Ť¤é´°Á´¤Ëşď˝ü¤ľ¤ě¤ë¤ł¤Č¤Ź¤˘¤ë¤ż¤á¤Ç¤šĄŁ ĽˇĽšĽĆĽŕ¤ÎĽ˘ĽĂĽ×ĽÇĄźĽČťţ¤Ëşď˝ü¤ŹÉŹÍפˤʤë¤Î¤ĎĄ˘ ¸Ĺ¤¤ĽŐĽĄĽ¤ĽëĄ˘ĽéĽ¤ĽÖĽéĽę¤˝¤ˇ¤ĆĽÇĽŁĽěĽŻĽČĽę¤Ç¤šĄŁ ¤ł¤ě¤é¤ÎĽŐĽĄĽ¤Ľë¤ňşď˝ü¤š¤ë¤ł¤Č¤ÇĄ˘ ľ­˛ąÇŢÂΤäĽĐĽĂĽŻĽ˘ĽĂĽ×ÇŢÂΤˤޤ¤¤ĆÉÔÉŹÍפĘÍĆÎ̤ňŔę¤á¤Ć¤¤¤ë¸Ĺ¤¤ĽŐĽĄĽ¤Ľë¤ŹĄ˘ ĽˇĽšĽĆĽŕžĺ¤ËťśÍ𤚤뤳¤Č¤Ź¤Ę¤Ż¤Ę¤ę¤Ţ¤šĄŁ ¤Ţ¤żĄ˘¸Ĺ¤¤ĽéĽ¤ĽÖĽéĽę¤ÎĽťĽ­ĽĺĽęĽĆĽŁ¤ä°ÂÄęŔ­¤ËĚäÂꤏ¤˘¤ë¤ČĄ˘ ĽéĽ¤ĽÖĽéĽę¤ňżˇ¤ˇ¤Ż¤ˇ¤ĆĽˇĽšĽĆĽŕ¤ň°ÂÄę¤ĘžőÂ֤ˤˇĄ˘ ¸Ĺ¤¤ĽéĽ¤ĽÖĽéĽę¤Ë¤č¤ęĽˇĽšĽĆĽŕ¤ŹĽŻĽéĽĂĽˇĽĺ¤š¤ë¤ł¤Č¤ňËɤʤƤą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ťČ¤ď¤ě¤Ę¤Ż¤Ę¤Ă¤żĽŐĽĄĽ¤ĽëĄ˘ĽÇĽŁĽěĽŻĽČĽęĄ˘ĽéĽ¤ĽÖĽéĽę¤Ď /usr/src/ObsoleteFiles.inc ¤Ë¤Ţ¤Č¤á¤é¤ě¤Ć¤¤¤Ţ¤šĄŁ°Ę˛ź¤Îźę˝ç¤Ë¤č¤ęĄ˘ Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤Î˛áÄř¤Ç¤ł¤ě¤é¤ÎĽŐĽĄĽ¤Ľë¤ňşď˝ü¤Ç¤­¤Ţ¤šĄŁ make installworld ¤ČĄ˘¤˝¤Î¸ĺ¤Î mergemaster ¤ŹĚľťö¤Ë˝Ş¤ď¤Ă¤ż¤éĄ˘ °Ę˛ź¤ÎĘýËĄ¤ÇťČ¤ď¤ě¤Ę¤Ż¤Ę¤Ă¤żĽŐĽĄĽ¤Ľë¤äĽéĽ¤ĽÖĽéĽę¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cd /usr/src &prompt.root; make check-old ¸Ť¤Ä¤Ť¤Ă¤ż¸Ĺ¤¤ĽŐĽĄĽ¤Ľë¤ĎĄ˘°Ę˛ź¤ÎĽłĽŢĽóĽÉ¤Çşď˝ü¤Ç¤­¤Ţ¤šĄŁ &prompt.root; make delete-old ¤˝¤Îž¤ÎĽżĄźĽ˛ĽĂĽČ¤Ë¤Ä¤¤¤Ć¤Ď /usr/src/Makefile ¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ ťČ¤ď¤ě¤Ę¤Ż¤Ę¤Ă¤żĽŐĽĄĽ¤Ľë¤ňşď˝ü¤š¤ëşÝĄ˘ ĽŐĽĄĽ¤Ľë¤´¤Č¤ËłÎǧ¤Źľá¤á¤é¤ě¤Ţ¤šĄŁ łÎǧ¤ňžĘÎŹ¤ˇĄ˘źŤĆ°ĹŞ¤ËĽŐĽĄĽ¤Ľë¤ňşď˝ü¤š¤ë¤Ë¤ĎĄ˘ °Ę˛ź¤Î¤č¤Ś¤Ë BATCH_DELETE_OLD_FILES ¤ňŔßÄꤡ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; make -DBATCH_DELETE_OLD_FILES delete-old yes ¤ňĽłĽŢĽóĽÉ¤ŘĽŃĽ¤Ľ×¤Ç¤Ä¤Ę¤˛¤Ć¤âžĘÎŹ¤Ç¤­¤Ţ¤šĄŁ &prompt.root; yes|make delete-old şĆľŻĆ° ¤š¤Ů¤Ć¤Ź¤˘¤ë¤Ů¤­Ŕľ¤ˇ¤¤žě˝ę¤Ë¸şß¤š¤ë¤ł¤Č¤ňĽÁĽ§ĽĂĽŻ¤ˇ¤ż¤éĄ˘ &man.shutdown.8; ¤ňźÂšÔ¤ˇ¤ĆĽˇĽšĽĆĽŕ¤ňşĆľŻĆ°¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; shutdown -r now ťČ¤ď¤ě¤Ę¤Ż¤Ę¤Ă¤żĽéĽ¤ĽÖĽéĽę¤Îşď˝ü Warning ťČ¤ď¤ě¤Ę¤Ż¤Ę¤Ă¤żĽŐĽĄĽ¤Ľë¤ňşď˝ü¤š¤ë¤ČĄ˘ şď˝ü¤ˇ¤żĽŐĽĄĽ¤Ľë¤Ë°Í¸¤ˇ¤Ć¤¤¤żĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤Ď˛ő¤ě¤Ć¤ˇ¤Ţ¤¤¤Ţ¤šĄŁ Ćä˥˘¸Ĺ¤¤ĽéĽ¤ĽÖĽéĽę¤ňşď˝ü¤š¤ëžěšç¤ËľŻ¤ł¤ęĆŔ¤Ţ¤šĄŁ Ä̞異make delete-old-libs ¤ňźÂšÔ¤š¤ëÁ°¤ËĄ˘ ¤ł¤ě¤é¤Î¸Ĺ¤¤ĽéĽ¤ĽÖĽéĽę¤ňťČ¤Ă¤Ć¤¤¤ëĽ×ĽíĽ°ĽéĽŕĄ˘portsĄ˘ ĽéĽ¤ĽÖĽéĽę¤ňşĆš˝Ăۤš¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ śŚÍ­ĽéĽ¤ĽÖĽéĽę¤ňĽÁĽ§ĽĂĽŻ¤š¤ëĽćĄźĽĆĽŁĽęĽĆĽŁ¤Č¤ˇ¤ĆĄ˘ Ports Collection ¤Î sysutils/libchk ¤ä sysutils/bsdadminscripts ¤ňÍřÍѤǤ­¤Ţ¤šĄŁ ťČ¤ď¤ě¤Ę¤Ż¤Ę¤Ă¤żśŚÍ­ĽéĽ¤ĽÖĽéĽę¤ĎĄ˘ żˇ¤ˇ¤¤ĽéĽ¤ĽÖĽéĽę¤ČśĽšç¤ˇĄ˘°Ę˛ź¤Î¤č¤Ś¤ĘĽáĽĂĽťĄźĽ¸¤ňÉ˝ź¨¤š¤ë¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ /usr/bin/ld: warning: libz.so.4, needed by /usr/local/lib/libtiff.so, may conflict with libz.so.5 /usr/bin/ld: warning: librpcsvc.so.4, needed by /usr/local/lib/libXext.so, may conflict with librpcsvc.so.5 ¤ł¤ÎĚäÂę¤ň˛ňˇč¤š¤ë¤Ë¤ĎĄ˘ ¤Ţ¤şĽéĽ¤ĽÖĽéĽę¤Ź¤É¤Î port ¤Ë¤č¤Ă¤ĆĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤ż¤Ť¤ňÄ´¤Ů¤Ć˛ź¤ľ¤¤ĄŁ &prompt.root; pkg_info -W /usr/local/lib/libtiff.so /usr/local/lib/libtiff.so was installed by package tiff-3.9.4 &prompt.root; pkg_info -W /usr/local/lib/libXext.so /usr/local/lib/libXext.so was installed by package libXext-1.1.1,1 ¸Ť¤Ä¤Ť¤Ă¤ż port ¤ňĽ˘ĽóĽ¤ĽóĽšĽČĄźĽë¤ˇĄ˘ şĆš˝ĂŰĄ˘şĆĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤Î˛áÄř¤Ď ports-mgmt/portmaster ¤ÇźŤĆ°˛˝¤Ç¤­¤Ţ¤šĄŁ ¤š¤Ů¤Ć¤Î ports ¤ŹşĆš˝Ăۤľ¤ěĄ˘ ¸Ĺ¤¤ĽéĽ¤ĽÖĽéĽę¤Ź¤É¤ł¤Ë¤âťČ¤ď¤ě¤Ć¤¤¤Ę¤¤¤ł¤Č¤ňłÎǧ¤ˇ¤ż¤éĄ˘ °Ę˛ź¤ÎĽłĽŢĽóĽÉ¤Ç¸Ĺ¤¤ĽéĽ¤ĽÖĽéĽę¤ňşď˝ü¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; make delete-old-libs ¤ł¤ł¤Ţ¤ÇÍč¤ě¤ĐĄ˘&os; ĽˇĽšĽĆĽŕ¤ÎĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ĎŔޏů¤Ç¤šĄŁ ¤Ş¤á¤Ç¤Č¤Ś¤´¤ś¤¤¤Ţ¤šĄŁ ¤â¤ˇ¤Á¤ç¤Ă¤Č¤ˇ¤żĚäÂꤏ¤˘¤Ă¤żžěšç¤Ç¤âĄ˘ ĽˇĽšĽĆĽŕ¤Î°ěÉô¤ňşĆš˝Ăۤš¤ë¤Î¤Ď´ĘĂą¤Ç¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘Ľ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ä /etc ¤ÎĽŢĄźĽ¸¤ÎĹÓĂć¤Ç¸í¤Ă¤Ć /etc/magic ¤ňşď˝ü¤ˇ¤Ć¤ˇ¤Ţ¤¤Ą˘ ¤˝¤Îˇë˛Ě &man.file.1; ¤ŹĆ°şî¤ˇ¤Ę¤Ż¤Ę¤Ă¤Ć¤ˇ¤Ţ¤Ă¤ż¤č¤Ś¤Ęžěšç¤Ë¤ĎĄ˘ źĄ¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤ˇ¤Ć˝¤Éü¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cd /usr/src/usr.bin/file &prompt.root; make all install źÁĚä¤Ç¤š¤Ť? ĘŃšš¤ŹšÔ¤Ę¤ď¤ě¤ż¤éĄ˘¤˝¤ÎĹ٤˼ˇĽšĽĆĽŕ¤ÎşĆš˝ĂۤŹÉŹÍפˤʤë¤Î¤Ç¤ˇ¤ç¤Ś¤Ť? ¤˝¤ě¤ĎĘŃšš¤ÎŔ­źÁ¤Ë¤č¤ë¤Î¤ÇĄ˘¤Ę¤ó¤Č¤â¸Ŕ¤¨¤Ţ¤ť¤óĄŁ ¤ż¤Č¤¨¤ĐĄ˘svn ¤ňźÂšÔ¤ˇ¤ż¤Č¤­Ą˘ źĄ¤Ë¤˘¤˛¤ë¤č¤Ś¤ĘĽŐĽĄĽ¤Ľë¤Źššżˇ¤ľ¤ě¤Ć¤¤¤ż¤Č¤ˇ¤Ţ¤šĄŁ src/games/cribbage/instr.c src/games/sail/pl_main.c src/release/sysinstall/config.c src/release/sysinstall/media.c src/share/mk/bsd.port.mk ¤ł¤Î¤Č¤­¤Ë¤ĎĄ˘˛ţ¤á¤ĆĽˇĽšĽĆĽŕÁ´ÂΤňşĆš˝Ăۤš¤ëÉŹÍפϤʤ¤¤Ç¤ˇ¤ç¤ŚĄŁ ¤˝¤Î¤Ť¤ď¤ęĄ˘ĹŹŔڤʼľĽÖĽÇĽŁĽěĽŻĽČĽę¤Ë°Ü¤Ă¤Ć make all install ¤ňšÔ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ˇ¤Ť¤ˇĄ˘¤ż¤Č¤¨¤Đ src/lib/libc/stdlib ¤Î¤č¤Ś¤ĘÂ礭¤ĘĘŃšš¤ŹšÔ¤Ę¤ď¤ě¤żžěšç¤Ë¤ĎĄ˘ ĽˇĽšĽĆĽŕÁ´ÂΤňşĆš˝Ăۤš¤ë¤ŤĄ˘ žŻ¤Ę¤Ż¤Č¤âŔĹĹŞ¤ËĽęĽóĽŻ¤ľ¤ě¤Ć¤¤¤ë¤â¤Î¤ňşî¤ęÄž¤šÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ˇëśÉ¤Î¤Č¤ł¤íĄ˘ ¤É¤ÎťţĹŔ¤Ç¸˝şß¤ÎĽˇĽšĽĆĽŕ¤ňĽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤š¤ë¤Ť¤Ď¤˘¤Ę¤ż¤Źˇč¤á¤ë¤ł¤Č¤Ç¤šĄŁ 2 ˝ľ´Ö¤´¤Č¤ËĽˇĽšĽĆĽŕ¤ňşĆš˝ĂۤˇĄ˘¤˝¤Î 2 ˝ľ´Ö¤ÎĘŃšš¤ňźč¤ęšţ¤ŕĽćĄźĽś¤â¤¤¤Ţ¤š¤ˇĄ˘ ĘŃšš¤Î¤˘¤Ă¤żÉôĘŹ¤Ŕ¤ąşĆš˝ĂۤˇĄ˘ ¤š¤Ů¤Ć¤Î°Í¸´Řˇ¸¤ňłÎ¤Ť¤á¤ż¤¤¤ČšÍ¤¨¤ëĽćĄźĽś¤â¤¤¤Ţ¤šĄŁ ¤˝¤ě¤é¤Ď¤É¤Î¤Ż¤é¤¤¤ÎÉŃĹ٤Ǽ˘ĽĂĽ×Ľ°ĽěĄźĽÉ¤ˇ¤ż¤¤¤ŤĄ˘ ¤˝¤ˇ¤Ć &os.stable; ¤Ť &os.current; ¤Î¤É¤Á¤é¤ňÄɤ¤¤Ť¤ą¤Ć¤¤¤ë¤Î¤Ť¤Ë¤č¤ę¤Ţ¤šĄŁ signal 11signal 11 (¤â¤ˇ¤Ż¤Ďž¤ÎĽˇĽ°ĽĘĽëČÖšć) ¤ÎĽ¨ĽéĄź¤Ź¤ż¤Ż¤ľ¤ó˝Đ¤Ć ĽłĽóĽŃĽ¤Ľë¤ŹźşÇÔ¤ˇ¤Ţ¤šĄŁ˛ż¤ŹľŻ¤ł¤Ă¤Ć¤¤¤ë¤ó¤Ç¤ˇ¤ç¤Ś¤Ť? ¤ł¤ě¤ĎÄ̞異ĽĎĄźĽÉĽŚĽ§Ľ˘¤ËĚäÂꤏ¤˘¤ë¤ł¤Č¤ňꍤˇ¤Ć¤¤¤Ţ¤šĄŁ ĽˇĽšĽĆĽŕ¤ÎşĆš˝Ăۤϥ˘ĽĎĄźĽÉĽŚĽ§Ľ˘¤ËÂФš¤ëÉé˛ŮÂѾם¤ňšÔ¤Ę¤Ś¤ż¤á¤Î Í­¸ú¤ĘźęĂʤΰě¤Ä¤ÇĄ˘ĽáĽâĽę¤Ë´Řˇ¸¤š¤ëĚäÂꤏ¤č¤ŻĘóšđ¤ľ¤ě¤Ţ¤šĄŁ ¤˝¤ÎÂçÉôĘŹ¤ĎĄ˘ ÉԲIJň¤Ę°Űžď˝ŞÎť¤Č¤Ę¤ë¤ł¤Č¤ÇČŻ¸Ť¤ľ¤ě¤Ţ¤šĄŁ ËÜĹö¤Ë¤ł¤ÎĚäÂę¤Ë¤č¤ë¤â¤Î¤Ť¤É¤Ś¤Ť¤ĎĄ˘make ¤ň¤â¤Ś°ěĹٟšԤˇĄ˘ °Ű¤Ę¤ëĂĘłŹ¤Ç°Űžď˝ŞÎť¤ŹČŻŔ¸¤š¤ë¤ŤĄ˘¤Č¤¤¤Ś¤ł¤Č¤Ť¤éłÎǧ¤Ç¤­¤Ţ¤šĄŁ ¤ł¤ÎĽ¨ĽéĄź¤ËÂĐąţ¤š¤ë¤Ë¤ĎĄ˘ĽŢĽˇĽó¤ÎÉôÉʤň¸ň´š¤ˇ¤ĆĄ˘ ¤É¤ÎÉôĘŹ¤Ź°­¤¤¤Î¤Ť¤ňÄ´¤Ů¤Ć¤ß¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ˝ŞÎť¤ˇ¤ż¤é /usr/obj ¤ňşď˝ü¤ˇ¤Ć¤â¤Ť¤Ţ¤¤¤Ţ¤ť¤ó¤Ť? °ě¸Ŕ¤ÇĹú¤¨¤ë¤Ę¤éĄÖşď˝ü¤ˇ¤Ć¤âš˝¤ď¤Ę¤¤Ą×¤Ç¤šĄŁ /usr/obj ¤Ë¤ĎĄ˘ ĽłĽóĽŃĽ¤Ľë¤ÎĂĘłŹ¤ÇŔ¸Ŕޤľ¤ě¤ż ¤š¤Ů¤Ć¤ÎĽŞĽÖĽ¸Ľ§ĽŻĽČĽŐĽĄĽ¤Ľë¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ ÄĚžď make buildworld ¤ÎşÇ˝é¤ÎĂĘłŹ¤Ç¤ĎĄ˘ ¤ł¤ÎĽÇĽŁĽěĽŻĽČĽę¤ňşď˝ü¤ˇ¤Ćżˇ¤ˇ¤Ż¤Ä¤Ż¤ęÄž¤š¤č¤Ś¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤šĄŁ š˝ĂŰ˝ŞÎť¸ĺ¤â /usr/obj ¤ňĘݸ¤ˇ¤Ć¤Ş¤¤¤Ć¤âĄ˘¤˘¤Ţ¤ę°ŐĚŁ¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ şď˝ü¤š¤ě¤ĐĄ˘¤Ŕ¤¤¤ż¤¤ 2 GB ¤ÎĽÇĽŁĽšĽŻĽšĽÚĄźĽš¤ň˛ňĘü¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ÎɤŻÍý˛ň¤ň¤ˇ¤Ć¤¤¤ëĽćĄźĽś¤Ç¤˘¤ě¤ĐĄ˘ ¤ł¤ÎĂĘłŹ¤ňžĘÎŹ¤ˇ¤Ć make buildworld ¤ňšÔ¤Ę¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤ł¤Ś¤š¤ë¤ČĄ˘¤Ű¤Č¤ó¤É¤ÎĽ˝ĄźĽš¤ĎşĆĽłĽóĽŃĽ¤Ľë¤ľ¤ě¤Ę¤¤¤ż¤áĄ˘ š˝ĂۤϤŤ¤Ę¤ęšâÂŽ˛˝¤ľ¤ě¤Ţ¤šĄŁ ¤ł¤ě¤Ď΢¤ň¤Ť¤¨¤ť¤ĐĄ˘ĽÇĽęĽąĄźĽČ¤Ę°Í¸´Řˇ¸¤ÎĚäÂę¤Ë¤č¤Ă¤ĆĄ˘ ĽˇĽšĽĆĽŕ¤Îš˝ĂŰ¤Ź´ńĚŻ¤ĘźşÇÔ¤Ë˝Ş¤ď¤ë˛ÄÇ˝Ŕ­¤Ź¤˘¤ë¤Č¤¤¤Ś¤ł¤Č¤Ç¤šĄŁ &os; ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤Ç¤Ď¤ˇ¤Đ¤ˇ¤ĐĄ˘š˝ĂۤΟşÇÔ¤ŹĄ˘ ¤ł¤ÎĂĘłŹ¤ÎžĘÎŹ¤Ë¤č¤ë¤â¤Î¤Ŕ¤Č¤¤¤Ś¤ł¤Č¤ňÍý˛ň¤ť¤ş¤Ë ÉÔËţ¤ÎŔź¤ň¤˘¤˛¤ëżÍ¤Ź¤¤¤Ţ¤šĄŁ š˝ĂۤňĂćĂǤˇ¤żžěšçĄ˘¤˝¤Îš˝ĂۤňĹÓĂ植¤éşĆłŤ¤š¤ë¤ł¤Č¤Ď¤Ç¤­¤Ţ¤š¤Ť? ¤˝¤ě¤ĎĄ˘ĚäÂꤏľŻ¤ł¤ë¤Ţ¤Ç¤ËĄ˘ ¤É¤ě¤Ŕ¤ą¤ÎşîśČ¤ň˝Ş¤¨¤Ć¤¤¤ë¤Ť¤Ë¤č¤Ă¤ĆĘѤď¤ę¤Ţ¤šĄŁ °ěČĚĹŞ¤Ë make buildworld ¤ĎĄ˘ &man.gcc.1; ¤ä &man.make.1; ¤Ţ¤É¤Î´đËÜĹŞ¤ĘĽÄĄźĽë¤äĄ˘ ĽˇĽšĽĆĽŕĽéĽ¤ĽÖĽéĽę¤Îżˇ¤ˇ¤¤ĽłĽÔĄź¤ňşîŔޤˇ¤Ţ¤šĄŁ ¤˝¤Î¸ĺĄ˘¤ł¤ě¤é¤ÎĽÄĄźĽë¤äĽéĽ¤ĽÖĽéĽę¤ŹĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤Ť¤éĄ˘ źŤĘŹźŤżČ¤ÎşĆš˝Ăۤ˝Ȥď¤ěĄ˘¤â¤Ś°ěĹŮĄ˘Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ţ¤šĄŁ &man.ls.1; ¤ä &man.grep.1; ¤Č¤¤¤Ă¤żÉ¸˝ŕĹŞ¤ĘĽćĄźĽśĽ×ĽíĽ°ĽéĽŕ¤ň´Ţ¤ŕĽˇĽšĽĆĽŕÁ´ÂÎ¤ŹĄ˘ ¤˝¤Îżˇ¤ˇ¤¤ĽˇĽšĽĆĽŕĽŐĽĄĽ¤Ľë¤ňÍѤ¤¤Ćşî¤ęÄž¤ľ¤ě¤Ţ¤šĄŁ şĆš˝ĂۤκǽŞĂĘłŹ¤Ç¤ĎĄ˘ ¤Ţ¤Ă¤ż¤Ż°ÂÁ´¤ËźĄ¤Î¤č¤Ś¤Ë¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ … fix the problem … &prompt.root; cd /usr/src &prompt.root; make -DNO_CLEAN all ¤ł¤ě¤ĎĄ˘Á°˛ó¤Î make buildworld ¤ÎşîśČ¤ň¤ä¤ęÄž¤ˇ¤Ţ¤ť¤óĄŁ źĄ¤ÎĽáĽĂĽťĄźĽ¸ -------------------------------------------------------------- Building everything.. -------------------------------------------------------------- ¤Ź make buildworld ¤Î˝ĐÎϤˤ˘¤ëžěšç¤Ë¤ĎĄ˘ žĺ¤Î¤č¤Ś¤Ë¤ˇ¤Ć¤â¤Ű¤Č¤ó¤É°­ąĆśÁ¤Ź¸˝¤ě¤ë¤ł¤Č¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ ¤â¤ˇ¤ł¤ÎĽáĽĂĽťĄźĽ¸¤Ź¤Ę¤¤¤Č¤ŤĄ˘¤č¤ŻĘʤŤ¤é¤Ę¤¤¤Č¤¤¤Śžěšç¤Ë¤ĎĄ˘ °ÂÁ´¤ňłÎĘݤˇĄ˘¸ĺ˛ů¤š¤ë¤č¤Ś¤Ę¤ł¤Č¤Ź¤Ę¤¤¤č¤ŚĄ˘ ĽˇĽšĽĆĽŕ¤ÎşĆš˝ĂۤňşÇ˝é¤Ť¤é¤ä¤ęÄž¤ˇ¤Ţ¤ˇ¤ç¤ŚĄŁ ¤É¤Î¤č¤Ś¤Ë¤š¤ě¤Đ make world ¤ňšâÂŽ˛˝¤Ç¤­¤Ţ¤š¤Ť? ĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤Çư¤Ť¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /usr/src ¤Č /usr/obj ¤ňĄ˘°Ű¤Ę¤ëĽÇĽŁĽšĽŻžĺ¤ÎĘ̤μռĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ËĂÖ¤¤¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤Ţ¤ż˛ÄÇ˝¤Ę¤é¤ĐĄ˘ °Ű¤Ę¤ëĽÇĽŁĽšĽŻĽłĽóĽČĽíĄźĽé¤ËŔÜÂł¤ľ¤ě¤żĽÇĽŁĽšĽŻ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ľ¤é¤ËšâÂŽ˛˝¤š¤ë¤Ë¤ĎĄ˘¤ł¤ě¤é¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ň &man.ccd.4; ¤ňťČ¤Ă¤ĆĄ˘ ĘŁżô¤ÎĽÇĽŁĽšĽŻžĺ¤ËĂÖ¤¤¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /etc/make.conf ¤Ë NO_PROFILE=true ¤ňĽťĽĂĽČ¤ˇ¤ĆĄ˘ Ľ×ĽíĽŐĽĄĽ¤ĽëČǤκîŔޤňĚľ¸ú˛˝¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &man.make.1; ¤Ë ¤ňťŘÄꤡ¤ĆĄ˘ĘŁżô¤ÎĽ×ĽíĽťĽš¤ňĘÂÎó¤ËźÂšÔ¤ľ¤ť¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ě¤ĎĄ˘Ăą°ě¤ÎĽ×ĽíĽťĽĂĽľ¤Ç¤âĘŁżô¤ÎĽ×ĽíĽťĽĂĽľ¤Ç¤âĄ˘ ĆąÍͤ˲¸ˇĂ¤ňĆŔ¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ /usr/src ¤Î¤˘¤ëĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĄ˘ ĽŞĽ×ĽˇĽçĽó¤ňÉŐ¤ą¤ĆĽŢĽŚĽóĽČ¤â¤ˇ¤Ż¤ĎşĆĽŢĽŚĽóĽČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ě¤ĎĄ˘¤˝¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ë¤Ş¤¤¤ĆĄ˘ şÇ¸ĺ¤ËĽ˘ĽŻĽťĽš¤ľ¤ě¤żťţšď¤Î˝ń¤­šţ¤ß¤ňÍŢŔФˇ¤Ţ¤šĄŁ ¤Ş¤˝¤é¤ŻĄ˘¤ł¤ÎžđĘó¤ŹÉŹÍפˤʤ뤳¤Č¤Ď¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ &prompt.root; mount -u -o noatime /usr/src žĺ¤ÎÎă¤ĎĄ˘ /usr/src źŤżČ¤ŹĆČΊ¤ˇ¤żĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ç¤˘¤ë¤ł¤Č¤ňÁŰÄꤡ¤Ć¤¤¤Ţ¤šĄŁ ¤â¤ˇ /usr ¤Î°ěÉô¤Ç¤˘¤ëžěšç¤Ë¤ĎĄ˘ ¤Ť¤ď¤ę¤ËĹŹŔÚ¤ĘĽŢĽŚĽóĽČĽÝĽ¤ĽóĽČ¤ňťŘÄꤚ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /usr/obj ¤Î¤˘¤ëĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĄ˘ ĽŞĽ×ĽˇĽçĽó¤ň¤Ä¤ą¤ĆĽŢĽŚĽóĽČ¤â¤ˇ¤Ż¤ĎşĆĽŢĽŚĽóĽČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ě¤Ë¤č¤Ă¤ĆĄ˘ĽÇĽŁĽšĽŻ¤Ř¤Î˝ń¤­šţ¤ß¤ŹČóĆą´ü¤Ë¤Ę¤ę¤Ţ¤šĄŁ ¤Ä¤Ţ¤ęĄ˘˝ń¤­šţ¤ßĚżÎá¤Ď¤š¤°¤Ë´°Îť¤š¤ë¤Î¤ËÂФˇĄ˘ źÂşÝ¤ËĽÇĄźĽż¤ŹĽÇĽŁĽšĽŻ¤Ë˝ń¤­šţ¤Ţ¤ě¤ë¤Î¤ĎĄ˘¤˝¤ÎżôÉøĺ¤Ë¤Ę¤ę¤Ţ¤šĄŁ ¤ł¤ě¤Ë¤č¤Ă¤ĆĄ˘˝ń¤­šţ¤ß˝čÍý¤Î°ěłç˛˝¤Ź˛ÄÇ˝¤Ë¤Ę¤ë¤ż¤áĄ˘ ˇŕĹŞ¤ĘĽŃĽŐĽŠĄźĽŢĽóĽš¤Î¸ţžĺ¤Ź´üÂԤǤ­¤Ţ¤šĄŁ ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ňťŘÄꤚ¤ë¤ČĄ˘ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ď ˛ő¤ě¤ä¤š¤Ż¤Ę¤Ă¤Ć¤ˇ¤Ţ¤Ś¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ňÉŐ¤ą¤Ć¤¤¤ĆĄ˘ĆÍÁłĹŸť¤ŹÍî¤Á¤żžěšç¤Ë¤ĎĄ˘ şĆľŻĆ°¸ĺ¤ËĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ŹÉüľěÉÔÇ˝¤Ë¤Ę¤ë˛ÄÇ˝Ŕ­¤Ź Čóžď¤Ëšâ¤Ż¤Ę¤ę¤Ţ¤šĄŁ ¤â¤ˇĄ˘>/usr/obj ¤ŹĄ˘ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ë¤˘¤ëÍŁ°ě¤ÎĽÇĽŁĽěĽŻĽČĽę¤Ç¤˘¤ě¤ĐĄ˘ ¤ł¤ě¤ĎĚäÂę¤Ë¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ˇ¤Ť¤ˇĄ˘ĆएĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ËĄ˘Âž¤ÎľŽ˝Ĺ¤ĘĽÇĄźĽż¤ňĂÖ¤¤¤Ć¤¤¤ë¤Č¤­¤Ë¤ĎĄ˘ ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ňÍ­¸ú¤Ë¤š¤ëÁ°¤ËĄ˘ ĽĐĽĂĽŻĽ˘ĽĂĽ×¤ň¤­¤Á¤ó¤Čźč¤Ă¤Ć¤Ş¤­¤Ţ¤ˇ¤ç¤ŚĄŁ &prompt.root; mount -u -o async /usr/obj ¤â¤ˇ /usr/obj źŤżČ¤ŹĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤Ç¤Ę¤¤žěšç¤Ë¤ĎĄ˘ ĹŹŔÚ¤ĘĽŢĽŚĽóĽČĽÝĽ¤ĽóĽČ¤ňťŘ¤š¤č¤Ś¤ËĄ˘ žĺ¤ÎÎă¤ÎĚžÁ°¤ňĂÖ¤­´š¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤Ę¤Ë¤Ť°­¤¤¤ł¤Č¤Ź¤˘¤Ă¤ż¤é¤É¤Ś¤š¤ě¤Đ¤¤¤¤¤Ç¤š¤Ť? źŤĘŹ¤Î´Äś­¤ËÁ°¤ÎĽÓĽëĽÉ¤ÎÍžˇ×¤ĘĽ´Ľß¤ŹťÄ¤Ă¤Ć¤¤¤Ę¤¤¤ł¤Č¤ň¤Ď¤Ă¤­¤ę¤ČłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; chflags -R noschg /usr/obj/usr &prompt.root; rm -rf /usr/obj/usr &prompt.root; cd /usr/src &prompt.root; make cleandir &prompt.root; make cleandir ¤¨¤¨Ą˘make cleandir ¤ĎËÜĹö¤Ë 2 ˛óźÂšÔ¤š¤ë¤Î¤Ç¤šĄŁ ¤˝¤ˇ¤ĆĄ˘make buildworld ¤ňšÔ¤¤Ą˘ Á´Ľ×ĽíĽťĽš¤ňşÇ˝é¤Ť¤é¤ä¤ęÄž¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤Ţ¤ŔĚäÂꤏ¤˘¤ě¤ĐĄ˘Ľ¨ĽéĄź¤Č uname -a ¤Î˝ĐÎϤň &a.questions; ¤ËÁ÷¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ŔßÄę¤Ë¤Ä¤¤¤Ć¤ľ¤é¤ËźÁĚ䤾¤ě¤Ć¤âĹú¤¨¤é¤ě¤ë¤č¤ŚÍѰդˇ¤Ć¤Ż¤Ŕ¤ľ¤¤! Mike Meyer ´óšĆ: ĘŁżô¤ÎĽŢĽˇĽó¤ÇÄɤ¤¤Ť¤ą¤ë NFS ĘŁżô¤ÎĽŢĽˇĽó¤ËĽ¤ĽóĽšĽČĄźĽë ĘŁżô¤ÎĽłĽóĽÔĽĺĄźĽż¤ÇĆą¤¸Ľ˝ĄźĽšĽÄĽęĄź¤ňÄɤ¤¤Ť¤ą¤Ć¤¤¤ĆĄ˘ Á´Éô¤ÎĽŢĽˇĽó¤ËĽ˝ĄźĽš¤ňĽŔĽŚĽóĽíĄźĽÉ¤ˇ¤ĆÁ´Éô¤ňşĆš˝Ăۤš¤ë¤Î¤ĎĄ˘ ĽÇĽŁĽšĽŻĽšĽÚĄźĽšĄ˘ĽÍĽĂĽČĽďĄźĽŻÂӰ襢¤˝¤ˇ¤Ć CPU ĽľĽ¤ĽŻĽë¤ÎĚľÂ̝Ȥ¤¤Ç¤šĄŁ ˛ňˇčşö¤Ď 1 ¤Ä¤ÎĽŢĽˇĽó¤ËťĹťö¤Î¤Ű¤Č¤ó¤É¤ň¤ľ¤ťĄ˘ ťÄ¤ę¤ÎĽŢĽˇĽó¤Ď NFS ˇĐÍł¤Ç¤˝¤ě¤ňĽŢĽŚĽóĽČ¤š¤ëĄ˘¤Č¤¤¤Ś¤â¤Î¤Ç¤šĄŁ ¤ł¤ÎĽťĽŻĽˇĽçĽó¤Ç¤Ď¤˝¤Î¤ä¤ęĘý¤ňłľ´Ń¤ˇ¤Ţ¤šĄŁ ˝ŕČ÷ ¤Ţ¤ş˝é¤á¤ËĄ˘ĆएĽĐĽ¤ĽĘĽę¤Çư¤Ť¤˝¤Ś¤Č¤š¤ëĽŢĽˇĽó¤ż¤Á¤ňˇč¤á¤Ţ¤šĄŁ ¤ł¤ÎĽŢĽˇĽó¤ż¤Á¤Î¤ł¤Č¤ňĽÓĽëĽÉĽťĽĂĽČ¤Č¸Ć¤Ó¤Ţ¤šĄŁ ¤˝¤ě¤ž¤ě¤ÎĽŢĽˇĽó¤ĎĽŤĽšĽżĽŕĽŤĄźĽÍĽë¤ňťý¤Ă¤Ć¤¤¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤ó¤ŹĄ˘ Ćą¤¸ĽćĄźĽśĽéĽóĽÉĽĐĽ¤ĽĘĽę¤ňư¤Ť¤˝¤Ś¤Č¤¤¤Ś¤Î¤Ç¤šĄŁ ¤ł¤ÎĽÓĽëĽÉĽťĽĂĽČ¤Ť¤éĄ˘ ĽÓĽëĽÉĽŢĽˇĽó¤Č¤Ę¤ëĽŢĽˇĽó¤ň 1 ÂćÁŞ¤Ó¤Ţ¤šĄŁ ĽŮĄźĽšĽˇĽšĽĆĽŕ¤ČĽŤĄźĽÍĽë¤ňš˝Ăۤš¤ë¤Î¤Ď¤ł¤ÎĽŢĽˇĽó¤Ë¤Ę¤ę¤Ţ¤šĄŁ ÍýÁŰĹŞ¤Ë¤ĎĄ˘¤ł¤ÎĽŢĽˇĽó¤Ď make buildworld ¤Č make buildkernel ¤ňźÂšÔ¤š¤ë¤Î¤Ë˝˝ĘŹ¤Ę CPU ¤ňťý¤Ă¤żÂޤ¤ĽŢĽˇĽó¤Ç¤˘¤ë¤Ů¤­¤Ç¤šĄŁ ĽĆĽšĽČĽŢĽˇĽó¤Č¤Ę¤ë¤Ů¤­ĽŢĽˇĽó¤âÁޤó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ ššżˇ¤ľ¤ě¤żĽ˝ĽŐĽČĽŚĽ§Ľ˘¤ňťČ¤ŚÁ°¤Ë¤˝¤ÎĽŢĽˇĽó¤ÇĽĆĽšĽČ¤š¤ë¤Î¤Ç¤šĄŁ ĽĆĽšĽČĽŢĽˇĽó¤Ď¤Ť¤Ę¤ęÄš¤¤ťţ´ÖÍî¤Á¤Ć¤¤¤Ć¤â ¤Ŕ¤¤¤¸¤ç¤Ś¤Ö¤ĘĽŢĽˇĽó¤Ç¤˘¤Ă¤ż¤Ű¤Ś¤Ź¤¤¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ĽÓĽëĽÉĽŢĽˇĽó¤Ç¤â¤Ť¤Ţ¤¤¤Ţ¤ť¤ó¤ŹĄ˘ĽÓĽëĽÉĽŢĽˇĽó¤Ç¤˘¤ëÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ÎĽÓĽëĽÉĽťĽĂĽČ¤ÎĽŢĽˇĽó¤Ď¤š¤Ů¤Ć /usr/obj ¤Č /usr/src ¤ňĆą¤¸ĽŢĽˇĽó¤ÎĆą¤¸žě˝ę¤Ť¤éĽŢĽŚĽóĽČ¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ÍýÁŰĹŞ¤Ë¤ĎĽÓĽëĽÉĽŢĽˇĽó¤Î 2 ¤Ä¤Î°ă¤ŚĽÉĽéĽ¤ĽÖžĺ¤Ë¤˘¤ë¤Č¤č¤¤¤Î¤Ç¤š¤ŹĄ˘ ĽÓĽëĽÉĽŢĽˇĽó¤Ë NFS ĽŢĽŚĽóĽČ¤ľ¤ě¤Ć¤¤¤Ć¤â¤Ť¤Ţ¤¤¤Ţ¤ť¤óĄŁ ĽÓĽëĽÉĽťĽĂĽČźŤÂΤŹĘŁżô¤˘¤ëžěšç¤ĎĄ˘ /usr/src ¤Ď¤Ň¤Č¤Ä¤ÎĽÓĽëĽÉĽŢĽˇĽóžĺ¤Ë¤˘¤ë¤Ů¤­¤Ç¤šĄŁ ž¤ÎĽŢĽˇĽó¤Ť¤é¤Ď¤˝¤ě¤ň NFS ĽŢĽŚĽóĽČ¤š¤ë¤č¤Ś¤Ë¤ˇ¤Ţ¤ˇ¤ç¤ŚĄŁ şÇ¸ĺ¤ËĽÓĽëĽÉĽťĽĂĽČ¤Î¤š¤Ů¤Ć¤ÎĽŢĽˇĽóžĺ¤Î /etc/make.conf ¤Č /etc/src.conf ¤ŹĽÓĽëĽÉĽŢĽˇĽó¤Č°ěĂפˇ¤Ć¤¤¤ë¤ł¤Č¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤Ä¤Ţ¤ęĄ˘ĽÓĽëĽÉĽŢĽˇĽó¤ĎĽÓĽëĽÉĽťĽĂĽČ¤Î¤É¤ÎĽŢĽˇĽó¤âĽ¤ĽóĽšĽČĄźĽë¤ˇ¤č¤Ś¤Č¤ˇ¤Ć¤¤¤ë ĽŮĄźĽšĽˇĽšĽĆĽŕ¤ňÁ´ÉôĽÓĽëĽÉ¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Č¤¤¤Ś¤ł¤Č¤Ç¤šĄŁ ¤Ţ¤żĄ˘łĆĽÓĽëĽÉĽŢĽˇĽó¤Ď /etc/make.conf ¤Ë¤˝¤ě¤ž¤ě¤ÎĽÓĽëĽÉĽŢĽˇĽó¤ÎĽŤĄźĽÍĽëĚž¤ň KERNCONF ¤ÇťŘÄꤡĄ˘ ĽÓĽëĽÉĽŢĽˇĽó¤ĎźŤĘŹźŤżČ¤ÎĽŤĄźĽÍĽë¤Ť¤é˝ç¤ËÁ´Éô¤ÎĽŤĄźĽÍĽëĚž¤ň KERNCONF ¤ËĽęĽšĽČĽ˘ĽĂĽ×¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ łĆĽŢĽˇĽó¤ÎĽŤĄźĽÍĽë¤âĽÓĽëĽÉ¤š¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘ ĽÓĽëĽÉĽŢĽˇĽó¤ĎłĆĽŢĽˇĽó¤ÎĽŤĄźĽÍĽëŔßÄęĽŐĽĄĽ¤Ľë¤ň /usr/src/sys/arch/conf ¤Ëťý¤Ă¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ĽŮĄźĽšĽˇĽšĽĆĽŕ ĽÓĽëĽÉĽŢĽˇĽó¤Ë¤ĆĄ˘ ¤Ë˝ń¤¤¤Ć¤˘¤ë¤č¤Ś¤ËĽŤĄźĽÍĽë¤ČĽŮĄźĽšĽˇĽšĽĆĽŕ¤ňš˝Ăۤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤Ç¤âĄ˘¤Ţ¤ŔĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽÓĽëĽÉ¤Ź˝Ş¤ď¤Ă¤ż¤éĄ˘ĽĆĽšĽČĽŢĽˇĽó¤Ë°Ü¤ęĄ˘ ĽÓĽëĽÉ¤ˇ¤żĽŤĄźĽÍĽë¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽĆĽšĽČĽŢĽˇĽó¤Ź NFS ˇĐÍł¤Ç /usr/src ¤Č /usr/obj ¤ňĽŢĽŚĽóĽČ¤ˇ¤Ć¤¤¤ë¤Ę¤éĄ˘ ĽˇĽóĽ°ĽëĽćĄźĽś¤ÇşĆľŻĆ°¤ˇ¤ż¤Č¤­¤ËĽÍĽĂĽČĽďĄźĽŻ¤ňťČ¤¨¤ë¤č¤Ś¤Ë¤ˇ¤ĆĄ˘ ¤ł¤ě¤é¤ÎĽÇĽŁĽěĽŻĽČĽę¤ňĽŢĽŚĽóĽČ¤š¤ë¤č¤Ś¤Ë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤â¤Ă¤Č¤â´ĘĂą¤ĘĘýËĄ¤ĎĄ˘ ĽŢĽëĽÁĽćĄźĽśĽâĄźĽÉ¤ÇľŻĆ°¤ˇ¤ĆĄ˘shutdown now ¤ňźÂšÔ¤ˇ¤ĆĽˇĽóĽ°ĽëĽćĄźĽśĽâĄźĽÉ¤Ë°ÜšÔ¤š¤ë¤ł¤Č¤Ç¤šĄŁ ¤˝¤Ś¤ˇ¤ż¤éĄ˘ĽŤĄźĽÍĽë¤ČĽŮĄźĽšĽˇĽšĽĆĽŕ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇĄ˘ ¤¤¤Ä¤â¤š¤ë¤č¤Ś¤Ë mergemaster ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ˝Ş¤ď¤Ă¤ż¤éĄ˘ ĽĆĽšĽČĽŢĽˇĽó¤ňşĆľŻĆ°¤ˇ¤ĆÄĚžď¤ÎĽŢĽëĽÁĽćĄźĽśĆ°şî¤ËĚᤡ¤Ţ¤šĄŁ ĽĆĽšĽČĽŢĽˇĽó¤Ë¤˘¤ë¤â¤Î¤š¤Ů¤Ć¤Ź¤Á¤ă¤ó¤Čư¤¤¤Ć¤¤¤ëłÎżŽ¤ŹĆŔ¤é¤ě¤ż¤éĄ˘ Ćą¤¸źę˝ç¤ÇĽÓĽëĽÉĽťĽĂĽČ¤Îž¤ÎĽŢĽˇĽó¤Ë¤âżˇ¤ˇ¤¤Ľ˝ĽŐĽČĽŚĽ§Ľ˘¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ţ¤šĄŁ Ports ports ĽÄĽęĄź¤Ë¤âĆą¤¸Ľ˘Ľ¤ĽÇĽ˘¤ŹťČ¤¨¤Ţ¤šĄŁ şÇ˝é¤Ë˝ĹÍפĘĹŔ¤ĎĄ˘ ĽÓĽëĽÉĽťĽĂĽČ¤Î¤š¤Ů¤Ć¤ÎĽŢĽˇĽó¤ËĆą¤¸ĽŢĽˇĽó¤Î /usr/ports ¤ňĽŢĽŚĽóĽČ¤š¤ë¤ł¤Č¤Ç¤šĄŁ ¤˝¤ˇ¤ĆĄ˘distfiles ¤ňśŚÍ­¤š¤ë¤č¤Ś¤Ë /etc/make.conf ¤ňĹŹŔÚ¤ËŔßÄꤡ¤Ţ¤šĄŁ NFS ĽŢĽŚĽóĽČ¤Ë¤č¤Ă¤ĆĽŢĽĂĽ×¤ľ¤ě¤ë root ĽćĄźĽś¤Ź˛ż¤Ç¤˘¤ěĄ˘DISTDIR ¤Ď¤˝¤ÎĽćĄźĽś¤Ź˝ń¤­šţ¤á¤ëśŚÄ̤ΜŚÍ­ĽÇĽŁĽěĽŻĽČĽę¤ËŔßÄꤚ¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ łĆĽŢĽˇĽó¤Ď WRKDIRPREFIX ¤ňźŤĘŹ¤ÎĽŢĽˇĽó¤ÎĽÓĽëĽÉĽÇĽŁĽěĽŻĽČĽę¤ËŔßÄꤡ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ şÇ¸ĺ¤ËĄ˘packages ¤ňĽÓĽëĽÉ¤ˇ¤ĆÇŰÉۤš¤ë¤Î¤Ç¤˘¤ě¤ĐĄ˘ DISTDIR ¤ČĆą¤¸¤č¤Ś¤Ë PACKAGES ĽÇĽŁĽěĽŻĽČĽę¤âŔßÄꤡ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ diff --git a/ja_JP.eucJP/books/handbook/mail/chapter.xml b/ja_JP.eucJP/books/handbook/mail/chapter.xml index 5725f0975e..624cdf6b9e 100644 --- a/ja_JP.eucJP/books/handbook/mail/chapter.xml +++ b/ja_JP.eucJP/books/handbook/mail/chapter.xml @@ -1,1527 +1,1526 @@ Bill Lloyd ¸śşî: Jim Mock ˛ţÄű: ĹŝҼᥟĽë Ěő: &a.jp.mihoko;. 14 January 1997. ¤ł¤ÎžĎ¤Ç¤Ď email ĹŝҼᥟĽë ĹŝҼᥟĽëĄ˘email ¤Č¤ˇ¤Ć¤Î¤Ű¤Ś¤ŹĂΤé¤ě¤Ć¤¤¤ë¤Ç¤ˇ¤ç¤ŚĄ˘ ¤Ď¸˝Âĺ¤ÇşÇ¤âš­¤ŻÍřÍѤľ¤ě¤Ć¤¤¤ëĽłĽßĽĺĽËĽąĄźĽˇĽçĽóźęĂʤΰě¤Ä¤Ç¤šĄŁ ¤ł¤ÎžĎ¤Ç¤Ď FreeBSD žĺ¤ÇĽáĄźĽëĽľĄźĽĐ¤ňźÂšÔ¤š¤ë¤ż¤á¤Î´đËÜĹŞ¤ĘĆłĆţ¤ňŔâĚŔ¤ˇ¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇĄ˘¤ł¤Îʸ˝ń¤Ď´°ŕú¤Ęť˛šÍʸ¸Ľ¤Ç¤Ď¤Ę¤ŻĄ˘ źÂşÝ¤Î¤Č¤ł¤íšÍθ¤š¤Ů¤­˝ĹÍפĘĹŔ¤ÎÂż¤Ż¤ŹžĘÎŹ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤Îˇď¤Ë¤Ä¤¤¤ĆĄ˘¤č¤ęĚÖÍ夡¤ż¤â¤Î¤Ë¤Ä¤¤¤Ć¤Ď ¤ËˇÇşÜ¤ľ¤ě¤Ć¤¤¤ëÂż¤Ż¤ÎÍĽ¤ě¤ż˝ńŔҤňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎžĎ¤Ç¤ĎĄ˘°Ę˛ź¤ÎĘŹĚî¤Ë¤Ä¤¤¤ĆŔâĚŔ¤ˇ¤Ţ¤šĄŁ ĹŝҼᥟĽë¤ÎÁ÷źőżŽ¤Ë´Řˇ¸¤ˇ¤Ć¤¤¤ëĽ˝ĽŐĽČĽŚĽ§Ľ˘¤Îš˝ŔŽÍ×ÁÇ FreeBSD ¤Ë¤Ş¤ą¤ë sendmail ¤Î´đËÜĹŞ¤ĘŔßÄęĽŐĽĄĽ¤Ľë¤Î¤˘¤ëžě˝ę ĽšĽŃĽŢĄź¤Ź¤˘¤Ę¤ż¤ÎĽáĄźĽëĽľĄźĽĐ¤ňƧÂć¤Č¤ˇ¤ĆÉÔŔľ¤ËťČÍѤš¤ë¤ł¤Č¤ňËɤ°ĘýËĄ ¤˘¤Ę¤ż¤ÎĽˇĽšĽĆĽŕ¤Ë sendmail ¤ÎĂÖ¤­´š¤¨¤Č¤Ę¤ëÂĺÂؤΠMTA ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤ĆŔßÄꤚ¤ëĘýËĄ ĽáĄźĽëĽľĄźĽĐ¤Ë¤Ţ¤Ä¤ď¤ëśŚÄ̤ÎĚäÂę¤Î˛ňˇčËĄ UUCP ¤Č¤Č¤â¤Ë SMTP ¤ňťČ¤ŚĘýËĄ ĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ×ŔÜÂł¤ÇĽáĄźĽë¤ňťČ¤ŚĘýËĄ ĽťĽ­ĽĺĽęĽĆĽŁ¤ň¸ţžĺ¤š¤ë¤ż¤á¤Ë SMTP ǧžÚ¤ňŔßÄꤚ¤ëĘýËĄ ¤ł¤ÎžĎ¤ňĆɤŕÁ°¤ËĄ˘°Ę˛ź¤Î¤ł¤Č¤ňÍý˛ň¤ˇ¤Ć¤Ş¤ŻÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ĽÍĽĂĽČĽďĄźĽŻŔÜÂł¤ÎĹŹŔÚ¤ĘŔßÄęĘýËĄ () ¤˘¤Ę¤ż¤ÎĽáĄźĽëĽŰĽšĽČ¤ËÂФš¤ë DNS žđĘó¤ÎĹŹŔÚ¤ĘŔßÄęĘýËĄ () ĽľĄźĽÉĽŃĄźĽĆĽŁŔ˝Ľ˝ĽŐĽČĽŚĽ§Ľ˘¤ÎĽ¤ĽóĽšĽČĄźĽëĘýËĄ () ĹŝҼᥟĽë¤ňťČ¤Ś POP IMAP DNS email ¤Î¸ň´š¤Ë¤Ď 5 ¤Ä¤ÎźçÍפĘÉôĘŹ¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤˝¤ě¤é¤Ď ĽćĄźĽśĄźĽ×ĽíĽ°ĽéĽŕĄ˘ ĽľĄźĽĐĄźĽÇĄźĽâĽóĄ˘ DNSĄ˘ POP ¤â¤ˇ¤Ż¤Ď IMAP ¤ÎĽÇĄźĽâĽóĄ˘ ¤˝¤ˇ¤Ć¤â¤Á¤í¤ó ĽáĄźĽëĽŰĽšĽČ¤Ç¤šĄŁ ĽćĄźĽśĄźĽ×ĽíĽ°ĽéĽŕ ¤¤¤Ż¤Ä¤ŤĚžÁ°¤ňľó¤˛¤ě¤ĐĄ˘ mutt, pine, elm ¤˝¤ˇ¤Ć mail ¤Č¤¤¤Ă¤żĽłĽŢĽóĽÉĽéĽ¤ĽóĽ×ĽíĽ°ĽéĽŕ¤ä balsa, xfmail ¤Î¤č¤Ś¤Ę GUI Ľ×ĽíĽ°ĽéĽŕĄ˘WWW ĽÖĽéĽŚĽśĄź¤Î¤č¤Ś¤Ë¤ľ¤é¤Ë ŔöÎý¤ľ¤ě¤ż ¤â¤Î¤Ţ¤Ç¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĽ×ĽíĽ°ĽéĽŕ¤ĎĄ˘email ¤Î˝čÍý¤ň server daemons ¤ň¸Ć¤Ó˝Đ¤ˇ¤ż¤ę TCP ˇĐÍł¤ÇĹϤˇ¤ż¤ęĄ˘¤Č¤¤¤Ă¤żźęĂĘ¤ÇĽíĄźĽŤĽë¤Î ĽáĄźĽëĽŰĽšĽČ ¤ËǤ¤ť¤ë¤Ŕ¤ą¤Ç¤šĄŁ ĽáĄźĽëĽŰĽšĽČĽľĄźĽĐĽÇĄźĽâĽó ĽáĄźĽëĽľĄźĽĐĽÇĄźĽâĽó sendmail ĽáĄźĽëĽľĄźĽĐĽÇĄźĽâĽó postfix ĽáĄźĽëĽľĄźĽĐĽÇĄźĽâĽó qmail ĽáĄźĽëĽľĄźĽĐĽÇĄźĽâĽó exim Ä̞異¤ł¤ě¤Ď sendmail (FreeBSD ¤ÎĽÇĽŐĽŠĽëĽČ) ¤ä qmail, postfix ¤â¤ˇ¤Ż¤Ď exim ¤Č¤¤¤Ă¤żÂž¤ÎĽáĄźĽëĽľĄźĽĐĄźĽÇĄźĽâĽó¤Î°ě¤Ä¤Ç¤šĄŁ ž¤Ë¤â¤˘¤ë¤Î¤Ç¤š¤ŹĄ˘°Ęžĺ¤Î¤â¤Î¤Źš­¤ŻťČ¤ď¤ě¤Ć¤¤¤Ţ¤šĄŁ ĽľĄźĽĐĄźĽÇĄźĽâĽó¤ĎÄĚžď 2 ¤Ä¤ÎľĄÇ˝ — ¤ä¤Ă¤Ć¤Ż¤ëĽáĄźĽë¤ňźő¤ąźč¤ë¤Î¤Č˝Đ¤Ć¤¤¤ŻĽáĄźĽë¤ňÇŰÁ÷¤š¤ëĄ˘ ¤ňťý¤Ă¤Ć¤¤¤Ţ¤šĄŁĽáĄźĽë¤ňĆɤि¤á¤Ë POP ¤ä IMAP ¤ÇŔÜÂł¤š¤ëĄ˘ ¤Č¤¤¤Ś¤ł¤Č¤Ď¤Ç¤­¤Ţ¤ť¤óĄŁ ¤˝¤Î¤ż¤á¤Ë¤Ď¤â¤Ś°ě¤ÄĽÇĄźĽâĽó¤ŹÉŹÍ×¤Ę¤Î¤Ç¤šĄŁ ¤¤¤Ż¤Ä¤Ť¤Î¸Ĺ¤¤ĽĐĄźĽ¸ĽçĽó¤Î sendmail ¤Ë¤Ďżźšď¤ĘĽťĽ­ĽĺĽęĽĆĽŁĚäÂꤏ¤˘¤ę¤Ţ¤š¤ŹĄ˘ ¸˝şß¤ÎĽĐĄźĽ¸ĽçĽó¤ňťČ¤Ă¤Ć¤¤¤ě¤ĐĆäËĚäÂę¤Ę¤¤¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ Îă¤Î¤´¤Č¤ŻĄ˘ ¤É¤ó¤ĘĽ˝ĽŐĽČĽŚĽ§Ľ˘¤ňÍřÍѤš¤ëťţ¤Ë¤âşÇżˇ¤ÎžőÂ֤ˤˇ¤Ć¤Ş¤Ż¤Î¤ŹÂçťö¤Ę¤Î¤Ç¤šĄŁ Email ¤Č DNS Domain Name System (DNS) ¤Č¤˝¤ÎĽÇĄźĽâĽó¤Ç¤˘¤ë named ¤Ď email ¤ÎÇŰÁ÷¤Ë¤Ş¤¤¤ĆÂçĘŃ˝ĹÍפĘĚňłä¤ňĂ´¤Ă¤Ć¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤ÎĽľĽ¤ĽČ¤Ť¤é¤â¤Ś°ě¤Ä¤ÎĽľĽ¤ĽČ¤ŘĽáĄźĽë¤ňÇŰÁ÷¤š¤ë¤ż¤á¤Ë¤ĎĄ˘ ĽľĄźĽĐĄźĽÇĄźĽâĽó¤Ď DNS ¤Ť¤é¤˝¤ÎĽľĽ¤ĽČ¤ňĂľ¤ˇĄ˘ ĽáĄźĽë¤Îźő¤ąźč¤ęŔč¤ÎĽŰĽšĽČ¤ňˇčÄꤡ¤Ţ¤šĄŁ ĽáĄźĽë¤Ź¤˘¤Ę¤ż¤ËÁ÷¤é¤ě¤żžěšç¤Ë¤âĆą¤¸¤č¤Ś¤ĘťĹÁȤߤˤʤäƤ¤¤Ţ¤šĄŁ DNS ¤Ë¤ĎĽŰĽšĽČĚž¤Č IP Ľ˘ĽÉĽěĽšĄ˘ĽŰĽšĽČĚž¤ČĽáĄźĽëĽŰĽšĽČ¤ňĽŢĽĂĽÔĽóĽ°¤š¤ëĽÇĄźĽżĽŮĄźĽš¤Ź¤˘¤ę¤Ţ¤šĄŁ IP Ľ˘ĽÉĽěĽš¤Ď A ĽěĽłĄźĽÉ¤ÇťŘÄꤾ¤ě¤Ţ¤šĄŁ MX (Mail eXchanger) ĽěĽłĄźĽÉ¤Ď¤˘¤Ę¤ż°¸¤ÎĽáĄźĽë¤ňźő¤ąźč¤ëĽŰĽšĽČ¤ňťŘÄꤡ¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤ÎĽŰĽšĽČĚž¤ËÂФš¤ë MX ĽěĽłĄźĽÉ¤Ź¤Ę¤¤žěšç¤Ë¤ĎĄ˘ ĽáĄźĽë¤ĎÄžŔܤ˘¤Ę¤ż¤ÎĽŰĽšĽČ¤ËÇŰÁ÷¤ľ¤ě¤Ţ¤šĄŁ ĽáĄźĽë¤Îźő¤ąźč¤ę email źő¤ąźč¤ę ĽáĄźĽë¤ĎĽáĄźĽëĽŰĽšĽČ¤Źźő¤ąźč¤ę¤Ţ¤šĄŁ ¤ł¤ÎĽŰĽšĽČ¤ĎÁ÷¤é¤ě¤Ć¤­¤żĽáĄźĽë¤ň˝¸¤áĄ˘ (ĽćĄźĽśĄź¤Ź) Ćɤó¤Ŕ¤ęĽÔĽĂĽŻĽ˘ĽĂĽ×¤ˇ¤ż¤ę¤š¤ë¤ż¤á¤ËĘݸ¤ˇ¤Ţ¤šĄŁ Ęݸ¤ľ¤ě¤Ć¤¤¤ëĽáĄźĽë¤ňĽÔĽĂĽŻĽ˘ĽĂĽ×¤š¤ë¤Ë¤ĎĽáĄźĽëĽŰĽšĽČ¤ËŔÜÂł¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤ł¤ě¤Ď POP ¤ä IMAP ¤ňÍѤ¤¤ĆšÔ¤Ę¤ď¤ě¤Ţ¤šĄŁ ĽáĄźĽëĽŰĽšĽČžĺ¤ÇÄžŔܼᥟĽë¤ňĆɤߤż¤¤ťţ¤Ď POP ¤ä IMAP ¤ÎĽľĄźĽĐĄź¤ĎÉŹÍפ˘¤ę¤Ţ¤ť¤óĄŁ POP IMAP POP ¤ä IMAP ¤ÎĽľĄźĽĐĄź¤ňÁö¤é¤ť¤ë¤ż¤á¤Ë¤Ď 2 ¤Ä¤Î¤ł¤Č¤ň¤ä¤é¤Ę¤ą¤ě¤Đ¤¤¤ą¤Ţ¤ť¤óĄŁ POP ¤ä IMAP ¤ÎĽÇĄźĽâĽó¤ň ports ĽłĽěĽŻĽˇĽçĽó ¤Ť¤éĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ţ¤šĄŁ /etc/inetd.conf ¤ň˝¤Ŕľ¤ˇ¤Ć POP ¤ä IMAP ¤ÎĽľĄźĽĐĄź¤ŹľŻĆ°¤ľ¤ě¤ë¤č¤Ś¤ËŔßÄꤡ¤Ţ¤šĄŁ ĽáĄźĽëĽŰĽšĽČ ĽáĄźĽëĽŰĽšĽČ ĽáĄźĽëĽŰĽšĽČ¤Č¤ĎŔŐǤ¤ň¤â¤Ă¤ĆĽáĄźĽë¤ňÇŰÁ÷¤ˇ¤ż¤ęĄ˘ ¤˘¤Ę¤ż¤ÎĽŰĽšĽČ¤äĄ˘¤â¤ˇ¤Ť¤š¤ëĽÍĽĂĽČĽďĄźĽŻ¤âĄ˘¤Ë°¸¤Ć¤żĽáĄźĽë¤ňźő¤ąźč¤Ă¤ż¤ę¤š¤ëĽŰĽšĽČ¤ËÍż¤¨¤é¤ě¤ëĚžÁ°¤Ç¤šĄŁ Christopher Shumway ´óšĆ: <application>sendmail</application> ¤ÎŔßÄę sendmail &man.sendmail.8; ¤Ď FreeBSD ¤ÎĽÇĽŐĽŠĽëĽČ¤Î ĽáĄźĽëĽČĽéĽóĽšĽŐĽĄĽ¨ĄźĽ¸Ľ§ĽóĽČ (MTA) ¤Ç¤šĄŁ sendmail ¤ÎťĹťö¤ĎĽáĄźĽëĽćĄźĽśĽ¨ĄźĽ¸Ľ§ĽóĽČ (MUA) ¤Ť¤é¤ÎĽáĄźĽë¤ňźő¤ąźč¤ęĄ˘ ¤˝¤ě¤ňŔßÄęĽŐĽĄĽ¤Ľë¤ÇÄęľÁ¤ľ¤ě¤żĹŹĹö¤ĘĽáĄźĽé¤ËĆϤą¤ë¤ł¤Č¤Ç¤šĄŁ sendmail ¤ĎĽÍĽĂĽČĽďĄźĽŻŔÜÂł¤ňźő¤ąĆţ¤ě¤ĆĄ˘ ĽíĄźĽŤĽë¤ÎĽáĄźĽëĽÜĽĂĽŻĽš¤ËĽáĄźĽë¤ňĆĎ¤ą¤ż¤ę ĘĚ¤ÎĽ×ĽíĽ°ĽéĽŕ¤ËĽáĄźĽë¤ňĹϤˇ¤ż¤ę¤â¤Ç¤­¤Ţ¤šĄŁ sendmail ¤ĎźĄ¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤ňťČÍѤˇ¤Ţ¤šĄŁ /etc/mail/access /etc/mail/aliases /etc/mail/local-host-names /etc/mail/mailer.conf /etc/mail/mailertable /etc/mail/sendmail.cf /etc/mail/virtusertable ĽŐĽĄĽ¤ĽëĚž ľĄÇ˝ /etc/mail/access sendmail Ľ˘ĽŻĽťĽšĽÇĄźĽżĽŮĄźĽšĽŐĽĄĽ¤Ľë /etc/mail/aliases ĽáĄźĽëĽÜĽĂĽŻĽšĽ¨Ľ¤ĽęĽ˘Ľš /etc/mail/local-host-names sendmail ¤Źźő¤ąÉŐ¤ą¤ëÇŰÁ÷ŔčĽŰĽšĽČ¤ÎĽęĽšĽČ /etc/mail/mailer.conf ĽáĄźĽéĽ×ĽíĽ°ĽéĽŕ¤ÎŔßÄę /etc/mail/mailertable ĽáĄźĽéÇŰÁ÷É˝ /etc/mail/sendmail.cf sendmail ¤ÎźçŔßÄęĽŐĽĄĽ¤Ľë /etc/mail/virtusertable ˛žÁۼ楟Ľś¤Ş¤č¤Ó˛žÁۼɼἤĽóÉ˝ <filename>/etc/mail/access</filename> Ľ˘ĽŻĽťĽšĽÇĄźĽżĽŮĄźĽš¤ĎĄ˘ ¤É¤ÎĽŰĽšĽČ¤Ţ¤ż¤Ď IP Ľ˘ĽÉĽěĽš¤ŹĽíĄźĽŤĽëĽáĄźĽëĽľĄźĽĐ¤ËŔÜÂł¤Ç¤­¤ë¤ŤĄ˘ ¤˝¤ˇ¤ĆŔÜÂł¤ÎźďÎŕ¤Ď˛ż¤ŤĄ˘¤Č¤¤¤Ś¤ł¤Č¤ňÄęľÁ¤ˇ¤Ţ¤šĄŁ ĽŰĽšĽČ¤Ď , , ¤Č¤ˇ¤ĆťŘÄę¤Ç¤­¤Ţ¤šĄŁ ¤Ţ¤ż¤ĎĄ˘ĽáĄźĽéĽ¨ĽéĄź¤ňťŘÄꤚ¤ë¤ł¤Č¤ÇĄ˘ Ăą¤Ë sendmail ¤Î Ľ¨ĽéĄź˝čÍýĽëĄźĽÁĽó¤ËĹϤľ¤ě¤Ţ¤šĄŁ ¤Č¤ˇ¤ĆťŘÄꤾ¤ě¤żĽŰĽšĽČ (¤ł¤ě¤ĎĽÇĽŐĽŠĽëĽČ¤Ç¤š) ¤ĎĄ˘ ĽáĄźĽë¤ÎşÇ˝Ş°¸Ŕ褏ĽíĄźĽŤĽëĽŢĽˇĽó¤Ç¤˘¤ë¸Â¤ęĄ˘ ¤ł¤ÎĽŰĽšĽČ¤ŘĽáĄźĽë¤ňÁ÷¤ë¤ł¤Č¤ňǧ¤á¤é¤ě¤Ţ¤šĄŁ ¤Č¤ˇ¤ĆťŘÄꤾ¤ě¤żĽŰĽšĽČ¤ĎĄ˘ ¤š¤Ů¤Ć¤ÎĽáĄźĽëŔÜÂł¤ňľńŔ䤾¤ě¤Ţ¤šĄŁ ĽŰĽšĽČĚž¤ËÂФˇ¤Ć ĽŞĽ×ĽˇĽçĽó¤ňťŘÄꤾ¤ě¤żĽŰĽšĽČ¤ĎĄ˘ ¤ł¤ÎĽáĄźĽëĽľĄźĽĐ¤ňÄ̲ᤡ¤ĆǤ°Ő¤Î°¸Ŕč¤ŘĽáĄźĽë¤ňÁ÷¤ë¤ł¤Č¤ňǧ¤á¤é¤ě¤Ţ¤šĄŁ <application>sendmail</application> Ľ˘ĽŻĽťĽšĽÇĄźĽżĽŮĄźĽš¤ÎŔßÄę cyberspammer.com 550 We don't accept mail from spammers FREE.STEALTH.MAILER@ 550 We don't accept mail from spammers another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY ¤ł¤ÎÎă¤Ç¤Ď¸Ţ¤Ä¤ÎĽ¨ĽóĽČĽę¤Ź¤˘¤ę¤Ţ¤šĄŁ É˝¤Îş¸ÂڤËĹö¤Ć¤Ď¤Ţ¤ëĽáĄźĽëÁ÷żŽźÔ¤ĎĄ˘É˝¤ÎąŚÂڤÎưşî¤ËťŮÇۤľ¤ě¤Ţ¤šĄŁ ¤Ď¤¸¤á¤ÎĆó¤Ä¤ÎÎă¤ĎĄ˘Ľ¨ĽéĄźĽłĄźĽÉ¤ň sendmail ¤ÎĽ¨ĽéĄź˝čÍýĽëĄźĽÁĽó¤ËĹϤˇ¤Ţ¤šĄŁ ĽáĄźĽë¤ŹÉ˝¤Îş¸ÂڤËĹö¤Ć¤Ď¤Ţ¤ë¤ČĄ˘ĽęĽâĄźĽČĽŰĽšĽČ¤Ë¤˝¤ÎĽáĽĂĽťĄźĽ¸¤ŹÉ˝ź¨¤ľ¤ě¤Ţ¤šĄŁ źĄ¤ÎĽ¨ĽóĽČĽę¤Ď another.source.of.spam ¤Č¤¤¤ŚĽ¤ĽóĽżĄźĽÍĽĂĽČžĺ¤ÎĆĂÄę¤ÎĽŰĽšĽČ¤Ť¤é¤ÎĽáĄźĽë¤ňľńŔ䤡¤Ţ¤šĄŁ źĄ¤ÎĽ¨ĽóĽČĽę¤Ď okay.cyberspammer.com ¤Ť¤é¤ÎĽáĄźĽëŔÜÂł¤ňźő¤ąĆţ¤ě¤Ţ¤šĄŁ ¤ł¤ÎĽ¨ĽóĽČĽę¤Ďžĺ¤Ë¤˘¤ë cyberspammer.com ¤Č¤¤¤ŚšÔ¤č¤ę¤â¤ľ¤é¤Ë¸ˇĚŠ¤Ç¤š (¸ˇĚŠ¤Ë°ěĂפš¤ě¤Đ¤š¤ë¤Ű¤ÉĄ˘¤˝¤Ś¤Ç¤Ę¤¤¤â¤Î¤č¤ęÍĽŔ褾¤ě¤Ţ¤š)ĄŁ şÇ¸ĺ¤ÎĽ¨ĽóĽČĽę¤Ď 128.32 ¤Ť¤éťĎ¤Ţ¤ë IP Ľ˘ĽÉĽěĽš¤ÎĽŰĽšĽČ¤Ť¤é¤ÎĹŝҼᥟĽë¤ÎĽęĽěĄź¤ňǧ¤á¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĽŰĽšĽČ¤Ďž¤ÎĽáĄźĽëĽľĄźĽĐ¤ËĹţĂŁ¤Ç¤­¤ë¤ł¤ÎĽáĄźĽëĽľĄźĽĐ¤ňťČ¤Ă¤ĆĽáĄźĽë¤ňÁ÷¤ë¤ł¤Č¤Ź¤Ç¤­¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ňĘŃšš¤ˇ¤ż¤éĄ˘ ĽÇĄźĽżĽŮĄźĽš¤ňššżˇ¤š¤ë¤ż¤á¤Ë /etc/mail/ ĽÇĽŁĽěĽŻĽČĽę¤Ç make ĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ <filename>/etc/mail/aliases</filename> Ľ¨Ľ¤ĽęĽ˘ĽšĽÇĄźĽżĽŮĄźĽš¤Ë¤ĎĄ˘ ž¤ÎĽćĄźĽśĄ˘ĽŐĽĄĽ¤ĽëĄ˘Ľ×ĽíĽ°ĽéĽŕ¤Ţ¤ż¤Ďž¤ÎĽ¨Ľ¤ĽęĽ˘Ľš¤ËŸłŤ¤ľ¤ě¤ë ˛žÁŰĹŞ¤ĘĽáĄźĽëĽÜĽĂĽŻĽš¤Î°ěÍ÷¤Źľ­şÜ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ /etc/mail/aliases ¤Ë¤Ş¤¤¤ĆťČÍѤǤ­¤ëÎă¤ň¤¤¤Ż¤Ä¤Ť¤˘¤˛¤Ţ¤šĄŁ ĽáĄźĽëĽ¨Ľ¤ĽęĽ˘Ľš root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" ĽŐĽĄĽ¤ĽëˇÁź°¤ĎĽˇĽóĽ×Ľë¤Ç¤šĄŁ ĽłĽíĽó¤Îş¸ÂŚ¤Ë¤˘¤ëĽáĄźĽëĽÜĽĂĽŻĽšĚž¤ĎĄ˘ąŚÂŚ¤ÎĽżĄźĽ˛ĽĂĽČ¤ËŸłŤ¤ľ¤ě¤Ţ¤šĄŁ ¤Ď¤¸¤á¤ÎÎă¤ĎĂą˝ă¤Ë root ¤ÎĽáĄźĽëĽÜĽĂĽŻĽš¤ň localuser ¤ÎĽáĄźĽëĽÜĽĂĽŻĽš¤ËŸłŤ¤ˇĄ˘ ¤˝¤ě¤Ť¤éĽ¨Ľ¤ĽęĽ˘ĽšĽÇĄźĽżĽŮĄźĽš¤ň¤â¤Ś°ěĹŮÄ´¤Ů¤Ţ¤šĄŁ °ěĂפš¤ëĽ¨ĽóĽČĽę¤Ź¤Ę¤ą¤ě¤ĐĽáĽĂĽťĄźĽ¸¤ĎĽíĄźĽŤĽëĽćĄźĽś¤Ç¤˘¤ë localuser ¤ËÇŰÁ÷¤ľ¤ě¤Ţ¤šĄŁ źĄ¤ÎÎă¤ĎĽáĄźĽëĽęĽšĽČ¤Ç¤šĄŁ ftp-bugs ¤ÎĽáĄźĽëĽÜĽĂĽŻĽš¤Ř¤ÎĽáĄźĽë¤Ď joe, eric ¤Ş¤č¤Ó paul ¤Îť°¤Ä¤ÎĽíĄźĽŤĽëĽáĄźĽëĽÜĽĂĽŻĽš¤ËŸłŤ¤ľ¤ě¤Ţ¤šĄŁ ĽęĽâĄźĽČĽáĄźĽëĽÜĽĂĽŻĽš¤Ď user@example.com ¤Î¤č¤Ś¤ËťŘÄę¤Ç¤­¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ źĄ¤ÎÎă¤ĎĽáĄźĽë¤ňĽŐĽĄĽ¤ĽëĄ˘¤ł¤Îžěšç /dev/null ¤Ë˝ń¤­šţ¤ß¤Ţ¤šĄŁ şÇ¸ĺ¤ÎÎă¤ĎĽáĄźĽë¤ňĽ×ĽíĽ°ĽéĽŕ¤ËÁ÷¤ę¤Ţ¤šĄŁ ¤ł¤ÎžěšçĽáĄźĽë¤ÎĽáĽĂĽťĄźĽ¸¤Ď &unix; ĽŃĽ¤Ľ×¤ňÄ̤¸¤Ć /usr/local/bin/procmail ¤Îɸ˝ŕĆţÎϤ˽ń¤­šţ¤Ţ¤ě¤Ţ¤šĄŁ ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ňĘŃšš¤ˇ¤ż¤éĄ˘ ĽÇĄźĽżĽŮĄźĽš¤ňššżˇ¤š¤ë¤ż¤á¤Ë/etc/mail/ ĽÇĽŁĽěĽŻĽČĽę¤Ç make ĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ <filename>/etc/mail/local-host-names</filename> ¤ł¤ě¤Ď &man.sendmail.8; ¤ŹĽíĄźĽŤĽëĽŰĽšĽČĚž¤Č¤ˇ¤Ćǧ¤á¤ëĽŰĽšĽČĚž¤ÎĽęĽšĽČ¤Ç¤šĄŁ sendmail ¤ŹĽáĄźĽë¤ňźő¤ąźč¤ë¤š¤Ů¤Ć¤ÎĽÉĽáĽ¤Ľó¤äĽŰĽšĽČ¤Ë¤ł¤ÎĽŐĽĄĽ¤Ľë¤ňĂÖ¤¤¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ż¤Č¤¨¤ĐĄ˘¤ł¤ÎĽáĄźĽëĽľĄźĽĐ¤Ď example.com ¤Č¤¤¤ŚĽÉĽáĽ¤Ľó¤Ş¤č¤Ó mail.example.com ¤Č¤¤¤ŚĽŰĽšĽČ¤Ř¤ÎĽáĄźĽë¤ňźő¤ąźč¤ë¤Č¤š¤ë¤ČĄ˘ local-host-names ĽŐĽĄĽ¤Ľë¤ÎĆâÍƤϟĄ¤Î¤č¤Ś¤Ë¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁ example.com mail.example.com ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ňššżˇ¤ˇ¤ż¤éĄ˘ĘŃšš¤ňĆɤߚţ¤ŕ¤ż¤á¤Ë &man.sendmail.8; ¤ňşĆľŻĆ°¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ <filename>/etc/mail/sendmail.cf</filename> sendmail ¤ÎźçŔßÄęĽŐĽĄĽ¤Ľë¤Ç¤˘¤ë sendmail.cf ¤ĎĄ˘ĹŝҼᥟĽëĽ˘ĽÉĽěĽš¤Î˝ń¤­´š¤¨¤Ť¤éĄ˘ ĽęĽâĄźĽČĽáĄźĽëĽľĄźĽĐ¤ŘľńŔäĽáĽĂĽťĄźĽ¸¤ňÁ÷¤ë¤ł¤Č¤Ţ¤Ç sendmail ¤ÎÁ´ČĚĹŞ¤Ęưşî¤ň¤š¤Ů¤ĆŔЏ㤎¤Ţ¤šĄŁ ĹöÁłĄ˘¤˝¤Î¤č¤Ś¤Ę¤ľ¤Ţ¤ś¤Ţ¤ĘĚňłä¤Ë¤č¤ę¤ł¤ÎŔßÄęĽŐĽĄĽ¤Ľë¤ĎÂçĘŃĘŁť¨¤ÇĄ˘ ¤˝¤ÎžÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď¤ł¤ÎŔá¤ÎžŻ¤ˇČϰϳ°¤Ç¤šĄŁšĽąż¤Ę¤ł¤Č¤ËĄ˘ ɸ˝ŕĹŞ¤Ęš˝ŔŽ¤ÎĽáĄźĽëĽľĄźĽĐ¤Ç¤Ď¤ł¤ÎĽŐĽĄĽ¤Ľë¤ň¤á¤Ă¤ż¤ËĘŃšš¤š¤ëÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ sendmail ¤ÎźçŔßÄęĽŐĽĄĽ¤Ľë¤Ď sendmail ¤ÎľĄÇ˝¤Čưşî¤ňˇčÄꤚ¤ë &man.m4.1; ĽŢĽŻĽí¤Ť¤éš˝ĂۤǤ­¤Ţ¤šĄŁ žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď /usr/src/contrib/sendmail/cf/README ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ňššżˇ¤ˇ¤ż¤éĄ˘¤˝¤ÎĘŃšš¤ňČżąÇ¤š¤ë¤ż¤á¤Ë sendmail ¤ňşĆľŻĆ°¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ <filename>/etc/mail/virtusertable</filename> virtusertable ¤Ď˛žÁۼɼἤĽó¤Ş¤č¤Ó˛žÁۼᥟĽëĽÜĽĂĽŻĽš¤ËÂФš¤ëĽ˘ĽÉĽěĽš¤ňźÂşÝ¤ÎĽáĄźĽëĽÜĽĂĽŻĽš¤ČÂĐąţ¤Ĺ¤ą¤Ţ¤šĄŁ ¤ł¤ě¤é¤ÎĽáĄźĽëĽÜĽĂĽŻĽš¤Ë¤ĎĽíĄźĽŤĽëĄ˘ĽęĽâĄźĽČĄ˘ /etc/mail/aliases ¤ËÄęľÁ¤ľ¤ě¤żĽ¨Ľ¤ĽęĽ˘ĽšĄ˘ ¤Ţ¤ż¤ĎĽŐĽĄĽ¤Ľë¤ňťČÍѤǤ­¤Ţ¤šĄŁ ˛žÁۼɼἤĽóĽáĄźĽëÂĐąţÉ˝¤ÎÎă root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe žĺ¤ÎÎă¤Ç¤Ď example.com ĽÉĽáĽ¤Ľó¤Ř¤ÎÂĐąţ¤Ĺ¤ą¤ň¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ĎĽŐĽĄĽ¤Ľë¤Î˛ź¤Ţ¤ÇĽŐĽĄĄźĽšĽČĽŢĽĂĽÁ (ĚőĂí: °ěĂפš¤ëĽëĄźĽë¤ŹĘŁżô¤˘¤ëžěšçĄ˘ °ěČֺǽé¤Ë°ěĂפˇ¤żĽëĄźĽë¤ŹĹŹÍѤľ¤ě¤ë¤ł¤Č) ¤Ç˝čÍý¤ľ¤ě¤Ţ¤šĄŁ ¤Ď¤¸¤á¤ÎšÔ¤Ç¤Ď root@example.com ¤ň ĽíĄźĽŤĽë¤Î root ĽáĄźĽëĽÜĽĂĽŻĽš¤ËÂĐąţ¤Ĺ¤ą¤Ć¤¤¤Ţ¤šĄŁ źĄ¤ÎĽ¨ĽóĽČĽę¤Ç¤Ď postmaster@example.com ¤ň noc.example.net ĽŰĽšĽČžĺ¤Î postmaster ĽáĄźĽëĽÜĽĂĽŻĽš¤ËÂĐąţ¤Ĺ¤ą¤Ć¤¤¤Ţ¤šĄŁ şÇ¸ĺ¤ËĄ˘şŁ¤Ţ¤Ç¤Î¤Č¤ł¤í¤Ç¤Ď example.com ¤Ë´Ř¤ˇ¤Ć˛ż¤â°ěĂפˇ¤Ę¤¤žěšçĄ˘şÇ¸ĺ¤ÎĽ¨ĽóĽČĽę¤Č°ěĂפš¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ě¤Ď example.com ¤ÎĂŻ¤Ť¤ËÁ÷¤Ă¤ż¤š¤Ů¤Ć¤ÎĽáĄźĽë¤Ź°ěĂפˇ¤Ţ¤šĄŁ¤ł¤ě¤Ď joe ¤ÎĽíĄźĽŤĽëĽáĄźĽëĽÜĽĂĽŻĽš¤ËÂĐąţ¤Ĺ¤ą¤é¤ě¤Ć¤¤¤Ţ¤šĄŁ Andrew Boothman ¸śşî: Gregory Neil Shapiro Information taken from e-mails written by MTA ¤ÎĘŃšš email MTA ¤ÎĘŃšš ¤š¤Ç¤Ë˝Ň¤Ů¤ż¤č¤Ś¤ËĄ˘FreeBSD ¤Ë¤Ď MTA (Mail Transfer Agent) ¤Č¤ˇ¤ĆĄ˘ sendmail ¤Ź¤š¤Ç¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ˇ¤ż¤Ź¤Ă¤ĆĄ˘ĽÇĽŐĽŠĽëĽČ¤Ç¤Ď¤ł¤ě¤ŹĽáĄźĽë¤ÎÁ÷źőżŽ¤ňĂ´Ĺö¤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇ¤Ę¤Ź¤éĄ˘¤ľ¤Ţ¤ś¤Ţ¤ĘÍýÍł¤Ë¤č¤Ă¤ĆĄ˘ ĽˇĽšĽĆĽŕ¤Î MTA ¤ňĘŃšš¤ˇ¤č¤Ś¤ČšÍ¤¨¤ëĽˇĽšĽĆĽŕ´ÉÍýźÔ¤â¤¤¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¤˝¤ÎÍýÍł¤ĎĄ˘Ăą¤Ëž¤Î MTA ¤ňťî¤ˇ¤Ć¤ß¤ż¤¤¤Č¤¤¤Ś¤â¤Î¤Ť¤é ž¤ÎĽáĄźĽé¤Ë°Í¸¤š¤ëĆĂÄę¤ÎľĄÇ˝¤äĽŃĽĂĽąĄźĽ¸¤ŹÉŹÍפŔ¤Č¤¤¤Ă¤ż¤â¤Î¤Ţ¤ÇĄ˘ Âż´ô¤Ë¤ď¤ż¤ë¤ł¤Č¤Ç¤ˇ¤ç¤ŚĄŁ šŹ¤¤Ą˘ÍýÍł¤Ź¤É¤ó¤Ę¤â¤Î¤Ç¤˘¤ěĄ˘FreeBSD ¤Ç¤Ď´ĘĂą¤ËĘŃšš¤Ç¤­¤Ţ¤šĄŁ żˇ¤ˇ¤¤ MTA ¤ÎĽ¤ĽóĽšĽČĄźĽë ¤ľ¤Ţ¤ś¤Ţ¤Ę MTA ¤ŹÍřÍѤǤ­¤Ţ¤šĄŁ FreeBSD Ports Collection ¤Ť¤éĂľ¤ˇ¤Ď¤¸¤á¤ë¤Î¤Ź¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ¤â¤Á¤í¤óĄ˘¤É¤ó¤Ęžě˝ę¤Ť¤é¤Ç¤âĄ˘¤˘¤Ę¤ż¤ŹÍřÍѤˇ¤ż¤¤ MTA ¤Ź FreeBSD ¤Çưşî¤š¤ë¸Â¤ę¤š¤Ů¤ĆźŤÍł¤ËťČ¤¨¤Ţ¤šĄŁ żˇ¤ˇ¤¤ MTA ¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤ł¤Č¤Ť¤é¤Ď¤¸¤á¤Ţ¤ˇ¤ç¤ŚĄŁ żˇ¤ˇ¤¤ MTA ¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤ČĄ˘ ¤˘¤Ę¤ż¤ÎÍ׾ᤏźÂşÝ¤ËźÂ¸˝¤ˇ¤ż¤Ť¤É¤Ś¤Ťˇč¤á¤ëľĄ˛ń¤ŹÍż¤¨¤é¤ě¤Ţ¤šĄŁ¤ľ¤é¤ËĄ˘ ĽľĄźĽÓĽš¤ň sendmail ¤Ť¤é°ú¤­ˇŃ¤°Á°¤Ë żˇ¤ˇ¤¤Ľ˝ĽŐĽČĽŚĽ§Ľ˘¤ňŔßÄꤚ¤ëľĄ˛ń¤ŹÍż¤¨¤é¤ě¤Ţ¤šĄŁ¤ł¤ě¤ňšÔ¤ŚžěšçĄ˘ żˇ¤ˇ¤¤Ľ˝ĽŐĽČĽŚĽ§Ľ˘¤Ź /usr/bin/sendmail ¤Î¤č¤Ś¤ĘĽˇĽšĽĆĽŕĽĐĽ¤ĽĘĽę¤ňžĺ˝ń¤­¤ˇ¤č¤Ś¤Č¤ˇ¤Ę¤¤¤ł¤Č¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤˝¤Ś¤ˇ¤Ę¤¤¤Č¤˘¤Ę¤ż¤ŹŔßÄꤚ¤ëÁ°¤Ëżˇ¤ˇ¤¤ĽáĄźĽëĽ˝ĽŐĽČĽŚĽ§Ľ˘¤ŹËÜłĘĹŞ¤Ëưşî¤ˇ¤Ď¤¸¤á¤Ć¤ˇ¤Ţ¤¤¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤ŹÁŞÂň¤ˇ¤żĽ˝ĽŐĽČĽŚĽ§Ľ˘¤ňŔßÄꤚ¤ëĘýËĄ¤Ë¤Ä¤¤¤Ć¤ÎžđĘó¤ĎĄ˘ ¤˝¤Î MTA ¤Îʸ˝ń¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ <application>sendmail</application> ¤ňĚľ¸ú¤Ë¤š¤ë sendmail ¤ňľŻĆ°¤š¤ë¤ż¤á¤ËťČÍѤľ¤ě¤Ć¤¤¤żźęÂł¤­¤ĎĄ˘ 4.5-RELEASE ¤Č 4.6-RELEASE ¤Î´Ö¤ÇĂř¤ˇ¤ŻĘŃšš¤ľ¤ě¤Ţ¤ˇ¤żĄŁ ¤ˇ¤ż¤Ź¤Ă¤ĆĄ˘¤˝¤ě¤ňĚľ¸ú¤Ë¤š¤ë¤ż¤á¤ÎźęÂł¤­¤ĎČůĚŻ¤Ë°ă¤¤¤Ţ¤šĄŁ 2002 ÇŻ 4 ˇî 4 Ćü¤č¤ęÁ°¤Î FreeBSD 4.5-STABLE (4.5-RELEASE ¤Č¤˝¤ě°ĘÁ°¤ÎĽĐĄźĽ¸ĽçĽó¤ŹłşĹö) /etc/rc.conf ¤ËźĄ¤ÎšÔ¤ň˛Ă¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ sendmail_enable="NO" ¤ł¤ě¤Ď sendmail ¤ÎĽáĄźĽëźőżŽľĄÇ˝¤ňĚľ¸ú¤Ë¤ˇ¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇ /etc/mail/mailer.conf (˛źľ­ť˛žČ) ¤ŹĘŃšš¤ľ¤ě¤Ć¤¤¤Ę¤ą¤ě¤ĐĄ˘sendmail ¤ĎĽáĄźĽë¤ÎÁ÷żŽ¤Ë¤Ţ¤ŔťČ¤ď¤ě¤ë¤Ç¤ˇ¤ç¤ŚĄŁ 2002 ÇŻ 4 ˇî 4 Ćü°Ęšß¤Î FreeBSD 4.5-STABLE (4.6-RELEASE ¤Č¤˝¤ě°Ęšß¤ÎĽĐĄźĽ¸ĽçĽó¤ŹłşĹö) sendmail ¤ň´°Á´¤ËĚľ¸ú¤Ë¤š¤ë¤ż¤á¤Ë¤Ď /etc/rc.conf ¤ËźĄ¤ÎšÔ¤ň˛Ă¤¨¤Ę¤Ż¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ sendmail_enable="NONE" ¤â¤ˇ¤ł¤ÎĘýËĄ¤Ç sendmail ¤ÎĽáĄźĽëÁ÷żŽľĄÇ˝¤ňĚľ¸ú¤Ë¤ˇ¤ż¤Î¤Ę¤éĄ˘ ´°Á´¤Ëưşî¤š¤ëÂĺÂؼᥟĽëÇŰÁ÷ĽˇĽšĽĆĽŕ¤ČĂÖ¤­´š¤¨¤ë¤ł¤Č¤Ź˝ĹÍ×¤Ç¤šĄŁ ¤ľ¤â¤Ę¤ą¤ě¤ĐĄ˘&man.periodic.8; ¤Ę¤É¤ÎĽˇĽšĽĆĽŕľĄÇ˝¤ĎĄ˘ ¤˝¤ě¤é¤Îˇë˛Ě¤ňÄĚžďÁŰÄꤡ¤Ć¤¤¤ë¤č¤Ś¤ËĽáĄźĽë¤ÇÇŰÁ÷¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ę¤Ż¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ĽˇĽšĽĆĽŕ¤ÎÂż¤Ż¤ÎÉôĘŹ¤Ź sendmail ¸ß´š¤ÎĽˇĽšĽĆĽŕ¤Ź¤˘¤ë¤ł¤Č¤ňÁŰÄꤡ¤Ć¤¤¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¤â¤ˇ¤˝¤ě¤é¤ňĚľ¸ú¤Ë¤ˇ¤ż¸ĺ¤ËĄ˘ Ľ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ŹĽáĄźĽë¤ňÁ÷¤í¤Ś¤Č¤š¤ë¤ż¤á¤Ë sendmail ¤ÎĽĐĽ¤ĽĘĽę¤ňťČÍѤˇÂł¤ą¤ě¤ĐĄ˘ ĽáĄźĽë¤ĎťČ¤ď¤ě¤Ć¤¤¤Ę¤¤ sendmail ¤ÎĽ­ĽĺĄź¤ËĆţ¤ęĄ˘¤˝¤ˇ¤Ćˇč¤ˇ¤ĆÇŰÁ÷¤ľ¤ě¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ ¤â¤ˇ sendmail ¤ÎĽáĄźĽëźőżŽľĄÇ˝¤Ŕ¤ą¤ňĚľ¸ú¤Ë¤ˇ¤ż¤¤¤Î¤Ę¤é /etc/rc.conf ¤Ë°Ę˛ź¤ÎšÔ¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ sendmail_enable="NO" sendmail¤ÎľŻĆ°ĽŞĽ×ĽˇĽçĽó¤Ë´Ř¤š¤ëžÜşŮ¤Ď &man.rc.sendmail.8; ĽŢĽËĽĺĽ˘Ľë¤ň¤´Í÷¤Ż¤Ŕ¤ľ¤¤ĄŁ ľŻĆ°ťţ¤Ëżˇ¤ˇ¤¤ MTA ¤ňľŻĆ°¤š¤ë ľŻĆ°ťţ¤Ëżˇ¤ˇ¤¤ MTA ¤ňľŻĆ°¤š¤ë¤Ë¤ĎĆó¤Ä¤ÎÁŞÂňťč¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ł¤ł¤Ç¤âĄ˘¤˘¤Ę¤ż¤Ź˛ÔĆŻ¤ľ¤ť¤Ć¤¤¤ë FreeBSD ¤ÎĽĐĄźĽ¸ĽçĽó¤Ë°Í¸¤ˇ¤Ţ¤š 2002 ÇŻ 4 ˇî 11 Ćü¤č¤ęÁ°¤Î FreeBSD 4.5-STABLE (4.5-RELEASE ¤Č¤˝¤ě°ĘÁ°¤ÎĽĐĄźĽ¸ĽçĽó¤ŹłşĹö) /usr/local/etc/rc.d/ ĽÇĽŁĽěĽŻĽČĽę¤ËĄ˘ ĽŐĽĄĽ¤ĽëĚž¤Ź .sh ¤Ç¤Ş¤ď¤ęĄ˘ root ¤Ë¤č¤Ă¤ĆźÂšÔ˛ÄÇ˝¤ĘĽšĽŻĽęĽ×ĽČ¤ňÄɲäˇ¤Ţ¤šĄŁ ¤ł¤ÎĽšĽŻĽęĽ×ĽČ¤Ď start ¤Ş¤č¤Ó stop ĽŃĽéĽáĄźĽż¤ň°úżô¤Č¤ˇ¤Ćźő¤ąÉŐ¤ą¤ë¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ ľŻĆ°ťţ¤ËĽˇĽšĽĆĽŕĽšĽŻĽęĽ×ĽČ¤ĎźĄ¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ë¤Ç¤ˇ¤ç¤ŚĄŁ /usr/local/etc/rc.d/supermailer.sh start ¤ł¤ě¤Ďźęư¤ÇĽľĄźĽĐ¤ňľŻĆ°¤š¤ë¤ż¤á¤Ë¤âťČÍѤǤ­¤Ţ¤šĄŁ ĽˇĽšĽĆĽŕ˝ŞÎťťţ¤Ë¤ĎĽˇĽšĽĆĽŕĽšĽŻĽęĽ×ĽČ¤Ď stop ĽŞĽ×ĽˇĽçĽó¤ňťČÍѤˇ¤ĆĄ˘źĄ¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ë¤Ç¤ˇ¤ç¤ŚĄŁ /usr/local/etc/rc.d/supermailer.sh stop ¤ł¤ě¤ĎĽˇĽšĽĆĽŕ¤Ź˛ÔĆŻ¤ˇ¤Ć¤¤¤ë´Ö¤Ëźęư¤ÇĽľĄźĽĐ¤ňÄäťß¤š¤ë¤ż¤á¤Ë¤âťČ¤¨¤Ţ¤šĄŁ 2002 ÇŻ 4 ˇî 11 Ćü°Ęšß¤Î FreeBSD 4.5-STABLE (4.6-RELEASE ¤Č¤˝¤ě°Ęšß¤ÎĽĐĄźĽ¸ĽçĽó¤ŹłşĹö) ¤č¤ężˇ¤ˇ¤¤ĽĐĄźĽ¸ĽçĽó¤Î FreeBSD ¤Ç¤ĎĄ˘ žĺľ­¤ÎĘýËĄ¤Ţ¤ż¤ĎźĄ¤ÎšÔ¤ň /etc/rc.conf ¤ËŔßÄę¤Ç¤­¤Ţ¤šĄŁ mta_start_script="filename" filename ¤ĎĄ˘¤˘¤Ę¤ż¤Ź MTA ¤ňΊ¤Ážĺ¤˛¤ë¤ż¤á¤ËľŻĆ°ťţ¤ËźÂšÔ¤š¤ëĽšĽŻĽęĽ×ĽČĚž¤Ç¤šĄŁ ĽˇĽšĽĆĽŕ¤ÎĽÇĽŐĽŠĽëĽČĽáĄźĽé¤Č¤ˇ¤Ć <application>sendmail</application> ¤ňĂÖ¤­´š¤¨¤ë sendmail Ľ×ĽíĽ°ĽéĽŕ¤Ď &unix; ĽˇĽšĽĆĽŕžĺ¤Îɸ˝ŕĽ˝ĽŐĽČĽŚĽ§Ľ˘¤Č¤ˇ¤ĆËÜĹö¤Ë¤É¤ł¤Ç¤âÍřÍѤǤ­¤ë¤Î¤ÇĄ˘ ¤ł¤ě¤Ź¤š¤Ç¤ËĽ¤ĽóĽšĽČĄźĽë¤Ş¤č¤ÓŔßÄꤾ¤ě¤Ć¤¤¤ë¤Č¤ß¤Ę¤ˇ¤Ć¤¤¤ë Ľ˝ĽŐĽČĽŚĽ§Ľ˘¤â¤˘¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¤ł¤ÎÍýÍł¤Ë¤č¤ęĄ˘ÂĺÂؤȤʤë MTA ¤ÎÂż¤Ż¤Ď sendmail ĽłĽŢĽóĽÉĽéĽ¤ĽóĽ¤ĽóĽżĽŐĽ§ĄźĽš¤Č ¸ß´šŔ­¤Î¤˘¤ëźÂÁő¤ňÄ󜥤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤ł¤ě¤ň şš¤ˇšţ¤ŕ ¤ł¤Č¤Ë¤č¤Ă¤ĆĄ˘ sendmail ¤ÎĂÖ¤­´š¤¨¤Č¤ˇ¤ĆÂĺÂŘ MTA ¤ňťČÍѤš¤ë¤ł¤Č¤ŹÍưפˤʤę¤Ţ¤šĄŁ ¤ˇ¤ż¤Ź¤Ă¤ĆĄ˘¤˘¤Ę¤ż¤Ź¸ß´šĽáĄźĽé¤ňťČÍѤˇ¤Ć¤¤¤ë¤Č¤­¤Ë¤ĎĄ˘ /usr/bin/sendmail ¤Î¤č¤Ś¤Ęɸ˝ŕ sendmail ĽĐĽ¤ĽĘĽę¤ňźÂšÔ¤ˇ¤č¤Ś¤Č¤š¤ëĽ˝ĽŐĽČĽŚĽ§Ľ˘¤ŹĄ˘ źÂşÝ¤Ë¤Ď¤˝¤ÎÂĺ¤ď¤ę¤Ë¤˘¤Ę¤ż¤ÎÁŞÂň¤ˇ¤żĽáĄźĽé¤ňźÂšÔ¤ˇ¤Ć¤¤¤ë¤Č¤¤¤Ś¤ł¤Č¤ň łÎ¤Ť¤á¤ëÉŹÍפʤ˘¤ë¤Ç¤ˇ¤ç¤ŚĄŁ šĽąż¤Ę¤ł¤Č¤ËĄ˘FreeBSD ¤Ď¤ł¤ÎťĹťö¤ň¤š¤ë &man.mailwrapper.8; ¤Č¸Ć¤Đ¤ě¤ëĽˇĽšĽĆĽŕ¤ňÄ󜥤ˇ¤Ć¤¤¤Ţ¤šĄŁ Ľ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤ż¤Ţ¤Ţ sendmail ¤Ź˛ÔĆŻ¤ˇ¤Ć¤¤¤ë¤Č¤­¤Ë¤Ď /etc/mail/mailer.conf ¤Ë¤Ď°Ę˛ź¤Î¤č¤Ś¤Ęľ­˝Ň¤Ź¤˘¤ë¤Ç¤ˇ¤ç¤ŚĄŁ sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail ¤ł¤Î¤ł¤Č¤ĎĄ˘¤ł¤ě¤é¤Î¤Ś¤Á¤É¤ÎśŚÄĚĽłĽŢĽóĽÉ (sendmail źŤżČ¤Î¤č¤Ś¤Ę) ¤ŹźÂšÔ¤ľ¤ě¤Ć¤âĄ˘ ĽˇĽšĽĆĽŕ¤Ď mailer.conf ¤ňłÎǧ¤ˇ¤ĆĄ˘ Âĺ¤ď¤ę¤Ë /usr/libexec/sendmail/sendmail ¤ňźÂšÔ¤š¤ë sendmail ¤Č¤¤¤ŚĚžÁ°¤Î mailwapper ¤ÎĽłĽÔĄź¤ň¸Ć¤Ó˝Đ¤š¤ł¤Č¤ň°ŐĚŁ¤ˇ¤Ţ¤šĄŁ ¤ł¤Î¤č¤Ś¤ĘĽˇĽšĽĆĽŕ¤Ç¤ĎĄ˘ĽÇĽŐĽŠĽëĽČ¤Î sendmail ¤Ź¸Ć¤Ó˝Đ¤ľ¤ě¤ż¤Č¤­¤ËĄ˘ ¤É¤ÎĽĐĽ¤ĽĘĽę¤ŹźÂşÝ¤ËźÂšÔ¤ľ¤ě¤ë¤Ť¤ňĘŃšš¤š¤ë¤Î¤Ź´ĘĂą¤Ë¤Ę¤ę¤Ţ¤šĄŁ ¤ˇ¤ż¤Ź¤Ă¤ĆĄ˘sendmail ¤ÎÂĺ¤ď¤ę¤Ë /usr/local/supermailer/bin/sendmail-compat ¤ňźÂšÔ¤ľ¤ť¤ż¤¤¤Î¤Ę¤éĄ˘źĄ¤Î¤č¤Ś¤Ë /etc/mail/mailer.conf ¤ňĘŃšš¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ sendmail /usr/local/supermailer/bin/sendmail-compat send-mail /usr/local/supermailer/bin/sendmail-compat mailq /usr/local/supermailer/bin/mailq-compat newaliases /usr/local/supermailer/bin/newaliases-compat hoststat /usr/local/supermailer/bin/hoststat-compat purgestat /usr/local/supermailer/bin/purgestat-compat ´°Îť ¤˘¤Ę¤ż¤Î¤ä¤ę¤ż¤¤¤č¤Ś¤Ë¤š¤Ů¤Ć¤ňŔßÄꤡ¤Ş¤¨¤ż¤éĄ˘ ¤â¤Ď¤äÉŹÍפΤʤ¤ sendmail ¤ÎĽ×ĽíĽťĽš¤ň˝ŞÎť¤ˇ¤Ćżˇ¤ˇ¤¤Ľ˝ĽŐĽČĽŚĽ§Ľ˘¤Ë´Ř¤š¤ëĽ×ĽíĽťĽš¤ňľŻĆ°¤š¤ë¤ŤĄ˘ Ăą¤ËşĆľŻĆ°¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ şĆľŻĆ°¤š¤ë¤ł¤Č¤Ë¤č¤Ă¤ĆĄ˘żˇ¤ˇ¤¤ MTA ¤ŹľŻĆ°ťţ¤ËŔľ¤ˇ¤ŻÎФÁžĺ¤Ź¤ë¤č¤Ś¤Ë ĽˇĽšĽĆĽŕ¤ŹŔßÄꤾ¤ě¤Ć¤¤¤ë¤Ť¤É¤Ś¤ŤłÎǧ¤š¤ë¤ł¤Č¤â¤Ç¤­¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ĽČĽéĽÖĽëĽˇĽĺĄźĽČ email ĽČĽéĽÖĽëĽˇĽĺĄźĽĆĽŁĽóĽ° ¤É¤Ś¤ˇ¤ĆźŤĘŹ¤ÎĽľĽ¤ĽČ¤ÎĽŰĽšĽČ¤Ę¤Î¤Ë FQDN ¤ňťČ¤ď¤Ę¤ą¤ě¤Đ¤¤¤ą¤Ę¤¤¤Î¤Ç¤š¤Ť? ś˛¤é¤ŻĄ˘¤˝¤ÎĽŰĽšĽČ¤ĎźÂşÝ¤Ë¤ĎĘ̤μɼἤĽó¤Ë¤˘¤ë¤Î¤Ç¤ˇ¤ç¤ŚĄŁ Î㤨¤Đ foo.bar.edu ĽÉĽáĽ¤Ľó¤Ë¤¤¤ĆĄ˘ bar.edu ¤Č¤¤¤ŚĽÉĽáĽ¤ĽóĆâ¤Î mumble ¤Č¤¤¤ŚĽŰĽšĽČ¤ËĽ˘ĽŻĽťĽš¤ˇ¤ż¤¤¤Č¤ˇ¤Ţ¤šĄŁ ¤ł¤Îťţ¤ĎĂą¤Ë mumble ¤Ç¤Ď¤Ę¤Ż mumble.bar.edu ¤Č FQDN ¤Çť˛žČ¤ˇ¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤˝¤â¤˝¤âĄ˘BSD BINDBIND ¤ÎĽęĽžĽëĽĐĄź (resolver) ¤Ç¤Ď¤ł¤Î¤č¤Ś¤Ę¤ł¤Č¤Ź˛ÄÇ˝¤Ç¤ˇ¤ż¤ŹĄ˘ FreeBSD ¤ËĆţ¤Ă¤Ć¤¤¤ëşÇżˇČǤΠBIND ¤Ç¤ĎźŤĘŹ¤ÎĽÉĽáĽ¤Ľó°Ęł°¤ËÂФš¤ë FQDN ¤Ç¤Ę¤¤žĘÎŹˇÁ¤Ďľö¤ľ¤ě¤Ţ¤ť¤óĄŁ ˝ž¤Ă¤ĆĽŰĽšĽČ¤ň mumble ¤ČŰŁËć¤ËťŘÄꤡ¤żžěšç¤Ď mumble.foo.bar.edu ¤Č¤¤¤ŚĚžÁ°¤Ź¤˘¤ě¤Đ¤˝¤ě¤Ë¤Ę¤ęĄ˘ ¤˝¤Ś¤Ç¤Ę¤ą¤ě¤Đ root ĽÉĽáĽ¤Ľó¤Ť¤é¸Ąş÷¤ľ¤ě¤Ţ¤šĄŁ ¤ł¤ě¤ĎĄ˘ mumble.bar.edu ¤Č mumble.edu ¤Č¤¤¤Ś¤ł¤Č¤Ę¤Ă¤żĽÉĽáĽ¤ĽóĚž¤ËÂФˇ¤ĆĽŰĽšĽČĚž¤ÎĽľĄźĽÁ¤Ź¤Ş¤ł¤Ę¤ď¤ě¤Ć¤¤¤ż°ĘÁ°¤Îżś¤ëÉń¤¤¤Č¤Ď°Ű¤Ę¤Ă¤ż¤â¤Î¤Ç¤šĄŁ ¤ł¤Î¤č¤Ś¤Ęťö¤Ź°­¤¤Îă¤â¤ˇ¤Ż¤ĎĽťĽ­ĽĺĽęĽĆĽŁĽŰĄźĽë¤Č¤ß¤Ę¤ľ¤ě¤ëÍýÍł¤Ë¤Ä¤¤¤Ć¤Ď RFC 1535 ¤ň¸Ť¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ /etc/resolv.conf ¤Ç domain foo.bar.edu ¤Č˝ń¤¤¤Ć¤˘¤ëšÔ¤ň search foo.bar.edu bar.edu ¤Č˝ń¤­´š¤¨¤ë¤ł¤Č¤Çžĺ¤Î¤č¤Ś¤Ę¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤ˇ¤Ť¤ˇĄ˘RFC 1535 ¤Ë¤˘¤ë¤č¤Ś¤Ë¸Ąş÷˝ç˝ř¤Ź ĆâÉô (local) ¤Čł°Éô (public) ¤Î´ÉÍý¤Îś­łŚ ¤ň¤Ţ¤ż¤Ź¤Ę¤¤¤č¤Ś¤Ë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ sendmail ¤Ź mail loops back to myself ¤Č¤¤¤ŚĽáĽĂĽťĄźĽ¸¤ň˝Đ¤š¤Î¤Ç¤š¤ŹĄŁ sendmail FAQ ¤ËźĄ¤Î¤č¤Ś¤Ë˝ń¤¤¤Ć¤˘¤ę¤Ţ¤šĄŁ Local configuration error ¤Č¤¤¤ŚĽáĽĂĽťĄźĽ¸¤Ź˝Đ¤Ţ¤šĄŁÎ㤨¤ĐĄ˘ 553 relay.domain.net config error: mail loops back to myself 554 <user@domain.net>... Local configuration error ¤Î¤č¤Ś¤Ę´ś¤¸¤Ç¤š¤ŹĄ˘¤É¤Ś¤ˇ¤ż¤é˛ňˇč¤Ç¤­¤Ţ¤š¤Ť? ¤ł¤ě¤ĎĄ˘Î㤨¤Đ domain.net ¤Î¤č¤Ś¤ĘĽÉĽáĽ¤Ľó°¸¤Ć¤ÎĽáĄźĽë¤ň MX ĽěĽłĄźĽÉ¤ÇĆĂÄę¤ÎĽŰĽšĽČ(¤ł¤ł¤Ç¤Ď relay.domain.net) ¤ËÁ÷¤í¤Ś¤Č¤ˇ¤ż¤Î¤ËĄ˘ ¤˝¤ÎĽŰĽšĽČ¤Ç¤Ď domain.net °¸¤Ć¤ÎĽáĄźĽë¤ňźő¤ąźč¤ě¤ë¤č¤Ś¤ĘŔßÄę¤Ë¤Ę¤Ă¤Ć¤¤¤Ę¤¤žěšç¤Ç¤šĄŁ ŔßÄę¤ÎşÝ¤Ë FEATURE(use_cw_file) ¤ňťŘÄꤡ¤Ć¤˘¤ëžěšç¤Ë¤Ď /etc/mail/local-host-names ¤ÎĂć¤Ë domain.net ¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ ¤â¤ˇ¤Ż¤ĎĄ˘/etc/mail/sendmail.cf ¤ÎĂć¤Ë Cw domain.net ¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ sendmail FAQ ¤Ď ¤Ë¤˘¤ę¤Ţ¤š¤Î¤ÇĄ˘ ĽáĄźĽë¤ÎŔßÄę¤Ë ¤Ş¤Ť¤ˇ¤Ę¤ł¤Č ¤Ź¤˘¤ě¤Đžď¤ËĆɤó¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ ĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ× PPPPPP ĽŰĽšĽČ¤ÇĽáĄźĽëĽľĄźĽĐ¤ňźÂšÔ¤š¤ë¤Ë¤Ď¤É¤Ś¤ˇ¤ż¤é¤¤¤¤¤Î? LAN žĺ¤Ë¤˘¤ë FreeBSD ĽŢĽˇĽó¤ňĄ˘ Ľ¤ĽóĽżĄźĽÍĽĂĽČ¤ËŔÜÂł¤ˇ¤ż¤¤¤Č¤ˇ¤Ţ¤šĄŁFreeBSD ĽŢĽˇĽó¤ĎĄ˘¤˝¤Î LAN ¤Ç¤ÎĽáĄźĽëĽ˛ĄźĽČĽŚĽ§Ľ¤¤Ë¤Ę¤ę¤Ţ¤šĄŁFreeBSD ĽŢĽˇĽó¤ĎŔěÍŃŔţŔÜÂł¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó (ĚőĂí: ĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ×ŔÜÂł¤Ę¤É)ĄŁ ¤ł¤ě¤Ë¤ĎĄ˘žŻ¤Ę¤Ż¤Č¤âĆó¤Ä¤ÎĘýËĄ¤Ź¤˘¤ę¤Ţ¤šĄŁ °ě¤Ä¤Ď UUCPUUCP ¤ňťČ¤Ś¤ł¤Č¤Ç¤šĄŁ ¤â¤Ś°ě¤Ä¤ÎĘýËĄ¤ĎĄ˘¤˘¤Ę¤ż¤ÎĽÉĽáĽ¤Ľó¤ËÂФš¤ëĽťĽŤĽóĽŔĽę MX ĽľĄźĽÓĽš¤ňÄ󜥤š¤ëžďťţ˛ÔĆŻ¤ÎĽ¤ĽóĽżĄźĽÍĽĂĽČĽľĄźĽĐ¤ňÍѰդš¤ë¤ł¤Č¤Ç¤šĄŁ ¤ż¤Č¤¨¤ĐĄ˘¤˘¤Ę¤ż¤Î˛ńźŇ¤ÎĽÉĽáĽ¤Ľó¤Ź example.com ¤ÇĄ˘ ISP ¤Ź¤˘¤Ę¤ż¤ÎĽÉĽáĽ¤Ľó¤Ë ĽťĽŤĽóĽŔĽę MX ĽľĄźĽÓĽš¤ňÄ󜥤š¤ë¤ż¤á¤Ë example.net ĽÉĽáĽ¤Ľó¤ň ÍѰդš¤ë¤Č¤ˇ¤ż¤éźĄ¤Î¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ example.com. MX 10 example.com. MX 20 example.net. şÇ˝ŞĹŞ¤ĘĽáĄźĽëźőżŽŔč¤Č¤ˇ¤Ć¤ĎĄ˘ °ě¤Ä¤ÎĽŰĽšĽČ¤Ŕ¤ą¤ŹÄęľÁ¤ľ¤ě¤ë¤Ů¤­¤Ç¤š (example.com žĺ¤Î /etc/mail/sendmail.cf ĽŐĽĄĽ¤Ľë¤ËĄ˘ Cw example.com ¤ňÄɲ䡤ޤš)ĄŁ Á÷żŽÂŚ¤Î sendmail ¤ŹĄ˘ ĽáĄźĽë¤ňÇŰÁ÷¤ˇ¤č¤Ś¤Č¤ˇ¤Ć¤¤¤ëťţĄ˘ĽâĽÇĽŕ¤ÎŔÜÂł¤ň˛đ¤ˇ¤Ć¤˘¤Ę¤ż¤Î¤Č¤ł¤í (example.com) ¤ËŔÜÂł¤ˇ¤č¤Ś¤Č¤ˇ¤Ţ¤šĄŁÂçÄń¤ÎžěšçĄ˘ ¤˘¤Ę¤ż¤ÎĽŢĽˇĽó¤ŹĽŞĽóĽéĽ¤Ľó¤Ç¤Ę¤¤¤ż¤á¤ËĄ˘ ŔÜÂł¤ĎĽżĽ¤ĽŕĽ˘ĽŚĽČ¤ˇ¤Ć¤ˇ¤Ţ¤Ś¤Ç¤ˇ¤ç¤ŚĄŁ sendmail Ľ×ĽíĽ°ĽéĽŕ¤ĎźŤĆ°ĹŞ¤ËĄ˘ ¤ż¤Č¤¨¤Đ¤˘¤Ę¤ż¤ÎĽ¤ĽóĽżĄźĽÍĽĂĽČĽ×ĽíĽĐĽ¤ĽŔ¤Ę¤É¤ÎĽťĽŤĽóĽŔĽę¤Î MX ĽľĽ¤ĽČ (example.net) ¤ËĽáĄźĽë¤ňÇŰÁ÷¤š¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ĽťĽŤĽóĽŔĽę MX ĽľĽ¤ĽČ¤ĎÄę´üĹŞ¤Ë¤˘¤Ę¤ż¤ÎĽŰĽšĽČ¤ËŔÜÂł¤ˇĄ˘ Ľ×ĽéĽ¤ĽŢĽę MX ĽŰĽšĽČ (example.com) ¤ËĽáĄźĽë¤ňÇŰÁ÷¤ˇ¤č¤Ś¤Č¤š¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ĽíĽ°Ľ¤ĽóĽšĽŻĽęĽ×ĽČ¤Č¤ˇ¤ĆĄ˘ ¤ł¤Î¤č¤Ś¤Ę¤â¤Î¤ňťČ¤Ś¤Č¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ #!/bin/sh # Put me in /usr/local/bin/pppmyisp ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp ĽćĄźĽś¤´¤Č¤ËĽíĽ°Ľ¤ĽóĽšĽŻĽęĽ×ĽČ¤ňşî¤ę¤ż¤¤žěšç¤Ë¤ĎĄ˘ žĺľ­¤ÎĽšĽŻĽęĽ×ĽČ¤ÎÂĺ¤ď¤ę¤ËĄ˘ sendmail -qRexample.com ¤ňťČÍѤš¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ ¤ł¤Î¤č¤Ś¤Ë¤š¤ë¤ČĄ˘ Ľ­ĽĺĄź¤ÎĂć¤Î example.com ¤ËÂФš¤ë¤š¤Ů¤Ć¤ÎĽáĄźĽë¤ĎĄ˘¤š¤°¤ËśŻŔŠĹŞ¤Ë˝čÍý¤ľ¤ě¤Ţ¤šĄŁ ¤ľ¤é¤ËĄ˘źĄ¤Î¤č¤Ś¤Ę˛ţÎɤâ¤Ç¤­¤Ţ¤šĄŁ °Ę˛ź¤ĎĄ˘&a.isp; ¤Ť¤éČ´żč¤ˇ¤Ć¤­¤żĽáĽĂĽťĄźĽ¸¤Ç¤šĄŁ > ťä¤ż¤Á¤Ď¤ŞľŇÍͤËÂФˇ¤ĆĄ˘ĽťĽŤĽóĽŔĽę MX ¤ňÄ󜥤ˇ¤Ć¤¤¤Ţ¤šĄŁ > ¤ŞľŇÍͤϰěĆü¤Ë˛ż˛ó¤Ťťä¤ż¤Á¤ÎĽľĄźĽÓĽš¤ËŔÜÂł¤ˇĄ˘ĽáĄźĽë¤ňČŕ¤é¤ÎĽ×ĽéĽ¤ĽŢĽę MX > ¤Ëźő¤ąźč¤ę¤Ţ¤š (Čŕ¤é¤ÎĽÉĽáĽ¤Ľó¤ËÂФš¤ëĽáĄźĽë¤ŹĹţĂ夡¤żťţ¤Ë¤ĎĄ˘ > ťä¤ż¤Á¤ĎČŕ¤é¤ÎĽľĽ¤ĽČ¤ň¸Ć¤Ó˝Đ¤ˇ¤Ţ¤ť¤ó)ĄŁ > ťä¤ż¤Á¤Î sendmail ¤ĎĄ˘30 ĘŹ¤´¤Č¤ËĽáĄźĽëĽ­ĽĺĄź¤ËÎŻ¤Ă¤Ć¤¤¤ëĽáĄźĽë¤ňÇŰÁ÷¤ˇ¤Ţ¤šĄŁ > ¤Á¤ç¤Ś¤É¤˝¤Îťţ¤ËĄ˘¤š¤Ů¤Ć¤ÎĽáĄźĽë¤ŹĽ×ĽéĽ¤ĽŢĽę MX ¤ËÁ÷¤é¤ě¤ż¤Ť¤É¤Ś¤Ť¤ňłÎ¤Ť¤á¤ë¤ż¤á¤Ë¤ĎĄ˘ > Čŕ¤é¤Ď 30 ĘŹ¤Ď ĽŞĽóĽéĽ¤Ľó¤Ç¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ > > ¤š¤Ů¤Ć¤ÎĽáĄźĽë¤ňşŁ¤š¤°Á÷¤ë¤ż¤á¤Ë sendmail ¤ň˝é´ü˛˝¤š¤ëĽłĽŢĽóĽÉ¤Ď¤˘¤ë¤Ç¤ˇ¤ç¤Ś¤Ť? > ¤â¤Á¤í¤óťä¤ż¤Á¤ÎĽŢĽˇĽóžĺ¤Ë¤ĎĄ˘ĽćĄźĽś¤ĎĽëĄźĽČ (root) ¸˘¸Â¤ňťý¤Ă¤Ć¤¤¤Ţ¤ť¤óĄŁ sendmail.cf ¤Î privacy flags ĽťĽŻĽˇĽçĽó¤ËĄ˘ Opgoaway,restrictqrun ¤ÎÄęľÁ¤Ź¤˘¤ę¤Ţ¤šĄŁ root °Ęł°¤ÎĽćĄźĽś¤ŹĽ­ĽĺĄź¤ň˝čÍý¤Ç¤­¤ë¤č¤Ś¤Ë¤š¤ë¤Ë¤ĎĄ˘ restrictqrun ¤ňşď˝ü¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ¤Ţ¤żĄ˘MX ¤ÎşĆÄ´Ŕ°¤ŹÉŹÍפŤ¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ ¤˘¤Ę¤ż¤Ź¤ż¤ĎĄ˘¸ÜľŇ¤ÎĽľĽ¤ĽČ¤ËÂФš¤ë°ěČÖÍĽŔčĹ٤Κ⤤ MX ¤Ę¤Î¤ÇĄ˘ źĄ¤Î¤č¤Ś¤ËÄęľÁ¤ˇ¤Ţ¤šĄŁ # If we are the best MX for a host, try directly instead of generating # local config error. OwTrue ¤ł¤Î¤č¤Ś¤Ë¤š¤ë¤ČĄ˘ĽęĽâĄźĽČĽľĽ¤ĽČ¤Ť¤é¤ÎĽáĄźĽë¤ŹĄ˘ ¸ÜľŇ¤ÎĽŢĽˇĽó¤ČŔÜÂł¤ˇ¤č¤Ś¤Č¤ť¤şĄ˘ÄžŔܤ˘¤Ę¤ż¤Ź¤ż¤ÎĽŰĽšĽČĽŢĽˇĽó¤ËÇŰÁ÷¤ľ¤ě¤ë¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ ĽŰĽšĽČĽŢĽˇĽó¤ËÇŰÁ÷¤ľ¤ě¤żĽáĄźĽë¤ĎĄ˘Âł¤¤¤Ć¸ÜľŇ¤ÎĽŢĽˇĽó¤ËÁ÷¤é¤ě¤Ţ¤šĄŁ ¤ł¤ě¤ĎĽŰĽšĽČĚž¤Ë¤Î¤ßÍ­¸ú¤Ę¤Î¤ÇĄ˘¸ÜľŇ¤ÎĽáĄźĽëĽŢĽˇĽó¤ËĄ˘ host.customer.com ¤Č¤ĎĘ̤˥˘customer.com ¤âÄęľÁ¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ DNS žĺ¤ÇĄ˘customer.com ¤ËÂФš¤ë A ĽěĽłĄźĽÉ¤ňÄęľÁ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤Ę¤źÂž¤ÎĽŰĽšĽČ¤ËĽáĄźĽë¤ňÁ÷¤í¤Ś¤Č¤š¤ë¤ČĄ˘¤¤¤Ä¤â Relaying Denied ¤ČĹܤé¤ě¤Ć¤ˇ¤Ţ¤Ś¤Î ? FreeBSD ¤ŹĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤żĽÇĽŐĽŠĽëĽČ¤ÎžőÂ֤Ǥϥ˘ sendmail ¤Ďưşî¤ˇ¤Ć¤¤¤ëĽŰĽšĽČ¤Ť¤é¤ÎĽáĄźĽë¤Ŕ¤ą¤ňÁ÷¤ë¤č¤Ś¤ËŔßÄꤾ¤ě¤Ć¤¤¤Ţ¤šĄŁ ¤ż¤Č¤¨¤Đ POP3 ĽľĄźĽĐ¤ŹĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ë¤Č¤š¤ë¤ČĄ˘ ĽćĄźĽś¤ĎłŘšť¤äżŚžě¤Ę¤Éž¤ÎĽęĽâĄźĽČ¤Îžě˝ę¤Ť¤éĽáĄźĽë¤ňłÎǧ¤š¤ë¤ł¤Č¤Ź ¤Ç¤­¤Ţ¤šĄŁ¤ˇ¤Ť¤ˇĄ˘Čŕ¤é¤Ďł°Éô¤Ť¤é¤˝¤ÎĽŰĽšĽČ°Ęł°¤Ř¤ÎĽáĄźĽë¤ň Á÷¤ë¤ł¤Č¤Ď¤ä¤Ď¤ę¤Ç¤­¤Ţ¤ť¤óĄŁ Ä̞異ĽáĄźĽë¤ňÁ÷¤í¤Ś¤Č¤ˇ¤Ć¤Ť¤éžŻ¤ˇ¤š¤ë¤ČĄ˘ 5.7 Relaying Denied ¤Č¤¤¤ŚĽ¨ĽéĄźĽáĽĂĽťĄźĽ¸¤Î˝ń¤Ť¤ě¤żĽáĄźĽë¤Ź MAILER-DAEMON ¤Ť¤éÁ÷¤é¤ě¤Ć¤Ż¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ě¤ň˛ňˇč¤š¤ëĘýËĄ¤Ď¤¤¤Ż¤Ä¤Ť¤˘¤ę¤Ţ¤šĄŁ °ěČÖ¤ÎŔľšśËĄ¤Ď /etc/mail/relay-domains ĽęĽěĄźĽÉĽáĽ¤ĽóĽŐĽĄĽ¤Ľë¤Ë¤˘¤Ę¤ż¤Î ISP ¤ÎĽ˘ĽÉĽěĽš¤ň˝ń¤Ż¤ł¤Č¤Ç¤šĄŁ ¤ł¤ě¤ň¤š¤ë¤Î¤Ë´ĘĂą¤ĘĘýËĄ¤ĎźĄ¤Î¤Č¤Ş¤ę¤Ç¤šĄŁ &prompt.root; echo "your.isp.example.com" > /etc/mail/relay-domains ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ňşîŔŽ¤Ţ¤ż¤ĎĘÔ˝¸¤ˇ¤ż¤éĄ˘ sendmail ¤ňşĆľŻĆ°¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤â¤ˇ¤˘¤Ę¤ż¤ŹĽľĄźĽĐ´ÉÍýźÔ¤ÇĽáĄźĽë¤ňĽíĄźĽŤĽë¤ËÁ÷¤ę¤ż¤Ż¤Ę¤¤¤ŤĄ˘ ĽÝĽ¤ĽóĽČ¤ňťČÍѤˇ¤Ćž¤ÎĽŢĽˇĽó (¤äĄ˘¤ľ¤é¤Ëž¤Î ISP) ¤Î ĽŻĽéĽ¤Ľ˘ĽóĽČ¤Ţ¤ż¤ĎĽˇĽšĽĆĽŕ¤ŘÁ÷¤ę¤ż¤¤ťţ¤ĎĄ˘¤Č¤Ć¤â¸ú˛Ě¤Ź¤˘¤ę¤Ţ¤šĄŁ ¤ľ¤é¤ËĄ˘¤˘¤Ę¤ż¤Ź°ě¤Ä¤˘¤ë¤¤¤ĎĆó¤Ä¤Ŕ¤ą¤ÎĽáĄźĽëĽ˘ĽŤĽŚĽóĽČ¤ň ŔßÄꤡ¤Ć¤¤¤ëžěšç¤Ç¤â¤ł¤ě¤ĎČóžď¤ËÍ­ÍŃ¤Ç¤šĄŁ Äɲ䚤٤­Ľ˘ĽÉĽěĽš¤Ź¤ż¤Ż¤ľ¤ó¤˘¤ëžěšç¤Ë¤ĎĄ˘ Ăą¤Ë¤ł¤ÎĽŐĽĄĽ¤Ľë¤ň¤˘¤Ę¤ż¤ÎšĽ¤­¤ĘĽĆĽ­ĽšĽČĽ¨ĽÇĽŁĽż¤ÇłŤ¤¤¤ĆĄ˘ ¤˝¤ˇ¤Ć°ěšÔ¤Ë°ě¤Ä¤ş¤ÄĽÉĽáĽ¤Ľó¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ your.isp.example.com other.isp.example.net users-isp.example.org www.example.org ¤ł¤ě¤ÇĄ˘ĽęĽšĽČ¤ËˇÇşÜ¤ľ¤ě¤Ć¤¤¤ë¤š¤Ů¤Ć¤ÎĽŰĽšĽČ (ĽćĄźĽś¤Ź¤˘¤Ę¤ż¤ÎĽˇĽšĽĆĽŕ¤ËĽ˘ĽŤĽŚĽóĽČ¤ňťý¤Ă¤Ć¤¤¤ë¤ČľŹÄꤚ¤ë) ¤Ť¤é¤˘¤Ę¤ż¤ÎĽˇĽšĽĆĽŕ¤ňÄ̤뤚¤Ů¤Ć¤ÎĽáĄźĽë¤ĎÁ÷żŽ¤ËŔޏů¤š¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ě¤Ď¤˘¤Ę¤ż¤ÎĽˇĽšĽĆĽŕ¤Ť¤é SPAM ¤ňÁ÷¤ë¤ł¤Č¤ňǧ¤á¤ë¤ł¤Č¤Ę¤ŻĄ˘ ĽęĽâĄźĽČ¤Ç¤˘¤Ę¤ż¤ÎĽˇĽšĽĆĽŕ¤Ť¤éĽáĄźĽë¤ňÁ÷¤ë¤ł¤Č¤ňĽćĄźĽś¤Ë ǧ¤á¤ë¤ż¤á¤Î¤Č¤Ć¤â¤č¤¤ĘýËĄ¤Ç¤šĄŁ ŔčżĘĹŞ¤ĘĽČĽÔĽĂĽŻĽš ¤ł¤ě¤Ť¤é¤ÎĽťĽŻĽˇĽçĽó¤Ç¤ĎĄ˘ ĽáĄźĽë¤ÎŔßÄę¤äĽÉĽáĽ¤ĽóÁ´ÂΤΤż¤á¤ÎĽáĄźĽë¤ÎŔßÄę¤Č¤¤¤Ă¤ż¤ľ¤é¤ËĆÍšţ¤ó¤ŔĎĂÂę¤Ë¤Ä¤¤¤Ćż¨¤ě¤Ţ¤šĄŁ ´đËÜťöšŕ email ŔßÄę ¤˘¤Ę¤ż¤ÎĽŢĽˇĽó¤Ë FreeBSD ¤ňÉáÄ̤˼¤ĽóĽšĽČĄźĽë¤ˇ¤ĆĄ˘ /etc/resolv.conf ĽŐĽĄĽ¤Ľë¤ňŔßÄꤚ¤ë¤ŤĄ˘ ¤Ţ¤ż¤ĎĽÍĄźĽŕĽľĄźĽĐ¤ňÁö¤é¤ť¤ě¤ĐĄ˘ ž¤ÎĽŰĽšĽČ¤ŘĹŝҼᥟĽë¤ňÁ÷¤ë¤ł¤Č¤Ź¤Ç¤­¤ë¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤ÎĽŰĽšĽČ°¸¤ÎĽáĄźĽë¤ň¤˘¤Ę¤żźŤżČ¤Î FreeBSD ĽŰĽšĽČžĺ¤Î MTA (¤ż¤Č¤¨¤Đ sendmail) ¤ËÇŰÁ÷¤š¤ë¤č¤Ś¤Ë¤ˇ¤ż¤¤žěšç¤Ë¤ĎĄ˘źĄ¤ÎĆó¤Ä¤ÎĘýËĄ¤Ź¤˘¤ę¤Ţ¤šĄŁ źŤżČ¤ÇĽÍĄźĽŕĽľĄźĽĐĄź¤ňźÂšÔ¤ˇĄ˘ źŤĘŹ¤ÎĽÉĽáĽ¤Ľó¤ňťý¤ÄĄŁÎ㤨¤Đ FreeBSD.orgĄŁ ¤˘¤Ę¤ż¤ÎĽŰĽšĽČ¤ŘÄžŔܼᥟĽë¤ŹÇŰÁ÷¤ľ¤ě¤ë¤č¤Ś¤Ë¤š¤ëĄŁ ¤ł¤ě¤ĎĽáĄźĽë¤Ź¤˘¤Ę¤ż¤ÎĽŢĽˇĽó¤Î¸˝şß¤Î DNS Ěž¤ËÄžŔÜÇŰÁ÷¤ľ¤ě¤ë¤č¤Ś¤Ë¤š¤ë¤ł¤Č¤Ë¤č¤ęźÂ¸˝¤Ç¤­¤Ţ¤šĄŁ ¤ż¤Č¤¨¤Đ example.FreeBSD.orgĄŁ SMTP žĺ¤Î¤É¤Á¤é¤ňÁŞ¤Öžěšç¤Ç¤âĄ˘źŤĘŹ¤ÎĽŰĽšĽČ¤ËÄžŔܼᥟĽë¤ŹÇŰÁ÷¤ľ¤ě¤ë¤č¤Ś¤Ë¤š¤ë¤Ë¤Ďšąľ×ĹŞ¤Ç ŔĹĹŞ ¤Ę IP Ľ˘ĽÉĽěĽš (¤Ű¤Č¤ó¤É¤Î PPP ĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ×ŔßÄę¤ÇÍѤ¤¤é¤ě¤ëưŪ¤ĘĽ˘ĽÉĽěĽš¤Ç¤Ď¤Ę¤Ż) ¤ňťý¤Ă¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤â¤ˇĽŐĽĄĽ¤Ľ˘ĽŚĽŠĄźĽë¤ÎĂć¤Ë¤¤¤ë¤Ę¤é¤ĐĄ˘ SMTP ĽČĽéĽŐĽŁĽĂĽŻ¤ŹÄ̲ᤡ¤Ć¤Ż¤ě¤Ę¤¤¤Č¤¤¤ą¤Ţ¤ť¤óĄŁ ¤â¤ˇźŤĘŹ¤ÎĽŰĽšĽČ¤ÇĽáĄźĽë¤ňÄžŔÜźő¤ąźč¤ę¤ż¤¤¤Ę¤é¤ĐĄ˘ źĄ¤ÎĆó¤Ä¤Î¤Ś¤Á¤Î¤É¤Á¤é¤Ť¤Ź¤Ç¤­¤Ć¤¤¤ë¤ł¤Č¤ňłÎǧ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ - MX ĽěĽłĄźĽÉ źŤĘŹ¤ÎĽÉĽáĽ¤Ľó¤Ç¤Î - (°ěČÖĂÍ¤ÎžŽ¤ľ¤¤) MX ĽěĽłĄźĽÉ¤ŹźŤĘŹ¤ÎĽŰĽšĽČ¤Î + (°ěČÖĂÍ¤ÎžŽ¤ľ¤¤) MX ĽěĽłĄźĽÉMX ĽěĽłĄźĽÉ¤ŹźŤĘŹ¤ÎĽŰĽšĽČ¤Î IP Ľ˘ĽÉĽěĽš¤ňşš¤ˇ¤Ć¤¤¤ë¤ł¤Č¤ňłÎǧ¤š¤ëĄŁ źŤĘŹ¤ÎĽÉĽáĽ¤Ľó¤ÎĂć¤ËźŤĘŹ¤ÎĽŰĽšĽČÍѤΠMX Ľ¨ĽóĽČĽę¤Ź¤Ę¤¤¤ł¤Č¤ňłÎǧ¤š¤ëĄŁ žĺ¤Î¤É¤Á¤é¤Ť¤ŹŔßÄꤾ¤ě¤Ć¤¤¤ě¤ĐĄ˘ źŤĘŹ¤ÎĽŰĽšĽČ¤ÇĽáĄźĽë¤ňźő¤ąźč¤ë¤ł¤Č¤Ź¤Ç¤­¤ë¤Ç¤ˇ¤ç¤ŚĄŁ źĄ¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤ˇ¤Ć¤ß¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; hostname example.FreeBSD.org &prompt.root; host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX ¤â¤ˇ¤˘¤Ę¤ż¤ÎĽŢĽˇĽó¤Źžĺľ­¤ÎĽáĽĂĽťĄźĽ¸¤Ŕ¤ą¤ň˝ĐÎϤˇ¤ż¤Ę¤é¤ĐĄ˘ yourlogin@example.FreeBSD.org ¤Ř¤ÎĽáĄźĽë¤ĎĚäÂę¤Ę¤ŻÇŰÁ÷¤ľ¤ě¤ë¤Ç¤ˇ¤ç¤Ś (sendmail ¤Ź example.FreeBSD.org žĺ¤ÇŔľ¤ˇ¤ŻĆ°şî¤ˇ¤Ć¤¤¤ë¤Č˛žÄꤡ¤Ţ¤š)ĄŁ žĺľ­¤ÎĽáĽĂĽťĄźĽ¸¤ÎÂĺ¤ď¤ę¤ËĄ˘ &prompt.root; host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org ¤Č¤¤¤ŚĽáĽĂĽťĄźĽ¸¤Ź˝ĐÎϤľ¤ě¤żžěšç¤ĎĄ˘ ¤˘¤Ę¤ż¤ÎĽŰĽšĽČ (example.FreeBSD.org) ¤Ë°¸¤Ć¤żĽáĄźĽë¤ĎÁ´¤ĆÄžŔÜÇŰÁ÷¤ľ¤ě¤ş¤Ë hub žĺ¤ÎĆą¤¸ĽćĄźĽśĄźĚž¤ËÇŰÁ÷¤ľ¤ě¤Ţ¤šĄŁ žĺ¤ÎžđĘó¤Ď DNS ĽľĄźĽĐĄź¤Ź°ˇ¤¤¤Ţ¤šĄŁ ĽáĄźĽëĽëĄźĽĆĽŁĽóĽ°žđĘó¤ň¤â¤Ä DNS ĽěĽłĄźĽÉ¤ĎĄ˘ Mail eXchange Ľ¨ĽóĽČĽęĄź¤Ç¤šĄŁ MX Ľ¨ĽóĽČĽę¤ŹÂ¸şß¤ˇ¤Ę¤¤žěšç¤Ë¤ĎĄ˘IP Ľ˘ĽÉĽěĽš¤Ë¤ˇ¤ż¤Ź¤Ă¤ĆĄ˘ ÄžŔܰ¸ŔčĽŰĽšĽČ¤ËÇŰÁ÷¤ľ¤ě¤Ţ¤šĄŁ freefall.FreeBSD.org ¤Î¸˝ťţĹŔ¤Ç¤Î MX Ľ¨ĽóĽČĽę¤ĎĄ˘źĄ¤Î¤č¤Ś¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤šĄŁ freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com freefall ¤ĎÂż¤Ż¤Î MX Ľ¨ĽóĽČĽę¤ňťý¤Ă¤Ć¤¤¤Ţ¤šĄŁ °ěČÖ MX ¤ÎĂÍ¤ÎžŽ¤ľ¤¤ĽŰĽšĽČ¤ŹÍřÍѲÄÇ˝¤Ęžěšç¤ĎÄžŔܼᥟĽë¤ňźő¤ąźč¤ę¤Ţ¤šĄŁ ¤â¤ˇ¤Ę¤Ë¤Ť¤ÎÍýÍł¤ÇĽ˘ĽŻĽťĽš¤Ź¤Ç¤­¤Ę¤¤ťţ¤Ë¤ĎĄ˘ ž¤ÎĽŰĽšĽČ (¤Č¤­¤É¤­ ĽĐĽĂĽŻĽ˘ĽĂĽ× MX ¤Č¸Ć¤Đ¤ě¤Ţ¤š) ¤Ź°ěťţĹŞ¤ËĽáĄźĽë¤ňźő¤ąźč¤ę¤Ţ¤šĄŁ¤˝¤ˇ¤ĆĄ˘ ¤č¤ęĂÍ¤ÎžŽ¤ľ¤¤ĽŰĽšĽČ¤ŹÍřÍѲÄÇ˝¤Ë¤Ę¤Ă¤ż¤Č¤­¤ËĽáĄźĽë¤ňĹϤˇĄ˘ şÇ˝ŞĹޤ˰ěČÖĂÍ¤ÎžŽ¤ľ¤¤ĽŰĽšĽČ¤ËĹϤę¤Ţ¤šĄŁ ťČ¤¤žĄźę¤ň¤č¤Ż¤š¤ë¤ż¤á¤Ë¤ĎĄ˘ÂĺÂؤΠMX ĽľĽ¤ĽČ¤ĎĄ˘¤˝¤ě¤ž¤ě Ę̤ΡĐĎŠ¤ÇĽ¤ĽóĽżĄźĽÍĽĂĽČ¤ŘŔÜÂł¤ˇ¤Ć¤¤¤ë¤Č¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ Ľ¤ĽóĽżĄźĽÍĽĂĽČĽ×ĽíĽĐĽ¤ĽŔ¤Ţ¤ż¤Ďž¤Î´ŘϢĽľĽ¤ĽČ¤ŹĄ˘¤ł¤ÎĽľĄźĽÓĽš¤ň Ä󜥤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤ÎĽÉĽáĽ¤Ľó¤ËÂФš¤ëĽáĄźĽëŔßÄę ĽáĄźĽëĽŰĽšĽČ (ĽáĄźĽëĽľĄźĽĐĄź¤Č¤ˇ¤Ć¤âĂΤé¤ě¤Ć¤¤¤Ţ¤š) ¤ňĽťĽĂĽČĽ˘ĽĂĽ×¤š¤ë¤ż¤á¤Ë¤ĎĄ˘ ¤¤¤í¤¤¤í¤ĘĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤Ë°¸¤Ć¤żÁ´¤Ć¤ÎĽáĄźĽë¤ňźő¤ą¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ´đËÜĹŞ¤Ë¤ĎĄ˘¤˘¤Ę¤ż¤ÎĽÉĽáĽ¤ĽóĆâ (¤ł¤Îžěšç¤Ŕ¤Č *.FreeBSD.org) ¤Î¤š¤Ů¤Ć¤ÎĽŰĽšĽČĚž°¸¤Ć¤Î¤š¤Ů¤Ć¤ÎĽáĄźĽë¤ň źő¤ąźč¤Ă¤ĆĄ˘ ¤˝¤ÎĽáĄźĽë¤ň¤˘¤Ę¤ż¤ÎĽáĄźĽëĽľĄźĽĐĄź¤ËÇŰÁ÷¤ˇĄ˘ ĽćĄźĽśĄź¤ŹĽŢĽšĽżĽáĄźĽëĽľĄźĽĐžĺ¤ÇĽáĄźĽë¤ňĽÁĽ§ĽĂĽŻ¤Ç¤­¤ë¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ DNS Ďäň´ĘĂą¤Ë¤š¤ë¤ż¤á¤ËĄ˘¤˘¤ëĽćĄźĽśĄź¤ÎĽ˘ĽŤĽŚĽóĽČ¤Ď¤É¤ÎĽŢĽˇĽó¤Ç¤âĆą¤¸ĽćĄźĽśĄźĚž¤Ë¤š¤Ů¤­¤Ç¤šĄŁ ¤˝¤Î¤ż¤á¤Ë¤Ď &man.adduser.8; ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ťČÍѤš¤ëÍ˝Äę¤ÎĽáĄźĽëĽŰĽšĽČ¤ĎĄ˘ łĆĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤´¤Č¤ËĽáĄźĽë¸ň´š¤Ź ¤Ç¤­¤ë¤č¤Ś¤ËŔßÄꤾ¤ě¤Ć¤¤¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ ¤ł¤ě¤Ď DNS ¤ÎŔßÄę¤ÇźĄ¤Î¤č¤Ś¤ËšÔ¤Ę¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ example.FreeBSD.org A 204.216.27.XX ; ĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó MX 10 hub.FreeBSD.org ; ĽáĄźĽëĽŰĽšĽČ ¤ł¤ě¤ĎĄ˘ĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó¤Î A ĽěĽłĄźĽÉ¤Ź¤É¤ł¤ňťŘ¤ˇ¤Ć¤¤¤č¤Ś¤Č¤â ¤˝¤ÎĽďĄźĽŻĽšĽĆĄźĽˇĽçĽó°¸¤Ć¤ÎĽáĄźĽë¤ňĽáĄźĽëĽŰĽšĽČ¤ËĹžÁ÷¤š¤ëĄ˘¤Č¤¤¤Ś¤â¤Î¤Ç¤šĄŁ źŤÁ°¤Ç DNS ĽľĄźĽĐ¤ňążÍѤˇ¤Ć¤¤¤ë¤Î¤Ç¤Ę¤ą¤ě¤ĐĄ˘ ¤ł¤ÎşîśČ¤ĎźŤĘŹ¤Ç¤ĎšÔ¤¨¤Ţ¤ť¤óĄŁźŤĘŹ¤Ç DNS ĽľĄźĽĐ¤ňążÍѤˇ¤Ę¤¤¤Č¤Ť¤Ç¤­¤Ę¤¤¤Č¤¤¤Śžěšç¤ĎĄ˘ ¤˘¤Ę¤ż¤Î DNS ¤ňÄ󜥤ˇ¤Ć¤¤¤ëĽ¤ĽóĽżĄźĽÍĽĂĽČĽ×ĽíĽĐĽ¤ĽŔ¤Ę¤É¤Ë°ÍÍꤡ¤Ć şîśČ¤ňšÔ¤Ă¤Ć¤â¤é¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤â¤ˇĽĐĄźĽÁĽăĽëĹŝҼᥟĽëĽŰĽšĽČ¤ňążÍѤš¤ë¤Ę¤éźĄ¤ÎžđĘó¤ŹĚň¤ËΊ¤Ä¤Ç¤ˇ¤ç¤ŚĄŁ Îă¤Č¤ˇ¤ĆĄ˘¤˘¤Ę¤ż¤Ë¤ĎźŤĘŹ¤ÎĽÉĽáĽ¤ĽóĄ˘¤ł¤ł¤Ç¤Ď customer1.orgĄ˘ ¤ňťý¤Ă¤Ć¤¤¤ë¸ÜľŇ¤Ź¤¤¤ë¤Č¤ˇ¤Ţ¤ˇ¤ç¤ŚĄŁ ¤˘¤Ę¤ż¤Ď customer1.org °¸¤Ć¤ÎÁ´¤Ć¤ÎĽáĄźĽë¤ň mail.myhost.com ¤Č¤¤¤ŚĽáĄźĽëĽŰĽšĽČ¤Ë˝¸¤á¤ż¤¤¤Č¤ˇ¤Ţ¤šĄŁ DNS Ľ¨ĽóĽČĽęĄź¤ĎźĄ¤Î¤č¤Ś¤Ë¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁ customer1.org MX 10 mail.myhost.com customer1.org ¤ËÂФˇ¤ĆĹŝҼᥟĽë¤ňÁ÷¤ę¤ż¤¤¤Ŕ¤ą¤Ę¤éĄ˘ A ĽěĽłĄźĽÉ¤ĎÉŹÍפ˘¤ę¤Ţ¤ť¤óĄŁ customer1.org ¤ËÂФˇ¤Ć ping ¤ňźÂšÔ¤ˇ¤Ć¤âĄ˘ A ĽěĽłĄźĽÉ¤ŹÂ¸şß¤ˇ¤Ę¤¤¸Â¤ę¤Ś¤Ţ¤Ż¤¤¤Ť¤Ę¤¤¤ł¤Č¤ËÎą°Ő¤ˇ¤Ć¤Ş¤¤¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ä¤é¤Ę¤ą¤ě¤Đ¤¤¤ą¤Ę¤¤şÇ¸ĺ¤Î¤ł¤Č¤ĎĄ˘ ĽáĄźĽëĽŰĽšĽČžĺ¤Î sendmail ¤ËÂФˇ¤Ć¤É¤ó¤ĘĽÉĽáĽ¤Ľó¤äĽŰĽšĽČ°¸¤ÎĽáĄźĽë¤ňźő¤ąźč¤ë¤Î¤ŤĄ˘ ¤ňśľ¤¨¤ë¤ł¤Č¤Ç¤šĄŁ¤¤¤Ż¤Ä¤Ť¤ÎĘýËĄ¤Ź¤˘¤ę¤Ţ¤š¤ŹźĄ¤Î¤É¤Á¤é¤Ť¤Ç¤¤¤¤¤Ç¤ˇ¤ç¤ŚĄŁ FEATURE(use_cw_file) ¤ňťČ¤Ă¤Ć¤¤¤ë¤Ę¤éĄ˘ /etc/mail/local-host-names ĽŐĽĄĽ¤Ľë¤ËĽŰĽšĽČ¤ň˛Ă¤¨¤Ţ¤šĄŁ ¤â¤ˇ sendmail ¤ÎĽĐĄźĽ¸ĽçĽó¤Ź 8.10 ¤č¤ęÁ°¤Ç¤˘¤ě¤ĐłşĹöĽŐĽĄĽ¤Ľë¤Ď /etc/sendmail.cw ¤Ç¤šĄŁ /etc/sendmail.cf ¤â¤ˇ¤Ż¤Ď sendmail 8.10 °Ęšß¤Ę¤é /etc/mail/sendmail.cf ¤Č¤¤¤Ă¤żĽŐĽĄĽ¤Ľë¤Ë Cwyour.host.com ¤Č¤¤¤ŚšÔ¤ň˛Ă¤¨¤Ţ¤šĄŁ UUCP ¤Č¤Č¤â¤Ë SMTP ¤ňťČ¤Ś FreeBSD ¤Č¤Č¤â¤Ë˝Đ˛Ů¤ľ¤ě¤Ć¤¤¤ë sendmail ¤ÎŔßÄę¤ĎĄ˘ ĽľĽ¤ĽČ¤ŹĽ¤ĽóĽżĄźĽÍĽĂĽČ¤ËÄžŔÜŔÜÂł¤ˇ¤Ć¤¤¤ë¤â¤Î¤Č¤ˇ¤ĆŔߡפľ¤ě¤Ć¤¤¤Ţ¤šĄŁ UUCP ˇĐÍł¤ÇĽáĄźĽë¤ň¸ň´š¤ˇ¤ż¤¤ĽľĽ¤ĽČ¤ĎĄ˘Âž¤Ë¤â ŔßÄęĽŐĽĄĽ¤Ľë¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ę¤ą¤ě¤Đ¤¤¤ą¤Ţ¤ť¤óĄŁ /etc/mail/sendmail.cf ¤ňźęư¤ÇÄ´Ŕ°¤š¤ë¤ł¤Č¤ĎŔčżĘĹŞ¤ĘĽČĽÔĽĂĽŻ¤Ç¤šĄŁ sendmail ¤ÎĽĐĄźĽ¸ĽçĽó 8 ¤ĎŔßÄęĽŐĽĄĽ¤Ľë¤ň &man.m4.1; Ľ×ĽęĽ×ĽíĽťĽĂĽľ¤Ť¤éŔ¸Ŕޤˇ¤Ţ¤šĄŁ ¤ł¤ě¤Ë¤č¤ęĄ˘šâĹ٤ËĂęžÝ˛˝¤ľ¤ě¤żŔßÄę¤ňšÔ¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ &man.m4.1; ¤Ë¤č¤ëŔßÄęĽŐĽĄĽ¤Ľë¤Ď /usr/src/usr.sbin/sendmail/cf °Ę˛ź¤Ë¤˘¤ę¤Ţ¤šĄŁ ¤â¤ˇĽˇĽšĽĆĽŕ¤ň¤š¤Ů¤Ć¤ÎĽ˝ĄźĽš¤Č¤Č¤â¤ËĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ć¤¤¤Ę¤ą¤ě¤ĐĄ˘ sendmail ¤ÎŔßÄęşŕÎÁ¤ĎĘŹłä¤ľ¤ě¤ż¸ÄĘ̤μ˝ĄźĽš tarball ¤ňźčĆŔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ FreeBSD ¤ÎĽ˝ĄźĽšĽłĄźĽÉ¤ŹĆţ¤Ă¤ż CDROM ¤ňĽŢĽŚĽóĽČ¤ˇ¤Ć¤¤¤ë¤Î¤Ę¤éĄ˘ &prompt.root; cd /cdrom/src &prompt.root; cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail ¤ČŸłŤ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ (ŸłŤ¤ˇ¤Ć¤â¤ż¤Ă¤żżôÉ´ KB ÄřĹ٤Ǥš)ĄŁ cf ĽÇĽŁĽěĽŻĽČĽę¤Î README ĽŐĽĄĽ¤Ľë¤Ď m4 ¤Ë¤č¤ëŔßÄę¤Î´đËÜĹŞ¤Ęźę°ú¤Č¤ˇ¤ĆĚň¤ËΊ¤Ä¤Ç¤ˇ¤ç¤ŚĄŁ UUCP ÇŰÁ÷¤ËÂĐąţ¤š¤ë¤ż¤á¤Î°ěČ֤褤ĘýËĄ¤Ď mailertable ľĄÇ˝¤ňťČÍѤš¤ë¤ł¤Č¤Ç¤šĄŁ ¤ł¤ě¤ĎˇĐĎŠ¤ňˇčÄꤚ¤ë¤ż¤á¤Ë sendmail ¤ŹťČÍѤǤ­¤ëĽÇĄźĽżĽŮĄźĽš¤ňşîŔޤˇ¤Ţ¤šĄŁ ¤Ţ¤ş¤Ď¤¸¤á¤Ë .mc ĽŐĽĄĽ¤Ľë¤ňşîŔޤˇ¤Ę¤ą¤ě¤Đ¤¤¤ą¤Ţ¤ť¤óĄŁ /usr/src/usr.sbin/sendmail/cf/cf ¤Ë¤¤¤Ż¤Ä¤ŤÎ㤏¤˘¤ę¤Ţ¤šĄŁfoo.mc ¤Č¤¤¤ŚĚžÁ°¤ÎĽŐĽĄĽ¤Ľë¤ň¤˘¤Ę¤ż¤ŹşîŔޤˇ¤ż¤Č¤š¤ë¤ČĄ˘ Í­¸ú¤Ę sendmail.cf ĽŐĽĄĽ¤Ľë¤ŘĘŃ´š¤š¤ë¤Ë¤ĎźĄ¤Î¤č¤Ś¤Ë¤š¤ë¤Ŕ¤ą¤Ç¤šĄŁ &prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf &prompt.root; make foo.cf &prompt.root; cp foo.cf /etc/mail/sendmail.cf ĹľˇżĹŞ¤Ę .mc ĽŐĽĄĽ¤Ľë¤ĎźĄ¤Î¤č¤Ś¤Ë¤Ę¤ë¤Ç¤ˇ¤ç¤ŚĄŁ VERSIONID(`Your version number') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', your.uucp.relay) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw your.alias.host.name Cw youruucpnodename.UUCP accept_unresolvable_domains, nocanonify ¤Ş¤č¤Ó confDONT_PROBE_INTERFACES ľĄÇ˝¤ň´Ţ¤ó¤Ç¤¤¤ëšÔ¤ĎĄ˘ ĽáĄźĽëÇŰÁ÷ťţ¤Ë¤Ţ¤Ă¤ż¤Ż DNS ¤ňťČÍѤˇ¤Ţ¤ť¤óĄŁ UUCP_RELAY ¤Îľ­˝Ň¤Ď UUCP ÇŰÁ÷¤ËÂĐąţ¤š¤ë¤Î¤ËÉŹÍ×¤Ç¤šĄŁ ¤˝¤ł¤ËĽ¤ĽóĽżĄźĽÍĽĂĽČĽŰĽšĽČĚž¤ňĂą¤Ë˝ń¤Ż¤Ŕ¤ą¤Ç .UUCP pseudo ĽÉĽáĽ¤ĽóĽ˘ĽÉĽěĽš¤ň°ˇ¤Ś¤ł¤Č¤Ź¤Ç¤­¤ë¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ ÂçÄń¤ÎžěšçĄ˘¤˘¤Ę¤ż¤Î ISP ¤ÎĽáĄźĽëĽęĽěĄź¤ň¤˝¤ł¤ËĆţÎϤš¤ë¤Ç¤ˇ¤ç¤ŚĄŁ źĄ¤ËĄ˘ /etc/mail/mailertable ¤ŹÉŹÍפˤʤę¤Ţ¤šĄŁ ĽáĄźĽë¤ňÇŰÁ÷¤š¤ëĽęĽóĽŻ¤Źł°łŚ¤Č¤Î´Ö¤Ë°ě¤Ä¤Ŕ¤ą¤Îžěšç¤ĎĄ˘ źĄ¤Î¤č¤Ś¤ËĽŐĽĄĽ¤Ľë¤ňľ­˝Ň¤š¤ë¤Ŕ¤ą¤Ç˝˝ĘŹ¤Ç¤ˇ¤ç¤ŚĄŁ # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:your.uucp.relay źĄ¤Ď¤ľ¤é¤ËĘŁť¨¤ĘÎă¤Ç¤šĄŁ # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: ¤Ď¤¸¤á¤Îť°šÔ¤ĎĽÉĽáĽ¤Ľó¤Ç°¸Ŕč¤ňťŘÄꤾ¤ě¤żĽáĄźĽë¤ŹĄ˘ ÇŰÁ÷ĎŠ¤ň śáĆť ¤š¤ë¤ż¤á¤ËĄ˘ ĽÇĽŐĽŠĽëĽČĽëĄźĽČ¤Ç¤Ď¤Ę¤ŻÂĺ¤ď¤ę¤Ë¤¤¤Ż¤Ä¤Ť¤Î UUCP ÎŮŔÜĽŰĽšĽČ¤ŘÁ÷¤é¤ě¤ëĆĂĘ̤ʞěšç¤ň°ˇ¤¤¤Ţ¤šĄŁ źĄ¤ÎšÔ¤ĎĽáĄźĽë¤ň SMTP ¤ÇÇŰÁ÷˛ÄÇ˝¤ĘĽíĄźĽŤĽëĽ¤ĄźĽľĽÍĽĂĽČĽÉĽáĽ¤Ľó¤ŘÁ÷¤ę¤Ţ¤šĄŁ şÇ¸ĺ¤Ë uucp-neighbor !recipient ¤ŹĽÇĽŐĽŠĽëĽČĽëĄźĽČ¤ňžĺ˝ń¤­¤š¤ë¤ł¤Č¤ňľö˛Ä¤š¤ë¤ż¤á¤Î UUCP ÎŮŔÜĽŰĽšĽČ¤Ď .UUCP ˛žÁۼɼἤĽóľ­ËĄ¤Ç¸ŔľÚ¤ľ¤ě¤Ţ¤šĄŁ şÇ¸ĺ¤ÎšÔ¤Ďžď¤Ëž¤Î¤š¤Ů¤Ć¤ŹĹö¤Ć¤Ď¤Ţ¤ëĽˇĽóĽ°ĽëĽÉĽĂĽČ¤Ç¤šĄŁ ¤ł¤ě¤Ď UUCP ÎŮŔÜĽŰĽšĽČ¤Ř¤Î UUCP ÇŰÁ÷¤ň¤š¤ë¤ł¤Č¤ÇĄ˘ Ŕ¤łŚ¤Ë¸ţ¤ą¤ż¤˘¤Ę¤ż¤ÎÉáĘ×ĹŞĽáĄźĽëĽ˛ĄźĽČĽŚĽ§Ľ¤¤Č¤ˇ¤ĆĚň¤ËΊ¤Á¤Ţ¤šĄŁ uucp-dom: Ľ­ĄźĽďĄźĽÉ¤Î¸ĺ¤í¤Ë¤˘¤ëĽÎĄźĽÉĚž¤Ď¤š¤Ů¤ĆĄ˘ uuname ĽłĽŢĽóĽÉ¤ňťČÍѤš¤ë¤ł¤Č¤ÇłÎ¤Ť¤á¤é¤ě¤ëŔľ¤ˇ¤¤ UUCP ÎŮŔÜĽŰĽšĽČ¤Ç¤˘¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ĎĄ˘źÂşÝ¤ËťČÍѤš¤ëÁ°¤Ë DBM ĽÇĄźĽżĽŮĄźĽšˇÁź°¤ËĘŃ´š¤š¤ëÉŹÍפʤ˘¤ë¤ł¤Č¤ËĂí°Ő¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ě¤ňźÂšÔ¤š¤ëĽłĽŢĽóĽÉĽéĽ¤Ľó¤Ď mailertable ĽŐĽĄĽ¤Ľë¤ÎŔčĆŹ¤ËĽłĽáĽóĽČ¤Č¤ˇ¤Ć˝ń¤Ť¤ě¤Ć¤¤¤Ţ¤šĄŁ mailertable ¤ňĘŃšš¤š¤ë¤ż¤Ó¤Ë¤¤¤Ä¤â¤ł¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤š¤ëÉŹÍפʤ˘¤ę¤Ţ¤šĄŁ şÇ¸ĺ¤ÎĽ˘ĽÉĽĐĽ¤Ľš: ¤â¤ˇĄ˘ ¤¤¤Ż¤Ä¤Ť¤ÎĽáĄźĽëĽëĄźĽĆĽŁĽóĽ°¤Ź¤Ś¤Ţ¤ŻĆ°¤¤¤Ć¤¤¤ë¤Ť¤É¤Ś¤ŤĘʤŤ¤é¤Ę¤¤¤Č¤­¤Ď sendmail ¤Ë ĽŞĽ×ĽˇĽçĽó¤ň¤Ä¤ą¤ë¤ł¤Č¤ňłĐ¤¨¤Ć¤Ş¤¤¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ě¤Ď sendmail ¤ň Ľ˘ĽÉĽěĽšĽĆĽšĽČĽâĄźĽÉ ¤ÇľŻĆ°¤ˇ¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤ŹĽĆĽšĽČ¤ˇ¤ż¤¤ĽáĄźĽëĽëĄźĽĆĽŁĽóĽ°¤ÎĽ˘ĽÉĽěĽš¤ň¸ĺ¤Ë¤Ä¤ą¤ĆĄ˘ Ăą˝ă¤Ë 3,0 ¤ČĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ şÇ¸ĺ¤ÎšÔ¤ĎĄ˘ĆâÉô¤ÇťČ¤ď¤ě¤żĽáĄźĽëĽ¨ĄźĽ¸Ľ§ĽóĽČĄ˘ ¤ł¤ÎĽ¨ĄźĽ¸Ľ§ĽóĽČ¤Ź¸Ć¤Ó˝Đ¤ľ¤ě¤żĚÜĹŞĂĎĽŰĽšĽČĄ˘¤Ş¤č¤Ó (¤â¤ˇ¤Ť¤ˇ¤ż¤éĘŃ´š¤ľ¤ě¤ż) Ľ˘ĽÉĽěĽš¤ňÉ˝ź¨¤ˇ¤Ţ¤šĄŁ ¤ł¤ÎĽâĄźĽÉ¤ň˝ŞÎť¤š¤ë¤Ë¤Ď CtrlD ¤ňĆţÎϤˇ¤Ţ¤šĄŁ &prompt.user; sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 foo@example.com canonify input: foo @ example . com ... parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . > > ^D ĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ×ŔÜÂł¤ÇĽáĄźĽë¤ňťČ¤Ś ¤˘¤Ę¤ż¤Ź¸ÇÄę IP Ľ˘ĽÉĽěĽš¤ňťý¤Ă¤Ć¤¤¤ë¤Î¤Ę¤éĄ˘ ĽÇĽŐĽŠĽëĽČ¤Ť¤é˛ż¤âĘŃšš¤š¤ëÉŹÍפϤ˘¤ę¤Ţ¤ť¤óĄŁ łä¤ę¤˘¤Ć¤é¤ě¤żĽ¤ĽóĽżĄźĽÍĽĂĽČĚž¤ňĽŰĽšĽČĚž¤ËŔßÄꤚ¤ě¤ĐĄ˘ sendmail ¤ŹťÄ¤ę¤ň¤ä¤Ă¤Ć¤Ż¤ě¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤ŹĆ°ĹŞ¤Ëłä¤ęĹö¤Ć¤é¤ě¤ż IP Ľ˘ĽÉĽěĽš¤ňťý¤Ă¤Ć¤¤¤ĆĄ˘ Ľ¤ĽóĽżĄźĽÍĽĂĽČ¤ËŔÜÂł¤š¤ë¤Î¤ËĽŔĽ¤Ľ˘ĽëĽ˘ĽĂĽ× PPP ¤ňťČÍѤˇ¤Ć¤¤¤ë¤Î¤Ę¤éĄ˘ ¤Ş¤˝¤é¤Ż ISP ¤ÎĽáĄźĽëĽľĄźĽĐ¤ËĽáĄźĽëĽÜĽĂĽŻĽš¤Ź¤˘¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ł¤Ç¤ĎĄ˘¤˘¤Ę¤ż¤Î ISP ¤ÎĽÉĽáĽ¤Ľó¤Ź example.net, ¤˘¤Ę¤ż¤ÎĽćĄźĽśĚž¤Ź user, ¤˘¤Ę¤ż¤ÎĽŢĽˇĽó¤Ď bsd.home ¤Č¸Ć¤Đ¤ě¤Ć¤¤¤ë¤â¤Î¤Č¤ˇ¤Ţ¤šĄŁ ¤Ţ¤żĄ˘ISP ¤Ť¤éĄ˘ĽáĄźĽëĽęĽěĄź¤Č¤ˇ¤Ć relay.example.net ¤ňťČÍѤˇ¤Ć¤č¤¤¤ČÄĚĂΤľ¤ě¤Ć¤¤¤ë¤Č¤ˇ¤Ţ¤šĄŁ (ĚőĂí: ISP žĺ¤Î) ĽáĄźĽëĽÜĽĂĽŻĽš¤Ť¤éĽáĄźĽë¤ňźčĆŔ¤š¤ë¤ż¤á¤Ë¤ĎĄ˘ źčĆŔĽ˘Ľ×ĽęĽąĄźĽˇĽçĽó¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ę¤¤¤Č¤¤¤ą¤Ţ¤ť¤óĄŁ fetchmail ĽćĄźĽĆĽŁĽęĽĆĽŁ¤ĎĄ˘ ¤ľ¤Ţ¤ś¤Ţ¤ĘĽ×ĽíĽČĽłĽë¤ÎÂż¤Ż¤ËÂĐąţ¤ˇ¤Ć¤¤¤ë¤Î¤Ç¤č¤¤ÁŞÂňťč¤Ç¤šĄŁ Ä̞異¤˘¤Ę¤ż¤Î ISP ¤Ď POP3 ¤ňÄ󜥤ˇ¤Ć¤¤¤Ţ¤šĄŁ ¤˘¤Ę¤ż¤Ź user-PPP ¤ňťČÍѤˇ¤Ć¤¤¤ë¤Ę¤éĄ˘źĄ¤ÎĽ¨ĽóĽČĽę¤ň /etc/ppp/ppp.linkup ¤ËÄɲ䚤뤳¤Č¤ÇĄ˘ Ľ¤ĽóĽżĄźĽÍĽĂĽČŔÜÂł¤ŹłÎΊ¤ˇ¤ż¤Č¤­¤ËźŤĆ°ĹŞ¤ËĽáĄźĽë¤ňźčĆŔ¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ MYADDR: !bg su user -c fetchmail ¤˘¤Ę¤ż¤ŹĽíĄźĽŤĽë¤Ç¤Ď¤Ę¤¤Ľ˘ĽŤĽŚĽóĽČ¤Ř¤ÎĽáĄźĽë¤ňÇŰÁ÷¤š¤ë¤ż¤á¤Ë (˛źľ­¤Î¤č¤Ś¤Ę) sendmail ¤ňťČÍѤˇ¤Ć¤¤¤ë¤Ę¤éĄ˘ Ľ¤ĽóĽżĄźĽÍĽĂĽČŔÜÂł¤ŹłÎΊ¤š¤ë¤Č¤š¤°¤ËĄ˘ sendmail ¤Ź¤˘¤Ę¤ż¤ÎĽáĄźĽëĽ­ĽĺĄź¤ň˝čÍý¤ˇ¤ĆÍߤˇ¤¤¤Č¤Ş¤˝¤é¤ŻšÍ¤¨¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ě¤ňšÔ¤Ś¤Ë¤ĎĄ˘/etc/ppp/ppp.linkup ĽŐĽĄĽ¤Ľë¤Î fetchmail ĽłĽŢĽóĽÉ¤Î¸ĺ¤ËźĄ¤ÎĽłĽŢĽóĽÉ¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ !bg su user -c "sendmail -q" bsd.home žĺ¤Ë user ¤Č¤¤¤ŚĽ˘ĽŤĽŚĽóĽČ¤ň˝ęÍ­¤ˇ¤Ć¤¤¤ë¤Č¤ˇ¤Ţ¤šĄŁ bsd.home žĺ¤Î user ¤ÎĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę¤Ë .fetchmailrc ĽŐĽĄĽ¤Ľë¤ňşîŔޤˇ¤Ţ¤šĄŁ poll example.net protocol pop3 fetchall pass MySecret ¤ł¤ÎĽŐĽĄĽ¤Ľë¤ĎĽŃĽšĽďĄźĽÉ MySecret ¤ň´Ţ¤ó¤Ç¤¤¤ë¤Î¤ÇĄ˘user ¤ň˝ü¤ŻÂž¤ÎĂŻ¤Ë¤âĆɤá¤ë¤č¤Ś¤Ë¤Ę¤Ă¤Ć¤¤¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ Ŕľ¤ˇ¤¤ from: ĽŘĽĂĽŔ¤ÇĽáĄźĽë¤ňÁ÷¤ë¤ż¤á¤Ë¤ĎĄ˘ sendmail ¤Ź user@bsd.home ¤Ç¤Ď¤Ę¤Ż user@example.net ¤ňťČÍѤš¤ë¤č¤Ś¤Ë¤ˇ¤Ę¤Ż¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ ¤Ţ¤żĄ˘ÁÇÁ᤯ĽáĄźĽëÁ÷żŽ¤ň¤š¤ë¤ż¤á¤Ë sendmail ¤Ë¤š¤Ů¤Ć¤ÎĽáĄźĽë¤ň relay.example.net ˇĐÍł¤ÇÁ÷¤ë¤č¤Ś¤Ë¤â¤ˇ¤ż¤¤¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ źĄ¤Î .mc ĽŐĽĄĽ¤Ľë¤Ç˝˝ĘŹ¤Ç¤ˇ¤ç¤ŚĄŁ VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`example.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.example.net') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl .mc ĽŐĽĄĽ¤Ľë¤ň sendmail.cf ĽŐĽĄĽ¤Ľë¤ËĘŃ´š¤š¤ëĘýËĄ¤ÎžÜşŮ¤Ë¤Ä¤¤¤Ć¤ĎÁ°¤ÎŔá¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤Ţ¤żĄ˘sendmail.cf ĽŐĽĄĽ¤Ľë¤ňĘŃšš¤ˇ¤ż¸ĺ¤ĎĄ˘ sendmail ¤ňşĆľŻĆ°¤ˇËş¤ě¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ SMTP ǧžÚ ĽáĄźĽëĽľĄźĽĐžĺ¤Ç SMTP ǧžÚ¤ňšÔ¤Ś¤ČĄ˘ Âż¤Ż¤ÎÍřą×¤Ź¤˘¤ę¤Ţ¤šĄŁ SMTP ǧžÚ¤Ď sendmail ¤Ë¤â¤Ś°ě¤Ä¤ÎĽťĽ­ĽĺĽęĽĆĽŁÁؤňÄɲ䚤뤳¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ ¤ľ¤é¤ËĄ˘ĽŰĽšĽČ¤ňŔڤꤍ¤¨¤ëĽâĽĐĽ¤ĽëĽćĄźĽś¤Ë¤Č¤Ă¤Ć¤ĎĄ˘ ¤˝¤ÎĹÔĹټᥟĽëĽŻĽéĽ¤Ľ˘ĽóĽČ¤ÎŔßÄę¤ňĘŃšš¤ť¤ş¤Č¤â Ćą¤¸ĽáĄźĽëĽľĄźĽĐ¤ňÍřÍѤǤ­¤ë¤č¤Ś¤Ë¤Ę¤ę¤Ţ¤šĄŁ ports ¤Ť¤é security/cyrus-sasl ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤Ţ¤šĄŁ ¤ł¤Î port ¤Ď security/cyrus-sasl ¤Ë¤˘¤ę¤Ţ¤šĄŁ security/cyrus-sasl ¤Ë¤Ď¤ł¤ł¤ÇťČÍѤš¤ëĘýËĄ¤ËÂФš¤ëÂż¤Ż¤ÎĽłĽóĽŃĽ¤ĽëĽŞĽ×ĽˇĽçĽó¤Ź¤˘¤ęĄ˘ łÎźÂ¤Ë ĽŞĽ×ĽˇĽçĽó¤ňÁŞÂň¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ security/cyrus-sasl ¤ňĽ¤ĽóĽšĽČĄźĽë¤ˇ¤ż¸ĺ¤Ë /usr/local/lib/sasl/Sendmail.conf ¤ňĘÔ˝¸¤ˇ¤Ć (¤â¤ˇĚľ¤ą¤ě¤ĐşîŔޤˇ¤Ć) źĄ¤ÎšÔ¤ňÄɲ䎤äݤŔ¤ľ¤¤ĄŁ pwcheck_method: passwd ¤ł¤ÎĘýËĄ¤Ď sendmail ¤Ź¤˘¤Ę¤ż¤Î FreeBSD ¤Î passwd ĽÇĄźĽżĽŮĄźĽš¤ËÂФˇ¤ĆǧžÚ¤š¤ë¤ł¤Č¤ň˛ÄÇ˝¤Ë¤ˇ¤Ţ¤šĄŁ ¤ł¤ÎĘýËĄ¤Ď SMTP ǧžÚ¤ËÉŹÍפȤʤ륢 ¤˝¤ě¤ž¤ě¤ÎĽćĄźĽś¤ËÂФš¤ë°ěÁȤοˇ¤ˇ¤¤ĽćĄźĽśĚž¤ČĽŃĽšĽďĄźĽÉ¤ň şîŔޤš¤ëşÝ¤ÎĽČĽéĽÖĽë¤ň¸ş¤é¤ˇĄ˘ ĽíĽ°Ľ¤ĽóĽŃĽšĽďĄźĽÉ¤ČĽáĄźĽëĽŃĽšĽďĄźĽÉ¤ňĆą¤¸¤Ţ¤Ţ¤Ë¤ˇ¤Ţ¤šĄŁ ¤ł¤ł¤Ç /etc/make.conf ĘÔ˝¸¤ˇĄ˘ źĄ¤ÎšÔ¤ň˛Ă¤¨¤Ţ¤šĄŁ SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl ¤ł¤ě¤é¤ÎšÔ¤Ď sendmail ¤ËÂФˇ¤ĆĄ˘ ĽłĽóĽŃĽ¤Ľë¤š¤ë¤Č¤­¤Ë cyrus-sasl ¤ČĽęĽóĽŻ¤š¤ë¤ż¤á¤ÎĹŹŔÚ¤ĘŔßÄ꼪Ľ×ĽˇĽçĽó¤ňÍż¤¨¤ë¤â¤Î¤Ç¤šĄŁ sendmail ¤ňşĆĽłĽóĽŃĽ¤Ľë¤š¤ëÁ°¤Ë cyrus-sasl ¤ŹĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ć¤¤¤ë¤ł¤Č¤ňłÎ¤Ť¤á¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ źĄ¤ÎĽłĽŢĽóĽÉ¤ňĆţÎϤˇ¤Ć sendmail ¤ňşĆĽłĽóĽŃĽ¤Ľë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ &prompt.root; cd /usr/src/usr.sbin/sendmail &prompt.root; make cleandir &prompt.root; make obj &prompt.root; make &prompt.root; make install sendmail ¤ÎĽłĽóĽŃĽ¤Ľë¤Ď /usr/src ¤ŹÂçÉý¤ËĘŃšš¤ľ¤ě¤Ć¤¤¤Ę¤Ż¤ĆĄ˘ ÉŹÍפʜŚÍ­ĽéĽ¤ĽÖĽéĽę¤ŹÍřÍѲÄÇ˝¤Ç¤˘¤ě¤Đ˛ż¤ÎĚäÂę¤âľŻ¤ł¤é¤Ę¤¤¤Ç¤ˇ¤ç¤ŚĄŁ sendmail ¤ňĽłĽóĽŃĽ¤Ľë¤ˇ¤ĆşĆĽ¤ĽóĽšĽČĄźĽë¤ˇ¤ż¸ĺ¤ĎĄ˘ /etc/mail/freebsd.mc ĽŐĽĄĽ¤Ľë (¤Ţ¤ż¤Ď¤˘¤Ę¤ż¤Ź .mc ĽŐĽĄĽ¤Ľë¤Č¤ˇ¤ĆťČÍѤˇ¤Ć¤¤¤ëĽŐĽĄĽ¤ĽëĄŁ Âż¤Ż¤Î´ÉÍýźÔ¤ĎÍŁ°ě¤ÎĚžÁ°¤ňÍѤ¤¤ë¤ż¤á¤Ë &man.hostname.1; ¤Î˝ĐÎϤň .mc ¤Č¤ˇ¤ĆťČÍѤš¤ë¤ł¤Č¤ňÁޤó¤Ç¤¤¤Ţ¤š) ¤ňĘÔ˝¸¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ źĄ¤ÎšÔ¤ň˛Ă¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl ¤ł¤ě¤é¤ÎĽŞĽ×ĽˇĽçĽó¤ĎĄ˘ĽćĄźĽś¤ňǧžÚ¤š¤ë¤ż¤á¤Ë sendmail ¤ŹÍřÍѲÄÇ˝¤Ę°Ű¤Ę¤ëĘýËĄ¤ňŔßÄꤡ¤Ţ¤šĄŁ ¤â¤ˇ pwcheck °Ęł°¤ÎĘýËĄ¤ňťČÍѤˇ¤ż¤¤¤Î¤Ę¤éĽÉĽ­ĽĺĽáĽóĽČ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ şÇ¸ĺ¤Ë /etc/mail ¤Ç &man.make.1; ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ě¤Ë¤č¤ęĄ˘żˇ¤ˇ¤¤ .mc ĽŐĽĄĽ¤Ľë¤Ť¤é freebsd.cf ¤Č¤¤¤ŚĚžÁ° (¤Ţ¤ż¤Ď¤˘¤Ę¤ż¤Î .mc ¤ËťČÍѤˇ¤Ć¤¤¤ëĚžÁ°) ¤Î .cf ĽŐĽĄĽ¤Ľë¤ŹşîŔޤľ¤ě¤Ţ¤šĄŁ ¤˝¤ě¤Ť¤é make install restart ĽłĽŢĽóĽÉ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ żˇ¤ˇ¤¤ .cf ĽŐĽĄĽ¤Ľë¤Ź sendmail.cf ¤ËĽłĽÔĄź¤ľ¤ěĄ˘ sendmail ¤ŹĹŹŔڤ˺ƾŻĆ°¤ľ¤ě¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤ł¤ÎźęÂł¤­¤Ë¤Ä¤¤¤Ć¤ÎžÜşŮ¤Ď /etc/mail/Makefile¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤š¤Ů¤Ć¤Ź¤Ś¤Ţ¤Ż¤¤¤ą¤ĐĄ˘ĽíĽ°Ľ¤ĽóžđĘó¤ňĽáĄźĽëĽŻĽéĽ¤Ľ˘ĽóĽČ¤ËĆţÎϤˇĄ˘ ĽĆĽšĽČĽáĽĂĽťĄźĽ¸¤ňÁ÷¤ë¤ł¤Č¤Ź¤Ç¤­¤ë¤Ç¤ˇ¤ç¤ŚĄŁ ¤č¤ęžÜşŮ¤ËÄ´¤Ů¤ë¤Ë¤Ď sendmail ¤Î ¤ň 13 ¤ËŔßÄꤡĄ˘ ¤š¤Ů¤Ć¤ÎĽ¨ĽéĄź¤Ë¤Ä¤¤¤Ć /var/log/maillog ¤ň¸Ť¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ ¤ł¤ÎĽľĄźĽÓĽš¤ŹĽˇĽšĽĆĽŕ¤ňľŻĆ°¤ˇ¤ż¸ĺ¤Ë¤¤¤Ä¤Ç¤âÍřÍѲÄÇ˝¤Č¤Ę¤ë¤č¤Ś¤ËĄ˘ /etc/rc.conf ¤ËźĄ¤ÎšÔ¤ňÄɲäˇ¤Ć¤Ş¤Ż¤Č¤č¤¤¤Ç¤ˇ¤ç¤ŚĄŁ sasl_pwcheck_enable="YES" sasl_pwcheck_program="/usr/local/sbin/pwcheck" ¤ł¤ě¤Ë¤č¤ęĄ˘ĽˇĽšĽĆĽŕ¤ÎľŻĆ°ťţ¤Ë SMTP_AUTH ¤ŹłÎźÂ¤Ë˝é´ü˛˝¤ľ¤ě¤ë¤Ç¤ˇ¤ç¤ŚĄŁ žÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď SMTP ǧžÚ ¤Ë´Ř¤š¤ë sendmail ¤Îʸ˝ń¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ diff --git a/nl_NL.ISO8859-1/articles/contributing/article.xml b/nl_NL.ISO8859-1/articles/contributing/article.xml index 67b0ba7291..52e07d8212 100644 --- a/nl_NL.ISO8859-1/articles/contributing/article.xml +++ b/nl_NL.ISO8859-1/articles/contributing/article.xml @@ -1,574 +1,562 @@
Bijdragen aan &os; Vertaald door René Ladan. Dit artikel beschrijft de verschillende manieren waarop een individu of organisatie kan bijdragen aan het &os; Project. Jordan Hubbard Bijgedragen door &tm-attrib.freebsd; &tm-attrib.ieee; &tm-attrib.general; $FreeBSD$ $FreeBSD$ bijdragen Dus u wilt bijdragen aan &os;? Dat is mooi! &os; bouwt op de bijdragen van zijn gebruikers om te overleven. Uw bijdragen worden niet alleen gewaardeerd, ze zijn van vitaal belang voor de aanhoudende groei van &os;. In tegenstelling tot wat sommige mensen u laten geloven, hoeft u geen doorgewinterde programmeur of een goede vriend van het coreteam van &os; te zijn opdat uw bijdragen geaccepteerd worden. Een groot en groeiend aantal internationale bijdragende vrijwilligers, van een grote variëteit aan leeftijden en technische expertisegebieden, ontwikkelen &os;. Er is altijd meer werk te doen dan dat er mensen zijn om het uit te voeren, en meer hulp wordt altijd gewaardeerd. Het &os; project is verantwoordelijk voor een complete omgeving van een besturingssysteem, en niet slechts voor alleen een kernel of een paar verspreide gereedschappen. Hierom staan op onze TODO-lijsten een groot aantal verschillende taken: van documentatie, beta-testing en -presentatie, tot de systeeminstaller en ver gespecialiseerde soorten van kernelontwikkeling. Mensen van alle niveaus op bijna alle gebieden kunnen zeer waarschijnlijk meehelpen aan het project. Commerciële entiteiten die betrokken zijn in &os;-gerelateerde ondernemingen worden ook aangemoedigd om contact met ons op te nemen. Heeft u een speciale uitbreiding nodig om uw product te laten werken? U zult zien dat wij ontvankelijk zijn voor uw verzoeken, op de voorwaarde dat ze niet te vreemdsoortig zijn. Werkt u aan een product met toegevoegde waarde? Laat het ons weten! Misschien kunnen we op sommige punten samenwerken. De wereld van vrije software heeft te maken met vele bestaande aannamen over hoe software wordt ontwikkeld, verkocht, en onderhouden, en we verzoeken u om er op zijn minst nog eens naar te kijken. Wat is er nodig De onderstaande lijst van taken en deelprojecten representeert een soort amalgaam van verschillende TODO-lijsten en verzoeken van gebruikers. Voortdurende taken voor niet-programmeurs Veel mensen die betrokken zijn bij &os; zijn geen programmeurs. Het Project omvat documentatieschrijvers, Webontwerpers, en mensen ter ondersteuning. Deze mensen hoeven alleen een tijdsinvestering en een wil om te leren bij te dragen. Lees regelmatig de FAQ en het Handboek door. Laat het ons weten als er iets slecht is uitgelegd, is verlopen of gewoon helemaal verkeerd is. Of stuur een reparatie in (Docbook is niet moeilijk te leren, maar er is geen bezwaar tegen inzendingen in ASCII). Help bij het vertalen van &os;-documentatie in uw eigen taal. Als er al documentatie in uw taal bestaat, kunt u helpen door aanvullende documenten te vertalen of te controleren dat de vertalingen up-to-date zijn. Kijk eerst op Translations FAQ in de &os; Documentation Project Primer. U bindt zich niet aan het vertalen van elk &os;-document door dit te doen — als vrijwilliger kunt u zo veel of zo weinig vertalen als u wilt. Als iemand eenmaal begint te vertalen, sluiten andere mensen zich hier bijna altijd bij aan. Als u slechts de tijd of energie heeft om één document te vertalen, vertaal dan alstublieft de installatie-instructies. Lees af en toe (of regelmatig) de &a.questions; en &ng.misc;. Het kan veel voldoening geven om uw expertise te delen en mensen helpen met het oplossen van hun problemen; soms leert u zelf misschien iets nieuws! Deze fora kunnen ook een inspiratiebron zijn voor dingen om aan te werken. Voortdurende taken voor programmeurs Voor de meeste van de hier genoemde taken is een aanzienlijke tijdsinvestering, of diepe kennis van de kernel van &os;, of beide nodig. Er zijn echter ook vele nuttige taken die geschikt zijn voor weekend hackers. Als u &os;-CURRENT draait en een goede Internetverbinding heeft, dan is er een machine current.FreeBSD.org die elke dag een volledige uitgave bouwt—probeer zo nu en dan om de nieuwste uitgave ervan te installeren en rapporteer alle fouten in het proces. Lees de &a.bugs;. Er kunnen problemen zijn waarop u constructief commentaar kunt geven of waarvoor u testbare patches kunt geven. U kunt zelfs proberen om een van de problemen zelf op te lossen. Als u bugfixes weet die succesvol op -CURRENT zijn toegepast maar nog niet na een redelijk interval naar -STABLE zijn samengevoegd (normaliter een aantal weken), stuur de committer dan een beleefde herinnering. Verplaats bijgedragen software naar src/contrib in de broncodeboom. Verzeker dat de code in src/contrib up-to-date is. Bouw de broncodeboom (of slechts een gedeelte ervan) met extra waarschuwingen aangezet en ruim de waarschuwingen op. Repareer waarschuwingen voor ports die verouderde dingen zoals gets() of malloc.h gebruiken. Als u ports heeft bijgedragen en u &os;-specifieke veranderingen moest maken, stuur dan uw patches terug naar de originele auteurs (dit maakt het gemakkelijker voor u wanneer ze de volgende versie uitbrengen). Verkrijg kopieën van formele standaarden zoals &posix;. Enkele links over deze standaarden staan op de website van het &os; C99 & POSIX Standards Conformance Project. Vergelijk het gedrag van &os; met dat wat de standaard voorschrijft. Als het gedrag verschilt, met name in subtiele of obscure gedeelten van de specificatie, stuur er dan een PR over op. Indien mogelijk, zoek uit hoe het te repareren en voeg een patch bij het PR. Als u meent dat de standaard verkeerd is, vraag dan het standaardorgaan om de vraag te overwegen. Suggereer verdere taken voor deze lijst! Spit de PR-database door probleemrapportdatabase De &os; PR-lijst laat alle huidige actieve probleemrapportages en verzoeken voor verrijkingen zien die door gebruikers van &os; zijn ingestuurd. De PR-database bevat zowel taken voor programmeurs als voor niet-programmeurs. Bekijk de open PR's, en kijk of iets uw interesse wekt. Sommige van deze kunnen heel simpele taken zijn waarvoor gewoon een extra paar ogen nodig is om te bevestigen dat de reparatie in de PR een goede is. Andere kunnen veel complexer zijn, of bevatten in het geheel geen reparatie. Begin met de PR's die nog niet aan iemand anders zijn toegekend. Als een PR aan iemand anders is toegekend, maar het eruit ziet als iets wat u aankunt, stuur dan een email naar de persoon waaraan het is toegekend en vraag of u eraan kunt werken —ze kunnen al een patch hebben die klaar is om getest te worden, of verdere ideeën hebben die u met ze kan bespreken. Kies een van de punten van de <quote>Ideeën</quote> pagina De &os;-lijst van projecten en ideeën voor vrijwilligers is ook beschikbaar voor mensen die aan het &os;-project willen bijdragen. Deze lijst wordt regelmatig bijgewerkt en bevat punten voor zowel programmeurs als niet-programmeurs met informatie over elk project. Hoe bij te dragen Bijdragen aan het systeem vallen over het algemeen in één of meer van de volgende 5 categoriën: Foutrapportages en algemeen commentaar Een idee of suggestie van algemene technische aard dient naar &a.hackers; gemaild te worden. Evenzo kunnen mensen die in dit soort dingen geďnteresseerd zijn (en een tolerantie voor grote hoeveelheden mail hebben!) zich abonneren op de &a.hackers;. Zie Het &os; Handboek voor meer informatie over deze en andere mailinglijsten. Als u een bug vindt of een specifieke verandering opstuurt, gebruik dan alstublieft het programma &man.send-pr.1; of het webgebaseerde equivalent om het te rapporteren. Probeer om elk veld van het bugrapport in te vullen. Voeg patches direct bij het rapport tenzij ze 65kB overschrijden. Als de patch geschikt is om op de broncodeboom te worden toegepast, vermeld dan [PATCH] in het overzicht van het rapport. Wanneer u patches bijvoegt, gebruik dan geen knippen-en-plakken omdat knippen-en-plakken tabs in spaties omzet en de patches onbruikbaar maakt. Overweeg wanneer patches veel groter zijn dan 20 kB om ze te comprimeren (bijvoorbeeld met &man.gzip.1; of &man.bzip2.1;) en &man.uuencode.1; te gebruiken om hun gecomprimeerde vorm in uw probleemrapport op te nemen. Na het opsturen van een rapport dient u een bevestiging met daarbij een volgnummer te krijgen. Bewaar dit volgnummer zodat u ons op de hoogte kunt houden met details over het probleem door mail te sturen naar &a.bugfollowup;. Gebruik het nummer als het berichtonderwerp, bijvoorbeeld "Re: kern/3377". Aanvullende informatie voor elk foutrapport dient op deze manier opgestuurd te worden. Als u geen bevestiging ontvangt binnen een redelijke tijd (3 dagen tot een week, afhankelijk van uw emailverbinding) of als u, om enige reden, het commando &man.send-pr.1; niet kunt gebruiken, dan kunt u iemand vragen om het voor u op te sturen door mail te sturen naar de &a.bugs;. Zie ook dit artikel over het schrijven van goede probleemrapporten. Veranderingen aan de documentatie documentatie-inzendingen Veranderingen aan de documentatie worden overzien door de &a.doc;. Bekijk de &os; Documentation Primer voor volledige instructies. Stuur bijdragen en veranderingen (zelfs kleine zijn welkom!) door &man.send-pr.1; te gebruiken zoals beschreven is in Foutrapportages en algemeen commentaar. Veranderingen aan bestaande broncode &os;-CURRENT Een toevoeging of verandering aan de bestaande broncode is een iets lastigere zaak en hangt in grote mate af van hoe ver u achterloopt met de huidige toestand van &os;-ontwikkelingen. Er is een speciale doorgaande uitgave van &os; die bekend staat als &os;-CURRENT die op verscheidene manieren beschikbaar wordt gesteld voor het gemak van ontwikkelaars die actief aan het systeem werken. Zie Het &os; Handboek voor meer informatie over het verkrijgen en gebruiken van &os;-CURRENT. Het werken met oudere broncode betekent helaas dat uw veranderingen soms te verouderd of te ver afgedwaald zijn om eenvoudig in &os; gerëintegreerd te worden. De kansen hierop kunnen enigszins geminimaliseerd worden door een abonnement te nemen op de &a.announce; en de &a.current; lijsten, waar discussies over de huidige toestand van het systeem plaatsvinden. Aannemende dat u in staat bent om redelijk recente broncode veilig te stellen om uw veranderingen op te baseren, is de volgende stap het produceren van een verzameling diffs om naar de onderhoudsmensen van &os; te sturen. Dit wordt gedaan met het commando &man.diff.1;. Het geprefereerde &man.diff.1;-formaat voor het opsturen van patches is het verenigde uitvoerformaat gegenereerd door diff -u. diff &prompt.user; diff -u oudbestand nieuwbestand of &prompt.user; diff -u -r -N oudemap nieuwemap zouden een verzameling van verenigde diffs genereren voor het gegeven bronbestand of maphiërarchie. Zie &man.diff.1; voor meer details. Als u eenmaal een verzameling aan diffs heeft (welke u kunt testen met het commando &man.patch.1;), dient u ze op te sturen voor opname in &os;. Gebruik het programma &man.send-pr.1; zoals beschreven in Foutrapportages en algemeen commentaar. Stuur de diffs niet alleen naar de &a.hackers; op omdat ze dan verloren raken! We stellen uw toezending erg op prijs (dit is een vrijwilligersproject!); omdat we het druk hebben kan het zijn dat we het niet direct kunnen behandelen, maar het blijft in de PR-database totdat we het doen. Geef uw toezending aan door [PATCH] in het overzicht van het rapport op te nemen. uuencode Als u het geschikt acht (bijvoorbeeld als u bestanden toegevoegd, verwijderd, of hernoemd heeft), bundelt u uw veranderingen in een tar-bestand en draait u het programma &man.uuencode.1; erop. Archieven die met &man.shar.1; zijn aangemaakt zijn ook welkom. Als uw verandering mogelijk gevoelig van aard is, bijvoorbeeld als u onzeker bent over copyright-zaken die de verdere distributie ervan dicteren, dan dient u het direct naar &a.core; te sturen in plaats van het met &man.send-pr.1; op te sturen. Het &a.core; bereikt een veel kleinere groep mensen die veel dagelijks werk op &os; doen. Merk op dat deze groep het ook erg druk heeft, daarom dient u alleen mail naar hen te sturen als dit echt noodzakelijk is. Bekijk alstublieft &man.intro.9; en &man.style.9; voor wat informatie over de codeerstijl. We zouden het op prijs stellen als u op zijn minst op de hoogte bent van deze informatie voordat u code opstuurt. Nieuwe code of grote pakketten met toegevoegde waarde In het geval van een significante bijdrage van een grote bijdrage aan werk, of van een belangrijke nieuwe mogelijkheid aan &os;, is het bijna altijd nodig om de veranderingen als uuencoded tar-bestanden te versturen of ze naar een web- of FTP-site up te loaden zodat andere mensen ze kunnen benaderen. Als u geen toegang heeft tot een web- of FTP-site, vraag dan een geschikte &os;-mailinglijst om iemand de veranderingen voor u te laten hosten. Bij het werken met grote hoeveelheden code komt het gevoelige onderwerp van copyright ook altijd naar voren. Acceptabele copyrights voor code voor opname in &os; zijn: - BSD-copyright - - Het BSD-copyright. Dit copyright wordt het meeste + Het BSD-copyrightBSD-copyright. Dit copyright wordt het meeste verkozen wegens zijn natuur van geen voorwaarden en de algemene aantrekkelijkheid voor commerciële ondernemingen. Ver van het ontmoedigen van dit soort commercieel gebruik, moedigt het &os; Project zulke participatie door commerciële interesses actief aan die uiteindelijk geneigd kunnen zijn om zelf iets in &os; te investeren. - - GPL - - GNU General Public License - - - GNU General Public License - - De GNU General Public License, of GPL. + De GNU General Public LicenseGNU General Public License, of GPLGPLGNU General Public License. Deze licentie is niet zo populair bij ons wegens de extra hoeveelheid moeite die gevraagd wordt van iedereen die de code voor commerciële doeleinden gebruikt, maar vanwege de grote hoeveelheid aan ge-GPL-de code die we momenteel nodig hebben (compiler, assembler, tekstopmaker, enz.) zou het dom zijn om aanvullende bijdragen onder deze licentie te verwerpen. Code onder de GPL gaat ook naar een ander deel van de boom, namelijk /sys/gnu of /usr/src/gnu, en is daardoor eenvoudig te herkennen voor iedereen voor wie de GPL problemen geeft. Bijdragen die onder een ander soort copyright vallen moeten zorgvuldig worden herzien voordat hun opname in &os; wordt overwogen. Bijdragen waarvoor nogal beperkende commerciële copyrights gelden worden over het algemeen verworpen, alhoewel de auteurs altijd worden aangemoedigd om zulke veranderingen via hun eigen kanalen beschikbaar te maken. Om een copyright in BSD-stijl op uw werk te plaatsen, dient u de volgende tekst aan het uiterste begin van elk broncodebestand te plaatsen dat u wilt beschermen, en daarbij de tekst tussen de %% door de juiste informatie te vervangen: Copyright (c) %%juiste_jaren_hier%% %%uw_naam_hier%%, %%uw_staat%% %%uw_postcode%%. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY %%uw_naam_hier%% ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL %%uw_naam_hier%% BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. $Id$ Voor uw gemak staat een kopie van deze tekst in /usr/share/examples/etc/bsd-style-copyright. Geld, hardware, of Internettoegang We accepteren altijd graag donaties om het &os; Project verder te verspreiden en in een vrijwilligersonderneming zoals het onze kan een klein beetje een groot verschil maken! Hardwaredonaties zijn ook erg belangrijk om onze lijst van ondersteunde randapparatuur uit te breiden aangezien ons het over het algemeen aan de middelen ontbreekt om zelf zulke dingen te kopen. <anchor id="donations"/>Geld doneren De &os; Foundation is een non-profit, belastinguitgesloten stichting die opgericht is om de doelen van het &os; Project verder te verspreiden. Als een 501(c)3-entiteit is de Foundation over het algemeen uitgesloten van inkomstenbelasting van de overheid van de Verenigde Staten alsook van inkomstenbelasting van de staat Colorado. Donaties aan een entiteit die van belasting is uitgesloten zijn vaak aftrekbaar van het belastbaar overheidsinkomen. Donaties kunnen als check verstuurd worden aan:
The FreeBSD Foundation P.O. Box 20247 Boulder, CO 80308 USA
De &os; Foundation is nu in staat om donaties via het web met PayPal te ontvangen. Om een donatie te maken bezoekt u de website van de Foundation. Meer informatie over de &os; Foundation kan gevonden worden in The FreeBSD Foundation -- an Introduction. Om de Foundation per email te bereiken, schrijft u naar bod@FreeBSDFoundation.org.
Hardware doneren - donaties - Het &os; Project accepteert graag hardwaredonaties die het goed kan gebruiken. Als u geďnteresseerd bent in het - doneren van hardware, neem dan contact op met het donaties van hardware, neem dan contact op met het Donations Liaison Office.
diff --git a/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.xml b/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.xml index c6a78bcbe8..73583e6de1 100644 --- a/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.xml +++ b/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.xml @@ -1,3359 +1,3323 @@ Jim Mock Geherstructureerd, gereorganiseerd en delen bijgewerkt door Jordan Hubbard Origineel door Poul-Henning Kamp John Polstra Nik Clayton Remko Lodder Vertaald door Siebrand Mazeland René Ladan &os; updaten en upgraden Overzicht &os; wordt ontwikkeld tussen de verschillende versies in. Sommige mensen prefereren om de officieel uitgegeven versies te draaien, terwijl anderen gesynchroniseerd willen blijven met de nieuwste ontwikkelingen. Zelfs officiële uitgaven echter worden vaak bijgewerkt met veiligheids- en andere kritieke reparaties. Ongeacht de gebruikte versie biedt &os; alle noodzakelijke gereedschappen om uw systeem bijgewerkt te houden, en maakt &os; het upgraden tussen versies ook gemakkelijk. Dit hoofdstuk helpt om een keuze te maken of het wenselijk is het ontwikkelsysteem te volgen of één van de uitgegeven versies. De basisgereedschappen om uw systeem bijgewerkt te houden worden ook gepresenteerd. Na het lezen van dit hoofdstuk weet de lezer: Welke gereedschappen gebruikt kunnen worden om het systeem en de Portscollectie te updaten. Hoe een systeem bijgewerkt kan worden met freebsd-update, CVSup, CVS of CTM; Hoe de toestand van een geďnstalleerd systeem met een bekende maagdelijke kopie te vergelijken. Hoe uw documentatie bijgewerkt te houden met CVSup of documentatie-ports. De verschillen tussen de ontwikkeltakken &os.stable; en &os.current;; Hoe een basissysteem opnieuw te compileren en te herinstalleren met make buildworld, enzovoort. Veronderstelde criteria: Een juist ingesteld netwerk (); Weten hoe software van derden te installeren (). Door dit hoofdstuk heen wordt cvsup gebruikt om de broncode van &os; te verkrijgen en bij te werken. Om het te gebruiken, dient u de port of het pakket voor net/cvsup te installeren (als u niet de grafische cvsup-cliënt wilt installeren, kunt u de port net/cvsup-without-gui installeren. U kunt ervoor kiezen om dit te vervangen door &man.csup.1; welke onderdeel is van het basissysteem. Tom Rhodes Geschreven door Colin Percival Gebaseerd op notities aangeleverd door &os; Update updaten en upgraden freebsd-update updating-upgrading Het toepassen van beveiligingspatches is een belangrijk onderdeel van het beheren van computersoftware, met name het besturingssysteem. Dit was voor een lange tijd geen gemakkelijk proces op &os;. Er moesten patches op de broncode worden toegepast, de code moest herbouwd worden tot binairen, en daarna moesten de binairen worden geherinstalleerd. Dit is niet langer het geval aangezien &os; nu een gereedschap heeft dat eenvoudigweg freebsd-update heet. Dit gereedschap biedt twee gescheiden functies. Ten eerste voorziet het in het toepassen van binaire beveiligings- en errata-updates op het basissysteem van &os; zonder de eis om te bouwen en te installeren. Ten tweede ondersteunt het gereedschap kleine en grote uitgave-upgrades. Binaire updates zijn beschikbaar voor alle architecturen en uitgaveaankondigingen dienen gelezen te worden aangezien deze belangrijke informatie over de gewenste uitgave kunnen bevatten. De aankondigingen kunnen op de volgende koppelin bekeken worden: . Als er een crontab bestaat die de mogelijkheden van freebsd-update gebruikt, moet het uitgeschakeld worden voordat aan de volgende operatie wordt begonnen. Het configuratiebestand Sommige gebruikers willen het standaard configuratiebestand optimaliseren, waardoor het proces beter gecontroleerd kan worden. De opties zijn goed gedocumenteerd, maar voor de volgenden is wat extra uitleg nodig: # Componenten van het basissysteem die bijgewerkt moeten blijven Components src world kernel Deze parameter bepaalt welke delen van &os; bijgewerkt blijven. Standaard wordt de broncode bijgewerkt, het hele basissysteem, en de kernel. Dezelfde componenten als tijdens de installatie zijn beschikbaar, het toevoegen van bijvoorbeeld world/games zou de spelpatches toepassen. Het gebruik van src/bin zou de broncode in src/bin bijgewerkt houden. Het beste kan dit op de standaardwaarde blijven aangezien het veranderen hiervan om specifieke items te bevatten de gebruiker dwingt om alle items die bijgewerkt dienen te worden op te noemen. Dit kan rampzalige gevolgen hebben aangezien de broncode en de binairen asynchroon kunnen raken. # Paden die beginnen met iets wat overeenkomt met een regel in een IgnorePaths # statement zullen genegeerd worden. IgnorePaths Voeg paden, zoals /bin of /sbin toe om deze specifieke mappen ongemoeid te laten tijdens het updateproces. Deze optie kan gebruikt worden om te voorkomen dat freebsd-update lokale wijzigingen overschrijft. # Paden die beginnen met iets wat overeenkomt met een regel in een UpdateIfUnmodified # statement zullen alleen worden bijgewerkt als de inhoud van het bestand niet is # gewijzigd door de gebruiker (tenzij veranderingen zijn samengevoegd; zie beneden). UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile Werk configuratiebestanden in de aangegeven mappen alleen bij als ze niet zijn gewijzigd. Alle veranderingen die door de gebruiker zijn gemaakt maken het automatisch bijwerken van deze bestanden ongeldig. Er is een andere optie, KeepModifiedMetadata, die freebsd-update instrueert om de veranderingen tijdens het samenvoegen te bewaren. # Wanneer naar een nieuwe uitgave van &os; wordt ge-upgraded, worden lokale veranderingen van bestanden die overeenkomen met MergeChanges # samengevoegd in de versie van de nieuwe uitgave. MergeChanges /etc/ /var/named/etc/ Lijst van mappen met instellingenbestanden waar freebsd-update moet proberen om in samen te voegen. Het proces van bestanden samenvoegen is een serie van &man.diff.1;-patches die ongeveer gelijk is aan &man.mergemaster.8; met minder opties, de samenvoegingen worden ofwel geaccepteerd, of openen een tekstverwerker, of zorgen ervoor dat freebsd-update afbreekt. Maak in geval van twijfel een reservekopie van /etc en accepteer de samenvoegingen. In staat meer informatie over het commando mergemaster. # Map waarin de gedownloade updates en tijdelijke bestanden # die door een &os; Update worden gebruikt worden opgeslagen. # WorkDir /var/db/freebsd-update Dit is de map waarin alle patches en tijdelijke bestanden worden geplaatst. In het geval dat de gebruiker een versie-upgrade uitvoert, dient deze locatie tenminste een gigabyte aan vrije schijfruimte te hebben. # Wanneer tussen uitgaven wordt ge-upgraded, dient de lijst van Componenten dan # strikt gelezen te worden (StrictComponents yes) of slechts als een lijst van componenten # die geďnstalleerd *kunnen* worden en waarvan &os; Update uit dient te zoeken # welke daadwerkelijk zijn geďnstalleerd en die te upgraden (StrictComponents no)? # StrictComponents no Wanneer ingesteld op yes, zal freebsd-update aannemen dat de lijst Components compleet is en zal het niet proberen om wijzigingen buiten de lijst te maken. Effectief zal freebsd-update proberen om elk bestand bij te werken dat op de lijst Components staat. Beveiligingspatches Beveiligingspatches staan op een verre machine en kunnen met het volgende commando gedownload en geďnstalleerd worden: &prompt.root; freebsd-update fetch &prompt.root; freebsd-update install Als er kernelpatches zijn toegepast moet het systeem opnieuw opgestart worden. Als alles goed is gegaan dient het systeem gepatcht te zijn en kan freebsd-update als een nachtelijke &man.cron.8;-taak gedraaid worden. Een regel in /etc/crontab zou genoeg moeten zijn om deze taak te volbrengen: @daily root freebsd-update cron Deze regel verklaart dat eenmaal per dag het commando freebsd-update gedraaid zal worden. Op deze manier, door het argument te gebruiken, zal het gereedschap freebsd-update alleen kijken of er updates bestaan. Als er patches bestaan, zullen ze automatisch worden gedownload naar de plaatselijke schijf maar niet worden toegepast. Er zal een email aan de gebruiker root worden verstuurd zodat ze handmatig geďnstalleerd kunnen worden. Als er iets misging, heeft freebsd-update de mogelijkheid om de laatste verzamelingen veranderingen terug te draaien met het volgende commando: &prompt.root; freebsd-update rollback Eenmaal voltooid, dient het systeem herstart te worden als de kernel of enige kernelmodule is gewijzigd. Dit stelt &os; in staat om de nieuwe binairen in het geheugen te laden. Het gereedschap freebsd-update kan alleen de kernel GENERIC automatisch bijwerken. Als een eigen kernel wordt gebruikt, moet het herbouwd en geherinstalleerd worden nadat freebsd-update klaar is met het installeren de rest van de updates. freebsd-update zal echter de kernel GENERIC in /boot/GENERIC detecteren en bijwerken (als het bestaat), zelfs als het niet de huidige (draaiende) kernel van het systeem is. Het is een goed idee om altijd een kopie van de kernel GENERIC in /boot/GENERIC te bewaren. Het kan van pas komen bij het vaststellen van een keur aan problemen, en bij het uitvoeren van versie-upgrades met freebsd-update zoals beschreven in . Tenzij de standaardconfiguratie in /etc/freebsd-update.conf is gewijzigd, zal freebsd-update de bijgewerkte kernelbronnen samen met de rest van de updates installeren. Het herbouwen en herinstalleren van uw nieuwe eigen kernel kan daarna op de gebruikelijke manier gedaan worden. De updates die via freebsd-update verspreid worden hebben niet altijd betrekking op de kernel. Het is niet nodig om uw eigen kernel te herbouwen als de kernelbronnen niet zijn aangepast door het uitvoeren van freebsd-update install. freebsd-update install zal echter altijd het bestand /usr/src/sys/conf/newvers.sh bijwerken. Het huidige patchniveau (zoals aangegeven door het -p-nummer gerapporteerd door uname -r) wordt uit dit bestand gehaald. Het herbouwen van uw eigen kernel, zelfs als er niets veranderd is, stelt &man.uname.1; in staat om het huidige patchniveau van het systeem accuraat te rapporteren. Dit is in het bijzonder behulpzaam wanneer meerdere systemen onderhouden worden, aangezien hierdoor snel de geďnstalleerde updates op elk ervan kunnen worden nagegaan. Grote en kleine upgrades Dit proces ruimt oude objectbestanden en bibliotheken op waardoor de meeste applicaties van derde partijen kapot gaan. Het wordt aangeraden dat alle geďnstalleerde poorten ofwel verwijderd en geherinstalleerd worden of later ge-upgraded worden met het hulpmiddel ports-mgmt/portupgrade. De meeste gebruikers zullen willen proefdraaien met het volgende commando: &prompt.root; portupgrade -af Dit zorgt ervoor dat alles juist wordt geherinstalleerd. Merk op dat het instellen van de omgevingsvariabele BATCH op yes het antwoord yes zal geven op alle prompts tijdens dit proces, waardoor het niet nodig is om handmatig in het bouwproces in te grijpen. Als een eigen kernel wordt gebruikt, is het upgradeproces iets ingewikkelder. Een kopie van de kernel GENERIC is nodig en dient in /boot/GENERIC geplaatst te worden. Als de kernel GENERIC niet reeds op het systeem aanwezig is, moet het met één van de volgende methoden verkregen worden: Als er slechts eenmaal een eigen kernel is gebouwd, dan is de kernel in /boot/kernel.old eigenlijk de GENERIC. Hernoem deze map naar /boot/GENERIC. Aannemende dat fysieke toegang tot de machine mogelijk is, kan een kopie van de kernel GENERIC van het CD-ROM-medium worden geďnstalleerd. Laad de installatieschijf en geef de volgende commando's: &prompt.root; mount /cdrom &prompt.root; cd /cdrom/X.Y-RELEASE/kernels &prompt.root; ./install.sh GENERIC Vervang X.Y-RELEASE met de versie van de uitgave die u gebruikt. De kernel GENERIC zal standaard in /boot/GENERIC worden geďnstalleerd. Als al het bovenstaande niet lukt, kan de kernel GENERIC herbouwd en geherinstalleerd worden vanaf de broncode: &prompt.root; cd /usr/src &prompt.root; env DESTDIR=/boot/GENERIC make kernel &prompt.root; mv /boot/GENERIC/boot/kernel/* /boot/GENERIC &prompt.root; rm -rf /boot/GENERIC/boot Om deze kernel door freebsd-update als GENERIC te laten herkennen, mag het configuratiebestand voor GENERIC niet op enige wijze veranderd zijn. Het is ook aan te raden dat het zonder andere speciale opties wordt gebouwd (bij voorkeur met een leeg /etc/make.conf). Opnieuw opstarten naar de kernel GENERIC is in dit stadium niet nodig. Updates van grote en kleine versies kunnen worden uitgevoerd door een uitgaveversie als doel aan freebsd-update op te geven, het volgende commando zal bijvoorbeeld updaten naar &os; 8.1: &prompt.root; freebsd-update -r 8.1-RELEASE upgrade Nadat het commando is ontvangen, zal freebsd-update het instellingenbestand en het huidige systeem evalueren in een poging om de benodigde informatie te verzamelen om het systeem te updaten. Een lijst op het scherm zal aangeven welke componenten zijn gedetecteerd en welke niet. Bijvoorbeeld: Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching metadata signature for 8.0-RELEASE from update1.FreeBSD.org... done. Fetching metadata index... done. Inspecting system... done. The following components of FreeBSD seem to be installed: kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin world/base world/info world/lib32 world/manpages The following components of FreeBSD do not seem to be installed: kernel/generic world/catpages world/dict world/doc world/games world/proflibs Does this look reasonable (y/n)? y Nu zal freebsd-update proberen om alle bestanden die nodig zijn voor de upgrade te downloaden. In sommige gevallen kan de gebruiker worden gevraagd wat te installeren of hoe verder te gaan. Wanneer een eigen kernel wordt gebruikt, zal de bovenstaande stap een waarschuwing geven die lijkt op de volgende: WARNING: This system is running a "MIJNKERNEL" kernel, which is not a kernel configuration distributed as part of FreeBSD 8.0-RELEASE. This kernel will not be updated: you MUST update the kernel manually before running "/usr/sbin/freebsd-update install" Deze waarschuwing kan op dit moment veilig worden genegeerd. De bijgewerkte kernel GENERIC zal als tussenliggende stap in het upgradeproces worden gebruikt. Nadat alle patches zijn gedownload naar het plaatselijke systeem zullen ze worden toegepast. Dit proces kan afhankelijk van de snelheid en werklast van de machine even duren. Hierna zullen instellingenbestanden worden samengevoegd — voor dit gedeelte van het proces is enige tussenkomst van de gebruiker nodig aangezien een bestand kan worden samengevoegd of omdat er een tekstverwerker op het scherm kan verschijnen om het bestand handmatig samen te voegen. Het resultaat van elke succesvolle samenvoeging zal aan de gebruiker worden getoond naarmate het proces verder gaat. Een mislukte of genegeerde samenvoegpoging zal het proces afbreken. Het is mogelijk voor gebruikers om een reservekopie van /etc te maken en belangrijke bestanden, zoals master.passwd of group, later samen te voegen. Het systeem is nog niet veranderd, al het patchen en samenvoegen gebeurt in een andere map. Wanneer alle patches succesvol zijn toegepast, alle instellingenbestanden zijn samengevoegd en het erop lijkt dat het proces soepel verloopt, dienen de veranderingen verzegeld te worden door de gebruiker. Als dit proces eenmaal voltooid is, kan de upgrade aan de schijf toevertrouwd worden met het volgende commando. &prompt.root; freebsd-update install De kernel en kernelmodules zullen als eerste gepatcht worden. Nu moet de machine opnieuw opgestart worden. Als het systeem een eigen kernel draaide, gebruik dan het commando &man.nextboot.8; om de kernel voor de volgende keer dat opgestart wordt in te stellen op /boot/GENERIC (welke is bijgewerkt): &prompt.root; nextboot -k GENERIC Voordat er met de kernel GENERIC wordt opgestart, dient te worden gecontroleerd dat het alle stuurprogramma's bevat om uw systeem juist te laten opstarten (en met het netwerk te verbinden, als de machine die bijgewerkt wordt van afstand wordt benaderd). In het bijzonder, als de vorige kernel die draaide ingebouwde functionaliteit bevatte die normaalgesproken door kernelmodules wordt geleverd, zorg er dan voor dat deze modules tijdelijk in de kernel GENERIC worden geladen door de faciliteit /boot/loader.conf te gebruiken. U kunt er ook voor kiezen om niet-essentiële diensten, schijf- en netwerkkoppelingen, enzovoorts uit te zetten totdat het upgradeproces voltooid is. De machine dient nu te worden herstart met de bijgewerkte kernel: &prompt.root; shutdown -r now Als het systeem weer actief is, moet freebsd-update nogmaals gestart worden. De toestand van het proces is opgeslagen en dus zal freebsd-update niet vooraan beginnen, maar zal het alle oude gedeelde bibliotheken en objectbestanden verwijderen. Geef het volgende commando om verder te gaan op dit punt: &prompt.root; freebsd-update install Afhankelijk van het feit of er versienummers van bibliotheken zijn opgehoogd, kunnen er slechts twee in plaats van drie installatiefasen zijn. Alle software van derde partijen dient nu opnieuw gebouwd en geďnstalleerd te worden. Dit is nodig omdat geďnstalleerde software van bibliotheken afhankelijk kan zijn die tijdens het upgradeproces zijn verwijderd. Het commando ports-mgmt/portupgrade kan gebruikt worden om dit proces te automatiseren. Dit proces kan met de volgende commando's gestart worden: &prompt.root; portupgrade -f ruby &prompt.root; rm /var/db/pkg/pkgdb.db &prompt.root; portupgrade -f ruby18-bdb &prompt.root; rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db &prompt.root; portupgrade -af Voltooi, nadat dit voltooid is, het upgradeproces met een laatste aanroep naar freebsd-update. Geef het volgende commando om alle losse eindjes in het upgradeproces samen te knopen: &prompt.root; freebsd-update install Als de kernel GENERIC tijdelijk werd gebruikt, is dit het moment om een nieuwe eigen kernel op de gebruikelijke manier te bouwen en installeren. Start de machine opnieuw op in de nieuwe &os;-versie. Het proces is voltooid. Het vergelijken van systeemtoestanden Het gereedschap freebsd-update kan gebruikt worden om de toestand van de geďnstalleerde versie van &os; met een bekende goede kopie te vergelijken. Deze optie evalueert de huidige versie van systeemgereedschappen, bibliotheken, en instellingenbestanden. Geef het volgende commando om met de vergelijking te beginnen: &prompt.root; freebsd-update IDS >> uitvoerbestand.ids Hoewel de commandonaam IDS is, is het in geen geval een vervanging voor een indringdetectiesysteem zoals security/snort. Aangezien freebsd-update gegevens op schijf opslaat, is de mogelijkheid om te knoeien duidelijk. Hoewel deze mogelijkheid verminderd kan worden door de instelling kern.securelevel te gebruiken en de gegevens van freebsd-update op een bestandssysteem dat alleen gelezen kan worden op te slaan wanneer deze niet gebruikt worden, zou een betere oplossing zijn om het systeem met een veilige schijf te vergelijken, zoals een DVD of een veilig opgeslagen externe USB-schijf. Het systeem zal nu geďnspecteerd worden, en er zal een lijst van hun &man.sha256.1;-hashwaarden, zowel de bekende waarde in de uitgave en de huidige geďnstalleerde waarde, afgebeeld worden. Hierom wordt de uitvoer naar het bestand uitvoerbestand.ids gezonden. Het scrollt te snel voorbij om het met het oog te vergelijken, en het vult al snel de gehele consolebuffer op. Deze regels zijn ook extreem lang, maar het uitvoerformaat kan vrij eenvoudig geparsed worden. Geef, om bijvoorbeeld een lijst van alle bestanden te krijgen die verschillen van die in de uitgave, het volgende commando: &prompt.root; cat uitvoerbestand.ids | awk '{ print $1 }' | more /etc/master.passwd /etc/motd /etc/passwd /etc/pf.conf Deze uitvoer is afgekapt, er bestaan veel meer bestanden. Sommige van deze bestanden hebben natuurlijke veranderingen, het /etc/passwd is gewijzigd omdat er gebruikers aan het systeem zijn toegevoegd. In sommige gevallen kunnen er andere bestanden zijn, zoals kernelmodules, die verschillen aangezien freebsd-update ze ge-updated kan hebben. Voeg, om bepaalde bestanden of mappen uit te sluiten, deze toe aan de optie IDSIgnorePaths in /etc/freebsd-update.conf. Dit systeem kan gebruikt worden als deel van een uitgebreide upgrademethode, afgezien van de eerder besproken versie. Tom Rhodes Geschreven door Colin Percival Gebaseerd op notities geleverd door Portsnap: een updategereedschap voor de Portscollectie updaten en upgraden Portsnap updaten en upgraden Het basissysteem van &os; bevat ook een gereedschap om de Portscollectie bij te werken: het hulpmiddel &man.portsnap.8;. Wanneer het wordt uitgevoerd, zal het een verbinding maken met een verre site, de veilige sleutel controleren, en een nieuwe kopie van de Portscollectie downloaden. De sleutel wordt gebruikt om de integriteit van alle gedownloade bestanden te controleren, om er zeker van te zijn dat ze niet tijdens het downloaden zijn gewijzigd. Geef het volgende commando om de nieuwste versie van de bestanden van de Portscollectie te downloaden: &prompt.root; portsnap fetch Looking up portsnap.FreeBSD.org mirrors... 9 mirrors found. Fetching snapshot tag from geodns-1.portsnap.freebsd.org... done. Fetching snapshot metadata... done. Updating from Tue May 22 02:12:15 CEST 2012 to Wed May 23 16:28:31 CEST 2012. Fetching 3 metadata patches.. done. Applying metadata patches... done. Fetching 3 metadata files... done. Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done. Applying patches... done. Fetching 133 new ports or files... done. Dit voorbeeld laat zien dat &man.portsnap.8; verscheidene patches heeft gevonden en deze met de huidige portsgegevens heeft gecontroleerd. Het geeft ook aan dat het gereedschap eerder is gedraaid, als het voor de eerste keer was gedraaid, had het simpelweg de collectie gedownload. Wanneer &man.portsnap.8; succesvol een fetch-operatie afrondt, bestaan de Portscollectie en de vervolgpatches die de verificatie doorstaan hebben op het plaatselijke systeem. Gebruik de eerste keer dat portsnap wordt uitgevoerd extract om de gedownloade bestanden te installeren: &prompt.root; portsnap extract /usr/ports/.cvsignore /usr/ports/CHANGES /usr/ports/COPYRIGHT /usr/ports/GIDs /usr/ports/KNOBS /usr/ports/LEGAL /usr/ports/MOVED /usr/ports/Makefile /usr/ports/Mk/bsd.apache.mk /usr/ports/Mk/bsd.autotools.mk /usr/ports/Mk/bsd.cmake.mk ... Om een reeds geďnstalleerde Ports Collectie te updaten kan er gebruik worden gemaakt van het commando portsnap update: &prompt.root; portsnap update Het proces is nu compleet, en applicaties kunnen met de bijgewerkte Portscollectie worden geďnstalleerd of worden bijgewerkt. De bewerkingen fetch en extract of update kunnen achter elkaar uitgevoerd worden, zoals het volgende voorbeeld laat zien: &prompt.root; portsnap fetch update Dit commando zal de laatste versie van de Ports Collectie downloaden en de lokale versie bijwerken in de /usr/ports. De documentatie bijwerken updaten en upgraden documentatie updaten en upgraden Naast het basissysteem en de Portscollectie is documentatie een integraal onderdeel van het besturingssysteem &os;. Hoewel een actuele versie van de &os;-documentatie altijd beschikbaar is op de &os; website, hebben sommige gebruikers een langzame of helemaal geen permanente netwerkverbinding. Gelukkig zijn er verschillende manieren om de documentatie die bij elke uitgave wordt geleverd bij te werken door een lokale kopie van de nieuwste &os;-documentatie bij te houden. <application>Subversion</application> gebruiken om de documentatie bij te werken De bronnen van de &os;-documentatie kunnen met Subversion worden bijgewerkt. Deze sectie beschrijft: Hoe de documentatiegereedschappen, de gereedschappen die nodig zijn om de &os;-documentatie vanuit de broncode te herbouwen, te installeren. Hoe een kopie van de documentatiebronnen in /usr/doc te downloaden door Subversion te gebruiken. Hoe de &os;-documentatie vanuit de broncode te herbouwen en onder /usr/share/doc te installeren. Sommige bouwopties die door het bouwsysteem van de documentatie ondersteund worden, i.e., de opties die slechts enkele van de verschillende vertalingen van de documentatie bouwen of de opties die een specifiek uitvoerformaat selecteren. <application>Subversion</application> en de documentatiegereedschappen installeren Voor het herbouwen van de &os;-documentatie vanuit de broncode is een aardig grote verzameling gereedschappen nodig. Deze gereedschappen zijn geen deel van het basissysteem van &os; omdat ze een grote hoeveelheid schijfruimte nodig hebben en niet voor alle &os;-gebruikers nuttig zijn; ze zijn alleen nuttig voor die gebruikers die actief nieuwe documentatie voor &os; schrijven of regelmatig hun documentatie vanuit de broncode bijwerken. Alle benodigde gereedschappen zijn beschikbaar als deel van de Portscollectie. De port textproc/docproj is een meester-port die door het &os; Documentatieproject is ontwikkeld om de installatie en toekomstige updates van deze gereedschappen makkelijker te maken. Wanneer er geen &postscript;- of PDF-documentatie nodig is, kan men overwegen om in plaats hiervan de port textproc/docproj-nojadetex te installeren. Deze versie van de documentatiegereedschappen bevat alles behalve de typesetting-engine teTeX. teTeX is een erg grote verzameling van gereedschappen, dus kan het zinvol zijn om de installatie ervan achterwege te laten als PDF-uitvoer niet echt nodig is. Subversion wordt geďnstalleerd met de port textproc/docproj. De documentatiebroncode bijwerken Het programma Subversion kan een schone kopie van de documentatiebroncode ophalen door het volgende te typen: &prompt.root; svn checkout svn://svn.FreeBSD.org/doc/head /usr/doc De initiële download van de documentatiebroncode kan een tijd duren. Laat het draaien totdat het voltooid is. Toekomstige updates van de documentatiebroncode kunnen opgehaald worden door het volgende commando te draaien: &prompt.root; svn update /usr/doc Nadat de broncode is uitgecheckt, wordt een alternatieve manier om de documentatie bij te werken ondersteund door Makefile van de map /usr/doc door het volgende te draaien: &prompt.root; cd /usr/doc &prompt.root; make update Instelbare opties van de documentatiebroncode Het bijwerk- en bouwsysteem van de &os;-documentatie ondersteunt enkele opties die het proces om de documentatie alleen gedeeltelijk bij te werken, of om specifieke vertalingen te bouwen, makkelijker maken. Deze opties kunnen of als systeemwijde opties in het bestand /etc/make.conf worden ingesteld, of als opdrachtregelopties aan het hulpmiddel &man.make.1; worden doorgegeven. De volgende opties zijn er enkelen van: DOC_LANG De lijst van te bouwen en te installeren talen en coderingen, bijvoorbeeld en_US.ISO8859-1 voor alleen de Engelse documentatie. FORMATS Een enkel formaat of een lijst van uitvoerformaten die gebouwd moeten worden. Momenteel worden html, html-split, txt, ps, pdf, en rtf ondersteund. DOCDIR Waar de documentatie te installeren. Dit staat standaard op /usr/share/doc. Bekijk &man.make.conf.5; voor meer make-variabelen die als systeemwijde opties in &os; worden ondersteund. Voor meer make-variabelen die door het bouwsysteem van de &os;-documentatie ondersteund worden, wordt naar het &os; Documentation Project Primer for New Contributors verwezen. De &os;-documentatie vanuit de broncode installeren Wanneer er een actueel snapshot van de documentatiebroncode is opgehaald in /usr/doc, is alles gereed om de geďnstalleerde documentatie bij te werken. Het volledig bijwerken van alle talen die in de Makefile-optie DOC_LANG zijn gedefinieerd kan worden gedaan door te typen: &prompt.root; cd /usr/doc &prompt.root; make install clean Als alleen het bijwerken van een specifieke taal gewenst is, dan kan &man.make.1; worden aangeroepen in een taalspecifieke submap van /usr/doc, i.e.: &prompt.root; cd /usr/doc/en_US.ISO8859-1 &prompt.root; make update install clean De te installeren uitvoerformaten kunnen worden gespecificeerd door de make-variabele FORMATS in te stellen, i.e.: &prompt.root; cd /usr/doc &prompt.root; make FORMATS='html html-split' install clean Marc Fonvieille Gebaseerd op het werk van Documentatieports gebruiken Updaten en upgraden documentatiepakket Updaten en upgraden In de vorige sectie werd er een methode voor het bijwerken van de &os;-documentatie vanaf de broncode gepresenteerd. Het bijwerken gebaseerd op broncode is echter niet voor alle &os;-systemen haalbaar of praktisch. Voor het bouwen van de documentatiebronnen zijn een redelijk grote verzameling van gereedschappen, de documentatie gereedschapskist, een bepaald niveau van bekendheid met Subversion en checkouts van broncode vanuit een reservoir nodig, en een aantal handmatige stappen om de uitgecheckte broncode te bouwen. In deze sectie wordt een alternatieve manier beschreven om de geďnstalleerde kopiën van de &os;-documentatie bij te werken; een die de Ports Collectie gebruikt en het mogelijk maakt om: Voorgebouwde versies van de documentatie te downloaden en te installeren, zonder iets lokaal te hoeven bouwen (op deze manier wordt de noodzaak voor een installatie van de gehele documentatie-gereedschapskist voorkomen). De documentatiebronnen te bouwen en ze via het ports-raamwerk te bouwen (de stappen van het uitchecken en bouwen worden iets eenvoudiger gemaakt). Deze twee methoden om de &os;-documentatie bij te werken worden ondersteund door een verzameling van documentatie-ports die maandelijks door het &a.doceng; worden bijgewerkt. Deze zijn vermeld in de &os; Ports Collectie onder de virtuele categorie docs. Documentatie-ports bouwen en installeren De documentatie-ports gebruiken het bouwraamwerk van de ports om het bouwen van documentatie eenvoudiger te maken. Ze automatiseren het proces van het uitchecken van de broncode van de documentatie, het draaien van &man.make.1; met de juiste omgevingsinstellingen en opdrachtregelopties, en ze maken de installatie of deďnstallatie van documentatie net zo eenvoudig als de installatie van elke andere &os;-port of -pakket. Als een extra eigenschap registreren de documentatie-ports, wanneer ze lokaal zijn gebouwd, een afhankelijkheid naar de ports van de documentatie-gereedschapskist, zodat de laatste ook automatisch is geďnstalleerd. De organisatie van de documentatie-ports is als volgt: Er is een meester-port, misc/freebsd-doc-en, waar de bestanden van de documentatie-ports gevonden kunnen worden. Het is de basis van alle documentatie-ports. Standaard bouwt het alleen de Engelstalige documentatie. Er is een alles-in-één port, misc/freebsd-doc-all, en het bouwt en installeert alle documentatie in alle beschikbare talen. Ten slotte is er een slaaf-port voor elke vertaling, bijvoorbeeld misc/freebsd-doc-hu voor de documenten in het Hongaars. Ze zijn allemaal afhankelijk van de meester-port en installeren de vertaalde documentatie van de respectievelijke taal. Gebruik de volgende commando's (als root) om een documentatieport vanaf de broncode te installeren: &prompt.root; cd /usr/ports/misc/freebsd-doc-en &prompt.root; make install clean Dit zal de Engelstalige documentatie in gesplitst HTML-formaat (hetzelfde als dat op wordt gebruikt) in de map /usr/local/share/doc/freebsd bouwen en installeren. Algemene knoppen en opties Er zijn vele opties om het standaardgedrag van de documentatie-ports aan te passen. Het volgende is slechts een korte lijst: WITH_HTML Staat bouwen van het HTML-formaat toe: een enkel HTML-bestand per document. De opgemaakte documentatie wordt naar gelang in een bestand genaamd article.html, of book.html, met afbeeldingen opgeslagen. WITH_PDF Staat bouwen van het &adobe; Portable Document Format toe, te gebruiken met &adobe; &acrobat.reader;, Ghostscript, of andere PDF-lezers. De opgemaakte documentatie wordt naar gelang opgeslagen in een bestand genaamd article.pdf of book.pdf opgeslagen. DOCBASE Waar de documentatie te installeren. Standaard is dit /usr/local/share/doc/freebsd. Merk op dat de standaard doelmap afwijkt van de map die door de Subversion-methode wordt gebruikt. Dit komt omdat er een port wordt geďnstalleerd, en ports worden normaliter onder de map /usr/local geďnstalleerd. Dit kan veranderd worden door de variabele PREFIX toe te voegen. Hier is een kort voorbeeld over hoe de bovengenoemde variabelen te gebruiken om de Hongaarse documentatie in Portable Document Format te installeren: &prompt.root; cd /usr/ports/misc/freebsd-doc-hu &prompt.root; make -DWITH_PDF DOCBASE=share/doc/freebsd/hu install clean Documentatiepakketten gebruiken Voor het bouwen van de documentatie-ports vanaf broncode, zoals beschreven in de vorige sectie, is een lokale installatie van de documentatie-gereedschapskist en wat schijfruimte voor het bouwen van de ports nodig. Wanneer de bronnen voor het installeren van de documentatie-gereedschapskist niet aanwezig zijn, of wanneer het bouwen vanaf broncode te veel schijfruimte in beslag neemt, is het nog steeds mogelijk om de vooraf gebouwde versies van de documentatie-ports te installeren. Het &a.doceng; bereidt maandelijkse versies van de &os; documentatiepakketten voor. Deze binaire pakketten kunnen met elk van de meegeleverde pakketgereedschappen, zoals &man.pkg.add.1;, &man.pkg.delete.1;, enzovoorts gebruikt worden. Wanneer binaire pakketten worden gebruikt, zal de &os; documentatie in alle beschikbare formaten voor de gegeven taal geďnstalleerd worden. Het volgende commando bijvoorbeeld zal het nieuwste vooraf gebouwde pakket van de Hongaarse documentatie installeren: &prompt.root; pkg_add -r hu-freebsd-doc Pakketten hebben het volgende naamformaat welke afwijkt van de naam van de overeenkomstige port: taal-freebsd-doc. Hier is taal het korte formaat van de taalcode, i.e., hu voor Hongaars, of zh_cn voor Vereenvoudigd Chinees. Documentatieports bijwerken Voor het bijwerken van een eerder geďnstalleerde documentatieport is elk gereedschap voor het bijwerken van ports geschikt. Het volgende commando bijvoorbeeld werkt de geďnstalleerde Hongaarse documentatie bij via het gereedschap ports-mgmt/portupgrade door alleen pakketten te gebruiken: &prompt.root; portupgrade -PP hu-freebsd-doc Een ontwikkelingstak volgen -CURRENT -STABLE Er zijn twee ontwikkeltakken voor &os;: &os.current; en &os.stable;. Deze sectie licht beiden toe en beschrijft hoe een systeem bijgewerkt te houden met elke tak. &os.current; wordt eerst behandeld, daarna &os.stable;. Bijblijven met &os; Bedenk dat &os.current; het nieuwste van het nieuwste is van &os; ontwikkeling. Van &os.current; gebruikers wordt verwacht dat ze veel technische kennis hebben en capabel zijn om zelfstandig lastige systeemproblemen op te lossen. Nieuwe gebruikers van &os; kunnen het beste twee keer nadenken alvorens het te installeren. Wat is &os.current;? momentopname &os.current; is de laatste werkende set broncode voor &os;. Dit bevat werk in uitvoering, experimentele wijzigingen en overgangsmechanismes die mogelijk wel of niet meegenomen worden in de volgende officiële uitgave van het besturingssysteem. Alhoewel veel &os;-ontwikkelaars de broncode van &os.current; dagelijks compileren, zijn er periodes dat de broncode niet compileerbaar is. Deze problemen worden zo snel mogelijk gerepareerd, maar het is mogelijk dat &os.current; een ramp veroorzaakt in plaats van dat het de gewenste functionaliteit levert. Dit ligt geheel aan het moment waarop de broncode is opgehaald. Wie heeft &os.current; nodig? &os.current; is beschikbaar voor drie primaire aandachtsgroepen: Leden van de &os;-gemeenschap die actief werken aan een deel van de broncode voor wie current een echte eis is. Leden van de &os;-gemeenschap die actief testen en tijd hebben om problemen op te lossen om zeker te stellen dat &os.current; zo gezond als mogelijk is. Er zijn ook mensen die actuele suggesties maken over wijzigingen en de algemene richting van &os; en die patches opsturen om deze te implementeren. Diegenen die alleen een oogje in het zeil willen houden of de huidige bronnen gebruiken ter referentie (bijvoorbeeld voor het lezen en niet het draaien). Deze mensen geven ook regelmatig commentaar of dragen bij in de code. Wat is &os.current; <emphasis>niet</emphasis>? Een snelle manier om pre-release versies te krijgen omdat bekend is dat er een aantal leuke nieuwe mogelijkheden in zitten en het leuk is deze als eerste te gebruiken. Het als eerste gebruiken van nieuwe mogelijkheden betekent ook de eerste zijn die nieuwe bugs ontdekt. Een snelle manier om bugfixes te krijgen. Elke willekeurige versie van &os.current; heeft waarschijnlijk net zoveel nieuwe bugs als dat er bugs opgelost zijn. Op welke manier dan ook officieel ondersteund. We doen onze best om mensen echt te helpen in één van de drie legitieme &os.current; groepen maar er is simpelweg niet genoeg tijd om technische ondersteuning te leveren. Dit is niet omdat we gemene en vervelende mensen zijn die anderen niet willen helpen (we zouden niet eens aan &os; werken als we dat durfden). De ontwikkelaars kunnen simpelweg geen honderd berichten per dag beantwoorden én aan &os; werken. Bij de keuze tussen het verbeteren van &os; en vragen beantwoorden over experimentele code, kiezen ontwikkelaars voor het eerste. &os.current; gebruiken -CURRENT gebruiken Neem een abonnement op de mailinglijsten &a.current.name; en &a.svn-src-head.name;. Dit is niet alleen een goed idee, het is essentieel. Geen berichten ontvangen van de lijst &a.current.name; betekent geen commentaar zien dat mensen maken over de huidige staat van het systeem en dus waarschijnlijk struikelen over problemen die anderen al gevonden en opgelost hebben. Nog belangrijker is het missen van belangrijke informatie die kritisch kan zijn voor een systeem. De lijst &a.svn-src-head.name; biedt de mogelijkheid de wijzigingsboodschap te zien voor elke wijziging die gemaakt wordt, samen met relevante informatie over mogelijke bijwerkingen. Ga om op deze lijsten of één van de andere beschikbare lijsten te abonneren naar &a.mailman.lists.link; en klik op de gewenste lijst. Instructies over de rest van de procedure zijn daar beschikbaar. Als u geďnteresseerd bent in het volgen van veranderingen voor de gehele broncodeboom, raden wij u aan een abonnement te nemen op de lijst &a.svn-src-all.name;. Haal de broncode van een &os; mirrorsite. Dit kan op de volgende twee manieren: - cvsup - - cron - - - -CURRENT - - Synchroniseren met - CVSup - - Gebruik het programma cvsup met de + linkend="cvsup">cvsupcvsup met de supfile genaamd standard-supfile uit /usr/share/examples/cvsup. Dit is de geadviseerde methode, omdat de gehele collectie in één keer wordt binnengehaald en daarna alleen hetgeen wat gewijzigd is. Veel mensen draaien cvsup vanuit de - cron en houden daarmee hun + croncron en houden daarmee hun broncode automatisch bijgewerkt. De voorbeeld supfile dient aangepast te - worden om cvsup in te + worden om cvsup-CURRENTSynchroniseren met CVSup in te stellen voor uw omgeving. Het voorbeeld standard-supfile is bedoeld om een specifieke beveiligingstak van &os; te volgen, niet &os.current;. U moet dit bestand bewerken en de volgende regel vervangen: *default release=cvs tag=RELENG_X_Y door deze: *default release=cvs tag=. Voor een gedetailleerde uitleg over bruikbare tags wordt naar de sectie CVS Tags van het Handboek verwezen. Gebruik de faciliteit CTM. Bij een slechte verbinding, dure connecties of alleen e-mail toegang, is CTM een optie. Het werkt echter lastig en geeft mogelijk corrupte bestanden. Dit zorgt ervoor dat het zelden gebruikt wordt, dat de kans verhoogt dat het niet werkt voor redelijk lange periodes. Het advies is CVSup te gebruiken. Als de broncode wordt opgehaald om te draaien en niet alleen om naar te kijken, haal dan alles op van &os.current; en niet alleen geselecteerde delen. De reden hiervoor is dat verschillende delen van de code afhangen van updates op andere plekken en het compileren van een onderdeel gegarandeerd problemen oplevert. -CURRENT compileren Voordat &os.current; gecompileerd wordt is het raadzaam om de Makefile in /usr/src aandachtig te bekijken. Het is handig om de eerste keer op zijn minst de kernel en de wereld opnieuw te bouwen als onderdeel van het updateproces. Via de &a.current; en /usr/src/UPDATING is het mogelijk op de hoogte te blijven van mogelijke wijzigingen in de opstartprocedures die soms nodig zijn tussen verschillende versies. Wees actief! Ervaringen van &os.current;-gebruikers zijn belangrijk, zeker als het gaat om suggesties voor verbeteringen of bugfixes. Suggesties met bijbehorende code worden enthousiast ontvangen! &os; stabiel houden Wat is &os.stable;? -STABLE &os.stable; is de ontwikkeltak waaruit grote releases gemaakt worden. Wijzigingen in deze tak gaan in een ander tempo en met de algemene aanname dat ze eerst in &os.current; worden ingebracht ter test. Dit is nog steeds een ontwikkeltak, echter dit betekent dat op elk gegeven moment de code voor &os.stable; wel of niet geschikt is voor een speciaal doel. Het is simpelweg een andere ontwikkelomgeving en geen bron voor eindgebruikers. Wie heeft &os.stable; nodig? Bij interesse in het bijhouden van of bijdragen aan het &os;-ontwikkelproces, speciaal als het gerelateerd is aan de volgende versie van &os;, is het volgen van &os.stable; het overwegen waard. Ondanks dat security fixes ook in de &os.stable;-tak komen, hoeft dit niet per se. In elke beveiligingswaarschuwing voor &os; wordt uitgelegd uit hoe het probleem opgelost kan worden voor de release die het betreft. Dit is niet helemaal waar. Oude releases van &os; kunnen niet eeuwig ondersteund worden, ook al duurt ondersteuning vele jaren. Een volledige beschrijving van het huidige beveiligingsbeleid voor oudere releases van &os; staat op http://www.FreeBSD.org/security/. Het volgen van de volledige ontwikkeltak alleen om veiligheidsredenen levert ongetwijfeld ongewenste wijzigingen op. Ondanks het voornemen ervoor te zorgen dat de &os.stable;-tak compileert en altijd draait, wordt dit niet gegarandeerd. Terwijl code ontwikkeld wordt in &os.current; voordat die in &os.stable; verwerkt wordt, draaien meer mensen &os.stable; dan &os.current;, dus het is onontkoombaar dat bugs en randgevallen soms in &os.stable; gevonden worden die niet in &os.current; bekend waren. Om deze redenen wordt niet aangeraden &os.stable; blindelings te volgen en het is extra belangrijk geen productieservers bij te werken naar &os.stable; zonder de code te testen in een testomgeving. Als de mogelijkheden om dit te doen niet beschikbaar zijn, dan is het advies de meest recente release van &os; te draaien en dan de binaire update methode te hanteren om bij te werken tussen verschillende releases. &os.stable; gebruiken &os.stable; gebruiken Neem een abonnement op de lijst &a.stable.name;. Deze biedt informatie over onderdelen van de build die mogelijk verschijnen in &os.stable; of eventuele andere kwesties die speciale aandacht vereisen. Ontwikkelaars kondigen in deze mailinglijst ook aan wanneer ze overwegen om een controversiële fix of aanpassing willen maken, waardoor de gebruikers een kans hebben om te reageren als ze goede redenen hebben tegen de voorgestelde wijziging. Wordt lid van de relevante SVN-lijst voor de tak die u volgt. Als u bijvoorbeeld de tak 7-STABLE volgt, wordt u lid van de &a.svn-src-stable-7.name; lijst. Dit stelt u in staat om het commit-log-bericht te bekijken voor elke verandering die is gemaakt, tezamen met relevante informatie over mogelijke bijwerkingen. Ga om te abonneren op deze lijsten, of één van de andere beschikbare lijsten naar &a.mailman.lists.link; en klik op de lijst waarop een abonnement gewenst is. Instructies over de rest van de procedure zijn daar beschikbaar. Als u geďnteresseerd bent in het volgen van veranderingen voor de gehele broncodeboom, raden wij u aan een abonnement te nemen op de &a.svn-src-all.name; lijst. Kijk op de webpagina Snapshots om een systeem te installeren van een maandelijkse snapshot van &os.stable;. Het is ook mogelijk om de meest recente &os.stable; release te installeren van de mirrorsites. Volg de onderstaande instructies om een systeem bij te werken naar de meest recente &os.stable; broncode. Als al een vorige release van &os; draait en bijgewerkt moet worden via de broncodes dan kan dat via de &os; mirrorsites. Dit kan op één van de twee volgende manieren: - cvsup - - cron - - - &os.stable; - - synchroniseren met - CVSup - - Gebruik het programma cvsup met de + linkend="cvsup">cvsupcvsup met de supfile - stable-supfile uit de map + stable-supfile&os.stable;synchroniseren met CVSup uit de map /usr/share/examples/cvsup. Dit is de aanbevolen methode omdat het hiermee mogelijk is de volledige collectie te downloaden en daarna alleen hetgeen wat veranderd is. Veel mensen draaien cvsup vanuit de - cron om de broncodes automatisch + croncron om de broncodes automatisch bij te werken. Het voorbeeld van de supfile dient aangepast en ingesteld te worden voor de omgeving waarin het instellingenbestand gebruikt wordt. - - &os.stable; - - synchroniseren met CTM - - Gebruik CTM als er geen + linkend="ctm">CTM&os.stable;synchroniseren met CTM als er geen snelle, goedkope verbinding is met internet. Dan is dit de methode om te gebruiken. Als er snelle on-demand toegang nodig is tot de broncode en bandbreedte is geen overweging, gebruik dan cvsup of ftp. Gebruik anders CTM. - - &os.stable; - - compileren - - - Lees alvorens &os.stable; te compileren goed de + Lees alvorens &os.stable; te compileren&os.stable;compileren goed de Makefile in /usr/src. Het is handig om de eerste keer op zijn minst de kernel en de wereld opnieuw te bouwen als onderdeel van het updateproces. Via de &a.stable; en /usr/src/UPDATING is het mogelijk op de hoogte te blijven van mogelijke wijzigingen in de opstartprocedures die soms nodig zijn tussen verschillende releases. Broncode synchroniseren Er zijn verschillende manieren om een internet (of e-mail) verbinding te gebruiken om bij te blijven met elk onderdeel van de &os; projectbronnen of alle onderdelen, afhankelijk van het interessegebied. De primaire diensten zijn Anonieme CVS en CTM. Ondanks dat het mogelijk is om alleen delen van de broncode bij te werken, is de enige ondersteunde methode de totale broncode bijwerken en zowel userland (alle programma's die in gebruikersruimte draaien, zoals programma's in /bin en /sbin) als de kernel opnieuw compileren. Als alleen delen van de broncode worden bijgewerkt, alleen de kernel of alleen het userland, resulteert dat vaak in problemen. Deze problemen kunnen verschillen van compileerfouten tot kernel panics of corruptie van gegevens. CVS anoniem Anonieme CVS en CVSup gebruiken het pull model om broncode bij te werken. In het geval van CVSup start de gebruiker (of een cron script) het programma cvsup waarbij het communiceert met een cvsupd server om bestanden bij te werken. De ontvangen updates zijn op de minuut nauwkeurig en ze komen alleen wanneer dat is ingesteld. Updates kunnen eenvoudig beperkt worden tot specifieke bestanden of mappen uit een interessegebied. Updates worden automatisch gegenereerd door een server, aan de hand van wat is ingesteld. Anonieme CVS is veel eenvoudiger dan CVSup omdat dat alleen een uitbreiding is van CVS die de mogelijkheid biedt om wijzigingen direct van een CVS repository op afstand te halen. CVSup kan dit veel efficiënter doen, maar anonieme CVS is makkelijker in het gebruik. - CTM - - CTM aan de andere kant maakt geen + CTMCTM aan de andere kant maakt geen vergelijking tussen de aanwezige bronnen en die op de master server. In plaats daarvan wordt een script uitgevoerd dat wijzigingen in bestanden ziet sinds de vorige keer dat is bijgewerkt en die meerdere keren per dag worden uitgevoerd op de master CTM machine. Elke ontdekte wijziging wordt gecomprimeerd, krijgt een volgnummer toegekend en wordt gecodeerd voor verzending via e-mail (in leesbare ASCII). Deze CTM delta's kunnen dan aangeleverd worden aan &man.ctm.rmail.1; die ze automatisch decodeert, controleert en toepast in de gebruikerskopie van de bronnen. Dit proces is veel efficiënter dan CVSup en claimt minder systeembronnen omdat het model push in plaats van pull is. Er zijn andere nadelen. Als per ongeluk een deel van het archief wordt verwijderd, kan CVSup dat detecteren en het beschadigde deel repareren. CTM doet dit niet en als een deel van de broncode wordt verwijderd (en er geen back-up is), dan moet er opnieuw begonnen worden (vanaf de meest recente CVS base delta en moet alles opnieuw opgebouwd worden met CTM. Met Anonymous CVS kan simpelweg het slechte deel verwijderd worden alvorens weer te synchroniseren. De <quote>wereld</quote> opnieuw bouwen world opnieuw bouwen Zodra de lokale broncode gesynchroniseerd is met een bepaalde versie van &os; (&os.stable;, &os.current;, enzovoort) kan de broncode gebruikt worden om een systeem te herbouwen. Maak een back-up Het kan niet vaak genoeg verteld worden hoe belangrijk het is om een back-up te maken van een systeem vóór deze taak uit te voeren. Ook al is het opnieuw bouwen van de wereld vrij simpel (als deze instructies gevolgd worden), er worden ongetwijfeld ooit fouten gemaakt, misschien zelfs in de broncode, die het onmogelijk maken om een systeem op te starten. Wees ervan verzekerd dat er een back-up gemaakt is en dat er een reparatiediskette of cd-rom bij de hand is. Deze wordt waarschijnlijk nooit gebruikt maar better safe than sorry. Abonneer op de juiste mailinglijsten mailinglijst De &os.stable; en &os.current; takken zijn van nature in ontwikkeling. Mensen die bijdragen aan &os; zijn menselijk en foutjes ontstaan regelmatig. Soms zijn deze foutjes onschadelijk, ze geven dan hooguit een nieuwe diagnostische waarschuwing weer. Maar de wijziging kan ook catastrofaal zijn en ervoor zorgen dat een systeem niet meer opstart of bestandssystemen vernietigt (of erger). Als problemen zoals deze voorkomen wordt er een heads up naar de juiste mailinglijst gestuurd, waarin uitgelegd wordt wat het probleem is en welke systemen het raakt. Er wordt een all clear bericht gestuurd als het probleem is opgelost. &os.stable; of &os.current; volgen zonder de &a.stable; of &a.current; te volgen is vragen om problemen. Gebruik geen <command>make world</command> Veel oudere documentatie raadt aan om make world te gebruiken. In dat geval worden er belangrijke stappen overgeslagen en gebruik het commando alleen als er voldoende kennis over aanwezig is. In bijna alle omstandigheden is make world verkeerd en de procedure die hier beschreven is hoort in plaats daarvan gebruikt te worden. De universele wijze om een systeem bij te werken Om uw systeem bij te werken, dient u /usr/src/UPDATING te controleren op eventuele pre-buildworld stappen die nodig zijn voor uw versie van de broncode en daarna de procedure te gebruiken die hier beschreven staat. Deze bijwerkstappen nemen aan dat u nu een oude versie van &os; gebruikt, die uit een oude compiler, een oude kernel, een oude wereld en oude instellingenbestanden bestaat. Onder wereld worden de binairen, bibliotheken, en programmeerbestanden van het kernsysteem verstaan. De compiler is deel van wereld, maar heeft enkele speciale aandachtspunten. We nemen ook aan dat u reeds de broncode van een nieuwer systeem heeft verkregen. Bekijk, als de bronnen op een bepaald systeem ook oud zijn, voor uitgebreide hulp over het synchroniseren ervan naar een nieuwere versie. Het bijwerken van het systeem vanaf de broncode is wat subtieler dan het op het eerste gezicht lijkt, en de ontwikkelaars van &os; vonden het in de loop der jaren nodig om de aangeraden methode redelijk drastisch te veranderen met het aan het licht komen van nieuwe soorten onontwijkbare afhankelijkheden. De rest van deze sectie beschrijft de rationale achter de huidige aanbevolen bijwerkmethode. Elke succesvolle bijwerkmethode krijgt te maken met de volgende punten: Het kan voorkomen dat de oude compiler de nieuwe kernel niet kan compileren. (Oude compilers bevatten soms bugs.) De nieuwe kernel dient dus met de nieuwe compiler gebouwd te worden. In het bijzonder moet de nieuwe compiler gebouwd worden voordat de nieuwe kernel gebouwd wordt. Dit betekent niet per se dat de nieuwe compiler geďnstalleerd moet worden voordat de nieuwe kernel gebouwd wordt. De nieuwe wereld kan afhankelijk zijn van mogelijkheden van de nieuwe kernel. Dus moet de nieuwe kernel worden geďnstalleerd voordat de nieuwe wereld wordt geďnstalleerd. De eerste twee gevallen zijn de basis voor de methode buildworld, buildkernel, installkernel, installworld die we in de volgende paragrafen beschrijven. Dit is geen uitputtende lijst van alle redenen waarom het huidige aanbevolen bijwerkproces de voorkeur verdient. Wat minder voor de hand liggende redenen worden hieronder genoemd: Het kan zijn dat de oude wereld niet correct draait op de nieuwe kernel, dus moet de nieuwe wereld onmiddellijk na het installeren van de nieuwe kernel geďnstalleerd worden. Sommige instellingen moeten veranderd worden voordat de nieuwe wereld wordt geďnstalleerd, maar anderen kunnen de oude wereld kapot maken. Vandaar dat over het algemeen twee verschillende bijwerkstappen voor de instellingen nodig zijn. Voor het grootste gedeelte houdt het bijwerkproces zich alleen bezig met het vervangen of toevoegen van bestanden; bestaande oude bestanden worden niet verwijderd. Dit kan in sommige gevallen problemen geven. Als een gevolg zal de bijwerkprocedure soms aangeven dat bepaalde bestanden tijdens bepaalde stappen handmatig verwijderd dienen te worden. Dit kan in de toekomst eventueel geautomatiseerd worden. Deze zorgen hebben tot het volgende aanbevolen bijwerkproces geleid. Merk op dat het gedetailleerde proces voor bepaalde updates aanvullende stappen nodig kan hebben, maar dit kernproces zou de komende tijd ongewijzigd moeten blijven: make buildworld Dit compileert eerst de nieuwe compiler en enkele aanverwante gereedschappen, daarna wordt de nieuwe compiler gebruikt om de rest van de nieuwe wereld te compileren. Het resultaat komt in /usr/obj te staan. make buildkernel In tegenstelling tot de oude aanpak, die &man.config.8; en &man.make.1; gebruikt, gebruikt dit de nieuwe compiler die in /usr/obj verblijft. Dit beschermt u tegen mismatches tussen de compiler en de kernel. make installkernel Plaatst de nieuwe kernel en kernelmodules op de schijf, waardoor het mogelijk wordt om met de nieuw bijgewerkte kernel op te starten. Start opnieuw op in enkele-gebruikersmodus. De enkele-gebruikersmodus minimaliseert problemen met het bijwerken van software die al draait. Het minimaliseert ook problemen die opduiken door een oude wereld op een nieuwe kernel te draaien. mergemaster Dit voert wat initiële updates aan instellingenbestanden uit ter voorbereiding op de nieuwe wereld. Het kan bijvoorbeeld nieuwe gebruikersgroepen aan het systeem, of nieuwe gebruikersnamen aan de wachtwoorddatabase toevoegen. Dit is vaak nodig wanneer er nieuwe groepen of speciale accounts voor systeemgebruikers zijn toegevoegd sinds de laatste keer bijwerken, zodat de stap installworld zonder problemen de nieuw geďnstalleerde namen van systeemgebruikers of systeemgroepen kan gebruiken. make installworld Kopieert de wereld van /usr/obj. U heeft nu een nieuwe kernel en een nieuwe wereld op schijf staan. mergemaster Nu kunt u de overgebleven instellingenbestanden bijwerken, aangezien u een nieuwe wereld op schijf heeft staan. Start opnieuw op. Een volledige nieuwe start van de machine is nodig om de nieuwe kernel en de nieuwe wereld met nieuwe instellingenbestanden te laden. Merk op dat als u van de ene uitgave van dezelfde tak van &os; bijwerkt naar een recentere uitgave van dezelfde tak, i.e. van 7.0 naar 7.1, dat deze procedure dan niet absoluut nodig is, aangezien het onwaarschijnlijk is dat u serieuze problemen krijgt met de compiler, kernel, gebruikersland en instellingenbestanden. De oudere aanpak met make world gevolgd door het bouwen en installeren van een nieuwe kernel kan voor kleine updates goed genoeg zijn. Maar mensen die deze procedure niet volgen tijdens het bijwerken tussen grote uitgaven kunnen wat problemen verwachten. Het is ook goed om op te merken dat veel upgrades (i.e. 4.X naar 5.0) wat specifieke aanvullende stappen nodig hebben (bijvoorbeeld het hernoemen of verwijderen van specifieke bestanden voorafgaand aan installworld). Lees het bestand /usr/src/UPDATING zorgvuldig, met name het einde, waar het huidig aangeraden bijwerkproces expliciet wordt beschreven. Deze procedure is in de loop der tijd veranderd aangezien de ontwikkelaars zagen dat het onmogelijk was om bepaalde mismatch-problemen volledig te voorkomen. Hopelijk blijft de huidige procedure voor een lange tijd stabiel. Samengevat is de huidige aanbevolen manier om &os; vanaf broncode bij te werken: &prompt.root; cd /usr/src &prompt.root; make buildworld &prompt.root; make buildkernel &prompt.root; make installkernel &prompt.root; shutdown -r now Er zijn een aantal zeldzame gevallen waarin mergemaster -p nog een keer moet draaien voor de stap met buildworld. Deze staan beschreven in UPDATING. In het algemeen kan deze stap echter zonder risico worden overgeslagen als er niet tussen een of meer hoofdversies wordt bijgewerkt. Nadat installkernel succesvol is afgerond, dient er in single-user modus opgestart te worden (met boot -s vanaf de loaderprompt). Draai dan: &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; adjkerntz -i &prompt.root; mergemaster -p &prompt.root; cd /usr/src &prompt.root; make installworld &prompt.root; mergemaster &prompt.root; reboot Lees verdere uitleg De hierboven beschreven volgorde is alleen een korte samenvatting. Ook de volgende secties lezen geeft een beter beeld van elke stap, met name als er een op maat gemaakte kernelinstelling wordt gebruikt. <filename>/usr/src/UPDATING</filename> lezen Lees voor verder te gaan /usr/src/UPDATING (of het gelijknamige bestand waar de kopie van de broncode ook staat). Dit bestand kan belangrijke informatie bevatten over mogelijke problemen of specificeert de volgorde waarin bepaalde commando's gestart moeten worden. Als UPDATING tegenstrijdig is met wat hier wordt beschreven, heeft UPDATING voorrang. UPDATING lezen is geen acceptabele vervanging voor het abonneren op de correcte mailinglijst zoals eerder beschreven. De twee vullen elkaar aan en zijn niet exclusief. <filename>/etc/make.conf</filename> controleren make.conf Controleer /usr/share/examples/etc/make.conf en /etc/make.conf. Het eerste bestand bevat standaard definities, waarvan de meeste uitgecommentarieerd zijn. Om hiervan gebruik te maken als het systeem opnieuw opgebouwd wordt vanuit de broncode, moeten ze toegevoegd worden aan /etc/make.conf. Bedenk dat alles wat toegevoegd wordt aan /etc/make.conf ook gebruikt wordt bij elk make commando. Het is dus verstandig om daar redelijke waardes in te vullen voor een systeem. Een typische gebruiker wil waarschijnlijk de regel NO_PROFILE uit /usr/share/examples/etc/make.conf kopiëren naar /etc/make.conf en het commentaar verwijderen. Bekijk de andere definities, zoals NOPORTDOCS en bepaal of deze relevant zijn. <filename>/etc</filename> bijwerken De map /etc bevat een groot deel van de systeeminstellingen en scripts die gestart worden tijdens de systeemstart. Sommige van deze scripts verschillen van versie tot versie in &os;. Sommige van de instellingenbestanden worden dagelijks gebruikt voor het draaien van een systeem. In het bijzonder /etc/group. Er zijn gevallen geweest waarbij het installatiegedeelte van make installworld een aantal gebruikersnamen of groepen verwachtte. Als er een upgrade wordt uitgevoerd is het waarschijnlijk dat deze gebruikers of groepen niet bestaan. Dit levert problemen op bij upgraden. In sommige gevallen controleert make buildworld of deze gebruikers of groepen bestaan. Een voorbeeld hiervan is het toevoegen van de gebruiker smmsp. Gebruikers hadden een falend installatieproces toen &man.mtree.8; probeerde om /var/spool/clientmqueue te creëren. &man.mergemaster.8; kan in voorbereidende modus gedraaid worden als de optie wordt meegegeven. Dan worden alleen de bestanden vergeleken die essentieel zijn voor het succes van buildworld of installworld: In paranoide beheerdersmodus kan er gecontroleerd worden welke bestanden op een systeem eigendom zijn van de groep die wordt hernoemd of verwijderd: &prompt.root; find / -group GID -print Dit commando toont alle bestanden die eigendom zijn van de groep GID (een groepsnaam of een numeriek groeps-ID). Systeem naar single-user modus brengen single-user modus Het kan zijn dat een systeem in single-user modus gecompileerd moet worden. Buiten het duidelijke voordeel dat de operatie iets sneller verloopt, is het voordeel dat bij een herinstallatie van een systeem een aantal belangrijke systeembestanden waaronder binaire systeembestanden, bibliotheken, include bestanden, enzovoort, worden aangepast, iets wat op een actief systeem vragen om problemen is (zeker als er actieve gebruikers op een systeem aanwezig zijn). multi-user modus Een andere methode is het systeem compileren in multi-user modus en daarna naar single-user modus gaan voor de installatie. Bij deze methode moeten de volgende stappen gevolgd worden. Het overschakelen naar single-user modus kan uitgesteld worden tot en met installkernel of installworld. Een supergebruiker kan als volgt een draaiend systeem naar single-user modus overgeschakelen: &prompt.root; shutdown now Als alternatief kan tijdens het opstarten de optie worden gekozen. Het systeem start dan in single-user modus. Op de shell prompt moet dan worden ingegeven: &prompt.root; fsck -p &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; swapon -a Hierdoor worden de bestandssystemen gecontroleerd, / met lees en schrijf rechten opnieuw gemount, worden alle andere UFS bestandssystemen die in /etc/fstab staan gemount en wordt swap ingeschakeld. Als de CMOS-klok ingesteld is naar de lokale tijd en niet naar GMT (dit is waar als het resultaat van &man.date.1; niet de correcte tijd en zone weergeeft), dan is het misschien handig om het volgende commando te starten: &prompt.root; adjkerntz -i Dit zorgt ervoor dat de lokale tijdzoneinstellingen correct ingesteld worden. Zonder deze instelling kunnen er later problemen ontstaan. <filename>/usr/obj</filename> verwijderen Als delen van een systeem opnieuw gebouwd worden, worden ze standaard geplaatst in mappen onder /usr/obj. Deze mappen schaduwen de mappen onder /usr/src. Het proces make buildworld kan versneld worden en problemen met afhankelijkheden kunnen voorkomen worden als deze map wordt verwijderd. Sommige bestanden onder /usr/obj hebben mogelijk de optie niet aanpassen ingesteld (zie &man.chflags.1;) die eerst verwijderd moet worden: &prompt.root; cd /usr/obj &prompt.root; chflags -R noschg * &prompt.root; rm -rf * Broncode van het basissysteem hercompileren Uitvoer bewaren Het is een goed idee om de uitvoer van &man.make.1; te bewaren in een ander bestand. Als er iets misgaat is er een kopie van de foutmelding aanwezig. Hoewel dit misschien niet helpt in de diagnose van wat er fout is gegaan, kan het anderen helpen als het probleem wordt aangegeven in een &os; mailinglijst. De makkelijkste manier om dit te doen is door het commando &man.script.1; te gebruiken, met een parameter die de naam specificeert waar de uitvoer naartoe moet. Dit moet direct gedaan worden vóór het herbouwen van de wereld, zodat het proces klaar is moet exit worden ingegeven: &prompt.root; script /var/tmp/mw.out Script started, output file is /var/tmp/mw.out &prompt.root; make TARGET … compile, compile, compile … &prompt.root; exit Script done, … Bewaar de uitvoer in deze stap niet in /tmp. Deze map wordt mogelijk opgeschoond tijdens de volgende herstart. Een betere plaats om dit bestand te bewaren is de map /var/tmp (zoals in het vorige voorbeeld) of in de thuismap van root. Basissysteem compileren Ga naar de map /usr/src, tenzij de broncode ergens anders staat, in welk geval naar die map gegaan moet worden: &prompt.root; cd /usr/src make Om de wereld opnieuw te bouwen moet het commando &man.make.1; gebruikt worden. Dit commando leest zijn instructies uit het bestand Makefile, dat beschrijft hoe de programma's die samen &os; vormen moeten worden gebouwd, in welke volgorde ze gebouwd moeten worden, enzovoort. Het algemene formaat van de commandoregel die gebruikt moet worden is als volgt: &prompt.root; make -x -DVARIABELE doel In dit voorbeeld is de optie een optie die wordt meegegeven aan &man.make.1;. In de hulppagina voor &man.make.1; staat een voorbeeld van de opties die meegegeven kunnen worden. geeft een variabele door aan Makefile. Het gedrag van Makefile wordt beďnvloed door deze variabele. Dit zijn dezelfde variabelen die ingesteld worden in /etc/make.conf. Deze optie biedt een alternatief om deze opties in te stellen. &prompt.root; make -DNO_PROFILE doel Het bovenstaande commando is een andere manier om aan te geven dat geprofileerde bibliotheken niet gebouwd moeten worden en correspondeert met de onderstaande regel in /etc/make.conf: NO_PROFILE= true # Avoid compiling profiled libraries doel geeft &man.make.1; aan wat er gedaan moet worden. Elke Makefile definieert een aantal van verschillende doelen en het gekozen doel bepaalt wat er gebeurt. Sommige doelen staan vermeld in het bestand Makefile, maar zijn niet geschikt om direct te starten. Integendeel, deze worden gebruikt door het bouwproces om de benodigde stappen onder te verdelen. In veel gevallen hoeven er geen parameters te worden meegegeven aan &man.make.1; en dus ziet de commando regel er als volgt uit: &prompt.root; make doel Waar doel een van de vele bouw opties is. De eerste target moet echter altijd buildworld zijn. Zoals de namen impliceren bouwt buildworld een compleet nieuwe boom onder /usr/obj en installworld, een andere target, installeert deze boom op de huidige machine. Het hebben van verschillende opties is handig om twee redenen. Als eerste biedt het de mogelijkheid om de bouw veilig te doen met de wetenschap dat geen enkel draaiend onderdeel van een systeem geraakt wordt. De bouw is zelf ondersteunend. Hierdoor kan veilig in multi-user modus buildworld gedraaid worden. Het wordt echter nog steeds aangeraden om installworld in single-user modus te starten. Ten tweede geeft het de mogelijkheid om NFS-mounts te gebruiken om meerdere machines in het netwerk bij te werken. Als er drie machines zijn, A, B en C, die bijgewerkt moeten worden, dan kunnen make buildworld en make installworld gedraaid worden op A waarna B en C een NFS-mount kunnen opzetten naar /usr/src en /usr/obj op machine A waarna make installworld gedraaid kan worden op B en C om de resultaten de installeren. Alhoewel het doel world nog wel bestaat wordt het gebruik ervan sterk afgeraden. Voer het volgende commando uit: &prompt.root; make buildworld Het is mogelijk om de optie mee te geven aan make, wat resulteert in meerdere processen die tegelijkertijd draaien. Dit heeft het meeste effect op machines met meerdere processoren. Echter, omdat het compilatieproces meer IO-gericht is dan processorgericht, kan het ook nuttig zijn op systemen met één processor. Start als volgt op een systeem met één processor: &prompt.root; make -j4 buildworld &man.make.1; draait dan maximaal 4 processen tegelijkertijd. In het algemeen blijkt uit de mailinglijsten dat dit de beste resultaten geeft. Als er meerdere processoren in een systeem zitten en gebruik gemaakt wordt van een SMP kernel, probeer dan waardes tussen de 6 en 10 en bekijk hoe het systeem reageert. Doorlooptijd world opnieuw bouwen doorlooptijd Veel factoren bepalen de doorlooptijd van het bouwen van een boom, maar redelijk recente machines doen er maar 1 tot 2 uur over om de &os.stable; boom te bouwen. zonder extra trucjes. Een &os.current; boom kan wat langer duren. Nieuwe kernel compileren en installeren kernel compileren Om volledig gebruik te maken van het nieuwe systeem moet de kernel opnieuw gecompileerd worden. Dit is bijna altijd nodig omdat sommige geheugenstructuren mogelijkerwijs veranderd zijn en programma's als &man.ps.1; en &man.top.1; niet werken totdat de kernel en de broncode dezelfde versie hebben. De simpelste en makkelijkste manier om dit te doen is om een kernel te maken die gebaseerd is op GENERIC. Ondanks dat GENERIC mogelijk niet alle benodigde apparaten heeft voor een systeem, hoort het alles te bevatten dat nodig is om een systeem te starten in single-user modus. Dit is een goede test op de correcte werking van een nieuw systeem. Na het opstarten van GENERIC en een systeemcontrole kan erna een nieuwe kernel gebouwd worden gebaseerd op een aangepast kernelinstellingenbestand. Op &os; is het belangrijk om de wereld opnieuw te bouwen voordat een nieuwe kernel gebouwd wordt. Als een aangepaste kernel gemaakt moet worden en er reeds een instellingenbestand aanwezig is, gebruik dan KERNCONF=MYKERNEL als volgt: &prompt.root; cd /usr/src &prompt.root; make buildkernel KERNCONF=MYKERNEL &prompt.root; make installkernel KERNCONF=MYKERNEL Let op dat als kern.securelevel een waarde hoger dan 1 heeft of noschg of gelijksoortige opties geplaatst zijn op het binaire kernelbestand, is het misschien nodig om terug te gaan naar single-user modus om installkernel uit te voeren. In andere gevallen moet het mogelijk zijn om deze commando's zonder problemen uit te voeren in multi-user modus. Zie &man.init.8; voor meer informatie over kern.securelevel en &man.chflags.1; voor informatie over diverse bestandsopties. Opnieuw opstarten in single-user modus single-user modus Start met de instructies in in single-user modus op om te testen of de nieuwe kernel werkt. Nieuwe binaire systeembestanden installeren Na het draaien van make buildworld kan nu installworld gebruikt worden om de nieuwe binaire systeembestanden te installeren. Voer de volgende commando's uit: &prompt.root; cd /usr/src &prompt.root; make installworld Als er variabelen gespecificeerd zijn op de commandoregel van make buildworld moeten dezelfde variabelen gebruikt worden op de commandoregel van make installworld. Dit is niet per se waar voor opties zoals , die nooit gebruikt mogen worden met installworld. Als bijvoorbeeld het volgende commando is uitgevoerd: &prompt.root; make -DNO_PROFILE buildworld Dan moet het resultaat geďnstalleerd worden met: &prompt.root; make -DNO_PROFILE installworld Anders wordt geprobeerd geprofileerde bibliotheken te installeren die niet gebouwd zijn tijdens de fase make buildworld. Bestanden bijwerken die niet bijgewerkt zijn door <command>make installworld</command> Het herbouwen van de wereld werkt bepaalde mappen niet bij (in het bijzonder /etc, /var en /usr) met nieuwe of gewijzigde instellingenbestanden. De simpelste manier om deze bestanden bij te werken is door &man.mergemaster.8; te gebruiken, maar het is ook mogelijk dit handmatig te doen. Welke manier er ook gekozen wordt, zorg er altijd voor dat een back-up van /etc beschikbaar is voor het geval er iets misgaat. Tom Rhodes Bijgedragen door <command>mergemaster</command> mergemaster Het hulpprogramma &man.mergemaster.8; is een Bourne script dat helpt bij het bepalen van de verschillen tussen de instellingenbestanden in /etc en de instellingenbestanden in de broncodeboom /usr/src/etc. Deze methode wordt aangeraden om instellingenbestanden van een systeem bijgewerkt te houden met de bestanden die in de broncodeboom staan. Het programma wordt gestart met mergemaster op de commandoregel en geeft dan resultaten weer. mergemaster bouwt dan een tijdelijke root omgeving vanaf / en vult deze met diverse instellingenbestanden voor een systeem. Deze bestanden worden vergeleken met de bestanden die geďnstalleerd zijn op een systeem. Op dit punt worden de bestanden getoond die verschillen in het &man.diff.1;-formaat, met een voor toegevoegde of gewijzigde regels en een voor regels die verwijderd of vervangen zijn. In de hulppagina voor &man.diff.1; staat meer informatie over de syntaxis van &man.diff.1; en hoe bestandsverschillen getoond worden. &man.mergemaster.8; toont dan elk bestand dat verschilt en op dit moment is er de mogelijkheid om of het nieuwe bestand te verwijderen (ofwel het tijdelijke bestand), het tijdelijke bestand te installeren zonder enige wijzigingen, het verwerken van het oude bestand in het nieuwe bestand of de resultaten van &man.diff.1; nogmaals te tonen. Als gekozen wordt om het tijdelijke bestand te verwijderen, geeft dit &man.mergemaster.8; aan dat het huidige bestand niet gewijzigd dient te worden en de nieuwe versie verwijderd kan worden. Deze optie wordt niet aangeraden, behalve als er geen reden is om het huidige bestand aan te passen. Op ieder moment kunnen hulpteksten getoond worden door ? in te geven op de prompt van &man.mergemaster.8;. Als een bestand wordt overgeslagen, dan wordt het weer getoond als alle overige bestanden verwerkt zijn. Bij de keuze om het ongewijzigde tijdelijke bestand te installeren wordt het huidige bestand vervangen door het nieuwe. Voor de meeste ongewijzigde bestanden is dit de beste optie. Als ervoor gekozen wordt om de wijzigingen te verwerken wordt er een tekstverwerker gestart die de inhoud van beide bestanden toont. De verschillen kunnen verwerkt worden terwijl beide bestanden naast elkaar op het scherm staan. Hier kunnen delen gekozen worden die gezamenlijk een nieuw bestand opleveren. Als de bestanden zij aan zij vergeleken worden, wordt met de toets l de inhoud links geselecteerd en met de toets r de inhoud rechts geselecteerd. Het eindresultaat bestaat uit delen van beide bestanden die erna geinstalleerd kunnen worden. Deze optie wordt voornamelijk gebruikt voor bestanden die gewijzigd zijn door de beheerder. Als ervoor gekozen wordt om de &man.diff.1; resultaten nog een keer te tonen, worden dezelfde verschillen getoond zoals &man.mergemaster.8; deed voordat een optie gevraagd werd. Zodra &man.mergemaster.8; klaar is met de systeembestanden worden er andere opties getoond. &man.mergemaster.8; kan vragen of het wachtwoordbestand opnieuw gebouwd moet worden. Als laatste wordt een optie getoond om alle overgebleven tijdelijke bestanden te verwijderen. Handmatig bijwerken Bij handmatig bijwerken kunnen de bestanden van /usr/src/etc niet zomaar naar /etc gekopieerd worden om een werkend systeem te krijgen. Sommige van deze bestanden moeten eerst geďnstalleerd worden. Dit omdat de map /usr/src/etc geen kopie is van /etc. Daarnaast staan er in /etc bestanden die niet in /usr/src/etc staan. Als &man.mergemaster.8; gebruikt wordt (zoals aangeraden), kan doorgegaan worden met het volgende onderdeel. De simpelste manier om met de hand bij te werken, is de bestanden in een nieuwe map installeren en daarna naar verschillen tussen de bestanden te zoeken. Back-up maken van <filename>/etc</filename> Ondanks dat, in theorie, niets in deze map automatisch wordt aangepast, is het altijd beter om daar zeker van te zijn. Dus kopieer de bestaande /etc naar een veilige locatie. Zoals bijvoorbeeld met het volgende commando: &prompt.root; cp -Rp /etc /etc.old maakt een recursieve kopie, bewaart tijden, eigenaarschap, enzovoorts op bestanden. Er moet een dummyset van mappen gemaakt worden om de nieuwe /etc en andere bestanden in te installeren. /var/tmp/root is een redelijke keuze en er zijn hier een aantal benodigde submappen aanwezig: &prompt.root; mkdir /var/tmp/root &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distribution Dit maakt de benodigde mappenstructuur en installeert de bestanden. Een groot deel van de submappen die gemaakt zijn in /var/tmp/root zijn leeg en moeten verwijderd worden. De simpelste manier om dit te doen is: &prompt.root; cd /var/tmp/root &prompt.root; find -d . -type d | xargs rmdir 2>/dev/null Dit verwijderd alle lege mappen. De standaardfout wordt omgeleid naar /dev/null om waarschuwingen te voorkomen over mappen die niet leeg zijn. /var/tmp/root bevat nu alle bestanden die geplaatst zouden moeten worden op de juiste locaties in /. Er moet nu in de bestanden gekeken worden om te bepalen of deze verschillen met de huidige betanden. Let op dat sommige van de bestanden die geďnstalleerd zijn in /var/tmp/root beginnen met een .. Op het moment van schrijven hebben alleen shell opstartscripts in /var/tmp/root en /var/tmp/root/root dit, maar er kunnen ook andere zijn. Zorg ervoor dat ls -a gebruikt wordt om deze bestanden te zien. De simpelste manier om twee bestanden te vergelijken is &man.diff.1; gebruiken: &prompt.root; diff /etc/shells /var/tmp/root/etc/shells Dit toont de verschillen tussen de huidige /etc/shells en de nieuwe /var/tmp/root/etc/shells. Gebruik dit om te bepalen of de wijzigingen gemigreerd moeten worden of dat het oude bestand gekopieërd moet worden. Voeg aan de naam van de nieuwe rootmap (<filename>/var/tmp/root</filename>) een tijdsindicatie toe zodat makkelijk verschillen tussen versies bepaald kunnen worden Als de wereld regelmatig wordt herbouwd moeten bestanden in /etc ook regelmatig bijgewerkt moeten worden, wat een vervelend werkje kan zijn. Dit proces kan versneld worden door een kopie te bewaren van de bestanden die gemigreerd zijn naar /etc. De volgende procedure geeft een idee over hoe dit gedaan kan worden. Maak de wereld zoals normaal. Als /etc en de andere mappen bijgewerkt moeten worden, geef dan de doelmap een naam gebaseerd op de huidige datum. Op 14 februari 1998 wordt dat als volgt gedaan: &prompt.root; mkdir /var/tmp/root-19980214 &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root-19980214 \ distrib-dirs distribution Migreer de wijzigingen van deze map zoals hierboven beschreven. Verwijder de map /var/tmp/root-19980214 niet na afronden. Als de laatste versie van de broncode gedownload en opnieuw gemaakt is, volg stap 1. Dit geeft een nieuwe map die wellicht /var/tmp/root-19980221 heet (als er een week zit tussen het bijwerken). De verschillen die gemaakt zijn in de tussenliggende week kunnen nu getoond worden door met &man.diff.1; een recursieve diff te maken tussen de twee mappen: &prompt.root; cd /var/tmp &prompt.root; diff -r root-19980214 root-19980221 Vaak is dit een kleinere set aan verschillen dan tussen /var/tmp/root-19980221/etc en /etc. Omdat de set verschillen kleiner is, is het makkelijker om deze te migreren naar de map /etc. De oudste van de twee /var/tmp/root-*-mappen kan nu verwijderd worden: &prompt.root; rm -rf /var/tmp/root-19980214 Herhaal dit proces elke keer als er wijzigingen gemigreerd moeten worden naar /etc. Met &man.date.1; kan het maken van de mappen geautomatiseerd worden: &prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"` Herstarten Dit was het. Na een controle of alles op de juiste plaats staat kan het systeem herstart worden. Dan kan met een simpele &man.shutdown.8;: &prompt.root; shutdown -r now Klaar Het &os; systeem is nu succesvol bijgewerkt. Gefeliciteerd! Als er dingen misgingen is het makkelijk om een deel van het systeem opnieuw te bouwen. Als bijvoorbeeld per ongeluk /etc/magic verwijderd is als onderdeel van de upgrade of door het samenvoegen van /etc, dan werkt &man.file.1; niet meer. Dat kan als volgt opgelost worden: &prompt.root; cd /usr/src/usr.bin/file &prompt.root; make all install Vragen Moet de wereld opnieuw gemaakt worden voor elke wijziging? Op deze vraag bestaat geen eenvoudig antwoord, omdat dit afhangt van de aard van de wijziging. Als bijvoorbeeld net CVSup is gedraaid en de onderstaande bestanden zijn bijgewerkt, dan is het waarschijnlijk niet de moeite waard om de volledige wereld te herbouwen: src/games/cribbage/instr.c src/games/sail/pl_main.c src/release/sysinstall/config.c src/release/sysinstall/media.c src/share/mk/bsd.port.mk Dan is het handiger om naar de juiste submappen te gaan, daar make all install uit te voeren en dat is het zo'n beetje. Maar als er iets wezenlijks is veranderd, bijvoorbeeld src/lib/libc/stdlib, dan dient ofwel de wereld herbouwd te worden of tenminste die delen die statisch gelinkt zijn (en ook al het andere dat statisch gelinkt is en onderdeel is van een systeem). Uiteindelijk beslist een beheerder zelf. Misschien vindt die het prettig iedere twee weken de wereld te herbouwen terwijl de wijzigingen in die twee weken binnenkomen. Een andere beheerder herbouwt alleen die onderdelen die veranderd zijn en vertrouwt erop dat hij alle afhankelijkheden in de gaten heeft. Natuurlijk hangt het ook af van de keuze hoe vaak het wenselijk is bij te werken en of &os.stable; of &os.current; wordt bijgehouden. Het compileren gaat fout met veel meldingen van signal 11signal 11 (of andere signalnummers). Wat is er aan de hand? Dit wijst meestal op hardwareproblemen. Het (her)bouwen van de wereld is een prima manier om een stresstest op hardware uit te voeren en hierdoor komen vaak geheugenproblemen bovendrijven. Die resulteren vaak in een compiler die op mysterieuze wijze overlijdt na het ontvangen van vreemde signalen. Dit probleem is nog duidelijker als na het herstarten van de make het proces opnieuw stopt op een ander punt. Hier biedt niets anders uitkomst dan componenten in een systeem wisselen om uit te zoeken welk component er faalt. Kan /usr/obj verwijderd worden na afloop? Het korte antwoord is ja. /usr/obj bevat alle objectbestanden die tijdens het compileren zijn gemaakt. Normaliter is een van de eerste stappen in het make buildworld proces deze map verwijderen en een verse start maken. In dit geval heeft het behouden van /usr/obj na het afronden weinig zin en geeft het ook nogal wat extra vrije schijfruimte (ongeveer 2 GB). Als er veel kennis aanwezig is bij een beheerder, dan kan make buildworld aangegeven worden deze stap over te slaan. Hierdoor draaien volgende builds veel sneller, omdat veel broncode niet opnieuw gecompileerd hoeft te worden. De andere kant van de medaille is dat er subtiele afhankelijkheidsproblemen kunnen ontstaan, waardoor een build op bijzondere wijze kan falen. Hierdoor onstaat regelmatig ruis op &os; mailinglijsten als er iemand klaagt dat zijn build faalt, terwijl hij zich niet realiseert dat dit komt doordat hij zijn updateproces niet volgens het boekje heeft uitgevoerd. Kunnen onderbroken builds gecontinueerd worden? Dit hangt af van hoever een systeem was voordat een probleem gevonden werd. Normaal gesproken (en dit is geen vaste regel) maakt het proces make buildworld nieuwe kopieën van essentiele hulpprogramma's (zoals &man.gcc.1; en &man.make.1;) en de systeembibliotheken. Deze hulpprogramma's en bibliotheken worden daarna geďnstalleerd. De nieuwe hulpprogramma's en bibliotheken worden daarna gebruikt om zichzelf opnieuw op te bouwen en wederom te installeren. Het complete systeem (nu met gewone programma's zoals &man.ls.1; en &man.grep.1;) wordt daarna opnieuw gebouwd met de nieuwe systeembestanden. Als een systeem in de laatste fase zit (wat uit de uitvoer blijkt) kan dit redelijk veilig gedaan worden: … fix the problem … &prompt.root; cd /usr/src &prompt.root; make -DNO_CLEAN all Dit maakt het werk van de vorige make buildworld niet ongedaan. Als het onderstaande bericht in de uitvoer van make buildworld staat, dan is het redelijk veilig om het te doen: -------------------------------------------------------------- Building everything.. -------------------------------------------------------------- Als dat bericht er niet is, of er is onzekerheid over, dan is het altijd beter om de build opnieuw te starten vanaf het begin. Kan kan de wereld bouwen versneld worden? Draai in single-user modus; Zet de mappen /usr/src en /usr/obj op aparte bestandssystemen die op aparte schijven staan. Hang deze schijven als mogelijk aan aparte schijfcontrollers; Nog beter, verspreid de bestandssystemen over meerdere schijven via het apparaat &man.ccd.4; (concatenated disk driver); Zet profiling uit (voeg NO_PROFILE=true toe aan /etc/make.conf). Het is zeer waarschijnlijk niet nodig; Geef de optie mee aan &man.make.1; om meerdere processen parallel te laten lopen. Dit helpt in de meeste gevallen, onafhankelijk of er gewerkt wordt op een systeem met één of meerdere processoren; Het bestandssysteem dat /usr/src bevat, kan (opnieuw) gemount worden met de optie . Dit voorkomt dat het bestandssysteem de toegangsmomenten registreert. Deze informatie is waarschijnlijk toch niet nodig. &prompt.root; mount -u -o noatime /usr/src In dit voorbeeld wordt aangenomen dat /usr/src op zijn eigen bestandssysteem staat. Als dit niet het geval is (bijvoorbeeld als het onderdeel is van /usr), dan moet het mountpunt voor dat bestandssysteem gebruikt moeten worden en niet /usr/src; Het bestandssysteem dat /usr/obj gevat kan (opnieuw) worden gemount met de optie . Dit zorgt ervoor dat schrijfacties naar een schijf asynchroon plaatsvinden. In andere woorden: de schrijfactie wordt direct uitgevoerd en de gegevens worden later naar de schijf geschreven. Dit stelt het systeem in staat om data geclusterd weg te schrijven, wat een grote prestatieverbetering kan opleveren. Houd er rekening mee dat deze optie het bestandssysteem kwetsbaarder maakt. Met deze optie is er een vergrote kans dat, indien er een stroomstoring optreed, het bestandssysteem in een niet meer te herstellen staat komt als de machine herstart. Als op dit bestandssysteem alleen /usr/obj staat, is dit geen probleem. Als er andere belangrijke gegevens op hetzelfde bestandssysteem staan, zorg er dan voor dat er verse back-ups zijn voordat deze optie aangezet wordt. &prompt.root; mount -u -o async /usr/obj Zorg ervoor, zoals al eerder is aangegeven, dat als /usr/obj niet op een eigen bestandssysteem staat, het juiste mountpunt wordt gebruikt. Wat te doen als er iets mis gaat? Zorg ervoor dat het systeem geen rommel meer bevat van eerdere builds. Het volgende helpt daarbij: &prompt.root; chflags -R noschg /usr/obj/usr &prompt.root; rm -rf /usr/obj/usr &prompt.root; cd /usr/src &prompt.root; make cleandir &prompt.root; make cleandir Inderdaad, make cleandir moet twee keer gedraaid worden. Herstart daarna het complete proces vanaf make buildworld. Als er nog steeds problemen zijn, stuur dan de foutmelding en de uitvoer van uname -a naar de &a.questions;. Wees bereid aanvullende vragen over het systeem te beantwoorden! Antn Shterenlikht Gebaseerd op notities van Het verwijderen van overbodige bestanden, directories en bibliotheken Verwijderen van overbodige bestanden, directories en bibliotheken Als onderdeel van de &os; ontwikkel levenscyclus kan het van tijd tot tijd gebeuren dat bestanden en de inhoud ervan overbodig worden. Dit kan komen doordat de functionaliteit ergens anders geďmplementeerd is, het versienummer van de bibliotheek veranderd is of hij is totaal van het systeem verdwenen. Dit is inclusief oude bestanden, bibliotheken en directories welke verwijderd moeten worden bij het updaten van het systeem. Het voordeel voor de gebruiker is dat het systeem niet vervuild wordt met oude bestanden die onnodig ruimte innemen op het opslag (en back-up) systeem. Ook is het zo dat als de oude bibliotheek een beveiligings of stabiliteits probleem had, er moet worden geupdate naar de nieuwere bibliotheek om het systeem veilig te houden en te voorkomen dat er crashes komen door de oude implementatie van de bibliotheek. De bestanden, directories en bibliotheken welke als overbodig worden gezien zijn beschreven in /usr/src/ObsoleteFiles.inc. De volgende instructies zullen helpen om deze verouderde bestanden te verwijderen tijdens het systeem upgrade proces. Er wordt aangenomen dat de stappen gevolgd worden zoals uitgelegd in . Na het make installworld commando en het daarop volgende mergemaster commando succesvol uitgevoerd zijn kan er op de volgende manier gecontroleerd worden voor verouderde bestanden en bibliotheken: &prompt.root; cd /usr/src &prompt.root; make check-old Als er verouderde bestanden gevonden worden kunnen deze verwijderd worden door het volgende commando: &prompt.root; make delete-old Zie het /usr/src/Makefile bestand voor meer interessante targets. Er wordt een prompt getoond voordat elk verouderd bestand wordt verwijderd. Deze prompt kan worden overgeslagen en het systeem deze bestanden automatisch laten verwijderen door gebruik te maken van de BATCH_DELETE_OLD_FILES make variabele als volgt: &prompt.root; make -DBATCH_DELETE_OLD_FILES delete-old Dit kan ook worden gedaan door deze commando's door yes te pipen als volgt: &prompt.root; yes|make delete-old Waarschuwing Het verwijderen van verouderde bestanden zal applicaties stuk maken die nog gebruik maken van de overbodige bestanden. Dit is zeker waar voor oude bibliotheken. In de meeste gevallen moeten de programma's, ports of bibliotheken opnieuw gecompileerd worden voordat make delete-old-libs wordt uitgevoerd. Gereedschappen om gedeelde bibliotheek afhankelijkheden te controleren zijn beschikbaar in de Ports Collectie in sysutils/libchk of sysutils/bsdadminscripts. Overbodige gedeelde bibliotheken kunnen conflicteren met nieuwere bibliotheken welke berichten zoals deze kunnen veroorzaken: /usr/bin/ld: warning: libz.so.4, needed by /usr/local/lib/libtiff.so, may conflict with libz.so.5 /usr/bin/ld: warning: librpcsvc.so.4, needed by /usr/local/lib/libXext.so, may conflict with librpcsvc.so.5 Om deze problemen op te lossen moet bepaald worden welke port deze bibliotheek heeft geďnstalleerd: &prompt.root; pkg_info -W /usr/local/lib/libtiff.so /usr/local/lib/libtiff.so was installed by package tiff-3.9.4 &prompt.root; pkg_info -W /usr/local/lib/libXext.so /usr/local/lib/libXext.so was installed by package libXext-1.1.1,1 Deďnstalleer, herbouw en herinstalleer de port. De ports-mgmt/portmaster en ports-mgmt/portupgrade gereedschappen kunnen gebruikt worden om deze processen te automatiseren. Nadat zeker is dat alle ports opnieuw gebouwd zijn, en de oude bibliotheken niet meer gebruikt worden, kunnen deze verwijderd worden met het volgende commando: &prompt.root; make delete-old-libs Mike Meyer Bijgedragen door Meerdere machines bijwerken NFS meerdere machines installeren Als er meerdere machines zijn die dezelfde broncode bijhouden, lijkt het downloaden van alle broncode en alles overal opnieuw bouwen zonde van de bronnen: harde schijfruimte, netwerk bandbreedte, en processorbelasting. Dit klopt en de oplossing is om alles op één machine te doen terwijl de overige machines het uitgevoerde werk benaderen via NFS. Nu wordt een methode beschreven waarmee dit gedaan kan worden. Benodigdheden Als eerste moet er een groep van machines gekozen worden die dezelfde set aan binaire bestanden zal draaien, hier een bouwgroep. Elke machine kan een eigen afwijkende kernel hebben maar moet dezelfde binaire gebruikersbestanden draaien. Uit die groep moet een machine gekozen worden die de bouwmachine wordt. Dit wordt de machine waar de wereld en kernel op gebouwd worden. In het meest ideale geval is dit een snelle machine die genoeg processorkracht vrij heeft om make buildworld en make buildkernel te draaien. Er moet ook een machine gekozen worden die de testmachine wordt waarop alle bijgewerkte software wordt test voordat die in productie wordt genomen. Dit moet een machine zijn die voor langere tijd down mag zijn. Dit kan de bouwmachine zijn maar dat hoeft niet per se. Alle machines in deze bouwgroep moeten ingesteld worden om /usr/obj en /usr/src vanaf dezelfde machine te mounten op hetzelfde punt. In het meest ideale geval zijn dit twee verschillende schijven op de bouwmachine, maar ze kunnen ook door middel van NFS op die machine gemount zijn. Als er meerdere bouwgroepen zijn, dan moet /usr/src op één bouwmachine staan en door middel van NFS gemount worden op de overige machines. Zorg er als laatste voor dat /etc/make.conf en /etc/src.conf op alle machines in de bouwgroep het eens zijn met de bouwmachine. Dat betekent dat de bouwmachine alle delen van het basissysteem moet bouwen die elke machine in de bouwgroep installeert. Ook heeft elke bouwmachine zijn kernelnaam ingesteld met KERNCONF in /etc/make.conf en de bouwmachine moet ze allemaal hebben in KERNCONF, zijn eigen kernel eerst. De bouwmachine moet de instellingenbestanden voor elke machine in /usr/src/sys/arch/conf hebben als deze machine de kernels voor de overige machines gaat bouwen. Basissysteem Nu kan één systeem alles bouwen. Bouw de kernel en wereld zoals beschreven in op de bouwmachine, maar installeer niets. Zodra de bouw klaar is, moet op de testmachine de kernel geďnstalleerd en getest worden. Als deze machine /usr/src en /usr/obj mount via NFS, moet na een herstart in single-user modus het netwerk ingeschakeld worden zodat de mounts opnieuw gemaakt kunnen worden. De makkelijkste manier om dit te doen is om te starten in multi-user modus en daar shutdown now starten om in single-user modus te komen. Eenmaal daar aangekomen kunnen de nieuwe kernel en de wereld geďnstalleerd worden en kan daarna normaal mergemaster gestart worden. Zodra dit klaar is, kan de machine opnieuw gestart worden om naar multi-user modus terug te keren. Nadat zeker is dat alles op de testmachine correct werkt, kan dezelfde procedure gebruikt worden om de nieuwe software op elke machine te installeren in de bouwgroep. Ports Dezelfde ideeën kunnen gebruikt worden voor de ports. De eerste kritieke stap is om /usr/ports te mounten op alle machines in de bouwgroep. Daarna kan /etc/make.conf correct ingesteld worden om de distfiles te delen. De variabele DISTDIR moet wijzen naar een gedeelde map waarin geschreven kan worden door de gebruiker waar root naar wijst in de NFS mounts. Op elke machine moet WRKDIRPREFIX naar een lokale bouwmap wijzen. Als er pakketten gebouwd en gedistribueerd worden moet PACKAGES naar een map wijzen gelijkvormig aan de instelling voor DISTDIR. diff --git a/nl_NL.ISO8859-1/books/handbook/introduction/chapter.xml b/nl_NL.ISO8859-1/books/handbook/introduction/chapter.xml index bb1698b662..990bec210c 100644 --- a/nl_NL.ISO8859-1/books/handbook/introduction/chapter.xml +++ b/nl_NL.ISO8859-1/books/handbook/introduction/chapter.xml @@ -1,1173 +1,1017 @@ Jim Mock Gereorganiseerd en delen herschreven door Arjan van Leeuwen Vertaald door Introductie Overzicht Welkom bij &os;! Dit hoofdstuk beschrijft de verschillende aspecten van het &os; Project: geschiedenis, doelen, ontwikkelmodel en meer. Na het lezen van dit hoofdstuk weet de lezer: Hoe &os; gerelateerd is aan andere besturingssystemen; De geschiedenis van het &os; Project; De doelen van het &os; Project; De fundering van het &os; open-source ontwikkelmodel; En natuurlijk: waar de naam &os; vandaan komt. Welkom bij &os;! 4.4BSD-Lite &os; is een op 4.4BSD-Lite gebaseerd besturingssysteem voor Intel (x86 en &itanium;), AMD64 en Sun &ultrasparc; computers. Er zijn ook ports naar andere architecturen in voorbereiding. Er is nog meer informatie over de geschiedenis van &os; of over de huidige uitgave. Als de lezer wil bijdragen aan het project (code, hardware, geld) wordt aangeraden het artikel Bijdragen aan &os; te lezen. Wat kan &os;? &os; heeft veel mogelijkheden die het bespreken waard zijn. Hier zijn er enkele op een rij gezet: - preemptive multitasking - - Preemptive multitasking zorgt + Preemptive multitaskingpreemptive multitasking zorgt ervoor dat meerdere programma's en gebruikers op dezelfde computer kunnen werken, zonder dat de systeemrespons of stabiliteit beďnvloed wordt. - Meerdere gebruikers - Ondersteuning voor meerdere - gebruikers maakt het mogelijk dat + gebruikersMeerdere gebruikers maakt het mogelijk dat verschillende mensen een &os; systeem tegelijkertijd kunnen gebruiken voor een groot aantal taken. Dit betekent bijvoorbeeld dat randapparaten als printers en tapedrives gedeeld kunnen worden door alle gebruikers van het systeem en dat individuele beperkingen ingesteld kunnen worden voor gebruikers of voor groepen gebruikers, zodat kritieke systeembronnen beschermd kunnen worden tegen onrechtmatig of overmatig gebruik. - TCP/IP netwerken - Krachtige mogelijkheden voor TCP/IP - netwerken met ondersteuning voor + netwerkenTCP/IP netwerken met ondersteuning voor industriestandaarden als SCTP, DHCP, NFS, NIS, PPP, SLIP, IPsec en IPv6. Dit betekent dat een &os;-systeem makkelijk kan samenwerken met andere systemen en dat het kan functioneren als bedrijfsserver, waarbij het belangrijke functies als NFS (bestandsdeling over het netwerk), email, webdiensten, FTP, routing en firewall-diensten kan aanbieden. - Geheugenbeveiliging - - Geheugenbeveiliging garandeert dat + GeheugenbeveiligingGeheugenbeveiliging garandeert dat applicaties (of gebruikers) elkaar niet kunnen storen. Een crashende applicatie heeft totaal geen effect op andere applicaties. &os; is een 32-bits besturingssysteem (64-bits op de &itanium;, AMD64, en &ultrasparc;) en is van de grond af aan zo ontworpen. - - X Window systeem - - - Het X Window systeem + Het X Window systeemX Window systeem (X11R7), een industriële standaard, biedt een grafische gebruikersinterface (GUI) met als enige benodigdheden een VGA-kaart en een beeldscherm. - - binaire compatibiliteit - - Linux - - - - binaire compatibiliteit - - SCO - - - - binaire compatibiliteit - - SVR4 - - - - binaire compatibiliteit - - BSD/OS - - - - binaire compatibiliteit - - NetBSD - - Door binaire compatibiliteit met - veel programma's voor &linux;, SCO, SVR4, BSDI en NetBSD + veel programma's voor &linux;binaire compatibiliteitLinux, + SCObinaire compatibiliteitSCO, + SVR4binaire compatibiliteitSVR4, + BSDIbinaire compatibiliteitBSD/OS en + NetBSDbinaire compatibiliteitNetBSD is het mogelijk om deze programma's zonder snelheidsverlies op &os; te draaien. Er zijn duizenden applicaties beschikbaar in de &os; ports en pakketten collectie. Waarom zoeken op het Internet als het allemaal al klaarstaat? Duizenden andere en makkelijk over te zetten applicaties zijn beschikbaar op het Internet. &os; is broncode-compatibel met de meeste populaire commerciële &unix; systemen, wat betekent dat veel applicaties nagenoeg geen wijzigingen vereisen om te compileren op &os;. - Virtueel geheugen - - Het demand-paged virtueel geheugen + Het demand-paged virtueel geheugenVirtueel geheugen en de gecombineerde VM/buffer cache van &os; zorgen ervoor dat applicaties met grote geheugenbehoeften niets te kort komen, terwijl de systeemrespons niet achteruit gaat. - - Symmetric Multi-Processing (SMP) - - - SMP-ondersteuning voor computers + SMP-ondersteuningSymmetric Multi-Processing (SMP) voor computers met meerdere processoren. - - compilers - - C - - - - compilers - - C++ - - - Een volledige C en - C++ + Een volledige CcompilersC en + C++compilersC++ ontwikkelomgeving. Vele andere programmeertalen, te gebruiken voor onderzoek of geavanceerde ontwikkeling, zijn ook beschikbaar in de ports- en pakketcollectie. - broncode - - De broncode van het hele + De broncodebroncode van het hele systeem is beschikbaar, zodat gebruikers de volledige controle over het systeem in handen hebben. Waarom genoegen nemen met alleen het erewoord van de softwarefabrikant, als een compleet open systeem ook tot de mogelijkheden behoort? Uitgebreide online documentatie. En nog veel meer! 4.4BSD-Lite Computer Systems Research Group (CSRG) U.C. Berkeley &os; is gebaseerd op de 4.4BSD-Lite uitgave van de Computer Systems Research Group (CSRG) aan de University of California in Berkeley en borduurt voort op een lange traditie van ontwikkeling van BSD-systemen. Het &os; Project heeft duizenden uren gestoken in het afstellen van het systeem voor maximale prestaties en betrouwbaarheid in realistische en veel voorkomende situaties. Terwijl veel commerciële bedrijven blijven worstelen met het uitbrengen van besturingssystemen met dergelijke mogelijkheden, prestaties en betrouwbaarheid, kan &os; deze nu bieden! De toepassingen voor &os; worden alleen beperkt door eigen fantasie. Van software-ontwikkeling tot fabrieksautomatisering, van voorraadbeheersing tot de azimuth-correctie van een satellietantenne: als het kan met een commercieel &unix;product, dan kan het ook met &os;! &os; vaart ook wel bij de letterlijk duizenden open-source programma's, vaak van bijzonder hoge kwaliteit, die ontwikkeld zijn in onderzoekscentra, universiteiten over de hele wereld en open-source gemeenschappen, en die beschikbaar zijn voor weinig of geen geld. Ook steeds meer commerciële applicaties vinden hun weg naar &os;. Omdat ook de broncode van &os; zelf vrij beschikbaar is, kan het systeem aangepast worden voor speciale toepassingen of projecten, op manieren die meestal niet mogelijk zijn met besturingssystemen van vooraanstaande commerciële softwarehuizen. Hier zijn een aantal voorbeelden van toepassingen waar &os; voor gebruikt wordt: Internetdiensten: de robuuste TCP/IP netwerkarchitectuur die in &os; zit, maakt het een ideaal platform voor uiteenlopende Internetdiensten als: - FTP servers - - FTP servers; + FTP servers;FTP servers - webservers - - World Wide Webservers (standaard of beveiligd + World Wide Webserverswebservers (standaard of beveiligd [SSL]); IPv4 en IPv6 routering - firewall - - NAT - - Firewalls en NAT (IP-maskering) + Firewallsfirewall en NATNAT (IP-maskering) gateways; - - elektronische mail - - e-mail - - - e-mail - - E-mail servers; + E-mail servers;e-mail - USENET - - USENET nieuws of Bulletin Board (BBS) + USENETUSENET nieuws of Bulletin Board (BBS) systemen; En meer... &os; kan eenvoudig geleerd worden op een goedkope standaard-PC, om later verder te groeien naar een professioneel Xeon-systeem met 4 processoren (of meer!) en RAID opslagsystemen als een bedrijf groeit. Onderwijs: is de lezer informaticastudent of werkzaam in een ander vakgebied dat hier mee te maken heeft? Er is geen betere manier om besturingssystemen, computerarchitecturen en netwerken te bestuderen dan de hands-on open-source ervaring die &os; kan bieden. Gratis beschikbare programma's voor CAD, wiskundige toepassingen en grafisch ontwerp maken &os; ook heel handig voor mensen wiens primaire interesse voor de computer ligt bij het voltooien van ander werk! Onderzoek: omdat de broncode van het volledige systeem beschikbaar is, vormt &os; een uitstekende basis voor het onderzoeken van besturingssystemen of andere takken in de informatica. De open natuur van &os; maakt het ook mogelijk voor groepen mensen over de hele wereld om met elkaar samen te werken, zonder dat men zich zorgen hoeft te maken over speciale licentieovereenkomsten of beperkingen op wat er besproken kan worden in open fora. - router - - DNS Server - - Netwerken: nieuwe router nodig? - Of een nameserver (DNS)? Een firewall om een intern netwerk + Netwerken: nieuwe routerrouter nodig? + Of een nameserver (DNS)DNS Server? Een firewall om een intern netwerk te beschermen? &os; kan die ongebruikte 486 of Pentium PC die nog ergens in een hoekje ligt gemakkelijk omtoveren tot een geavanceerde router met uitgebreide pakketfilter mogelijkheden. - - X Window systeem - - - X Window werkstation: &os; is een + X Window werkstation:X Window systeem &os; is een prima keuze als goedkope X terminal oplossing, door gebruik te maken van de gratis beschikbare X11 server. In tegenstelling tot een pure X terminal kan &os; ook applicaties lokaal draaien, wat een verlichting van de centrale server tot gevolg kan hebben. &os; heeft zelfs de mogelijkheid om schijfloos op te starten, zodat individuele werkstations nog goedkoper en makkelijker te beheren zijn. Bureaublad: de beschikbaarheid van geavanceerde bureaubladomgevingen als KDE en GNOME en kantoortoepassingen als tekstverwerkers en spreadsheet-programma's in de ports- en pakketcollectie maken van &os; een uitgebreid desktop-platform. Thuis en op het werk zorgt &os; ervoor dat er snel, efficiënt en veilig gewerkt kan worden! - - GNU Compiler Collection - - Software Ontwikkeling: bij het standaard &os;-systeem zit al een volledige verzameling van ontwikkelgereedschappen, inclusief de bekende - GNU C/C++ compiler en debugger. + GNU C/C++ compilerGNU Compiler Collection en debugger. &os; is beschikbaar in zowel broncode als binaire vorm op CD-ROM, DVD en via FTP. In staat meer informatie over het verkrijgen van &os;. Wie gebruiken &os;? gebruikers grote sites die &os; draaien &os; wordt gebruikt als platform voor apparaten en producten van vele van 's werelds grootste IT-bedrijven, waaronder: - Apple - - Apple + AppleApple - Cisco - - Cisco + CiscoCisco - Juniper - - Juniper + JuniperJuniper - NetApp - - NetApp + NetAppNetApp &os; wordt ook gebruikt om sommige van de grootste sites op het Internet te draaien, waaronder: - Yahoo! - Yahoo! + url="http://www.yahoo.com/">Yahoo!Yahoo! - Yandex - - Yandex + YandexYandex - Apache - Apache + url="http://www.apache.org/">ApacheApache - Rambler - - Rambler + RamblerRambler - Sina - - Sina + SinaSina - Pair Networks - Pair - Networks + NetworksPair Networks - Sony Japan - Sony - Japan + JapanSony Japan - Netcraft - Netcraft + url="http://www.netcraft.com/">NetcraftNetcraft - NetEase - - NetEase + NetEaseNetEase - Weathernews - Weathernews + url="http://www.wni.com/">WeathernewsWeathernews - TELEHOUSE America - TELEHOUSE - America + AmericaTELEHOUSE America - Experts Exchange - Experts - Exchange + ExchangeExperts Exchange en nog veel meer sites. Over het &os; Project Deze paragraaf geeft wat meer achtergrondinformatie over het project, inclusief een korte geschiedenis, projectdoelen, en het ontwikkelmodel van het project. Jordan Hubbard Bijgedragen door Een korte geschiedenis van &os; 386BSD Patchkit Hubbard, Jordan Williams, Nate Grimes, Rod &os; Project geschiedenis Het &os; Project zag het licht in het begin van 1993, gedeeltelijk als een voortzetting van de Unofficial 386BSD Patchkit door de 3 laatste coördinatoren van de patchkit: Nate Williams, Rod Grimes en ikzelf. 386BSD Het oorspronkelijke doel was om een zogenaamde 'snapshot'-uitgave te maken van 386BSD, om zo een aantal problemen op te lossen die niet op te lossen waren met het patchkit-mechanisme dat eerder gebruikt was. Sommigen kunnen zich misschien nog herinneren dat de werktitel van het project in het begin nog 386BSD 0.5 of 386BSD Interim was, refererend aan het oorspronkelijke doel. Jolitz, Bill 386BSD was het besturingssysteem van Bill Jolitz en had tot op dat moment geleden onder het feit dat er al bijna een jaar niet naar omgekeken was. Terwijl de patchkit steeds groter en onhandiger werd, was een groep mensen het er over eens dat er iets moest gebeuren en beslisten om Bill te assisteren bij het maken van een tussentijdse cleanup-snapshot. Deze plannen kwamen echter tot een plotseling einde toen Bill Jolitz besliste om zijn toestemming voor het project in te trekken, zonder dat er een alternatief werd geboden. Greenman, David Walnut Creek CD-ROM Het duurde niet lang om te beslissen dat het doel nog steeds belangrijk was, zelfs zonder de ondersteuning van Bill, dus werd de naam &os; aangenomen, naar een idee van David Greenman. De oorspronkelijke doelen werden opgesteld na het raadplegen van de gebruikers van het systeem. Toen het erop begon te lijken dat dit project misschien wel snel realiteit kon worden, werd contact opgenomen met Walnut Creek CD-ROM vanuit het oogpunt om de distributiekanalen van &os; te verbeteren voor diegenen die geen toegang hadden tot Internet. Walnut Creek CD-ROM ondersteunde niet alleen het idee om &os; op CD-ROM te distribueren, maar bood het project ook een systeem en een snelle Internetverbinding om mee te werken. Zonder Walnut Creek CD-ROM's bijna onbeperkte vertrouwen in wat op dat moment nog een compleet onbekend project was, is het onwaarschijnlijk dat &os; zo ver gekomen zou zijn, en zo snel, als het vandaag de dag is. 4.3BSD-Lite Net/2 U.C. Berkeley 386BSD Free Software Foundation De eerste CD-ROM (en algemene op het net beschikbare) distributie was &os; 1.0, uitgebracht in december 1993. Deze versie was gebaseerd op de 4.3BSD-Lite (Net/2) tape van U.C. Berkeley, met veel toevoegingen van 386BSD en de Free Software Foundation. Het werd een redelijk succes voor een eerste aanbod, en werd opgevolgd door de zeer succesvolle &os; 1.1 uitgave in mei 1994. Novell U.C. Berkeley Net/2 AT&T Rond deze tijd vormde zich nogal onverwacht een stormachtige lucht aan de horizon toen Novell en U.C. Berkeley hun langlopende rechtszaak over de legale status van de Berkeley Net/2 tape oplosten met een schikking. Een voorwaarde van deze schikking was dat U.C. Berkeley toegaf dat grote delen van Net/2 beladen code was en het eigendom van Novell, die deze code op haar beurt overgenomen had van AT&T enige tijd hiervoor. Wat Berkeley hiervoor terugkreeg was Novell's zegen over de 4.4BSD-Lite uitgave; wanneer deze uitkwam zou Novell verklaren dat geen van de code hierin eigendom van Novell was, en bestaande Net/2 gebruikers zou sterk aanbevolen worden om over te stappen naar deze nieuwe versie. Dit gold ook voor &os; en het project werd de tijd gegeven tot juli 1994 om te stoppen met het distribueren van het eigen op Net/2-gebaseerde product. De schikking liet wel toe dat nog een laatste uitgave werd uitgebracht voor de deadline en dat was &os; 1.1.5.1. &os; nam toen de enorme taak op zich om zichzelf letterlijk opnieuw uit te vinden, met als basis een volledig nieuwe en nogal incomplete verzameling van delen van 4.4BSD-Lite. De Lite uitgaven werden zo genoemd omdat Berkeley's CSRG grote delen code die nodig waren om een werkend systeem te construeren had weggelaten (om allerlei legale redenen) en omdat de Intel port van 4.4 grotendeels incompleet was. Het kostte het project tot november 1994 om deze overstap te maken. Op dat moment werd &os; 2.0 op het net en op CD-ROM (aan het einde van december) uitgebracht. Ondanks het feit dat deze uitgave nog wat ruige kanten had, werd het een groot succes en werd het gevolgd door de robuustere en makkelijker te installeren &os; 2.0.5 in juni 1995. In augustus 1996 is &os; 2.1.5 uitgebracht en deze bleek populair genoeg bij Internet service providers (ISP's) en andere commerciële gebruikers van &os; om nog een uitgave van de 2.1-STABLE tak te rechtvaardigen. Dit was &os; 2.1.7.1, uitgebracht in februari 1997. Deze uitgave markeerde het einde van de hoofdstroomontwikkeling op 2.1-STABLE; alleen beveilingsupdates en andere kritieke bugfixes werden nog op deze tak uitgevoerd (RELENG_2_1_0). &os; 2.2 werd afgesplitst van de ontwikkelingstak (-CURRENT) in november 1996 als RELENG_2_2 en de eerste volledige uitgave (2.2.1) werd uitgebracht in april 1997. Andere uitgaven van de 2.2 tak werden uitgebracht in de zomer en herfst van '97. De laatste (2.2.8) verscheen in november 1998. De eerste officiële 3.0 uitgave verscheen in oktober 1998 en was het begin van het einde voor de 2.2 tak. Er was opnieuw een afsplitsing op 20 januari 1999, wat leidde tot de 4.0-CURRENT en 3.X-STABLE takken. Vanuit 3.X-STABLE werd versie 3.1 uitgebracht op 15 februari 1999, 3.2 op 15 mei 1999, 3.3 op 16 september 1999, 3.4 op 20 december 1999 en 3.5 op 24 juni 2000. De laatste werd enkele dagen later gevolgd door een puntuitgave-update naar 3.5.1, om enkele net-ontdekte beveiligingsfouten in Kerberos te corrigeren. Dit was de laatste uitgave van de 3.X tak. Een nieuwe tak werd gemaakt op 13 maart 2000, de 4.X-STABLE tak. Er zijn verschillende uitgaven van deze tak gemaakt: 4.0-RELEASE werd geďntroduceerd in maart 2000, en de laatste 4.11-RELEASE verscheen in januari 2005. De langverwachte 5.0-RELEASE werd aangekondigd op 19 januari 2003. Dit resultaat van bijna drie jaar werk zette &os; stevig neer op de weg naar geavanceerde multiprocessor- en threading-ondersteuning en introduceerde nieuwe &os; ports voor de &ultrasparc; en ia64 architecturen. Deze uitgave werd gevolgd door 5.1 in juni 2003. De laatste 5.X uitgave uit de –CURRENT-tak was 5.2.1–RELEASE uit februari 2004. De RELENG_5 tak is gemaakt in augustus 2004 en werd gevolgd door 5.3-RELEASE, die het begin van de 5-STABLE tak markeert. De meest recente 5.5-RELEASE is uitgekomen in mei 2006. Er staan geen nieuwe versies gepland voor de RELENG_5 tak. De RELENG_6 tak is gemaakt in juli 2005, de eerste uitgave van de 6.X tak werd vrijgegeven in november 2005. De meest recente 6.4-RELEASE kwam uit in november 2008. Er zullen geen verdere uitgaven komen van de RELENG_6 tak. Deze tak is de laatste tak waarin ondersteuning zit voor de Alpha architectuur. De RELENG_7 tak is gemaakt in oktober 2007. De eerste uitgave van deze tak is 7.0-RELEASE, welke is uitgekomen in februari 2008. De meest recente 7.4-RELEASE kwam uit in februari 2011. Er zullen geen andere uitgaven van de RELENG_7 tak uitkomen. De RELENG_8 tak is gemaakt in augustus 2009. De eerste uitgave van de 8.X tak is 8.0-RELEASE, vrijgegeven in november 2009. De meest recente uitgave &rel2.current;-RELEASE kwam uit in &rel2.current.date;. Er zullen nog andere uitgaven van de RELENG_8 tak uitkomen. De RELENG_9 tak is gemaakt in september 2011. De eerste uitgave van deze tak was &rel.current;-RELEASE, vrijgegeven in &rel.current.date;. Er zullen nog andere uitgaven van de RELENG_9 tak uitkomen. Op dit moment vinden lange-termijn ontwikkelprojecten plaats in de 10.X-CURRENT tak, en snapshot uitgaven van 10.X op CD-ROM (en natuurlijk op het Net) worden continu beschikbaar gemaakt op de snapshot server. Jordan Hubbard Bijgedragen door Doelen van het &os; Project &os; Project doelen Het doel van het &os; Project is om software aan te bieden die gebruikt kan worden voor iedere mogelijke toepassing, zonder beperkingen. Vele ontwikkelaars hebben een belangrijke investering in de code (en het project) zitten en vinden het niet erg om af en toe een financiële compensatie te ontvangen, maar dat is zeker geen voorwaarde. De ontwikkelaars van &os; geloven dat de eerste en belangrijkste missie het aanbieden van code is, aan iedereen die het wil hebben, voor wat voor doel dan ook, zodat de code zo breed mogelijk gebruikt kan worden tot voordeel van zoveel mogelijk mensen. Dit is een van de meest fundamentele doelen van Vrije Software dat &os; enthousiast ondersteunt. GNU General Public License (GPL) GNU Lesser General Public License (LGPL) BSD Copyright Sommige code in &os; valt onder de GNU General Public License (GPL) of Library General Public License (LGPL). Deze code heeft iets meer beperkingen, maar in ieder geval aan de kant waarbij vrije toegang tot de code geforceerd wordt, in plaats van het gebruikelijke tegenovergestelde hiervan. Door de toegevoegde moeilijkheden die kunnen voortkomen uit het commerciële gebruik van GPL software geeft het &os; Project echter de voorkeur aan het meer vrije BSD copyright, wanneer er een redelijk alternatief voor handen is. Satoshi Asami Bijgedragen door Het &os; ontwikkelmodel &os; Project ontwikkelmodel De ontwikkeling van &os; is een erg open en flexibel proces en wordt gevormd door de bijdragen van letterlijk honderden mensen over de hele wereld, zoals te zien is in de lijst van medewerkers. De infrastructuur die wordt gebruikt voor de ontwikkeling van &os; zorgt ervoor dat deze honderden ontwikkelaars kunnen samenwerken over het Internet. Het &os; Project is continu op zoek naar nieuwe ontwikkelaars en ideeën. Om bij te dragen aan de ontwikkeling van &os; is een mail naar &a.hackers; voldoende. De &a.announce; is beschikbaar om mededelingen te doen aan andere &os;-gebruikers over grote veranderingen. Een aantal dingen over het &os; Project en haar ontwikkelingsproces zijn handig om te weten, of een bijdrage nu onafhankelijk of in samenwerking met anderen komt: Het CVS-archief - - CVS - - - - CVS-archief - - - - Concurrent Versions System - - CVS - - - - Subversion - - - - Subversion-archief - - - - SVN - - - - Gedurende een aantal jaren werd de centrale broncode voor &os; bijgehouden door CVS - (Concurrent Versions System), een vrij verkrijgbaar pakket - voor het onderhouden van broncode dat bij &os; zit. In + url="http://www.nongnu.org/cvs/">CVSCVS + (Concurrent Versions System)Concurrent Versions SystemCVS, een vrij verkrijgbaar pakket + voor het onderhouden van broncodeCVS-archief dat bij &os; zit. In juni 2008 is het Project SVN + url="http://subversion.tigris.org/">SVNSubversion (Subversion) gaan gebruiken. Deze overgang werd nodig geacht omdat de technische beperkingen die door CVS worden opgelegd duidelijk - werden wegens de snelle uitbreiding van de broncode en de + werden wegens de snelle uitbreiding van de broncodeSubversion-archief en de hoeveelheid geschiedenis die reeds is opgeslagen. De reservoirs van het Documentatieproject en de Portscollectie zijn ook omgezet van CVS naar - SVN, respectievelijk in mei 2012 en + SVNSVN, respectievelijk in mei 2012 en juli 2012. Hoewel de reservoirs voor src/ en ports/ nu SVN gebruiken, blijven cliëntgereedschappen zoals csup die van de oudere CVS-infrastructuur afhankelijk zijn normaal werken — veranderingen in het SVN-archief worden voor dit doel teruggeplaatst naar CVS. In tegenstelling tot src/ en ports/ wordt het SVN-reservoir voor de documentatie niet teruggeplaatst naar CVS. Het primaire CVS archief staat op een systeem in Santa Clara, Californië, in de VS, waar het wordt gesynchroniseerd met verschillende mirrors over de hele wereld. De boomstructuur van SVN , waarin de broncode voor -CURRENT en -STABLE is te vinden, kan ook makkelijk met die op een eigen systeem gesynchroniseerd worden. Synchroniseren van broncode bevat meer informatie over dit onderwerp. Committers - - committers - - - De zogenaamde committers zijn + De zogenaamde committerscommitters zijn alle mensen die schrijf-rechten hebben in het Subversion-archief van &os;. Deze mensen mogen veranderingen maken aan de broncode van &os; (de term committer is afkomstig van het commit commando van versiebeheersystemen, wat gebruikt wordt om veranderingen door te voeren in het archief). De beste manier om eigen bijdragen te laten keuren door een van de committers is door gebruik te maken van &man.send-pr.1;. Als het erop lijkt dat een bijdrage ergens in het systeem blijft hangen, dan is het ook mogelijk om mail te sturen naar de &a.committers;. Het &os; Core Team - core team - - Het &os; core team zou het + Het &os; core teamcore team zou het equivalent zijn van een raad van bestuur als het &os; Project een bedrijf zou zijn. De primaire taak van het core team is ervoor zorg te dragen dat het project, in zijn geheel, in goede vorm verkeert en de goede richting opgaat. Toegewijde en verantwoordelijke ontwikkelaars uitnodigen om deel te worden van de committers is één van de taken van het core team, net als het rekruteren van nieuwe leden van het core team. Het huidige core team is gekozen door de committers uit een groep van kandidaten (ook allen committers) in juli 2012. Elke twee jaar worden verkiezingen gehouden. Sommige leden van het core team hebben een bijzondere verantwoordelijkheid, wat wil zeggen dat zij er speciaal op toezien dat een bepaald deel van het systeem werkt zoals het hoort. In de lijst van medewerkers staat een complete lijst van ontwikkelaars en hun verantwoordelijkheden. De meeste leden van het core team zijn vrijwilligers. Toewijding betekent dus niet gegarandeerde ondersteuning. De raad van bestuur-analogie hierboven klopt niet helemaal en het is misschien beter om te zeggen dat dit de mensen zijn die hun leven opgaven voor &os;, tegen beter weten in! Externe Bijdragen - externe bijdragen - De grootste groep ontwikkelaars zijn de gebruikers zelf, die &os; continu voorzien van constructief commentaar en oplossingen voor fouten. De handigste manier om contact te houden met het niet-gecentraliseerde deel van de ontwikkeling van &os; is een abonnement nemen op de &a.hackers;, waar allerlei bijdragen, patches en nieuwe ideeën worden bediscussieerd. In is meer informatie te vinden over de verschillende &os; mailinglijsten. De lijst - van medewerkers is lang en groeit + van medewerkersexterne bijdragen is lang en groeit iedere dag, dus wat let de lezer om zelf een bijdrage te doen aan &os;? Programmeren is niet de enige manier om een bijdrage te leveren aan het project. Een meer volledige lijst van dingen die gedaan moeten worden staat op de &os; website. Samengevat is het &os; ontwikkelmodel georganiseerd als een onsamenhangende verzameling van concentrische cirkels. Het gecentraliseerde model is ontworpen voor het gemak van de gebruikers van &os;, die op deze manier makkelijk de wijzigingen in het project kunnen volgen. Niet om potentiële medewerkers buiten de deur te houden! Het is wenselijk om een stabiel besturingssysteem te maken, met een grote verzameling samenhangende applicaties. Dit model heeft zijn waarde op dat gebied bewezen. Om bij te dragen en samen &os; verder te ontwikkelen, is het enige wat het &os; Project vraagt dat te doen met dezelfde toewijding als de huidige ontwikkelaars: succes gegarandeerd! Huidige &os; uitgave NetBSD OpenBSD 386BSD Free Software Foundation U.C. Berkeley Computer Systems Research Group (CSRG) &os; is een open source, op 4.4BSD-Lite gebaseerd besturingssysteem voor Intel (x86 en &itanium;), AMD64, n Sun &ultrasparc; computers. Het is grotendeels gebaseerd op software van de Computer Systems Research Group (CSRG) van de University of California in Berkeley (U.C. Berkeley), met verbeteringen overgenomen van NetBSD, OpenBSD, 386BSD en de Free Software Foundation. Sinds het uitbrengen van &os; 2.0 tegen het einde van 1994, zijn de prestaties, mogelijkheden en stabiliteit van &os; dramatisch verbeterd. &os; heeft namelijk de beschikking over een compleet nieuw subsysteem voor virtueel geheugen, dat niet alleen de prestaties ten goede komt, maar er ook voor zorgt dat het systeem minder geheugen gebruikt dan ooit tevoren. Andere belangrijke verbeteringen zijn de ondersteuning van veel nieuwe hardware, een compleet nieuw systeem voor de ondersteuning van machines met meerdere processoren (SMP) en een nieuwe bibliotheek voor de ondersteuning van multithreading in applicaties. Behalve de basisdistributie van het besturingssysteem, biedt &os; ook een enorme softwarecollectie met duizenden veelgebruikte programma's, de zogenaamde ports. Op het moment van schrijven zijn er al meer dan &os.numports; ports! In de ports zitten alle mogelijke klassen van software die te bedenken zijn, van HTTP-servers tot spellen, van kantoorapplicaties tot multimedia en alles wat er tussenin zit. De complete Portscollectie beslaat zo'n &ports.size; aan schijfruimte. Meer informatie over de ports en over de pakketten is te vinden in . Alle recente versies van &os; bieden een optie aan in de installer (ofwel &man.sysinstall.8; ofwel &man.bsdinstall.8;) om aanvullende documentatie te installeren onder /usr/local/share/doc/freebsd tijdens de eerste installatie van het systeem. De documentatie kan ook op elk later tijdstip worden geďnstalleerd door pakketten te gebruiken zoals beschreven in . De lokaal geďnstalleerde documentatie kan in een browser bekeken worden door de volgende URLs te gebruiken: Het &os; handboek /usr/local/share/doc/freebsd/handbook/index.html De &os; FAQ /usr/local/share/doc/freebsd/faq/index.html De nieuwste versies van deze documenten zijn altijd te vinden op . diff --git a/nl_NL.ISO8859-1/books/handbook/l10n/chapter.xml b/nl_NL.ISO8859-1/books/handbook/l10n/chapter.xml index bbede1b3e5..d7e50a919b 100644 --- a/nl_NL.ISO8859-1/books/handbook/l10n/chapter.xml +++ b/nl_NL.ISO8859-1/books/handbook/l10n/chapter.xml @@ -1,1089 +1,1085 @@ Andrey Chernov Bijgedragen door Michael C. Wu Herschreven door René Ladan Vertaald door Lokalisatie - I18N/L10N gebruiken en instellen Overzicht &os; is een zeer gedistribueerd project met gebruikers over de gehele wereld. Dit hoofdstuk behandelt de internationalisatie- en lokalisatie-eigenschappen van &os; die niet-Engelssprekende gebruikers echt werk laten verzetten. Er zitten veel aspecten van de i18n-implementatie in zowel de systeem- als applicatieniveaus, dus waar mogelijk wordt de lezer verwezen naar meer specifieke bronnen. Na dit hoofdstuk weet de lezer: Hoe verschillende talen en locales gecodeerd zijn op moderne besturingssystemen. Hoe de locale in te stellen voor een login-shell. Hoe de console voor niet-Engelse talen in te stellen. Hoe het X Window systeem effectief met meerdere talen te gebruiken. Waar meer informatie te vinden over het schrijven van i18n-respecterende applicaties. Veronderstelde voorkennis: Weten hoe aanvullende applicaties van derde partijen geďnstalleerd worden (). Beginselen Wat is I18N/L10N? internationalisatie lokalisatie lokalisatie Ontwikkelaars hebben internationalisatie (internationalization afgekort tot de term I18N, de eerste en de laatste letter en het aantal tussenliggende letters. L10N gebruikt hetzelfde schema voor naamgeving en komt van localization. Samen staan I18N/L10N methoden, protocollen en applicaties gebruikers toe de taal van hun keuze te gebruiken. I18N-applicaties zijn geprogrammeerd door gebruik te maken van I18N-gereedschappen van bibliotheken. Daarmee kunnen ontwikkelaars een eenvoudig bestand schrijven en menu's en teksten weergeven in elke taal. Programmeurs worden door het &os; Project sterk aangemoedigd deze conventie te volgen. Waarom I18N/L10N gebruiken? I18N/L10N wordt gebruikt als een gebruiker gegevens wil bekijken, invoeren of verwerken in niet-Engelse talen. Welke talen worden ondersteund door I18N? I18N en L10N zijn niet &os; specifiek. Momenteel kan er gekozen worden uit de meeste grote wereldtalen, inclusief maar niet beperkt tot: Chinees, Duits, Japans, Koreaans, Frans, Russisch en Vietnamees. Lokalisatie gebruiken In al zijn pracht is I18N niet &os; specifiek maar een conventie. Het &os; Project moedigt iedereen aan &os; te helpen deze conventie te gebruiken. locale Lokalisatie-instellingen zijn gebaseerd op drie hoofdtermen: Taalcode, Landcode en Codering. Localenamen zijn als volgt opgebouwd: Taalcode_Landcode.Codering Taal- en landcodes taalcodes landcodes Om een &os;-systeem (of een ander I18N-ondersteunend &unix; achtig systeem) te lokaliseren naar een bepaalde taal, moet de gebruiker de codes voor het specifieke land en taal achterhalen. Landcodes geven applicaties aan welke variatie van de gegeven taal gebruikt moet worden. Ook webbrowsers, SMTP/POP-servers, webservers, enzovoorts maken beslissingen gebaseerd op die codes. Hieronder staan voorbeelden van taal- en landcodes: Taal- en landcode Omschrijving en_US Engels - Verenigde Staten ru_RU Russisch voor Rusland zh_TW Traditioneel Chinees voor Taiwan Een complete lijst van beschikbare locales is beschikbaar via: &prompt.user; locale -a Coderingen coderingen ASCII Sommige talen gebruiken andere ASCII-coderingen dan 8-bit, wijde of multibyte karakters, zie &man.multibyte.3;. Oudere programma's herkennen die niet en interpreteren ze foutief als controlekarakters aan. Afhankelijk van de implementatie moeten gebruikers eventueel een applicatie met wijde of multibyte karakterondersteuning compileren, of hem correct instellen. Om wijde of multibyte karakters in te kunnen voeren en te kunnen verwerken levert de &os; Portscollectie voor elke taal programma's. Hiervoor staat I18N-documentatie in de respectievelijke &os; Port. Voor het bouwen van een gewenste applicatie met lokalisatie is het verstandig de applicatiedocumentatie te bekijken om te bepalen hoe de juiste waarden doorgegeven kunnen worden naar configure, Makefile of de compiler. Houd rekening met: Taalspecifieke enkele C-karakters karakterverzamelingen (zie &man.multibyte.3;), bijvoorbeeld ISO8859-1, ISO-8859-15, KOI8-R of CP437. Wijde of multibyte coderingen, bijvoorbeeld EUC of Big5. Een lijst met actieve karakterverzamelingen staat bij de IANA Registry. &os; gebruikt in plaats hiervan X11-compatible locale-coderingen. I18N applicaties In het &os; Ports en Package systeem hebben I18N-applicaties I18N in hun naam zodat ze eenvoudig herkend kunnen worden. Toch ondersteunen ze niet altijd iedere mogelijk gewenste taal. Locale instellen Meestal is het voldoende om de waarde van de localenaam te exporteren als LANG in de login-shell. Dit kan door die waarde in ~/.login_conf van de gebruiker of in ~/.profile, ~/.bashrc of ~/.cshrc) van de gebruiker te zetten. Het is niet nodig om localedeelverzamelingen als LC_CTYPE of LC_CTIME in te stellen. Bij de taalspecifieke &os; documentatie staat vaak nog informatie. De twee volgende omgevingsvariabelen moeten in de instellingenbestanden ingesteld worden: - POSIX - - LANG voor de &posix; &man.setlocale.3; + LANG voor de &posix;POSIX &man.setlocale.3; functies. - MIME - - MM_CHARSET voor de MIME + MM_CHARSET voor de MIMEMIME karakters voor applicaties. Dit is inclusief het instellen van de gebruikers-shell, het instellen van de specifieke applicatie en de instellingen voor X11. Methoden om locale in te stellen locale loginklasse Er zijn twee methoden om de locale in te stellen en beiden worden hieronder beschreven. De eerste (aanbevolen) methode is door middel van het toekennen van omgevingsvariabelen in de loginklasse en de tweede is mogelijk door middel van het toevoegen van de omgevingsvariabelen aan het opstartbestand van de systeem-shell. Methode loginklasse Deze methode biedt de mogelijkheid om omgevingsvariabelen die nodig zijn voor de localenaam en MIME karakterverzamelingen éénmalig voor elke mogelijke shell toe te kennen in plaats van door toekenning via het opstartbestand van elke shell. Gebruikersinstellingen kunnen door de gebruiker zelf worden gemaakt en voor Beheerdersinstellingen zijn superuser-rechten nodig. Gebruikersinstellingen Hieronder staat een minimaal voorbeeld van een .login_conf bestand in de thuismap van een gebruiker die beide variabelen heeft ingesteld op Latin-1 codering: me:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1: traditioneel Chinees BIG-5 codering Hieronder staat is een voorbeeld van een .login_conf die variabelen instelt voor traditioneel Chinees in BIG-5 codering. Er zijn veel andere variabelen ingesteld zijn omdat sommige software localevariabelen niet correct respecteert voor Chinees, Japans, en Koreaans. # Gebruikers die geen valuta eenheden of tijdformaten voor Taiwan # willen gebruiken kunnen handmatig elke variabele wijzigen. me:\ :lang=zh_TW.Big5:\ :setenv=LC_ALL=zh_TW.Big5:\ :setenv=LC_COLLATE=zh_TW.Big5:\ :setenv=LC_CTYPE=zh_TW.Big5:\ :setenv=LC_MESSAGES=zh_TW.Big5:\ :setenv=LC_MONETARY=zh_TW.Big5:\ :setenv=LC_NUMERIC=zh_TW.Big5:\ :setenv=LC_TIME=zh_TW.Big5:\ :charset=big5:\ :xmodifiers="@im=gcin": # Stel gcin in als XIM invoerserver Zie Beheerdersinstellingen en &man.login.conf.5; voor meer details. Beheerdersinstellingen Er dient gecontroleerd te worden of loginklasse voor gebruikers, /etc/login.conf, de juiste taal instelt door de volgende instellingen in /etc/login.conf: taalnaam|accountstitel:\ :charset=MIME_karakterverzameling: :lang=localenaam:\ :tc=default: Voor het bovenstaande voorbeeld dat gebruik maakt van Latin-1 ziet dat er als hieronder uit: german|Duitse gebruikersaccounts:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:\ :tc=default: Voer voordat de gebruikers login class wordt gewijzigd het volgende uit: &prompt.root; cap_mkdb /etc/login.conf om de nieuwe configuratie in /etc/login.conf zichtbaar te maken voor het systeem. Loginklasse wijzigen met &man.vipw.8; vipw Met vipw kunnen nieuwe gebruikers toegevoegd worden en de instellingen dienen ongeveer als volgt uit te zien: gebruiker:wachtwoord:1111:11:taal:0:0:Gebruikersnaam:/home/gebruiker:/bin/sh Loginklasse wijzigen met &man.adduser.8; adduser loginklasse Met adduser kunnen nieuwe gebruikers toegevoegd worden. Hierna dient één van de volgende stappen uitgevoerd te worden: defaultclass = taal instellen in /etc/adduser.conf. In dit geval dient er voor alle gebruikers van andere talen een default klasse ingevoerd te worden. Er kan ook gekozen worden voor een antwoord op de vraag over taal vanuit &man.adduser.8;: Enter login class: default []: Ook kan het volgende gebruikt worden voor elke gebruiker die een andere taal gebruikt: &prompt.root; adduser -class taal Loginklasse wijzigen met &man.pw.8; pw Als &man.pw.8; wordt gebruikt om nieuwe gebruikers toe te voegen: &prompt.root; pw useradd gebruikersnaam -L taal Methode opstartbestand shell Deze methode wordt niet aanbevolen omdat er instellingenen nodig zijn voor elke mogelijke shell. Het advies is de Methode Loginklasse te gebruiken. MIME locale Om de localenaam en MIME karakterverzameling toe te voegen kunnen gewoon twee omgevingsvariabelen ingesteld worden, zoals hieronder te zien is, in /etc/profile en/of /etc/csh.login opstartbestanden voor shells. Hier wordt de Duitse taal als voorbeeld gebruikt: In /etc/profile: LANG=de_DE.ISO8859-1; export LANG MM_CHARSET=ISO-8859-1; export MM_CHARSET Of in /etc/csh.login: setenv LANG de_DE.ISO8859-1 setenv MM_CHARSET ISO-8859-1 Het is ook mogelijk de bovenstaande instructies toe te toevoegen /usr/share/skel/dot.profile (ongeveer gelijk aan wat hierboven in /etc/profile is gebruikt) of aan /usr/share/skel/dot.login (ongeveer gelijk aan wat hierboven in /etc/csh.login is gebruikt). Voor X11: In $HOME/.xinitrc: LANG=de_DE.ISO8859-1; export LANG Of: setenv LANG de_DE.ISO8859-1 Afhankelijk van de shell (zie boven). Console instellen Voor alle enkele C-karakters karakterverzamelingen worden de juiste lettertypen voor het console ingesteld in /etc/rc.conf voor de taal in kwestie met: font8x16=lettertypenaam font8x14=fontnaam font8x8=fontnaam De lettertypenaam komt uit de map /usr/share/syscons/fonts zonder het achtervoegsel .fnt. sysinstall toetsenmapping schermmapping De gebruiker dient ervoor te zorgen dat indien nodig de juiste enkele C-karakters karakterverzameling wordt ingesteld met /stand/sysinstall. In sysinstall kan Configure en Console gekozen worden. Het is ook mogelijk het volgende aan /etc/rc.conf toe te voegen: scrnmap=schermmappingnaam keymap=toetsenmappingnaam keychange="fkey_nummer sequentie" schermmappingnaam komt uit de map /usr/share/syscons/scrnmaps zonder het achtervoegsel .scm. Meestal is een schermmapping met een overeenkomstig gemapt lettertype nodig als workaround om bit 8 naar bit 9 uit te breiden op een lettertype–karaktermatrix van een VGA-adapter in pseudografische gebieden, dat wil zeggen om letters uit dat gebied te halen als het schermlettertype een bit 8 kolom gebruikt. Als de moused daemon is ingeschakeld met de onderstaande regel in /etc/rc.conf, dan wordt aangeraden de muiscursorinformatie in de volgende paragraaf te bekijken. moused_enable="YES" moused Standaard neemt de muiscursor van het &man.syscons.4; stuurprogramma het bereik 0xd0-0xd3 van de tekenverzameling in beslag. Als een ingestelde taal dit bereik gebruikt, moet het cursorbereik hierbuiten gehaald worden. Om de workaround voor &os; aan te zetten kan de volgende regel aan /etc/rc.conf toegevoegd worden: mousechar_start=3 De toetsenmappingnaam komt uit de map /usr/share/syscons/keymaps zonder het achtervoegsel .kbd. Als niet precies duidelijk is welke toetsenmapping te gebruiken, kan de toetsenmapping getest worden met &man.kbdmap.1; zonder opnieuw op te starten. keychange is nodig om functietoetsen zo te programmeren dat ze overeenkomen met het geselecteerde terminaltype omdat functietoetssequenties niet in de toetsenmapping gedefinieerd kunnen worden. Er dient ook een controle te zijn op een juiste instelling van het juiste terminaltype voor het console in /etc/ttys voor alle ttyv* regels. De huidige instellingen zijn: Karakterverzameling Terminaltype ISO8859-1 of ISO-8859-15 cons25l1 ISO8859-2 cons25l2 ISO8859-7 cons25l7 KOI8-R cons25r KOI8-U cons25u CP437 (VGA standaardinstelling) cons25 US-ASCII cons25w Voor wijde of multibyte karaktertalen kan je juiste &os; port in de map /usr/ports/taal gebruikt worden. Sommige ports verschijnen als console terwijl het systeem ze als serieële vtty ziet. Er dienen dus voldoende vtty's gereserveerd te zijn voor zowel X11 als de pseudo-serieële console. Hier is een gedeeltelijke lijst van applicaties voor het gebruik van andere talen in console: Taal Locatie traditioneel Chinees (BIG-5) chinese/big5con Japans japanese/kon2-16dot of japanese/mule-freewnn Koreaans korean/han X11 instellen Hoewel X11 geen deel is van het &os; Project wordt het hier wel besproken voor &os; gebruikers. Meer details zijn te vinden op de &xorg; website of op de website van een andere X11 server die gebruikt wordt. In ~/.Xresources kunnen applicatiespecifieke I18N instellingen gemaakt worden als lettertypen, menu's, enzovoort. Lettertypen weergeven X11 &truetype; lettertypeserver Eerst moet &xorg; server (x11-servers/xorg-server), geďnstalleerd worden en daarna de &truetype; lettertypen van de taal. Door de gewenste locale in te stellen worden de menu's en dergelijke in de gekozen taal weergegeven. Niet-Engelse karakters invoeren X11 Input Method (XIM) Het X11 Input Method (XIM) protocol is een nieuwe standaard voor alle X11-cliënts. Alle X11-applicaties horen geschreven te worden als XIM-cliënts die invoer aannemen van de XIM-invoerservers. Er zijn meerdere XIM-servers beschikbaar voor verschillende talen. Printerinstellingen Sommige enkele C-karakters karakterverzamelingen zijn standaard hardware-gecodeerd in printers. Voor wijde of multibyte karakterverzamelingen is een speciale installatie nodig en het gebruik van apsfilter wordt dan aangeraden. Een document kan ook naar &postscript; of PDF formaat omgezet worden door gebruik te maken van taalspecifieke conversieprogramma's. Kernel en bestandssystemen Het &os; Snelle Bestandssysteem (FFS) is 8-bit schoon, dus het kan gebruikt worden met elke enkele C-karakters karakterverzameling (zie &man.multibyte.3;), maar er is geen karakterverzamelingnaam opgeslagen in het bestandssysteem. Het is dus rauw 8-bit en het weet niets van coderingsbevelen. Officieel ondersteunt FFS nog geen enkele vorm van wijde of multibyte karakterverzamelingen. Toch hebben sommige wijde of multibyte karakterverzamelingen onafhankelijke patches voor FFS die ondersteuning inschakelen. Dit zijn tijdelijke oplossingen of hacks die niet overdraagbaar zijn en daarom is besloten ze niet in de source tree op te nemen. Op de websites van de talen staan de patchbestanden en meer informatie. &ms-dos; Unicode Voor het &os; &ms-dos; bestandssysteem kan geschakeld worden tussen &ms-dos;, Unicode karakterverzamelingen en gekozen &os; bestandssysteem-karakterverzamelingen. &man.mount.msdosfs.8; beschijft de details. I18N-programma's compileren Veel &os; Ports zijn geschikt gemaakt voor &os; met I18N-ondersteuning. Een aantal daarvan zijn gemarkeerd met -I18N in de portnaam. Deze en nog veel andere programma's hebben ingebouwde ondersteuning voor I18N en behoeven geen speciale aandacht. MySQL Toch is het voor sommige applicaties zoals MySQL nodig dat de Makefile ingesteld is met de specifieke karakterverzameling. Dit wordt normaliter gedaan in de Makefile of door middel van het doorgeven van een waarde aan configure in de broncode. &os; lokaliseren naar talen Andrey Chernov Oorspronkelijk bijgedragen door Russisch (KOI8-R codering) lokalisatie Russisch Voor meer informatie over KOI8-R codering, zie de KOI8-R References (Russian Net Character Set). Locale instellen Voeg de volgende regels toe aan ~/.login_conf bestand: me:Mijn account:\ :charset=KOI8-R:\ :lang=ru_RU.KOI8-R: Zie eerder in dit hoofdstuk voor voorbeelden over het opzetten van de locale. Console instellen Voeg de volgende regel toe aan /etc/rc.conf: mousechar_start=3 Gebruik ook de volgende instellingen in /etc/rc.conf: keymap="ru.koi8-r" scrnmap="koi8-r2cp866" font8x16="cp866b-8x16" font8x14="cp866-8x14" font8x8="cp866-8x8" Voor elke ttyv* regel in /etc/ttys, gebruik cons25r als het terminaltype. Zie eerder in dit hoofdstuk voor voorbeelden over het opzetten van de console. Printer instellen printers Aangezien de meeste printers met Russische karakters met hardware-codepagina CP866 komen, is een speciaal uitvoerfilter nodig om KOI8-R om te zetten in CP866. Zo'n filter is standaard geďnstalleerd als /usr/libexec/lpr/ru/koi2alt. Een /etc/printcap regel voor een Russische printer moet er uit zien als: lp|Russische lokale lijnprinter:\ :sh:of=/usr/libexec/lpr/ru/koi2alt:\ :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs: Zie &man.printcap.5; voor een gedetailleerde beschrijving. &ms-dos; bestandssysteem en Russische bestandsnamen De volgende voorbeeld &man.fstab.5; regel zet ondersteuning aan voor Russische bestandsnamen gekoppeld op &ms-dos; bestandssystemen: /dev/ad0s2 /dos/c msdos rw,-Wkoi2dos,-Lru_RU.KIO8-R 0 0 De optie selecteert de te gebruiken localenaam, en stelt de karakteromzettabel in. Om de te gebruiken moet /usr gemount zijn voor de &ms-dos; partitie omdat de omzettabellen zich bevinden in /usr/libdata/msdosfs. &man.mount.msdosfs.8; geeft verdere uitleg. X11 instellen Voer eerst de niet-X lokale instellingen uit zoals beschreven. Installeer bij gebruik van &xorg; het package x11-fonts/xorg-fonts-cyrillic. Controleer de "Files" sectie in /etc/X11/xorg.conf bestand. Zorg dat de volgende regel vóór andere FontPath regels staan: FontPath "/usr/local/lib/X11/fonts/cyrillic" Zie de Ports Collectie voor meer cyrillic fonts. Om een Russisch toetsenbord te activeren dient het volgende in het "Keyboard" gedeelte van xorg.conf te staan: XkbLayout "ru" XkbOptions "grp:caps_toggle" Voor &xorg;: Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:caps_toggle" Ook moet daar XkbDisable uitgeschakeld (uitgecomment) zijn. Voor grp:toggle is de RUS/LAT-schakelaar Rechter Alt voor de grp:ctrl_shift_toggle schakelaar zal dat Ctrl Shift zijn. Voor grp:caps_toggle zal de RUS/LAT-schakelaar CapsLock zijn. De oude CapsLock functie is nog steeds beschikbaar via Shift CapsLock (alleen in LAT-modus). grp:caps_toggle werkt om onbekende reden niet in &xorg;. Als er &windows; toetsen op een toetsenbord zitten en het blijkt dat sommige niet-alfabetische toetsen verkeerd gemapt zijn in RUS-modus, dan kan de volgende regel aan xorg.conf toegevoegd worden: Option "XkbVariant" ",winkeys" Het Russische XKB toetsenbord hoeft niet te werken met niet-gelokaliseerde applicaties. Minimaal gelokaliseerde applicaties moeten vroeg in het programma een aanroep naar de XtSetLanguageProc (NULL, NULL,); functie doen. In KOI8-R for X Window staan meer instructies over het lokaliseren van X11-applicaties. Traditioneel Chinees voor Taiwan lokalisatie traditioneel Chinees Het &os;-Taiwan Project heeft een Chinese HOWTO voor &os; op die gebruik maakt van veel Chinese ports. De huidige redacteur voor de &os; Chinese HOWTO is Shen Chuan-Hsing statue@freebsd.sinica.edu.tw. Chuan-Hsing Shen heeft de Chinese &os; Collection (CFC) gemaakt met gebruik van &os;-Taiwan's zh-L10N-tut. De packages en scriptbestanden zijn beschikbaar op . Duits (alle ISO 8859-1 talen) lokalisatie Duits Slaven Rezic eserte@cs.tu-berlin.de heeft een tutorial geschreven over het gebruik van umlauten op een &os;-machine. De tutorial is in het Duits geschreven en staat op . Grieks lokalisatie Grieks Nikos Kokkalis nickkokkalis@gmail.com heeft een compleet artikel over Griekse ondersteuning in &os; geschreven. Het is beschikbaar als deel van de officiële Griekse &os;-documentatie, in http://www.freebsd.org/doc/el_GR.ISO8859-7/articles/greek-language-support/index.html. Merk opdat dit alleen in het Grieks beschikbaar is. Japans en Koreaans lokalisatie Japans lokalisatie Koreaans Japanse lokalisatie staat beschreven op en de Koreaanse lokalisatie staat op . Niet-Engelstalige &os; documentatie Sommige delen van de &os;-documentatie zijn naar andere talen vertaald. Hiernaar staan links op de hoofdsite of in /usr/share/doc. diff --git a/nl_NL.ISO8859-1/books/handbook/mail/chapter.xml b/nl_NL.ISO8859-1/books/handbook/mail/chapter.xml index 9fb760489a..8c21c3a5b9 100644 --- a/nl_NL.ISO8859-1/books/handbook/mail/chapter.xml +++ b/nl_NL.ISO8859-1/books/handbook/mail/chapter.xml @@ -1,2299 +1,2297 @@ Bill Lloyd Origineel werk van Jim Mock Herschreven door Tom Leeters Vertaald door Frederic Van Assche Vertaling voortgezet door René Ladan Vertaling voortgezet door Elektronische mail Overzicht email Elektronische Mail, beter bekend als email, is tegenwoordig een van de meest gebruikte vormen van communicatie. Dit hoofdstuk geeft een algemene inleiding in het opzetten van een mailserver op &os;, alsmede een introductie in het verzenden en ontvangen van email op &os;; het is echter geen complete referentie en veel belangrijke overwegingen zullen buiten beschouwing worden gelaten. Voor een completere behandeling wordt de lezer gewezen op de vele uitstekende boeken welke worden vermeld in . In dit hoofdstuk wordt behandeld: Welke software (componenten) gebruikt wordt(en) bij het verzenden en ontvangen van email. Waar algemene sendmail instellingsbestanden worden opgeslagen in &os;. Het verschil tussen lokale en postbussen op-afstand. Hoe spammers te verhinderen dat ze de mailserver illegaal gebruiken als "relay". Hoe een andere MTA (Mail Transfer Agent) te installeren en configureren op het systeem, ter vervanging van sendmail. Hoe veel voorkomende problemen met mail servers worden opgelost. Hoe SMTP met UUCP te gebruiken. Hoe een systeem in te stellen om alleen mail te verzenden. Hoe email te gebruiken met een inbelverbinding. Hoe SMTP Authenticatie in te stellen voor verhoogde beveiliging. Hoe een Mail User Agent zoals mutt te installeren om email te verzenden en te ontvangen. Hoe mail te downloaden van een POP of IMAP server op afstand. Hoe automatisch filters en sorteerregels op inkomende email toe te passen. Voordat dit hoofdstuk gelezen wordt, dienen: De netwerkverbindingen correct ingesteld te zijn (). De juiste DNS-informatie ingesteld te zijn voor de mailserver (). Bekend te zijn hoe software van derde partijen te installeren (). Gebruik maken van elektronische mail POP IMAP DNS Er zijn vijf belangrijke componenten betrokken bij het uitwisselen van email. Dit zijn: het gebruikersprogramma, de serverdaemon, DNS, een postbus, lokaal of op afstand , en natuurlijk de mailhost zelf. Het gebruikersprogramma Dit omvat opdrachtregelprogramma's zoals mutt, alpine, elm, en mail, en GUI programma's zoals balsa, xfmail, en iets geavanceerders zoals een webbrowser. Deze programma's doen niets anders dan de mail bezorgen bij de lokale mailhost, door deze af te leveren of bij een van de beschikbare serverdiensten, of via TCP. Mailhost Server Daemon mailserver daemons sendmail mailserver daemons postfix mailserver daemons qmail mailserver daemons exim &os; wordt standaard geleverd met de sendmail, maar ondersteunt meerdere andere mailserver daemons, zoals: exim; postfix; qmail. De server daemon heeft meestal twee functies—het is verantwoordelijk voor het ontvangen van inkomende mail en het bezorgen van uitgaande mail. Het is niet verantwoordelijk voor het verzamelen van mail door gebruik te maken van protocollen zoals POP of IMAP om mail te lezen, noch staat het toe om een verbinding te maken met een lokale mbox of Maildir postbus. Het is mogelijk dat daarvoor een extra daemon voor nodig is. Oudere versies van sendmail hebben serieuze beveiligingslekken welke kunnen leiden tot een situatie waarbij een aanvaller lokale of toegang van afstand tot de machine kan verkrijgen. Draai een actuele versie om deze problemen te voorkomen. Optioneel kan een alternatieve MTA van de &os; Portscollectie geďnstalleerd worden. Email en DNS Het Domein Naam Systeem (DNS) en de daemon named spelen een grote rol in het bezorgen van email. Om het mogelijk te maken email van de deze lokatie naar een andere lokatie te bezorgen, zal de serverdaemon de andere lokatie opzoeken in het DNS om zo de host te bepalen die de email voor de bestemming in ontvangst zal nemen. Dit gebeurt ook als email verzonden wordt vanaf een andere host naar de lokale mailserver. MX record DNS is verantwoordelijk voor het koppelen van hostnamen aan IP-adressen, en voor het opslaan van specifieke informatie voor het bezorgen van mail, bekend als MX-regels. De MX-regel (Mail eXchanger) specificeert welke host(s) mail zullen ontvangen voor een specifiek domein. Als er geen MX-regel is voor deze hostnaam of dit domein, dan zal de mail direct bij de host worden afgeleverd, mits er een A-regel is die deze hostnaam aan dit IP-adres koppelt. De MX-regels van een willekeurig domein kunnen worden bekeken door gebruik te maken van het commando &man.host.1;, zoals te zien is in het onderstaande voorbeeld: &prompt.user; host -t mx FreeBSD.org FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org Mail ontvangen email ontvangen De mailhost verzorgt het ontvangen van mail voor het domein. Deze zal alle mail verzonden aan het domein verzamelen en deze afhankelijk van de configuratie opslaan in ňf mbox (de standaardmanier om mail op te slaan) ňf in Maildir-formaat. Wanneer de mail eenmaal is opgeslagen, kan het ňf lokaal gelezen worden door toepassingen als &man.mail.1; of mutt , of op afstand bekeken en verzameld worden middels protocollen als POP of IMAP. Dit betekent, dat als mail alleen lokaal wordt gelezen, er geen POP- of IMAP-server geďnstalleerd hoeft te worden. Op afstand toegang tot de postbus krijgen door gebruik te maken van <acronym>POP</acronym> en <acronym>IMAP</acronym> POP IMAP Om op afstand toegang te krijgen tot postbussen is het nodig toegang te hebben tot een POP- of IMAP -server. Deze protocollen stellen gebruikers in staat hun postbus gemakkelijk op afstand te benaderen. Hoewel zowel POP als IMAP gebruikers in staat stellen op afstand een postbus te bereiken, biedt IMAP veel voordelen, waaronder: IMAP kan berichten zowel op de server op afstand opslaan als ze ophalen. IMAP ondersteunt gelijktijdig actualiseren. IMAP kan uitstekend worden gebruikt over langzame verbindingen omdat het gebruikers in staat stelt de structuur van berichten te bekijken zonder deze binnen te halen; het kan ook worden gebruikt om te zoeken op de server om zo de gegevensoverdracht tussen client en server te minimaliseren. Om een POP- of IMAP- server te installeren, zijn de volgende stappen nodig: Kies een IMAP- of POP -server die het beste aan de eisen voldoet. De volgende POP- en IMAP -servers zijn zeer bekend en zijn goede voorbeelden: qpopper; teapop; imap-uw; courier-imap; dovecot; Installeer de gewenste POP- of IMAP-daemon vanuit de Portscollectie. Wijzig indien nodig /etc/inetd.conf om de POP- of IMAP - server te laden. Let er wel op dat zowel POP en IMAP informatie, waaronder gegevens over gebruikersnaam en wachtwoord, onversleuteld versturen. Dit betekent, dat wanneer het gewenst is dat de uitwisseling van gegevens over deze protocollen versleuteld is, het verstandig is om te overwegen de sessies over &man.ssh.1; te tunnelen of SSL te gebruiken. Het tunnelen van sessies wordt beschreven in en SSL in . Toegang tot lokale postbussen Postbussen kunnen lokaal benaderd worden door direct op de server waarop de postbus wordt bewaard MUAs te gebruiken. Dit kan gedaan worden door programma's zoals mutt of &man.mail.1; te gebruiken. De mailhost mailhost De mailhost is de naam van de server welke verantwoordelijk is voor het afleveren en ontvangen van mail voor de server en mogelijk voor het netwerk. Christopher Shumway Bijgedragen door <application>sendmail</application> instellen sendmail &man.sendmail.8; is de standaard Mail Transfer Agent (MTA) in &os;. sendmail's taak is het accepteren van mail van gebruikersprogramma's (MUA ) en deze te bezorgen bij de juiste mailer zoals gedefinieerd in het betreffende configuratiebestand. sendmail kan ook netwerkverbindingen accepteren en mail in lokale postbussen afleveren of bezorgen bij een ander programma. sendmail gebruikt de volgende configuratiebestanden: /etc/mail/access /etc/mail/aliases /etc/mail/local-host-names /etc/mail/mailer.conf /etc/mail/mailertable /etc/mail/sendmail.cf /etc/mail/virtusertable Bestandsnaam Functie /etc/mail/access bestand met de toegangsdatabase van sendmail /etc/mail/aliases Aliases voor postbussen /etc/mail/local-host-names Lijst van servers waarvoor sendmail mail accepteert /etc/mail/mailer.conf Configuratie voor het mailerprogramma /etc/mail/mailertable Aflevertabel voor de mailer /etc/mail/sendmail.cf Hoofdconfiguratiebestand van sendmail /etc/mail/virtusertable Tabellen voor virtuele gebruikers en domeinen <filename>/etc/mail/access</filename> De toegangsdatabase definieert welke host(s) of IP-adressen toegang hebben tot de lokale mailserver en wat voor soort toegang ze hebben. Hosts kunnen in de lijst als , , of staan, of worden doorgevoerd naar de foutafhandelingsprocedure van sendmail met een bepaalde mailerfout. Hosts welke vermeld staan als , wat de standaard is, kunnen mail versturen naar deze host zolang de eindbestemming van de mail de lokale machine is. Hosts welke vermeld staan als worden voor alle verbindingen geweigerd. Hosts met een vermelding wordt toegestaan om via deze server mail naar elke bestemming te sturen. Configureren van de <application>sendmail</application> toegangsdatabase cyberspammer.com 550 We accepteren geen mail van spammers FREE.STEALTH.MAILER@ 550 We accepteren geen mail van spammers another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY In dit voorbeeld staan vijf vermeldingen. Mailafzenders die overeenkomen met de linkerzijde van de tabel worden beďnvloed door de actie die vermeld staan aan de rechterzijde van de tabel. De eerste twee voorbeelden geven een foutcode af aan de foutafhandelingsroutine van sendmail. Het bericht wordt bij de externe host bekend gemaakt wanneer een mail voldoet aan de linkerzijde van de tabel. De volgende regel weigert mail van een specifieke host op het Internet, another.source.of.spam. De volgende regel accepteert mailverbindingen van een host okay.cyberspammer.com, welke nauwkeuriger is dan de regel met cyberspammer.com erboven. Specifiekere regels vervangen minder specifieke. De laatste regel staat het doorsturen van elektronische mail toe vanaf hosts waarvan de IP-adressen beginnen met 128.32. Deze hosts zijn dan in staat om via deze mailserver naar een andere bestemming mail te versturen. Wanneer dit bestand is bijgewerkt, dient make in /etc/mail/ te gedraaid te worden om de database bij te werken. <filename>/etc/mail/aliases</filename> De aliasdatabase bevat een lijst met virtuele postbussen die verwijzen naar andere gebruiker(s), bestand(en), programma('s) of andere aliassen. Hier zijn een paar voorbeelden die gebruikt kunnen worden in /etc/mail/aliases: Mailaliassen root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" Het bestandsformaat is simpel; de postbusnaam aan de linkerzijde van de dubbele punt wordt verder uitgewerkt naar de doel(en) aan de rechterzijde. Het eerste voorbeeld breidt de postbus van root uit naar de postbus localuser, welke dan vervolgens weer wordt opgezocht in de aliasdatabase. Als er geen verdere overeenkomst wordt gevonden, dan wordt het bericht afgeleverd bij de lokale gebruiker localuser. Het volgende voorbeeld toont een mailinglijst. Mail voor de postbus ftp-bugs wordt doorverwezen naar de drie lokale postbussen joe, eric en paul. Merk op dat een externe postbus gespecificeerd kan worden als user@example.com. Het volgende voorbeeld toont het schrijven van mail naar een bestand, in dit geval /dev/null. Het laatste voorbeeld toont het sturen van mail naar een programma, in dit geval wordt het mailbericht doorgestuurd naar de standaard invoer van /usr/local/bin/procmail via een &unix; pijp. Wanneer dit bestand is bijgewerkt, dient make in /etc/mail/ gedraaid te worden om de database bij te werken. <filename>/etc/mail/local-host-names</filename> Dit is een lijst van hostnamen die &man.sendmail.8; moet accepteren als de lokale hostnaam. Hierin dienen alle hostnamen geplaatst te worden waarvoor sendmail mail moet ontvangen. Als deze mailserver mail moet ontvangen voor het domein example.com en de hostnaam is mail.example.com, dan ziet local-host-names er ongeveer zo uit: example.com mail.example.com Wanneer dit bestand is bijgewerkt, dient &man.sendmail.8; opnieuw gestart te worden zodat het de veranderingen kan lezen. <filename>/etc/mail/sendmail.cf</filename> Het hoofdinstellingenbestand van sendmail , sendmail.cf controleert het algemene gedrag van sendmail, inclusief alles van het herschrijven van emailadressen tot het sturen van weigeringsberichten naar externe mailservers. Met zo'n diverse rol is dit instellingenbestand redelijk complex en vallen de details buiten het bereik van dit hoofdstuk. Gelukkig hoeft dit bestand maar zelden aangepast te worden voor standaard mailservers. Het hoofdinstellingenbestand van sendmail kan gebouwd worden met &man.m4.1; macro's die het gedrag en de mogelijkheden van sendmail specificeren. Lees /usr/src/contrib/sendmail/cf/README voor meer details. Wanneer dit bestand is bijgewerkt, dient &man.sendmail.8; opnieuw gestart te worden om de wijzigingen door te voeren. <filename>/etc/mail/virtusertable</filename> De virtusertable verbindt mailadressen voor virtuele domeinen en postbussen met echte postbussen. Deze postbussen kunnen lokaal, op afstand, aliassen gedefinieerd in /etc/mail/aliases, of bestanden zijn. Voorbeeld van een mailtabel voor een virtueel domein root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe In het voorbeeld hierboven staat een tabel voor een domein example.com. Dit bestand wordt van boven naar beneden verwerkt, en de eerste overeenkomende regel wordt gebruikt. De eerste regel verbindt root@example.com met de lokale postbus root. De volgende regel verbindt postmaster@example.com met de postbus postmaster op de host noc.example.net. Als geen van de vorige regels van example.com overeenkomen, zal de laatste regel gebruikt worden, die alle andere post geadresseerd aan iemand bij example.com opvangt en naar de lokale postbus joe stuurt. Andrew Boothman Geschreven door Gregory Neil Shapiro Informatie genomen uit emails geschreven door De Mail Transfer Agent vervangen email mta veranderen Zoals eerder vermeld wordt &os; geleverd met sendmail voorgeďnstalleerd als MTA (Mail Transfer Agent). Daarom regelt het standaard uitgaande en binnenkomende mail. In sommige gevallen willen systeembeheerders wegens uiteenlopende redenen hun MTA vervangen. Deze redenen variëren van het uitproberen van een andere MTA tot het installeren van een bepaalde functionaliteit of pakket dat afhankelijk is van een andere MTA. Een nieuwe MTA installeren Er is een waaier van MTA's beschikbaar. Een goed startpunt is de &os; Ports Collectie waar er veel gevonden kunnen worden. Het is natuurlijk mogelijk iedere MTA te gebruiken vanaf iedere locatie, zolang het draait op &os;. Begin met het installeren van de nieuwe MTA. Als de MTA eenmaal geďnstalleerd is wordt er de kans gegeven te beslissen of de nieuwe MTA echt voldoet aan de eisen, en is het mogelijk de nieuwe software te configureren voordat deze het werk van sendmail overneemt. Bevestig voordat de MTA geďnstalleerd wordt dat de nieuwe software geen poging onderneemt systeemtoepassingen zoals /usr/bin/sendmail te overschrijven, anders wordt de nieuwe software onmiddellijk in gebruik genomen voordat het is geconfigureerd. Neem de documentatie van de gekozen MTA door voor meer informatie over het configureren van de software. <application>sendmail</application> uitschakelen Als sendmail's uitgaande emaildienst uitgeschakeld wordt, is het belangrijk dat het vervangen wordt door een alternatief systeem. Als ervoor gekozen wordt dit niet te doen, zullen systeemfunctionaliteiten zoals &man.periodic.8; niet in staat zijn hun resultaten te bezorgen per email, zoals ze normaliter verwachten te kunnen doen. Vele delen van het systeem zullen verwachten een werkend systeem aan te treffen dat compatibel is met sendmail. Als toepassingen binaries van sendmail blijven gebruiken om mail te versturen nadat deze uitgeschakeld werden, kan de mail in een inactieve sendmail wachtrij geplaatst worden, en nooit bezorgd worden. Om sendmail volledig uit te schakelen, inclusief de uitgaande emaildienst, dient sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" toegevoegd te worden aan /etc/rc.conf. Als enkel sendmail's ingaande emaildienst uitgeschakeld dient te worden, dient sendmail_enable="NO" toegevoegd te worden aan /etc/rc.conf. Meer informatie over de opstartopties van sendmail is beschikbaar in de hulppagina &man.rc.sendmail.8;. De nieuwe MTA starten tijdens het opstarten De nieuwe MTA kan gestart worden door deze instellingsregel toe te voegen aan /etc/rc.conf, zoals het volgende voorbeeld voor postfix: &prompt.root; echo 'postfix_enable=YES' >> /etc/rc.conf De MTA zal nu automatisch tijdens het opstarten worden gestart. <application>sendmail</application> vervangen als de standaard systeemmailer Het programma sendmail is zo vanzelfsprekend als standaard software op &unix; systemen dat sommige softwarepakketten ervan uitgaan dat sendmail reeds geďnstalleerd en geconfigureerd is. Daarom voorzien vele alternatieve MTA's in compatibele implementaties van de opdrachtregelinterface van sendmail; dit vergemakkelijkt het gebruik van alternatieve MTA's als vervanging voor sendmail. Bij het gebruiken van een alternatieve MTA moet men er zeker van zijn dat software die probeert de standaardtoepassingen van sendmail zoals /usr/bin/sendmail te gebruiken, ook daadwerkelijk de gekozen alternatieve mailer gebruikt. Gelukkig heeft &os; hiervoor een systeem, &man.mailwrapper.8;, dat deze taak van de systeembeheerder overneemt. Als sendmail werkt zoals origineel geďnstalleerd, bevat /etc/mail/mailer.conf bij benadering het volgende: sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail Dit wil zeggen dat wanneer een van deze algemene opdrachten (zoals sendmail zelf) uitgevoerd wordt, het systeem in werkelijkheid een kopie van de mailwrapper genaamd sendmail uitvoert, dat mailer.conf controleert en /usr/libexec/sendmail/sendmail uitvoert. Dit systeem maakt het eenvoudiger te specificeren welke toepassingen daadwerkelijk uitgevoerd worden wanneer deze standaard sendmail functies aangeroepen worden. Als men bijvoorbeeld wil dat /usr/local/supermailer/bin/sendmail-compat uitgevoerd wordt in plaats van sendmail, kan men /etc/mail/mailer.conf als volgt aanpassen: sendmail /usr/local/supermailer/bin/sendmail-compat send-mail /usr/local/supermailer/bin/sendmail-compat mailq /usr/local/supermailer/bin/mailq-compat newaliases /usr/local/supermailer/bin/newaliases-compat hoststat /usr/local/supermailer/bin/hoststat-compat purgestat /usr/local/supermailer/bin/purgestat-compat Afwerking Wanneer alles correct geconfigureerd is, dienen ofwel alle ongebruikte sendmail processen gestopt te worden en de processen behorend aan de nieuwe software gestart te worden, ofwel dient het systeem opnieuw gestart te worden. Herstarten geeft ook de mogelijkheid te controleren of de nieuwe MTA correct geconfigureerd is om tijdens het opstartproces gestart te worden. Problemen oplossen email problemen oplossen Waarom is het nodig om de FQDN te gebruiken voor hosts op de site? Het is waarschijnlijk dat de host zich in een ander domein bevindt; bijvoorbeeld als het gewenst is om host mompel in het domein bar.edu vanuit domein foo.bar.edu te bereiken, is het nodig om er met de volledig gekwalificeerde domeinnaam naar te verwijzen, mompel.bar.edu, in plaats van slechts mompel. Traditioneel werd dit door BSD BIND BIND resolvers toegestaan. De huidige versie van BIND die met &os; wordt geleverd levert niet langer standaard afkortingen voor onvolledig gekwalificeerde domeinnamen anders dan het huidige domein. Dus moet een ongekwalificeerde host mompel ňf als mompel.foo.bar.edu gevonden worden, ňf wordt er naar gezocht in het root-domein. Dit verschilt van het vorige gedrag, waar de zoektocht doorging over mompel.bar.edu, en bar.edu. Zie RFC 1535 voor de redenen waarom dit als een slechte gewoonte en zelfs als beveiligingslek werd beschouwd. Als een goede tussenoplossing kan deze regel: search foo.bar.edu bar.edu in plaats van het voorgaande: domain foo.bar.edu in /etc/resolv.conf geplaatst worden. Ben er echter zeker van dat de zoekvolgorde niet verder gaat dan de grens tussen lokale en publieke regelgeving, zoals RFC 1535 het noemt. sendmail zegt mail loops back to myself Dit wordt in de FAQ van sendmail als volgt beantwoord: Deze foutmeldingen verschijnen: 553 MX list for domain.net points back to relay.domain.net 554 <user@domain.net>... Local configuration error Hoe kan dit probleem worden opgelost? Er is gevraagd om mail van het domein (bijvoorbeeld domain.net) naar een specifieke host door te sturen (in dit geval relay.domain.net) door gebruik te maken van een MX-regel, maar de machine die het door moet sturen herkent zichzelf niet als domain.net. Voeg domain.net toe aan /etc/mail/local-host-names [bekend als /etc/sendmail.cw voor versies eerder dan 8.10] (als FEATURE(use_cw_file) gebruikt wordt) of voeg Cw domain.net toe aan /etc/mail/sendmail.cf. De FAQ van sendmail is te vinden op en wordt aangeraden om te lezen indien enig tweaken van de mailinstallatie gewenst is. Hoe kan een mailserver op een inbel-PPP-host gedraaid worden? Het is gewenst om een &os;-computer in een LAN met het Internet te verbinden. De &os;-computer zal en mail-gateway voor het LAN zijn. De PPP-verbinding is niet toegewijd. Er zijn minstens twee manieren om dit te doen. Eén manier is om UUCP UUCP te gebruiken. Een andere manier is ervoor te zorgen dat een server die altijd met het Internet verbonden is secundaire MX-dienstenMX-regel voor het domein biedt. Als het domein bijvoorbeeld example.com is en de internetprovider example.net heeft ingesteld om secundaire MX-diensten voor het domein te bieden: example.com. MX 10 example.com. MX 20 example.net. Er dient slechts één host als de uiteindelijke ontvanger gespecificeerd te worden (voeg CW example.com toe aan /etc/mail/sendmail.cf op example.com>). Wanneer de verzendende sendmail probeert om mail af te leveren zal het proberen met example.com te verbinden via de modemverbinding. Waarschijnlijk zal dit een time-out geven omdat de computer niet online is. Het programma sendmail zal het automatisch aan de secundaire MX-site, de internetprovider (example.net) afleveren. De secundaire MX zal dan periodiek proberen om een verbinding te maken met de computer en de mail aan de primaire MX-host leveren (example.com). Het kan wenselijk zijn om iets als het onderstaande als inlogscript te gebruiken: #!/bin/sh # Zet mij in /usr/local/bin/pppmyisp ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp Indien er een apart inlogscript voor een gebruiker wordt aangemaakt, kan sendmail -qRexample.com gebruikt worden in plaats van het bovenstaande script. Dit zorgt ervoor dat alle mail in de mailrij voor example.com onmiddellijk verwerkt wordt. Een verdere verfijning van de situatie is deze: Bericht gestolen van de &a.isp;. > we bieden de secundaire MX voor een klant. > De klant maakt automatisch verschillende keren per dag een verbinding > met onze diensten om de mailberichten naar zijn primaire MX te > sturen (we bellen zijn site niet indien er een mail voor zijn > domein arriveert). Onze sendmail verstuurt de mailrij om de 30 > minuten. Op het moment moet de klant 30 minuten online blijven om > er zeker van te zijn dat alle mail naar de primaire MX is gegaan. > > Is er een commando dat sendmail er toe aanzet om alle mailberichten > nu te versturen? De gebruiker heeft uiteraard geen root-rechten op > onze machine. In de sectie privacy flags van sendmail.cf staat een definitie Opgoaway,restrictqrun Verwijder restrictqrun om niet-root-gebruikers toe te staan te beginnen de rij te verwerken. Het kan ook wenselijk zijn om de MXs opnieuw te rangschikken. Wij zijn zo de eerste MX voor onze klanten, en we hebben dit gedefinieerd: # Als we de beste MX voor een host zijn, probeer direct in plaats van # een lokale configuratiefout te genereren. OwTrue Op deze manier zal een site op afstand rechtstreeks hier afleveren, zonder de verbinding van de klant te proberen. Vervolgens wordt er naar de klant verstuurd. Dit werkt alleen voor hosts, dus dient de klant hun mailcomputer customer.com te noemen en hostname.customer.com in de DNS de plaatsen. Plaats een A-regel in de DNS voor customer.com. Waarom blijven er fouten als Relaying Denied verchijnen wanneer er mail van andere hosts wordt verstuurd? In standaard &os;-installaties is sendmail geconfigureerd om alleen mail te versturen van de host waarop het draait. Als bijvoorbeeld een POP-server beschikbaar is, kunnen gebruikers mail controleren vanuit school, werk, of andere lokaties op afstand, maar zullen ze nog steeds niet in staat zijn om uitgaande emails van lokaties van buitenaf te versturen. Gewoonlijk zal er na enkele ogenblikken na de poging een email van MAILER-DAEMON worden verzonden met een foutbericht 5.7 Relaying Denied. Er zijn verschillende manieren om dit te omzeilen. De oplossing die het meest voor de hand ligt, is om het adres van de internetprovider in een bestand relay-domains op /etc/mail/relay-domains te zetten. Een snelle manier om dit te doen is: &prompt.root; echo "your.isp.example.com" > /etc/mail/relay-domains Nadat dit bestand is aangemaakt of bewerkt dient sendmail opnieuw gestart te worden. Dit werkt prima indien u een serverbeheerder bent en het niet wenselijk is om mail lokaal te verzenden, of indien het gewenst is om een point-en-click client/systeem op een andere machine of zelfs bij een andere internetprovider te gebruiken. Het is ook erg bruikbaar indien er slechts enkele email-accounts zijn aangemaakt. Als er een groot aantal adressen dient te worden toegevoegd, kan dit bestand in een tekstverwerker worden geopend en de domeinen worden toegevoegd, één per regel: your.isp.example.com other.isp.example.net users-isp.example.org www.example.org Nu zal het verzenden van elke mail door dit systeem, verstuurd door elke host in deze lijst, lukken (aangenomen dat de gebruiker een account op het systeem heeft). Dit is een aardige manier om gebruikers toe te staan op afstand mail vanaf het systeem te verzenden zonder dat mensen wordt toegestaan om spam vanaf het systeem te verzenden. Geavanceerde onderwerpen De volgende sectie behandelt meer ervaren onderwerpen zoals mailinstellingen en het instellen van mail voor het gehele domein. Basisinstellingen email instellingen Het verzenden van email naar externe hosts zou onmiddellijk moeten werken, zolang /etc/resolv.conf is aangemaakt of zolang er een nameserver wordt gedraaid. Indien het gewenst is dat mail voor de host aan de MTA (bijvoorbeeld sendmail) geleverd dient te worden op de &os;-host, zijn er twee methoden: Draai een eigen nameserver op een eigen domein, bijvoorbeeld FreeBSD.org Zorg ervoor dat mail direct aan de host geleverd wordt. Dit wordt gedaan door mail direct aan de huidige DNS-naam voor de machine, bijvoorbeeld example.FreeBSD.org, te leveren. SMTP Onafhankelijk van de hierboven gekozen methode, dient de host, om er direct mail aan geleverd te krijgen, een permanent statisch IP-adres te hebben (niet een dynamisch adres, zoals dat bij de meeste PPP-inbelverbindingen het geval is). Indien er een firewall actief is, dient het SMTP-verkeer naar de host door te geven. Indien het gewenst is dat de host direct mail ontvangt, dient één van de twee onderstaande dingen geregeld te zijn: - MX-regel - - Zorg ervoor dat de (laagstgenummerde) MX-regel in het + Zorg ervoor dat de (laagstgenummerde) MX-regelMX-regel in het DNS naar het IP-adres van de host wijst. Zorg ervoor dat er geen MX-regel in het DNS is voor de host. Met elk van de bovenstaanden kan mail direct op de host ontvangen worden. Probeer dit: &prompt.root; hostname example.FreeBSD.org &prompt.root; host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX Indien dit verschijnt, zal mail die direct naar yourlogin@example.FreeBSD.org zonder problemen moeten werken (aangenomen dat sendmail correct werkt op example.FreeBSD.org). Indien in plaats daarvan zoiets als dit verschijnt: &prompt.root; host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org zal alle mail die naar de host ( example.FreeBSD.org) verzameld worden op hub onder dezelfde gebruikersnaam in plaats van direct naar de host verstuurd te worden. Bovenstaande informatie wordt door de DNS-server afgehandeld. De DNS-regel die informatie over het routen van mail bevat is de Mail eXchange regel. Indien er geen MX-regel is, zal mail direct aan de host worden afgeleverd door middel van het IP-adres. De MX-regel voor freefall.FreeBSD.org zag er eens als volgt uit: freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com Te zien is dat freefall vele MX-regels had. Het laagste MX-getal hoort bij de host die de mail direct ontvangt indien beschikbaar; indien het om een of andere reden niet beschikbaar is, accepteren de anderen (soms reserve-MXs genoemd) tijdelijk berichten en geven ze die door wanneer een lager-genummerde host beschikbaar is, om uiteindelijk aan de laagstgenummerde host af te leveren. Alternatieve MX-sites zouden andere Internetverbindingen dan die van de host moeten hebben om het nuttigst te zijn. De internetprovider of een andere vriendelijke site zouden geen problemen moeten hebben met het leveren van deze dienst. Mail voor het domein Om een mailhost (ook bekend als een mailserver) te installeren, is het nodig om mail die verzonden wordt naar de verschillende werkstations ernaar toe te leiden. In principe dient alle mail voor elke hostnaam in het domein (in dit geval *.FreeBSD.org) geclaimd te worden en naar de mailserver omgeleid te worden zodat gebruikers hun mail op de hoofdmailserver kunnen ontvangen. DNS Het gemakkelijkste is het indien er een gebruikersaccount met dezelfde gebruikersnaam op beide machines bestaat. Hiervoor dient &man.adduser.8; gebruikt te worden. De mailhost die het meest gebruikt zal worden is de toegewezen mailuitwisselaar voor elk werkstation in het netwerk. Dit wordt in de DNS-instellingen als volgt gedaan: example.FreeBSD.org A 204.216.27.XX ; werkstation MX 10 hub.FreeBSD.org ; mailhost Dit zal mail voor het werkstation naar de mailhost leiden onafhankelijk van waar de A-regel naar toe wijst. De mail wordt naar de MX-host verzonden. Om dit te doen is het nodig om een eigen DNS-server te draaien. Neem, indien dit niet het geval is of het niet mogelijk is om een eigen DNS-server te draaien, contact op met degene die de DNS levert. De volgende informatie is nuttig indien email virtueel gehost wordt. In dit voorbeeld wordt aangenomen dat er een klant is met een eigen domein, in dit geval customer1.org, en dat alle mail voor customer1.org naar de mailhost mail.myhost.com verzonden dient te worden. De regel in het DNS dient er als volgt uit te zien: customer1.org MX 10 mail.myhost.com Het is niet nodig om een A-regel voor customer1.org te hebben als er voor dat domein alleen email afgehandeld dient te worden. Let erop dat customer1.org pingen niet werkt tenzij er een A-regel voor bestaat. Als laatste dient sendmail op de mailhost te weten voor welke domeinen en/of hostnamen het mail dient te accepteren. Er bestaan enkele verschillende manieren om dit te doen. Elk van de volgende manieren zal werken: Voeg de hosts toe aan het bestand /etc/mail/local-host-names indien FEATURE(use_cw_literal). Indien er een versie van sendmail wordt gebruikt die ouder is dan 8.10, is het te gebruiken bestand /etc/sendmail.cw. Voeg een regel met Cwyour.host.com toe aan /etc/sendmail.cf of aan /etc/mail/sendmail.cf indien versie 8.10 of nieuwer van sendmail wordt gebruikt. SMTP met UUCP De instellingen van sendmail die met &os; worden geleverd zijn ontworpen voor sites die een directe verbinding met het Internet hebben. Sites waarvoor de mail via UUCP willen uitwisselen dienen een ander instellingenbestand voor sendmail te installeren. Het handmatig bijstellen van /etc/mail/sendmail.cf is een geavanceerd onderwerp. Versie 8 van sendmail genereert instellingenbestanden via &man.m4.1; preprocessing, waarbij het eigenlijke instellen op een hoger abstractieniveau plaatsvindt. De instellingenbestanden voor &man.m4.1; kunnen onder /usr/share/sendmail/cf gevonden worden. Het bestand README in de map cf kan dienen als een basisintroductie tot het instellen van &man.m4.1;. De beste manier om UUCP te ondersteunen is het gebruiken van de eigenschap mailertable. Dit maakt een database aan die sendmail kan gebruiken om beslissingen over routes te nemen. Als eerste dient het .mc-bestand aangemaakt te worden. De map /usr/share/sendmail/cf/cf bevat enkele voorbeelden. Indien het bestand foo.mc heet, hoeft slechts het volgende gedaan te worden om het in een geldig sendmail.cf om te zetten: &prompt.root; cd /etc/mail &prompt.root; make foo.cf &prompt.root; cp foo.cf /etc/mail/sendmail.cf Een typisch .mc-bestand kan er als volgt uitzien: VERSIONID(`Uw versienummer') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', uw.uucp.relay) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw uw.alias.host.naam Cw uwuucpnodenaam.UUCP De regels die de eigenschappen accept_unresolvable_domains, nocanonify, en confDONT_PROBE_INTERFACES bevatten zorgen ervoor dat er geen gebruik wordt gemaakt van het DNS tijdens het afleveren van mail. De clausule UUCP_REPLAY is nodig om UUCP-aflevering te ondersteunen. Hier dient een hostnaam op het Internet ingevuld te worden die .UUCP pseudo-domeinadressen kan afhandelen, waarschijnlijk zal dit de mailrelay van de Internetprovider zijn. Nadat dit gedaan is, is er een bestand /etc/mail/mailertable nodig. Indien er slechts één verbinding naar buiten is die voor alle mails gebruikt wordt, zal het volgende bestand volstaan: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:uw.uucp.relay Een complexer voorbeeld kan er als volgt uitzien: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: De eerste drie regels behandelen speciale gevallen waarbij domein-geadresseerde mail niet naar de standaardroute verzonden dient te worden, maar in plaats daarvan naar een UUCP-buur om het afleverpad af te snijden. De volgende regel handelt mail naar het lokale Ethernetdomein die met SMTP afgeleverd kan worden af. Als laatste worden UUCP-buren in de .UUCP-pseudodomeinnotatie genoemd, om een uucp-buur!ontvanger -overname toe te staan. De laatste regel bestaat altijd uit een enkele punt, dat met al het andere matcht, met UUCP-aflevering naar een UUCP-buur die als universele mail-gateway naar de wereld dient. Alle nodenamen achter het sleutelwoord uucp-dom: dienen geldige UUCP-buren te zijn, dat met het commando uuname gecontroleerd kan worden. Dit bestand dient naar een DBM-database omgezet te worden voor gebruik. De opdrachtregel om dit te doen kan het beste als commentaar bovenaan het bestand mailertable gezet worden. Deze opdracht dient telkens wanneer het bestand mailertable wordt gewijzigd uitgevoerd te worden. Laatste tip: indien de werking van een zekere mailroute niet zeker is, kan de optie van sendmail gebruikt worden. Het start sendmail in adrestestmodus op; voer 3,0 gevolgd door het adres dat voor de mailrouting getest dient te worden in. De laatste regel bevat de gebruikte interne mailagent, de bestemmingshost waarmee deze agent aangeroepen wordt, en het (mogelijk vertaalde) adres. Deze modus kan door het typen van CtrlD verlaten worden. &prompt.user; sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 foo@example.com canonify input: foo @ example . com ... parse returns: $# uucp-dom $@ uw.uucp.relay $: foo < @ example . com . > > ^D Bill Moran Bijgedragen door Instellen om alleen te versturen Er zijn veel gevallen waarbij het gewenst is om enkel mail te verzenden via een relay. Voorbeelden hiervan zijn: De computer is een desktop, maar het is gewenst om programma's als &man.send-pr.1; te gebruiken. Hiervoor dient de mailrelay van de internetprovider gebruikt te worden. De computer is een server welke mail niet lokaal verwerkt, maar alle mail voor verwerking doorstuurt. Zowat elke MTA kan deze specifieke taak vervullen. Helaas kan het erg moeilijk zijn om een MTA met alle mogelijkheden correct in te stellen om alleen uitgaande mail te behandelen. Programma's als sendmail en postfix zijn hiervoor grotendeels overbodig. Ook kan het zijn dat de overeenkomst van een typisch internetabonnement het draaien van een mail server verbiedt. De gemakkelijkste manier om aan deze behoeften te voldoen is door de port mail/ssmtp te installeren. Voer als root de volgende opdrachten uit: &prompt.root; cd /usr/ports/mail/ssmtp &prompt.root; make install replace clean Eenmaal geďnstalleerd kan mail/ssmtp door middel van het vier-regelige bestand /usr/local/etc/ssmtp/ssmtp.conf ingesteld worden: root=uwechteemail@example.com mailhub=mail.example.com rewriteDomain=example.com hostname=_HOSTNAME_ Let erop dat het echte emailadres voor root gebruikt wordt. Vervang mail.example.com door de uitgaande mail relay van de internetprovider (ook wel de uitgaande mailserver of SMTP-server genoemd). Let erop dat sendmail uitgeschakeld wordt, inclusief de uitgaande maildienst. Raadpleeg voor details. mail/ssmtp heeft nog meer mogelijkheden. Raadpleeg het voorbeeldinstelbestand /usr/local/etc/ssmtp of de hulppagina van ssmtp voor enkele voorbeelden en meer informatie. Door ssmtp op deze manier in te stellen kan alle software op de computer welke mail dient te versturen correct functioneren, zonder dat het beleid van de internetprovider geschonden wordt of dat de computer gekaapt kan worden om spam mee te versturen. Mail gebruiken met een inbelverbinding Indien het IP-adres statisch is, is het niet nodig om de standaardwaarden aan te passen. De toegewezen Internetnaam dient als hostnaam gebruikt te worden waarna sendmail de rest kan doen. Indien het IP-adres dynamisch is en er een inbelverbinding naar het Internet gebruikt wordt, is de postbus waarschijnlijk op de mailserver van de Internetprovider geplaatst. Stel dat het domein van de Internetprovider example.net is, dat de gebruikersnaam gebruiker is, dat de machine bsd.home is, en dat volgens de Internetprovider relay.example.net als mailrelay gebruikt kan worden. Om mail van de postbus te ontvangen, dient er een ontvangstagent geďnstalleerd te worden. Het gereedschap fetchmail is een goede keuze omdat het veel verschillende protocollen ondersteunt. Dit programma is als pakket of vanuit de Portscollectie ( mail/fetchmail) beschikbaar. Normaliter levert de Internetprovider POP. Indien gebruikers-PPP gebruikt wordt, kan de mail automatisch worden opgehaald wanneer er een verbinding met Internet tot stand is gebracht door middel van de volgende regel in /etc/ppp/ppp.linkup: MYADDR: !bg su gebruiker -c fetchmail Indien sendmail gebruikt wordt ( zoals hieronder te zien is) om mail aan niet-lokale accounts af te leveren, is het waarschijnlijk gewenst dat sendmail de mailrij verwerkt zodra er een Internetverbinding tot stand is gebracht. Hiervoor dient de volgende opdracht na de fetchmail-opdracht in /etc/ppp/ppp.linkup geplaatst te worden: !bg su gebruiker -c "sendmail -q" Aangenomen wordt dat er een account voor gebruiker op bsd.home aanwezig is. In de thuismap van gebruiker op bsd.home dient een bestand .fetchmailrc aangemaakt te worden: poll example.net protocol pop3 fetchall pass MijnGeheim Dit bestand dient alleen voor gebruiker leesbaar te zijn aangezien dit bestand het wachtwoord MijnGeheim bevat. Om mail met de correcte from:-header te versturen, dient sendmail gebruiker@example.net in plaats van gebruiker@bsd.home te gebruiken. Het kan ook wenselijk zijn om sendmail alle mail via relay.example.net te versturen, om sneller mail te verzenden. Het volgende .mc zou voldoende moeten zijn: VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`example.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.example.net') Dmbsd.home define(`confDOMAIN_NAME', `bsd.home')dnl define(`confDELIVERY_MODE', `deferred')dnl In de vorige sectie staan de details over het omzetten van een .mc-bestand in bestand sendmail.cf . Ook dient sendmail herstart te worden na het wijzigen van sendmail.cf . James Gorham Geschreven door SMTP-authenticatie Het hebben van SMTP-authenticatie op een mailserver heeft een aantal voordelen. SMTP- authenticatie kan een extra beveiligingslaag toevoegen aan sendmail, en het geeft mobiele gebruikers die van hosts wisselen de mogelijkheid om dezelfde mailserver te gebruiken zonder dat ze telkens de instellingen van hun mailclient moeten veranderen. Installeer security/cyrus-sasl2 vanuit de ports. Deze port is te vinden in security/cyrus-sasl2. De port security/cyrus-sasl2 ondersteund een aantal opties tijdens de compilatie. Voor de SMTP-authenticatiemethode die hier gebruikt wordt, dient de optie te zijn uitgezet. Voeg nadat security/cyrus-sasl2 is geďnstalleerd deze regel toe aan /usr/local/lib/sasl2/Sendmail.conf: pwcheck_method: saslauthd Installeer vervolgens security/cyrus-sasl2-saslauthd, en voeg de volgende regel toe aan /etc/rc.conf: saslauthd_enable="YES" en start vervolgens het saslauthd-daemon op: &prompt.root; service saslauthd start Deze daemon fungeert als een onderhandelaar voor sendmail die zich tegen de &os; passwd-database authenticeert. Dit bespaart de moeite van het opnieuw creëren van een nieuwe verzameling gebruikersnamen en wachtwoorden voor elke gebruiker die SMTP-authenticatie nodig heeft, en het houdt de wachtwoorden voor het inloggen en de mail hetzelfde. Voeg de volgende regels toe aan /etc/make.conf : SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl2 Deze regels geven sendmail de juiste instelopties om tijdens het compileren met cyrus-sal2 te linken. Zorg ervoor dat cyrus-sasl2 is geďnstalleerd voordat sendmail wordt gehercompileerd. Hercompileer sendmail door de volgende opdrachten uit te voeren: &prompt.root; cd /usr/src/lib/libsmutil &prompt.root; make cleandir && make obj && make &prompt.root; cd /usr/src/lib/libsm &prompt.root; make cleandir && make obj && make &prompt.root; cd /usr/src/usr.sbin/sendmail &prompt.root; make cleandir && make obj && make && make install Het compileren van sendmail zou geen problemen moeten geven indien /usr/src niet veel veranderd is en dat de benodigde gedeelde bibliotheken aanwezig zijn. Nadat sendmail is gecompileerd en opnieuw is gecompileerd, dient /etc/mail/freebsd.mc (of het plaatselijke .mc-bestand) gewijzigd te worden. Veel beheerders kiezen ervoor om de uitvoer van &man.hostname.1; als .mc-bestandsnaam te gebruiken vanwege de uniciteit. Voeg deze regels toe: dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl Deze opties stellen de verschillende beschikbare methoden voor sendmail in om gebruikers te authenticeren. Gebruik de bijgeleverde documentatie indien een andere methode dan pwcheck gewenst is. Voer als laatste &man.make.1; in /etc/mail uit. Hierdoor wordt het nieuwe .mc -bestand uitgevoerd en wordt een bestand freebsd.cf (of de plaatselijke variant ervan) aangemaakt. Voer hierna de opdracht make install restart uit, wat het bestand naar sendmail.cf kopieert en sendmail op de juiste manier herstart. In /etc/mail/Makefile staat meer informatie over dit proces. Indien alles goed is gegaan, moet het mogelijk zijn om de inloginformatie in de mailclient in te voeren en een testbericht te versturen. Zet voor verdere onderzoekingen de van sendmail op 13 en houdt /var/log/maillog in de gaten voor foutmeldingen. Refereer naar de sendmail-pagina betreffende SMTP-authenticatie voor meer informatie. Marc Silver Bijgedragen door Mail User Agents Mail User Agents Een mail user agent (MUA) is een toepassing die wordt gebruikt om email te versturen en te ontvangen. Bovendien, omdat email evolueert en steeds complexer wordt, worden MUAs steeds krachtiger in de manier waarop ze met email omgaan; dit biedt gebruikers verhoogde functionaliteit en flexibiliteit. &os; ondersteunt verschillende mail user agents die allemaal eenvoudig geďnstalleerd kunnen worden door de &os; Ports Collectie te gebruiken. Gebruikers kunnen kiezen tussen grafische emailclients zoals evolution of balsa, op de console gebaseerde clients zoals mutt, alpine of mail, of de webinterface die door sommige grote organisaties wordt gebruikt. mail &man.mail.1; is de standaard mail user agent (MUA) in &os;. Het is een consolegebaseerde MUA die alle basisfunctionaliteit biedt die nodig is om tekstgebaseerde email te verzenden en te ontvangen, maar het is beperkt in de mogelijkheden om met bijlagen om te gaan en het ondersteunt alleen plaatselijke postbussen. Hoewel mail van huis uit geen ondersteuning voor POP- of IMAP -servers biedt, kunnen deze postbussen gedownload worden naar een lokaal mbox-bestand door een toepassing als fetchmail te gebruiken, welke later in dit hoofdstuk behandeld wordt (). Draai mail om email te versturen en te ontvangen: &prompt.user; mail De inhoud van de gebruikerspostbus in /var/mail wordt automatisch gelezen door het programma mail. Indien de postbus leeg is, eindigt het programma het een melding dat er geen mail gevonden kon worden. Wanneer de postbus is gelezen, wordt de applicatie-interface gestart, en wordt er een berichtenlijst weergegeven. Berichten worden automatisch genummerd, zoals in het volgende voorbeeld te zien is: Mail version 8.1 6/6/93. Type ? for help. "/var/mail/marcs": 3 messages 3 new >N 1 root@localhost Mon Mar 8 14:05 14/510 "test" N 2 root@localhost Mon Mar 8 14:05 14/509 "user account" N 3 root@localhost Mon Mar 8 14:05 14/509 "sample" Berichten kunnen nu worden gelezen door middel van het commando t van mail, gevolgd door het gewenste berichtnummer. In dit voorbeeld wordt de eerste email gelezen: & t 1 Message 1: From root@localhost Mon Mar 8 14:05:52 2004 X-Original-To: marcs@localhost Delivered-To: marcs@localhost To: marcs@localhost Subject: test Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST) From: root@localhost (Charlie Root) This is a test message, please reply if you receive it. Zoals in bovenstaand voorbeeld te zien is, zorgt de toets t ervoor dat het bericht met volledige headers wordt getoond. Om de berichtenlijst nogmaals weer te geven, dient de toets h gebruikt te worden. Er kan met mail op een email gereageerd worden, door gebruik te maken één van de toetsen R of r. De toets R vertelt mail dat er alleen aan de verzender van het bericht geantwoord dient te worden, terwijl de toets r niet alleen aan de verzender antwoordt, maar ook aan andere ontvangers van het bericht. Het is ook mogelijk om achter deze commando's het berichtnummer te plaatsen waarop gereageerd dient te worden. Nadat dit gedaan is , dient het antwoord gegeven te worden, en dient het einde van het bericht aangegeven te worden met een enkele . op een nieuwe regel. Een voorbeeld staat hieronder: & R 1 To: root@localhost Subject: Re: test Thank you, I did get your email. . EOT Om een nieuwe email te verzenden, dient de toets m gebruikt te worden, gevolgd door het adres van de ontvanger. Er kunnen meerdere ontvangers gespecificeerd worden door ze met een , te scheiden. Hierna kan het onderwerp van het bericht worden gegeven, gevolgd door de inhoud van het bericht. Het einde van het bericht dient te worden aangegeven door een enkele . op een nieuwe regel te plaatsen. & mail root@localhost Subject: I mastered mail Now I can send and receive email using mail ... :) . EOT Binnen het programma mail kan op elk moment de opdracht ? gebruikt worden om hulp weer te geven, hiervoor kan ook de hulppagina &man.mail.1; worden geraadpleegd. Zoals eerder is aangegeven, is het programma &man.mail.1; van origine niet ontworpen om met bijlagen om te gaan, dus behandelt het deze slecht. Nieuwere MUAs zoals mutt gaan veel intelligenter met bijlagen om. Maar indien het programma mail nog steeds geprefereerd wordt, kan de port converters/mpack van aanzienlijk nut zijn. mutt mutt is een kleine doch zeer krachtige mail user agent, met uitstekende mogelijkheden, waaronder: De mogelijkheid om berichten te threaden; PGP-ondersteuning voor het digitaal ondertekenen en versleutelen van email; MIME-ondersteuning; Maildir-ondersteuning; Erg goed aan te passen. Al deze eigenschappen zorgen ervoor dat mutt een van de meest geavanceerde beschikbare mail user agents is. Op staat meer informatie. De stabiele versie van mutt kan geďnstalleerd worden door de port mail/mutt te gebruiken, terwijl de huidige ontwikkelaarsversie geďnstalleerd kan worden via de port mail/mutt-devel. Nadat de port is geďnstalleerd, kan mutt gestart worden met het volgende commando: &prompt.user; mutt mutt zal automatisch de inhoud van de gebruikerspostbus in /var/mail lezen en de inhoud weergeven indien van toepassing. Indien er geen mails gevonden zijn in de gebruikerspostbus, zal mutt wachten voor opdrachten van de gebruiker. Het onderstaande voorbeeld laat zien hoe mutt een lijst berichten weergeeft: Selecteer om een email te lezen deze met de cursortoetsen, en sla de toets Enter aan. Een voorbeeld waarbij mutt email laat zien staat hieronder: Net zoals het commando &man.mail.1; staat mutt gebruikers toe om alleen de afzender alsook alle ontvangers te beantwoorden. Om alleen de afzender van de email te antwoorden, wordt de toets r gebruikt. Om aan een groep te antwoorden, welke aan zowel de originele afzender als aan alle berichtontvangers wordt gestuurd, wordt de toets g gebruikt. mutt maakt gebruikt van het programma &man.vi.1; als tekstverwerker voor het aanmaken en beantwoorden van emails. De gebruiker kan dit aanpassen door een eigen .muttrc aan te maken in hun thuismap en de variabele editor of de omgevingsvariabele EDITOR aan te passen. Zie voor meer informatie over het instellen van mutt. Voor het opstellen van een nieuw mailbericht wordt de toets m gebruikt. Nadat er een geldig bericht is gegeven, start mutt &man.vi.1; op en kan de mail geschreven worden. Nadat de inhoud van de mail is geschreven, zal mutt nadat vi verlaten is, zichzelf hervatten en een overzichtsscherm van de te verzenden mail afbeelden. Om de mail te versturen wordt de toets y gebruikt. Een voorbeeld van het overzichtsscherm is hieronder te zien: mutt bevat ook uitgebreide hulp, welke in de meeste menu's geactiveerd kan worden door de toets ? aan te slaan. De bovenste regel geeft ook de relevante toetsen aan. alpine alpine richt zich op de beginnende gebruiker, maar bevat ook geavanceerde mogelijkheden. Er zijn in het verleden verschillende kwetsbaarheden voor alpine ontdekt, welke aanvallers op afstand in staat stelden om willekeurige code als gebruikers op het lokale systeem uit te voeren, door een speciaal voorbereide email te versturen. Alle bekende problemen van dit type zijn gerepareerd, maar de code van alpine is op een zeer onveilige manier geschreven en de beveiligingsofficier van &os; gelooft dat het waarschijnlijk is dat er nog meer onontdekte kwetsbaarheden zijn. Installeer alpine op eigen risico. De huidige versie van alpine kan door middel van de port mail/alpine geďnstalleerd worden. Wanneer de port geďnstalleerd is, kan alpine met het volgende commando gestart worden: &prompt.user; alpine De eerste keer dat alpine wordt gedraaid geeft het een welkomstpagina met een korte introductie weer, alsmede een verzoek van het ontwikkelteam van alpine om een anoniem emailbericht te versturen wat ze in staat stelt om te beoordelen hoeveel gebruikers hun client gebruiken. Druk op Enter om dit anonieme bericht te versturen, of druk op E om het welkomstscherm te verlaten zonder een anoniem bericht te versturen. Een voorbeeld van het welkomstscherm is hieronder te zien: Vervolgens wordt het hoofdmenu getoond, waarin gemakkelijk met de cursortoetsen kan worden genavigeerd. Dit hoofdmenu biedt afkortingen voor het schrijven van nieuwe mail, het doorbladeren van mailmappen, en zelfs het beheren van het adresboek. Onder het hoofdmenu worden relevante toetscombinaties voor de huidige taak getoond. De standaardmap die door alpine wordt geopend is de inbox. Gebruik de toets I om de berichtenindex te zien, of selecteer de optie MESSAGE INDEX zoals hieronder te zien is: De berichtenindex geeft de berichten in de huidige map weer, en kan met de cursortoetsen worden genavigeerd. Gemarkeerde berichten kunnen worden gelezen door op Enter te drukken. In onderstaand screenshot wordt een voorbeeldbericht door alpine weergegeven. Toetsencombinaties worden ter referentie aan de onderkant van het scherm weergegeven. Een voorbeeld van een van deze combinaties is de toets r, welke de MUA vertelt op het huidige bericht te antwoorden. Voor het beantwoorden van een bericht wordt in alpine gebruikt gemaakt van de tekstverwerker pico, welke standaard bij alpine wordt geďnstalleerd. Het programma pico maakt het gemakkelijk om in het bericht te navigeren en is meer vergevingsgezind voor nieuwe gebruikers dan &man.vi.1; of &man.mail.1;. Wanneer het antwoord voltooid is, kan het bericht worden verzonden door CtrlX te gebruiken. Het programma alpine zal om bevestiging vragen. Het programma alpine kan worden aangepast door de optie SETUP van het hoofdmenu te gebruiken. Raadpleeg voor meer informatie. Marc Silver Bijgedragen door fetchmail gebruiken fetchmail fetchmail is een volwaardige client voor IMAP en POP welke gebruikers in staat stelt om automatisch mail van IMAP- en POP-servers op afstand naar plaatselijke postbussen te downloaden; daar kan het gemakkelijker worden benaderd. fetchmail kan met de port mail/fetchmail worden geďnstalleerd, en biedt verschillende mogelijkheden, waaronder: Ondersteuning voor POP3, APOP, KPOP, IMAP, ETRN, en ODMR protocollen. De mogelijkheid om mail via SMTP door te sturen, wat filteren, doorsturen, en aliassen toestaat om normaal te functioneren. Kan in daemon-modus gedraaid worden om periodiek op nieuwe berichten te controleren. Kan verschillende postbussen ophalen en ze afhankelijk van de instellingen naar verschillende plaatselijke gebruikers doorsturen. Hoewel het niet de bedoeling van dit document is om alle mogelijkheden van fetchmail uit te leggen, zullen sommige basismogelijkheden worden uitgelegd. Het gereedschap fetchmail heeft een instellingenbestand .fetchmailrc nodig om correct te kunnen werken. Dit bestand bevat zowel informatie over de server als de inloggegevens. Vanwege de gevoelige aard van de inhoud van dit bestand is het aan te raden om het met het volgende commando alleen leesbaar te maken voor de eigenaar ervan : &prompt.user; chmod 600 .fetchmailrc Het volgende .fetchmailrc dient als een voorbeeld voor het downloaden van een postbus van een enkele gebruiker via POP. Het vertelt fetchmail om met example.com te verbinden als gebruiker joesoap met wachtwoord XXX . Dit voorbeeld gaat ervan uit dat de gebruiker joesoap ook een gebruiker is op het plaatselijke systeem. poll example.com protocol pop3 username "joesoap" password "XXX" Het volgende voorbeeld legt verbinding met meerdere POP- en IMAP-servers en stuurt de mail door naar verschillende plaatselijke gebruikers indien van toepassing: poll example.com proto pop3: user "joesoap", with password "XXX", is "jsoap" here; user "andrea", with password "XXXX"; poll example2.net proto imap: user "john", with password "XXXXX", is "myth" here; Het gereedschap fetchmail kan in daemon-modus worden gedraaid met de vlag gevolgd door het interval (in seconden) waarmee fetchmail de servers die in het bestand .fetchmailrc vermeld staan dient te vragen. Het volgende voorbeeld zorgt ervoor dat fetchmail elke 600 seconden vraagt: &prompt.user; fetchmail -d 600 Meer informatie over fetchmail is te vinden op . Marc Silver Bijgedragen door procmail gebruiken procmail Het gereedschap procmail is een zeer krachtig gereedschap voor het filteren van binnenkomende mail. Het stelt gebruikers in staat om regels te definiëren welke aan binnenkomende mail gekoppeld kunnen worden om specifieke taken uit te voeren of om de mail naar alternatieve postbussen en/of emailadressen door te sturen. procmail kan met de port mail/procmail geďnstalleerd worden. Eenmaal geďnstalleerd kan het direct met de meeste MTAs geďntegreerd worden; raadpleeg de documentatie van de MTA voor meer informatie. Als alternatief kan procmail geďntegreerd worden door de volgende regel aan het bestand .forward in de thuismap van de gebruiker die procmail gebruikt toe te voegen: "|exec /usr/local/bin/procmail || exit 75" De volgende sectie geeft wat basisregels van procmailmet een korte beschrijving ervan. Deze, en andere, regels dienen in het bestand .procmailrc geplaatst te worden, welke zich in de thuismap van de gebruiker dient te bevinden. De meerderheid van deze regels kan ook in de hulppagina &man.procmailex.5; gevonden worden. Stuur alle mail van user@example.com door naar het externe adres goodmail@example2.com: :0 * ^From.*user@example.com ! goodmail@example2.com Stuur alle mails korten dan 1000 bytes door naar het externe adres goodmail@example2.com: :0 * < 1000 ! goodmail@example2.com Stuur alle mail verzonden aan alternate@example.com door naar een postbus alternate: :0 * ^TOalternate@example.com alternate Stuur alle mail met het onderwerp Spam door naar /dev/null: :0 ^Subject:.*Spam /dev/null Een handig recept dat binnenkomende &os;.org mailinglijsten parseert en elke lijst in en eigen postbus plaatst: :0 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG { LISTNAME=${MATCH} :0 * LISTNAME??^\/[^@]+ FreeBSD-${MATCH} } diff --git a/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml index 132c7bbf5e..9313db129e 100644 --- a/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml +++ b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml @@ -1,6179 +1,6155 @@ Murray Stokely Gereorganiseerd door Siebrand Mazeland Vertaald door René Ladan Netwerkdiensten Overzicht Dit hoofdstuk behandelt een aantal veelgebruikte netwerkdiensten op &unix; systemen. Er wordt ingegaan op de installatie, het instellen, testen en beheren van verschillende typen netwerkdiensten. Overal in dit hoofdstuk staan voorbeeldbestanden met instellingen waar de lezer zijn voordeel mee kan doen. Na het lezen van dit hoofdstuk weet de lezer: Hoe om te gaan met de inetd daemon; Hoe een netwerkbestandssysteem opgezet kan worden; Hoe een netwerkinformatiedienst (NIS) opgezet kan worden voor het delen van gebruikersaccounts; Hoe automatische netwerkinstellingen gemaakt kunnen worden met DHCP; Hoe een domeinnaam server opgezet kan worden; Hoe een Apache HTTP Server opgezet kan worden; Hoe een File Transfer Protocol (FTP) Server opgezet kan worden; Hoe een bestand-- en printserver voor &windows; cliënten opgezet kan worden met Samba; Hoe datum en tijd gesynchroniseerd kunnen worden en hoe een tijdserver opgezet kan worden met het NTP-protocol. Hoe het standaard log-daemon syslogd in te stellen om logs van hosts op afstand te accepteren. Veronderstelde voorkennis: Basisbegrip van de scripts in /etc/rc; Bekend zijn met basis netwerkterminologie; Kennis van de installatie van software van derde partijen (). Chern Lee Bijgedragen door Bijgewerkt door The &os; Documentation Project De <application>inetd</application> <quote>Super-Server</quote> Overzicht &man.inetd.8; wordt soms de Internet Super-Server genoemd, omdat het verbindingen voor meerdere diensten beheert. Als door inetd een verbinding wordt ontvangen, bepaalt die voor welk programma de verbinding bedoeld is, splitst het dat proces af en delegeert de socket (het programma wordt gestart met de socket van de dienst als zijn standaardinvoer, -uitvoer en -foutbeschrijvingen). Het draaien van inetd voor servers die niet veel gebruikt worden kan de algehele werklast verminderen in vergelijking met het draaien van elke daemon individueel in stand-alone modus. inetd wordt primair gebruikt om andere daemons aan te roepen, maar het handelt een aantal triviale protocollen direct af, zoals chargen, auth en daytime. In deze paragraaf worden de basisinstellingen van inetd behandeld met de opties vanaf de commandoregel en met het instellingenbestand /etc/inetd.conf. Instellingen inetd wordt gestart door het &man.rc.8;-systeem. De optie inetd_enable staat standaard op NO, maar kan tijdens de installatie door sysinstall worden aangezet. Door het plaatsen van inetd_enable="YES" of inetd_enable="NO" in /etc/rc.conf wordt inetd bij het opstarten van een systeem wel of niet ingeschakeld. Het commando: &prompt.root; service inetd rcvar kan gedraaid worden om de huidige effectieve instellingen weer te geven. Dan kunnen er ook nog een aantal commandoregelopties aan inetd meegegeven worden met de optie inetd_flags. Commandoregelopties Zoals de meeste serverdaemons heeft inetd een aantal opties die doorgegeven kunnen worden om het gedrag aan te passen. Zie de handleidingpagina &man.inetd.8; voor een volledige lijst van de opties. Opties kunnen door middel van de optie inetd_flags in /etc/rc.conf aan inetd worden doorgegeven. Standaard staat inetd_flags ingesteld op -wW -C 60, dat TCP-wrapping aanzet voor de diensten van inetd, en voorkomt dat elk enkelvoudig IP-adres enige dienst meer dan 60 keer per minuut opvraagt. Ook al worden er hieronder rate-limiting opties besproken, beginnende gebruikers kunnen blij zijn met het feit dat deze parameters gewoonlijk niet hoeven te worden aangepast. Deze opties kunnen interessant zijn wanneer er een buitensporige hoeveelheid verbindingen worden opgezet. Een volledige lijst van opties staat in de hulppagina &man.inetd.8;. -c maximum Geeft het maximale aantal gelijktijdige verzoeken voor iedere dienst aan. De standaard is ongelimiteerd. Kan per dienst ter zijde geschoven worden met de parameter . -C rate Geeft het maximale aantal keren aan dat een dienst vanaf een bepaald IP-adres per minuut aangeroepen kan worden. Kan per dienst ter zijde geschoven worden met de parameter . -R rate Geeft het maximale aantal keren aan dat een dienst per minuut aangeroepen kan worden. De standaard is 256. De instelling 0 geeft aan dat er geen limiet is. -s maximum Specificeert het maximaal aantal keer per minuut dat een dienst aangeroepen kan worden vanuit een enkelvoudig IP-adres; de standaard is onbeperkt. Kan worden overstemd op een per-dienst-basis met de parameter . <filename>inetd.conf</filename> De instellingen van inetd worden beheerd in /etc/inetd.conf. Als er een wijziging wordt aangebracht in /etc/inetd.conf, dan kan inetd gedwongen worden om de instellingen opnieuw in te lezen door dit commando te draaien: Het instellingenbestand van <application>inetd</application> herladen &prompt.root; service inetd reload Iedere regel in het bestand met instellingen heeft betrekking op een individuele daemon. Commentaar wordt vooraf gegaan door een #. De opmaak van elke regel van /etc/inetd.conf is als volgt: service-name socket-type protocol {wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]] user[:group][/login-class] server-program server-program-arguments Een voorbeeldregel voor de daemon &man.ftpd.8; met IPv4 kan eruit zien als: ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l service-name Dit is de dienstnaam van een daemon. Die moet overeenkomen met een dienst uit /etc/services. Hiermee kan de poort waarop inetd moet luisteren aangegeven worden. Als er een nieuwe dienst wordt gemaakt, moet die eerst in /etc/services gezet worden. socket-type Dit is stream, dgram, raw of seqpacket. stream moet gebruikt worden voor verbindingsgebaseerde TCP-daemons, terwijl dgram wordt gebruikt voor daemons die gebruik maken van het transportprotocol UDP. protocol Een van de volgende: Protocol Toelichting tcp, tcp4 TCP IPv4 udp, udp4 UDP IPv4 tcp6 TCP IPv6 udp6 UDP IPv6 tcp46 Zowel TCP IPv4 als v6 udp46 Zowel UDP IPv4 als v6 {wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]] geeft aan of de daemon die door inetd wordt aangesproken zijn eigen sockets kan afhandelen of niet. sockettypen moeten de optie gebruiken, terwijl streamsocket daemons, die meestal multi-threaded zijn, de optie horen te gebruiken. geeft meestal meerdere sockets aan een daemon, terwijl een kinddaemon draait voor iedere nieuwe socket. Het maximum aantal kinddaemons dat inetd mag voortbrengen kan ingesteld worden met de optie . Als een limiet van tien instanties van een bepaalde daemon gewenst is, dan zou er /10 achter gezet worden. Door /0 wordt een onbeperkt aantal kinderen toegestaan. Naast zijn er nog twee andere opties waarmee het maximale aantal verbindingen van een bepaalde plaats naar een daemon ingesteld kan worden. beperkt het aantal verbindingen per minuut voor enig IP-adres, een waarde van tien betekent hier dat er van ieder IP-adres maximaal tien verbindingen naar een bepaalde dienst tot stand gebracht kunnen worden. beperkt het aantal kindprocessen dat namens enig IP-adres op enig moment gestart kan worden. Deze opties kunnen zijn nuttig om bedoeld en onbedoeld buitensporig bronnengebruik van en Denial of Service (DoS) aanvallen op een machine te voorkomen. In dit veld is één van of verplicht. , en zijn optioneel. Een stream-type multi-threaded daemon zonder één van de limieten , of is eenvoudigweg: nowait. Dezelfde daemon met een maximale limiet van tien daemons zou zijn: nowait/10. Dezelfde instellingen met een limiet van twintig verbindingen per IP-adres per minuut en een totaal maximum van tien kinddaemons zou zijn: nowait/10/20. Deze opties worden allemaal gebruikt door de standaardinstellingen van de daemon &man.fingerd.8;: finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s Als afsluiting, een voorbeeld in dit veld met een maximum van 100 kinderen in totaal, met een maximum van 5 voor enig IP-adres zou zijn: nowait/100/0/5. user Dit is de gebruikersnaam waar een daemon onder draait. Daemons draaien meestal als de gebruiker root. Om veiligheidsredenen draaien sommige daemons onder de gebruiker daemon of de gebruiker met de minste rechten: nobody. server-program Het volledige pad van de daemon die uitgevoerd moet worden als er een verbinding wordt ontvangen. Als de daemon een dienst is die door inetd intern wordt geleverd, dan moet de optie gebruikt worden. server-program-arguments Deze optie werkt samen met de optie en hierin worden de argumenten ingesteld, beginnend met argv[0], die bij het starten aan de daemon worden meegegeven. Als mijndaemon -d de commandoregel is, dan zou mijndaemon -d de waarde van zijn. Hier geldt ook dat als de daemon een interne dienst is, hier de optie moet worden. Beveiliging Afhankelijk van keuzes gemaakt tijdens de installatie, kunnen veel van de diensten van inetd standaard ingeschakeld zijn. Het is verstandig te overwegen om een daemon dat niet noodzakelijk is uit te schakelen. Plaats een # voor de daemon in /etc/inetd.conf en herlaad vervolgens de instellingen van inetd. Sommige daemons, zoals fingerd, zijn wellicht helemaal niet gewenst omdat ze informatie geven die nuttig kan zijn voor een aanvaller. Sommige daemons zijn zich niet echt bewust van beveiliging en hebben lange of niet bestaande timeouts voor verbindingspogingen. Hierdoor kan een aanvaller langzaam veel verbindingen maken met een daemon en zo beschikbare bronnen verzadigen. Het is verstandig voor die daemons de limietopties , of te gebruiken als ze naar uw smaak teveel verbindingen hebben. TCP-wrapping staat standaard aan. Er staat meer informatie over het zetten van TCP-restricties op de verschillende daemons die door inetd worden aangesproken in &man.hosts.access.5;. Allerlei daytime, time, echo, discard, chargen en auth zijn allemaal interne diensten van inetd. De dienst auth biedt identiteitsnetwerkdiensten en is tot op een bepaald niveau instelbaar, terwijl de anderen eenvoudigweg aan of uit staan. Meer diepgaande informatie staat in &man.inetd.8;. Tom Rhodes Gereorganiseerd en verbeterd door Bill Swingle Geschreven door Netwerkbestandssysteem (NFS) NFS Het Netwerkbestandssysteem (Network File System) is een van de vele bestandssystemen die &os; ondersteunt. Het staat ook wel bekend als NFS. Met NFS is het mogelijk om mappen en bestanden met anderen in een netwerk te delen. Door het gebruik van NFS kunnen gebruikers en programma's bij bestanden op andere systemen op bijna dezelfde manier als bij hun eigen lokale bestanden. De grootste voordelen van NFS zijn: Lokale werkstations gebruiken minder schijfruimte omdat veel gebruikte data op één machine opgeslagen kan worden en nog steeds toegankelijk is voor gebruikers via het netwerk; Gebruikers hoeven niet op iedere machine een thuismap te hebben. Thuismappen kunnen op de NFS server staan en op het hele netwerk beschikbaar zijn; Opslagapparaten als floppydisks, CD-ROM drives en &iomegazip; drives kunnen door andere machines op een netwerk gebruikt worden. Hierdoor kan het aantal drives met verwijderbare media in een netwerk verkleind worden. Hoe <acronym>NFS</acronym> werkt NFS bestaat uit tenminste twee hoofdonderdelen: een server en een of meer cliënten. De cliënt benadert de gegevens die op een servermachine zijn opgeslagen via een netwerk. Om dit mogelijk te maken moeten er een aantal processen ingesteld en gestart worden. Op de server moeten de volgende daemons draaien: NFS server bestandsserver UNIX cliënten rpcbind mountd nfsd Daemon Beschrijving nfsd De NFS-daemon die verzoeken van de NFS cliënten afhandelt. mountd De NFS koppeldaemon die doorgestuurde verzoeken van &man.nfsd.8; uitvoert. rpcbind Deze daemon geeft voor NFS-cliënten aan welke poort de NFS-server gebruikt. Op de cliënt kan ook een daemon draaien: nfsiod. De daemon nfsiod handelt verzoeken van de NFS-server af. Dit is optioneel en kan de prestaties verbeteren, maar het is niet noodzakelijk voor een normale en correcte werking. Meer informatie staat in &man.nfsiod.8;. <acronym>NFS</acronym> instellen NFS instellen NFS instellen gaat redelijk rechtlijnig. Alle processen die moeten draaien kunnen meestarten bij het opstarten door een paar wijzigingen in /etc/rc.conf. Op de NFS server dienen de volgende opties in /etc/rc.conf te staan: rpcbind_enable="YES" nfs_server_enable="YES" mountd_flags="-r" mountd start automatisch als de NFS server is ingeschakeld. Op de cliënt dient de volgende optie in /etc/rc.conf te staan: nfs_client_enable="YES" In het bestand /etc/exports staat beschreven welke bestandssystemen NFS moet exporteren (soms heet dat ook wel delen of sharen). Iedere regel in /etc/exports slaat op een bestandssysteem dat wordt geëxporteerd en welke machines toegang hebben tot dat bestandssysteem. Samen met machines die toegang hebben, kunnen ook toegangsopties worden aangegeven. Er zijn veel opties beschikbaar, maar hier worden er maar een paar beschreven. Alle opties staan beschreven in &man.exports.5;. Nu volgen een aantal voorbeelden voor /etc/exports: NFS exportvoorbeelden Het volgende voorbeeld geeft een beeld van hoe een bestandssysteem te exporteren, hoewel de instellingen afhankelijk zijn van de omgeving en het netwerk. Om bijvoorbeeld de map /cdrom te exporteren naar drie machines die dezelfde domeinnaam hebben als de server (vandaar dat de machinenamen geef domeinachtervoegsel hebben) of in /etc/hosts staan. De vlag exporteert het bestandssysteem als alleen–lezen. Door die vlag kan een ander systeem niet schrijven naar het geëxporteerde bestandssysteem. /cdrom -ro host1 host2 host3 Het volgende voorbeeld exporteert /home naar drie hosts op basis van IP-adres. Dit heeft zin als er een privaat netwerk bestaat, zonder dat er een DNS server is ingesteld. Optioneel kan /etc/hosts gebruikt worden om interne hostnamen in te stellen. Er is meer informatie te vinden in &man.hosts.5;. Met de vlag mogen submappen ook koppelpunten zijn. De submap wordt dan niet feitelijk aangekoppeld, maar de cliënt koppelt dan alleen de submappen aan die verplicht of nodig zijn. /home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4 Het volgende voorbeeld exporteert /a zo dat twee cliënten uit verschillende domeinen bij het bestandssysteem mogen. Met de vlag mag de gebruiker op het andere systeem gegevens naar het geëxporteerde bestandssysteem schrijven als root. Als de vlag niet wordt gebruikt, dan kan een gebruiker geen bestanden wijzigen op het geëxporteerde bestandssysteem, zelfs niet als een gebruiker daar root is. /a -maproot=root host.example.com box.example.org Om een cliënt toegang te geven tot een geëxporteerd bestandssysteem, moet die cliënt daar rechten voor hebben. De cliënt moet daarvoor genoemd worden in /etc/exports. In /etc/exports staat iedere regel voor de exportinformatie van één bestandssysteem naar één host. Per bestandssysteem mag een host maar één keer genoemd worden en mag maar één standaard hebben. Stel bijvoorbeeld dat /usr een enkel bestandssysteem is. Dan is de volgende /etc/exports niet geldig: ># Werkt niet als /usr 1 bestandssysteem is /usr/src client /usr/ports client Eén bestandssysteem, /usr, heeft twee regels waarin exports naar dezelfde host worden aangegeven, client. In deze situatie is de juiste instelling: /usr/src /usr/ports client De eigenschappen van een bestandssysteem dat naar een bepaalde host wordt geëxporteerd moeten allemaal op één regel staan. Regels waarop geen cliënt wordt aangegeven worden behandeld als een enkele host. Dit beperkt hoe bestandssysteem geëxporteerd kunnen worden, maar dat blijkt meestal geen probleem te zijn. Het volgende voorbeeld is een geldige exportlijst waar /usr en /exports lokale bestandssystemen zijn: # Exporteer src en ports naar client01 en client02, # maar alleen client01 heeft er rootprivileges /usr/src /usr/ports -maproot=root client01 /usr/src /usr/ports client02 # De cliëntmachines hebben rootrechten en kunnen overal aankoppelen # op /exports. Iedereen in de wereld kan /exports/obj als alleen-lezen aankoppelen. /exports -alldirs -maproot=root client01 client02 /exports/obj -ro De daemon mountd moet gedwongen worden om het bestand /etc/exports te controleren steeds wanneer het is aangepast, zodat de veranderingen effectief kunnen worden. Dit kan worden bereikt door ňfwel een HUP-signaal naar de draaiende daemon te sturen: &prompt.root; kill -HUP `cat /var/run/mountd.pid` of door het &man.rc.8; script mountd met de juiste parameter aan te roepen: &prompt.root; service mountd onereload Raadpleeg voor meer informatie over het gebruik van rc-scripts. Het is ook mogelijk een machine te herstarten, zodat &os; alles netjes in kan stellen, maar dat is niet nodig. Het uitvoeren van de volgende commando's als root hoort hetzelfde resultaat te hebben. Op de NFS server: &prompt.root; rpcbind &prompt.root; nfsd -u -t -n 4 &prompt.root; mountd -r Op de NFS cliënt: &prompt.root; nfsiod -n 4 Nu is alles klaar om feitelijk het netwerkbestandssysteem aan te koppelen. In de volgende voorbeelden is de naam van de server server en de naam van de cliënt is client. Om een netwerkbestandssysteem slechts tijdelijk aan te koppelen of om alleen te testen, kan een commando als het onderstaande als root op de cliënt uitgevoerd worden: NFS aankoppelen &prompt.root; mount server:/home /mnt Hiermee wordt de map /home op de server aangekoppeld op /mnt op de cliënt. Als alles juist is ingesteld, zijn nu in /mnt op de cliënt de bestanden van de server zichtbaar. Om een netwerkbestandssysteem iedere keer als een computer opstart aan te koppelen, kan het bestandssysteem worden toegevoegd aan het bestand /etc/fstab: server:/home /mnt nfs rw 0 0 Alle beschikbare opties staan in &man.fstab.5;. Op slot zetten Voor sommige applicaties (b.v. mutt) is het nodig dat bestanden op slot staan om correct te werken. In het geval van NFS, kan rpc.lockd worden gebruikt voor het op slot zetten van bestanden. Voeg het volgende toe aan het bestand /etc/rc.conf op zowel de cliënt als de server om het aan te zetten (het wordt aangenomen dat de NFS-cliënt en -server reeds zijn geconfigureerd): rpc_lockd_enable="YES" rpc_statd_enable="YES" Start de applicatie met: &prompt.root; service lockd start &prompt.root; service statd start Als echt op slot zetten tussen de NFS-cliënten en de NFS-server niet nodig is, is het mogelijk om de NFS-cliënt bestanden lokaal op slot te laten zetten door aan &man.mount.nfs.8; door te geven. In de handleidingpagina &man.mount.nfs.8; staan verdere details. Mogelijkheden voor gebruik NFS is voor veel doeleinden in te zetten. Een aantal voorbeelden: NFS gebruik Een aantal machines een CD-ROM of andere media laten delen. Dat is goedkoper en vaak ook handiger, bijvoorbeeld bij het installeren van software op meerdere machines; Op grote netwerken kan het praktisch zijn om een centrale NFS server in te richten, waarop alle thuismappen staan. Die thuismappen kunnen dan geëxporteerd worden, zodat gebruikers altijd dezelfde thuismap hebben, op welk werkstation ze ook aanmelden; Meerdere machines kunnen een gezamenlijke map /usr/ports/distfiles hebben. Dan is het mogelijk om een port op meerdere machines te installeren, zonder op iedere machine de broncode te hoeven downloaden. Wylie Stilwell Geschreven door Chern Lee Herschreven door Automatisch aankoppelen met <application>amd</application> amd automatic mounter daemon &man.amd.8; (de automatic mounter daemon) koppelt automatisch netwerkbestandssystemen aan als er aan een bestand of map binnen dat bestandssysteem wordt gerefereerd. amd ontkoppelt ook bestandssystemen die een bepaalde tijd niet gebruikt worden. Het gebruikt van amd is een aantrekkelijk en eenvoudig alternatief ten opzichte van permanente koppelingen, die meestal in /etc/fstab staan. amd werkt door zichzelf als NFS-server te koppelen aan de mappen /host en /net. Als binnen die mappen een bestand wordt geraadpleegd, dan zoekt amd de bijbehorende netwerkkoppeling op en koppelt die automatisch aan. /net wordt gebruikt om een geëxporteerd bestandssysteem van een IP-adres aan te koppelen, terwijl /host wordt gebruikt om een geëxporteerd bestandssysteem van een hostnaam aan te koppelen. Het raadplegen van een bestand in /host/foobar/usr geeft amd aan dat die moet proberen de /usr export op de host foobar aan te koppelen. Een export aankoppelen met <application>amd</application> De beschikbare koppelingen van een netwerkhost zijn te bekijken met showmount. Om bijvoorbeeld de koppelingen van de host foobar te bekijken: &prompt.user; showmount -e foobar Exports list on foobar: /usr 10.10.10.0 /a 10.10.10.0 &prompt.user; cd /host/foobar/usr Zoals in het bovenstaande voorbeeld te zien is, toont showmount /usr als een export. Als er naar de map /host/foobar/usr wordt gegaan, probeert amd de hostnaam foobar te resolven en de gewenste export automatisch aan te koppelen. amd kan gestart worden door de opstartscript door de volgende regel in /etc/rc.conf te plaatsen: amd_enable="YES" Er kunnen ook nog opties meegegeven worden aan amd met de optie amd_flags. Standaard staat amd_flags ingesteld op: amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map" In het bestand /etc/amd.map staan de standaardinstellingen waarmee exports aangekoppeld worden. In het bestand /etc/amd.conf staan een aantal van de meer gevorderde instellingen van amd. In &man.amd.8; en &man.amd.conf.5; staat meer informatie. John Lind Geschreven door Problemen bij samenwerking met andere systemen Bepaalde Ethernet adapters voor ISA PC systemen kennen limieten die tot serieuze netwerkproblemen kunnen leiden, in het bijzonder met NFS. Dit probleem is niet specifiek voor &os;, maar het kan op &os; wel voor komen. Het probleem ontstaat bijna altijd als (&os;) PC-systemen netwerken met hoog presterende werkstations, zoals van Silicon Graphics, Inc. en Sun Microsystems, Inc. De NFS-koppeling werkt prima en wellicht lukken een aantal acties ook, maar dan ineens lijkt de server niet meer te reageren voor de cliënt, hoewel verzoeken van en naar andere systemen gewoon verwerkt worden. Dit gebeurt op een cliëntsysteem, of de cliënt nu het &os; systeem is of het werkstation. Op veel systemen is er geen manier om de cliënt netjes af te sluiten als dit probleem is ontstaan. Vaak is de enige mogelijkheid een reset van de cliënt, omdat het probleem met NFS niet opgelost kan worden. Hoewel de enige correcte oplossing de aanschaf van een snellere en betere Ethernet adapter voor het &os; systeem is, is er zo om het probleem heen te werken dat het werkbaar is. Als &os; de server is, kan de optie gebruikt worden bij het aankoppelen door de cliënt. Als het &os; systeem de cliënt is, dan dient het NFS-bestandssysteem aangekoppeld te worden met de optie . Deze opties kunnen het vierde veld zijn in een regel in fstab voor automatische aankoppelingen en bij handmatige aankoppelingen met &man.mount.8; kan de parameter gebruikt worden. Soms wordt een ander probleem voor dit probleem versleten, als servers en cliënten zich op verschillende netwerken bevinden. Als dat het geval is, dan dient vastgesteld te worden dat routers de UDP informatie op de juiste wijze routeren, omdat er anders nooit NFS-verkeer gerouteerd kan worden. In de volgende voorbeelden is fastws de host(interface)naam van een hoog presterend werkstation en freebox is de host(interface)naam van een &os; systeem met een Ethernet adapter die mindere prestaties levert. /sharedfs wordt het geëxporteerde NFS-bestandssysteem (zie &man.exports.5;) en /project wordt het koppelpunt voor het geëxporteerde bestandssysteem op de cliënt. In sommige gevallen kunnen applicaties beter draaien als extra opties als of en gebruikt worden. Voorbeelden voor het &os; systeem (freebox) als de cliënt in /etc/fstab op freebox: fastws:/sharedfs /project nfs rw,-r=1024 0 0 Als een handmatig aankoppelcommando op freebox: &prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /project Voorbeelden voor het &os; systeem als de server in /etc/fstab op fastws: freebox:/sharedfs /project nfs rw,-w=1024 0 0 Als een handmatig aankoppelcommando op fastws: &prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /project Bijna iedere 16–bit Ethernet adapter werkt zonder de hierboven beschreven restricties op de lees- en schrijfgrootte. Voor wie het wil weten wordt nu beschreven wat er gebeurt als de fout ontstaan, wat ook duidelijk maakt waarom het niet hersteld kan worden. NFS werkt meestal met een blockgrootte van 8 K (hoewel het mogelijk is dat er kleinere fragmenten worden verwerkt). Omdat de maximale grootte van een Ethernet pakket rond de 1500 bytes ligt, wordt een block opgesplitst in meerdere Ethernetpakketten, hoewel het hoger in de code nog steeds één eenheid is, en wordt ontvangen, samengevoegd en bevestigd als een eenheid. De hoog presterende werkstations kunnen de pakketten waaruit een NFS-eenheid bestaat bijzonder snel naar buiten pompen. Op de kaarten met minder capaciteit worden de eerdere pakketten door de latere pakketten van dezelfde eenheid ingehaald voordat ze bij die host zijn aangekomen en daarom kan de eenheid niet worden samengesteld en bevestigd. Als gevolg daarvan ontstaat er op het werkstation een timeout en probeert die de eenheid opnieuw te sturen, maar dan weer de hele eenheid van 8 K, waardoor het proces wordt herhaald, ad infinitum. Door de grootte van de eenheid kleiner te houden dan de grootte van een Ethernet pakket, is het zeker dat elk Ethernetpakket dat compleet is aangekomen bevestigd kan worden, zodat de deadlock niet ontstaat. Toch kan een PC systeem nog wel overrompeld worden als hoog presterende werkstations er op inhakken, maar met de betere netwerkkaarten valt het dan in ieder geval niet om door de NFS eenheden. Als het systeem toch wordt overrompeld, dan worden de betrokken eenheden opnieuw verstuurd en dan is de kans groot dat ze worden ontvangen, samengevoegd en bevestigd. Bill Swingle Geschreven door Eric Ogren Verbeterd door Udo Erdelhoff Netwerkinformatiesysteem (NIS/YP) Wat is het? NIS Solaris HP-UX AIX Linux NetBSD OpenBSD NIS, dat staat voor Netwerkinformatiediensten (Network Information Services), is ontwikkeld door Sun Microsystems om het beheer van &unix; (origineel &sunos;) systemen te centraliseren. Tegenwoordig is het eigenlijk een industriestandaard geworden. Alle grote &unix; achtige systemen (&solaris;, HP-UX, &aix;, &linux;, NetBSD, OpenBSD, &os;, enzovoort) ondersteunen NIS. yellow pagesNIS NIS stond vroeger bekend als Yellow Pages, maar vanwege problemen met het handelsmerk heeft Sun de naam veranderd. De oude term, en yp, wordt nog steeds vaak gebruikt. NIS domeinen Het is een op RPC-gebaseerd cliënt/serversysteem waarmee een groep machines binnen een NIS-domein een gezamenlijke verzameling met instellingenbestanden kan delen. Hierdoor kan een beheerder NIS-systemen opzetten met een minimaal aantal instellingen en vanaf een centrale lokatie instellingen toevoegen, verwijderen en wijzigen. Windows NT Het is te vergelijken met het &windowsnt; domeinsysteem en hoewel de interne implementatie van de twee helemaal niet overeenkomt, is de basisfunctionaliteit vergelijkbaar. Termen en processen om te onthouden Er zijn een aantal termen en belangrijke gebruikersprocessen die een rol spelen bij het implementeren van NIS op &os;, zowel bij het maken van een NIS-server als bij het maken van een systeem dan NIS-cliënt is: rpcbind portmap Term Beschrijving NIS-domeinnaam Een NIS-masterserver en al zijn cliënten (inclusief zijn slave master) hebben een NIS-domeinnaam. Vergelijkbaar met een &windowsnt; domeinnaam, maar de NIS-domeinnaam heeft niets te maken met DNS. rpcbind Moet draaien om RPC (Remote Procedure Call in te schakelen, een netwerkprotocol dat door NIS gebruikt wordt). Als rpcbind niet draait, dan kan er geen NIS-server draaien en kan een machine ook geen NIS-cliënt zijn. ypbind Verbindt een NIS-cliënt aan zijn NIS-server. Dat gebeurt door met de NIS-domeinnaam van het systeem en door het gebruik van RPC te verbinden met de server. ypbind is de kern van cliënt-server communicatie in een NIS-omgeving. Als ypbind op een machine stopt, dan kan die niet meer bij de NIS-server komen. ypserv Hoort alleen te draaien op NIS-servers. Dit is het NIS-serverproces zelf. Als &man.ypserv.8; stopt, dan kan de server niet langer reageren op NIS-verzoeken (hopelijk is er dan een slaveserver om het over te nemen). Er zijn een aantal implementaties van NIS, maar niet die op &os;, die geen verbinding met een andere server proberen te maken als de server waarmee ze verbonden waren niet meer reageert. In dat geval is vaak het enige dat werkt het serverproces herstarten (of zelfs de hele server) of het ypbind-proces op de cliënt. rpc.yppasswdd Nog een proces dat alleen op NIS-masterservers hoort te draaien. Dit is een daemon waarbij NIS-cliënten hun NIS-wachtwoorden kunnen wijzigen. Als deze daemon niet draait, moeten gebruikers zich aanmelden op de NIS-masterserver en daar hun wachtwoord wijzigen. Hoe werkt het? Er zijn drie typen hosts in een NIS-omgeving: master servers, slaveservers en cliënten. Servers zijn het centrale depot voor instellingen voor een host. Masterservers bevatten de geautoriseerd kopie van die informatie, terwijl slaveservers die informatie spiegelen voor redundantie. Cliënten verlaten zich op de servers om hun die informatie ter beschikking te stellen. Op deze manier kan informatie uit veel bestanden gedeeld worden. De bestanden master.passwd, group en hosts worden meestal via NIS gedeeld. Als een proces op een cliënt informatie nodig heeft die normaliter in een van die lokale bestanden staat, dan vraagt die het in plaats daarvan aan de NIS-servers waarmee hij verbonden is. Soorten machines - - NIS - - masterserver - - - Een NIS-masterserver. Deze + Een NIS-masterserverNISmasterserver. Deze server onderhoudt, analoog aan een &windowsnt; primaire domeincontroller, de bestanden die door alle NIS-cliënten gebruikt worden. De bestanden passwd, group en andere bestanden die door de NIS-cliënten gebruikt worden staan op de masterserver. Het is mogelijk om één machine master server te laten zijn voor meerdere NIS-domeinen. Dat wordt in deze inleiding echter niet beschreven, omdat die uitgaat van een relatief kleine omgeving. - - NIS - - slaveserver - - - NIS-slaveservers. Deze zijn + NIS-slaveserversNISslaveserver. Deze zijn te vergelijken met &windowsnt; backup domain controllers. NIS-slaveservers beheren een kopie van de bestanden met gegevens op de NIS-master. NIS-slaveservers bieden redundantie, die nodig is in belangrijke omgevingen. Ze helpen ook om de belasting te verdelen met de master server: NIS-cliënten maken altijd een verbinding met de NIS-server die het eerst reageert en dat geldt ook voor antwoorden van slaveservers. - - NIS - - cliënt - - - NIS-cliënten. + NIS-cliëntenNIScliënt. NIS-cliënten authenticeren, net als de meeste &windowsnt; werkstations, tegen de NIS-server (of de &windowsnt; domain controller in het geval van &windowsnt; werkstations) bij het aanmelden. NIS/YP gebruiken Dit onderdeel behandelt het opzetten van een NIS-voorbeeldomgeving. Plannen Er wordt uitgegaan van een beheerder van een klein universiteitslab. Dat lab, dat bestaat uit &os; machines, kent op dit moment geen centraal beheer. Iedere machine heeft zijn eigen /etc/passwd en /etc/master.passwd. Die bestanden worden alleen met elkaar in lijn gehouden door handmatige handelingen. Als er op dit moment een gebruiker aan het lab wordt toegevoegd, moet adduser op alle 15 machines gedraaid worden. Dat moet natuurlijk veranderen en daarom is besloten het lab in te richten met NIS, waarbij twee machines als server worden gebruikt. Het lab ziet er ongeveer als volgt uit: Machinenaam IP-adres Rol Machine ellington 10.0.0.2 NIS-master coltrane 10.0.0.3 NIS-slave basie 10.0.0.4 Wetenschappelijk werkstation bird 10.0.0.5 Cliënt machine cli[1-11] 10.0.0.[6-17] Andere cliënt machines Bij het voor de eerste keer instellen van een NIS-schema is het verstandig eerst na te denken over hoe dat opgezet moet worden. Hoe groot een netwerk ook is, er moeten een aantal beslissingen gemaakt worden. Een NIS-domeinnaam kiezen NIS domeinnaam Dit is wellicht niet de bekende domeinnaam. Daarom wordt het ook de NIS-domeinnaam genoemd. Bij de broadcast van een cliënt om informatie wordt ook de naam van het NIS-domein waar hij onderdeel van uitmaakt meegezonden. Zo kunnen meerdere servers op een netwerk bepalen of er antwoord gegeven dient te worden op een verzoek. De NIS-domeinnaam kan voorgesteld worden als de naam van een groep hosts die op een of andere manier aan elkaar gerelateerd zijn. Sommige organisaties kiezen hun Internet-domeinnaam als NIS-domeinnaam. Dat wordt niet aangeraden omdat het voor verwarring kan zorgen bij het debuggen van netwerkproblemen. De NIS-domeinnaam moet uniek zijn binnen een netwerk en het is handig als die de groep machines beschrijft waarvoor hij geldt. Zo kan bijvoorbeeld de financiële afdeling van Acme Inc. als NIS-domeinnaam acme-fin hebben. In dit voorbeeld wordt de naam test-domain gekozen. SunOS Sommige besturingssystemen gebruiken echter (met name &sunos;) hun NIS-domeinnaam als hun Internet-domeinnaam. Als er machines zijn op een netwerk die deze restrictie kennen, dan moet de Internet-domeinnaam als de naam voor het NIS-domeinnaam gekozen worden. Systeemeisen Bij het kiezen van een machine die als NIS-server wordt gebruikt zijn er een aantal aandachtspunten. Een van de onhandige dingen aan NIS is de afhankelijkheid van de cliënten van de server. Als een cliënt de server voor zijn NIS-domein niet kan bereiken, dan wordt die machine vaak onbruikbaar. Door het gebrek aan gebruiker- en groepsinformatie bevriezen de meeste systemen. Daarom moet er een machine gekozen worden die niet vaak herstart hoeft te worden of wordt gebruikt voor ontwikkeling. De NIS-server is in het meest ideale geval een alleenstaande server die als enige doel heeft NIS-server te zijn. Als een netwerk niet zwaar wordt gebruikt, kan de NIS-server op een machine die ook andere diensten aanbiedt gezet worden, maar het blijft belangrijk om ervan bewust te zijn dat als de NIS-server niet beschikbaar is, dat nadelige invloed heeft op alle NIS-cliënten. NIS-servers De hoofdversies van alle NIS-informatie staan opgeslagen op één machine die de NIS-masterserver heet. De databases waarin de informatie wordt opgeslagen heten NIS-afbeeldingen. In &os; worden die afbeeldingen opgeslagen in /var/yp/[domeinnaam] waar [domeinnaam] de naam is van het NIS-domein dat wordt bediend. Een enkele NIS-server kan tegelijkertijd meerdere NIS-domeinen ondersteunen en het is dus mogelijk dat er meerdere van zulke mappen zijn, een voor ieder ondersteund domein. Ieder domein heeft zijn eigen onafhankelijke verzameling afbeeldingen. In NIS-master- en -slaveservers worden alle NIS-verzoeken door de daemon ypserv afgehandeld. ypserv is verantwoordelijk voor het ontvangen van inkomende verzoeken van NIS-cliënten, het vertalen van de gevraagde domeinnaam en mapnaam naar een pad naar het corresponderende databasebestand en het terugsturen van de database naar de cliënten. Een NIS-masterserver opzetten NIS server opzetten Het opzetten van een master NIS-server kan erg eenvoudig zijn, afhankelijk van de behoeften. &os; heeft ondersteuning voor NIS als basisfunctie. Alleen de volgende regels hoeven aan /etc/rc.conf toegevoegd te worden en &os; doet de rest: nisdomainname="test-domain" Deze regel stelt de NIS-domeinnaam in op test-domain bij het instellen van het netwerk (bij het opstarten). nis_server_enable="YES" Dit geeft &os; aan de NIS-serverprocessen te starten als het netwerk de volgende keer wordt opgestart. nis_yppasswdd_enable="YES" Dit schakelt de daemon rpc.yppasswdd in die, zoals al eerder aangegeven, cliënten toestaat om hun NIS-wachtwoord vanaf een cliënt-machine te wijzigen. Afhankelijk van de inrichting van NIS, kunnen er nog meer instellingen nodig zijn. In het onderdeel NIS-servers die ook NIS-cliënten zijn staan meer details. Draai na het instellen van bovenstaande regels het commando /etc/netstart als supergebruiker. Het zal alles voor u instellen, gebruikmakende van de waarden die u in /etc/rc.conf heeft ingesteld. Start als laatste stap, voor het initialiseren van de NIS-afbeeldingen, de daemon ypserv handmatig: &prompt.root; service ypserv start NIS-afbeeldingen initialiseren NIS afbeeldingen Die NIS-afbeeldingen zijn databasebestanden die in de map /var/yp staan. Ze worden gemaakt uit de bestanden met instellingen uit de map /etc van de NIS-master, met één uitzondering: /etc/master.passwd. Daar is een goede reden voor, want het is niet wenselijk om de wachtwoorden voor root en andere administratieve accounts naar alle servers in het NIS-domein te sturen. Daar moet voor het initialiseren van de NIS-afbeeldingen het volgende uitgevoerd worden: &prompt.root; cp /etc/master.passwd /var/yp/master.passwd &prompt.root; cd /var/yp &prompt.root; vi master.passwd Dan horen alle systeemaccounts verwijderd te worden (bin, tty, kmem, games, enzovoort) en alle overige accounts waarvoor het niet wenselijk is dat ze op de NIS-cliënten terecht komen (bijvoorbeeld root en alle andere UID 0 (supergebruiker) accounts). /var/yp/master.passwd hoort niet te lezen te zijn voor een groep of voor de wereld (dus modus 600)! Voor het aanpassen van de rechten kan chmod gebruikt worden. Tru64 UNIX Als dat is gedaan, kunnen de NIS-afbeeldingen geďnitialiseerd worden. Bij &os; zit een script ypinit waarmee dit kan (in de hulppagina staat meer informatie). Dit script is beschikbaar op de meeste &unix; besturingssystemen, maar niet op allemaal. Op Digital UNIX/Compaq Tru64 UNIX heet het ypsetup. Omdat er afbeeldingen voor een NIS-master worden gemaakt, wordt de optie meegegeven aan ypinit. Aangenomen dat de voorgaande stappen zijn uitgevoerd, kunnen de NIS-afbeeldingen gemaakt worden op de volgende manier: ellington&prompt.root; ypinit -m test-domain Server Type: MASTER Domain: test-domain Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. At this point, we have to construct a list of this domains YP servers. rod.darktech.org is already known as master server. Please continue to add any slave servers, one per line. When you are done with the list, type a <control D>. master server : ellington next host to add: coltrane next host to add: ^D The current list of NIS servers looks like this: ellington coltrane Is this correct? [y/n: y] y [..uitvoer van het maken van de afbeeldingen..] NIS Map update completed. ellington has been setup as an YP master server without any errors. ypinit hoort /var/yp/Makefile gemaakt te hebben uit /var/yp/Makefile.dist. Als dit bestand is gemaakt, neemt dat bestand aan dat er in een omgeving met een enkele NIS-server wordt gewerkt met alleen &os;-machines. Omdat test-domain ook een slaveserver bevat, dient /var/yp/Makefile gewijzigd te worden: ellington&prompt.root; vi /var/yp/Makefile Als de onderstaande regel niet al uitgecommentarieerd is, dient dat alsnog te gebeuren: NOPUSH = "True" Een NIS-slaveserver opzetten NIS slaveserver Het opzetten van een NIS-slaveserver is nog makkelijker dan het opzetten van de master. Dit kan door aan te melden op de slaveserver en net als voor de masterserver /etc/rc.conf te wijzigen. Het enige verschil is dat nu de optie gebruikt wordt voor het draaien van ypinit. Met de optie moet ook de naam van de NIS-master meegegeven worden. Het commando ziet er dus als volgt uit: coltrane&prompt.root; ypinit -s ellington test-domain Server Type: SLAVE Domain: test-domain Master: ellington Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. There will be no further questions. The remainder of the procedure should take a few minutes, to copy the databases from ellington. Transferring netgroup... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byuser... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byhost... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring group.bygid... ypxfr: Exiting: Map successfully transferred Transferring group.byname... ypxfr: Exiting: Map successfully transferred Transferring services.byname... ypxfr: Exiting: Map successfully transferred Transferring rpc.bynumber... ypxfr: Exiting: Map successfully transferred Transferring rpc.byname... ypxfr: Exiting: Map successfully transferred Transferring protocols.byname... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byaddr... ypxfr: Exiting: Map successfully transferred Transferring netid.byname... ypxfr: Exiting: Map successfully transferred Transferring hosts.byaddr... ypxfr: Exiting: Map successfully transferred Transferring protocols.bynumber... ypxfr: Exiting: Map successfully transferred Transferring ypservers... ypxfr: Exiting: Map successfully transferred Transferring hosts.byname... ypxfr: Exiting: Map successfully transferred coltrane has been setup as an YP slave server without any errors. Don't forget to update map ypservers on ellington. Nu hoort er een map /var/yp/test-domain te zijn waarin kopieë van de NIS-masterserver afbeeldingen staan. Die moeten bijgewerkt blijven. De volgende regel in /etc/crontab op de slaveservers regelt dat: 20 * * * * root /usr/libexec/ypxfr passwd.byname 21 * * * * root /usr/libexec/ypxfr passwd.byuid Met de bovenstaande twee regels wordt de slave gedwongen zijn afbeeldingen met de afbeeldingen op de masterserver te synchroniseren. Dit is niet verplicht omdat de masterserver automatisch probeert veranderingen aan de NIS-afbeeldingen door te geven aan zijn slaves. Echter, vanwege het belang van correcte wachtwoordinformatie op andere cliënten die van de slaveserver afhankelijk zijn, is het aanbevolen om specifiek de wachtwoordafbeeldingen vaak tot bijwerken te dwingen. Dit is des te belangrijker op drukke netwerken, omdat daar het bijwerken van afbeeldingen niet altijd compleet afgehandeld hoeft te worden. Nu kan ook op de slaveserver het commando /etc/netstart uitgevoerd worden, dat op zijn beurt de NIS-server start. NIS-cliënten Een NIS-cliënt maakt wat heet een verbinding (binding) met een NIS-server met de daemon ypbind. ypbind controleert het standaarddomein van het systeem (zoals ingesteld met domainname) en begint met het broadcasten van RPC-verzoeken op het lokale netwerk. Die verzoeken bevatten de naam van het domein waarvoor ypbind een binding probeert te maken. Als een server die is ingesteld om het gevraagde domein te bedienen een broadcast ontvangt, dan antwoordt die aan ypbind dat dan het IP-adres van de server opslaat. Als er meerdere servers beschikbaar zijn, een master en bijvoorbeeld meerdere slaves, dan gebruikt ypbind het adres van de eerste server die antwoord geeft. Vanaf dat moment stuurt de cliënt alle NIS-verzoeken naar die server. ypbind pingt de server zo nu en dan om te controleren of die nog draait. Als er na een bepaalde tijd geen antwoord komt op een ping, dan markeert ypbind het domein als niet verbonden en begint het broadcasten opnieuw, in de hoop dat er een andere server wordt gelocaliseerd. Een NIS-cliënt opzetten NIS cliënt instellen Het opzetten van een &os; machine als NIS-cliënt is redelijk doorzichtig: Wijzig /etc/rc.conf en voeg de volgende regels toe om de NIS-domeinnaam in te stellen en ypbind mee te laten starten bij het starten van het netwerk: nisdomainname="test-domain" nis_client_enable="YES" Om alle mogelijke regels voor accounts uit de NIS-server te halen, dienen alle gebruikersaccounts uit /etc/master.passwd verwijderd te worden en dient met vipw de volgende regel aan het einde van het bestand geplaatst te worden: +::::::::: Door deze regel wordt alle geldige accounts in de wachtwoordafbeelding van de NIS-server toegang gegeven. Er zijn veel manieren om de NIS-cliënt in te stellen door deze regel te veranderen. In het onderdeel netgroepen hieronder staat meer informatie. Zeer gedetailleerde informatie staat in het boek NFS en NIS beheren van O'Reilly. Er moet tenminste één lokale account behouden blijven (dus niet geďmporteerd via NIS) in /etc/master.passwd en die hoort ook lid te zijn van de groep wheel. Als er iets mis is met NIS, dan kan die account gebruikt worden om via het netwerk aan te melden, root te worden en het systeem te repareren. Om alle groepen van de NIS-server te importeren, kan de volgende regel aan /etc/group toegevoegd worden: +:*:: Voer, om de NIS-cliënt onmiddelijk te starten, de volgende commando's als supergebruiker uit: &prompt.root; /etc/netstart &prompt.root; service ypbind start Na het afronden van deze stappen zou met ypcat passwd de passwd map van de NIS-server te zien moeten zijn. NIS-beveiliging In het algemeen kan iedere netwerkgebruiker een RPC-verzoek doen uitgaan naar &man.ypserv.8; en de inhoud van de NIS-afbeeldingen ontvangen, mits die gebruiker de domeinnaam kent. Omdat soort ongeautoriseerde transacties te voorkomen, ondersteunt &man.ypserv.8; de optie securenets, die gebruikt kan worden om de toegang te beperken tot een opgegeven aantal hosts. Bij het opstarten probeert &man.ypserv.8; de securenets informatie te laden uit het bestand /var/yp/securenets. Dit pad kan verschillen, afhankelijk van het pad dat opgegeven is met de optie . Dit bestand bevat regels die bestaan uit een netwerkspecificatie en een netwerkmasker, gescheiden door witruimte. Regels die beginnen met # worden als commentaar gezien. Een voorbeeld van een securenetsbestand zou er zo uit kunnen zien: # allow connections from local host -- mandatory 127.0.0.1 255.255.255.255 # allow connections from any host # on the 192.168.128.0 network 192.168.128.0 255.255.255.0 # allow connections from any host # between 10.0.0.0 to 10.0.15.255 # this includes the machines in the testlab 10.0.0.0 255.255.240.0 Als &man.ypserv.8; een verzoek ontvangt van een adres dat overeenkomt met een van de bovenstaande regels, dan wordt dat verzoek normaal verwerkt. Als er geen enkele regel op het verzoek van toepassing is, dan wordt het verzoek genegeerd en wordt er een waarschuwing gelogd. Als het bestand /var/yp/securenets niet bestaat, dan accepteert ypserv verbindingen van iedere host. Het programma ypserv ondersteunt ook het pakket TCP Wrapper van Wietse Venema. Daardoor kan een beheerder de instellingenbestanden van TCP Wrapper gebruiken voor toegangsbeperking in plaats van /var/yp/securenets. Hoewel beide methoden van toegangscontrole enige vorm van beveiliging bieden, zijn ze net als de geprivilegieerde poorttest kwetsbaar voor IP spoofing aanvallen. Al het NIS-gerelateerde verkeer hoort door een firewall tegengehouden te worden. Servers die gebruik maken van /var/yp/securenets kunnen wellicht legitieme verzoeken van NIS-cliënten weigeren als die gebruik maken van erg oude TCP/IP-implementaties. Sommige van die implementaties zetten alle host bits op nul als ze een broadcast doen en/of kijken niet naar het subnetmasker als ze het broadcastadres berekenen. Hoewel sommige van die problemen opgelost kunnen worden door de instellingen op de cliënt aan te passen, zorgen andere problemen voor het noodgedwongen niet langer kunnen gebruiker van NIS voor die cliënt of het niet langer gebruiken van /var/yp/securenets. Het gebruik van /var/yp/securenets op een server met zo'n oude implementatie van TCP/IP is echt een slecht idee en zal leiden tot verlies van NIS-functionaliteit voor grote delen van een netwerk. tcpwrapper Het gebruik van het pakket TCP Wrapper leidt tot langere wachttijden op de NIS-server. De extra vertraging kan net lang genoeg zijn om een timeout te veroorzaken in cliëntprogramma's, in het bijzonder als het netwerk druk is of de NIS-server traag is. Als een of meer cliënten last hebben van dat symptoom, dan is het verstandig om de cliëntsysteem in kwestie NIS-slaveserver te maken en naar zichzelf te laten wijzen. Aanmelden voor bepaalde gebruikers blokkeren In het lab staat de machine basie, die alleen faculteitswerkstation hoort te zijn. Het is niet gewenst die machine uit het NIS-domein te halen, maar het passwd bestand op de master NIS-server bevat nu eenmaal accounts voor zowel de faculteit als de studenten. Hoe kan dat opgelost worden? Er is een manier om het aanmelden van specifieke gebruikers op een machine te weigeren, zelfs als ze in de NIS-database staan. Daarvoor hoeft er alleen maar gebruikersnaam met het juiste aantal dubbele punten (zoals bij andere regels) aan het einde van /etc/master.passwd op de cliëntmachine toegevoegd te worden, waar gebruikersnaam de gebruikersnaam van de gebruiker die niet mag aanmelden is. De regel met de geblokkeerde gebruiker moet voor de regel met + staan om NIS-gebruikers toe te staan. Dit gebeurt bij voorkeur met vipw, omdat vipw de wijzigingen aan /etc/master.passwd controleert en ook de wachtwoord database opnieuw bouwt na het wijzigen. Om bijvoorbeeld de gebruiker bill te kunnen laten aanmelden op basie: basie&prompt.root; vipw [voeg -bill::::::::: aan het einde toe, exit] vipw: rebuilding the database... vipw: done basie&prompt.root; cat /etc/master.passwd root:[password]:0:0::0:0:The super-user:/root:/bin/csh toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin operator:*:2:5::0:0:System &:/:/sbin/nologin bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin news:*:8:8::0:0:News Subsystem:/:/sbin/nologin man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin -bill::::::::: +::::::::: basie&prompt.root; Udo Erdelhoff Geschreven door Netgroups gebruiken netgroepen De methode uit het vorige onderdeel werkt prima als er maar voor een beperkt aantal gebruikers en/of machines speciale regels nodig zijn. Op grotere netwerken gebeurt het gewoon dat er wordt vergeten om een aantal gebruikers de aanmeldrechten op gevoelige machines te ontnemen of dat zelfs iedere individuele machine aangepast moet worden, waardoor het voordeel van NIS teniet wordt gedaan: centraal beheren. De ontwikkelaars van NIS hebben dit probleem opgelost met netgroepen. Het doel en de semantiek kunnen vergeleken worden met de normale groepen die gebruikt worden op &unix; bestandssystemen. De belangrijkste verschillen zijn de afwezigheid van een numeriek ID en de mogelijkheid om een netgroep aan te maken die zowel gebruikers als andere netgroepen bevat. Netgroepen zijn ontwikkeld om gebruikt te worden voor grote, complexe netwerken met honderden gebruikers en machines. Aan de ene kant is dat iets Goeds. Aan de andere kant is het wel complex en bijna onmogelijk om netgroepen met een paar eenvoudige voorbeelden uit te leggen. Dat probleem wordt in de rest van dit onderdeel duidelijk gemaakt. Stel dat de succesvolle implementatie van NIS in het lab de interesse heeft gewekt van een centrale beheerclub. De volgende taak is het uitbreiden van het NIS-domein met een aantal andere machines op de campus. De onderstaande twee tabellen bevatten de namen van de nieuwe gebruikers en de nieuwe machines met een korte beschijving. Gebruikersnamen Beschrijving alpha, beta Gewone medewerkers van de IT-afdeling charlie, delta Junior medewerkers van de IT-afdeling echo, foxtrott, golf, ... Gewone medewerkers able, baker, ... Stagiairs Machinenamen Beschrijving war, death, famine, pollution De belangrijkste servers. Alleen senior medewerkers van de IT-afdeling mogen hierop aanmelden. pride, greed, envy, wrath, lust, sloth Minder belangrijke servers. Alle leden van de IT-afdeling mogen aanmelden op deze machines. one, two, three, four, ... Gewone werkstations. Alleen echte medewerkers mogen zich op deze machines aanmelden. trashcan Een erg oude machine zonder kritische data. Zelfs de stagiair mag deze doos gebruiken. Als deze restricties ingevoerd worden door iedere gebruiker afzonderlijk te blokkeren, dan wordt er een -user regel per systeem toegevoegd aan de passwd voor iedere gebruiker die niet mag aanmelden op dat systeem. Als er maar één regel wordt vergeten, kan dat een probleem opleveren. Wellicht lukt het nog dit juist in te stellen bij de bouw van een machine, maar het wordt echt vergeten de regels toe te voegen voor nieuwe gebruikers in de productiefase. Murphy was tenslotte een optimist. Het gebruik van netgroepen biedt in deze situatie een aantal voordelen. Niet iedere gebruiker hoeft separaat afgehandeld te worden. Een gebruik kan aan een of meer groepen worden toegevoegd en aanmelden kan voor alle leden van zo'n groep worden toegestaan of geweigerd. Als er een nieuwe machine wordt toegevoegd, dan hoeven alleen de aanmeldrestricties voor de netgroepen te worden ingesteld. Als er een nieuwe gebruiker wordt toegevoegd, dan hoeft die alleen maar aan de juiste netgroepen te worden toegevoegd. Die veranderingen zijn niet van elkaar afhankelijk: geen voor iedere combinatie van gebruiker en machine moet het volgende .... Als de NIS-opzet zorgvuldig is gepland, dan hoeft er maar één instellingenbestand gewijzigd te worden om toegang tot machines te geven of te ontnemen. De eerst stap is het initialiseren van de NIS-afbeelding netgroup. &man.ypinit.8; van &os; maakt deze map niet standaard, maar als die is gemaakt, ondersteunt de NIS-implementatie hem wel. Een lege map wordt als volgt gemaakt: ellington&prompt.root; vi /var/yp/netgroup Nu kan hij gevuld worden. In het gebruikte voorbeeld zijn tenminste vier netgroepen: IT-medewerkers, IT-junioren, gewone medewerkers en stagiars. IT_MW (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) USERS (,echo,test-domain) (,foxtrott,test-domain) \ (,golf,test-domain) STAGS (,able,test-domain) (,baker,test-domain) IT_MW, IT_APP enzovoort, zijn de namen van de netgroepen. Iedere groep tussen haakjes bevat een of meer gebruikersnamen voor die groep. De drie velden binnen een groep zijn: De naam van de host of namen van de hosts waar de volgende onderdelen geldig zijn. Als er geen hostnaam wordt opgegeven dan is de regel geldig voor alle hosts. Als er wel een hostnaam wordt opgegeven, dan wordt een donker, spookachtig en verwarrend domein betreden. De naam van de account die bij deze netgroep hoort. Het NIS-domein voor de account. Er kunnen accounts uit andere NIS-domeinen geďmporteerd worden in een netgroep als een beheerder zo ongelukkig is meerdere NIS-domeinen te hebben. Al deze velden kunnen jokerkarakters bevatten. Details daarover staan in &man.netgroup.5;. netgroepen De naam van een netgroep mag niet langer zijn dan acht karakters, zeker niet als er andere besturingssystemen binnen een NIS-domein worden gebruikt. De namen zijn hoofdlettergevoelig: alleen hoofdletters gebruiken voor de namen van netgroepen is een makkelijke manier om onderscheid te kunnen maken tussen gebruikers-, machine- en netgroepnamen. Sommige NIS-cliënten (andere dan die op &os; draaien) kunnen niet omgaan met netgroepen met veel leden. Sommige oudere versies van &sunos; gaan bijvoorbeeld lastig doen als een netgroep meer dan 15 leden heeft. Dit kan omzeild worden door meerdere subnetgroepen te maken met 15 gebruikers of minder en een echte netgroep die de subnetgroepen bevat: BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...] BIGGRP2 (,joe16,domain) (,joe17,domain) [...] BIGGRP3 (,joe31,domain) (,joe32,domain) BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3 Dit proces kan herhaald worden als er meer dan 225 gebruikers in een netgroep moeten. Het activeren en distribueren van de nieuwe NIS-map is eenvoudig: ellington&prompt.root; cd /var/yp ellington&prompt.root; make Hiermee worden drie nieuwe NIS-afbeeldingen gemaakt: netgroup, netgroup.byhost en netgroup.byuser. Met &man.ypcat.1; kan bekeken worden op de nieuwe NIS-afbeeldingen beschikbaar zijn: ellington&prompt.user; ypcat -k netgroup ellington&prompt.user; ypcat -k netgroup.byhost ellington&prompt.user; ypcat -k netgroup.byuser De uitvoer van het eerste commando hoort te lijken op de inhoud van /var/yp/netgroup. Het tweede commando geeft geen uitvoer als er geen host-specifieke netgroepen zijn ingesteld. Het derde commando kan gebruikt worden om een lijst van netgroepen voor een gebruiker op te vragen. Het instellen van de cliënt is redelijk eenvoudig. Om de server war in te stellen hoeft alleen met &man.vipw.8; de volgende regel in de regel daarna vervangen te worden: +::::::::: Vervang de bovenstaande regel in de onderstaande. +@IT_MW::::::::: Nu worden alleen de gebruikers die in de netgroep IT_MW geďmporteerd in de wachtwoorddatabase van de host war, zodat alleen die gebruikers zich kunnen aanmelden. Helaas zijn deze beperkingen ook van toepassing op de functie ~ van de shell en alle routines waarmee tussen gebruikersnamen en numerieke gebruikers ID's wordt gewisseld. Met andere woorden: cd ~user werkt niet, ls –l toont het numerieke ID in plaats van de gebruikersnaam en find . –user joe –print faalt met de foutmelding No such user. Om dit te repareren moeten alle gebruikers geďmporteerd worden, zonder ze het recht te geven aan te melden op een server. Dit kan gedaan worden door nog een regel aan /etc/master.passwd toe te voegen: +:::::::::/sbin/nologin Dit betekent importeer alle gebruikers, maar vervang de shell door /sbin/nologin. Ieder veld in een passwd regel kan door een standaardwaarde vervangen worden in /etc/master.passwd. De regel +:::::::::/sbin/nologin moet na +@IT_MW::::::::: komen. Anders krijgen alle gebruikers die uit NIS-komen /sbin/nologin als aanmeldshell. Na deze wijziging hoeft er nog maar één NIS-afbeelding gewijzigd te worden als er een nieuwe medewerker komt bij de IT-afdeling. Dezelfde aanpak kan gebruikt worden voor de minder belangrijke servers door de oude regel +::::::::: in de lokale versie van /etc/master.passwd door iets als het volgende te vervangen: +@IT_MW::::::::: +@IT_APP::::::::: +:::::::::/sbin/nologin Voor normale werkstations zijn het de volgende regels: +@IT_MW::::::::: +@USERS::::::::: +:::::::::/sbin/nologin En dat zou allemaal leuk en aardig zijn als er niet na een paar weken een beleidsverandering komt: de IT-afdeling gaat stagiairs aannemen. De IT-stagiairs mogen de normale werkstations en de minder belangrijke servers gebruiken en de juniorbeheerders mogen gaan aanmelden op de hoofdservers. Dat kan door een nieuwe groep IT_STAG te maken en de nieuwe IT-stagiairs toe te voegen aan die netgroep en dan de instellingen op iedere machine te gaan veranderen. Maar zoals het spreekwoord zegt: Fouten in een centrale planning leiden tot complete chaos. Deze situaties kunnen voorkomen worden door gebruik te maken van de mogelijkheid in NIS om netgroepen in netgroepen op te nemen. Het is mogelijk om rolgebaseerde netgroepen te maken. Er kan bijvoorbeeld een netgroep BIGSRV gemaakt worden om het aanmelden op de belangrijke servers te beperken en er kan een andere netgroep SMALLSRV voor de minder belangrijke servers zijn en een derde netgroep met de naam USERBOX voor de normale werkstations. Al die netgroepen kunnen de netgroepen bevatten die op die machines mogen aanmelden. De nieuwe regels in de NIS-afbeelding netgroup zien er dan zo uit: BIGSRV IT_MW IT_APP SMALLSRV IT_MW IT_APP ITSTAG USERBOX IT_MW ITSTAG USERS Deze methode voor het instellen van aanmeldbeperkingen werkt redelijk goed als er groepen van machines gemaakt kunnen worden met identieke beperkingen. Helaas blijkt dat eerder uitzondering dan regel. Meestal moet het mogelijk zijn om per machine in te stellen wie zich wel en wie zich niet mogen aanmelden. Daarom is het ook mogelijk om via machinespecifieke netgroepen de hierboven aangegeven beleidswijziging op te vangen. In dat scenario bevat /etc/master.passwd op iedere machine twee regels die met + beginnen. De eerste voegt de netgroep toe met de accounts die op de machine mogen aanmelden en de tweede voegt alle andere accounts toe met /sbin/nologin als shell. Het is verstandig om als naam van de netgroep de machinenaam in HOOFDLETTERS te gebruiken. De regels zien er ongeveer als volgt uit: +@MACHINENAAM::::::::: +:::::::::/sbin/nologin Als dit voor alle machines is gedaan, dan hoeven de lokale versies van /etc/master.passwd nooit meer veranderd te worden. Alle toekomstige wijzigingen kunnen dan gemaakt worden door de NIS-afbeelding te wijzigen. Hieronder staat een voorbeeld van een mogelijke netgroep map voor het beschreven scenario met een aantal toevoegingen: # Definieer eerst de gebruikersgroepen IT_MW (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) DEPT1 (,echo,test-domain) (,foxtrott,test-domain) DEPT2 (,golf,test-domain) (,hotel,test-domain) DEPT3 (,india,test-domain) (,juliet,test-domain) ITSTAG (,kilo,test-domain) (,lima,test-domain) D_STAGS (,able,test-domain) (,baker,test-domain) # # En nu een aantal groepen op basis van rollen USERS DEPT1 DEPT2 DEPT3 BIGSRV IT_MW IT_APP SMALLSRV IT_MW IT_APP ITSTAG USERBOX IT_MW ITSTAG USERS # # Een een groep voor speciale taken. # Geef echo en golf toegang tot de anti-virus machine. SECURITY IT_MW (,echo,test-domain) (,golf,test-domain) # # Machinegebaseerde netgroepen # Hoofdservers WAR BIGSRV FAMINE BIGSRV # Gebruiker india heeft toegang tot deze server nodig. POLLUTION BIGSRV (,india,test-domain) # # Deze is erg belangrijk en heeft strengere toegangseisen nodig. DEATH IT_MW # # De anti-virus machine als hierboven genoemd. ONE SECURITY # # Een machine die maar door 1 gebruiker gebruikt mag worden. TWO (,hotel,test-domain) # [...hierna volgen de andere groepen] Als er een soort database wordt gebruikt om de gebruikersaccounts te beheren, dan is het in ieder geval nodig dat ook het eerste deel van de afbeelding met de databaserapportagehulpmiddelen gemaakt kan worden. Dan krijgen nieuwe gebruikers automatisch toegang tot de machines. Nog een laatste waarschuwing: het is niet altijd aan te raden gebruik te maken van machinegebaseerde netgroepen. Als er tientallen of zelfs honderden gelijke machines voor bijvoorbeeld studentenruimtes worden uitgerold, dan is het verstandiger rolgebaseerde netgroepen te gebruiken in plaats van machinegebaseerde netgroepen om de grootte van de NIS-afbeelding binnen de perken te houden. Belangrijk om te onthouden In een NIS-omgeving werken een aantal dingen wel anders. Als er een gebruiker toegevoegd moet worden, dan moet die alleen toegevoegd worden aan de master NIS-server en mag niet vergeten worden dat de NIS-afbeeldingen herbouwd moeten worden. Als dit wordt vergeten, dan kan de nieuwe gebruiker nergens anders aanmelden dan op de NIS-master. Als bijvoorbeeld een nieuwe gebruiker jsmith toegevoegd moet worden: &prompt.root; pw useradd jsmith &prompt.root; cd /var/yp &prompt.root; make test-domain Er kan ook adduser jsmith in plaats van pw useradd jsmith gebruikt worden. De beheeraccounts moeten buiten de NIS-afbeeldingen gehouden worden. Het is niet handig als de beheeraccounts en wachtwoorden naar machines waarop gebruikers zich aanmelden die geen toegang tot die informatie horen te hebben zouden gaan. De NIS-master en slave moeten veilig blijven en zo min mogelijk niet beschikbaar zijn. Als de machine wordt gehackt of als hij wordt uitgeschakeld, dan kunnen er in theorie nogal wat mensen niet meer aanmelden. Dit is de belangrijkste zwakte van elk gecentraliseerd beheersysteem. Als de NIS-servers niet goed beschermd worden, dan worden veel gebruikers boos! NIS v1-compatibiliteit ypserv voor &os; biedt wat ondersteuning voor NIS v1 cliënten. De NIS-implementatie van &os; gebruikt alleen het NIS v2 protocol, maar andere implementaties bevatten ondersteuning voor het v1 protocol voor achterwaartse compatibiliteit met oudere systemen. De ypbind-daemons die bij deze systemen zitten proberen een binding op te zetten met een NIS v1 server, hoewel dat niet per se ooit nodig is (en ze gaan misschien nog wel door met broadcasten nadat ze een antwoord van een v2 server hebben ontvangen). Het is belangrijk om te melden dat hoewel ondersteuning voor gewone cliëntoproepen aanwezig is, deze versie van ypserv geen overdrachtsverzoeken voor v1-afbeeldingen af kan handelen. Daarom kan ypserv niet gebruikt worden als master of slave in combinatie met oudere NIS-servers die alleen het v1 protocol ondersteunen. Gelukkig worden er in deze tijd niet meer zoveel van deze servers gebruikt. NIS-servers die ook NIS-cliënten zijn Het is belangrijk voorzichtig om te gaan met het draaien van ypserv in een multi-server domein waar de server machines ook NIS-cliënten zijn. Het is in het algemeen verstandiger om de servers te dwingen met zichzelf te binden dan ze toe te staan een bindverzoek te broadcasten en het risico te lopen dat ze een binding met elkaar maken. Er kunnen vreemde fouten optreden als een van de servers plat gaat als er andere servers van die server afhankelijk zijn. Na verloop van tijd treedt op de cliënten wel een timeout op en verbinden ze met een andere server, maar de daarmee gepaard gaande vertraging kan aanzienlijk zijn en de foutmodus is nog steeds van toepassing, omdat de servers dan toch weer opnieuw een verbinding met elkaar kunnen vinden. Het is mogelijk een host aan een specifieke server te binden door aan ypbind de vlag mee te geven. Om dit niet iedere keer handmatig na een herstart te hoeven uitvoeren, kan de volgende regel worden opgenomen in /etc/rc.conf van de NIS-server: nis_client_enable="YES" # start ook het cliënt gedeelte nis_client_flags="-S NIS domain,server" In &man.ypbind.8; staat meer informatie. Wachtwoordformaten NIS wachtwoordformaten Een van de meest voorkomende problemen bij het implementeren van NIS is de compatibiliteit van het wachtwoordformaat. Als een NIS-server wachtwoorden gebruikt die met DES gecodeerd zijn, dan kunnen alleen cliënten die ook DES gebruiken ondersteund worden. Als er bijvoorbeeld &solaris; NIS-cliënten in een netwerk zijn, dan moet er vrijwel zeker gebruik gemaakt worden van met DES gecodeerde wachtwoorden. Van welk formaat cliënten en servers gebruik maken is te zien in /etc/login.conf. Als een host gebruik maakt van met DES gecodeerde wachtwoorden, dan staat er in de klasse default een regel als de volgende: default:\ :passwd_format=des:\ :copyright=/etc/COPYRIGHT:\ [Overige regels weggelaten] Andere mogelijke waarden voor passwd_format zijn blf en md5 (respectievelijk voor Blowfish en MD5 gecodeerde wachtwoorden). Als er wijzigingen gemaakt zijn aan /etc/login.conf dan moet de login capability database herbouwd worden door het volgende commando als root uit te voeren: &prompt.root; cap_mkdb /etc/login.conf Het formaat van de wachtwoorden die al in /etc/master.passwd staan worden niet bijgewerkt totdat een gebruiker zijn wachtwoord voor de eerste keer wijzigt nadat de login capability database is herbouwd. Om te zorgen dat de wachtwoorden in het gekozen formaat zijn gecodeerd, moet daarna gecontroleerd worden of de waarde crypt_default in /etc/auth.conf de voorkeur geeft aan het gekozen formaat. Om dat te realiseren dient het gekozen formaat vooraan gezet te worden in de lijst. Als er bijvoorbeeld gebruik gemaakt wordt van DES gecodeerde wachtwoorden, dan hoort de regel er als volgt uit te zien: crypt_default = des blf md5 Als de bovenstaande stappen op alle &os; gebaseerde NIS-servers en cliënten zijn uitgevoerd, dan is het zeker dat ze het allemaal eens zijn over welk wachtwoordformaat er op het netwerk wordt gebruikt. Als er problemen zijn bij de authenticatie op een NIS-cliënt, dan is dit een prima startpunt voor het uitzoeken waar de problemen vandaan komen. Nogmaals: als er een NIS-server in een heterogene omgeving wordt geplaatst, dan is het waarschijnlijk dat er gebruik gemaakt moet worden van DES op alle systemen, omdat dat de laagst overeenkomende standaard is. Greg Sutter Geschreven door Automatisch netwerk instellen (DHCP) Wat is DHCP? Dynamic Host Configuration Protocol DHCP Internet Systems Consortium (ISC) DHCP, het Dynamic Host Configuration Protocol, schrijft voor hoe een systeem verbinding kan maken met een netwerk en hoe het de benodigde informatie kan krijgen om met dat netwerk te communiceren. &os; gebruikt de OpenBSD dhclient welke uit OpenBSD 3.7 komt. Alle informatie over dhclient kan zowel voor de ISC als de OpenBSD DHCP-cliënt gebruikt worden. De DHCP-server zit bij de ISC-distributie. Wat behandeld wordt In dit onderdeel worden de cliëntcomponenten van de ISC en OpenBSD DHCP-cliënt en de servercomponenten van het ISC DHCP-systeem beschreven. Het programma voor de cliënt, dhclient, zit standaard in &os; en de server is beschikbaar via de port net/isc-dhcp42-server. Naast de onderstaande informatie, zijn de hulppagina's van &man.dhclient.8;, &man.dhcp-options.5; en &man.dhclient.conf.5; bruikbare bronnen. Hoe het werkt UDP Als dhclient, de DHCP-cliënt, wordt uitgevoerd op een cliëntmachine, dan begint die met het broadcasten van verzoeken om instellingeninformatie. Standaard worden deze verzoeken op UDP poort 68 gedaan. De server antwoordt op UDP 67 en geeft de cliënt een IP-adres en andere relevante netwerkinformatie, zoals een netmasker, router en DNS-servers. Al die informatie komt in de vorm van een DHCP lease en is voor een bepaalde tijd geldig (die is ingesteld door de beheerder van de DHCP-server). Op die manier kunnen IP-adressen voor cliënten die niet langer met het netwerk verbonden zijn (stale) automatisch weer ingenomen worden. DHCP-cliënten kunnen veel informatie van de server krijgen. Er staat een uitputtende lijst in &man.dhcp-options.5;. &os; integratie &os; integreert de OpenBSD DHCP-cliënt dhclient volledig. Er is ondersteuning voor de DHCP-cliënt in zowel het installatieprogramma als in het basissysteem, waardoor het niet noodzakelijk is om kennis te hebben van het maken van netwerkinstellingen voor het netwerk waar een DHCP-server draait. sysinstall DHCP wordt ondersteund door sysinstall. Bij het instellen van een netwerkinterface binnen sysinstall is de tweede vraag: Wil je proberen de interface met DHCP in te stellen? Als het antwoord bevestigend luidt, dan wordt dhclient uitgevoerd en als dat succesvol verloopt, dan worden de netwerkinstellingen automatisch ingevuld. Voor het gebruiken van DHCP bij het opstarten van het systeem zijn twee instellingen nodig: DHCP vereisten Het apparaat bpf moet in de kernel gecompileerd zijn. Dit kan door device bpf aan het bestand met kernelinstellingen toe te voegen en de kernel te herbouwen. Meer informatie over het bouwen van een kernel staat in . Het apparaat bpf is al onderdeel van de GENERIC kernel die bij &os; zit, dus als er geen sprake is van een aangepaste kernel, dan hoeft er geen nieuwe gemaakt te worden om DHCP aan te praat te krijgen. Voor de lezer die bijzonder begaan is met beveiliging, is het belangrijk aan te geven dat bpf ook het apparaat is waardoor pakketsnuffelaars hun werk kunnen doen (hoewel ze nog steeds als root moeten draaien). bpf is noodzakelijk voor DHCP, maar als beveiliging bijzonder belangrijk is, dan hoort bpf waarschijnlijk niet in een kernel te zitten omdat de verwachting dat er in de toekomst ooit DHCP gebruikt gaat worden. Standaard draait de DHCP-synchronisatie op &os; in de achtergrond, of asynchroon. Andere opstartscripten gaan verder terwijl DHCP wordt voltooid, wat het opstarten van het systeem versnelt. DHCP in de achtergrond werkt goed als de DHCP-server snel op verzoeken reageert en het DHCP-configuratieproces snel gaat. Op sommige systemen kan het lang duren voordat DHCP klaar is. Als netwerkdiensten proberen te draaien voordat DHCP voltooid is, zullen ze falen. Door DHCP in synchrone modus te draaien wordt dit probleem voorkomen en wordt het opstarten gepauzeerd totdat de DHCP-configuratie voltooid is. Gebruik om in de achtergrond verbinding te maken met een DHCP-server terwijl andere opstartscripts verder gaan (asynchrone modus) de waarde DHCP in /etc/rc.conf: ifconfig_fxp0="DHCP" Gebruik om het opstarten te pauzeren totdat DHCP voltooid is de synchrone modus met waarde SYNDHCP: ifconfig_fxp0="SYNDHCP" Vervang fxp0 zoals getoond in deze voorbeelden met de naam van de interface dat dynamisch geconfigureerd moet worden, zoals getoond in . Als er een andere lokatie voor dhclient wordt gebruikt of als er extra parameters aan dhclient meegegeven moeten worden, dan dient ook iets als het volgende toegevoegd te worden: dhclient_program="/sbin/dhclient" dhclient_flags="" DHCP server De DHCP-server, dhcpd, zit bij de port net/isc-dhcp42-server in de Portscollectie. Deze port bevat de ISC DHCP-server en documentatie. Bestanden DHCP instellingenbestanden /etc/dhclient.conf Voor dhclient is een instellingenbestand /etc/dhclient.conf nodig. Dat bestand bevat meestal alleen maar commentaar, omdat de standaardinstellingen redelijk zinvol zijn. Dit bestand wordt beschreven in &man.dhclient.conf.5;. /sbin/dhclient dhclient is statisch gelinkt en staat in /sbin. Er staat meer informatie over dhclient in &man.dhclient.8;. /sbin/dhclient-script dhclient-script is het &os;-specifieke DHCP-cliënt instellingenscript. Het wordt beschreven in &man.dhclient-script.8;, maar het is niet nodig het te wijzigen om goed te werken. /var/db/dhclient.leases.interface De DHCP-cliënt houdt in dit bestand een database bij van geldige leases, die naar een logboekbestand worden geschreven. In &man.dhclient.leases.5; staat een iets uitgebreidere beschrijving. Verder lezen Het DHCP-protocol staat volledig beschreven in RFC 2131. Er is nog een bron van informatie ingesteld op . Een DHCP-server installeren en instellen Wat behandeld wordt In dit onderdeel wordt beschreven hoe een &os; systeem zo ingesteld kan worden dat het opereert als DHCP-server door gebruik te maken van de ISC (Internet Systems Consortium) implementatie van de DHCP-server. De server wordt niet geleverd als deel van &os; en om deze dienst aan te bieden dient de port net/isc-dhcp42-server geďnstalleerd te worden. In staat meer informatie over de Portscollectie. DHCP-serverinstallatie DHCP installatie Om een &os; systeem in te stellen als DHCP-server moet het apparaat &man.bpf.4; in de kernel zijn opgenomen. Om dit te doen dient device bpf aan het bestand met kernelinstellingen toegevoegd te worden en dient de kernel herbouwd te worden. Meer informatie over het bouwen van kernels staat in . Het apparaat bpf is al onderdeel van de GENERIC kernel die bij &os;, dus het is meestal niet nodig om een aangepaste kernel te bouwen om DHCP aan de praat te krijgen. Het is belangrijk te vermelden dat bpf ook het apparaat is waardoor pakketsnuffelaars kunnen werken (hoewel de programma's die er gebruik van maken wel bijzondere toegang nodig hebben). bpf is verplicht voor DHCP, maar als beveiliging van belang is, dan is het waarschijnlijk niet verstandig om bpf in een kernel op te nemen alleen omdat er in de toekomst misschien ooit DHCP gebruikt gaat worden. Hierna dient het standaardbestand dhcpd.conf dat door de port net/isc-dhcp42-server is geďnstalleerd gewijzigd te worden. Standaard is dit /usr/local/etc/dhcpd.conf.sample en dit bestand dient gekopieerd te worden naar /usr/local/etc/dhcpd.conf voordat de wijzigingen worden gemaakt. De DHCP-server instellen DHCP dhcpd.conf dhcpd.conf is opgebouwd uit declaraties over subnetten en hosts en is wellicht het meest eenvoudig te beschrijven met een voorbeeld: option domain-name "example.com"; option domain-name-servers 192.168.4.100; option subnet-mask 255.255.255.0; default-lease-time 3600; max-lease-time 86400; ddns-update-style none; subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.129 192.168.4.254; option routers 192.168.4.1; } host mailhost { hardware ethernet 02:03:04:05:06:07; fixed-address mailhost.example.com; } Deze optie geeft het domein aan dat door cliënten als standaard zoekdomein wordt gebruikt. In &man.resolv.conf.5; staat meer over wat dat betekent. Deze optie beschrijft een door komma's gescheiden lijst met DNS-servers die de cliënt moet gebruiken. Het netmasker dat aan de cliënten wordt voorgeschreven. Een cliënt kan om een bepaalde duur vragen die een lease geldig is. Anders geeft de server aan wanneer de lease vervalt (in seconden). Dit is de maximale duur voor een lease die de server toestaat. Als een cliënt vraagt om een langere lease, dan wordt die wel verstrekt, maar is de maar geldig gedurende max-lease-time seconden. Deze optie geeft aan of de DHCP-server moet proberen de DNS-server bij te werken als een lease is geaccepteerd of wordt vrijgegeven. In de ISC implementatie is deze optie verplicht. Dit geeft aan welke IP-adressen in de groep met adressen zitten die zijn gereserveerd om uitgegeven te worden aan cliënten. Alle IP-adressen tussen de aangegeven adressen en die adressen zelf worden aan cliënten uitgegeven. Geeft de default gateway aan die aan de cliënten wordt voorgeschreven. Het hardware MAC-adres van een host, zodat de DHCP-server een host kan herkennen als die een verzoek doet. Geeft een host aan die altijd hetzelfde IP-adres moet krijgen. Hier kan een hostnaam gebruikt worden, omdat de DHCP-server de hostnaam zelf opzoekt voordat de lease-informatie terug wordt gegeven. Wanneer u klaar bent met het schrijven van uw dhcpd.conf, dient u de DHCP-server in /etc/rc.conf aan te zetten, door het volgende toe te voegen: dhcpd_enable="YES" dhcpd_ifaces="dc0" Vervang de interfacenaam dc0 door de interface (of interfaces, gescheiden door witruimtes) waarop uw DHCP-server moet luisteren naar DHCP-verzoeken van cliënten. Daarna kunt u doorgaan met het starten van de server door het volgende commando te geven: &prompt.root; service isc-dhcpd start Als er later wijzigingen in de instellingen gemaakt moeten worden, dan is het belangrijk te onthouden dat het sturen van een SIGHUP signaal naar dhcpd niet resulteert in het opnieuw laden van de instellingen, zoals voor de meeste daemons geldt. Voor deze daemon dient een signaal SIGTERM gestuurd te worden om het proces te stoppen. Daarna dient de daemon met het hiervoor beschreven commando weer gestart worden. Bestanden DHCP instellingenbestanden /usr/local/sbin/dhcpd dhcpd is statisch gelinkt en staat in /usr/local/sbin. In de hulppagina voor &man.dhcpd.8; die meekomt met de port staat meer informatie over dhcpd. /usr/local/etc/dhcpd.conf dhcpd heeft een instellingenbestand, /usr/local/etc/dhcpd.conf, nodig voordat de daemon diensten aan cliënten kan leveren. Het bestand moet alle informatie bevatten die aan cliënten gegeven moet worden en de informatie die nodig is voor het draaien van de dienst. Dit instellingenbestand staat beschreven in de hulppagina voor &man.dhcpd.conf.5; die meekomt met de port. /var/db/dhcpd.leases De DHCP-server houdt in dit bestand een database bij met leases die zijn uitgegeven en die naar een logboek worden geschreven. In de hulppagina &man.dhcpd.leases.5; die bij de port zit wordt dit uitvoeriger beschreven. /usr/local/sbin/dhcrelay dhcrelay wordt in uitgebreidere omgevingen gebruikt waar de ene DHCP-server een verzoek van een cliënt naar een andere DHCP-server op een ander netwerk doorstuurt. Als deze functionaliteit nodig is, kan die beschikbaar komen door de port net/isc-dhcp42-relay te installeren. De hulppagina voor &man.dhcrelay.8; die bij de port zit bevat meer details. Chern Lee Geschreven door Tom Rhodes Daniel Gerzo Domeinnaamsysteem (<acronym>DNS</acronym>) Overzicht BIND &os; gebruikt standaard een versie van BIND (Berkeley Internet Name Domain), wat de meest gebruikte implementatie van het DNS-protocol is. DNS is het protocol waarmee namen aan IP-adressen gebonden worden en vice versa. Zo wordt bijvoorbeeld op een zoekopdracht voor www.FreeBSD.org geantwoord met het IP-adres van de webserver van het &os; Project en op een zoekopdracht voor ftp.FreeBSD.org wordt geantwoord met het IP-adres van de bijbehorende FTP-machine. Het tegenovergestelde kan ook gebeuren. Een zoekopdracht voor een IP-adres kan de bijbehorende hostnaam opleveren. Het is niet nodig om een naamserver te draaien om op een systeem zoekopdrachten met DNS uit te voeren. &os; wordt momenteel standaard geleverd met de BIND9 DNS-serversoftware. Onze installatie biedt verbeterde beveilingsmogelijkheden, een nieuwe indeling van het bestandssysteem en geautomatiseerde configuratie van &man.chroot.8;. DNS DNS wordt op Internet onderhouden door een enigszins complex systeem van autoritaire root, Top Level Domain (TLD), en andere kleinschaligere naamservers die individuele domeininformatie hosten en cachen. Op dit moment wordt BIND beheerd door het Internet Systems Consortium . Terminologie Om dit document te begrijpen moeten een aantal termen gerelateerd aan DNS begrepen worden. resolver reverse DNS root zone Term Definitie Voorwaartse DNS Het afbeelden van hostnamen op IP-adressen. Herkomst (origin) Verwijst naar het domein dat door een bepaald zonebestand wordt gedekt. named, BIND Vaak gebruikte namen voor het naamserverpakket BIND in &os;. Resolver Een systeemproces waarmee een machine zoekopdrachten om zoneinformatie aan een naamserver geeft. Reverse DNS Het afbeelden van IP-adressen op hostnamen. Rootzone Het begin van de Internet zonehiërarchie. Alle zones vallen onder de rootzone, net zoals alle bestanden in een bestandssysteem onder de rootmap vallen. Zone Een individueel domein, subdomein of een deel van de DNS die door dezelfde autoriteit wordt beheerd. zones voorbeelden Voorbeelden van zones: . is hoe de rootzone normaliter in de documentatie genoemd wordt. org. is een Top Level Domain (TLD) onder de rootzone. example.org. is een zone onder het TLD org.. 1.168.192.in-addr.arpa is een zone die naar alle IP-adressen verwijst die onder de IP-adresruimte 192.168.1.* vallen. Zoals te zien is staat het specifiekere deel van een hostnaam aan de linkerkant. Zo is bijvoorbeeld example.org. specifieker dan org. en is org. specifieker dan de rootzone. De indeling van ieder deel van een hostnaam lijkt veel op een bestandssysteem: de map /dev valt onder de root, enzovoort. Redenen om een naamserver te draaien Naamservers bestaan in het algemeen in twee smaken: autoratieve naamservers en caching (ook bekend als resolving) naamservers. Er is een autoratieve naamserver nodig als: Het gewenst is om DNS-informatie aan te bieden aan de wereld om met autoriteit op verzoeken te antwoorden. Een domein, zoals example.org, is geregistreerd en er IP-adressen aan hostnamen die daaronder liggen toegewezen moeten worden. Een IP-adresblok omgekeerde DNS-ingangen nodig heeft (IP naar hostnaam). Een omgekeerde of tweede naamserver, die een slaaf wordt genoemd, moet antwoorden op verzoeken. Er is een caching naamserver nodig als: Een lokale DNS-server kan cachen en wellicht sneller kan antwoorden dan een naamserver die verder weg staat. Als er een verzoek wordt gedaan voor www.FreeBSD.org, dan doet de resolver meestal een verzoek bij de naamserver van de ISP die de uplink levert en ontvangt daarop een antwoord. Met een lokale, caching DNS-server hoeft het verzoek maar één keer door de caching DNS-server naar de buitenwereld gedaan te worden. Voor aanvullende verzoeken hoeft niet buiten het lokale netwerk te gaan omdat het al lokaal in de cache staat. Hoe het werkt De daemon BIND heet in &os; named. Bestand Beschrijving &man.named.8; De daemon BIND. &man.rndc.8; Naamserverbeheerprogramma. /etc/namedb Map waar zoneinformatie van BIND staat. /etc/namedb/named.conf Instellingenbestand van de daemon. Afhankelijk van hoe en gegeven zone op de server is geconfigureerd, staan de bestanden gerelateerd aan die zone in de submappen master, slave, of dynamic van de map /etc/namedb. Deze bestanden bevatten de DNS-informatie die door de naamserver als antwoord op zoekopdrachten gegeven zal worden. BIND starten BIND starten Omdat BIND standaard wordt geďnstalleerd, is het instellen relatief eenvoudig. De standaardconfiguratie van named is die van een eenvoudige resolverende naamserver, draaiende in een &man.chroot.8;-omgeving, en beperkt tot het luisteren op het lokale IPv4-teruglusadres (127.0.0.1). Gebruik het volgende commando om de server eenmaal met deze configuratie te starten: &prompt.root; service named onestart Om er zeker van te zijn dat de daemon named elke keer bij het opstarten gestart wordt, moet de volgende regel in /etc/rc.conf gezet worden: named_enable="YES" Het is duidelijk dat er vele instelopties voor /etc/namedb/named.conf zijn die buiten het bereik van dit document vallen. Als u echter geďnteresseerd bent in de opstartopties voor named op &os;, bekijk dan de named_*-vlaggen in /etc/defaults/rc.conf en raadpleeg de handleidingpagina &man.rc.conf.5;. De sectie is ook nuttig om te lezen. Instellingenbestanden BIND instellingenbestanden Instellingenbestanden voor named bevinden zich momenteel in /etc/namedb en moeten gewijzigd worden voor gebruik, tenzij er alleen een eenvoudige resolver nodig is. Hier vindt de meeste configuratie plaats. <filename>/etc/namedb/named.conf</filename> // $FreeBSD$ // // In de handleidingpagina's named.conf(5) en named(8), en in de // documentatie in /usr/share/doc/bind9 zijn meer details te vinden. // // Voor het opzetten van een autoratieve server is een grondig begrip // van de werking van DNS noodzakelijk. Zelfs eenvoudige fouten kunnen // de werking verstoren voor beďnvloede partijen of veel onnodig // Internetverkeer veroorzaken. options { // Alle namen van bestanden en paden zijn relatief aan de chroot-map, // indien aanwezig, en moeten volledig gekwalificeerd zijn. directory "/etc/namedb/working"; pid-file "/var/run/named/pid" dump-file "/var/dump/named_dump.db" statistics-file "/var/stats/named.stats" // Als named alleen als een lokale resolver gebruikt wordt, is dit een // veilige standaardinstelling. Om named toegang tot het netwerk te // verschaffen, dient deze optie gecommentarieerd te worden, het // juiste IP-adres opgegeven te worden, of dient deze optie verwijderd // te worden. listen-on { 127.0.0.1; }; // Als u IPv6 aan heeft staan op dit systeem, dient deze optie // uitgecommentarieerd te worden om als lokale resolver te dienen. Om // toegang tot het netwerk te verschaffen, dient een IPv6-adres of het // sleutelwoord "any" gegeven te worden. // listen-on-v6 { ::1; }; // Deze zones zijn reeds opgenomen door de lege zones die hieronder // staan. Als u de gerelateerde lege zones hieronder verwijdert, // dienen deze regels uitgecommentarieerd te worden. disable-empty-zone "255.255.255.255.IN-ADDR.ARPA"; disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; // Als er een DNS-server beschikbaar is bij een upstream provider dan // kan het IP-adres op de regel hieronder ingegeven worden en kan die // geactiveerd worden. Hierdoor wordt voordeel gehaald uit de cache, // waardoor het algehele DNS-verkeer op het Internet vermindert. /* forwarders { 127.0.0.1; }; */ // Als de 'forwarders'-clausule niet leeg is, is de standaard om "forward // first" te gebruiken, welke terug zal vallen op het versturen van een // verzoek naar uw lokale server als de naamservers in 'forwarders' het // antwoord niet weten. Als alternatief kunt u uw naamserver dwingen om // nooit zelf verzoeken in te dienen door de volgende regel aan te // zetten: // forward only; // Als u forwarding automatisch wilt configureren gebaseerd op de regels // in /etc/resolv.conf, verwijder dan het commentaar van de volgende // regel en stel in /etc/rc.conf named_auto_forward=yes in. U kunt ook // named_auto_forward_only aanzetten (het effect hiervan is hierboven // beschreven). // include "/etc/namedb/auto_forward.conf"; Zoals al in het commentaar staat kan van een cache in de uplink geprofiteerd worden als forwarders ingeschakeld worden. Onder normale omstandigheden maakt een naamserver recursief verzoeken tot het Internet op zoek naar zekere naamservers tot er een antwoord komt waar het naar op zoek is. Door de bovenstaande optie in te schakelen wordt eerst de uplink naamserver (of de opgegeven naamserver) gevraagd, waardoor er gebruik gemaakt kan worden van de cache van die server. Als die uplink naamserver een drukke, snelle naamserver is, kan het erg de moeite waard zijn om dit aan te zetten. 127.0.0.1 werkt hier niet. Verander dit IP-adres in een naamserver in de uplink. /* Moderne versies van BIND gebruiken standaard een random UDP-poort voor elk uitgaand verzoek om de kans op cache poisoning drastisch te verminderen. Alle gebruikers wordt met klem verzocht om deze mogelijkheid te gebruiken en hun firewalls overeenkomstig aan te passen. ALS EEN LAATSTE UITVLUCHT om een beperkende firewall te omzeilen kunt u proberen om onderstaande optie aan te zetten. Het gebruik van deze optie vermindert uw kans om een cache poisoning aanval te weerstaan aanzienlijk, en dient indien mogelijk te worden vermeden. Vervang NNNNN in het voorbeeld door een getal tussen 49160 en 65530. */ // query-source address * port NNNNN; }; // Als er een lokale naamserver wordt gebruikt, vergeet dan niet om // eerst 127.0.0.1 in /etc/resolv.conf te zetten zodat die gevraagd // wordt. Controleer ook dat het in /etc/rc.conf is aangezet. // Het traditionele root-hint-mechanisme. Gebruik dit OF de // onderstaande slaafzones. zone "." { type hint; file "/etc/namedb/named.root"; }; /* Het slaaf maken van de volgende zones vanaf de root-naamservers heeft een aantal aanzienlijke voordelen: 1. Snellere lokale resolutie voor uw gebruikers 2. Geen vals verkeer dat vanaf uw netwerk naar de roots wordt verzonden 3. Betere weerstand tegen elke mogelijk falen van de rootserver/DDoS Wel is het zo dat deze methode meer toezicht vraagt dan het hintbestand om er zeker van te zijn dat een onverwachte faalmodus uw server niet heeft lamgelegd. Naamservers die veel clienten serveren zullen meer voordeel uit deze aanpak halen dan individuele hosts. Met zorg gebruiken. Verwijder het commentaar uit de onderstaande regels en commentarieer de bovenstaande hintzone om dit mechanisme te gebruiken. Zoals gedocumenteerd op http://dns.icann.org/services/axfr/ zijn deze zones: "." (de root), ARPA, IN-ADDR.ARPA, IP6.ARPA en ROOT-SERVERS.NET beschikbaar voor AXFR van deze servers op IPv4 en IPv6: xfr.lax.dns.icann.org, xfr.cjr.dns.icann.org */ zone "." { type slave; file "/etc/namedb/slave/root.slave"; masters { 192.5.5.241; // F.ROOT-SERVERS.NET. }; notify no; }; zone "arpa" { type slave; file "/etc/namedb/slave/arpa.slave"; masters { 192.5.5.241; // F.ROOT-SERVERS.NET. }; notify no; }; /* Het lokaal serveren van de volgende zones voorkomt dat enig verzoek voor deze zones uw netwerk verlaat en naar de root-naamservers gaat. Dit heeft twee aanzienlijke voordelen: 1. Snellere lokale resolutie voor uw gebruikers 2. Er zal geen vals verkeer vanaf uw netwerk naar de roots worden verzonden */ // RFCs 1912 en 5735 (en BCP32 voor localhost) zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; }; zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; }; zone "255.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // RFC 1912-stijl zone voor IPv6 localhost adres zone "0.ip6.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; }; // "Dit" netwerk (RFCs 1912 en 5735) zone "0.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // Netwerken voor privaat gebruik (RFC 1918 en 5735) zone "10.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "16.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "17.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "18.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "19.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "20.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "21.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "22.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "23.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "24.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "25.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "26.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "27.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "28.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "29.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "30.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // Lokale link/APIPA (RFCs 3927 en 5735) zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // IETF protocol-toewijzingen (RFCs 5735 en 5736) zone "0.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // TEST-NET-[1-3] voor documentatie (RFCs 5735 en 5737) zone "2.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "100.51.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "113.0.203.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // IPv6-bereik voor documentatie (RFC 3849) zone "8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // Domeinnamen voor documentatie en testen (BCP 32) zone "test" { type master; file "/etc/namedb/master/empty.db"; }; zone "example" { type master; file "/etc/namedb/master/empty.db"; }; zone "invalid" { type master; file "/etc/namedb/master/empty.db"; }; zone "example.com" { type master; file "/etc/namedb/master/empty.db"; }; zone "example.net" { type master; file "/etc/namedb/master/empty.db"; }; zone "example.org" { type master; file "/etc/namedb/master/empty.db"; }; // Router benchmarken (RFC 2544 en 5735) zone "18.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "19.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } // Gereserveerd door IANA - oude ruimte van klasse E (RFC 5735) zone "240.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "241.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "242.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "243.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "244.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "245.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "246.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "247.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "248.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "249.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "250.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "251.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "252.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "253.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "254.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } // Niet-toegewezen IPv6-adressen (RFC 4291) zone "1.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "3.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "4.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "5.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "6.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "7.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "8.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "9.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "a.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "b.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "c.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "d.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "e.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "0.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "1.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "2.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "3.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "4.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "5.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "6.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "7.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "8.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "9.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "a.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "b.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "0.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "1.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "2.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "3.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "4.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "5.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "6.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "7.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } // IPv6 ULA (RFC 4193) zone "c.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "d.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } // IPv6 lokale link (RFC 4291) zone "8.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "9.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "a.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "b.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } // IPv6 verouderde site-lokale adressen (RFC 3879) zone "c.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "d.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "e.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } zone "f.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } // IP6.INT is verouderd (RFC 4159) zone "ip6.int" { type master; file "/etc/namedb/master/empty.db"; } // NB: De IP-adressen hieronder zijn bedoeld als voorbeeld en dienen // niet gebruikt te worden! // // Voorbeeld instellingen voor slaafzones. Het kan handig zijn om // tenminste slaaf te worden voor de zone waar de host onderdeel van // uitmaakt. Bij uw netwerkbeheerder kan het IP-adres van de // verantwoordelijke meester-naamserver nagevraagd worden. // // Vergeet niet om de omgekeerde lookup-zone op te nemen! // Dit is genoemd na de eerste bytes van het IP-adres, in omgekeerde // volgorde, met daarachter ".IN-ADDR.ARPA", of "IP6.ARPA" voor IPv6. // // Het is van groot belang om de werking van DNS en BIND te begrijpen // voordat er een meester-zone wordt opgezet. Er zijn nogal wat // onverwachte valkuilen. Het opzetten van een slaafzone is // gewoonlijk eenvoudiger. // // NB: Zet de onderstaande voorbeelden niet blindelings aan. :-) // Gebruik in plaats hiervan echte namen en adressen. /* Een voorbeeld van een dynamische zone key "exampleorgkey" { algorithm hmac-md5; secret "sf87HJqjkqh8ac87a02lla=="; }; zone "example.org" { type master; allow-update { key "exampleorgkey"; }; file "/etc/namedb/dynamic/example.org"; }; */ /* Voorbeeld van een omgekeerde slaafzone zone "1.168.192.in-addr.arpa" { type slave; file "/etc/namedb/slave/1.168.192.in-addr.arpa"; masters { 192.168.1.1; }; }; */ In named.conf zijn dit voorbeelden van slaafregels voor een voorwaartse en een omgekeerde zone. Voor iedere nieuwe zone die wordt aangeboden dient een nieuwe instelling voor de zone aan named.conf toegevoegd te worden. De eenvoudigste instelling voor de zone example.org kan er als volgt uitzien: zone "example.org" { type master; file "master/example.org"; }; De zone is een master, zoals aangegeven door het statement , waarvan de zoneinformatie in /etc/namedb/example.org staat, zoals het statement aangeeft. zone "example.org" { type slave; file "slave/example.org"; }; In het geval van de slaaf wordt de zoneinformatie voor een zone overgedragen van de master naamserver en opgeslagen in het ingestelde bestand. Als de masterserver het niet meer doet of niet bereikbaar is, dan heeft de slaveserver de overgedragen zoneinformatie nog en kan het die aanbieden. Zonebestanden BIND zonebestanden Een voorbeeldbestand voor een masterzone voor example.org (bestaande binnen /etc/namedb/master/example.org) ziet er als volgt uit: $TTL 3600 ; 1 uur standaard TTL example.org. IN SOA ns1.example.org. admin.example.org. ( 2006051501 ; Serienummer 10800 ; Verversen 3600 ; Opnieuw proberen 604800 ; Verlopen 300 ; Negatieve antwoord-TTL ) ; DNS Servers IN NS ns1.example.org. IN NS ns2.example.org. ; MX Records IN MX 10 mx.example.org. IN MX 20 mail.example.org. IN A 192.168.1.1 ; Machinenamen localhost IN A 127.0.0.1 ns1 IN A 192.168.1.2 ns2 IN A 192.168.1.3 mail IN A 192.168.1.4 mx IN A 192.168.1.5 ; Aliases www IN CNAME example.org. Iedere hostnaam die eindigt op een . is een exacte hostnaam, terwijl alles zonder een . op het einde relatief is aan de oorsprong. Zo wordt ns1 bijvoorbeeld vertaald naar ns1.example.org.. De regels in een zonebestand volgen de volgende opmaak: recordnaam IN recordtype waarde DNS records De meest gebruikte DNS-records: SOA begin van autoriteit (start of authority) NS een bevoegde (autoratieve) name server A een hostadres CNAME de canonieke naam voor een alias MX mail exchanger PTR een domeinnaam pointer (gebruikt in omgekeerde DNS) example.org. IN SOA ns1.example.org. admin.example.org. ( 2006051501 ; Serienummer 10800 ; Ververs na 3 uur 3600 ; Opnieuw proberen na 1 uur 604800 ; Verlopen na 1 week 300 ; Negatieve antwoord-TTL example.org. de domeinnaam, ook de oorsprong voor dit zonebestand. ns1.example.org. de primaire/bevoegde naamserver voor deze zone. admin.example.org. de persoon die verantwoordelijk is voor deze zone, emailadres met @ vervangen. admin@example.org wordt admin.example.org. 2006051501 het serienummer van het bestand. Dit moet iedere keer als het zonebestand wordt aangepast opgehoogd worden. Tegenwoordig geven veel beheerders de voorkeur aan de opmaak yyyymmddrr voor het serienummer. 2006051501 betekent dan dat het voor het laatst is aangepast op 15–05–2006, de laatste 01 betekent dat het zonebestand die dag voor het eerst is aangepast. Het serienummer is belangrijk omdat het slaafnaamservers aangeeft dat een zone is bijgewerkt. IN NS ns1.example.org. Hierboven staat een NS-regel. Voor iedere naamserver die bevoegde antwoorden moet geven voor de zone hoort er zo'n regel te zijn. localhost IN A 127.0.0.1 ns1 IN A 192.168.1.2 ns2 IN A 192.168.1.3 mx IN A 192.168.1.4 mail IN A 192.168.1.5 Een A-record geeft een machinenaam aan. Hierboven is te zien dat ns1.example.org zou resolven naar 192.168.1.2. IN A 192.168.1.1 Deze regel kent IP-adres 192.168.1.1 toe aan de huidige oorsprong, in dit geval example.org. www IN CNAME @ Een canoniek naamrecord wordt meestal gebruikt voor het geven van aliassen aan een machine. In het voorbeeld is www een alias naar de master machine waarvan de naam gelijk is aan de domeinnaam example.org (192.168.1.1). CNAME's kunnen nooit samen met een ander soort record voor dezelfde hostnaam gebruikt worden. MX record IN MX 10 mail.example.org. MX records geven aan welke mailservers verantwoordelijk zijn voor het afhandelen van inkomende mail voor de zone. mail.example.org is de hostnaam van een mailserver en 10 is de prioriteit voor die mailserver. Het is mogelijk meerdere mailservers in te stellen met prioriteiten 10, 20, enzovoorts. Een mailserver die probeert mail af te leveren voor example.org probeert dat eerst bij de MX met de hoogste prioriteit (het record met het laagste prioriteitsnummer), daarna de tweede hoogste, enzovoort, totdat de mail afgeleverd kan worden. Voor in-addr.arpa zonebestanden (omgekeerd DNS) wordt dezelfde opmaak gebruikt, maar dan met PTR-regels in plaats van A of CNAME. $TTL 3600 1.168.192.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. ( 2006051501 ; Serienummer 10800 ; Ververs 3600 ; Opnieuw proberen 604800 ; Verlopen 300 ) ; Negatieve antwoord-TTL IN NS ns1.example.org. IN NS ns2.example.org. 1 IN PTR example.org. 2 IN PTR ns1.example.org. 3 IN PTR ns2.example.org. 4 IN PTR mx.example.org. 5 IN PTR mail.example.org. Dit bestand geeft de juiste IP-adressen voor hostnamen in het voorbeelddomein hierboven. Het is het vernoemen waard dat alle namen aan de rechterkant van een PTR-record volledig gekwalificeerd dienen te zijn (i.e., met een . eindigen). Caching naamserver BIND caching naamserver Een caching naamserver is een naamserver wiens primaire rol het oplossen van recursieve verzoeken is. Het dient simpelweg zelf verzoeken in en onthoudt de antwoorden voor later gebruik. <acronym role="Domain Name Security Extensions">DNSSEC</acronym> BIND DNS veiligheidsuitbreidingen Domain Name Security System Extensions, ofwel DNSSEC, is een verzameling van specificaties om resolvende naamservers te beschermen tegen valse DNS-gegevens, zoals vervalste DNS-records. Door digitale handtekeningen te gebruiken kan een resolver de integriteit van een record controleren. Merk op dat DNSSEC alleen integriteit biedt via het digitaal ondertekenen van het Resource Record (RRs). Het biedt noch betrouwbaarheid noch bescherming tegen onjuiste aannames van eindgebruikers. Dit betekent dat het mensen niet kan beschermen tegen het bezoeken van example.net in plaats van example.com. Het enige wat DNSSEC doet is authenticeren dat de gegevens niet tijdens het transport zijn gecompromitteerd. De beveiliging van DNSSEC is een belangrijke stap in het beveiligen van het internet in het algemeen. De relevante RFCs zijn een goed beginpunt voor meer gedetailleerde gegevens over hoe DNSSEC werkt. Raadpleeg de lijst in . De volgende secties laten zien hoe DNSSEC voor een autoratieve DNS-server en een recursieve (of caching) DNS-server die BIND 9 draait kan worden bewerkstelligd. Hoewel alle versies van BIND 9 DNSSEC ondersteunen, is tenminste versie 9.6.2 nodig om gebruik te kunnen maken van de ondertekende rootzones tijdens het valideren van DNS-verzoeken. Dit komt doordat eerdere versies de benodigde algoritmes om validatie met de sleutel voor de rootzone te uit te voeren niet hebben. Het wordt sterk aangeraden om de nieuwste versie van BIND 9.7 te gebruiken om gebruik te kunnen maken van automatische sleutel-updates voor de rootsleutel en van andere mogelijkheden om zones ondertekend en sleutel up-to-date te houden. Wanneer configuraties tussen 9.6.2 en 9.7 en later verschillen, zullen deze worden toegelicht. Configuratie van een recursieve <acronym>DNS</acronym>-server Het aanzetten van DNSSEC-validatie van verzoeken die door een recursieve DNS-server worden uitgevoerd heeft enkele aanpassingen aan named.conf nodig. Voordat deze wijzigingen worden gemaakt dient de rootzone-sleutel, of vertrouwensanker, te worden opgehaald. Momenteel is de rootzone-sleutel niet beschikbaar in een bestandsformaat dat BIND begrijpt, dus moet het handmatig in het juiste formaat omgezet worden. De sleutel zelf kan verkregen worden door de rootzone ervoor met dig te ondervragen. Door &prompt.user; dig +multi +noall +answer DNSKEY . > root.dnskey te draaien, wordt de sleutel in root.dnskey opgeslagen. De inhoud dient er ongeveer als volgt uit te zien: . 93910 IN DNSKEY 257 3 8 ( AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQ bSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh /RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWA JQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXp oY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3 LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGO Yl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGc LmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= ) ; key id = 19036 . 93910 IN DNSKEY 256 3 8 ( AwEAAcaGQEA+OJmOzfzVfoYN249JId7gx+OZMbxy69Hf UyuGBbRN0+HuTOpBxxBCkNOL+EJB9qJxt+0FEY6ZUVjE g58sRr4ZQ6Iu6b1xTBKgc193zUARk4mmQ/PPGxn7Cn5V EGJ/1h6dNaiXuRHwR+7oWh7DnzkIJChcTqlFrXDW3tjt ) ; key id = 34525 Schrik niet als de verkregen sleutels anders zijn dan in dit voorbeeld. Ze kunnen zijn veranderd nadat deze instructies voor het laatst waren bijgewerkt. De uitvoer bevat in feite twee sleutels. De eerste sleutel, met de waarde 257 na het DNSKEY-recordtype, is degene die nodig is. Deze waarde geeft aan dat dit een Secure Entry Point ( SEP) is, beter bekend als een Key Signing Key (KSK). De tweede sleutel, met de waarde 256, is een deelsleutel, beter bekend als een Zone Signing Key (ZSK). Meer over de verschillende soorten sleutels komt aan bod in . Nu moet de sleutel gecontroleerd en geformatteerd worden zodat BIND deze kan gebruiken. Maak om de sleutel te controleren een DS - RR-paar aan. Maak een bestand aan dat deze RRs bevat aan met &prompt.user; dnssec-dsfromkey -f root-dnskey . > root.ds Deze records gebruiken respectievelijk SHA-1 en SHA-256, en dienen er als het volgende voorbeeld uit te zien, waarbij het langere record SHA-256 gebruikt. . IN DS 19036 8 1 B256BD09DC8DD59F0E0F0D8541B8328DD986DF6E . IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5 Het SHA-256 RR kan nu worden vergeleken met de digest in https://data.iana.org/root-anchors/root-anchors.xml. Om er absoluut zeker van te zijn dat er niet geknoeid is met de sleutel kunnen de gegevens in het XML-bestand worden gecontroleerd met de PGP-handtekening in https//data.iana.org/root-anchors/root-anchors.asc. Vervolgens dient de sleutel juist geformateerd te worden. Dit verschilt een beetje tussen versie 9.6.2 en versie 9.7 en later van BIND. In versie 9.7 is ondersteuning toegevoegd om automatisch veranderingen aan de sleutel te volgen en deze bij te werken indien nodig. Dit wordt gedaan met managed-keys zoals in het volgende voorbeeld te zien is. Als de oudere versie gebruikt wordt, wordt de sleutel toegevoegd met een commando trusted-keys en dient deze handmatig bijgewerkt te worden. Voor BIND 9.6.2 ziet het formaat er uit als: trusted-keys { "." 257 3 8 "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq QxA+Uk1ihz0="; }; Voor versie 9.7 ziet het formaat er echter zo uit: managed-keys { "." initial-key 257 3 8 "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq QxA+Uk1ihz0="; }; De rootsleutel kan nu aan named.conf worden toegevoegd, ofwel direct of door een bestand dat de sleutel bevat te includen. Stel na deze stappen BIND in zodat het DNSSEC-validatie uitvoert op verzoeken door named.conf te bewerken en het volgende aan de directief options toe te voegen: dnssec-enable yes; dnssec-validation yes; Om te controleren dat het ook echt werkt, kan dig gebruikt worden om een verzoek op een ondertekende zone uit te voeren met de zojuist geconfigureerde resolver. Een succesvol antwoord zal de vlag AD bevatten om aan te geven dat de gegevens zijn geautenticeerd. Een verzoek als &prompt.user; dig @resolver +dnssec se ds zou het DS RR paar voor de .se-zone moeten teruggeven. In de sectie flags: moet de vlag AD te zien zijn, als in: ... ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ... De resolver is nu in staat om DNS-verzoeken te autenticeren. Configuratie van een autoratieve <acronym>DNS</acronym>-server Om een autoratieve naamserver een met DNSSEC ondertekende zone te laten serveren is wat meer werk nodig. Een zone wordt ondertekend met cryptografische sleutels die aangemaakt moeten worden. Het is mogelijk om hier slechts één sleutel voor te gebruiken. De methode die de voorkeur verdient is echter om een sterke, goed beschermde Key Signing Key (KSK) die niet vaak wordt geroteerd en een Zone Signing Key (ZSK) die vaker wordt geroteerd te hebben. Informatie over aanbevolen procedures staat in RFC 4641: DNSSEC Operational Practices. Procedures betreffende de rootzone staan in DNSSEC Practice Statement for the Root Zone KSK operator en DNSSEC Practice Statement for the Root Zone ZSK operator. De KSK wordt gebruikt om een autoriteitsketen voor de te valideren gegevens op te bouwen en wordt daarom ook een Secure Entry Point (SEP)-sleutel genoemd. Een bericht-digest van deze sleutel, dat Delegation Signer (DS)-record genoemd wordt, moet gepubliceerd zijn in de ouderzone om een vertrouwensketen op te bouwen. Hoe dit bereikt wordt hangt af van de eigenaar van de ouderzone. De ZSK wordt gebruikt om de zone te ondertekenen, en hoeft alleen daar gepubliceerd te worden. Om DNSSEC aan te zetten voor de zone example.com zoals beschreven in de voorgaande voorbeelden, dient als eerste dnssec-keygen gebruikt te worden om het sleutelpaar met de KSK en ZSK te genereren. Dit sleutelpaar kan verschillende cryptografische algoritmes gebruiken. Het wordt aanbevolen om RSA/SHA-256 voor de sleutels te gebruiken, een sleutellengte van 2048 bits zou voldoende moeten zijn. Om de KSK voor example.com te genereren: &prompt.user; dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE example.com en om de ZSK te genereren: &prompt.user; dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com dnssec-keygen maakt twee bestanden, de publieke en private sleutels in bestanden met namen als Kexample.com.+005+nnnnn.key (publiek) en Kexample.com.+005+nnnnn.private (privaat). Het gedeelte nnnnn van de bestandsnaam is een sleutel-ID van vijf cijfers. Houd bij welke sleutel-ID bij welke sleutel hoort. Dit is in het bijzonder van belang wanneer er meerdere sleutels per zone zijn. Het is ook mogelijk om de sleutels te hernoemen. Voor elk KSK-bestand: &prompt.user; mv Kexample.com.+005+nnnnn.key Kexample.com.+005+nnnn.KSK.key &prompt.user; mv Kexample.com.+005+nnnnn.private Kexample.com.+005+nnnnn.KSK.private Voor ZSK-bestanden dient KSK waar nodig door ZSK vervangen te worden. De bestanden kunnen nu worden opgenomen in het zonebestand, door de opdracht $include te gebruiken. Het zou er ongeveer als volgt uit moeten zien: $include Kexample.com.+005+nnnnn.KSK.key ; KSK $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK Onderteken tenslotte de zone en vertel BIND om het ondertekende zonebestand te gebruiken. Voor het ondertekenen van een zone wordt dnssec-signzone gebruikt. Het commando om de zone example.com, dat zich in example.com.db bevindt, zou er ongeveer zo uit moeten zien: &prompt.user; dnssec-signzone -o example.com -k Kexample.com.+005+nnnnn.KSK example.com.db Kexample.com.+005+nnnnn.ZSK.key De sleutel die aan het argument wordt meegegeven is de KSK en het andere sleutelbestand is de ZSK dat bij het ondertekenen gebruikt moet worden. Het is mogelijk om meer dan één KSK en ZSK op te geven, wat tot gevolg heeft dat de zone met alle meegegeven sleutels wordt ondertekend. Dit kan nodig zijn om zonegegevens aan te leveren die met meerdere algoritmes zijn ondertekend. De uitvoer van dnssec-signzone is een zonebestand met daarin alle RRs ondertekend. Deze uitvoer komt in een bestand met de extensie .signed terecht, zoals example.com.db.signed. De DS-records worden ook naar een apart bestand dsset-example.com geschreven. Om deze ondertekende zone te gebruiken hoeft alleen de zone-directief in named.conf veranderd te worden om example.com.db.signed. Standaard zijn de ondertekeningen slechts 30 dagen geldig, wat betekent dat de zone over ongeveer 15 dagen hertekend moet worden om er zeker van te zijn dat resolvers geen records met oude ondertekeningen cachen. Het is mogelijk om hiervoor een script en een crontaak te maken. Bekijk de relevante handleidingen voor details. Zorg ervoor dat de private sleutels veilig blijven, zoals met alle cryptografische sleutels. Bij het veranderen van een sleutel kan het beste de nieuwe sleutel in de zone opgenomen worden, en nog met de oude sleutel te ondertekenen, en om daarna over te stappen op de nieuwe sleutel. Nadat deze handelingen zijn voltooid kan de oude sleutel uit de zone worden verwijderd. Wanneer dit niet wordt gedaan kunnen de DNS-gegevens tijdelijk onbeschikbaar zijn totdat de nieuwe sleutel door de DNS-hiërarchie is gepropageerd. Meer informatie over sleutelwisselingen en andere praktijken rondom DNSSEC staan in RFC 4641: DNSSEC Operational practices. Automatisering met <acronym>BIND</acronym> 9.7 of nieuwer In versie 9.7 van BIND is een nieuwe mogelijkheid genaamd Smart Signing geďntroduceerd. Deze mogelijkheid heeft als doel om het sleutelbeheer en ondertekenproces eenvoudiger te maken door delen van deze taken te automatiseren. Door de sleutels in een sleutelreservoir te stoppen en de nieuwe optie auto-dnssec te gebruiken, is het mogelijk om een dynamische zone aan te maken welke opnieuw getekend wordt indien dat nodig is. Gebruik om deze zone bij te werken nsupdate met de nieuwe . rndc kan nu ook zones ondertekenen met sleutels uit het sleutelreservoir door de optie te gebruiken. Voeg, om BIND dit automatische ondertekenen en bijwerken van zones te laten gebruiken voor example.com, het volgende aan named.conf toe: zone example.com { type master; key-directory "/etc/named/keys"; update-policy local; auto-dnssec maintain; file "/etc/named/dynamic/example.com.zone"; }; Nadat deze veranderingen gemaakt zijn, dienen de sleutels voor de zone aangemaakt te worden zoals uitgelegd in , deze sleutels in het sleutelreservoir gestopt te worden dat als argument aan de key-directory in het zoneconfiguratie is meegegeven, waarna de zone automatisch zal worden ondertekend. Zones die op deze manier zijn geconfigureerd dienen met nsupdate te worden gedaan, dat voor het opnieuw ondertekenen van de zone met de nieuw toegevoegde gegevens zal zorgen. Zie voor meer details en de BIND-documentatie. Beveiliging Hoewel BIND de meest gebruikte implementatie van DNS is, is er altijd nog het beveiligingsvraagstuk. Soms worden er mogelijke en te misbruiken beveiligingsgaten gevonden. Hoewel &os; named automatisch in een &man.chroot.8;-omgeving plaatst; zijn er verschillende andere beveiligingsmechanismen actief die zouden kunnen helpen om mogelijke aanvallen op de DNS-dienst af te wenden. Het is altijd verstandig om de CERT beveiligingswaarschuwingen te lezen en een abonnement te nemen op de &a.security-notifications; om bij te blijven met de beveiligingsproblemen wat betreft Internet en &os;. Als er problemen ontstaan, kan het bijwerken van broncode en het opnieuw bouwen van named hulp bieden. Verder lezen BIND/named hulppagina's: &man.rndc.8; &man.named.8; &man.named.conf.5; &man.nsupdate.1; &man.dnssec-signzone.8; &man.dnssec-keygen.8; Officiële ISC BIND pagina Officieel ISC BIND Forum O'Reilly DNS en BIND 5e Editie Root DNSSEC DNSSEC Trust Anchor Publication for the Root Zone RFC1034 - Domain Names - Concepts and Facilitities RFC1035 - Domain Names - Implementation and Specification RFC4033 - DNS Security Introduction and Requirements RFC4034 - Resource Records for the DNS Security Extensions RFC4035 - Protocol Modifications for the DNS Security Extensions RFC4641 - DNSSEC Operational Practices RFC5011 - Automated Updates of DNS Security (DNSSEC Trust Anchors) Murray Stokely Geschreven door Apache HTTP server webservers opzetten Apache Overzicht &os; wordt gebruikt om een paar van de drukste websites ter wereld te draaien. De meeste webservers op Internet maken gebruik van de Apache HTTP Server. Apache softwarepakketten staan op de &os; installatiemedia. Als Apache niet bij de oorspronkelijke installatie van &os; is meegeďnstalleerd, dan kan dat vanuit de port www/apache22. Als Apache succesvol is geďnstalleerd, moeten er instellingen gemaakt worden. In dit onderdeel wordt versie 2.2.X van de Apache HTTP Server behandeld omdat die het meest gebruikt wordt op &os;. Meer gedetailleerde informatie over Apache 2.X dat buiten het bereik van dit document valt is te vinden op . Instellen Apache configuratiebestand Het belangrijkste bestand met instellingen voor de Apache HTTP Server op &os; is /usr/local/etc/apache22/httpd.conf. Dit bestand is een typisch &unix; tekstgebaseerd instellingenbestand waarin regels met commentaar beginnen met het karakter #. Het uitputtend beschrijven van alle mogelijke instellingen valt buiten het bereik van dit boek, dus worden alleen de meest gebruikte directieven beschreven. ServerRoot "/usr/local" Hierin wordt de standaard mappenhiërarchie voor de Apache installatie aangegeven. Binaire bestanden staan in de submappen bin en sbin van de serverroot en bestanden met instellingen staan in etc/apache. ServerAdmin beheerder@beheer.adres Het adres waaraan problemen met de server gemaild kunnen worden. Dit adres verschijnt op een aantal door de server gegenereerde pagina's, zoals documenten met foutmeldingen. ServerName www.example.com Met ServerName kan een hostnaam ingesteld worden die wordt teruggezonden aan de cliënten als de naam van de server anders is dan diegene is ingesteld (gebruik bijvoorbeeld www in plaats van de echte hostnaam). DocumentRoot "/usr/local/www/apache22/data" DocumentRoot: de map waaruit de documenten worden geserveerd. Standaard worden alle verzoeken uit deze map gehaald, maar er kunnen symbolische links en aliassen gebruikt worden om naar andere locaties te wijzen. Het is altijd een goed idee om reservekopieën te maken van het instellingenbestand voor Apache vóór het maken van wijzigingen. Als de juiste instellingen gemaakt zijn, kan Apache gestart worden. <application>Apache</application> draaien Apache starten of stoppen De port www/apache2 installeert een &man.rc.8;-script dat helpt met het starten, stoppen en herstarten van Apache en is te vinden in /usr/local/etc/rc.d/. Om Apache met het systeem mee te starten kan de volgende regel aan /etc/rc.conf worden toegevoegd: apache22_enable="YES" Als het nodig is Apache met afwijkende opties op te starten, kan de volgende regel aan /etc/rc.conf worden toegevoegd: apache22_flags="" De configuratie van Apache kan worden getest op fouten voordat het daemon httpd voor de eerste keer wordt gestart, of na het maken van wijzigingen aan de instellingen terwijl httpd draait. Dit kan direct door het &man.rc.8;-script worden gedaan, of door het gereedschap &man.service.8; door één van de volgende commando's op te geven: &prompt.root; service apache22 configtest Het is belangrijk om op te merken dat configtest geen &man.rc.8;-standaard is, verwacht niet dat het met alle &man.rc.8;-opstartscripts werkt. Als Apache geen instellingsfouten meldt, kan Apache httpd gestart worden met &man.service.8;: &prompt.root; service apache22 start De dienst httpd kan getest worden door http://localhost in een webbrowser te typen, waarbij localhost door de volledig gekwalificeerde domeinnaam wordt vervangen van de machine die httpd draait, als het niet de lokale machine is. De standaard webpagina die afgebeeld wordt is /usr/local/www/apache22/data/index.html. Virtuele hosting Apache ondersteunt twee verschillende manieren van Virtuele Hosting. De eerste methode is Naamgebaseerde Virtuele Hosting. Naamgebaseerde Virtuele Hosting gebruikt de HTTP/1.1 headers van de cliënten om de hostnaam uit te zoeken. Hierdoor kunnen meerdere domeinen hetzelfde IP-adres delen. Om Apache gebruik te laten maken van Naamgebaseerde Virtuele Hosting kan een regel als de volgende in httpd.conf worden opgenomen: NameVirtualHost * Als een webserver www.domein.tld heet en er moet een virtueel domein voor www.anderdomein.tld gaan draaien, dan kunnen de volgende regels aan httpd.conf worden toegevoegd: <VirtualHost *> ServerName www.domein.tld DocumentRoot /www/domein.tld </VirtualHost> <VirtualHost *> ServerName www.anderdomein.tld DocumentRoot /www/anderdomein.tld </VirtualHost> De adressen en de paden uit dit voorbeeld kunnen in echte implementaties uiteraard gewijzigd worden. Meer informatie over het opzetten van virtuele hosts staat in de officiële documentatie voor Apache op Apache modules Apache modules Er zijn veel verschillende Apache modules die functionaliteit toevoegen aan de basisdienst. De &os; Portscollectie biedt op een eenvoudige manier de mogelijkheid om Apache samen met de meeste populaire add-on modules te installeren. <application>mod_ssl</application> webserver veilig SSL cryptografie De module mod_ssl gebruikt de bibliotheek OpenSSL om sterke cryptografie te leveren via de protocollen Secure Sockets Layer (SSL v2/v3) en Transport Layer Security (TLS v1). Deze module levert alles wat nodig is om een getekend certificaat aan te vragen bij een vertrouwde certificaatautoriteit om een veilige webserver onder &os; te kunnen draaien. De module mod_ssl wordt standaard gebouwd, maar kan worden aangezet door tijdens het compileren -DWITH_SSL op te geven. Taalbindingen Er zijn Apache-modules beschikbare voor de meeste grote scriptingtalen. Deze modules maken het typisch mogelijk om Apache-modules geheel in een scriptingtaal te schrijven. Ze worden ook vaak gebruikt als een persistente interpreter die in de server zit en die de rompslomp van het starten van een externe interpreter en de opstartvertraging voor dynamische websites vermijdt, zoals beschreven in de volgende sectie. Dynamische websites webservers dynamisch In het afgelopen decennium hebben steeds meer bedrijven zich op Internet gericht om hun omzet te verhogen en hun zichtbaarheid te vergroten. Hiermee is ook de behoefte aan interactieve webinhoud toegenomen. Hoewel sommige bedrijven zoals µsoft; oplossingen hebben geďntroduceerd voor hun eigen (propriëtaire) producten, heeft ook de open source gemeenschap een antwoord op de vraag gegeven. Moderne opties voor dynamische webinhoud zijn onder andere Django, Ruby on Rails, mod_perl2, en mod_php. Django Django is een BSD-gelicenseerd raamwerk ontworpen om ontwikkelaars in staat te stellen om snel hoog presterende, elegante webapplicaties te schrijven. Het biedt een vertaling van objecten naar relaties zodat datatypes ontwikkeld kunnen worden als Python-objecten, en er een rijke dynamische databasetoegang voor die objecten kan worden geboden zonder dat de ontwikkelaar ooit SQL hoeft te schrijven. Het biedt ook een uitbreidbaar sjabloonsysteem zodat de applicatielogica is gescheiden van de HTML-presentatie. Django is afhankelijk van mod_python, Apache, en een SQL-database-engine naar keuze. De &os;-port zal al deze vereisten met de juiste vlaggen voor u installeren. Django installeren met <application>Apache2</application>, <application>mod_python3</application> en <application>PostgreSQL</application> &prompt.root; cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL Als Django en deze vereisten eenmaal zijn geďnstalleerd, dient u een Django-projectmap te maken en vervolgens Apache te configureren om de ingebakken Python-interpreter te gebruiken om uw applicatie voor specifieke URL's op uw site aan te roepen. Apache-configuratie voor Django/mod_python U moet een regel aan het Apache-bestand httpd.conf toevoegen om Apache in te stellen om verzoeken voor bepaalde URL's aan uw webapplicatie door te geven: <Location "/"> SetHandler python-program PythonPath "['/map/naar/uw/django-pakketten/'] + sys.path" PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mijnsite.settings PythonAutoReload On PythonDebug On </Location> Ruby on Rails Ruby on Rails Ruby on Rails is een ader opensource webraamwerk dat een volledige ontwikkelstack biedt en geoptimaliseerd is om webontwikkelaars productiever te maken en snel krachtige applicaties te laten ontwikkelen. Het kan eenvoudig vanuit het portssysteem geďnstalleerd worden. &prompt.root; cd /usr/ports/www/rubygem-rails; make all install clean <application>mod_perl2</application> mod_perl2 Perl Het Apache/Perl integratieproject brengt de volledige kracht van de programmeertaal Perl en de Apache HTTP Server samen. Met de module mod_perl2 is het mogelijk om Apache-modules volledig in Perl te schrijven. Daarnaast voorkomt een ingebouwde persistente interpreter in de server de rompslomp van het starten van een externe interpreter en de nadelen van de opstarttijd van Perl. mod_perl2 is beschikbaar in de port www/mod_perl2. Tom Rhodes Geschreven door <application>mod_php</application> mod_php PHP PHP, ook bekend als PHP: Hypertext Preprocessor, is een algemene scripttaal die bijzonder geschikt is voor webontwikkeling. Het is mogelijk de taal in te bedden in HTML en de syntaxis is afgeleid van C, &java; en Perl met de bedoeling webontwikkelaars in staat te stellen om snel dynamisch samengestelde pagina's te schrijven. Om ondersteuning voor PHP5 toe te voegen aan de Apache webserver kan eerst de port lang/php5 geďnstalleerd worden. Als de port lang/php5 voor het eerst geďnstalleerd wordt, worden automatisch de beschikbare OPTIONS weergegeven. Als er geen menu wordt weergegeven, omdat de port lang/php5 reeds in het verleden is geďnstalleerd, is het altijd mogelijk om het optiedialoog weer te laten verschijnen door &prompt.root; make config uit te voeren in de map van de port. Controleer in het optiedialoog dat de optie APACHE mod_php5 als een laadbare module voor de webserver Apache bouwt. Een heleboel sites draaien nog steeds PHP4 om verschillende redenen (compatibiliteitszaken of reeds in gebruik genomen webapplicaties). Als mod_php4 nodig is in plaats van mod_php5, gebruik dan de port lang/php4. De port lang/php4 ondersteunt een groot deel van de configuratie- en bouwopties van de port lang/php5. Hiermee worden de modules die nodig zijn voor de ondersteuning van dynamische PHP-applicaties geďnstalleerd en ingesteld. Controleer dat de volgende secties aan /usr/local/etc/apache22/httpd.conf zijn toegevoegd: LoadModule php5_module libexec/apache/libphp5.so AddModule mod_php5.c <IfModule mod_php5.c> DirectoryIndex index.php index.html </IfModule> <IfModule mod_php5.c> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule> Na voltooiing is een eenvoudige aanroep van het commando apachectl voor een nette herstart nodig om de module PHP te laden: &prompt.root; apachectl graceful Voor toekomstig bijwerken van PHP zal het commando make config niet nodig zijn; de geselecteerde OPTIONS worden automatisch bewaard door het &os; Ports raamwerk. De ondersteuning voor PHP in &os; is extreem modulair waardoor de basisinstallatie zeer beperkt is. Het is heel gemakkelijk om ondersteuning toe te voegen door de port lang/php5-extensions te gebruiken. Deze port biedt een menugestuurde interface voor de installatie van PHP-uitbreidingen. Als alternatief kunnen individuele uitbreidingen worden geďnstalleerd door de juiste port te gebruiken. Om bijvoorbeeld ondersteuning voor de MySQL databaseserver aan PHP5 toe te voegen kan gewoonweg de port databases/php5-mysql geďnstalleerd worden: Na de installatie van een uitbreiding moet de Apache-server herladen worden om de nieuwe veranderingen in de configuratie op te pikken: &prompt.root; apachectl graceful Murray Stokely Geschreven door File Transfer Protocol (FTP) FTP servers Overzicht Het File Transfer Protocol (FTP) biedt gebruikers een eenvoudige manier om bestanden van en naar een FTP server te verplaatsen. &os; bevat FTP server software, ftpd, in het basissysteem. Hierdoor is het opzetten en beheren van een FTP server op &os; erg overzichtelijk. Instellen De belangrijkste stap bij het instellen is de beslissing welke accounts toegang krijgen tot de FTP server. Een normaal &os; systeem heeft een aantal systeemaccounts die gebruikt worden voor daemons, maar onbekende gebruikers mag niet toegestaan worden van die accounts gebruikt te maken. In /etc/ftpusers staat een lijst met gebruikers die geen FTP toegang hebben. Standaard staan daar de voorgenoemde accounts in, maar het is ook mogelijk om daar gebruikers toe te voegen die geen FTP toegang mogen hebben. Het kan ook wenselijk zijn de FTP toegang voor sommige gebruikers te beperken, maar niet onmogelijk te maken. Dit kan met /etc/ftpchroot. In dat bestand staan gebruikers en groepen waarop FTP toegangsbeperkingen van toepassing zijn. In &man.ftpchroot.5; staan alle details die hier niet beschreven zijn. FTP anoniem Om anonieme FTP toegang voor een server in te schakelen, dient er een gebruiker ftp op een &os; systeem aangemaakt te worden. Dan kunnen gebruikers op de server aanmelden met de gebruikersnaam ftp of anonymous en met ieder wachtwoord (de geldende conventie schrijft voor dat dit een emailadres van de gebruiker is). De FTP server roep bij een anonieme aanmelding &man.chroot.2; aan, zodat er alleen toegang is tot de thuismap van de gebruiker ftp. Er zijn twee tekstbestanden waarin welkomstberichten voor de FTP-cliënten gezet kunnen worden. De inhoud van /etc/ftpwelcome wordt getoond voordat gebruikers een aanmeldprompt zien. Na een succesvolle aanmelding wordt de inhoud van /etc/ftpmotd getoond. Het genoemde pad is relatief ten opzichte van de aanmeldomgeving, dus voor anonieme gebruikers wordt ~ftp/etc/ftpmotd getoond. Als een FTP server eenmaal correct is ingesteld, moet die ingeschakeld worden in /etc/inetd.conf. Daar moet het commentaarkarakter # voor de bestaande ftpd regel verwijderd worden: ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l Zoals is uitgelegd in , moet de configuratie van inetd worden herladen nadat dit instellingenbestand is gewijzigd. Details over het aanzetten van inetd op uw systeem staan in . Als alternatief kan ftpd ook gestart worden als een op zichzelf staande dienst. In dat geval volstaat het om de juiste variabele in te stellen in /etc/rc.conf: ftpd_enable="YES" Na het instellen van de bovenstaande variabele zal de op zichzelf staande server gestart worden nadat de computer opnieuw is opgestart, of het kan handmatig worden gestart door het volgende commando als root uit te voeren: &prompt.root; service ftpd start Nu kan aangemeld worden op de FTP-server met: &prompt.user; ftp localhost Beheren syslog logboekbestanden FTP De ftpd daemon gebruikt &man.syslog.3; om berichten te loggen. Standaard plaatst de systeemlogdaemon berichten over FTP in /var/log/xferlog. De lokatie van het FTP logboek kan gewijzigd worden door de volgende regels in /etc/syslog.conf te wijzigen: ftp.info /var/log/xferlog FTP anoniem Het is verstandig na te denken over de gevaren die op de loer liggen bij het draaien van een anonieme FTP server. Dat geldt in het bijzonder voor het laten uploaden ven bestanden. Het is dan goed mogelijk dat een FTP site een forum wordt om commerciële software zonder licenties uit te wisselen of erger. Als anonieme uploads toch nodig zijn, dan horen de rechten op die bestanden zo te staan dat ze niet door andere anonieme gebruikers gelezen kunnen worden tot er door een beheerder naar gekeken is. Murray Stokely Geschreven door Bestands- en printdiensten voor µsoft.windows; cliënten (Samba) Samba server Microsoft Windows bestandsserver Windows-cliënten printserver Windows-cliënten Overzicht Samba is een populair open source softwarepakket dat bestands- en printdiensten voor µsoft.windows; cliënten biedt. Die cliënten kunnen dan ruimte op een &os; bestandssysteem gebruiken alsof het een lokale schijf is en &os; printers gebruiken alsof het lokale printers zijn. Samba softwarepakketten horen op de &os; installatiemedia te staan. Als Samba bij de basisinstallatie niet mee is geďnstalleerd, dan kan dat alsnog via de net/samba34 port of met het pakket. Instellen Een standaardbestand met instellingen voor Samba wordt geďnstalleerd als /usr/local/share/examples/samba34/smb.conf.default. Dit bestand dient gekopieerd te worden naar /usr/local/etc/smb.conf en voordat Samba gebruikt kan worden, moeten er aanpassingen aan worden gemaakt. smb.conf bevat de instellingen voor Samba, zoals die voor de printers en de gedeelde bestandssystemen die gedeeld worden met &windows; cliënten. Het pakket Samba bevat een webgebaseerde beheermodule die swat heet, waarmee smb.conf op een eenvoudige manier ingesteld kan worden. De Samba webbeheermodule gebruiken (SWAT) De Samba Webbeheermodule (SWAT) draait als een daemon vanuit inetd. Daarom dient inetd aangezet te worden zoals beschreven in en dient voor de volgende regel uit /etc/inetd.conf het commentaarkarakter verwijderd te worden voordat swat gebruikt kan worden om Samba in te stellen: swat stream tcp nowait/400 root /usr/local/sbin/swat swat Zoals is uitgelegd in , moet de configuratie van inetd worden herladen nadat dit instellingenbestand is gewijzigd. Als swat is ingeschakeld in inetd.conf, kan de module gebruikt worden door met een browser een verbinding te maken met . Er dient aangemeld te worden met het root account van het systeem. Na succesvol aanmelden op de hoofdpagina voor de Samba instellingen, is het mogelijk de systeemdocumentatie te bekijken of te starten door op het tabblad Globals te klikken. Het onderdeel Globals correspondeert met de sectie [global] in /usr/local/etc/smb.conf. Systeembrede instellingen Of Samba nu wordt ingesteld door /usr/local/etc/smb.conf direct te bewerken of met swat, de eerste instellingen die gemaakt moeten worden zijn de volgende: workgroup NT Domeinnaam of Werkgroepnaam voor de computers die verbinding gaan maken met de server. netbiosnaam NetBIOS Hiermee wordt de NetBIOS naam waaronder de Samba server bekend zal zijn ingesteld. Standaard is de naam het eerste gedeelte van de DNS-naam van een host. server string Hiermee wordt de string ingesteld die te zien is als het commando net view en een aantal andere commando's die gebruik maken van de beschrijvende tekst voor de server gebruikt worden. Beveiligingsinstellingen Twee van de belangrijkste instellingen in /usr/local/etc/smb.conf zijn het gekozen beveiligingsmodel en het wachtwoord voor cliëntgebruikers. Deze worden met de volgende instellingen gemaakt: security De twee meest gebruikte mogelijkheden hier zijn security = share en security = user. Als de cliënten gebruikersnamen hebben die overeenkomen met hun gebruikersnaam op de &os; machine, dan is het verstandig om te kiezen voor beveiliging op gebruikersniveau. Dit is het standaard beveiligingsbeleid en kent als voorwaarde dat gebruikers zich eerst moeten aanmelden voordat ze toegang krijgen tot gedeelde bronnen. Bij beveiliging op shareniveau hoeft een cliënt niet met een geldige gebruikersnaam en wachtwoord aan te melden op de server voor het mogelijk is om een verbinding te proberen te krijgen met een gedeelde bron. Dit was het standaardbeveiligingsmodel voor oudere versies van Samba. passdb backend - NIS+ - - LDAP - - SQL database - Samba kent aan de achterkant verschillende authenticatiemodellen. - Cliënten kunnen authenticeren met LDAP, NIS+, een - SQL-database of een aangepast wachtwoordbestand. De + Cliënten kunnen authenticeren met LDAPLDAP, NIS+NIS+, een + SQL-databaseSQL database of een aangepast wachtwoordbestand. De standaard authenticatiemethode is smbpasswd. Meer wordt hier niet behandeld. Als aangenomen wordt dat de standaard achterkant smbpasswd wordt gebruikt, dan moet /usr/local/etc/samba/smbpasswd gemaakt worden om Samba in staat te stellen cliënten te authenticeren. Als het gewenst is om uw &unix; gebruikersaccounts toegang te geven vanaf &windows; cliënten, gebruik dan het volgende commando: &prompt.root; smbpasswd -a gebruikersnaam De aanbevolen backend is nu tdbsam, en het volgende command moet gebruikt worden om gebruikersaccounts toe te voegen: &prompt.root; pdbedit gebruikersnaam In de Official Samba HOWTO staat meer informatie over instelopties. Met de hier gegeven basisuitleg moet het mogelijk zijn Samba draaiende te krijgen. <application>Samba</application> starten De port net/samba34 voegt een nieuw opstartscript toe, dat gebruikt kan worden om Samba te beheren. Om dit script te activeren, zodat het bijvoorbeeld gebruikt kan worden om Samba te starten, stoppen, of te herstarten, dient de volgende regel aan /etc/rc.conf toegevoegd te worden: samba_enable="YES" Of, voor fijnkorrelig beheer: nmbd_enable="YES" smbd_enable="YES" Dit stelt Samba ook in om automatisch tijdens het opstarten te starten. Vervolgens is het mogelijk om Samba op elk moment te starten door dit te typen: &prompt.root; service samba start Starting SAMBA: removing stale tdbs : Starting nmbd. Starting smbd. Refereer aan voor meer informatie over het gebruikt van rc-scripts. Samba bestaat feitelijk uit drie afzonderlijke daemons. Het script samba start de daemons nmbd en smbd. Als de winbind naamresolutiediensten in smb.conf zijn ingeschakeld, dan start ook de daemon winbindd. Samba kan op ieder moment gestopt worden met: &prompt.root; service samba stop Samba is een complexe softwaresuite met functionaliteit waarmee verregaande integratie met µsoft.windows; netwerken mogelijk wordt. Informatie die verder gaat dan de basisinstallatie staat op . Tom Hukins Geschreven door Tijd synchroniseren met NTP NTP Overzicht Na verloop van tijd gaat de tijd van een computer meestal uit de pas lopen. Het Netwerk Tijd Protocol (NTP) kan ervoor zorgen dat de tijd accuraat blijft. Veel diensten op Internet zijn afhankelijk, of hebben veel voordeel, van het betrouwbaar zijn van de tijd. Zo ontvangt een webserver bijvoorbeeld veel verzoeken om een bestand te sturen als dat gewijzigd is sinds een bepaald moment. In een LAN-omgeving is het van groot belang dat computers die bestanden delen van eenzelfde server gesynchroniseerde tijd hebben zodat de tijdstempels consistent blijven. Diensten zoals &man.cron.8; zijn ook afhankelijk van een betrouwbare systeemtijd om commando's op het ingestelde moment uit te voeren. NTP ntpd Bij &os; zit de &man.ntpd.8; NTP server die gebruikt kan worden om bij andere NTP servers de tijd op te vragen om de eigen klok gelijk te zetten of om de juiste tijd te verstrekken aan andere apparaten. Passende NTP-servers kiezen NTP servers kiezen Om de tijd te synchroniseren moeten er één of meer NTP-servers beschikbaar zijn. Een lokale systeembeheerder of een ISP heeft wellicht een NTP-server voor dit doel opgezet. Het is verstandig om documentatie te raadplegen en te bekijken of dat het geval is. Er is een online lijst van publiek toegankelijke NTP-servers waarop een NTP-server gezocht kan worden die in geografische zin dichtbij een te synchroniseren computer ligt. Het is belangrijk te voldoen aan het beleid voor de betreffende server en toestemming te vragen als dat in de voorwaarden staat. Het is verstandig meerdere, niet van elkaar afhankelijke, NTP-servers te kiezen voor het geval een van de servers niet langer betrouwbaar is of niet bereikbaar is. &man.ntpd.8; gebruikt de antwoorden die van andere servers ontvangen worden op intelligente wijze: betrouwbare servers krijgen voorrang boven onbetrouwbare servers. Machine instellen NTP instellen Basisinstellingen ntpdate Als het alleen de bedoeling is de tijd te synchroniseren bij het opstarten van een machine, dan kan &man.ntpdate.8; gebruikt worden. Dit kan van toepassing zijn op desktops die regelmatig herstart worden en niet echt regelmatig gesynchroniseerd hoeven te worden. Op sommige machines hoort echter &man.ntpd.8; te draaien. Het gebruik van &man.ntpdate.8; bij het opstarten is ook een goed idee voor machines waarop &man.ntpd.8; draait. De &man.ntpd.8; wijzigt de tijd geleidelijk, terwijl &man.ntpdate.8; gewoon de tijd instelt, hoe groot het verschil tussen de bestaande tijd van een machine en de correcte tijd ook is. Om &man.ntpdate.8; tijdens het opstarten in te schakelen kan ntpdate_enable="YES" aan /etc/rc.conf worden toegevoegd. Alle voor de synchronisatie te gebruiken servers moeten dan, samen met eventuele opties voor &man.ntpdate.8;, in ntpdate_flags aangegeven worden. Algemene instellingen NTP ntp.conf NTP wordt ingesteld met het bestand /etc/ntp.conf in het formaat dat beschreven staat in &man.ntp.conf.5;. Hieronder volgt een eenvoudig voorbeeld: server ntplocal.example.com prefer server timeserver.example.org server ntp2a.example.net driftfile /var/db/ntp.drift De optie server geeft aan welke servers er gebruikt moeten worden, met op elke regel een server. Als de server wordt ingesteld met het argument prefer, zoals bij ntplocal.example.com, dan krijgt die server de voorkeur boven de andere. Een antwoord van een voorkeursserver wordt genegeerd als dat significant afwijkt van de antwoorden van de andere servers. In andere gevallen wordt het gebruikt zonder rekening te houden met de andere antwoorden. Het argument prefer wordt meestal gebruikt voor NTP-servers waarvan bekend is dat ze erg betrouwbaar zijn, zoals die met speciale tijdbewakingshardware. De optie driftfile geeft aan welk bestand gebruikt wordt om de offset van de klokfrequentie van het systeem op te slaan. &man.ntpd.8; gebruikt die om automatisch te compenseren voor het natuurlijke afwijken van de tijd, zodat er zelfs bij gebrek aan externe bronnen een redelijke accurate tijdsinstelling mogelijk is. De optie driftfile geeft aan welk bestand gebruikt wordt om informatie over eerdere antwoorden van NTP-servers die gebruikt worden op te slaan. Dit bestand bevat interne informatie voor NTP. Het hoort niet door andere processen gewijzigd te worden. Toegang tot een server instellen Een NTP-server is standaard toegankelijk voor alle hosts op een netwerk. De optie restrict in /etc/ntp.conf maakt het mogelijk om aan te geven welke machines de dienst mogen benaderen. Voor het blokkeren van toegang voor alle andere machines kan de volgende regel aan /etc/ntp.conf toegevoegd worden: restrict default ignore Dit zal ook toegang van uw server naar alle servers die vermeld staan in uw lokale configuratie verhinderen. Als u uw NTP-server moet synchroniseren met een externe NTP-server, dient u deze specifieke server toe te staan. Lees de handleiding voor &man.ntp.conf.5; voor meer informatie. Om alleen machines op bijvoorbeeld het lokale netwerk toe te staan hun tijd te synchroniseren met een server, maar ze tegelijkertijd niet toe te staan om de server te draaien of de server als referentie voor synchronisatie te gebruiken, kan de volgende regel toegevoegd worden: restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap Hierboven is 192.168.1.0 een IP-adres op een LAN en 255.255.255.0 is het bijbehorende netwerkmasker. /etc/ntp.conf mag meerdere regels met restrict bevatten. Meer details staan in het onderdeel Access Control Support van &man.ntp.conf.5;. De NTP-server draaien De NTP-server kan bij het opstarten gestart worden door de regel ntpd_enable="YES" aan /etc/rc.conf toe te voegen. Om extra opties aan &man.ntpd.8; mee te geven kan de parameter ntpd_flags in /etc/rc.conf gebruikt worden. Om de server zonder een herstart van de machine te starten kan ntpd uitgevoerd worden, met toevoeging van de parameters uit ntpd_flags in /etc/rc.conf. Bijvoorbeeld: &prompt.root; ntpd -p /var/run/ntpd.pid <application>ntpd</application> gebruiken met een tijdelijke Internetverbinding &man.ntpd.8; heeft geen permanente verbinding met een netwerk nodig om goed te werken. Maar als er gebruik gemaakt wordt van een inbelverbinding, is het wellicht verstandig om ervoor te zorgen dat uitgaande NTP-verzoeken geen uitgaande verbinding kunnen starten. Als er gebruik gemaakt wordt van gebruikers-PPP, kunnen er filter commando's ingesteld worden in /etc/ppp/ppp.conf. Bijvoorbeeld: set filter dial 0 deny udp src eq 123 # NTP-verkeer zorgt niet voor uitbellen set filter dial 1 permit 0 0 set filter alive 0 deny udp src eq 123 # Inkomend NTP-verkeer houdt de verbinding niet open set filter alive 1 deny udp dst eq 123 # Uitgaand NTP-verkeer houdt de verbinding niet open set filter alive 2 permit 0/0 0/0 Meer details staan in de sectie PACKET FILTERING in &man.ppp.8; en in de voorbeelden in /usr/share/examples/ppp/. Sommige Internetproviders blokkeren lage poorten, waardoor NTP niet kan werken omdat er nooit een antwoord ontvangen kan worden door een machine. Meer informatie HTML-documentatie voor de NTP-server staat in /usr/share/doc/ntp/. Tom Rhodes Bijgedragen door Hosts op afstand loggen met <command>syslogd</command> Het omgaan met systeemlogs is een cruciaal aspect van zowel beveiligings- als systeembeheer. Het in de gaten houden van logbestanden van meerdere hosts kan nogal onhandelbaar worden als deze hosts over (middel)grote netwerken zijn verspreid, of wanneer ze deel zijn van verschillende soorten netwerken. In deze gevallen kan het op afstand loggen het gehele proces een stuk aangenamer maken. Het centraal loggen naar een specifieke loghost kan wat van de administratieve last van het beheren van logbestanden wegnemen. Het aggregeren, samenvoegen, en roteren van logbestanden kan op één enkele plaats worden ingesteld, door gebruik te maken van de eigen gereedschappen van &os;, zoals &man.syslogd.8; en &man.newsyslog.8;. In de volgende voorbeeldconfiguratie zal host A, genaamd logserv.example.com, loginformatie voor het plaatselijke netwerk verzamelen. Host B, genaamd logclient.example.com, zal loginformatie aan het serversysteem doorgeven. In echte configuraties hebben beide hosts degelijke voor- en terugwaartse DNS of regels in /etc/hosts nodig. Anders worden de gegevens geweigerd door de server. Configuratie van de logserver Logservers zijn machines die zijn geconfigureerd om loginformatie van hosts op afstand te accepteren. In de meeste gevallen is dit om de configuratie te vergemakkelijken, in andere gevallen kan het gewoon een beheersbeslissing zijn. Ongeacht de reden zijn er enkele eisen voordat er verder wordt gegaan. Een juist geconfigureerde logserver voldoet aan de volgende minimale eisen: De regels van de firewall staan toe dat UDP wordt doorgegeven op poort 514 van zowel de cliënt als de server; syslogd is ingesteld om berichten op afstand van cliëntmachines te accepteren; De syslogd-server en alle cliëntmachines moeten geldige regels hebben voor zowel voorwaartse als terugwaartse DNS, of correct zijn geconfigureerd in /etc/hosts. Om de logserver te configureren, moet de cliënt vermeld zijn in /etc/syslog.conf, en moet de logfaciliteit zijn gespecificeerd: +logclient.example.com *.* /var/log/logclient.log Meer informatie over de verschillende ondersteunde en beschikbare faciliteiten kan gevonden worden in de handleidingpagina &man.syslog.conf.5;. Eenmaal toegevoegd worden alle faciliteits-berichten gelogd naar het eerder gespecificeerde bestand, /var/log/logclient.log. De servermachine moet ook het volgende in /etc/rc.conf hebben staan: syslogd_enable="YES" syslogd_flags="-a logclient.example.com -v -v" De eerste optie zet de daemon syslogd aan tijdens het opstarten, en de tweede regel staat toe dat gegevens van de cliënt op deze server worden geaccepteerd. Het laatste gedeelte, dat gebruikt, verhoogt de verbositeit van gelogde berichten. Dit is extreem handig voor het optimaal instellen van faciliteiten aangezien beheerders kunnen zien welk soort berichten onder welke faciliteit worden gelogd. Er kunnen meerdere opties worden gespecificeerd om logging vanuit meerdere cliënten toe te staan. IP-adressen en hele netblokken mogen ook worden gespecificeerd, bekijk de hulppagina &man.syslog.3; voor een volledige lijst van mogelijke opties. Als laatste dient het logbestand gecreëerd te worden. De gebruikte manier maakt niet uit, maar &man.touch.1; werkt prima in dit soort situaties: &prompt.root; touch /var/log/logclient.log Nu dient het syslogd-daemon herstart en geverifieerd worden: &prompt.root; service syslogd restart &prompt.root; pgrep syslog Als er een PID wordt teruggegeven, dan is de server succesvol herstart, en kan er begonnen worden met de configuratie van de cliënt. Raadpleeg de log /var/log/messages voor uitvoer als de server niet is herstart. Configuratie van de logcliënt Een logcliënt is een machine die loginformatie naar een logserver verstuurt en daarnaast lokale kopieën bewaart. Net als logservers moeten logcliënten ook aan enkele minimumeisen voldoen: &man.syslogd.8; moet zijn ingesteld om berichten van bepaalde soorten naar een logserver te sturen, die ze moet accepteren; De firewall moet UDP-pakketten doorlaten op poort 514; Zowel voorwaartse als terugwaartse DNS moeten geconfigureerd zijn of juiste regels in /etc/hosts hebben. De configuratie van cliënten is wat soepeler dan die van servers. De cliëntmachine moet de volgende regels in /etc/rc.conf hebben: syslogd_enable="YES" syslogd_flags="-s -v -v" Net als eerder zullen deze regels de daemon syslogd tijdens het opstarten aanzetten, en de verbositeit van gelogde berichten verhogen. De optie voorkomt dat logs van deze cliënt vanuit andere hosts worden geaccepteerd. Faciliteiten beschrijven het systeemgedeelte waarvoor een bericht is gegenereerd. ftp en ipfw bijvoorbeeld zijn beide faciliteiten. Wanneer er logberichten worden gegenereerd voor deze twee diensten, zullen ze normaalgesproken deze twee gereedschappen in elk logbericht opnemen. Faciliteiten worden vergezeld van een prioriteit of niveau, welke wordt gebruikt om aan te geven hoe belangrijk een logbericht is. De meest voorkomende zullen warning en info zijn. Bekijk de handleidingpagina &man.syslog.3; voor een volledige lijst van beschikbare faciliteiten en prioriteiten. De logserver moet in /etc/syslog.conf van de cliënt zijn gedefinieerd. In dit geval wordt het symbool @ gebruikt om loggegevens naar een server op afstand te sturen en zou er ongeveer als de volgende regel uit moeten zien: *.* @logserv.example.com Eenmaal toegevoegd moet syslogd worden herstart zodat de veranderingen effect hebben: &prompt.root; service syslogd restart Om te testen of logberichten over het netwerk worden verzonden, wordt &man.logger.1; op de cliënt gebruikt om een bericht naar syslogd te sturen: &prompt.root; logger "Testbericht van logclient" Dit bericht dient nu zowel in /var/log/messages op de cliënt als /var/log/logclient.log op de logserver te staan. Logservers debuggen In bepaalde gevallen kan het nodig zijn om te debuggen als berichten niet door de logserver worden ontvangen. Er zijn verschillende redenen waarom dit kan gebeuren; de twee meest voorkomende zijn echter voorvallen met de netwerkverbinding en DNS. Om deze gevallen te testen, dient te worden nagegaan dat beide hosts elkaar kunnen bereiken door de hostnaam in /etc/rc.conf te gebruiken. Als dit juist lijkt te werken, dient de optie syslogd_flags in /etc/rc.conf te worden veranderd. In het volgende voorbeeld is /var/log/logclient.log leeg, en noemt /var/log/messages geen reden waarom het mislukt. Verander de optie syslogd_flags zoals in het volgende voorbeeld en herstart om de debuguitvoer te verhogen: syslogd_flags="-d -a logclien.example.com -v -v" &prompt.root; service syslogd restart Debuggegevens zoals de volgende zullen meteen na de herstart over het scherm vliegen: logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart syslogd: restarted logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel Logging to FILE /var/log/messages syslogd: kernel boot file is /boot/kernel/kernel cvthname(192.168.1.10) validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com; rejected in rule 0 due to name mismatch. Het is duidelijk dat de berichten worden geweigerd wegens een niet-overeenkomende naam. Na de configuratie grondig te hebben herzien, lijkt het of een typefout in de volgende regel in /etc/rc.conf een probleem heeft: syslogd_flags="-d -a logclien.example.com -v -v" De regel dient logclient, niet logclien te bevatten. Nadat de juiste wijzigingen zijn gemaakt, wordt er herstart met de verwachte resultaten: &prompt.root; service syslogd restart logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart syslogd: restarted logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel syslogd: kernel boot file is /boot/kernel/kernel logmsg: pri 166, flags 17, from logserv.example.com, msg Dec 10 20:55:02 <syslog.err> logserv.example.com syslogd: exiting on signal 2 cvthname(192.168.1.10) validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com; accepted in rule 0. logmsg: pri 15, flags 0, from logclient.example.com, msg Dec 11 02:01:28 trhodes: Test message 2 Logging to FILE /var/log/logclient.log Logging to FILE /var/log/messages Nu worden de berichten juist ontvangen en in het correcte bestand geplaatst. Beveiligingsoverwegingen Zoals bij alle netwerkdiensten, dienen beveiligingseisen in acht te worden genomen voordat deze configuratie wordt geďmplementeerd. Soms kunnen logbestanden gevoelige gegevens bevatten over diensten die aanstaan op de lokale host, gebruikersaccounts, en configuratiegegevens. Netwerkgegevens die van de cliënt naar de server worden verzonden worden niet versleuteld noch met een wachtwoord beveiligd. Als versleuteling nodig is, kan security/stunnel worden gebruikt, wat gegevens over een versleutelde tunnel verstuurt. Aan lokale beveiliging moet ook gedacht worden. Logbestanden worden niet versleuteld tijdens gebruik of na logrotatie. Lokale gebruikers kunnen deze bestanden benaderen om aanvullende inzichten over de systeemconfiguratie op te doen. In deze gevallen is het van kritiek belang om de juiste rechten op deze bestanden in te stellen. Het gereedschap &man.syslogd.8; ondersteunt het instellen van rechten op nieuw aangemaakte en geroteerde logbestanden. Het instellen van logbestanden op modus 600 dient al het ongewenste spieken door lokale gebruikers te verhinderen. diff --git a/nl_NL.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml b/nl_NL.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml index 5fff7821b1..b866883dd3 100644 --- a/nl_NL.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml +++ b/nl_NL.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml @@ -1,3446 +1,3384 @@ Jim Mock Geherstructureerd, gereorganiseerd en geupdate door Remko Lodder Vertaald door PPP en SLIP Overzicht PPP SLIP &os; heeft een aantal manieren om de ene computer met de andere te verbinden. Om een netwerk of internet verbinding op te zetten door een inbelmodem, of om anderen toe te staan dit te doen door de machine heen vereist het gebruik van PPP en SLIP. Dit hoofdstuk beschrijft het opzetten van op modems gebaseerde diensten in meer detail. Na het lezen van dit hoofdstuk weet u: Hoe gebruikers PPP opgezet kan worden. Hoe kernel-PPP opgezet kan worden (alleen voor &os; 7.X). Hoe PPPoE opgezet kan worden (PPP over Ethernet). Hoe PPPoA opgezet kan worden (PPP over ATM). Hoe een SLIP-server en cliënt opgezet kan worden en hoe dat geconfigureerd wordt (alleen voor &os; 7.X). PPP gebruiker-PPP PPP kernel-PPP PPP over Ethernet Voordat dit hoofdstuk gelezen wordt, moet u: Bekend zijn met basis netwerk terminologie. De basis en doeleinden van een inbel verbinding en van PPP en/of SLIP. U kunt zich afvragen wat het verschil is tussen gebruiker-PPP en kernel-PPP. Het antwoord is simpel: gebruiker-PPP verwerkt inkomend en uitgaande data in het gebruikersland in plaats van in de kernel. Dit is duur in de zin van het kopiëren van de data tussen de kernel en het gebruikersland, maar levert meer mogelijkheden voor de PPP implementatie. Gebruikers PPP gebruikt het tun apparaat om te communiceren met de buitenwereld. Kernel-PPP maakt gebruik van het ppp apparaat. Voor de rest van dit hoofdstuk, zal gebruiker-PPP gebruikt worden als ppp tenzij er onderscheid gemaakt moet worden met andere PPP software zoals pppd. Tenzij anders vermeld moeten alle uitgelegde commando's in dit hoofdstuk gestart worden als de root gebruiker. Tom Rhodes Bijgewerkt en uitgebreid door Brian Somers Origineel bijgedragen door Nik Clayton Met input van Dirk Frömberg Peter Childs Gebruikmaken van gebruiker-PPP Gebruiker-PPP Vereisten Dit document gaat er vanuit dat u de volgende punten beschikbaar heeft: - - ISP - - - - PPP - - - Een account bij een Internet Service Provider (ISP) + Een account bij een Internet Service Provider (ISP)ISP waarmee verbinding gemaakt wordt door middel van - PPP. + PPPPPP. Een modem of een ander apparaat verbonden met uw PC en correct geconfigureerd zodat u verbinding kan maken met uw ISP. De inbelnummers van uw ISP. - - PAP - - - - CHAP - - - - UNIX - - - - loginnaam - - - - wachtwoord - - - Uw loginnaam en wachtwoord (danwel een combinatie van een - standaard &unix;-stijl login en wachtwoord of een PAP of CHAP + Uw loginnaamloginnaam en wachtwoordwachtwoord (danwel een combinatie van een + standaard &unix;UNIX-stijl + login en wachtwoord of een PAPPAP of CHAPCHAP login en wachtwoordcombinatie). - - naamserver - - Het IP-adres van één of meerdere - naamservers. Normaal gesproken krijgt u twee IP + naamserversnaamserver. Normaal gesproken krijgt u twee IP adressen van uw ISP om te gebruiken. Als u er echter geen één gekregen heeft, kunt u het commando enable dns gebruiken in ppp.conf en ppp zal de naamservers voor u configureren. Deze optie is afhankelijk van de PPP implementatie van de ISP, welke DNS onderhandeling moet ondersteunen. De volgende informatie kan aangeleverd worden door uw ISP maar is niet echt noodzakelijk: Het IP-adres van de router van uw ISP. De router is de machine waarmee u verbinding maakt en welke ingesteld wordt als de standaard route. Als u deze informatie niet heeft, kunt u een willekeurig adres verzinnen waarna de PPP server van de ISP het juiste adres vertelt zodra u verbinding maakt. Dit IP-adres wordt door ppp HISADDR genoemd. Het netwerkmasker wat gebruikt moet worden. Als uw ISP deze niet heeft opgegeven, kan 255.255.255.255 gebruikt worden. - - statisch IP-adres - - - Als uw ISP u een vast IP-adres en hostnaam levert, + Als uw ISP u een vast IP-adresstatisch IP-adres en hostnaam levert, kunt u deze invoeren. In andere gevallen bepaalt de andere kant welk adres er uitgegeven wordt. Als u niet in bezit bent van de vereiste informatie, moet u contact opnemen met uw ISP. Door de rest van dit hoofdstuk worden in veel van de voorbeelden configuratie bestanden genummerd per regel. Deze nummers dienen alleen als hulp voor de presentatie en discussie en zijn verder niet bedoeld om daadwerkelijk geďmplementeerd te worden. Een juiste inspringing met tabs en spaties zijn daarbij ook belangrijk. Automatische configuratie van <application>PPP</application> PPP configuratie Zowel ppp als pppd (de implementatie van PPP op kernel niveau) gebruiken de configuratie bestanden die zich in de map /etc/ppp bevinden. Voorbeelden configuraties voor gebruiker-PPP kunnen gevonden worden in /usr/share/examples/ppp/. Het configureren van ppp vereist dat u een aantal bestanden bewerkt, afhankelijk van uw eisen. Wat u moet invoeren is deels afhankelijk van wat uw ISP u aanbied met oog op statische IP-adressen (lees u krijgt een statisch adres welke u altijd gebruikt) of dynamisch (lees: uw IP-adres veranderd elke keer als u verbinding maakt met uw ISP). PPP en statische IP-adressen PPP met statische IP-adressen U moet het /etc/ppp/ppp.conf bewerken. Het zou dan als volgend eruit moeten zien: Regels die eindigen met een : starten in de eerste kolom (het begin van de regel) — alle andere regels moeten inspringen zoals getoond door middel van spaties of tabs. 1 default: 2 set log Phase Chat LCP IPCP CCP tun command 3 ident user-ppp VERSION (built COMPILATIONDATE) 4 set device /dev/cuau0 5 set speed 115200 6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \ 7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT" 8 set timeout 180 9 enable dns 10 11 provider: 12 set phone "(123) 456 7890" 13 set authname foo 14 set authkey bar 15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp" 16 set timeout 300 17 set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0 18 add default HISADDR Regel 1: Deze regel identificeert de standaard regel. Commando's in deze regel worden automatisch gestart zodra ppp gestart wordt. Regel 2: Zet de log paramaters aan. Zodra de configuratie naar verwachting werkt, moet deze regel aangepast worden naar: set log phase tun om te voorkomen dat er extreem grote log files gemaakt worden. Regel 3: Vertelt PPP hoe het zich moet identificeren aan de router aan de andere kant, als deze problemen heeft met het onderhandelen en het opzetten van de link en het leveren van informatie die de beheerders van de andere kant nuttig kunnen vinden om zulke problemen te onderzoeken. Regel 4: Identificeert het apparaat waarmee het modem verbonden is. COM1 is /dev/cuau0 en COM2 is /dev/cuau1. Regel 5: Stelt de snelheid in waarmee verbinding gemaakt wordt. Als 115200 niet werkt (wat wel zou moeten kunnen met elk nieuw modem), probeert u dan de instelling van 38400. Regels 6 & 7: - - PPP - gebruiker-PPP - - - De inbelregel. Gebruiker-PPP gebruikt een + De inbelregel. Gebruiker-PPP gebruiktPPPgebruiker-PPP een expect-send syntax wat vergelijkbaar is met het &man.chat.8; programma. Bekijk de handleiding voor meer informatie over de mogelijkheden van deze taal. Let op dat dit commando doorgaat op de volgende regel zodat deze leesbaar blijft. Elk commando in ppp.conf kan dit doen als het laatste karakter op een regel, het \ karakter is. Regel 8: Stelt de idle timeout in voor een link. 180 seconden is standaard, dus deze regel is puur cosmetisch. Regel 9: Vertelt PPP om de andere kant te vragen om een bevestiging van de lokale naamserver instellingen. Als u een lokale naamserver draait moet deze regel uitgecommentarieërd of verwijderd worden. Regel 10: Een blanco regel voor de leesbaarheid. Blanco regels worden door PPP genegeerd. Regel 11: Identificeert een sectie voor de provider die provider genoemd wordt. Dit kan gewijzigd worden in de naam van uw provider zodat er later gebruik gemaakt van worden bij de optie om een verbinding op te zetten. Regel 12: Stelt het telefoonnummer in voor deze provider. Meerdere telefoonnummers kunnen gespecificeerd worden door gebruik te maken van de dubbele punt (:) of het pipe karakter (|) als scheidingsteken. Het verschil tussen de twee scheidingstekens wordt beschreven in de &man.ppp.8; handleiding. Om samen te vatten, als u wilt rouleren tussen de nummers gebruikt u dan een dubbelepunt. Als u altijd het eerste nummer als eerste wilt draaien en alleen de andere nummers wilt draaien als het eerste nummer niet werkt, gebruik dan het pipe karakter. Quote altijd de hele set van telefoonnummers zoals getoond. U moet het telefoonnummer citeren met dubbele quotes (") als er enige intentie is in het gebruik van spaties in het telefoonummer. Dit kan een simpele, maar subtiele fout creeëren. Regels 13 & 14: Identificeert de gebruikersnaam en het wachtwoord. Wanneer gebruik gemaakt wordt van een &unix; stijl login worden deze waarden verwezen door het set login commando door gebruik te maken van de \U en \P variabelen. Wanneer er verbinding gemaakt wordt door PPP en CHAP worden deze waardes gebruikt tijdens het authenticeren. Regels 15: - PAP - - CHAP - Als u gebruik maakt van PPP en CHAP, zal er geen login op dit moment zijn, en moet deze regel uitgecommentarieërd of verwijderd worden. Zie het - PAP en CHAP + PAPPAP en CHAPCHAP authenticatie hoofdstuk voor meer details. De login regel is hetzelfde als de chat-achtige syntax van de inbelregel. In dit voorbeeld werkt de reegl voor een dienst wiens login sessie als volgt eruit ziet: J. Random Provider login: foo password: bar protocol: ppp U moet dit script aanpassen om aan uw behoeften te voldoen. Wanneer u dit script voor het eerst schrijft, moet u ervoor zorgen dat u de chat log optie heeft aangezet zodat u kunt bepalen of de communicatie gaat zoals verwacht. Regel 16: - timeout - - Selt de standaard idle timeout in (in seconden) + Selt de standaard idle timeouttimeout in (in seconden) voor de connectie. Hier wordt de connectie automatisch afgesloten na 300 seconden van inactiviteit. Als u nooit een timeout wilt krijgen, kunt u de waarde op nul zetten of gebruik maken van de optie op de commando regel. Regel 17: - ISP - Stelt het interface adres in. De regel x.x.x.x moet vervangen - worden door het IP-adres dat uw provider aan u heeft + worden door het IP-adresISP dat uw provider aan u heeft uitgegeven. De regel y.y.y.y moet vervangen worden door het IP-adres dat uw provider aan u heeft gegeven voor de router (de machine waarmee u verbinding maakt). Als uw ISP u geen router adres heeft gegeven, gebruik dan 10.0.0.2/0. Als u gebruik moet maken van een gegokt, zorg ervoor dat er een regel staat in /etc/ppp/ppp.linkup zoals beschreven in de instructies voor PPP en dynamische IP adressen. Als deze regel weggelaten wordt kan ppp niet in mode starten. Regel 18: Voegt een standaard routering toe naar uw providers router. Het speciale HISADDR woord, wordt vervangen door het router adres zoals gespecificeerd op regel 17. Het is belangrijk dat deze regel na regel 17 komt, anders is HISADDR nog niet geďnitialiseerd. Als u ppp niet in mode wilt draaien, moet deze regel verplaatst worden naar het ppp.linkup bestand. Het is niet nodig om een regel toe te voegen aan ppp.linkup wanneer u een statisch IP-adres krijgt en ppp met de mode gestart is omdat uw routerings tabel al correcte regels heeft voordat u verbinding maakt. U kunt echter een regel aanmaken om programma's te starten nadat de verbinding opgezet is. Dit wordt later uitgelegd met een voorbeeld over sendmail. Voorbeeld van configuratiebestanden kunnen gevonden worden in de map usr/share/examples/ppp. PPP en dynamische IP-adressen PPP met dynamische IP-adressen IPCP Als uw provider geen statisch IP-adres aanlevert kan ppp geconfigureerd worden om het lokale en het remote adres te onderhandelen. Dit wordt gedaan door het gokken van een IP-adres en PPP toestaan dit adres te corrigeren door gebruik te maken van het IP Configuration Protocol (IPCP) nadat er een verbinding opgezet is. De ppp.conf configuratie is verders hetzelfde als voor de PPP en statische IP adressen, met de volgende wijziging: 17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 0.0.0.0 Nogmaals, het regelnummer hoeft niet te worden toegevoegd, deze dient puur ter referentie. Indentatie van minstens één spatie is vereist. Regel 17: Het nummer achter het / karakter is het aantal netwerk master bits van het adres die ppp eist. Het is mogelijk dat u IP-adressen wilt gebruiken die meer van toepassing zijn op uw situatie, maar bovenstaand voorbeeld zal altijd werken. Het laatste argument (0.0.0.0) vertelt PPP om te onderhandelen met het adres 0.0.0.0 in plaats van met 10.0.0.1 en is benodigd voor sommige ISPs. Gebruik 0.0.0.0 niet als eerste argument voor het commando set ifaddr, omdat dit ervoor zorgt dat PPP geen initiële route kan opzetten in mode. Als u niet draait in mode, moet u een nieuwe regel toevoegen aan /etc/ppp/ppp.linkup. ppp.linkup wordt uitgevoerd nadat een connectie is opgezet. Op dit moment krijgt ppp het interface adres en is het mogelijk om regels toe te voegen aan de route tabel: 1 provider: 2 add default HISADDR Regel 1: Bij het tot stand brengen van een verbinding zal ppp kijken voor een corresponderende regel in ppp.linkup volgens de volgende criteria: Als eerste, probeert het hetzelfde label te vinden zoals gebruikt in ppp.conf. Als dat mislukt, zoek dan een regel waarin het IP-adres van onze router in voorkomt. Deze regel bevat een IP stijl van 4 octetten. Als nu nog steeds geen corresponderende regel gevonden is wordt er gezocht naar de HISADDR regel. Regel 2: Deze regel verteld ppp om een standaard routering toe te voegen die wijst richting HISADDR. HISADDR wordt vervangen door het IP-adres van de router zoals onderhandeld door IPCP. Zie de pmdemand regel in de bestanden /usr/share/examples/ppp/ppp.conf.sample en /usr/share/examples/ppp/ppp.linkup.sample voor een gedetailleerd voorbeeld. Het ontvangen van binnenkomende gesprekken PPP ontvangen van inkomende gesprekken Wanneer ppp geconfigureerd is om inkomende gesprekken te ontvangen op een machine die verbonden is met een LAN, moet u beslissen of er pakketten worden doorgestuurd naar het LAN. Als u dat doet, moet u de andere kant een IP-adres geven uit het subnet van uw LAN, en zult u gebruik moeten maken van het command enable proxy in het /etc/ppp/ppp.conf bestand. U zult ook moeten controleren of het /etc/rc.conf bestand het volgende bevat: gateway_enable="YES" Welke getty? Het configureren van &os; voor inbel diensten levert een goede beschrijving van het inschakelen van inbeldiensten door gebruik te maken van &man.getty.8;. Een alternatief voor getty is mgetty (van de port comms/mgetty+sendfax), een betere versie van getty ontworpen voor onder andere inbellijnen. De voordelen van het gebruik van mgetty is dat het actief communiceert met modems, wat betekent dat als de port uitgeschakeld is in /etc/ttys, het modem de telefoon niet zal beantwoorden. Latere versies van mgetty (vanaf 0.99beta en later) ondersteunen ook het automatisch detecteren van PPP stromen waardoor cliënten zonder extra scripting toegang kunnen krijgen tot uw server. Raadpleeg naar Mgetty en AutoPPP voor meer informatie over mgetty. <application>PPP</application> Permissies Het ppp commando moet normaal gesproken gestart worden door de root gebruiker. Als u echter wilt toestaan dat ppp in server mode gestart wordt door een normale gebruiker door het uitvoeren van ppp, zoals beschreven hieronder, moet deze gebruiker permissie krijgen om ppp te starten. Dit kan gedaam worden door de gebruiker toe te voegen aan de network groep van het /etc/group bestand. U moet de gebruiker ook toegang geven tot één of meerdere secties van het configuratie bestand door gebruik te maken van het allow commando: allow users fred mary Als dit commando wordt gebruikt in de default sectie, geeft ppp alle opgegeevn gebruikers toegang tot alle opties. PPP shells voor dynamische IP-gebruikers PPP shells Creeër een bestand genaamd /etc/ppp/ppp-shell welke de volgende gegevens bevat: #!/bin/sh IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'` CALLEDAS="$IDENT" TTY=`tty` if [ x$IDENT = xdialup ]; then IDENT=`basename $TTY` fi echo "PPP voor $CALLEDAS op $TTY" echo "Starten van PPP voor $IDENT" exec /usr/sbin/ppp -direct $IDENT Dit script moet uitvoerbaar zijn. Ook moet er een symbolische link gemaakt worden naar dit script met de naam ppp-dialup door gebruik te maken van de volgende commando's: &prompt.root; ln -s ppp-shell /etc/ppp/ppp-dialup U moet dit script gebruiken als de shell voor al uw inbel gebruikers. Dit is een voorbeeld uit /etc/passwd voor een PPP inbelgebruiker met de gebruikersnaam pchilds (Let op, u mag niet direct het wachtwoord bestand bewerken, gebruik daarom het programma &man.vipw.8;). pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup Creeër vervolgens een map /home/ppp die door iedereen gelezen en beschreven kan worden en zet daar de volgende 0 byte grote bestanden in: -r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin -r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts welke voorkomen dat /etc/motd getoond wordt. PPP shells voor statische IP-gebruikers PPP shells Creeër het ppp-shell bestand zoals hierboven, en voor elk account met een statisch toegewezen IP-adres creeërt u een symbolische link naar ppp-shell. Als u bijvoorbeeld drie inbel gebruikers hebt genaamd fred, sam en mary waar u een /24 CIDR netwerk voor routeert, moet u het volgende typen: &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary Elk van deze inbelgebruikers moet de shell ingesteld hebben op de symbolische link die hierboven is gecreeërd (bijvoorbeeld mary's shell moet zijn /etc/ppp/ppp-mary). Het instellen van <filename>ppp.conf</filename> voor dynamische IP-gebruikers Het /etc/ppp/ppp.conf bestand moet iets zoals hieronder bevatten: default: set debug phase lcp chat set timeout 0 ttyu0: set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255 enable proxy ttyu1: set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255 enable proxy Het inspringen is belangrijk. De default: sectie wordt altijd geladen. Voor elke inbellijn die ingeschakeld is in /etc/ttys moet een soortgelijke regel worden gemaakt als die voor ttyu0: hierboven. Elke regel moet een uniek IP-adres krijgen van uw pool van IP-adressen voor dynamische gebruikers. Het instellen van <filename>ppp.conf</filename> voor statische IP-gebruikers. Samen met de inhoud van het voorbeeld /usr/share/examples/ppp/ppp.conf bestand hierboven moet een sectie aangemaakt worden voor elke van de statisch ingestelde inbelgebruikers. We gaan door met ons fred, sam en mary voorbeeld. fred: set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255 sam: set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255 mary: set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255 Het /etc/ppp/ppp.linkup bestand moet ook informatie over routeringen bevatten voor elke statische IP-gebruiker waar nodig. De regel hieronder voegt een routering toe voor het 203.14.201.0/24 netwerk via de ppp link van de gebruiker. fred: add 203.14.101.0 netmask 255.255.255.0 HISADDR sam: add 203.14.102.0 netmask 255.255.255.0 HISADDR mary: add 203.14.103.0 netmask 255.255.255.0 HISADDR <command>mgetty</command> en AutoPPP mgetty AutoPPP LCP Standaard staat de optie AUTO_PPP in de port comms/mgetty+sendfax welke mgetty in staat stelt om de LCP fase van PPP connecties te detecteren en aan de hand daarvan automatisch een ppp shell te creeëren. Echter, de standaard login procedure vindt in deze mode niet plaats, waardoor het nodig is om de gebruikers te authenticeren door middel van PAP of CHAP. De volgende sectie gaat er vanuit dat u succesvol de port comms/mgetty+sendfax op uw systeem heeft gecompileerd en geďnstalleerd. Zorg ervoor dat uw /usr/local/etc/mgetty+sendfax/login.config bestand de volgende inhoud heeft: /AutoPPP/ - - /etc/ppp/ppp-pap-dialup Dit verteld mgetty om het ppp-pap-dialup script te starten wanneer er een PPP connectie gedetecteerd wordt. Creeër een bestand genaamd /etc/ppp/ppp-pap-dialup met de volgende inhoud (het bestand moet uitvoerbaar zijn): #!/bin/sh exec /usr/sbin/ppp -direct pap$IDENT Voor elke inbelregel die ingeschakeld is in /etc/ttys, creeër een corresponderende regel in /etc/ppp/ppp.conf. Dit gaat goed samen met de definities die hierboven gedaan zijn. pap: enable pap set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40 enable proxy Elke gebruiker die op deze manier inlogt moet een gebruikersnaam en wachtwoord hebben in het /etc/ppp/ppp.secret bestand of de volgende optie moet worden toegevoegd om gebruikers te authenticeren via PAP vanuit het /etc/passwd bestand. enable passwdauth Als u een aantal gebruikers een statisch IP-adres wilt geven, kan dat gespecificeerd worden als het derde argument in /etc/ppp/ppp.secret. Zie /usr/share/examples/ppp/ppp.secret.sample voor een voorbeeld. µsoft; Extensies DNS NetBIOS PPP µsoft; extensies Het is mogelijk om PPP dusdanig te configuren dat deze DNS en NetBIOS naamserver adressen meegeeft. Om deze extensies in te schakelen met PPP versie 1.x kunnen de volgende regels toegevoegd worden aan de relevante sectie in /etc/ppp/ppp.conf: enable msext set ns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5 en voor PPP versie 2 en hoger: accept dns set dns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5 Dit verteld de cliënt het primaire en secundaire naamserver adres, en geeft een NetBIOS naamserver adres. In versie 2 en hoger zal PPP gebruik maken van de instellingen in /etc/resolv.conf als de regel set dns niet wordt gevonden. PAP en CHAP authenticatie PAP CHAP Sommige providers stellen hun systemen dusdanig in dat het authenticatie gedeelte van uw verbinding wordt afgehandeld door het PAP of CHAP authenticatie mechanisme. Als dit het geval is zal uw provider u niet voorzien van een login: prompt wanneer u verbinding maakt maar zal deze meteen gaan communiceren over het PPP protocol. PAP is minder veilig dan CHAP, maar beveiliging is meestal geen probleem omdat wachtwoorden, ook al worden deze in platte tekst verstuurd met PAP, alleen worden verstuurd via een seriële lijn. Hier is maar weinig ruimte voor crackers om stiekem mee te luisteren. Terug verwijzende naar de PPP en statische IP-adressen of PPP en dynamische IP-adressen secties moeten de volgende aanpassingen gedaan worden: 13 set authname Mijngebruikersnaam 14 set authkey Mijnwachtwoord 15 set login Regel 13: Deze regel geeft uw PPP/CHAP gebruikersnaam aan. U moet de juiste waardes invullen voor Mijngebruikersnaam. Regel 14: - password - - Deze regel geeft uw PPP/CHAP wachtwoord aan. + Deze regel geeft uw PPP/CHAP wachtwoordpassword aan. U moet de juiste waarde invullen voor Mijnwachtwoord. Misschien wilt u een extra regel toevoegen als: 16 accept PAP of 16 accept CHAP om duidelijk te maken op welke manier u wilt authenticeren, standaard worden zowel PAP als CHAP geaccepteerd. Regel 15: Uw ISP zal normaal gesprokken niet eisen dat u op de server aanlogt als u gebruik maakt van PAP of CHAP. Daarom moet u de set login regel uitschakelen. Het aanpassen van uw <command>ppp</command> configuratie terwijl deze in gebruik is Het is mogelijk om tegen met het ppp programma te communiceren terwijl deze in gebruik is op de achtergrond, maar dat kan alleen als er een geschikte diagnostische poort ingesteld is. Om dit te kunnen doen moet de volgende regel worden toegevoegd aan de configuratie: set server /var/run/ppp-tun%d DiagnosticPassword 0177 Dit vertelt PPP om te luisteren naar het gespecificeerde &unix; domein socket, waarbij de cliënten gevraagd worden om het opgegeven wachtwoord voordat toegang verleend kan worden. Het %d in de naam wordt vervangen door het tun apparaat dat gebruikt wordt voor de verbinding. Zodra een socket ingesteld is kan het &man.pppctl.8; programma gebruikt worden in scripts die het draaiende programma willen bewerken. De vertaalmogelijkheden van PPP voor netwerkadressen gebruiken PPP NAT PPP heeft de mogelijkheid om interne NAT te gebruiken zonder dat de kernel hiervoor iets hoeft te doen. Deze functionaliteit kan worden ingeschakeld door de volgende regel in /etc/ppp/ppp.conf: nat enable yes Ook kan PPP NAT ingeschakeld worden door de optie -nat. Er is ook een /etc/rc.conf optie genaamd ppp_nat welke standaard ingeschakeld is. Als u gebruik wilt maken van deze optie, kunt u de volgende /etc/ppp/ppp.conf opties ook nuttig vinden om binnenkomende connecties door te sturen: nat port tcp 10.0.0.2:ftp ftp nat port tcp 10.0.0.2:http http of als u niets vertrouwd vanaf buitenaf: nat deny_incoming yes Laatste systeemconfiguratie PPP configuratie U heeft nu ppp geconfigurerd, maar er moeten nog een aantal dingen gedaan worden voordat deze klaar is om te kunnen werken. Hiervoor moeten een aantal aanpassingen gedaan worden in het bestand /etc/rc.conf. Van boven naar beneden kijkende zorgen we er als eerste voor dat de hostname= regel ingesteld is met bijvoorbeeld: hostname="foo.example.com" Als uw provider u een statisch adres en een naam heeft gegeven is het waarschijnlijk handig dat u deze naam gebruikt als uw hostnaam. Zoek naar de network_interfaces variabele. Als u uw systeem wilt configuren om in te bellen bij uw provider wanneer nodig, zorg er dan voor dat het tun0 apparaat is toegevoegd aan deze lijst. Haal deze anders weg. network_interfaces="lo0 tun0" ifconfig_tun0= De ifconfig_tun0 variabele moet leeg zijn, en een bestand genaamd /etc/start_if.tun0 moet aangemaakt worden met de volgende inhoud: ppp -auto mysystem Dit script wordt uitgevoerd tijdens de netwerk configuratie, waarbij uw ppp daemon wordt gestart in automatische mode. Als u een LAN heeft waarvoor deze machine een router is wilt u wellicht ook de meegeven. Bekijk de handleiding voor verdere details. Zorg ervoor dat het router programma is ingesteld op NO door middel van de volgende regel in uw /etc/rc.conf bestand: router_enable="NO" routed Het is belangrijk dat de routed daemon niet gestart wordt, omdat routed de neiging heeft om de standaard routeringtabel regels die gemaakt worden door ppp te verwijderen. Het is waarschijnlijk een goed idee om te zorgen dat de sendmail_flags regel de optie niet wordt meegenomen, anders zal sendmail periodiek een zoek actie verrichten op het netwerk, wat ervoor zorgt dat uw machine gaat uitbellen. U kunt het volgende instellen: sendmail_flags="-bd" sendmail Het nadeel hiervan is dat u sendmail moet forceren om de mailqueue periodiek te bekijken zodra de ppp link op is door het typen van: &prompt.root; /usr/sbin/sendmail -q U wilt wellicht gebruik maken van het !bg commando in ppp.linkup om dit automatisch te doen: 1 provider: 2 delete ALL 3 add 0 0 HISADDR 4 !bg sendmail -bd -q30m SMTP Als u dit niet wilt doen, is het mogelijk om een dfiler in te stellen welke SMTP verkeer blokkeert. Raadpleeg naar de voorbeeld bestanden voor verdere details. Alles wat nu nog nodig is, is het herstarten van de machine. Na het herstarten kunt het volgende typen: &prompt.root; ppp en daarna dial provider om de PPP sessie te starten, of u indien u dat wilt kan ppp automatisch sessies opzetten wanneer er uitgaand verkeer is (en wanneer u geen start_if.tun0 script heeft aangemaakt), typt u: &prompt.root; ppp -auto provider Samenvatting Om samen te vatten zijn de volgende stappen benodigd om PPP voor de eerste keer in te stellen: Aan de cliënt zijde: Zorg ervoor dat het tun apparaat is ingeschakeld in uw kernel. Zorg ervoor dat het apparaatbestand tunN beschikbaar is in de map /dev. Creeër een regel in /etc/ppp/ppp.conf. Het pmdemand voorbeeld zou moeten volstaand voor de meeste providers. Als u dynamische IP-adressen heeft, creeër een regel in /etc/ppp/ppp.linkup. Update uw /etc/rc.conf bestand. Creeër een start_if.tun0 script als u op verzoek wilt inbellen. Aan de server zijde: Zorg ervoor dat het tun apparaat is ingeschakeld in uw kernel. Zorg ervoor dat het apparaatbestand tunN beschikbaar is in de map /dev. Creeër een regel in /etc/passwd (door gebruik te maken van het &man.vipw.8; programma). Creeër een profiel in deze gebruikers home directory die ppp -direct direct-server start of iets in die trant. Creeër een regel in /etc/ppp/ppp.conf. Het direct-server voorbeeld zou moeten volstaan. Creeër een regel in /etc/ppp/ppp.linkup. Update uw /etc/rc.conf bestand. Gennady B. Sorokopud Delen origineel bijgedragen door Robert Huff Kernel-PPP gebruiken Het opzetten van kernel-PPP Deze sectie geldt en is alleen geldig voor &os; 7.X. PPP kernel-PPP Voordat u begint met het opzetten van PPP op uw machine, zorg ervoor dat het pppd commando zich bevindt in de map /usr/sbin en dat de map /etc/ppp bestaat. pppd kan in twee verschillende modes werken: Als een cliënt — u wilt uw machine verbinden met de buitenwereld via een seriële PPP-verbinding of een modemlijn. - - PPP - - server - - - Als een server — uw machine bevind + Als een serverPPPserver — uw machine bevind zich in het netwerk en wordt gebruikt om andere computers te verbinden door middel van PPP. In beide gevallen moet u een bestand met opties instellen (/etc/ppp/options of ~/.ppprc als er meer dan één gebruiker is op uw machine die gebruik maakt van PPP). U heeft ook enige modem/seriële software nodig (comms/kermit wordt aanbevolen), zodat u de andere kant kunt bellen en een verbinding kunt opzetten. Trev Roydhouse Gebaseerd op informatie geleverd door Gebruik maken van <command>pppd</command> als cliënt PPP cliënt Cisco De volgende /etc/ppp/options kan gebruikt worden om met een Cisco terminal server PPP lijn verbinding te maken. crtscts # Schakel hardware flow controle in modem # modem controle lijn noipdefault # De PPP-server aan de andere kant moet uw IP-adres # opgeven, als de machine aan de andere kant uw IP # adres niet meegeeft tijdens de IPCP onderhandeling # moet deze optie worden verwijderd passive # Wacht op LCP pakketten domain ppp.foo.com # Vul uw domein naam hier in :remote_ip # Vul het IP-adres van de PPP # server in deze wordt gebruikt om pakketten te # routeren via de PPP link. Als u de noipdefault optie # niet heeft aangegeven verander dan deze regel in # local_ip:remote_ip defaultroute # Vul dit in als u wilt dat de PPP server de standaard # router wordt Om verbinding te maken: Kermit modem Bel naar de machine aan de andere kant door middel van Kermit (of een ander modem programma), en vul uw gebruikersnaam en wachtwoord in (of wat er ook nodig is om de verbinding op te brengen met de machine aan de andere kant). Stop Kermit (zonder de lijn op te hangen). Type het volgende: &prompt.root; /usr/sbin/pppd /dev/tty01 19200 Wees er zeker van dat de juiste snelheid en het juiste apparaat wordt aangesproken. Uw computer is nu verbonden met PPP. Als de connectie faalt, kan de optie worden meegegeven in het /etc/ppp/options bestand waarna op de console berichten kunnen worden geraadpleegd om het probleem te achterhalen. Het volgende /etc/ppp/pppup script zal alle drie de stappen automatisch doen: #!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.dial pppd /dev/tty01 19200 Kermit /etc/ppp/kermit.dial is een Kermit script dat belt en alle benodigde authorisaties doet op de machine aan de andere kant (een voorbeeld van zo'n script is bijgevoegd aan het einde van dit document). Gebruik het volgende /etc/ppp/pppdown script om de PPP lijn af te breken: #!/bin/sh pid=`pgrep pppd` if [ X${pid} != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill -TERM ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi /sbin/ifconfig ppp0 down /sbin/ifconfig ppp0 delete kermit -y /etc/ppp/kermit.hup /etc/ppp/ppptest Controleer of pppd nog steeds draait door het uitvoeren van /usr/etc/ppp/ppptest, welke er als volgend uitziet: #!/bin/sh pid=`pgrep pppd` if [ X${pid} != "X" ] ; then echo 'pppd running: PID=' ${pid-NONE} else echo 'No pppd running.' fi set -x netstat -n -I ppp0 ifconfig ppp0 Om het modem op te hangen, voer het /etc/ppp/kermit.hup script uit welke het volgende bevat: set line /dev/tty01 ; vul hier uw modem in set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 echo \13 exit Hier is een alternatieve methode welke gebruik maakt van chat in plaats van kermit: De volgende twee regels zijn voldoende om een pppd verbinding op te zetten. /etc/ppp/options: /dev/cuad1 115200 crtscts # Schakel hardware flow controle in modem # modem controle lijn connect "/usr/bin/chat -f /etc/ppp/login.chat.script" noipdefault # De PPP server aan de andere kant moet uw IP-adres # opgeven, als de machine aan de andere kant uw IP # adres niet meegeeft tijdens de IPCP onderhandeling # moet deze optie worden verwijderd passive # Wacht op LCP pakketten domain your.domain # Vul uw domein naam hier in :remote_ip # Vul het IP-adres van de PPP # server in deze wordt gebruikt om pakketten te # routeren via de PPP link. Als u de noipdefault optie # niet heeft aangegeven verander dan deze regel in # local_ip:remote_ip defaultroute # Vul dit in als u wilt dat de PPP server de standaard # router wordt /etc/ppp/login.chat.script: Het volgende moet op één regel. ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTtelefoon.nummer CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: login-id TIMEOUT 5 sword: password Zodra deze zijn geďnstalleerd en correct aangepast is het enige dat gedaan moet worden, het starten van pppd zoals volgt: &prompt.root; pppd Gebruik maken van <command>pppd</command> als server /etc/ppp/options moet ongeveer het volgende bevatten: crtscts # Hardware flow controle netmask 255.255.255.0 # netmask (niet vereist) 192.114.208.20:192.114.208.165 # IP's van lokale en niet lokale hosten # het lokale IP moet anders zijn dan # degeen die is toegewezen aan de # Ethernet (of andere) interface op uw # machine. remote IP is het IP-adres # dat wordt toegewezen aan de machine # aan de andere kant domain ppp.foo.com # uw domein passive # Wacht op LCP modem # modem lijn Het volgende /etc/ppp/pppserv script zal pppd vertellen zich te gedragen als server: #!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi # reset ppp interface ifconfig ppp0 down ifconfig ppp0 delete # enable autoanswer mode kermit -y /etc/ppp/kermit.ans # run ppp pppd /dev/tty01 19200 Gebruik dit /etc/ppp/pppservdown script om de server te stoppen: #!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.noans Het volgende Kermit script (/etc/ppp/kermit.ans) zal het automatisch beantwoorden van uw modem in of uitschakelen. Het moet eruit zien als volgend: set line /dev/tty01 set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 inp 5 OK echo \13 out ATS0=1\13 ; Verander dit in out ATS0=0\13 als u automatisch ; beantwoorden wilt uitschakelen inp 5 OK echo \13 exit Een script genaamd /etc/ppp/kermit.dial wordt gebruikt voor het bellen en authenticeren van de machine aan de andere kant. U moet deze aanpassen aan uw wensen. Vul in dit script uw inlognaam en wachtwoord in, u moet ook het input statement aanpassen afhankelijk hoe uw modem antwoordt en de communicatie van de machine aan de andere kant. ; ; Vul de seriële lijn in welke verbonden is met het modem ; set line /dev/tty01 ; ; Stel het modem snelheid in: ; set speed 19200 set file type binary ; volledige 8 bit bestands xfer set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none set modem hayes set dial hangup off set carrier auto ; Daarna stel SET CARRIER in indien nodig set dial display on ; Stel daarna SET DIAL in indien nodig set input echo on set input timeout proceed set input case ignore def \%x 0 ; login prompt teller goto slhup :slcmd ; stel het modem in op commandomodus echo Stel het modem in op commandomodus. clear ; Verwijder ongelezen karakters uit de input buffer pause 1 output +++ ; hayes escape sequence input 1 OK\13\10 ; wacht op OK if success goto slhup output \13 pause 1 output at\13 input 1 OK\13\10 if fail goto slcmd ; Als het modem niet antwoordt met OK, probeer het opnieuw :slhup ; hang de telefoon op clear ; Verwijder ongelezen karakters uit de input buffer pause 1 echo De telefoon wordt opgehangen. output ath0\13 ; hayes command voo on hook input 2 OK\13\10 if fail goto slcmd ; Als er geen OK antwoord is, stel het modem in op commandomodus :sldial ; Draai het nummer pause 1 echo Bellen. output atdt9,550311\13\10 ; put phone number here assign \%x 0 ; zero the time counter :look clear ; Verwijder ongelezen karakters uit de input buffer increment \%x ; Tel de seconden input 1 {CONNECT } if success goto sllogin reinput 1 {NO CARRIER\13\10} if success goto sldial reinput 1 {NO DIALTONE\13\10} if success goto slnodial reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 60 goto look else goto slhup :sllogin ; login assign \%x 0 ; Stel de tijd teller in op nul pause 1 echo Zoeken naar de login prompt :slloop increment \%x ; Tel de seconden clear ; Verwijder ongelezen karakters uit de input buffer output \13 ; ; Stel hier de verwachte login prompt in: ; input 1 {Username: } if success goto sluid reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 10 goto slloop ; Probeer 10 x om een login prompt te krijgen else goto slhup ; Hang op en probeer het nogmaals als er 10 mislukte pogingen zijn :sluid ; ; Vul hier uw gebruikersnaam in: ; output ppp-login\13 input 1 {Password: } ; ; Vul hier uw wachtwoord in: ; output ppp-password\13 input 1 {Entering SLIP mode.} echo quit :slnodial echo \7Er is geen kiestoon, controleer de telefoon lijn!\7 exit 1 ; local variables: ; mode: csh ; comment-start: "; " ; comment-start-skip: "; " ; end: Tom Rhodes Bijgedragen door Het problemen oplossen van <acronym>PPP</acronym>-verbindingen PPP troubleshooten Deze sectie behandelt een paar problemen die kunnen optreden wanneer PPP wordt gebruikt over een modemverbinding. Bijvoorbeeld, misschien moet u exact weten wat de prompt is die het systeem waarop u inbelt presenteert. Sommige providers presenteren de ssword prompt terwijl anderen password tonen als het ppp script niet goed geschreven is en de inlogin poging faalt. De meest standaard manier om ppp verbindingen te onderzoeken op problemen is door handmatig een connectie op te zetten. De volgende informatie helpt u om stap voor stap een handmatige connectie op te zetten. Controleer de apparaatknooppunten Als er een eigen kernel gebruikt wordt, vergeet dan niet om de volgende regel in uw kernelinstellingenbestand op te nemen: device uart Het apparaat uart is al in de kernel GENERIC opgenomen, dus zijn er in dit geval geen extra stappen nodig. Controleer de resultaten van het commando dmesg voor het modemapparaat door middel van: &prompt.root; dmesg | grep uart U zou enige informatie moeten ontvangen over de uart apparaten. Deze bevinden zich op de COM-poorten die we nodig hebben. Als uw modem zich gedraagt als een standaard seriële poort zou u deze moeten vinden als zijnde uart1 of COM2. Als dat klopt hoeft u de kernel niet opnieuw te bouwen. Wanneer u de sio-apparaten controleert en het modem is op uart1 te vinden of als COM2 als u zich onder &ms-dos; bevindt, dan is uw modemapparaat /dev/cuau1. Handmatig verbinding maken Verbinding maken met het internet door handmatig controle te hebben over ppp is snel, makkelijk en een geweldige manier om problemen te vinden bij een verbinding of zelfs voor alleen het verkrijgen van inforamtie over hoe uw provider de ppp cliënt verbindingen behandelt. Laten we starten met PPP vanaf de commando regel. Let op dat in al onze voorbeelden we gebruik maken van example als hostnaam van de machine die PPP draait. U start ppp door enkel het commando ppp te typen: &prompt.root; ppp We hebben nu ppp gestart. ppp ON example> set device /dev/cuau1 We stellen ons modem in, in dit geval is dat cuau1. ppp ON example> set speed 115200 We stellen de verbindings snelheid in, in dit geval gebruiken we 115,200 kbps. ppp ON example> enable dns Vertel ppp om onze naam vertaler te configuren, en de juiste naamserver regels toe te voegen aan /etc/resolv.conf. Als ppp onze hostnaam niet kan bepalen, kunnen we deze later instellen. ppp ON example> term Wissel naar terminal mode zodat we handmatig het modem kunnen bedienen. deflink: Entering terminal mode on /dev/cuau1 type '~h' for help at OK atdt123456789 Gebruik at om het modem te initialiseren, en daarna atdt en het nummer voor uw provider om het inbel proces te beginnen. CONNECT Bevestiging van de verbinding, als we tegen problemen aanlopen met de verbinding, welke niet gerelateerd zijn aan de hardware, is dit de plek om te beginnen om de problemen op te lossen. provider login:myusername Hier wordt u gevraagd om een gebruikersnaam. Geef de gebruikersnaam op welke aangeleverd is door de provider. provider pass:mypassword Deze keer worden we gevraagd voor een wachtwoord. Vul uw wachtwoord in welke u is aangeleverd door de provider. Net zoals het aanloggen op &os; zal het wachtwoord niet getoond worden. Shell or PPP:ppp Afhankelijk van uw provider wordt deze prompt wellicht nooit getoond. Hier wordt ons gevraagd of we een shell willen starten op de host van de provider, of dat we ppp willen starten. In dit geval is er gekozen voor ppp omdat we een internet verbinding willen. Ppp ON example> Let op dat in dit voorbeeld de eerste een hoofdletter geworden is. Dit geeft aan dat we succesvol verbonden zijn met de provider. PPp ON example> We hebben ons succesvol geauthenticeerd bij onze provider en we wachten op een IP-adres dat ons wordt toegewezen. PPP ON example> We hebben een IP adres verkregen en hebben succesvol een verbinding opgebouwd. PPP ON example>add default HISADDR Hier wordt een standaard route toegevoegd. Deze moet worden toegevoegd voordat we kunnen communiceren met de buitenwereld aangezien de enige verbinding op dit moment met de andere machine is. Als dit niet lukt omdat er al een route bestaat, kan er een bang karakter (!) geplaatst worden voor de optie. Als alternatief kan dit ook gedaan worden voordat de verbinding opgezet wordt, waarna een nieuwe route onderhandeld wordt. Als alles goed gegaan is, zou er nu een actieve verbinding moeten zijn met het internet, welke in de achtergrond gezet kan worden door CTRLz te gebruiken. Als u ziet dat het commando PPP terugkeert naar ppp is de verbinding afgebroken. Dit is goed om te weten, aangezien dit de status van de verbinding toont. Hoofdletter P's betekenen dat er een verbinding is met de provider, en kleine letters betekend dat de verbinding verloren is gegaan om welke reden dan ook. ppp kent alleen deze twee statussen. Debuggen Als u een directe lijn heeft en geen verbinding kan maken, zet dan hardware flow CTS/RTS uit met de optie. Dit is meestal het geval voor een PPP terminal server waar PPP hangt wanneer deze probeert te schrijven naar uw communicatie link, dus moet deze wachten op een CTS of een Clear To Send signaal welke misschien nooit komt. Als u deze optie gebruikt, moet u ook de optie gebruiken welke benodigd kan zijn om hardware afhankelijkheden te omzeilen door bepaalde karakters over en weer te sturen, meestal XON/XOFF. Zie de &man.ppp.8; handleiding voor meer informatie over deze optie en hoe deze gebruikt kan worden. Als u een ouder modem heeft, kan het voorkomen dat u ook de optie moet gebruiken. De parity is standaard ingesteld op none maar wordt gebruikt voor fout controle (met als gevolg een grote verhoging van de hoeveelheid data) bij oudere modems en sommige providers. Dit is bijvoorbeeld een benodigde optie bij de Compuserve provider. Het kan voorkomen dat PPP niet terugkeert naar de commando mode, wat meestal betekent dat er een onderhandelings fout is waarbij de provider wacht op uw kant om de onderhandeling te kunnen beginnen. Op dit moment kunt u gebruik maken van het ~p commando om ppp te forceren om de configuratie informatie te versturen. Als u nooit een inlogin prompt krijgt is het zeer waarschijnlijk dat u PAP of CHAP authenticatie moet gebruiken in plaats van de &unix; stijl in het voorbeeld hierboven. Om gebruik te maken van PAP of CHAP voegt u het volgende opties toe aan PPP voordat u de terminal mode ingaat: ppp ON example> set authname mijngebruikersnaam Waarbij mijngebruikersnaam moet worden vervangen met de gebruikersnaam die wordt toegewezen door de provider. ppp ON example> set authkey mijnwachtwoord Waarbij mijnwachtwoord moet worden vervangen door het wachtwoord wat u is toegewezen door de provider. Als u een goed werkende verbinding kunt maken maar het onmogelijk lijkt om een domeinnaam te vinden, probeert u dan &man.ping.8; te gebruiken met een IP adres en kijk of er enige informatie terugkomt. Als u 100 procent (100%) packet loss ziet is het zeer waarschijnlijk dat u geen default route heeft gekregen. Controleer nogmaals of de optie ingesteld is tijdens de connectie. Als u verbinding kunt maken met een extern IP adres is het mogelijk dat een naamserver niet is toegevoegd aan het /etc/resolv.conf bestand. Dit bestand moet er uitzien als volgend: domain example.com nameserver x.x.x.x nameserver y.y.y.y Waar x.x.x.x en y.y.y.y moet worden vervangen door het IP adres van uw providers naamservers. Deze informatie kan mogelijk wel of niet geleverd zijn toen u zich inschreef, maar een snel telefoontje naar uw provider zou hierin uitkomst kunnen bieden. U kunt ook &man.syslog.3; gebruiken om een log functie voor PPP aan te maken. Voeg het volgende toe aan /etc/syslog.conf: !ppp *.* /var/log/ppp.log Deze functionaliteit bestaat in de meeste gevallen al. Jim Mock Bijgedragen (vanaf http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) door PPP gebruiken over Ethernet (PPPoE) PPP over Ethernet PPPoE PPP, over Ethernet Deze sectie beschrijft hoe PPP over Ethernet opgezet kan worden (PPPoE). Het configureren van de kernel Inmiddels is het niet langer benodigd om de kernel configuratie aan te passen voor PPPoE. Als de benodigde netgraph ondersteuning niet in de kernel aanwezig is zal deze dynamisch geladen worden door ppp. Het instellen van <filename>ppp.conf</filename> Hieronder volgt een voorbeeld van een werkende ppp.conf: default: set log Phase tun command # Er kan meer gedetailleerde logging ingeschakeld worden indien gewenst set ifaddr 10.0.0.1/0 10.0.0.2/0 name_of_service_provider: set device PPPoE:xl1 # Vervang x11 met uw ethernet apparaat set authname UWLOGINNAAM set authkey UWWACHTWOORD set dial set login add default HISADDR Het draaien van <application>ppp</application> Als de root gebruiker kunt u het volgende draaien: &prompt.root; ppp -ddial name_of_service_provider Het pstarten van <application>ppp</application> tijdens het opstarten Voeg het volgende toe aan uw /etc/rc.conf bestand: ppp_enable="YES" ppp_mode="ddial" ppp_nat="YES" # Indien u nat wilt inschakelen voor het lokale netwerk, gebruik anders NO ppp_profile="naam_van_service_provider" Gebruik maken van een PPPoE service label Soms is het nodig om een service tag te gebruiken om verbinding te kunnen maken. Service tags worden gebruikt om onderscheid te maken tussen de verschillende PPPoE servers die verbonden zijn met een netwerk. Uw provider zou u de juiste service tag gegevens verstrekt moeten hebben in de documentatie die opgeleverd is. Als u deze niet kunt vinden in de documentatie moet u deze opvragen bij uw technische support afdeling van uw provider. Als allerlaatste optie kunt u de aangerade methode gebruiken van het Roaring Penguin PPPoE programma welke gevonden kan worden in de Ports Collectie. Houd u echter in uw achterhoofd dat dit uw modem ernstige schade kan toebrengen, dus denkt u er goed over na voordat u het uitprobeert. Installeer simpelweg het programma dat is meegeleverd bij het modem door uw provider. Open hierna het System menu vanuit het programma. De naam van uw profiel moet hier te vinden zijn. Meestal is deze ISP. De naam van het profiel (servicetag) zal worden gebruikt in de PPPoE configuratie regel van ppp.conf in het provider gedeelte van het set device commando (zie de &man.ppp.8; handleiding voor meer informatie hierover). Dit zou er als volgend uit moeten zien: set device PPPoE:xl1:ISP Vergeet u niet om xl1 te vervangen door het juiste apparaat voor uw Ethernet kaart. Vergeet u niet om ISP te vergangen door het profiel wat hierboven ingesteld is. Voor meer informatie zie: Cheaper Broadband with FreeBSD on DSL door Renaud Waldura. PPPoE met een &tm.3com; <trademark class="registered">HomeConnect</trademark> ADSL Modem Dual Link Dit modem volgt RFC 2516 niet (Een methode voor het versturen van PPP over Ethernet (PPPoE) geschreven door by L. Mamakos, K. Lidl, J. Evarts, D. Carrel, D. Simone, and R. Wheeler). Daarentegen is een ander type pakket code gebruikt voor de Ethernet frames. Klaagt u alstublift bij 3Com als u vind dat ze zich aan de PPPoE specificatie moeten houden. Om &os; in staat te stellen om te communiceren met dit apparaat, moet er een sysctl ingesteld worden. Dit kan automatisch tijdens het opstarten gedaan worden door het bewerken van /etc/sysctl.conf: net.graph.nonstandard_pppoe=1 Dit kan ook direct gedaan worden met het commando: &prompt.root; sysctl net.graph.nonstandard_pppoe=1 Helaas is het, doordat dit een systeem brede instelling is, niet mogelijk om tegelijkertijd met een normale PPPoE cliënt of server en een &tm.3com; HomeConnect ADSL-modem te communiceren. Gebruik maken van <application>PPP</application> over ATM (PPPoA) PPP over ATM PPPoA PPP, over ATM Het volgende beschrijft hoe PPP over ATM (PPPoA) opgezet kan worden. PPPoA is een populaire keuze binnen Europese DSL providers. Gebruik maken van PPPoA met de Alcatel &speedtouch; USB PPPoA ondersteuning voor dit apparaat wordt geleverd door middel van een port in &os; omdat de firmware wordt gedistribueerd onder Alcatel's licentie overeenkomst en mag derhalve niet vrijelijk verspreid worden met het basis systeem van &os;. Om de software te installeren, wordt simpelweg de Ports Collectie gebruikt. Installeer de net/pppoa port en volg de instructies die meegeleverd worden. Zoals de meeste USB apparaten moet de Alcatel &speedtouch; USB zijn firmware downloaden van de host computer om correct te kunnen werken. Het is mogelijk om dit proces te automatiseren binnen &os; zodat deze overdracht elke keer gebeurd als het apparaat in een USB poort wordt gestoken. De volgende informatie kan worden toegevoegd aan het /etc/usbd.conf bestand om deze automatische overdracht in te schakelen. Dit bestand moet bewerkt worden door de root gebruiker. device "Alcatel SpeedTouch USB" devname "ugen[0-9]+" vendor 0x06b9 product 0x4061 attach "/usr/local/sbin/modem_run -f /usr/local/libdata/mgmt.o" Om de USB daemon, usbd, te starten moet de volgende regel toegevoegd worden aan /etc/rc.conf: usbd_enable="YES" Het is ook mogelijk om ppp op te zetten om in te bellen tijdens het opstarten. Om dit te doen moet de volgende regel worden toegevoegd aan /etc/rc.conf. Voor deze procedure moet er ook aangelogt zijn als de root gebruiker. ppp_enable="YES" ppp_mode="ddial" ppp_profile="adsl" Om dit correct te laten werken moet het voorbeeld ppp.conf bestand gebruikt worden welke geleverd wordt door de net/pppoa port. Gebruik maken van mpd U kunt mpd gebruiken om met een variateit aan diensten verbinding te maken, in het bijzonder PPTP diensten. U kunt mpd vinden in de Ports Collectie, net/mpd. Veel ADSL-modems vereisen dat er een PPTP tunnel wordt gecreeërd tussen het modem en de computer, een voorbeeld van zo'n modem is de Alcatel &speedtouch; Home. Eerst moet u de port installeren waarna mpd geconfigureerd kan worden om uw eisen en provider instellingen op te geven. De port plaatst een verzameling voorbeeldconfiguratiebestanden welke goed gedocumenteerd zijn in PREFIX/etc/mpd/. Let op dat PREFIX betekend dat dit de directory is waar uw ports in worden geďnstalleerd. Standaard is dit /usr/local/. Een complete handleiding om mpd te configureren is beschikbaar in HTML formaat zodra de port geďnstalleerd is. Deze wordt geplaatst in PREFIX/share/doc/mpd/. Hieronder staat een voorbeeld configuratie om verbinding te maken met een ADSL dienstverlener door het gebruik van mpd. De configuratie is verspreid over twee bestanden, allereerst het mpd.conf bestand: Dit voorbeeld van het bestand mpd.conf werkt alleen met mpd 4.X. default: load adsl adsl: new -i ng0 adsl adsl set bundle authname gebruikersnaam set bundle password wachtwoord set bundle disable multilink set link no pap acfcomp protocomp set link disable chap set link accept chap set link keep-alive 30 10 set ipcp no vjcomp set ipcp ranges 0.0.0.0/0 0.0.0.0/0 set iface route default set iface disable on-demand set iface enable proxy-arp set iface idle 0 open De gebruikersnaam die gebruikt wordt om uzelf te authenticeren aan uw provider. Het wachtwoord wat gebruikt wordt om uzelf te authenticeren aan uw provider. Het mpd.links bestand bevat informatie over de link, of linken waarmee u verbinding wilt maken. Een voorbeeld mpd.links wat bij bovenstaand voorbeeld hoort is hieronder gegeven: adsl: set link type pptp set pptp mode active set pptp enable originate outcall set pptp self 10.0.0.1 set pptp peer 10.0.0.138 Het IP-adres van uw &os; computer waar vanaf mpd gebruikt wordt. Het IP-adres van uw ADSL-modem. Voor de Alcatel &speedtouch; Home is dit adres standaard 10.0.0.138. Het is mogelijk om de verbinding makkelijk te initialiseren door het volgende commando als root uit te voeren: &prompt.root; mpd -b adsl U kunt de status van de verbinding zien met het volgende commando: &prompt.user; ifconfig ng0 ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500 inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff Het gebruik van mpd is de aangeraden manier om met een ADSL dienst te verbinden met &os;. Gebruik maken van pptpclient Het is ook mogelijk om &os; te gebruiken om naar een andere PPPoA dienstenm verbinding te maken door middel van de net/pptpclient port. Om gebruik te maken van net/pptpclient om naar een DSL dienst verbinding te maken, installeert u de port of package en bewerkt u /etc/ppp/ppp.conf U moet dit onder de root gebruiker doen, om beide acties uit te voeren. Een voorbeeld sectie van ppp.conf is hieronder gegeven. Voor meer informatie over ppp.conf consulteert u de &man.ppp.8; handleiding. adsl: set log phase chat lcp ipcp ccp tun command set timeout 0 enable dns set authname gebruikersnaam set authkey wachtwoord set ifaddr 0 0 add default HISADDR De gebruikersnaam van uw account bij uw DSL provider. Het wachtwoord voor uw account. Omdat u het wachtwoord van uw account in het ppp.conf bestand in leesbare vorm moet plaatsen, moet u ervoor zorgen dat niemand anders de inhoud van dit bestand kan lezen. De volgende serie van commando's zorgt ervoor dat het bestand alleen leesbaar is door de root gebruiker. Raadpleeg de handleidingen van &man.chmod.1; en &man.chown.8; voor verdere informatie. &prompt.root; chown root:wheel /etc/ppp/ppp.conf &prompt.root; chmod 600 /etc/ppp/ppp.conf Dit opent een tunnel voor een PPP sessie naar uw DSL router. Ethernet DSL-modems hebben een voor geconfigureerd LAN IP adres waarmee u verbinding maakt. In het geval van de Alcatel &speedtouch; home is 10.0.0.138 het adres. Uw router documentatie vertelt u welk adres uw apparaat gebruikt. Om de tunnel te openen en om een PPP sessie op te zetten, start u het volgende commando: &prompt.root; pptp address adsl Het kan wenselijk zijn om een ampersand (&) toe te voegen aan het einde van het vorige commando, omdat pptp uw prompt niet teruggeeft. Er wordt een tun virtueel tunnel apparaat gecreeërd voor interactie tussen de pptp en ppp processen. Zodra u terugbent op uw prompt, of als pptp bevestigd dat er een verbinding is, kunt u de tunnel als volgend inzien: &prompt.user; ifconfig tun0 tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500 inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00 Opened by PID 918 Als het niet mogelijk is om verbinding te maken, controleert u de configuratie van uw router, welke meestal bereikbaar is door middel van telnet of via een web browser. Als u nog steeds geen verbinding kunt maken moet u de resultaten van het pptp onderzoeken en de inhoud van het ppp log bestand, /var/log/ppp.log voor meer hints over wat er mis kan zijn. Satoshi Asami Origineel bijgedragen door Guy Helmer Met input van Piero Serini Gebruik maken van SLIP SLIP Deze sectie geldt en is alleen geldig voor &os; 7.X. Het opzetten van een SLIP-cliënt SLIP cliënt Het volgende is één manier om een &os; machine in te stellen voor gebruik met SLIP op een statisch host netwerk. Voor dynamische hostnaam toewijzing (uw adres veranderd elke keer als u inbelt), heeft u waarschijnlijk een meer complexe opzet nodig. Bepaal eerst aan welke seriële poort uw modem verbonden is. Veel mensen gebruiken hiervoor een symbolische link zoals /dev/modem welke verwijst naar de echte naam van het apparaat /dev/cuadN. Dit geeft de mogelijkheid om naam abstract te houden, voor het geval het modem ooit verplaatst wordt naar een andere poort. Het kan best een vervelende klus zijn wanneer er een aantal bestanden in /etc en .kermrc bestanden verspreid over het gehele systeem gerepareerd moeten worden! /dev/cuad0 is COM1, cuad1 is COM2, etc. Zorg ervoor dat u het volgende in uw kernel configuratie bestand hebt: device sl Deze is standaard opgenomen in de GENERIC kernel, dus dat zou geen problemen moeten opleveren tenzij u deze verwijderd heeft. Dingen die u maar eenmalig hoeft uit te voeren Voeg uw machine, de router en de naamservers toe aan uw /etc/hosts bestand. Ons bestand ziet er als volgend uit: 127.0.0.1 localhost loghost 136.152.64.181 water.CS.Example.EDU water.CS water 136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway 128.32.136.9 ns1.Example.EDU ns1 128.32.136.12 ns2.Example.EDU ns2 Zorg ervoor dat u files voor dns in de hosts: sectie van uw /etc/nsswitch.conf bestand. Zonder deze parameters zouden er interessante dingen kunnen gebeuren. Bewerk het /etc/rc.conf bestand. Stel uw hostnaam in door de regel te bewerken die aangeeft: hostname="myname.my.domain" De volledig gekwalificeerde internet hostnaam moet hier geplaatst worden. - standaard routering - - Stel de standaard router in door het aanpassen + Stel de standaard routerstandaard routering in door het aanpassen van de volgende regel van: defaultrouter="NO" naar: defaultrouter="slip-gateway" Creeër en bestand genaamd /etc/resolv.conf welke het volgende bevat: domain CS.Example.EDU nameserver 128.32.136.9 nameserver 128.32.136.12 - naamserver - - domeinnaam - - Zoals u kunt zien, stellen deze de naamserver hosten - in. Uiteraard is het echte domein en adres afhankelijk + Zoals u kunt zien, stellen deze de naamservernaamserver hosten + in. Uiteraard is het echte domeindomeinnaam en adres afhankelijk van uw omgeving. Stel het wachtwoord in voor de root en de toor gebruikers (en elke andere gebruiker die geen wachtwoord heeft). Herstart de machine en controleeer of deze opkomt met de correcte hostnaam. Het opzetten van een SLIP-verbinding SLIP verbinding maken met Bel in, type slip op de prompt en voer uw machine naam en wachtwoord in. Wat is vereist, is afhankelijk van uw omgeving. Als u gebruik maakt van Kermit kan een script als de volgende gebruikt worden: # kermit setup set modem hayes set line /dev/modem set speed 115200 set parity none set flow rts/cts set terminal bytesize 8 set file type binary # De volgende macro zal inbellen en ons inloggen. define slip dial 643-9600, input 10 =>, if failure stop, - output slip\x0d, input 10 Username:, if failure stop, - output silvia\x0d, input 10 Password:, if failure stop, - output ***\x0d, echo \x0aCONNECTED\x0a Uiteraard moet u uw gebruikersnaam en wachtwoord wijzigen zodat deze overeenkomen met die van u. Nadat dit gedaan is kunt u slip invullen op de Kermit prompt om verbinding te maken. Het achterlaten van uw wachtwoord in leesbare tekst waar dan ook op het bestandssysteem is zeker een slecht idee. Doe dit op eigen risico. Laat Kermit daar (het programma kan tijdelijk uitgeschakeld worden door Ctrl z ) en type vervolgens als root: &prompt.root; slattach -h -c -s 115200 /dev/modem Als u in staat bent om andere hosten met ping te benaderen aan de andere kant van de router, bent u verbonden! Als dit niet werkt kunt u wellicht de gebruiken in plaats van de als argument voor slattach. Hoe de verbinding afgebroken moet worden Doe het volgende:: &prompt.root; kill -INT `cat /var/run/slattach.modem.pid` om slattach te stoppen. Houd in uw achterhoofd dat u dit als root moet doen. Ga hierna terug naar kermit (door het intypen van fg als u deze tijdelijk uitgeschakeld had) en verlaat de applicatie (q). De &man.slattach.8; handleiding zegt dat ifconfig sl0 down uitgevoerd moet worden om de interface uit te schakelen, maar dit lijkt geen verschil op te leveren. (ifconfig sl0 lijkt hetzelfde resultaat te geven.) Soms kan het gebeuren dat het modem weigert om de carrier los te laten. Start in dat geval simpelweg kermit en stop deze wederom. Meestal stopt het met de tweede poging. Problemen oplossen Als dit niet werkt, voelt u zich dan vrij om rond te vragen op de &a.net.name; mailing lijst. De volgende dingen zijn mensen al eens tegen aangelopen: Het niet gebruiken van de of optie voor slattach (Dit zou niet fataal moeten zijn, maar sommige mensen hebben aangegeven dat het de problemen oplostte.) Het intypen van in plaats van (het verschil is wellicht lastig te zien met sommige fonts). Probeer ifconfig sl0 uit te voeren om de interface status te zien. U kunt bijvoorbeeld krijgen: &prompt.root; ifconfig sl0 sl0: flags=10<POINTOPOINT> inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00 Als u no route to host krijgt van het &man.ping.8; commando, is er mogelijk een probleem met uw route tabel. U kunt het netstat -r commando uitvoeren om de huidige routes te zien: &prompt.root; netstat -r Routing tables Destination Gateway Flags Refs Use IfaceMTU Rtt Netmasks: (root node) (root node) Route Tree for Protocol Family inet: (root node) => default inr-3.Example.EDU UG 8 224515 sl0 - - localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438 inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - - water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438 (root node) Het voorgaand voorbeeld komt van een relatief druk systeem. De getallen op uw systeem zullen anders zijn naar gelang de netwerk activiteiten. Het opzetten van een SLIP-server SLIP server Dit document levert suggesties voor het opzetten van een SLIP-server op een &os; systeem, welke meestal betekent het configureren van uw systeem om automatisch verbindingen op te zetten wanneer er wordt ingelogt met remote SLIP cliënten. Eisen vooraf TCP/IP networking Deze sectie is vrij technisch van aard, dus achtergrond informatie is vereist. Er wordt aangenomen dat u bekend bent met het TCP/IP-netwerk protocol, en in dan in het bijzonder met netwerk en node adresseringen, netwerk adres maskers, subnetten, routes en dynamische routering protocollen zoals RIP. Het configureren van een SLIP-dienst op een inbel server vereist kennis van deze concepten en als u daarmee niet bekend bent, leest u dan aub een versie van of Craig Hunt's TCP/IP Network Administration gepubliceerd door O'Reilly & Associates, Inc. (ISBN Number 0-937175-82-X), of Douglas Comer's boeken over het TCP/IP protocol. modem Daarnaast wordt er vanuit gegaan dat u reeds uw modem(s) heeft geconfigureerd en dat u de juiste systeem bestanden heeft aangepast zodat er logins mogelijk zijn door uw modem(s) heen. Als u dat nog niet heeft gedaan, zie dan voor details over het opzetten van inbel diensten. Wellicht wilt u ook de handleiding bekijken voor &man.sio.4; voor meer informatie over de seriële port device driver en de &man.ttys.5;, &man.gettytab.5;, &man.getty.8;, & &man.init.8; handleidingen voor informatie die relevant zijn voor het configureren van het systeem zodat logins mogelijk worden op modems, en wellicht &man.stty.1; voor informatie over het instellen van de seriële poort (zoals clocal voor direct verbonden seriële interfaces). Snel overzicht In een typische configuratie, werkt het gebruik van &os; als een SLIP-server als volgend: een SLIP-gebruiker belt in op uw &os; SLIP-server systeem en logt in met een speciaal SLIP-login ID dat gebruik maakt van /usr/sbin/sliplogin. Het sliplogin programma leest door het /etc/sliphome/slip.hosts bestand om een corresponderende regel te vinden voor de speciale gebruiker en als deze een match vindt verbind het de seriële lijn met een beschikbare SLIP-interface waarna het shellscript /etc/sliphome/slip.login wordt uitgevoerd om de SLIP-interface te configureren. Een voorbeeld van SLIP-server login Bijvoorbeeld, als een SLIP-user-ID Shelmergis, kan Shelmerg's regel in /etc/master.passwd er als volgt uitzien: Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin Wanneer Shelmerg inlogt, zoekt het sliplogin programma in het /etc/sliphome/slip.hosts bestand voor een regel dat een corresponderende user ID heeft, er kan bijvoorbeeld een regel staan in /etc/sliphome/slip.hosts dat eruit ziet als volgend: Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp sliplogin zal de corresponderende regel vinden en de seriële lijn koppelen aan de eerste beschikbare SLIP-interface, waarna /etc/sliphome/slip.login wordt uitgevoerd zoals volgend: /etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp Als alles goed gaat, zal /etc/sliphome/slip.login een ifconfig commando uitvoeren voor de SLIP interface waaraan sliplogin zichzelf koppelt (SLIP-interface 0 zoals in bovenstaand voorbeeld was de eerste parameter in de lijst welke gegeven is aan slip.login) om een lokaal IP-adres in te stellen (dc-slip), een remote IP adres (sl-helmer), een netwerk master voor de SLIP-interface (0xfffffc00), en enkele additionele vlaggen (autocomp). Als er iets misgaat zal sliplogin meestal voldoende goede informatie loggen via de syslogd daemon faciliteiten, welke meestal logt naar /var/log/messages (zie de handleidingen van &man.syslogd.8; en &man.syslog.conf.5; en controleer het /etc/syslog.conf bestand om te zien wat syslogd logt en waar dit naartoe gelogt wordt). Kernel-configuratie kernel configuration SLIP &os;'s standaard kernel (GENERIC) heeft reeds ondersteuning voor SLIP (&man.sl.4;), in het geval van een custom kernel moet de volgende regel worden toegevoegd aan de kernel configuratie: device sl Standaard zal uw &os; machine geen pakketten doorsturen. Als u wilt dat uw &os; SLIP-server zich gedraagt als router zult u het bestand /etc/rc.conf moeten bewerken en de instelling van de gateway_enable variabele moeten aanpassen naar . Dit zorgt ervoor dat de machine na een herstart zich zal blijven gedragen als router. Om de instellingen meteen actief te maken kunt u het volgende commando als root uitvoeren: &prompt.root; service routing start Raadpleeg aub over het configureren van de &os; kernel voor meer hulp over het herconfigureren van uw kernel. Sliplogin-configuratie Zoals eerder vermeld, zijn er drie bestanden in de map /etc/sliphome die onderdeel zijn van de configuratie voor /usr/sbin/sliplogin (zie &man.sliplogin.8; voor de actuele handleiding voor sliplogin): slip.hosts, welke de SLIP-gebruikers definieert en de gekoppelde IP adressen; slip.login, welke meestal de SLIP-interface configureert en (optioneel) slip.logout, welke de effecten van slip.login ongedaan maakt wanneer de seriële verbinding verbroken wordt. <filename>slip.hosts</filename> configuratie /etc/sliphome/slip.hosts bevat regels welke minstens vier onderdelen heeft die gescheiden worden door een spatie: SLIP-gebruikers login ID Lokale adres (lokaal voor de SLIP-server) van de SLIP-link Remote adres van de SLIP-link Netwerk masker De lokale en remote adressen mogen host namen zijn (Welke naar IP-adressen vertaald kunnen worden door /etc/hosts of door de DNS diensten, afhankelijk van uw specificaties in het /etc/nsswitch.conf, het netwerk masker mag een naam zijn dat vertaald kan worden door een zoek opdracht in /etc/networks. Op een voorbeeld systeem ziet het /etc/sliphome/slip.hosts bestand er als volgt uit: # # login local-addr remote-addr mask opt1 opt2 # (normal,compress,noicmp) # Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp Aan het einde van deze regel staan één of meerdere opties: — geen compressie van de header — comprimeer headers — comprimeer de headers als de remote kant dit accepteert — schakelt ICMP pakketten uit (dus alle ping pakketten worden geweigerd in plaats van dat deze bandbreedte verbruiken) SLIP TCP/IP networking Uw keuze van een lokaal en remote adres voor uw SLIP verbindingen is afhankelijk van of u een speciaal toegewezen TCP/IP-subnet gebruikt, of dat u gebruik gaat maken van proxy ARP op uw SLIP-server (het is geen echte proxy ARP, maar het is de terminologie welke in deze sectie gebruikt wordt om het te beschrijven). Als u niet zeker bent welke methode u moet kiezen, of hoe u IP-adressen moet toewijzen, raadpleegt u dan de TCP/IP boeken die vermeld worden in de SLIP vereisten () en/of vraag uw IP-netwerk manager om hulp. Als u gebruik gaat maken van een separaat subnet voor uw SLIP-cliënten, moet u een subnet alloceren uit de voor u toegewezen IP-ruimte, en elke SLIP-cliënt een IP-adres geven uit dat subnet. Daarna moet u waarschijnlijk een statische route configureren voor uw SLIP-subnet via uw SLIP-server naar de dichtsbijzijnde IP-router. Ethernet In het andere geval moet u gebruik maken van de proxy ARP methode, u moet elke SLIP cliënt een IP-adres geven uit het Ethernet-subnet van uw SLIP-server, daarnaast moet u het /etc/sliphome/slip.login en het /etc/sliphome/slip.logout script aanpassen om gebruik te maken van &man.arp.8; om de proxy ARP regels te beheren in de SLIP servers ARP tabel. <filename>slip.login</filename> configuratie Een typisch /etc/sliphome/slip.login bestand ziet er als volgend uit: #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generiek loginbestand voor een SLIP-lijn. sliplogin voert deze uit # met de volgende parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 Dit slip.login bestand start alleen het ifconfig commando voor de betreffende SLIP-interace met het lokale en remote adres met het netwerkmasker van de SLIP-interface. Als u besloten heeft om gebruik te maken van de proxy ARP methode (in plaats van het gebruiken van een apart subnet voor uw SLIP-cliënten) moet u het /etc/sliphome/slip.login bestand aanpassen zodat deze er ongeveer als volgend uitziet: #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generiek loginbestand voor een SLIP-lijn. sliplogin voert deze uit # met de volgende parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 # Beantwoord ARP Verzoeken voor de SLIP-cliënt met ons Ethernet # adres /usr/sbin/arp -s $5 00:11:22:33:44:55 pub De extra regel in het slip.login bestand, arp -s $5 00:11:22:33:44:55 pub, creeërt een ARP-regel in de ARP-tabel van de SLIP-server. Deze ARP regel zorgt ervoor dat de SLIP-server antwoord geeft met het Ethernet MAC adres van de SLIP-server wanneer een andere IP-node op het Ethernet vraagt om te communiceren met het IP-adres van de SLIP-cliënt. Ethernet MAC address Wanneer u gebruik maakt van het voorbeeld hierboven, wees u er dan zeker van dat u het Ethernet MAC adres (00:11:22:33:44:55) veranderd in het MAC adres van uw systeem's Ethernet kaart, anders werkt uw proxy ARP zeker niet! U kunt het Ethernet MAC adres van uw SLIP-server achterhalen door het bekijken van het resultaat van netstat -i; de tweede regel met resultaten moet er ongeveer als volgend uitzien: ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116 Dit geeft aan dat het specifieke Ethernet MAC adres van het systeem is 00:02:c1:28:5f:4a — de punten in het Ethernet MAC adres welke gegeven wordt door netstat -i moet worden veranderd in dubbele punten (:) en voorloop nullen moeten worden toegevoegd aan elk enkel hexadecimaal getal om het adres te converteren naar de vorm die &man.arp.8; wenst; zie de handleiding van &man.arp.8; voor een compleet overzicht van het gebruik hiervan. Wanneer u /etc/sliphome/slip.login en /etc/sliphome/slip.logout, aanmaakt moet het uitvoerbare bitje gezet zijn (bijvoorbeeld chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout) anders is sliplogin niet in staat om deze uit te voeren. <filename>slip.logout</filename> configuratie /etc/sliphome/slip.logout is niet strict noodzakelijk (tenzij u proxy ARP implementeert), maar als beslist om deze aan te maken is dit een voorbeeld basis slip.logout script: #!/bin/sh - # # slip.logout # # uitlogbestand voor een SLIP-regel. sliplogin voert deze uit met de # parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down Als u gebruik maakt van proxy ARP wilt u waarschijnlijk dat het /etc/sliphome/slip.logout bestand de ARP regel weghaalt voor de SLIP-cliënt: #!/bin/sh - # # @(#)slip.logout # # uitlogbestand voor een SLIP-regel. sliplogin voert deze uit met de # parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down # Stop met het beantwoorden van ARP verzoeken voor de SLIP-cliënt /usr/sbin/arp -d $5 Het arp -d $5 verwijderd de ARP regel, die proxy ARP heeft toegevoegd toen de SLIP-cliënt inlogde. Het is belangrijk om dit te herhalen: zorg ervoor /etc/sliphome/slip.logout het uitvoerbare bitje heeft gezet nadat deze gecreeërd is (b.v. chmod 755 /etc/sliphome/slip.logout). Routering-overwegingen SLIP routering Als u geen gebruik maakt van de proxy ARP voor het routeren van pakketten tussen uw SLIP-cliënten en de rest van uw netwerk (en wellicht het internet), moeten er misschien een aantal statische routeringen naar de best bereikbare standaard router ingesteld worden om uw SLIP cliënts te routeren via uw SLIP0server. Statische routeringen statische routeringen Het toevoegen van statische routeringen naar de dichts bijzijnde router kan problematisch zijn (of zelfs onmogelijk als u niet de bevoegdheden heft om dit te doen). Als u een netwerk heeft met meerdere routers binnen uw organisatie kan het zijn dat sommige routers, zoals die van Cisco en Proteon , niet alleen geconfigureerd moeten worden met de statische route naar het SLIP-subnet, maar deze moeten dan ook geconfigureerd worden over welke statische routes aan andere routers verteld moeten worden. Enige expertise en fine tunen kan nodig zijn om statische routing te laten werken. diff --git a/nl_NL.ISO8859-1/books/handbook/printing/chapter.xml b/nl_NL.ISO8859-1/books/handbook/printing/chapter.xml index 26f1753e59..d03fdd0c7c 100644 --- a/nl_NL.ISO8859-1/books/handbook/printing/chapter.xml +++ b/nl_NL.ISO8859-1/books/handbook/printing/chapter.xml @@ -1,5383 +1,5339 @@ Sean Kelly Bijdrage van Jim Mock Geherstructureerd en bijgewerkt door Lodewijk Koopman Vertaald door Afdrukken Overzicht wachtrijsysteem LPD afdrukken &os; kan gebruikt worden om op een scala aan printers af te drukken, van de oudste matrixprinter tot de nieuwste laserprinters en alles er tussenin, waardoor op hoge kwaliteit afgedrukt kan worden vanuit de gebruikte programma's. &os; kan ook ingesteld worden als printserver in een netwerk. Dan kan &os; afdrukopdrachten ontvangen van uiteenlopende computers, waaronder &os; computers, &windows; en &macos; hosts. &os; zorgt ervoor dat er één afdrukopdracht per keer wordt afgedrukt, houdt statistieken bij van gebruikers en computers die de meeste afdrukken maken, drukt voorbladen af, zodat duidelijk is van wie de afdruk is en nog veel meer. Na het lezen van dit hoofdstuk weet de lezer: Hoe het &os; afdrukwachtrijsysteem moet worden ingesteld; Hoe afdrukfilters kunnen worden geďnstalleerd, om bepaalde afdrukopdrachten op een andere manier af te handelen, zoals het omzetten van documenten naar formaten die een printer begrijpt; Hoe voorbladen kunnen worden afgedrukt; Hoe er op printers die op andere computers zijn aangesloten kan worden afgedrukt; Hoe er op printers die direct op het netwerk zijn aangesloten kan worden afgedrukt; Hoe afdrukbeperkingen kunnen worden opgelegd, zoals het beperken van de grootte van de afdrukopdracht, en bepaalde gebruikers verbieden af te drukken; Hoe afdrukstatistieken kunnen worden bijgehouden en het printergebruik in de gaten kan worden gehouden; Hoe problemen met afdrukken kunnen worden opgelost. Aangeraden voorkennis: Hoe een nieuwe kernel wordt ingesteld, gebouwd en geďnstalleerd (). Inleiding Om printers onder &os; te kunnen gebruiken moeten ze kunnen werken met het Berkeley lijnafdrukwachtrijsysteem, ook wel bekend als het wachtrijsysteem LPD of simpelweg LPD. Dit is het standaard afdruksysteem onder &os;. Dit hoofdstuk introduceert LPD en begeleidt bij het instellen. Als de gebruiker al bekend is met LPD of een ander afdrukwachtrijsysteem, dan kan verder worden lezen vanaf Standaardinstallatie. LPD regelt alles met betrekking tot de printer van een host. Het is verantwoordelijk voor een aantal zaken: Het regelt de toegang tot aangesloten printers en printers die op andere hosts op het netwerk zijn aangesloten; - afdrukopdrachten - Het geeft gebruikers de mogelijkheid bestanden aan te bieden die afgedrukt moeten worden; deze aangeboden bestanden - worden afdrukopdrachten genoemd; + worden afdrukopdrachtenafdrukopdrachten genoemd; Het voorkomt dat gebruikers tegelijkertijd een printer benaderen door een wachtrij bij te houden voor elke printer; Het kan voorbladen afdrukken (in het Engels ook wel bekend als banner, of burst pagina's) zodat gebruikers hun afdruk tussen andere afdrukken makkelijk terug kunnen vinden; Het handelt de communicatie af voor printers die op een seriële poort zijn aangesloten; Het kan afdrukopdrachten over een netwerk versturen naar een LPD wachtrij op een andere host; Het kan speciale filters aanroepen die afdrukopdrachten converteren voor verschillende printertalen of afdrukmogelijkheden; Het houdt statistieken bij van het printergebruik. Middels een instellingenbestand (/etc/printcap) en door speciale filters beschikbaar te stellen, kan het LPD systeem alle, of enkele van bovenstaande taken uitvoeren op een grote verscheidenheid aan afdrukhardware. Waarom het wachtrijsysteem gebruikt zou moeten worden Het wachtrijsysteem biedt nog steeds voordelen op een systeem met een enkele gebruiker en dient gebruikt te worden omdat: LPD afdrukopdrachten in de achtergrond afhandelt. Dan is het niet nodig te wachten tot de gegevens naar de printer zijn verzonden; - &tex; - LPD op eenvoudige wijze een afdrukopdracht door een filter kan afdrukken om kopteksten met datum/tijd toe te voegen of een speciaal - bestandsformaat (zoals een &tex; DVI-bestand) om te zetten + bestandsformaat (zoals een &tex;&tex; DVI-bestand) om te zetten naar een formaat dat de printer begrijpt. Deze handelingen hoeven dan niet handmatig uitgevoerd te worden; Veel gratis en commerciële software met een afdrukfunctie verwacht dat er een wachtrijsysteem aanwezig is op een systeem om afdrukopdrachten naar te sturen. Door een wachtrijsysteem op te zetten, wordt toekomstig te installeren of reeds geďstalleerde software op eenvoudige wijze ondersteund. Standaardinstallatie Om printers met het LPD wachtrijsysteem te kunnen gebruiken, dienen zowel de printerhardware als de LPD software geďnstalleerd te worden. Dit document beschrijft deze installatie in twee stappen: In het onderdeel Eenvoudige printerinstallatie staat hoe een printer moet worden aangesloten, hoe LPD er mee kan communiceren en hoe tekstbestanden afgedrukt kunnen worden. In Geavanceerde printerinstallatie staat beschreven hoe een scala aan bestandsformaten afgedrukt kan worden, hoe voorbladen kunnen worden afgedrukt en hoe statistieken van de printer kunnen worden bijgehouden. Eenvoudige printerinstallatie Nu wordt toegelicht hoe de printerhardware en de LPD software ingesteld moeten worden om een printer te kunnen gebruiken. Het behandelt de basis: Hardware-instellingen geeft een aantal aanwijzingen voor het aansluiten van een printer op een poort van een computer. Software-instellingen toont hoe het instellingenbestand (/etc/printcap) voor het LPD-systeem moet worden opgezet. Hoe een printer geďnstalleerd moet worden die via een netwerkprotocol gegevens ontvangt, in plaats van een seriële of parallelle poort, staat in Printers met netwerkinterfaces. Hoewel dit onderdeel Eenvoudige printerinstallatie heet, is het redelijk complex. De printer met de computer en het LPD-systeem laten samenwerken is het moeilijkste. De geavanceerde opties, zoals voorbladen en statistieken, zijn relatief makkelijk als de printer eenmaal werkt. Hardware-instellingen Hier worden de verschillende manieren waarop een printer op een computer kan worden aangesloten beschreven. Het bespreekt de soorten poorten en kabels en de kernelinstellingen die nodig kunnen zijn om &os; met een printer te laten communiceren. Als een printer al is aangesloten en succesvol is gebruikt onder een ander besturingssysteem, dan kan waarschijnlijk verder gelezen worden in Software-instellingen. Poorten en kabels De printers die tegenwoordig voor PC's verkocht worden hebben eigenlijk altijd een van de volgende drie poorten: - - printers - - serieel - - - Seriële poort, ook + Seriëleprintersserieel poort, ook bekend als RS-232- of COM-poorten, gebruiken een seriële poort op een computer om gegevens naar een printer te sturen. Seriële poorten zijn heel gebruikelijk in de computerindustrie en kabels zijn eenvoudig verkrijgbaar en makkelijk te maken. Seriële poorten hebben soms speciale kabels nodig en vereisen soms het instellen van ingewikkelde communicatieparameters. De meeste seriële poorten hebben een maximale doorvoersnelheid van 115.200 bps waardoor het afdrukken van grote grafische afdrukopdrachten erg onpraktisch wordt. - - printers - - parallel - - - Parallelle poorten + Parallelleprintersparallel poorten gebruiken een parallelle poort op een computer om gegevens naar een printer te sturen. Parallelle poorten zijn gebruikelijk in de PC-markt en zijn sneller dan RS-232 serieel. Kabels zijn goed verkrijgbaar, maar moeilijker handmatig te vervaardigen. Meestal zijn er geen communicatieparameters bij parallelle poorten, wat het instellen erg eenvoudig maakt. - - centronics - - parallelle printers - - Parallelle poorten staan ook wel bekend als - Centronics poorten, genoemd naar het + Centronicscentronicsparallelle printers poorten, genoemd naar het soort aansluiting op de printer. - - printers - - USB - - - USB poorten, genoemd naar de Universal Serial + USBprintersUSB poorten, genoemd naar de Universal Serial Bus, kunnen zelfs op nog hogere snelheid werken dan parallelle of RS-232 seriële poorten. De kabels zijn eenvoudig en goedkoop. USB is voor afdrukken superieur aan RS-232 Serieel en Parallel, maar wordt op &unix;-systemen niet altijd goed ondersteund. Een van de manieren om dit te omzeilen is de aanschaf van een printer met zowel een USB als een parallelle poort, zoals veel printers die hebben. Over het algemeen kunnen parallelle poorten meestal in één richting communiceren (van computer naar printer), terwijl seriële en USB poorten in twee richtingen kunnen communiceren. Nieuwere parallelle poorten (EPP en ECP) en printers kunnen onder &os; in beide richtingen communiceren, mits een IEEE-1284 gekeurde kabel wordt gebruikt. &postscript; Tweewegcommunicatie met een printer over een parallelle poort verloopt meestal op een van de volgende twee manieren. De eerste manier is door gebruik te maken van een op maat gemaakt stuurprogramma voor &os; dat de taal spreekt die door de printer wordt gebruikt. Dit geldt meestal voor inkjet printers en er kan dan gebruikt gemaakt worden van rapportagemogelijkheden over bijvoorbeeld inktniveaus en andere statusinformatie. De tweede methode wordt gebruikt als een printer &postscript; ondersteunt. &postscript;-taken zijn eigenlijk programma's die naar de printer worden gestuurd. Het hoeft zelfs niet in een afdruk te resulteren; het resultaat van de opdracht kan direct weer naar de computer worden gestuurd. &postscript; gebruikt ook tweewegcommunicatie om een computer op de hoogte te stellen van opgetreden fouten, zoals fouten in het &postscript;-programma of vastgelopen papier. Gebruikers kunnen dit soort informatie handig vinden. De beste manier om bij een &postscript;-printer effectief bij te houden wat het printergebruik is, vraagt om tweewegcommunicatie: de printer wordt gevraagd om het totaal aantal afgedrukt pagina's, de afdrukopdracht wordt verzonden en vervolgens wordt nogmaals om het totaal aantal afgedrukte pagina's gevraagd. Het verschil van deze getallen geeft het aantal afgedrukte pagina's van de afdrukopdracht van de betreffende gebruiker. Parallelle poorten Om een printer met een parallelle poort aan te sluiten, moet een Centronics kabel de printer met de computer verbinden. De instructies die geleverd zijn bij de printer, de computer of beide, moeten voldoende zijn om dit te verduidelijken. Onthoud op welke parallelle poort de printer is aangesloten. De eerste parallelle poort heet onder &os; ppc0, de tweede ppc1, enzovoort. De benaming voor de printer gaat analoog: /dev/lpt0 voor de printer op de eerste parallelle poort enzovoort. Seriële poorten Gebruik de juiste seriële kabel om een printer met een seriële poort op een computer aan te sluiten. De instructies die geleverd zijn bij de printer, de computer of beide, moeten voldoende zijn om dit te verduidelijken. Als onduidelijk is wat de juiste seriële kabel is, kan een van onderstaande opties geprobeerd worden: Een modemkabel verbindt elke pin van de stekker aan het ene eind direct met de corresponderende pin van de stekker aan het andere eind. Dit type kabel heet ook wel een DTE-naar-DCE-kabel. - null-modem kabel - - Een null-modem kabel verbindt + Een null-modemnull-modem kabel kabel verbindt enkele pinnetjes direct, verwisselt andere (bijvoorbeeld van verstuur gegevens naar ontvang gegevens) en sluit sommige draden kort in de stekker. Dit type kabel heet ook wel een DTE-to-DTE-kabel. Een seriële printerkabel, nodig bij sommige ongebruikelijke printers, is als een null-modem kabel, maar stuurt sommige signalen naar hun tegenhangers in plaats van ze intern kort te sluiten. baud rate pariteit flow-control protocol Het is ook nodig de communicatieparameters voor de printer in te stellen, meestal via het bedieningspaneel of middels DIP-schakelaars op de printer. Selecteer de hoogste bps (bits per seconde, soms baud) die zowel door de computer als de printer wordt ondersteund. Kies 7 of 8 data bits. Geen, even of oneven pariteit en 1 of 2 stop bits. Selecteer ook het flow-control protocol: ofwel geen, ofwel XON/XOFF (ook bekend als in-band of software) flow-control. Onthoud deze instellingen voor de hier op volgende software-instellingen. Software-instellingen Nu wordt beschreven welke software-instellingen nodig zijn om onder &os; af te drukken met behulp van het wachtrijsysteem LPD. Een overzicht van de te doorlopen stappen: Maak, indien nodig, de kernel geschikt voor de poort die door de printer wordt gebruikt. In Kernelinstellingen is te lezen hoe dit gedaan kan worden. Stel de communicatievorm voor de parallelle poort in, als gebruik wordt gemaakt van een parallelle printer. In Communicatietype instellen voor een parallelle poort staan de details. Test of het besturingssysteem gegevens naar de printer kan sturen. In Printercommunicatie controleren staat een aantal suggesties. Stel LPD in voor de printer door /etc/printcap aan te passen. Dat wordt later in het hoofdstuk beschreven. Kernelinstellingen Het besturingssysteem is gecompileerd om met een beperkte verzameling apparaten te kunnen werken. De seriële en parallelle poorten zijn onderdeel van deze verzameling. Daarom kan het nodig zijn om ondersteuning voor een extra seriële of parallelle poort toe te voegen als een kernel hier nog niet voor is ingesteld. Om te achterhalen of de huidige kernel een seriële poort ondersteunt: &prompt.root; grep sioN /var/run/dmesg.boot Hier is N het aantal seriële poorten, beginnende bij nul. Als de uitvoer op het volgende lijkt, dan wordt de poort door de kernel ondersteund: sio2 at port 0x3e8-0x3ef irq 5 on isa sio2: type 16550A Om te achterhalen of de kernel een parallelle poort ondersteunt: &prompt.root; grep ppcN /var/run/dmesg.boot Hier is N het aantal parallelle poorten beginnende bij nul. Als de uitvoer er ongeveer als volgt uit ziet, dan wordt de poort door de kernel ondersteund: ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode ppc0: FIFO with 16/16/8 bytes threshold Het kan nodig zijn een kernel aan te passen om het besturingssysteem in staat te stellen een parallelle of seriële poort die voor een printer wordt gebruikt te herkennen en te gebruiken. In het onderdeel over kernelinstellingen staat meer informatie om ondersteuning voor een seriële poort toe te voegen. Lees de betreffende en de volgende sectie om ondersteuning voor een parallelle poort toe te voegen. Communicatietype instellen voor een parallelle poort Wanneer een parallelle poort wordt gebruikt, kan worden aangegeven of &os; voor de printer interrupt-gestuurde of polled communicatie moet gebruiken. Het generieke printerapparaatstuurprogramma (&man.lpt.4;) onder &os; gebruikt het systeem &man.ppbus.4;. Dit bestuurt de chipset van de poort met het stuurprogramma &man.ppc.4;. De interrupt-gestuurde methode is standaard in de GENERIC kernel. In dit geval gebruikt het besturingssysteem een IRQ om te bepalen of de printer klaar is om gegevens te ontvangen. Bij de polled methode vraagt het besturingssysteem met vaste intervallen aan de printer of deze klaar is om gegevens te ontvangen. Als de printer antwoordt met klaar, stuurt de kernel meer gegevens. De interrupt-gestuurde methode is meestal iets sneller, maar gebruikt een kostbaar IRQ-nummer. Van sommige HP printers wordt beweerd dat ze niet goed werken in interruptmodus, schijnbaar door een (nog niet begrepen) timing-probleem. Deze printers moeten gebruik maken van de polled methode. Gebruik de methode die werkt. Sommige printers werken met beide methodes, maar zijn tergend langzaam in de interrupt modus. Het communicatietype kan op twee manieren worden ingesteld: door de kernel in te stellen of door gebruik te maken van &man.lptcontrol.8;. Het communicatietype instellen door de kernel aan te passen: Pas het kernelinstellingenbestand aan. Zoek naar een ppc0 ingang. Gebruik ppc1 voor het opzetten van een tweede parallelle poort. Gebruik ppc2 voor de derde poort, enzovoort. Als u gebruik wilt maken van de interrupt gestuurde modus, bewerk dan de regel hieronder: hint.ppc.0.irq="N" Het kernelinstellingenbestand moet ook het stuurprogramma &man.ppc.4; bevatten: device ppc Om gebruik te maken van polled modus verwijder dan het volgende regel uit /boot/device.hints: hint.ppc.0.irq="N" In sommige gevallen is het onder &os; niet voldoende om een poort in polled modus te zetten. In veel gevallen komt dat door het stuurprogramma &man.acpi.4;. Dit is in staat om apparaten te testen en aan te sluiten en kan zodoende het communicatietype van de printer wijzigen. Raadpleeg de instellingen voor &man.acpi.4; om dit probleem te verhelpen. Sla het bestand op. Maak en installeer de nieuwe kernel en herstart de computer. In De &os;-kernel instellen staan meer details. Communicatietype instellen met &man.lptcontrol.8;: Typ: &prompt.root; lptcontrol /dev/lptN om lptN op interrupt-gestuurde modus in te stellen. Typ: &prompt.root; lptcontrol /dev/lptN om lptN op polled modus in te stellen. &prompt.root; lptcontrol -p -d /dev/lptN Zet deze commando's in het bestand /etc/rc.local zodat het communicatietype juist wordt ingesteld bij het opstarten. In &man.lptcontrol.8; staat meer informatie. Printercommunicatie controleren Voor het instellen van het wachtrijsysteem, is het verstandig te controleren of het besturingssysteem gegevens naar een printer kan versturen. Het is een stuk makkelijker om problemen met printercommunicatie en het wachtrijsysteem apart op te lossen. De printer wordt getest door er tekst naar toe te sturen. Voor printers die direct tekens kunnen afdrukken is het programma &man.lptest.1; handig: het genereert alle 96 afdrukbare ASCII-tekens op 96 regels. &postscript; Voor &postscript; (of andere op taal gebaseerde) printers, is een meer geavanceerde test nodig. Een eenvoudig &postscript;-programma zoals het volgende volstaat: %!PS 100 100 moveto 300 300 lineto stroke 310 310 moveto /Helvetica findfont 12 scalefont setfont (Werkt dit?) show showpage Bovenstaande &postscript;-code kan in een bestand worden opgeslagen en in de voorbeelden in de volgende paragrafen gebruikt worden. PCL Als in dit document wordt gesproken over een printertaal, wordt uitgegaan van een taal als &postscript; en niet PCL van HP. Hoewel PCL zeer functioneel is, kan het direct platte tekst afdrukken door gebruik te maken van escape-tekens. &postscript; kan niet direct platte tekst afdrukken. Voor dat soort printertalen zijn speciale aanpassingen nodig. Parallelle printer controleren printers parallel In deze sectie wordt beschreven hoe te controleren of &os; kan communiceren met een printer die op een parallelle poort is aangesloten. Voer de volgende stappen uit om een printer op een parallelle poort te testen: &man.su.1; naar root. Stuur gegevens naar de printer. Gebruik &man.lptest.1; als de printer platte tekst af kan drukken: &prompt.root; lptest > /dev/lptN Hier is N het nummer van de parallelle poort, beginnende bij nul. Als de printer &postscript; of een andere printertaal begrijpt, stuur dan een klein programma naar de printer: &prompt.root; cat > /dev/lptN Geef het programma regel voor regel heel nauwkeurig in. Een regel kan niet worden gewijzigd als er op RETURN of ENTER is gedrukt. Geef na het afronden van de invoer voor het programma het einde-van-invoer-teken. Dit is meestal CONTROL+D. Het programma kan ook in een bestand worden opgeslagen: &prompt.root; cat bestand > /dev/lptN Hier is bestand de naam van het bestand waarin het programma is opgeslagen dat naar een printer gestuurd kan worden. Nu moet er iets worden afgedrukt. Tekst die er niet goed uitziet is geen probleem. Dit wordt later gerepareerd. Seriële printer controleren printers serieel In deze sectie wordt beschreven hoe te controleren of &os; kan communiceren met een printer die op een seriële poort is aangesloten. Voer de volgende stappen uit om een printer op de seriële poort te testen: &man.su.1; naar root. Voeg de volgende regel toe aan /etc/remote: printer:dv=/dev/poort:br#bps-snelheid:pa=pariteit bits-per-seconde seriële poort pariteit Hier is poort de apparaatingave voor de seriële poort (ttyu0, ttyu1, enzovoort), bps-snelheid is het aantal bits per seconde waarop de printer communiceert en pariteit is de pariteit die door de printer wordt vereist (even, odd, none of zero). Hier volgt een voorbeeldregel voor een printer verbonden met een seriële lijn op de derde seriële poort op 19200 bps, zonder pariteit: printer:dv=/dev/ttyu2:br#19200:pa=none Maak verbinding met de printer met &man.tip.1;: &prompt.root; tip printer Als dit niet werkt, pas dan /etc/remote opnieuw aan en probeer gebruik te maken van /dev/cuaaN in plaats van /dev/ttyuN. Stuur gegevens naar de printer. Gebruik &man.lptest.1; als de printer platte tekst af kan drukken: &prompt.user; $lptest Als de printer &postscript; of een andere printertaal begrijpt, stuur dan een klein programma naar de printer. Geef het programma regel voor regel heel nauwkeurig in. Backspace of andere speciale toetsen kunnen een speciale betekenis hebben voor de printer. Het kan ook nodig zijn een speciaal einde-van-invoer-teken te geven zodat de printer weet dat het gehele programma ontvangen is. Druk voor &postscript;-printers CONTROL+D. Het programma kan ook in een bestand worden opgeslagen: &prompt.user; >bestand Hier is bestand de naam van het bestand waarin het programma is opgeslagen. Nadat &man.tip.1; het bestand heeft verstuurd kan het juiste einde-van-invoer-teken ingegeven worden. Nu moet er iets worden afgedrukt. Tekst die er niet goed uitziet is geen probleem. Dit wordt later gerepareerd. De wachtrij aanzetten: <filename>/etc/printcap</filename> Op dit punt moet de printer zijn aangesloten, de kernel ingesteld zijn om met de printer te communiceren (indien nodig) en is het mogelijk eenvoudige gegevens naar de printer te sturen. Nu kan LPD ingesteld worden zodat de toegang tot de printer wordt geregeld. LPD wordt ingesteld door het bestand /etc/printcap aan te passen. Het wachtrijsysteem LPD leest dit bestand iedere keer dat het systeem wordt aangeroepen zodat wijzigingen direct van toepassing zijn. printers mogelijkheden De opmaak van het bestand &man.printcap.5; is voor de hand liggend. Met een willekeurige tekstverwerker kunnen wijzigen in /etc/printcap aangebracht worden. De opmaak is identiek aan die van andere bestanden die voor dergelijke instellingen worden gebruik, zoals /usr/share/misc/termcap en /etc/remote. In &man.cgetent.3; staat een uitgebreid overzicht van dit formaat. De vereenvoudigde instellingen bestaan uit de volgende stappen: Kies een naam (en een paar handige aliassen) voor de printer en voeg ze toe aan /etc/printcap. In Printernaamgeving staat meer informatie over het toekennen van een naam aan een printer. - voorbladen - - Het afdrukken van voorbladen (standaard) kan uitgezet + Het afdrukken van voorbladenvoorbladen (standaard) kan uitgezet worden met de optie sh. In Voorbladen onderdrukken staat meer informatie. Maak een wachtrijmap aan en specificeer de locatie door middel van de optie sd. In Wachtrijmap aanmaken staat meer informatie. Bepaal welke ingave in /dev voor de printer wordt gebruikt en geef dit in /etc/printcap aan door gebruik te maken van de optie lp. In Printerapparaat identificeren staat meer informatie. Als de printer is aangesloten op een seriële poort moeten de communicatieparameters worden ingesteld met de optie ms#. Dit wordt beschreven in Communicatieparameters voor het wachtrijsysteem instellen. Installeer een filter voor platte tekst. In Tekstfilter installeren staan details. Test de instellingen door iets met &man.lpr.1; af te drukken. Details staan in Printer uitproberen en Problemen oplossen. Op taal gebaseerde printers, zoals &postscript;-printers, kunnen niet direct platte tekst afdrukken. De vereenvoudigde instellingen, zoals hierboven beschreven en hieronder verder beschreven, gaan er van uit dat alleen bestanden naar een printer worden gestuurd die de printer begrijpt. Gebruikers verwachten vaak dat ze platte tekst naar printers op een systeem kunnen sturen. Programma's die LPD gebruiken om af te drukken gaan hier ook vaak van uit. Als een dergelijke printer wordt geďnstalleerd en het moet mogelijk zijn zowel afdrukopdrachten in de printertaal als in platte tekst naar een printer te sturen, dan is het zeer aan te raden een extra stap in deze vereenvoudigde opzet in te voegen: installeer een conversieprogramma dat automatisch platte tekst omzet in &postscript; (of een andere printertaal). In Platte tekst op &postscript;-printers afdrukken staat hoe dit in zijn werk gaat. Printernaamgeving De eerste (makkelijke) stap is het kiezen van een naam voor een printer. Het maakt niet uit of een naam functioneel of grappig is, aangezien ook een aantal aliassen aan een printer toegekend kunnen worden. Ten minste één van de printers die in /etc/printcap worden genoemd moet het alias lp hebben. Dit is de standaardnaam voor de printer. Als gebruikers de omgevingsvariabele PRINTER niet ingesteld hebben en ook geen printernaam specificeren als ze LPD gebruiken, dan wordt standaard de printer lp gebruikt. Het is verder gebruikelijk om het laatste alias zo te kiezen dat het een volledige beschrijving van de printer is, inclusief merk en model. Als een naam en een aantal aliassen zijn gekozen, kunnen ze aan /etc/printcap worden toegevoegd. De naam van een printer wordt in de meest linker kolom geplaatst. Scheid ieder alias met een verticale streep en plaats een dubbele punt achter het laatste alias. In het volgende voorbeeld is de beginsituatie een uitgekleed /etc/printcap waarin twee printers worden gedefinieerd (een Diablo 630 lijnprinter en een Panasonic KX-P4455 &postscript;-laserprinter): # # /etc/printcap voor host rose # rattan|line|diablo|lp|Diablo 630 Line Printer: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4: In dit voorbeeld heet de eerste printer rattan en heeft de volgende aliassen: line, diablo, lp en Diablo 630 Line Printer. Omdat deze printer het alias lp heeft, is het de standaard printer. De tweede printer heet bamboo en heeft de aliassen ps, PS, S, panasonic en Panasonic KX-P4455 PostScript v51.4. Voorbladen onderdrukken afdrukken voorbladen Het wachtrijsysteem LPD drukt standaard een voorblad af voor elke afdrukopdracht. Het voorblad bevat de gebruikersnaam van de gebruiker die de afdrukopdracht gaf, de computer waar de opdracht is gegeven en, in mooie grote letters, de naam van de afdrukopdracht. Het nadeel hiervan is dat al deze extra tekst het debuggen van de eenvoudige printerinstallatie bemoeilijkt. Daarom wordt het afdrukken van voorbladen onderdrukt. Om voorbladen te onderdrukken, wordt de optie sh toegevoegd voor de relevante printer in /etc/printcap. Hieronder staat een voorbeeld van /etc/printcap met de optie sh: # # /etc/printcap voor host rose - nergens worden voorbladen afgedrukt # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh: Het juiste formaat is gebruikt: de eerste regel begint in de meest linker kolom, volgende regels springen in. Elke regel eindigt met een backslash, behalve de laatste. Wachtrijmap aanmaken printer wachtrij afdrukopdrachten De volgende stap in deze eenvoudige opzet is het aanmaken van een wachtrijmap. Dit is een map waar afdrukopdrachten geplaatst worden totdat ze worden afgedrukt. Ook wordt er een aantal bestanden geplaatst die nodig zijn voor het functioneren van het wachtrijsysteem. Vanwege het veranderlijke karakter van wachtrijmappen is het gebruikelijk om deze mappen onder /var/spool te plaatsen. Het is niet nodig om een reservekopie van de inhoud van deze mappen te maken. Ze kunnen eenvoudigweg opnieuw worden aangemaakt met &man.mkdir.1;. Het is ook gebruikelijk om de naam van de map overeen te laten komen met die van de printer, zoals onder is weergegeven: &prompt.root; mkdir /var/spool/printernaam Als er veel printers zijn aangesloten op een netwerk, is het beter de wachtrijmappen aan te maken in een enkele map die speciaal wordt gebruikt voor afdrukken met LPD. In dit voorbeeld wordt dat gedaan voor de printers rattan en bamboo: &prompt.root; mkdir /var/spool/lpd &prompt.root; mkdir /var/spool/lpd/rattan &prompt.root; mkdir /var/spool/lpd/bamboo Als de afdrukopdrachten privé moeten blijven, dan is het belangrijk de wachtrijmap niet algemeen toegankelijk te maken. Wachtrijmappen moeten eigendom zijn van gebruiker daemon en groep daemon. Uitsluitend deze gebruiker en groep moeten de map kunnen lezen, schrijven en doorzoeken. We doen dit voor onze voorbeeldprinters: &prompt.root; chown daemon:daemon /var/spool/lpd/rattan &prompt.root; chown daemon:daemon /var/spool/lpd/bamboo &prompt.root; chmod 770 /var/spool/lpd/rattan &prompt.root; chmod 770 /var/spool/lpd/bamboo Tenslotte moet LPD verteld worden dat deze mappen bestaan. Dit kan met het bestand /etc/printcap. De locatie van de wachtrijmap wordt opgegeven met de optie sd: # # /etc/printcap voor host rose - wachtrijmappen toegevoegd # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo: De naam van de printer staat in de eerste kolom, maar alle andere regels die de printer beschrijven worden ingesprongen en elke regel eindigt met een backslash. Als geen wachtrijmap wordt opgegeven met sd, dan wordt standaard /var/spool/lpd gebruikt. Printerapparaat identificeren In de sectie Hardware-instellingen is bepaald welke poort en ingang in de map /dev door &os; worden gebruikt om met een printer te communiceren. Nu moet LPD dit ook weten. Als het wachtrijsysteem een afdrukopdracht krijgt, opent het het relevante apparaat namens het filterprogramma (dat verantwoordelijk is voor het sturen van gegevens naar een printer). Geef de locatie van de ingang in /dev op in /etc/printcap door gebruik te maken van de optie lp. In het huidige voorbeeld wordt aangenomen dat rattan op de eerste parallelle poort is aangesloten en bamboo op de zesde seriële poort. Hier volgen de toevoegingen voor /etc/printcap: # # /etc/printcap voor host rose - bepaald welke apparaten te gebruiken # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyu5: Als voor een printer de optie lp niet wordt gebruikt in /etc/printcap, dan gebruikt LPD standaard /dev/lp. Momenteel bestaat /dev/lp niet in &os;. Als de te installeren printer is aangesloten op een parallelle poort, dan staan verdere instructies in Tekstfilter installeren. In andere gevallen kunnen de instructies in de volgende paragraaf gevold worden. Communicatieparameters voor het wachtrijsysteem instellen printers serieel Voor printers die zijn aangesloten op een seriële poort kan LPD de bps-snelheid, pariteit en andere seriële communicatie parameters instellen voor het filterprogramma dat gegevens naar een printer stuurt. Dit is gunstig omdat: De verschillende communicatieparameters uitgeprobeerd kunnen worden door /etc/printcap aan te passen. Het is niet nodig het filterprogramma opnieuw te compileren; Het wachtrijsysteem kan hetzelfde filter gebruiken voor verschillende printers die mogelijk verschillende seriële communicatie-instellingen hebben. Met de volgende opties in /etc/printcap kunnen seriële communicatieparameters worden ingesteld voor het apparaat waar lp naar verwijst: br#bps-snelheid Stelt de communicatiesnelheid van het apparaat in op bps-snelheid, waarbij bps-snelheid de waarde 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600 of 115200 bits-per-seconde kan aannemen. ms#stty-modus Bepaalt de opties voor het geval het printerapparaat een terminal is. In &man.stty.1; staat uitleg over de beschikbare opties. Als LPD het apparaat opent dat met lp is opgegeven, worden de eigenschappen van het apparaat bepaald door de optie ms#. Met name van belang zijn de modi parenb, parodd, cs5, cs6, cs7, cs8, cstopb, crtscts en ixon. Deze worden uitgelegd in &man.stty.1;. Nu wordt de voorbeeldprinter op de zesde seriële poort aangepast. De bps-snelheid wordt ingesteld op 38400. Als modus wordt gekozen: geen pariteit met -parenb, 8-bit tekens met cs8, geen modemcontrole met clocal en hardware flow-control met crtscts: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts: Tekstfilter installeren afdrukken filters Nu kan LPD verteld worden welke tekstfilters gebruikt moeten worden bij het versturen van afdrukopdrachten. Een tekstfilter is een programma dat LPD aanroept als het een afdrukopdracht krijgt. Wanneer LPD het tekstfilter aanroept, wordt de standaard invoer van het filter gekoppeld aan de afdrukopdracht en de standaard uitvoer aan het printerapparaat dat door de optie lp is opgegeven. Er wordt aangenomen dat het filter van standaard invoer leest, vervolgens de nodige handelingen uitvoert en het resultaat naar de standaard uitvoer schrijft, zodat het afgedrukt wordt. In Filters staat meer informatie over het tekstfilter. Voor deze eenvoudige printerinstallatie kan het tekstfilter een klein shellscript zijn dat /bin/cat aanroept om de afdrukopdracht naar de printer te sturen. &os; wordt geleverd met een ander filter, lpf, dat backspaces en onderlijnde tekst afhandelt voor printers die hier niet mee overweg kunnen. Natuurlijk kan elk filter gebruikt worden dat gewenst is. Het filter lpf wordt uitgebreid beschreven in lpf: een tekstfilter. Nu wordt eerst het shellscript /usr/local/libexec/if-simple gemaakt dat als simpel tekstfilter dient. Plaats de volgende tekst in het bestand met een tekstverwerker naar keuze: #!/bin/sh # # if-simple - Eenvoudig tekstfilter voor lpd # Geďnstalleerd in /usr/local/libexec/if-simple # # Kopieert eenvoudigweg stdin naar stdout. # Filterargumenten worden genegeerd. /bin/cat && exit 0 exit 2 Zorg dat het bestand uitvoerbaar is: &prompt.root; chmod 555 /usr/local/libexec/if-simple Zorg dat LPD het filter gebruikt door dit aan te geven met de optie if in /etc/printcap. Nu volgt hoe dit te doen voor de twee printers uit het voorbeeld: # # /etc/printcap voor host rose - met tekstfilter # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:\ :if=/usr/local/libexec/if-simple: Een kopie van het script if-simple staat in de map /usr/share/examples/printing. <application>LPD</application> aanzetten &man.lpd.8; wordt gestart vanuit /etc/rc door de variabele lpd_enable. Standaard staat deze variabele op NO. Als dit nog niet is gedaan, voeg dan de volgende regel toe aan /etc/rc.conf en herstart de computer: lpd_enable="YES" Of voer het commando &man.lpd.8; uit: &prompt.root; lpd Printer uitproberen Nu volgt het laatste onderdeel van de eenvoudige LPD installatie. Helaas zijn felicitaties nog niet gepast. De printer moet worden getest en eventuele problemen moeten worden opgelost. Om de installatie te testen kan iets afgedrukt worden. Afdrukken gaat met het commando &man.lpr.1;. Dit stuurt een opdracht naar een printer. Het programma &man.lpr.1; is te combineren met het programma &man.lptest.1; uit Printercommunicatie controleren om tekst te genereren. Om de eenvoudige installatie van LPD te testen: &prompt.root; lptest 20 5 | lpr printernaam Hier is printernaam de naam van een printer (of een alias) die in /etc/printcap wordt genoemd. De standaard printer kan worden getest door bij het aanroepen van &man.lpr.1; de optie weg te laten. Nogmaals: test een &postscript;-printer door een &postscript;-programma naar een printer te sturen en maak geen gebruik van &man.lptest.1;. Dit kan door het programma in een bestand op te slaan en de volgende commandoregel uit te voeren: lpr bestand. Voor een &postscript;-printer moet het resultaat van het programma verschijnen. Als gebruik wordt gemaakt van &man.lptest.1; ziet het resultaat er ongeveer zo uit: !"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 #$%&'()*+,-./0123456 $%&'()*+,-./01234567 %&'()*+,-./012345678 Om de printer uitvoeriger te testen kunnen grotere programma's geprobeerd worden (voor taalgebaseerde printers) of kan &man.lptest.1; aangeroepen worden met andere argumenten. Bijvoorbeeld: lptest 80 60, drukt 60 regels af met elk 80 karakters. Als de printer niet werkt, lees dan verder in Problemen oplossen. Geavanceerde printerinstallatie Deze sectie behandelt het gebruik van filters om speciaal opgemaakte tekst en voorbladen af te drukken, via het netwerk af te drukken en printergebruik te beperken en statistieken bij te houden. Filters afdrukken filters Hoewel LPD veel van het afdrukwerk afhandelt (netwerkverkeer, wachtrijafhandeling, toegangscontrole, enzovoort), wordt het echte werk door de filters gedaan. Filters zijn programma's die met een printer communiceren en inspelen op printerspecifieke eigenschappen. In de eenvoudige printeropzet is een filter geďnstalleerd voor platte tekst, een zeer eenvoudig filter dat met de meeste printers zou moeten werken (Tekstfilter installeren). Om echter gebruik te maken van formaatomzetting, printeradministratie, printerspecifieke aanpassingen, enzovoort, is het nodig te weten hoe filters werken. Uiteindelijk is het de verantwoordelijkheid van het filter om deze zaken af te handelen. Het slechte nieuws is dat de beheerder in het merendeel van de gevallen het filter moet aanleveren. Het goede nieuws is dat veel filters algemeen beschikbaar zijn en als ze dat niet zijn, zijn ze vaak makkelijk te schrijven. &os; heeft een ingebouwd filter, /usr/libexec/lpr/lpf, die met veel printers werkt die platte tekst kunnen afdrukken. Het filter regelt backspace en tabs in bestanden en administreert printergebruik, maar dat is zo'n beetje alles wat dit filter doet. Er zijn ook diverse filters en filtercomponenten in de &os; Portscollectie. Hieronder wordt het volgende beschreven: In Hoe filters werken staat een overzicht van de rol die een filter speelt in het afdrukproces. Lees dat onderdeel om een indruk te krijgen wat er onder de motorkap gebeurt als LPD filters gebruikt. Deze kennis helpt mogelijke problemen te voorkomen of op te lossen als meerdere filters worden geďnstalleerd voor printers. LPD gaat er van uit dat elke printer standaard platte tekst af kan drukken. Dit geeft problemen voor &postscript; (of andere op taal gebaseerde) printers die niet in staat zijn direct platte tekst af te drukken. In Platte tekst op &postscript;-printers afdrukken staat wat er kan worden gedaan om dit probleem te verhelpen. Lees verder in dit onderdeel als het om &postscript;-printers gaat. Voor veel programma's is &postscript; een populair uitvoerformaat. Sommige mensen schrijven &postscript; code zelfs direct. &postscript;-printers zijn echter kostbaar. In &postscript; simuleren op niet-&postscript;-printers staat hoe de tekstfilter van een printer aangepast moet worden zodat die &postscript; accepteert en afdrukt op een niet-&postscript;-printer. Dit onderdeel is van toepassing voor niet-&postscript;-printers. In Conversiefilters wordt een methode beschreven om de conversie van bepaalde bestandsformaten te automatiseren, zoals van grafische of tekstopmaakprogramma's, naar formaten die een printer kan begrijpen. Na het lezen van dit onderdeel is een beheerder in staat om een printer zodanig in te stellen dat gebruikers lpr kunnen invoeren om troff-gegevens af te drukken, lpr om &tex; DVI-gegevens af te drukken of lpr om rasterplaatjes af te drukken, enzovoorts. Het wordt aangeraden deze sectie te lezen. In Uitvoerfilters wordt een niet vaak gebruikte functionaliteit van LPD behandeld: uitvoerfilters. Tenzij voorbladen worden afgedrukt (Voorbladen), kan deze sectie waarschijnlijk overgeslagen worden. lpf: een tekstfilter beschrijft lpf, een redelijk complete, eenvoudige tekstfilter voor lijnprinters (en laserprinters die zich als lijnprinters voordoen) dat wordt geleverd bij &os;. Voor een snelle manier om printeradministratie aan de praat te krijgen voor platte tekst of voor printers waar rook uit komt bij het zien van backspace karakters, is het serieus te overwegen gebruik te maken van lpf. Een kopie van de scripts die hieronder worden beschreven, staan in de map /usr/share/examples/printing. Hoe filters werken Zoals eerder genoemd, is een filter een programma dat wordt uitgevoerd door LPD voor het afhandelen van het apparaatafhankelijke deel van de communicatie met een printer. Als LPD een bestand wil afdrukken uit een afdrukopdracht, start het een filterprogramma. Het koppelt de standaard invoer van de filter aan het af te drukken bestand, de standaard uitvoer aan de printer en de standaard foutmelding aan het logboekbestand voor foutmeldingen (zoals opgegeven via de optie lf in /etc/printcap of standaard /dev/console). troff Welk filter LPD start en de argumenten van het filter hangen af van wat er in het bestand /etc/printcap wordt opgegeven en de argumenten die de gebruiker geeft op de commandoregel van &man.lpr.1;. Als een gebruiker bijvoorbeeld lpr ingeeft, start LPD het filter troff, zoals wordt opgegeven via de optie tf voor de betreffende printer. Als een gebruiker platte tekst wilt afdrukken, dan wordt het filter if gestart (dit klopt bijna: zie Uitvoerfilters voor de details). Er zijn drie soorten filters die in /etc/printcap kunnen worden opgegeven: Het tekstfilter, dat in de LPD documentatie verwarrend genoeg input filter wordt genoemd, verwerkt het afdrukken van gewone tekst. Beschouw het als het standaardfilter. LPD verwacht dat elke printer standaard platte tekst kan afdrukken en het is de taak van het tekstfilter om er voor te zorgen dat backspaces, tabs en andere speciale karakters de printer niet in de war sturen. In een omgeving waar moet worden bijgehouden hoeveel er wordt afgedrukt, moet het tekstfilter ook administreren hoeveel pagina's er zijn afgedrukt. Dit gaat meestal door het aantal afgedrukte regels te tellen en dit te vergelijken met het aantal regels per pagina dat door de printer wordt ondersteund. Het tekstfilter wordt aangeroepen met de volgende lijst argumenten: filter-name -c -w width -l length -i indent -n login -h host acct-file met wordt gebruikt als de afdrukopdracht is gegeven met lpr width is de waarde van de optie pw (page width: paginabreedte), zoals opgegeven in /etc/printcap, standaard 132 length is de waarde van de optie pl (page length: paginalengte), standaard 66 indent geeft aan hoeveel wordt ingesprongen door lpr , standaard 0 login de gebruikersnaam van de gebruiker die de afdrukopdracht gaf host de hostnaam waar de afdrukopdracht gegeven is acct-file de naam van het administratiebestand zoals opgegeven via de optie af. - - afdrukken - - filters - - - Een conversiefilter converteert + Een conversiefilterafdrukkenfilters converteert een specifiek bestandsformaat naar een formaat dat een printer begrijpt. Bijvoorbeeld: ditroff typesettinggegevens kunnen niet direct worden afgedrukt, maar er bestaat wel een conversiefilter om ditroff-gegevens te converteren naar een formaat dat een printer kan verteren en afdrukken. Dit wordt in Conversiefilters beschreven. Conversiefilters zijn ook nodig om printergebruik te administreren, mocht dat nodig zijn. Conversiefilters worden met de volgende argumenten aangeroepen: filter-name -x pixel-width -y pixel-height -n login -h host acct-file Hier is pixel-width de waarde van de optie px (standaard 0) en pixel-height is de waarde van de optie py (standaard 0). Het uitvoerfilter wordt alleen gebruikt als er geen tekstfilter is of als er voorbladen worden afgedrukt. De ervaring leert dat uitvoerfilters zelden worden gebruikt. In sectie Uitvoerfilters worden ze beschreven. Er zijn slechts twee argumenten die aan een uitvoerfilter worden meegegeven: filter-name -w width -l length Deze zijn identiek aan de argumenten en van het tekstfilter. Filters moeten afsluiten met de volgende waarde: exit 0 Als het filter een bestand succesvol heeft afgedrukt. exit 1 Als het filter niet geslaagd is om een bestand af te drukken, maar wil dat LPD het nogmaals probeert. LPD herstart het filter als die afsluit met deze status. exit 2 Als het filter niet geslaagd is om een bestand af te drukken, maar niet wil dat LPD het nogmaals probeert. LPD verwijdert het bestand uit de wachtrij. Het tekstfilter dat bij &os; wordt geleverd, /usr/libexec/lpr/lpf, benut de argumenten voor paginabreedte en -lengte om te bepalen wanneer een nieuwe pagina moet worden begonnen en om het printergebruik bij te houden. Het gebruikt de argumenten voor login, host en administratiebestand om accountingregels aan te maken. Controleer bij het zoeken naar filters of ze LPD-compatibel zijn. Zo ja, dan ondersteunen ze de argumenten zoals hierboven beschreven. Zorg bij het zelf schrijven van filters voor algemeen gebruik dat ze dezelfde argumenten en exitcodes ondersteunen. Platte tekst op &postscript;-printers afdrukken afdrukopdrachten Als een computer en &postscript; (of andere op taal gebaseerde) printer maar één gebruiker hebben die belooft nooit platte tekst naar de printer te sturen of programma's te gebruiken die dat doen, dan is dit onderdeel overbodig. Als gebruikers zowel &postscript; als platte tekst naar een printer willen sturen, dan is het aan te raden de printerinstellingen hierop aan te passen. Hiervoor moet het tekstfilter bij elke nieuwe opdracht bepalen of het om platte tekst of &postscript; gaat. Alle &postscript;-opdrachten beginnen met %! (raadpleeg de printerhandleiding voor andere printertalen). Als dit de eerste twee karakters zijn van een opdracht is het &postscript; en kan de rest van een opdracht direct doorgestuurd worden. Is dit niet het geval, dan moet de filter de tekst omzetten in &postscript; en het resultaat afdrukken. Hoe gaat dat werken? printers serieel Voor seriële printers kan het meest eenvoudig lprps geďnstalleerd worden. lprps is een &postscript;-afdrukfilter die tweewegcommunicatie met een printer heeft. Het werkt het statusbestand van een printer bij met uitgebreide informatie afkomstig van een printer, zodat gebruikers en beheerders precies kunnen zien wat de status van een printer is (zoals: toner bijna op of papier vastgelopen). Maar belangrijker, het omvat het programma psif dat bepaalt of een binnenkomende opdracht platte tekst is en textps (dat ook geleverd wordt met lprps) om opdrachten om te zetten naar &postscript;. Vervolgens wordt een opdracht met lprps naar een printer gestuurd. lprps is onderdeel van de &os; Portscollectie (zie De Portscollectie). U kunt één van de ports print/lprps-a4 of print-lprps-letter installeren afhankelijk van de gebruikte papiermaat. Nadat lprps is geďnstalleerd moet de installatielocatie ervan aan psif worden doorgeven dat onderdeel is van lprps. Als lprps is geďnstalleerd via de Portscollectie, gebruik dan het volgende voor de seriële &postscript;-printer in /etc/printcap: :if=/usr/local/libexec/psif: Ook moet de optie rw worden opgeven, die LPD vertelt om een printer in lezen/schrijvenmodus te openen. Als een parallelle &postscript;-printer wordt ingesteld (en dus geen tweewegcommunicatie toegepast kan worden met de printer, zoals vereist door lprps), dan kan het volgende shellscript gebruikt worden als tekstfilter: #!/bin/sh # # psif - Druk &postscript; of platte tekst af op een &postscript; # printer. Script versie; NIET de versie die wordt geleverd bij lprps # Geďnstalleerd in /usr/local/libexec/psif # IFS="" read -r first_line first_two_chars=`expr "$first_line" : '\(..\)'` if [ "$first_two_chars" = "%!" ]; then # # &postscript; opdracht, afdrukken. # echo "$first_line" && cat && printf "\004" && exit 0 exit 2 else # # Platte tekst, converteren en dan afdrukken. # ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0 exit 2 fi In bovenstaand script is textps een programma dat geďnstalleerd is om platte tekst om te zetten naar &postscript;. Elk tekst-naar-&postscript; programma volstaat. De &os; Portscollectie (zie De Portscollectie) bevat een uitgebreid tekst-naar-&postscript;-programma, a2ps, dat wellicht handig is om te gebruiken. &postscript; simuleren op niet-&postscript;-printers &postscript; emuleren Ghostscript &postscript; is de facto de standaard voor op hoge kwaliteit typesetten en afdrukken. &postscript; is echter een dure standaard. Gelukkig heeft Aladdin Enterprises een gratis &postscript;-kloon, Ghostscript, die werkt onder &os;. Ghostscript kan de meeste &postscript;-bestanden lezen en de pagina's op verschillende soorten apparaten weergeven, waaronder veel niet-&postscript;-printers. Door Ghostscript te installeren en een printer gebruik te laten maken van een speciaal tekstfilter voor uw printer, kan uw niet-&postscript;-printer zich gedragen als een echte &postscript;-printer. Ghostscript is beschikbaar via de &os; Portscollectie, vele versies zijn beschikbaar, de meest gebruikte versie is print/ghostscript-gpl. Om &postscript; te simuleren moet een tekstfilter detecteren of het een &postscript;-bestand aan het afdrukken is. Zo niet, dan stuurt het filter het bestand direct naar een printer, anders gebruikt het filter Ghostscript om het bestand om te zetten naar een formaat dat door een printer wordt begrepen. Een voorbeeld: het volgende script is een tekstfilter voor Hewlett Packard DeskJet 500 printers. Voor andere printers moet het argument voor het commando gs (Ghostscript) vervangen worden. (Met gs -h wordt een lijst met apparaten getoond worden die de huidige installatie van Ghostscript ondersteunt.) #!/bin/sh # # ifhp - Druk Ghostscript-gesimuleerd &postscript; af op een DeskJet # 500. Geďnstalleerd in /usr/local/libexec/ifhp # # Behandel LF als CR+LF (om een "trapeffect" op HP/PCL # printer te voorkomen): # printf "\033&k2G" || exit 2 # # Lees de eerste twee karakters van het bestand # IFS="" read -r first_line first_two_chars=`expr "$first_line" : '\(..\)'` if [ "$first_two_chars" = "%!" ]; then # # Het is &postscript;. Gebruik Ghostscript om te converteren # en druk het af. # /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \ -sOutputFile=- - && exit 0 else # # Platte tekst of HP/PCL, dus direct afdrukken; druk een # pagina-einde af om de laatste pagina te ejecteren. # echo "$first_line" && cat && printf "\033&l0H" && exit 0 fi exit 2 Tot slot moet LPD op de hoogte gebracht worden van het filter via de optie if: :if=/usr/local/libexec/ifhp: Dat is alles. Nu kan lpr platte.tekst en lpr watdanook.ps ingevoerd worden en beiden worden juist afgedrukt. Conversiefilters Na de eenvoudige installatie, zoals beschreven in Eenvoudige printerinstallatie, te hebben voltooid, is het waarschijnlijk wenselijk om conversiefilters te installeren voor favoriete bestandsformaten (naast platte ASCII-tekst). Waarom conversiefilters installeren? &tex; DVI-bestanden afdrukken Conversiefilters maken het afdrukken van verschillende bestanden eenvoudig. Stel dat veel gebruik gemaakt wordt van het tekstverwerkingsprogramma &tex; en een &postscript; printer. Elke keer als door &tex; een DVI-bestand wordt gegenereerd, kan dat niet direct afgedrukt worden. Het DVI-bestand moet omgezet worden naar &postscript;. De te geven opdrachten zijn de volgende: &prompt.user; dvips zeewieranalyse.dvi &prompt.user; lpr zeewieranalyse.ps Na installatie van een conversiefilter voor DVI-bestanden kan deze handmatige conversie overgeslagen worden door LPD de conversie te laten uitvoeren. Elke keer als een DVI-bestand wordt afgedrukt, hoeft alleen de volgende opdracht gegeven te worden: &prompt.user; lpr zeewieranalyse.dvi LPD voert de DVI-bestandsconversie uit door te geven. In Opties voor opmaak en conversie staat een lijst van conversie-opties. Voor elke conversie-optie moet een conversiefilter geďnstalleerd worden en moet in /etc/printcap de locatie worden opgegeven. Een conversiefilter is als het tekstfilter voor de eenvoudige printerinstallatie (Tekstfilter installeren), behalve dat in plaats van platte tekst af te drukken, het conversiefilter het bestand converteert naar een formaat dat een printer begrijpt. Welke conversiefilters installeren? Installeer de conversiefilters die nodig zijn. Als veel DVI-bestanden worden afgedrukt, dan is het handig een DVI-filter te installeren. Als veel troff wordt afgedrukt, dan is het waarschijnlijk handig een troff-filter te installeren. De volgende tabel geeft een samenvatting van filters waarmee LPD kan werken, hoe ze in /etc/printcap kunnen worden aangeroepen en hoe ze met lpr kunnen worden aangeroepen: Bestandsformaat /etc/printcap optie lpr optie cifplot cf DVI df plot gf ditroff nf FORTRAN-tekst rf troff tf raster vf platte tekst if geen, , of In het voorbeeld waarbij lpr wordt gebruikt, moet voor de printer een optie df gedefinieerd staan in /etc/printcap. FORTRAN Ondanks wat anderen mogelijk beweren, zijn formaten als FORTRAN-tekst en plot waarschijnlijk verouderd. Dit biedt de mogelijkheid een nieuwe betekenis te geven aan deze opties door zelf een filter te installeren. Stel dat direct Printerleaf-bestanden afgedrukt moeten worden (bestanden van het bureaubladpublicatieprogramma Interleaf), maar nooit plotbestanden worden afgedrukt. Dan kan een Printerleaf-conversiefilter geďnstalleerd worden onder de optie gf en gebruikers kunnen geďnstrueerd worden om lpr te gebruiken om Printerleaf-bestanden af te drukken. Conversiefilters installeren Aangezien conversiefilters programma's zijn die niet onder de &os;-basisinstallatie vallen, kunnen ze het best onder /usr/local geplaatst worden. De map /usr/local/libexec is een veelgebruikte locatie, omdat hier programma's te vinden zijn die alleen door LPD gebruikt worden. Gewone gebruikers hoeven ze nooit te gebruiken. Om een conversiefilter te activeren, moet de bestandslocatie onder de juiste optie voor de betreffende printer in /etc/printcap opgegeven worden. In het onderstaande voorbeeld wordt het DVI-conversiefilter toegevoegd onder de sectie van de printer bamboo. Hieronder staat opnieuw het voorbeeldbestand /etc/printcap, nu met de nieuwe optie df voor de printer bamboo: # # /etc/printcap voor host rose - df-filter voor bamboo toegevoegd # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf: Het DVI-filter is een shellscript met de naam /usr/local/libexec/psdf. Het script ziet er als volgt uit: #!/bin/sh # # psdf - DVI naar PostScript afdrukfilter # Geďnstalleerd in /usr/local/libexec/psdf # # Aangeroepen door lpd wanneer een gebruiker lpr -d uitvoert # exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@" Dit script roept dvips in filtermodus aan (het argument) op de standaard uitvoer, de af te drukken opdracht. Vervolgens start het &postscript; afdrukfilter lprps (zie Platte tekst op &postscript;-printers afdrukken) met de argumenten die LPD aan het script doorgeeft. lprps gebruikt deze argumenten om de afgedrukte pagina's te administreren. Meer voorbeelden van conversiefilters Er is geen vaste procedure om conversiefilters te installeren, er worden in deze sectie wat werkende voorbeelden gegeven. Gebruik deze als hulp bij het zelf maken van filters. Gebruik ze zonder aanpassingen indien mogelijk. Dit voorbeeldscript is een raster (eigenlijk een GIF-bestand) conversiefilter voor een HP LaserJet III-Si printer: #!/bin/sh # # hpvf - Converteer GIF-bestanden naar HP/PCL, druk vervolgens af # Geďnstalleerd in /usr/local/libexec/hpvf PATH=/usr/X11R6/bin:$PATH; export PATH giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \ && exit 0 \ || exit 2 Het script converteert achtereenvolgens het GIF-bestand naar een PNM-bestand (portable anymap), een PGM-bestand (portable graymap), een PBM-bestand (portable bitmap) en tenslotte naar LaserJet/PCL formaat. Een /etc/printcap bestand dat bovenstaand filter gebruikt ziet er als volgt uit: # # /etc/printcap voor host orchid # teak|hp|laserjet|HP LaserJet 3Si:\ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif:\ :vf=/usr/local/libexec/hpvf: Het volgende script is een conversiefilter voor troff-gegevens afkomstig van het groff-typesettingsysteem voor de &postscript;-printer bamboo: #!/bin/sh # # pstf - Converteert groff's troffgegevens naar PS, drukt vervolgens af. # Geďnstalleerd in /usr/local/libexec/pstf # exec grops | /usr/local/libexec/lprps "$@" Bovenstaande script maakt eveneens gebruik van lprps om de communicatie met een printer af te handelen. Als een printer op een parallelle poort is aangesloten, ziet het er als volgt uit: #!/bin/sh # # pstf - Converteert groff's troff naar PS, drukt vervolgens af. # Geďnstalleerd in /usr/local/libexec/pstf # exec grops Dat is alles. In /etc/printcap moet het volgende toegevoegd worden om het filter beschikbaar te maken: :tf=/usr/local/libexec/pstf: Hieronder een voorbeeld waarvan FORTRAN-programmeurs waarschijnlijk tranen in hun ogen krijgen: een FORTRAN-tekstfilter voor een willekeurige printer die in staat is platte tekst af te drukken. Het filter wordt actief gemaakt voor teak: #!/bin/sh # # hprf - FORTRAN tekstfilter voor LaserJet 3si: # Geďnstalleerd in /usr/local/libexec/hprf # printf "\033&k2G" && fpr && printf "\033&l0H" && exit 0 exit 2 De onderstaande regel wordt toegevoegd aan /etc/printcap voor de printer teak om het filter beschikbaar te maken: :rf=/usr/local/libexec/hprf: Het laatste voorbeeld is wellicht complexer. Er wordt een DVI-filter toegevoegd voor de eerder genoemde LaserJet printer teak. Eerst het makkelijke gedeelte: in /etc/printcap wordt de locatie van het DVI-filter opgegeven: :df=/usr/local/libexec/hpdf: Nu het moeilijke gedeelte: het schrijven van het filter. Daarvoor is een DVI-naar-LaserJet/PCL conversieprogramma nodig. De &os; Portscollectie (zie Portscollectie) heeft er een: print/dvi2xx. Door deze port te installeren komt het programma dat nodig is beschikbaar, dvilj2p, waarmee DVI geconverteerd kan worden naar LaserJet IIp-, LaserJet III- en LaserJet 2000-formaten. Het hulpprogramma dvilj2p maakt het filter hpdf redelijk complex, omdat dvilj2p niet van de standaard invoer kan lezen. Het wil werken met een bestandsnaam. Nog lastiger is dat de bestandsnaam moet eindigen op .dvi, zodat moeilijk gebruik gemaakt kan worden van /dev/fd/0 als standaard. Dit probleem kan omzeild worden door een (symbolische) koppeling aan te maken van een tijdelijk bestand (eindigend op .dvi) naar /dev/fd/0. Hiermee wordt dvilj2p gedwongen van de standaard invoer te lezen. De enige andere hobbel die genomen moet worden, is dat /tmp niet gebruikt kan worden als tijdelijke koppeling. Symbolische koppelingen zijn eigendom van de gebruiker en groep bin. Het filter wordt uitgevoerd door de gebruiker daemon. De map /tmp heeft het sticky-bit aan staan. Het filter kan de koppeling wel aanmaken, maar het is niet mogelijk de koppeling te verwijderen als de opdracht is uitgevoerd, omdat de koppeling eigendom is van een andere gebruiker. In plaats hiervan maakt het filter een symbolische koppeling aan in de huidige werkmap, de wachtrijmap (zoals opgegeven in de optie sd in /etc/printcap). Dit is een perfecte plaats voor filters om hun werk te doen, zeker gezien er (soms) meer vrije schijfruimte is in de wachtrijmap dan onder /tmp. Dit is het uiteindelijke filter: #!/bin/sh # # hpdf - Druk DVI-gegevens af op een HP/PCL printer # Geďnstalleerd in /usr/local/libexec/hpdf PATH=/usr/local/bin:$PATH; export PATH # # Definieer een functie om tijdelijke bestanden op te ruimen. Deze # staan in de huidige map; de wachtrijmap voor de printer. # cleanup() { rm -f hpdf$$.dvi } # # Definieer een functie om fatale fouten te verwerken: geef de # opgegeven boodschap weer en sluit af met 2. Afsluiten met 2 vertelt # LPD niet nog eens te proberen de afdrukopdracht af te drukken. # fatal() { echo "$@" 1>&2 cleanup exit 2 } # # Als de gebruiker de opdracht annuleert, stuurt LPD een SIGINT, dus # ondervang SIGINT (en enkele andere signalen) om onze rommel op te # ruimen. # trap cleanup 1 2 15 # # Voor de zekerheid bestaande tijdelijke bestanden opruimen # cleanup # # Koppel het DVI-invoerbestand aan de standaard invoer (het af te # drukken bestand). # ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0" # # Maak LF = CR+LF # printf "\033&k2G" || fatal "Cannot initialize printer" # # Converteer en druk af. De retourneerwaarde van dvilj2p lijkt niet # betrouwbaar, dus negeren we het. # dvilj2p -M1 -q -e- dfhp$$.dvi # # Opruimen en afsluiten # cleanup exit 0 Automatische conversie: een alternatief voor conversiefilters Al deze conversiefilters bieden vele mogelijkheden voor afdrukomgevingen, maar dwingen de gebruiker aan te geven (op de &man.lpr.1; commandoregel) welk filter gebruikt moet worden. Als gebruikers niet zo vaardig zijn in het gebruik van computers, wordt het al snel vervelend steeds aan te moeten geven welk filter gebruikt moet worden. Vervelender is echter wanneer een gebruiker een verkeerd filter gebruikt voor een bepaald bestandsformaat. Het resultaat kan zijn dat een printer honderden pagina's papier uitspuugt. In plaats van het installeren van conversiefilters, is het te proberen om het (standaard) tekstfilter het bestandstype van het af te drukken bestand te laten detecteren en dan automatisch het juiste conversiefilter aan te laten roepen. Programma's als file kunnen hierbij handig zijn. Voor sommige bestandsformaten kan het moeilijk zijn de verschillen te ontdekken en voor deze bestanden kan alsnog een conversiefilter beschikbaar worden gesteld. apsfilter afdrukken filters apsfilter De &os; Portscollectie heeft een tekstfilter dat automatisch converteert genaamd apsfilter (print/apsfilter). Het detecteert platte tekst, &postscript; en DVI-bestanden, voert de juiste conversie uit en druk de bestanden af. Uitvoerfilters Het wachtrijsysteem LPD ondersteunt een ander type filter waar nog geen aandacht aan is besteed: een uitvoerfilter. Een uitvoerfilter is bedoeld om alleen platte tekst af te drukken, net als een tekstfilter, maar met veel vereenvoudigingen. Wanneer een uitvoerfilter wordt gebruikt, maar geen tekstfilter, dan: start LPD een uitvoerfilter voor de gehele opdracht, in plaats van voor elk bestand in de opdracht; biedt LPD het uitvoerfilter niet de voorziening van het identificeren van het begin of eind van de bestanden in de afdrukopdracht; stuurt LPD de gebruikersnaam en de hostnaam niet door aan het filter. Het is dus niet bedoeld om een afdrukadministratie bij te houden. In feite zijn er maar twee argumenten: filter-name -wwidth -llength Hierbij is width afkomstig van de optie pw en length afkomstig van de optie pl voor de betreffende printer. De eenvoud van een uitvoerfilter is verleidelijk. Als elk bestand in een afdrukopdracht op een nieuwe pagina moet beginnen, is een uitvoerfilter niet geschikt. In dat geval dient een tekstfilter (ook wel invoerfilter) gebruikt te worden (zie Tekstfilter installeren. Verder is een uitvoerfilter eigenlijk veel ingewikkelder, omdat de te verwerken bytestroom gecontroleerd moet worden op speciale tekens en steeds signalen naar zichzelf moet sturen in opdracht van LPD. Een uitvoerfilter is noodzakelijk als voorbladen gewenst zijn en het nodig is om escape-reeksen of andere initialisatietekens te sturen voor het afdrukken van het voorblad. Maar het is tevens nutteloos als het voorblad voor rekening van de afkomstige gebruiker moet komen, aangezien LPD geen gebruiker of hostinformatie naar het uitvoerfilter stuurt. Op een enkele printer staat LPD het gebruik van zowel een uitvoerfilter als van een tekst of andere filter toe. In deze gevallen start LPD het uitvoerfilter alleen voor het afdrukken van het voorblad (zie Voorbladen). LPD verwacht vervolgens van het uitvoerfilter dat deze zichzelf stopt door twee bytes naar het filter te sturen: ASCII 031 gevolgd door ASCII 001. Als een uitvoerfilter deze twee bytes ziet (031, 001), moet die stoppen door een SIGSTOP naar zichzelf te sturen. Als LPD klaar is met het uitvoeren van alle andere filters, dan herstart deze het uitvoerfilter door er een SIGCONT naar toe te sturen. Als er wel een uitvoerfilter, maar geen tekstfilter is en LPD is niet bezig met het verwerken van een opdracht met platte tekst, dan gebruikt LPD het uitvoerfilter voor het afdrukken van de opdracht. Zoals eerder vermeld, drukt het uitvoerfilter elk bestand van de opdracht achter elkaar af zonder pagina-einden of andere signalen voor paginavoortgang. Dit is waarschijnlijk niet gewenst. In bijna alle gevallen is een tekstfilter nodig. Het programma lpf, dat eerder geďntoduceerd is als tekstfilter, kan ook worden uitgevoerd als uitvoerfilter. Als een ad-hoc uitvoerfilter nodig is, maar het schrijven van de bytedetectie en signaalverzending code niet wenselijk is, dan is lpf het proberen waard. lpf kan ook opgenomen worden in een shellscript om initialisatiecode af te handelen die eventueel nodig is voor een printer. <command>lpf</command>: een tekstfilter Het programma /usr/libexec/lpr/lpf uit de gecompileerde &os;-distributie is een tekstfilter (invoerfilter) die uitvoer kan inspringen (een opdracht gegeven met lpr ), karakters onveranderd kan doorlaten (een opdracht gegeven met lpr ), de printpositie voor backspaces en tabs in de opdracht kan aanpassen en afgedrukte pagina's kan administreren. Het kan ook functioneren als uitvoerfilter. Het filter lpf is geschikt voor vele afdrukomgevingen. Hoewel het zelf niet in staat is initialisatiesequenties naar een printer te sturen, is het vrij eenvoudig om een shellscript te schrijven dat de initialisatie doet en vervolgens lpf aanroept. pagina-administratie administreren printer Als lpf afgedrukte pagina's moet administreren, is het nodig om de juiste waarden in te vullen voor de opties pw en pl in het bestand /etc/printcap. Deze waarden worden gebruikt om te bepalen hoeveel tekst er op een pagina past en hoeveel pagina's er in een afdrukopdracht zijn afgedrukt. Zie Printergebruik administreren voor meer informatie. Voorbladen Als er veel gebruikers zijn die allemaal verschillende printers gebruiken, dan is het te overwegen gebruik te maken van voorbladen als noodzakelijk kwaad. bannerpagina's voorbladen voorbladen Voorbladen, in het Engels ook wel bekend als banner of burst pagina's, identificeren wie een bepaalde opdracht heeft afgedrukt. Ze worden meestal bedrukt met grote, dikgedrukte letters, eventueel met een decoratieve rand, zodat ze in een stapel afdrukken opvallen tussen de afgedrukte documenten. Ze maken het gebruikers mogelijk hun afdrukopdracht snel te vinden. Het nadeel van het gebruik van voorbladen is dat er een extra blad moet worden afgedrukt voor elke opdracht, waarmee hun nut niet langer duurt dan een paar minuten. Uiteindelijk belanden ze in een papierbak of afvalberg. Voorbladen gaan vooraf aan elke opdracht, niet aan elk bestand in een opdracht, waardoor de verspilling beperkt blijft. Het LPD-systeem kan automatisch voorbladen afdrukken als een printer direct platte tekst kan afdrukken. In geval van een &postscript;-printer, is het nodig een extern programma aan te roepen om een voorblad te genereren (zie Voorbladen op &postscript;-printers. Voorbladen afdrukken In de sectie Eenvoudige printerinstallatie is het afdrukken van voorbladen uitgeschakeld door de optie sh (suppress header) in het bestand /etc/printcap op te geven. Om wel voorbladen af te drukken, hoeft alleen de optie sh verwijderd te worden. Dit klinkt wat al te makkelijk, of niet? Dat klopt. Het kan nodig zijn een uitvoerfilter op te geven die initialisatiestrings naar een printer stuurt. Hier is een voorbeeld uitvoerfilter voor HP PCL-compatible printers: #!/bin/sh # # hpof - Uitvoerfilter voor HP PCL-compatible printers # Geďnstalleerd in /usr/local/libexec/hpof printf "\033&k2G" || exit 2 exec /usr/libexec/lpr/lpf Geef de locatie van het uitvoerfilter op met de optie of. Zie Uitvoerfilters voor meer informatie. Hier is een voorbeeldbestand /etc/printcap voor de printer teak die eerder is geďntroduceerd;. Het afdrukken van voorbladen is geactiveerd en bovenstaande uitvoerfilter is toegevoegd: # # /etc/printcap voor host orchid # teak|hp|laserjet|HP LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif:\ :vf=/usr/local/libexec/hpvf:\ :of=/usr/local/libexec/hpof: Als gebruikers nu een opdracht sturen naar teak, wordt er bij elke opdracht een voorblad afgedrukt. Als gebruikers liever willen zoeken naar hun afdrukken, dan kunnen ze de voorbladen onderdrukken door de opdracht te geven met het commando lpr . Zie Voorbladopties voor meer opties voor &man.lpr.1;. LPD drukt een karakter voor pagina-einde af na elk voorblad. Als een printer een ander teken of sequentie gebruikt voor het beëindigen van een pagina, dan kan dit opgeven worden met de optie ff in /etc/printcap. Voorbladen beheren Door het afdrukken van voorbladen aan te zetten, produceert LPD een lang voorblad waarop in grote letters de gebruiker, host en opdracht te lezen zijn. Hier volgt een voorbeeld (kelly heeft de opdracht outline afgedrukt vanaf host rose): k ll ll k l l k l l k k eeee l l y y k k e e l l y y k k eeeeee l l y y kk k e l l y y k k e e l l y yy k k eeee lll lll yyy y y y y yyyy ll t l i t l oooo u u ttttt l ii n nnn eeee o o u u t l i nn n e e o o u u t l i n n eeeeee o o u u t l i n n e o o u uu t t l i n n e e oooo uuu u tt lll iii n n eeee r rrr oooo ssss eeee rr r o o s s e e r o o ss eeeeee r o o ss e r o o s s e e r oooo ssss eeee Job: outline Date: Sun Sep 17 11:04:58 1995 LPD geeft een paginabegin na deze tekst, zodat de opdracht op een nieuwe pagina begint (tenzij de optie sf (suppress form feeds, onderdruk paginabegin) is toegevoegd bij de desbetreffende printer in /etc/printcap). Als dit wenselijk is, kan LPD ook een korte tekst op het voorblad afdrukken; geef hiervoor de optie sb (short banner, kort voorblad) op in het bestand /etc/printcap. Het voorblad ziet er dan als volgt uit: rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995 Standaard drukt LPD het voorblad als eerste af en vervolgens de opdracht. Om dat om te keren, moet de optie hl (header last, voorblad laatst) in /etc/printcap worden opgeven. Voorbladen administreren Het gebruik van LPD's ingebouwde voorbladen dwingt een bepaald paradigma af wat betreft het administreren van printergebruik: voorbladen moeten gratis zijn. Waarom? Omdat het uitvoerfilter het enige externe programma is dat controle heeft als het voorblad afgedrukt wordt dat het gebruik zou kunnen administreren. Het heeft echter geen beschikking over informatie over gebruiker of host of een administratiebestand. Het heeft dus geen idee wie voor het gebruik moet worden belast. Het volstaat ook niet om gewoon het aantal pagina's met één op te hogen door het tekstfilter of een van de conversiefilters (dat wel beschikt over gebruiker- en hostinformatie) te veranderen, omdat gebruikers het afdrukken van een voorblad kunnen onderdrukken met lpr . Ze worden dan aangeslagen voor voorbladen die niet zijn afgedrukt. Milieubewuste gebruikers gebruiken vast lpr , maar dit kan niet worden afgedwongen. Het is ook niet voldoende om elk filter zijn eigen voorblad te laten genereren (om zo het gebruik te kunnen administreren). Als gebruikers het afdrukken van voorbladen willen onderdrukken met lpr , krijgen ze toch een voorblad en worden er ook voor belast, aangezien LPD geen kennis over de optie doorgeeft aan de filters. Wat zijn dan de mogelijkheden? Accepteer het paradigma van LPD en maak voorbladen gratis; Installeer een alternatief voor LPD, zoals LPRng. In Alternatieven voor het standaard wachtrijsysteem staat meer over andere afdruksoftware die in plaats van LPD geďnstalleerd kan worden; Schrijf een slim uitvoerfilter. Gewoonlijk is een uitvoerfilter bedoeld om niet meer te doen dan het initialiseren van een printer of wat eenvoudige karakterconversie. Het is geschikt voor voorbladen en opdrachten met platte tekst (als er een tekstfilter is). Maar als er een tekstfilter is voor opdrachten met platte tekst, dan start LPD het uitvoerfilter alleen voor voorbladen. Het uitvoerfilter kan dan het voorblad dat LPD genereert analyseren om te bepalen welke gebruiker en host belast moeten worden voor het afdrukken van het voorblad. Het enige probleem is dat het uitvoerfilter nog steeds niet weet in welk bestand het gebruik moet worden bijgehouden (de naam van het bestand opgegeven in de af wordt niet meegegeven), maar als een bekend bestand gebruikt wordt, kan dit in het uitvoerfilter worden opgeven. Om het parsen af te handelen kan gebruik gemaakt worden van de optie sh (short header, kort voorblad) in /etc/printcap. Dit kan echter wat omslachtig zijn en gebruikers waarderen zeker de meer gulle systeembeheerder die voorbladen gratis maakt. Voorbladen op &postscript;-printers Zoals hierboven beschreven, kan LPD een voorblad in platte tekst genereren, dat geschikt is voor de meeste printers. Natuurlijk kan &postscript; platte tekst niet direct afdrukken, zodat de voorbladfunctie van LPD nutteloos is. Een voor de hand liggende manier om voorbladen te krijgen, is elk conversiefilter en tekstfilter zijn eigen voorblad te laten genereren. De filters moeten gebruik maken van de argumenten gebruiker en host om een geschikt voorblad te genereren. Het nadeel van deze methode is dat gebruikers altijd een voorblad krijgen, ook wanneer zij een opdracht geven met lpr . Deze methode wordt nader beschreven. Het volgende script heeft drie argumenten (gebruikersnaam, hostnaam en de naam van de opdracht) en maakt een eenvoudig &postscript;-voorblad: #!/bin/sh # # make-ps-header - genereer een PostScript-voorblad op stdout # Geďnstalleerd in /usr/local/libexec/make-ps-header # # # Dit zijn PostScript-eenheden (72 in een inch). Pas dit aan voor A4 # of het gebruikte formaat: # page_width=612 page_height=792 border=72 # # Controleer argumenten # if [ $# -ne 3 ]; then echo "Usage: `basename $0` <user> <host> <job>" 1>&2 exit 1 fi # # Bewaar deze, voornamelijk voor de leesbaarheid in de &postscript;-code. # user=$1 host=$2 job=$3 date=`date` # # Stuur de &postscript;-code naar stdout. # exec cat <<EOF %!PS % % Vermijd conflicten met de opdracht van de gebruiker die volgt. % save % % Maak een dikke, onaangename border in de marge van het papier. % $border $border moveto $page_width $border 2 mul sub 0 rlineto 0 $page_height $border 2 mul sub rlineto currentscreen 3 -1 roll pop 100 3 1 roll setscreen $border 2 mul $page_width sub 0 rlineto closepath 0.8 setgray 10 setlinewidth stroke 0 setgray % % Toon de gebruikersnaam duidelijk, groot en prominent % /Helvetica-Bold findfont 64 scalefont setfont $page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto ($user) show % % Nu volgen de saaie bijzonderheden % /Helvetica findfont 14 scalefont setfont /y 200 def [ (Job:) (Host:) (Date:) ] { 200 y moveto show /y y 18 sub def } forall /Helvetica-Bold findfont 14 scalefont setfont /y 200 def [ ($job) ($host) ($date) ] { 270 y moveto show /y y 18 sub def } forall % % Dat is alles % restore showpage EOF Nu kan zowel het conversiefilter als het tekstfilter dit script aanroepen om eerst een voorblad te genereren en vervolgens de opdracht van de gebruiker af te drukken. Hier volgt het eerder gebruikte DVI-conversieprogramma, aangepast om een voorblad te maken: #!/bin/sh # # psdf - DVI naar PostScript printfilter # Geďnstalleerd in /usr/local/libexec/psdf # # Aangeroepen door lpd, wanneer de gebruiker lpr -d uitvoert # orig_args="$@" fail() { echo "$@" 1>&2 exit 2 } while getopts "x:y:n:h:" option; do case $option in x|y) ;; # Ignore n) login=$OPTARG ;; h) host=$OPTARG ;; *) echo "LPD started `basename $0` wrong." 1>&2 exit 2 ;; esac done [ "$login" ] || fail "No login name" [ "$host" ] || fail "No host name" ( /usr/local/libexec/make-ps-header $login $host "DVI File" /usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args Merk op hoe het filter eerst de argumentenlijst moet nagaan om te bepalen wat de gebruikers- en hostnaam zijn. Dit is gelijk voor de andere conversiefilters. Het tekstfilter heeft echter een andere verzameling argumenten (zie Hoe filters werken). Zoals eerder is beschreven, is het in bovenstaande opzet, hoewel deze simpel is, niet mogelijk voorbladen te onderdrukken (de optie in lpr). Als gebruikers een boom willen sparen (of een paar centen bij betaalde voorbladen) dan is dit dus niet mogelijk, aangezien elk filter een voorblad afdrukt voor iedere opdracht. Om gebruikers in staat te stellen per opdracht voorbladen te onderdrukken, moet gebruik gemaakt worden van de truc uit Voorbladen administreren: schrijf een uitvoerfilter dat het door LPD gegenereerde voorblad inleest en een &postscript;-versie genereert. Als de gebruiker de opdracht geeft met lpr , dan genereert LPD geen voorblad en het uitvoerfilter ook niet. Anders leest het uitvoerfilter de tekst van LPD in en stuurt een geschikt voorblad in &postscript; naar de printer. Voor een &postscript;-printer op een seriële lijn kan gebruik gemaakt worden van lprps, dat met een uitvoerfilter wordt geleverd en het bovenstaande kan doen. Voorbladen worden door psof niet geteld. Afdrukken via het netwerk printers netwerk afdrukken via netwerk &os; ondersteunt afdrukken via het netwerk: het sturen van opdrachten naar printers op afstand. Afdrukken via een netwerk betekent over het algemeen twee verschillende dingen: Het benaderen van een printer aangesloten op een andere computer. Een printer met een conventionele seriële of parallelle verbinding wordt op een bepaalde computer geďnstalleerd. Vervolgens wordt LPD zodanig ingesteld dat afdrukken vanaf andere computers in het netwerk mogelijk is. In Printers geďnstalleerd op andere hosts staat hoe dit te doen. Het benaderen van een printer die direct is aangesloten op een netwerk. Een printer heeft een netwerkinterface naast (of in plaats van) een gewone seriële of parallelle poort. Zo een printer kan als volgt werken: Het begrijpt het LPD protocol en kan zelfs opdrachten van andere hosts in de wachtrij plaatsen. In dit geval werkt een printer als een gewone host die LPD heeft draaien. Volg de procedure in Printers geďnstalleerd op andere hosts om een dergelijke printer te installeren Het kan zijn dat een printer een netwerkverbinding ondersteunt. In dit geval kan een printer worden aangesloten op een bepaalde host op het netwerk door deze host verantwoordelijk te maken voor het plaatsen van opdrachten in een wachtrij en het versturen van opdrachten naar de printer. In Printers met netwerkinterfaces staan enkele suggesties om zulke printers te installeren. Printers geďnstalleerd op andere hosts Het wachtrijsysteem LPD heeft een ingebouwde mogelijkheid om opdrachten naar andere hosts te sturen die ook LPD draaien (of een systeem dat compatibel is met LPD). Deze eigenschap maakt het mogelijk om een printer op een host te installeren en deze toegankelijk te maken voor andere hosts. Het werkt ook met printers die over een netwerkinterface beschikken en het LPD-protocol begrijpen. Om dit soort afdrukken op afstand mogelijk te maken, moet een printer eerst op een host geďnstalleerd worden, de printerhost, door de printerinstallatie te volgen als beschreven in Eenvoudige printerinstallatie. Stel desgewenst de printer in voor geavanceerde taken volgens Geavanceerde printerinstallatie. Test de printer en controleer of deze werkt met eventueel speciaal ingestelde opties voor LPD. De lokale host moet geautoriseerd zijn om de LPD-dienst op de verre host te gebruiken (zie Opdrachten van hosts op afstand beperken). printers netwerk afdrukken via netwerk Als een printer een netwerkinterface heeft die compatibel is met LPD, dan is de printerhost in onderstaande beschrijving de printer zelf en de printernaam is de naam die voor de printer is ingesteld. Meer informatie staat in de documentatie bij de printer en/of de printernetwerkinterface. Bij een HP LaserJet voert de printernaam text automatisch de CRLF-conversie uit. Het is dan niet nodig het script hpif te gebruiken. Op hosts die toegang moeten krijgen tot de printer, moet in /etc/printcap een regel worden toegevoegd met het volgende: Geef de regel een willekeurige naam. Om het eenvoudig te houden kunnen wellicht het beste dezelfde namen en aliassen worden gebruikt als op de printerhost; Laat de optie lp expliciet leeg (:lp=:); Maak een wachtrijmap aan en geef de locatie op met de optie sd. LPD slaat hier afdrukopdrachten op alvorens ze naar de printerhost te sturen; Geef de naam van de printerhost op met de optie rm; Geef de naam van de printer op de printerhost op met de optie rp. Dit is het. Conversiefilters, paginadimensies, enzovoort, hoeven niet in /etc/printcap opgegeven te worden. Hier volgt een voorbeeld. De host rose heeft twee printers: bamboo en rattan. Gebruikers op de host orchid krijgen toegang tot deze printers. Hier volgt /etc/printcap voor orchid (uit Voorbladen afdrukken). Er stond in het bestand al een regel voor de printer teak. Voor de twee printers op de host rose zijn twee regels toegevoegd: # # /etc/printcap voor host orchid - printers (op afstand) op rose toegevoegd # # # teak is lokaal; het is direct aangesloten op orchid: # teak|hp|laserjet|HP LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/ifhp:\ :vf=/usr/local/libexec/vfhp:\ :of=/usr/local/libexec/ofhp: # # rattan is aangesloten op rose; stuur opdrachten voor rattan naar rose: # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: # # bamboo is ook aangesloten op rose: # bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo: Op orchid moeten wachtrijmappen worden aangemaakt: &prompt.root; mkdir /var/spool/lpd/rattan /var/spool/lpd/bamboo &prompt.root; chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo &prompt.root; chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo Nu kunnen gebruikers op orchid afdrukken op rattan en bamboo. Een gebruiker op orchid geeft bijvoorbeeld de volgende invoer: &prompt.user; lpr bamboo sushi-review.dvi Dan kopieert LPD op orchid de opdracht naar de wachtrijmap /var/spool/lpd/bamboo en ziet dat het een DVI-opdracht is. Zodra de host rose ruimte heeft in zijn wachtrijmap bamboo, sturen de twee LPD's het bestand naar rose. Het bestand wacht in de wachtrij van rose totdat het succesvol is afgedrukt. Het wordt geconverteerd naar &postscript; (aangezien bamboo een &postscript;-printer is) op rose. Printers met netwerkinterfaces Netwerkkaarten voor printers zijn er in twee versies: een versie die een wachtrij nabootst (de duurdere versies), of versies die alleen de mogelijkheid geven om er informatie naar te sturen alsof het een seriële of parallelle poort is (de goedkopere versies). In Printers geďnstalleerd op andere hosts wordt het voor de duurdere beschreven. Het formaat van /etc/printcap maakt het mogelijk om op te geven welke seriële, of parallelle poort gebruikt moet worden en (in geval van een seriële poort) de baud-snelheid, of er communicatie moet worden toegepast, vertragingen voor tabs, conversies voor nieuwe regelkarakters en meer. Er is geen mogelijkheid om een verbinding met een printer op te geven die op een TCP/IP of andere netwerkpoort luistert. Om informatie naar een netwerkprinter te sturen, is het nodig een programma te ontwikkelen dat door tekst- en conversiefilters kan worden aangeroepen. Hier volgt een voorbeeld: het script netprint stuurt alle informatie van de standaard invoer naar een netwerkprinter. Als eerste argument wordt de hostnaam van de printer opgegeven en als tweede argument het poortnummer waarmee de verbinding moet worden opgezet. Er wordt alleen eenrichtingcommunicatie ondersteund (&os; naar printer). Veel netwerkprinters ondersteunen tweewegcommunicatie. Het kan wenselijk zijn hiervan gebruik te maken (om printerstatus op te vragen, statistieken bij te houden, enzovoort). #!/usr/bin/perl # # netprint - Tekstfilter voor printer aangesloten op het netwerk # Geďnstalleerd in /usr/local/libexec/netprint # $#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>"; $printer_host = $ARGV[0]; $printer_port = $ARGV[1]; require 'sys/socket.ph'; ($ignore, $ignore, $protocol) = getprotobyname('tcp'); ($ignore, $ignore, $ignore, $ignore, $address) = gethostbyname($printer_host); $sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address); socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol) || die "Can't create TCP/IP stream socket: $!"; connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!"; while (<STDIN>) { print PRINTER; } exit 0; Dit script kan vervolgens in verschillende filters gebruikt worden. Stel dat een Diablo 750-N matrixprinter op het netwerk is aangesloten. Op poort 5100 accepteert de printer informatie om af te drukken. De hostnaam van de printer is scrivener. Hier volgt het tekstfilter voor de printer: #!/bin/sh # # diablo-if-net - Tekstfilter voor Diablo printer 'scrivener' luistert # op poort 5100. Geďnstalleerd in /usr/local/libexec/diablo-if-net # exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100 Printergebruik beperken printers toegang beperken Nu volgt informatie over het beperken van printergebruik. Het LPD-systeem maakt het mogelijk te bepalen wie er toegang heeft tot een printer, zowel lokaal als op afstand, of meerdere kopieën afgedrukt mogen worden, hoe lang opdrachten mogen zijn en hoe lang wachtrijen mogen worden. Meerdere kopieën beperken Het LPD systeem maakt het heel makkelijk voor gebruikers om meerdere afdrukken van een bestand te maken. Gebruikers kunnen opdrachten afdrukken met bijvoorbeeld lpr en krijgen dan vijf kopieën van elk bestand in de opdracht. De systeembeheerder kan beslissen of dit wenselijk is. Wanneer meerdere kopieën onwenselijk zijn, kan de optie van &man.lpr.1; worden uitgeschakeld door de optie sc in /etc/printcap op te nemen. Als gebruikers opdrachten versturen met de optie , zien ze het volgende: lpr: multiple copies are not allowed Als het mogelijk is van andere hosts af te drukken (zie Printers geďnstalleerd op andere hosts), moet de optie sc ook in /etc/printcap van de andere hosts aanwezig zijn. Anders kunnen gebruikers nog steeds multi-kopie opdrachten van andere hosts sturen. Hier volgt een voorbeeld. Hieronder staat /etc/printcap voor de host rose. De printer rattan is redelijk krachtig, dus meerdere kopieën zijn toegestaan. De laserprinter bamboo is wat gevoeliger, dus meerdere kopieë zijn uitgeschakeld door de optie sc toe te voegen: # # /etc/printcap voor host rose - beperk meerdere kopieën op bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf: Nu moet ook de optie sc worden toegevoegd in /etc/printcap van host orchid (tegelijk worden meerdere kopieën voor de printer teak uitgeschakeld): # # /etc/printcap voor host orchid - geen meerdere kopieën voor lokale # printer teak of printer op afstand bamboo teak|hp|laserjet|HP LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\ :if=/usr/local/libexec/ifhp:\ :vf=/usr/local/libexec/vfhp:\ :of=/usr/local/libexec/ofhp: rattan|line|diablo|lp|Diablo 630 Line Printer:\ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc: Door de optie sc te gebruiken, wordt het gebruik van lpr voorkomen, maar dat weerhoudt gebruikers er nog steeds niet van om &man.lpr.1; meerdere keren te aanroepen of meerdere keren hetzelfde bestand te versturen in een opdracht: &prompt.user; lpr voorverkoop.teken voorverkoop.teken voorverkoop.teken voorverkoop.teken voorverkoop.teken Er zijn vele manieren om dit misbruik te voorkomen (onder andere door het te negeren), welke vrij zijn om te verkennen. Printertoegang beperken Door gebruik te maken van het &unix; groepmechanisme en de optie rg in /etc/printcap kan geregeld worden wie er op welke printer kan afdrukken. De gebruikers die toegang hebben tot een printer moeten in een groep worden geplaatst en deze groep moet in de optie rg worden genoemd. Als gebruikers buiten de groep (inclusief root) naar de beheerde printer proberen te printen, worden ze begroet met het volgende bericht: lpr: Not a member of the restricted group Net als met de optie sc (suppress multiple copies: onderdruk meerdere kopieën) moet rg, indien wenselijk, ook op andere hosts worden opgegeven die ook toegang hebben tot printers (zie Printers geďnstalleerd op andere hosts). In het volgende voorbeeld heeft iedereen toegang tot de printer rattan, maar alleen gebruikers in de groep artists kunnen gebruik maken van bamboo. Hier volgt het bekende /etc/printcap voor de host rose: # # /etc/printcap voor host rose - beperkte toegang voor groep bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf: De andere voorbeeldbestanden /etc/printcap (voor de host orchid) worden niet aangepast. Natuurlijk kan iedereen op orchid afdrukken op bamboo. Het kan zijn dat er sowieso alleen bepaalde gebruikers op orchid zijn toegestaan en dat deze gebruikers toegang mogen hebben tot de printer. Of wellicht niet. Er kan per printer slechts één groep worden opgegeven. Grootte van afdrukopdrachten bepalen afdrukopdrachten Als veel gebruikers toegang hebben tot printers kan het nodig zijn een limiet op te geven voor de grootte van de bestanden die gebruikers naar een printer kunnen sturen. Er is immers slechts beperkte ruimte op het bestandssysteem en er moet ook voldoende ruimte zijn voor opdrachten van andere gebruikers. afdrukopdrachten beheren LPD heeft de mogelijkheid om met de optie mx een limiet op te geven voor het maximum aantal bytes van een bestand in een afdrukopdracht. De eenheden worden opgegeven in BUFSIZ blokken, die 1024 bytes groot zijn. Een nul voor deze optie betekent geen limiet aan de bestandsgrootte. Als de optie wordt weggelaten, wordt een standaardlimiet van 1000 blokken gebruikt. De limiet heeft betrekking op de bestanden in een opdracht, niet op de totale grootte van een opdracht. LPD weigert een bestand dat groter is dan de opgegeven limiet niet. In plaats daarvan plaatst het zo veel mogelijk van het bestand op de wachtrij, om dit vervolgens af te drukken. De rest wordt genegeerd. Of dit gedrag wenselijk is, is onderwerp van debat. Nu worden limieten voor de voorbeeldprinters rattan en bamboo opgegeven. Aangezien de &postscript;-bestanden van die artists nogal groot kunnen worden, krijgen ze een limiet van vijf megabyte opgelegd. Er wordt geen limiet opgelegd voor de platte tekst printer: # # /etc/printcap voor host rose # # # Geen limiet op opdrachtgrootte: # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:mx#0:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: # # Limiet van vijf megabyte: # bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf: Ook hier zijn de limieten alleen van toepassing op lokale gebruikers. Als toegang tot deze printers van andere hosts mogelijk is, worden deze gebruikers niet beperkt. Het is daarom nodig de optie mx ook in de /etc/printcap van de betreffende hosts op te geven. In Printers geďnstalleerd op andere hosts staat meer informatie over afdrukken op andere hosts. Er is een andere gespecialiseerde manier om opdrachtgrootte voor printers op afstand te beperken (zie Opdrachten van hosts op afstand beperken. Opdrachten van hosts op afstand beperken Het wachtrijsysteem LPD beschikt over verschillende methoden om afdrukopdrachten van hosts op afstand te beperken: Hostbeperkingen Met de bestanden /etc/hosts.equiv en /etc/hosts.lpd kan worden ingesteld van welke hosts op afstand een lokale LPD-opdracht wordt geaccepteerd. LPD controleert of een inkomend verzoek afkomstig is van een host die wordt genoemd in een van deze bestanden. Zo niet, dan weigert LPD het verzoek. Het formaat van deze bestanden is eenvoudig: één host per regel. /etc/hosts.equiv wordt ook gebruikt door het protocol &man.ruserok.3; en heeft invloed op programma's als &man.rsh.1; en &man.rcp.1;. Voorzichtigheid is dus geboden. Als voorbeeld volgt hier /etc/hosts.lpd voor de host rose: orchid violet madrigal.fishbaum.de Dit betekent dat rose verzoeken accepteert van de hosts orchid, violet en madrigal.fishbaum.de. Voor iedere andere host die verbinding probeert te maken met LPD op rose, wordt de opdracht geweigerd. Omvangbeperkingen De hoeveelheid vrije ruimte die over moet blijven op een bestandssysteem waar een wachtrij zich bevindt kan ook worden ingesteld. Hiervoor moet een bestand met de naam minfree in de wachtrijmap worden aangemaakt. In dit bestand kan een getal worden gezet dat het aantal schijfblokken (512 bytes) aan vrije ruimte aangeeft dat beschikbaar moet blijven wil een opdracht worden geaccepteerd. Hiermee kan worden gegarandeerd dat gebruikers op afstand een bestandssysteem niet vol kunnen schrijven. Ook kan hierdoor een soort voorrang worden gegeven aan lokale gebruikers: zij kunnen nog opdrachten plaatsen als de vrije schijfruimte al lang beneden de opgegeven limiet uit minfree is gekomen. Als voorbeeld wordt een bestand minfree voor de printer bamboo toegevoegd. In /etc/printcap staat de juiste wachtrijmap: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf: De wachtrijmap wordt opgegeven met de optie sd. Er wordt een limiet van drie megabyte ingesteld (wat gelijk staat aan 6144 schijfblokken) voor de hoeveelheid vrije schijfruimte die op het bestandssysteem beschikbaar moet zijn voordat LPD een opdracht op afstand accepteert: &prompt.root; echo 6144 > /var/spool/lpd/bamboo/minfree Gebruikersbeperkingen Met de optie rs in /etc/printcap kan worden geregeld welke gebruikers op afstand kunnen afdrukken op lokale printers. Als rs voorkomt voor een lokale printer accepteert LPD opdrachten van hosts op afstand als de gebruiker die de opdracht wil plaatsen ook een account heeft met dezelfde gebruikersnaam op de lokale host. Anders weigert LPD de opdracht. Deze optie is met name nuttig in een omgeving waar (bijvoorbeeld) verschillende afdelingen een netwerk delen en gebruikers de grenzen van de afdeling overschrijden. Door ze een account te geven op een systeem kunnen ze de aangesloten printers gebruiken vanaf het systeem van hun eigen afdeling. Wanneer ze alleen gebruik mogen maken van de printers en niet van overige diensten op de computer, kunnen tokenaccounts worden aangemaakt, zonder thuismap en met een nutteloze shell als /usr/bin/false. Printergebruik administreren administratie printer Het kan nodig zijn om afdrukken te doorbelasten. Inkt en papier kosten geld en er zijn onderhoudskosten. Printers zitten vol met bewegende delen en hebben de neiging kapot te gaan. Nu is er gekeken naar de printers, het gebruikerspatroon en de onderhoudskosten en op basis hiervan is een prijs vastgesteld per pagina (of per centimeter, per meter, of per wat dan ook). Hoe wordt nu een administratie bijgehouden van gemaakte afdrukken? Het slechte nieuws is dat het wachtrijsysteem LPD hierbij niet echt helpt. Het administreren van afdrukken is erg afhankelijk van het type printer, het afdrukformaat en de wensen die een systeembeheerder heeft ten aanzien van het doorbelasten van printergebruik. Om het administreren te implementeren, is het nodig om aanpassingen te maken in de tekstfilter (om platte tekst opdrachten te belasten) en de conversiefilters (om opdrachten in andere bestandsformaten te belasten), om pagina's te tellen, of de printer te vragen hoeveel pagina's er zijn afgedrukt. Het volstaat niet om het eenvoudige uitvoerfilter te gebruiken, aangezien dit niet in staat is het gebruik te administreren. Zie Filters. In het algemeen zijn er twee manieren om gebruik te administreren: Periodiek administreren is de meer gebruikelijke manier, omdat het waarschijnlijk makkelijker is. Als iemand een opdracht afdrukt, schrijft het filter de gebruiker, host en het aantal pagina's in een administratiebestand. Elke maand, semester, jaar, of een andere gewenste periode kunnen de administratiebestanden verzameld worden om het aantal afgedrukte pagina's op te tellen en het gebruik in rekening te brengen. De logboekbestanden kunnen vervolgens geschoond worden, zodat met een schone lei de volgende periode begonnen kan worden. Directe administratie is minder gebruikelijk, waarschijnlijk omdat het moeilijker is. Met deze methode zorgen de filters ervoor dat gebruikers voor hun printergebruik worden afgerekend op het moment dat ze er gebruik van maken. Net als schijfquota is de administratie onmiddellijk. Hiermee wordt voorkomen dat gebruikers kunnen afdrukken wanneer ze over hun limiet zijn gegaan. Ook biedt dit de mogelijkheid voor gebruikers om hun afdrukquotum te controleren, of aan te passen. Deze methode vereist databasecode om gebruikers en hun quota bij te houden. Het wachtrijsysteem LPD ondersteunt beide methoden op eenvoudige wijze. Aangezien de filters (meestal) moeten worden aangeleverd, moet ook de code voor de administratie worden geleverd. Er is echter een voordeel: er is grote flexibiliteit in de administratiemethode. Zo kan bijvoorbeeld gekozen worden tussen periodieke of directe administratie. Er kan gekozen worden welke informatie opgeslagen wordt: gebruikersnamen, hostnamen, type opdracht, aantal afgedrukte pagina's, hoe lang het afdrukken duurde, enzovoort. Dit alles kan worden gedaan door de filters aan te passen. Kort door de bocht printeradministratie &os; wordt met twee programma's geleverd waarmee periodieke administratie direct kan worden opgezet. Het zijn het tekstfilter lpf, beschreven in lpf: een tekstfilter en &man.pac.8;, een programma dat posten uit administratiebestanden verzamelt en optelt. Zoals beschreven in de sectie over filters (Filters), roept LPD de tekst- en conversiefilters aan met de naam van het administratiebestand als argument. De filters kunnen dit argument gebruiken om te bepalen in welk bestand de gegevens voor de administratie moeten worden weggeschreven. De naam van dit bestand is afkomstig van de optie af uit /etc/printcap. Als er geen absoluut pad wordt opgegeven, dan is de locatie relatief aan de wachtrijmap. LPD start lpf met paginabreedte en -lengte argumenten (afkomstig uit de opties pw en pl). Het filter lpf gebruikt deze argumenten om te bepalen hoeveel papier er gebruikt zal worden. Nadat het bestand naar de printer is gestuurd, schrijft het een post in het administratiebestand. De posten zien er als volgt uit: 2.00 rose:andy 3.00 rose:kelly 3.00 orchid:mary 5.00 orchid:mary 2.00 orchid:zhang Aangezien lpf geen ingebouwde logica voor bestandslocking kent, moet voor elke printer een apart administratiebestand gebruikt worden. Twee lpfs kunnen elkaars posten corrumperen als ze tegelijk in hetzelfde bestand schrijven. De optie af=acct in /etc/printcap biedt een makkelijke manier om er zeker van te zijn dat aparte bestanden worden gebruikt. Dan bevindt elk administratiebestand zich in de wachtrijmap van de betreffende printer en krijgt de naam acct krijgen Wanneer het tijd is om met gebruikers af te rekenen voor hun afdrukken, kan het programma &man.pac.8; gedraaid worden. Ga naar de wachtrijmap van de printer waarvoor betaald moet worden en typ pac. Er verschijnt een dollar-centrische samenvatting zoals het volgende: Login pages/feet runs price orchid:kelly 5.00 1 $ 0.10 orchid:mary 31.00 3 $ 0.62 orchid:zhang 9.00 1 $ 0.18 rose:andy 2.00 1 $ 0.04 rose:kelly 177.00 104 $ 3.54 rose:mary 87.00 32 $ 1.74 rose:root 26.00 12 $ 0.52 total 337.00 154 $ 6.74 Dit zijn de argumenten die &man.pac.8; verwacht: De printer waarvoor een samenvatting moet worden gegenereerd. Deze optie werkt alleen als er een absoluut pad is gegeven in de optie af in /etc/printcap. Sorteer de uitvoer op kosten, in plaats van alfabetisch op gebruikersnaam. Negeer de hostnamen in het administratiebestand. Met deze optie is de gebruiker smith op host alpha dezelfde gebruiker als smith op host gamma. Zonder deze optie zijn het verschillende gebruikers. Bereken de prijs met prijs dollar per pagina of per voet, in plaats van de prijs uit de optie pc in /etc/printcap of twee cent (de standaard). De prijs kan worden opgegeven als een decimaal getal. Keer de sorteervolgorde om. Maak een bestand met een samenvatting van de administratie en leeg het administratiebestand. namen Druk de administratiegegevens alleen af voor gebruikersnamen namen. In de standaard samenvatting die &man.pac.8; genereert, is het aantal pagina's te zien dat iedere gebruiker vanaf een bepaalde host heeft afgedrukt. Wanneer de hostnaam niet van belang is (bijvoorbeeld omdat gebruikers iedere host kunnen gebruiken), gebruik dan pac om de volgende samenvatting te genereren: Login pages/feet runs price andy 2.00 1 $ 0.04 kelly 182.00 105 $ 3.64 mary 118.00 35 $ 2.36 root 26.00 12 $ 0.52 zhang 9.00 1 $ 0.18 total 337.00 154 $ 6.74 Om het verschuldigde bedrag te berekenen gebruikt &man.pac.8; de optie pc uit /etc/printcap (standaard aantal van 200 of 2 cent per pagina). Specificeer, in honderden centen, de prijs per pagina of per voet die berekent moet worden. Deze waarde kan worden aangepast door &man.pac.8; aan te roepen met de optie . De eenheden van de optie zijn echter in dollars, niet in honderden centen. Bijvoorbeeld, &prompt.root; pac zorgt ervoor dat elke pagina 1,50 dollar kost. U kunt echt grote winsten maken met deze optie. Tenslotte kan met pac de samenvatting worden opgeslagen in een bestand dat dezelfde naam krijgt als het administratiebestand van de printer, maar dan met _sum toegevoegd aan de naam. Vervolgens wordt het administratiebestand geleegd. Als &man.pac.8; opnieuw wordt aangeroepen, herleest &man.pac.8; het samenvattingsbestand om de startwaarden te bepalen en telt daar de informatie bij op van het standaard administratiebestand. Hoe kan het aantal afgedrukte pagina's worden geteld? Om ook maar de minste nauwkeurigheid bij het administreren te verkrijgen, is het nodig te weten hoeveel papier een afdrukopdracht gebruikt. Dit is het centrale probleem van het bijhouden van printerstatistieken. Voor opdrachten met platte tekst is het probleem niet zo moeilijk op te lossen: het aantal regels in een opdracht wordt geteld en vergeleken met het aantal regels per pagina dat door een printer wordt ondersteund. Hierbij moet niet worden vergeten dat backspaces in het bestand regels overschrijven en dat lange logische regels worden afgedrukt als meerdere fysieke regels. Het tekstfilter lpf (geďntroduceerd in lpf: een tekstfilter) houdt met deze zaken rekening bij het administreren. Als het nodig is een tekstfilter te schrijven dat ook het printergebruik moet bijhouden, dan is het nuttig de broncode van lpf te bestuderen. Hoe worden andere bestandsformaten dan verwerkt? Voor een DVI-naar-LaserJet, of DVI-naar-&postscript; conversie kan het filter de diagnostische uitvoer van dvilj of dvips bekijken om te bepalen hoeveel pagina's er zijn geconverteerd. Voor andere formaten kan hetzelfde worden gedaan met behulp van de betreffende conversieprogramma's. Deze methoden hebben echter als nadeel dat een printer eventueel niet alle pagina's ook daadwerkelijk afdrukt. Zo kan het papier vast komen te zitten, de toner opraken of de printer ontploffen, terwijl de gebruiker toch moet betalen. Dus, wat kan hieraan worden gedaan? Er is slechts één betrouwbare manier om nauwkeurig te administreren. Dat is met behulp van een printer die kan vertellen hoeveel papier er is gebruikt. Deze moet vervolgens worden aangesloten met een seriële lijn, of een netwerkverbinding. Bijna alle &postscript;-printers hebben deze mogelijkheid, andere modellen en merken mogelijk ook (bijvoorbeeld Imagen netwerklaserprinters). De filters dienen voor deze printers aangepast te worden om het papierverbruik na elke opdracht te achterhalen en de administratieve informatie alleen op deze waarde te baseren. Er is geen noodzaak om foutgevoelig regels te tellen of bestanden te analyseren. Natuurlijk kan een beheerder ook vrijgevig zijn en alle afdrukken gratis maken. Printers gebruiken printers gebruik Hieronder wordt beschreven hoe printers die onder &os; geďnstalleerd zijn gebruikt moeten worden. Nu volgt een overzicht van de commando's op gebruikersniveau: &man.lpr.1; Druk opdrachten af &man.lpq.1; Controleer printerwachtrijen &man.lprm.1; Verwijder opdrachten uit de wachtrij van een printer Er is ook een administratief commando, &man.lpc.8;, beschreven in Printers beheren, dat gebruikt wordt om printers en hun wachtrijen in te stellen. Alledrie de commando's &man.lpr.1;, &man.lprm.1; en &man.lpq.1; accepteren een optie om aan te geven op welke printer uit /etc/printcap een opdracht van toepassing is. Dit biedt de mogelijkheid opdrachten te versturen, verwijderen en controleren voor verschillende printers. Als niet wordt gebruikt, werken deze commando's op de printer gedefinieerd in de omgevingsvariabele PRINTER. Tot slot, wanneer de omgevingsvariabele PRINTER niet is gedefinieerd, wordt standaard verwezen naar de printer met de naam lp. Opdrachten afdrukken Om bestanden af te drukken: &prompt.user; lpr bestandsnaam ... afdrukken Dit drukt elk van de opgegeven bestanden af op de standaard printer. Als geen bestanden worden opgegeven, drukt &man.lpr.1; de standaard invoer af. De volgende opdracht drukt bijvoorbeeld een paar belangrijke systeembestanden af: &prompt.user; lpr /etc/host.conf /etc/hosts.equiv Om een specifieke printer te selecteren: &prompt.user; lpr printernaam bestandsnaam ... Dit voorbeeld drukt een lange opgave van de huidige map af op de printer rattan: &prompt.user; ls | lpr rattan Omdat er geen bestanden worden meegegeven aan het commando &man.lpr.1;, drukt lpr de gegevens af die het van de standaard invoer leest: de uitvoer van het commando ls . &man.lpr.1; accepteert ook een breed scala aan opties om de vorm aan te passen, bestandsconversies toe te passen, meerdere kopieën af te drukken, enzovoort. Meer informatie staat in Afdrukopties. Opdrachten controleren afdrukopdrachten Als &man.lpr.1; wordt gebruikt om af te drukken, dan worden de gegevens die afdrukt moet worden in een pakketje samengevoegd dat een afdrukopdracht wordt genoemd en naar het wachtrijsysteem LPD gestuurd. Elke printer heeft een wachtrij met opdrachten van alle gebruikers. Een printer drukt deze opdrachten op volgorde van binnenkomst af. De wachtrij voor de standaardprinter kan worden weergegeven met &man.lpq.1;. Voor een specifieke printer moet de optie meegegeven worden. Het volgende commando toont de wachtrij van printer bamboo: &prompt.user; lpq bamboo Hieronder volgt een voorbeeld van de uitvoer van het commando lpq: bamboo is ready and printing Rank Owner Job Files Total Size active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes 2nd kelly 10 (standard input) 1635 bytes 3rd mary 11 ... 78519 bytes Dit laat drie opdrachten zien in de wachtrij voor bamboo. De eerste opdracht, gegeven door gebruiker kelly, heeft opdrachtnummer 9 gekregen. Elke opdracht voor een printer krijgt een uniek opdrachtnummer. Dit nummer kan in de meeste gevallen genegeerd worden, maar is nodig om een opdracht te annuleren. In Opdrachten verwijderen staan meer details. Opdrachtnummer negen bestaat uit twee bestanden; meerdere bestanden opgegeven naar &man.lpr.1;, worden als één enkele opdracht behandeld. Het is de actieve opdracht (active onder de kolom Rank), wat betekent dat de printer deze opdracht momenteel aan het afdrukken is. De tweede opdracht bestaat uit gegevens doorgegeven aan &man.lpr.1; als standaard invoer. De derde opdracht is afkomstig van gebruiker mary. Het is een veel grotere opdracht. De bestandsnaam van het bestand dat ze probeert af te drukken is te lang voor het overzicht, daarom toont &man.lpq.1; drie puntjes. De allereerste regel uitvoer van &man.lpq.1; is ook handig: die vertelt wat de printer momenteel aan het doen is; dat wil zeggen, wat LPD denkt dat de printer aan het doen is. Het commando &man.lpq.1; ondersteunt ook een optie om een gedetailleerd, lang overzicht te geven. Hieronder volgt voorbeelduitvoer van lpq : waiting for bamboo to become ready (offline ?) kelly: 1st [job 009rose] /etc/host.conf 73 bytes /etc/hosts.equiv 15 bytes kelly: 2nd [job 010rose] (standard input) 1635 bytes mary: 3rd [job 011rose] /home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes Opdrachten verwijderen Een gebruiker die van gedachten verandert over een af te drukken opdracht, kan een opdracht uit een wachtrij halen met het commando &man.lprm.1;. Vaak kan met &man.lprm.1; zelfs een actieve opdracht worden verwijderd, maar een deel of alles van de opdracht kan desondanks toch worden afgedrukt. Om een opdracht van de standaardprinter te verwijderen dient eerst met &man.lpq.1; het opdrachtnummer gevonden te worden. Typ vervolgens: &prompt.user; lprm opdrachtnummer Om een opdracht van een specifieke printer te verwijderen, moet de optie worden toegevoegd. Het volgende commando verwijdert opdrachtnummer 10 uit de wachtrij van printer bamboo: &prompt.user; lprm bamboo 10 Het commando &man.lprm.1; heeft een aantal snelkoppelingen: lprm - Verwijder alle opdrachten (voor de standaardprinter) van de huidige gebruiker. lprm gebruiker Verwijder alle opdrachten (voor de standaardprinter) die van gebruiker zijn. De supergebruiker kan opdrachten van andere gebruikers verwijderen. Andere gebruikers kunnen alleen hun eigen opdrachten verwijderen. lprm Zonder een opdrachtnummer, gebruikersnaam of op de opdrachtregel, verwijdert &man.lprm.1; de huidige actieve opdracht van de huidige gebruiker op de standaard printer. Alleen de supergebruiker kan iedere actieve opdracht verwijderen. Gebruik de optie met bovenstaande snelkoppelingen om een specifieke printer in plaats van de standaard printer te selecteren. Het volgende voorbeeld verwijdert alle opdrachten van de huidige gebruiker uit de wachtrij van printer rattan: &prompt.user; lprm rattan - Als in een netwerkomgeving wordt gewerkt, staat &man.lprm.1; alleen toe opdrachten te verwijderen vanaf hosts waarvan de afdrukopdrachten zijn gegeven, ook als dezelfde printer vanaf andere hosts bereikbaar is. Het volgende voorbeeld demonstreert dit: &prompt.user; lpr rattan mijnbestand &prompt.user; rlogin orchid &prompt.user; lpq rattan Rank Owner Job Files Total Size active seeyan 12 ... 49123 bytes 2nd kelly 13 myfile 12 bytes &prompt.user; lprm rattan 13 rose: Permission denied &prompt.user; logout &prompt.user; lprm rattan 13 dfA013rose dequeued cfA013rose dequeued Meer dan platte tekst: afdrukopties Het commando &man.lpr.1; ondersteunt een aantal opties voor de opmaak van platte tekst, het converteren van grafische en andere bestandsformaten, het afdrukken van meerdere kopieën, afwikkeling van een opdracht en meer. In deze sectie worden die opties beschreven. Opties voor opmaak en conversie De volgende opties voor &man.lpr.1; zorgen voor de opmaak van de bestanden in de opdracht. Gebruik deze opties als de opdracht geen platte tekst bevat of als platte tekst opgemaakt dient te worden met behulp van &man.pr.1;. &tex; Het volgende commando drukt bijvoorbeeld een DVI-bestand af (van het &tex; typesettingsysteem) met de naam visrapport.dvi op de printer bamboo: &prompt.user; lpr bamboo -d visrapport.dvi Deze opties zijn van toepassing op alle bestanden in de opdracht. Het is dus niet mogelijk om bijvoorbeeld DVI- en ditroff-bestanden in een opdracht samen te voegen. In plaats hiervan moeten deze bestanden als aparte opdrachten worden gegeven, elk met een andere conversie-optie. Al deze opties, behalve en , vereisen dat er conversiefilters zijn geďnstalleerd voor een printer. De optie vereist bijvoorbeeld het DVI-conversiefilter. In Conversiefilters staan de details beschreven. Afdrukken van cifplot-bestanden. Afdrukken van DVI-bestanden. Afdrukken van FORTRAN tekstbestanden. Afdrukken van plotgegevens. De uitvoer wordt aantal kolommen ingesprongen. Als nummer wordt weggelaten, wordt acht kolommen ingesprongen. Deze optie werkt alleen met bepaalde conversiefilters. Plaats geen spatie tussen de en het nummer. Drukt letterlijke tekstgegevens af, inclusief controlekarakters. Afdrukken van ditroff (apparaatonafhankelijke troff) gegevens. -p Opmaak van platte tekst met &man.pr.1; alvorens af te drukken. Zie &man.pr.1; voor meer informatie. Gebruik titel op de &man.pr.1; koptekst in plaats van de bestandsnaam. Deze optie heeft alleen effect in combinatie met de optie . Afdrukken van troffgegevens. Afdrukken van rastergegevens. In het volgende voorbeeld wordt een mooi opgemaakte versie van de handleiding &man.ls.1; afgedrukt op de standaardprinter: &prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -man | lpr Het commando &man.zcat.1; pakt de broncode van de &man.ls.1; handleiding uit en geeft het door aan het commando &man.troff.1;, dat de broncode opmaakt, er GNU troff van maakt en dit doorstuurt naar &man.lpr.1;, dat de opdracht naar de LPD wachtrij stuurt. Omdat de optie meegeven wordt aan &man.lpr.1;, converteert het wachtrijsysteem de GNU troff uitvoer naar een formaat dat de standaardprinter begrijpt als de opdracht wordt afgedrukt. Opties voor opdrachtafhandeling De volgende opties voor &man.lpr.1; geven LPD aan de opdracht speciaal te behandelen: -# kopieën Produceer een aantal van kopieën kopieën van elk bestand in de opdracht, in plaats van één kopie. Een beheerder kan deze optie uitschakelen om slijtage van de printer te voorkomen en gebruik van een kopieerapparaat aan te moedigen. Zie Meerdere kopieën beperken. Dit voorbeeld drukt drie kopieën af van parser.c gevolgd door drie kopieën van parser.h op de standaardprinter: &prompt.user; lpr parser.c parser.h -m Stuur een email na voltooiing van de afdrukopdracht. Met deze optie stuurt het LPD-systeem een email als een opdracht is afgehandeld. In dit bericht vertelt het of de opdracht succesvol is uitgevoerd of dat er een fout was met (vaak) de aard van de fout. -s Kopieer de bestanden niet naar de wachtrijmap, maar maak in plaats hiervan een symbolische link. Bij het afdrukken van een grote opdracht is het handig van deze optie gebruik te maken. Het spaart ruimte in de wachtrijmap (het kan zijn dat de opdracht de vrije ruimte verbruikt in het bestandssysteem waarin de wachtrijmap zich bevindt). Het bespaart ook tijd, omdat LPD niet elke byte van de opdracht naar de wachtrijmap hoeft te kopieëren. Er is echter een nadeel: aangezien LPD het originele bestand nodig heeft, is het niet mogelijk dit te wijzigen, of te verwijderen totdat het is afgedrukt. Bij het afdrukken op een printer in een netwerk, moet LPD een bestand uiteindelijk toch kopieëren van een lokale host naar een netwerkhost. De optie bespaart dus ruimte in een lokale wachtrijmap, niet in die van een host in een netwerk. Het blijft echter nuttig. -r Verwijder bestanden in een opdracht na ze naar een wachtrij gekopieerd te hebben of na ze te hebben afgedrukt als de optie is gebruikt. Wees voorzichtig met deze optie! Voorbladopties Deze opties voor &man.lpr.1; passen de tekst aan die gewoonlijk op het voorblad van een opdracht verschijnt. Deze opties hebben geen effect als het afdrukken van voorbladen wordt onderdrukt op een gebruikte printer. Zie Voorbladen voor meer informatie over het opzetten van voorbladen. -C tekst Vervang de hostnaam op het voorblad door tekst. De hostnaam is gewoonlijk de naam van de host waarvan de opdracht is verstuurd. -J tekst Vervang de naam van de opdracht op het voorblad door tekst. De naam van de opdracht is standaard de naam van het eerste bestand in de opdracht of stdin als de standaard uitvoer wordt afgedrukt. -h Druk geen voorblad af. Bij sommige installaties kan het zijn dat deze optie geen effect heeft door de manier waarop de voorbladen worden gegenereerd. Zie Voorbladen voor de details. Printers beheren De beheerder van de printers in een netwerk heeft deze moeten installeren, opzetten en testen. Met het commando &man.lpc.8; kan een beheerder op nog meer manieren communiceren met printers. Met &man.lpc.8; is het mogelijk om: Printers te starten en te stoppen; Wachtrijen aan en uit te zetten; De volgorde van opdrachten in elke wachtrij aan te passen. Ten eerste een opmerking over terminologie: als een printer is gestopt, drukt die niets uit een wachtrij af. Gebruikers kunnen nog steeds opdrachten geven, maar opdrachten wachten in een wachtrij totdat de bijbehorende printer is gestart of als de wachtrij vrij is. Als een wachtrij is uitgeschakeld, kan geen enkele gebruiker (behalve root) opdrachten naar een printer versturen. Een ingeschakelde wachtrij accepteert opdrachten. Een printer met een uitgeschakelde wachtrij kan worden gestart en drukt dan alle afdrukopdrachten in de wachtrij af tot deze leeg is. In het algemeen is het nodig root-rechten te hebben om het commando &man.lpc.8; te gebruiken. Gewone gebruikers kunnen het commando &man.lpc.8; gebruiken om een printerstatus op te vragen en om een vastgelopen printer te herstarten. Nu volgt een samenvatting van de &man.lpc.8; commando's. De meeste commando's accepteren een argument printernaam, om aan te geven op welke printer te werken. Om op alle printers te werken die in /etc/printcap genoemd worden, kan all worden gebruikt als printernaam. abort printernaam Annuleer de huidige opdracht en stop de printer. Gebruikers kunnen nog steeds opdrachten versturen als de wachtrij is ingeschakeld. clean printernaam Verwijder oude bestanden uit de wachtrijmap van de betreffende printer. Het kan wel eens gebeuren dat de bestanden waaruit een opdracht bestaat niet juist worden verwijderd door LPD. Dit gebeurt bijvoorbeeld wanneer er fouten zijn opgetreden tijdens het afdrukken of tijdens grote administratieve activiteit. Dit commando vindt en verwijdert bestanden die niet in de wachtrijmap thuishoren. disable printernaam Nieuwe opdrachten kunnen niet meer in de wachtrij worden geplaatst. Als de printer nog draait, drukt die de opdrachten die zich nog in de wachtrij bevinden af. De supergebruiker (root) kan altijd opdrachten versturen, ook naar een uitgeschakelde wachtrij. Dit commando is handig bij het testen van een nieuwe printer of een filterinstallatie: schakel de wachtrij uit en verstuur als root opdrachten. Andere gebruikers kunnen geen opdrachten versturen totdat het testen is voltooid en de wachtrij weer is ingeschakeld met het commando enable. down printernaam boodschap Schakel een printer uit. Equivalent aan disable gevolgd door stop. De boodschap verschijnt als de status van de printer als een gebruiker de wachtrij van de printer controleert met &man.lpq.1; of de status met lpc status. enable printernaam Schakel de wachtrij van een printer in. Gebruikers kunnen opdrachten versturen, maar de printer drukt ze pas af als deze is gestart. help commandonaam Geef hulp over het commando commandonaam. Zonder commandonaam, wordt een samenvatting van de beschikbare commando's getoond. restart printernaam Start de printer. Gewone gebruikers kunnen dit commando gebruiken als door een uitzonderlijke omstandigheid LPD hangt, maar ze kunnen een printer niet starten die gestopt is met een van de commando's stop of down. Het commando restart is equivalent aan abort gevolgd door start. start printernaam Start de printer. De printer drukt opdrachten in zijn wachtrij af. stop printernaam Stop de printer. De printer maakt de huidige opdracht af en drukt opdrachten in de wachtrij niet af. Gebruikers kunnen nog steeds opdrachten versturen naar een ingeschakelde wachtrij, ook al is de printer gestopt. topq printernaam opdracht-of-gebruikersnaam Herschik de wachtrij voor printernaam door de opdrachten met de opgegeven opdracht nummers of opdrachten van gebruikersnaam bovenaan de wachtrij te plaatsen. Voor dit commando is het niet mogelijk all te gebruiken als printernaam. up printernaam Schakel een printer in. Het omgekeerde van het commando down. Equivalent aan start gevolgd door enable. &man.lpc.8; accepteert bovenstaande commando's op de opdrachtregel. Als er geen commando's worden gegeven, schakelt &man.lpc.8; over op een interactieve modus, waar opdrachten gegeven kunnen worden totdat het commando exit, quit of einde-van-bestand wordt gegeven. Alternatieven voor het standaard wachtrijsysteem Na het lezen van deze handleiding, heeft de lezer zo'n beetje alles gelezen wat er te leren valt over het wachtrijsysteem LPD zoals het te vinden is in &os;. Er zijn veel tekortkomingen te onderkennen, wat vanzelf leidt tot de vraag: Welke andere wachtrijsystemen zijn er beschikbaar (en werken onder &os;)? LPRng - LPRng - - LPRng, dat LPR: the + LPRngLPRng, dat LPR: the Next Generation betekent, is een compleet herschreven PLP. Patrick Powell en Justin Mason (de voornaamste beheerder van PLP) hebben samengewerkt om LPRng te maken. De thuispagina voor LPRng is . CUPS - CUPS - - CUPS, het Common UNIX + CUPSCUPS, het Common UNIX Printing System, voorziet in een overzetbare printlaag voor &unix;-achtige besturingssystemen. Het is ontwikkeld door Easy Software Product, om een standaard afdrukoplossing voor alle &unix;-producenten en gebruikers te promoten. CUPS gebruikt het Internet Printing Protocol (IPP) als basis voor het beheren van afdrukopdrachten en wachtrijen. De protocollen Line Printer Daemon (LPD), Server Message Block (SMB) en AppSocket (ook bekend als JetDirect) worden ook ondersteund met minder functionaliteit. CUPS biedt bladeren naar netwerkprinters en &postscript; Printer Description (PPD) gebaseerde afdrukopties om echt printen onder &unix; te ondersteunen. De thuispagina voor CUPS is . HPLIP - HPLIP - - HPLIP, het HP &linux; Imaging and + HPLIPHPLIP, het HP &linux; Imaging and Printing systeem, is een suite van programma's ontwikkeld door HP dat printen, scannen en faxen voor toepassingen van HP ondersteunt. Deze suite van programma's maakt gebruikt van het printsysteem CUPS als een backend voor sommige van de printmogelijkheden. De thuispagina voor HPLIP is . Problemen oplossen Na het uitvoeren van een simpele test met &man.lptest.1; is mogelijk een van onderstaande resultaten verkregen, in plaats van de juiste uitvoer: Het werkte na enige tijd of er kwam geen volle pagina. De printer drukte bovenstaande af, maar wachtte enige tijd zonder iets te doen. Het was zelfs nodig om een PRINT REMAINING, of FORM FEED-knop op te printer in te drukken om enig resultaat te krijgen. Als dit het geval is, dan stond de printer waarschijnlijk te wachten of er nog meer gegevens van de opdracht zouden komen, alvorens iets af te drukken. Om dit probleem op te lossen, kan het tekstfilter worden aangepast zodat deze een FORM FEED-karakter (of wat er ook nodig is) naar de printer stuurt. Dit is meestal voldoende om een printer zover te krijgen om tekst af te drukken die zich nog in de interne buffer bevindt. Het is ook nuttig om er zeker van te zijn dat elke afdrukopdracht eindigt op een hele pagina, zodat de volgende opdracht niet ergens midden op de laatste pagina van de vorige opdracht begint. De volgende vervanging voor het shellscript /usr/local/libexec/if-simple drukt een form feed af nadat de opdracht naar een printer is gestuurd: #!/bin/sh # # if-simple - Eenvoudige tekst invoerfilter voor lpd # Geďinstalleerd in /usr/local/libexec/if-simple # # Kopieert eenvoudig stdin naar stdout. Negeer alle filterargumenten. # Schrijft een form feed karakter (\f) na het afdrukken van de opdracht. /bin/cat && printf "\f" && exit 0 exit 2 De opdracht produceerde een getrapt effect. Het resultaat ziet er als volgt uit: !"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 #$%&'()*+,-./0123456 MS-DOS OS/2 ASCII Dit krijgen slachtoffers van het trapeffect te zien. Het wordt veroorzaakt door conflicterende interpretaties van de karakters die een regeleinde aangeven. &unix;-achtige besturingssystemen gebruiken een enkel karakter: ASCII-code 10, de line feed (LF). &ms-dos;, &os2; en andere besturingssystemen gebruiken twee karakters: ASCII-code 10 en ASCII-code 13 (de carriage return, CR). Veel printers gebruiken de &ms-dos;-conventie voor het representeren van regeleinden. Als onder &os; wordt afgedrukt, bevat de tekst alleen het line feed-karakter. Na het zien van een line feed-karakter vervolgt de printer zijn werk op de volgende regel, maar behoudt dezelfde horizontale positie op de pagina voor het afdrukken van het volgende teken. Hier is de carriage return voor bedoeld: om het volgende karakter af te drukken aan de linkerkant van de pagina. Dit is wat &os; wil dat de printer doet: Printer ontvangt CR Printer drukt CR af Printer ontvangt LF Printer drukt CR + LF af Hier volgen een aantal manieren om dit te bereiken: Gebruik de instellingentoetsen of het bedieningspaneel van de printer om de interpretatie van deze karakters aan te passen. Controleer de handleiding van de printer om uit te vinden hoe dit moet. Als een systeem in een ander besturingssysteem dan &os; wordt opgestart, kan het nodig zijn een printer opnieuw in te stellen, zodat die een interpretatie voor CR- en LF-karakters gebruikt die bij dat andere besturingssysteem horen. Het kan de voorkeur genieten een van onderstaande oplossingen te gebruiken. Zorg dat het seriële lijnstuurprogramma van &os; automatisch LF naar CR+LF converteert. Dit werkt natuurlijk alleen voor printers op een seriële poort. Gebruik de optie ms# en zet de modus onlcr in het bestand /etc/printcap voor de printer om deze functionaliteit in te schakelen. Stuur een escape-code naar een printer om tijdelijk LF-karakters anders te behandelen. Raadpleeg hiervoor de handleiding van de printer om escape-codes te achterhalen die de printer ondersteunt. Als de juiste escape-code is gevonden, moet de tekstfilter worden aangepast zodat deze eerst de code stuurt en vervolgens de afdrukopdracht. PCL Hier volgt een eenvoudig tekstfilter voor printers die HP PCL-escape-codes begrijpen. Dit filter zorgt dat een printer LF-karakters behandelt als LF en CR, vervolgens verstuurt het de opdracht en tot slot een form feed om de laatste pagina in de opdracht uit te voeren. Het zou met alle HP printers moeten werken. #!/bin/sh # # hpif - Eenvoudig tekst invoerfilter voor lpd voor HP PCL-printers # Geďnstalleerd in /usr/local/libexec/hpif # # Kopieert eenvoudig stdin naar stdout. Negeert alle filterargumenten. # Vertelt de printer om LF te zien als CR+LF. # Werpt de pagina uit na voltooiing. printf "\033&k2G" && cat && printf "\033&l0H" && exit 0 exit 2 Nu volgt een voorbeeldbestand /etc/printcap voor host orchid. Er is een printer aangesloten op de eerste parallelle poort; een HP LaserJet 3Si, genaamd teak. Die gebruikt bovenstaand script als tekstfilter: # # /etc/printcap voor host orchid # teak|hp|laserjet|HP LaserJet 3Si:\ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif: De regels zijn over elkaar afgedrukt. De printer is nooit een regel opgeschoven. Alle regels tekst lopen over elkaar en zijn op dezelfde regel afgedrukt. Dit probleem is het omgekeerde van het trapeffect, zoals boven beschreven, en is veel zeldzamer. Ergens worden de LF-karakters die &os; gebruikt om een regel te eindigen gezien als CR-karakters om de afdruklocatie te verplaatsen naar de linkerkant van het papier, zonder óók een regel naar beneden te gaan. Gebruik de instellingentoetsen, of het bedieningspaneel van de printer om de volgende interpretatie van LF en CR af te dwingen: Printer ontvangt Printer drukt af CR CR LF CR + LF De printer is karakters kwijt. Tijdens het afdrukken heeft de printer een paar karakters per regel niet afgedrukt. Het kan zijn dat het probleem erger werd naarmate de printer zijn werk deed, steeds meer karakters verliezend. Het probleem is dat de printer de snelheid waarmee de computer gegevens over een seriële lijn stuurt niet bij kan houden (dit probleem zou zich niet voor moeten doen met printers op een parallelle poort). Er zijn twee manieren om dit probleem te verhelpen: Als de printer XON/XOFF flow-control ondersteunt, zorg dan dat &os; dit gebruikt door de modus ixon in de optie ms# te specificeren. Als de printer de Request to Send / Clear to Send hardware-handshake ondersteunt, (ook bekend als RTS/CTS), specificeer dan de modus crtscts in de optie ms#. Zorg dat de bedrading van de kabel die printer met de computer verbindt juist is voor hardware flow-control. Er werd onzin afgedrukt. Het lijkt alsof de printer willekeurige onzin afdrukte en niet de gewenste tekst. Dit is meestal een ander symptoom van verkeerde communicatieparameters voor een seriële printer. Controleer de bps-snelheid in de optie br en de instelling voor pariteit in de optie ms#. Wees er zeker van dat de printer dezelfde instellingen gebruikt als in het bestand /etc/printcap worden opgegeven. Er gebeurde niets. Als er niets gebeurde, ligt het probleem waarschijnlijk bij &os; en niet bij de hardware. Voeg de optie logboekbestand (lf) toe in /etc/printcap voor de betreffende printer. Hier is bijvoorbeeld de definitie voor rattan met de optie lf: rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple:\ :lf=/var/log/rattan.log Probeer vervolgens nogmaals af te drukken. Controleer het logboekbestand (in dit voorbeeld /var/log/rattan.log) op mogelijke foutmeldingen. Probeer op basis van deze melding het probleem te verhelpen. Als er geen optie lf is opgegeven, gebruikt LPD /dev/console als standaard.