Index: translations/nl_NL.ISO8859-1/articles/contributing/article.xml =================================================================== --- translations/nl_NL.ISO8859-1/articles/contributing/article.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/articles/contributing/article.xml (revision 40367) @@ -1,604 +1,577 @@ %entities; ]>
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 - (SGML is niet moeilijk te leren, maar er is geen bezwaar + (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 + 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. Echter, voor patches die - substantieel een gebied aan code wijzigen, kan een diff in - contextuitvoerformaat gegenereerd door - diff -c leesbaarder en dus verkiesbaar - zijn. + diff -u. diff - Bijvoorbeeld: - - &prompt.user; diff -c oudbestand nieuwbestand - - of - - &prompt.user; diff -c -r oudemap nieuwemap - - zal zo'n verzameling van contextdiffs aanmaken voor het gegeven - broncodebestand of maphiërarchie. - - Evenzo zal - &prompt.user; diff -u oudbestand nieuwbestand of - &prompt.user; diff -u -r oudemap nieuwemap + &prompt.user; diff -u -r -N oudemap nieuwemap - hetzelfde doen, maar dan in het verenigde diff-formaat. + zouden een verzameling van verenigde diffs genereren voor het + gegeven bronbestand of maphiërarchie. - Zie de hulppagina van &man.diff.1; voor meer details. + 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-dingen die de - verdere distributie ervan dicteren of als u eenvoudigweg niet - klaar bent om het uit te geven zonder een voorafgaand nauwer - review, dan dient u het direct naar &a.core; te sturen in plaats - van het met &man.send-pr.1; op te sturen. De &a.core; bereikt + 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 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. 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$ + $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 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 7321 Brockway Dr. Boulder, CO 80303 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 Donations Liaison Office. - - - - Internettoegang doneren - - We kunnen altijd nieuwe spiegelsites voor FTP, WWW, of - cvsup gebruiken. Als u zo'n spiegel wilt - hosten, bekijk dan het artikel Mirroring &os; - voor meer informatie.
Index: translations/nl_NL.ISO8859-1/articles/contributing-ports/article.xml =================================================================== --- translations/nl_NL.ISO8859-1/articles/contributing-ports/article.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/articles/contributing-ports/article.xml (revision 40367) @@ -1,877 +1,877 @@ %entities; ]>
Bijdragen aan de &os; Portscollectie Abstract Dit artikel beschrijft de manieren waarop een individu kan bijdragen aan de &os; Portscollectie. Vertaald door René Ladan. Sam Lawrance Mark Linimon &tm-attrib.freebsd; &tm-attrib.general; $FreeBSD$ $FreeBSD$ bijdragen aan ports Introductie De Portscollectie is een eeuwig werk-in-uitvoering. We willen onze gebruikers een reservoir van software van derde partijen bieden dat gemakkelijk te gebruiken, bijgewerkt, en van hoge kwaliteit is. We hebben mensen nodig die wat tijd en moeite investeren om ons dit doel te helpen bereiken. Iedereen kan erin betrokken raken, en er zijn vele manieren om dat te doen. Bijdragen aan ports is een uitstekende manier om te helpen om iets aan het project terug te geven. Of u nu op zoek bent naar een blijvende rol, of naar een uitdaging voor een regenachtige dag, wij stellen uw hulp zeer op prijs! Als een vrijwilliger kunt u doen en laten wat u wilt. We vragen echter wel dat u op de hoogte bent van wat andere leden van de &os;-gemeenschap van u verwachten. U doet er goed aan om dit te overwegen voordat u besluit om vrijwilliger te worden. Wat u kunt doen om te helpen Er zijn een aantal gemakkelijke manieren waarop u bij kunt dragen om de portsboom actueel en in een goede toestand te houden: Zoek wat leuke of nuttige software en creëer er een port voor. Er is een groot aantal niet-onderhouden ports. Wordt een onderhouder en adopteer een port. Als u een port gecreëerd of geadopteerd heeft, dient u op de hoogte te zijn van wat u als onderhouder moet doen. Als u op zoek bent naar een snelle uitdaging zou u een bug of een kapotte port kunnen repareren. Een nieuwe port creëeren Er is een apart document beschikbaar om u door het creëeren (en bijwerken) van een port te loodsen genaamd het Porter's Handbook. Het Porter's Handbook is het beste naslagwerk wat betreft het werken met het portssysteem. Het noemt details over hoe het portssysteem werkt en bespreekt aangeraden praktijken. Een niet-onderhouden port adopteren Een niet-onderhouden port kiezen Het beheer overnemen van ports die niet onderhouden worden is een uitstekende manier om betrokken te raken. Niet-onderhouden ports worden alleen bijgewerkt en gerepareerd wanneer iemand zich aanbiedt om eraan te werken. Er is een groot aantal ports dat niet onderhouden wordt. Het is een goed idee om met het adopteren van een port te beginnen die u regelmatig gebruikt. Voor niet-onderhouden ports staat de MAINTAINER op ports@FreeBSD.org. Een lijst van ports die niet onderhouden wordt en hun huidige fouten en probleemrapporten kan worden bekeken op het &os; Ports Monitoring System. Sommige ports beïnvloeden een groot aantal anderen vanwege afhankelijkheden en relaties als slaafport. Over het algemeen wensen we dat mensen wat ervaring hebben voordat ze zulke ports onderhouden. U kunt uitzoeken of een port wel of geen afhankelijkheden of slaafpoorten heeft door in een hoofdindex van ports genaamd INDEX te kijken. (De naam van het bestand varieert naar gelang de uitgave van &os;; bijvoorbeeld INDEX-8.) Sommige ports hebben conditionele afhankelijkheden die niet standaard in een bouw van INDEX worden opgenomen. We verwachten dat u zulke ports kunt herkennen door naar de Makefile van andere ports te kijken. Hoe een port te adopteren Zorg eerst dat u uw verantwoordelijkheden als onderhouder begrijpt. Lees ook het Porter's Handbook. Neem alstublieft niet meer werk op u dan dat u op een comfortabele manier aankunt. U kunt zo snel als u wilt het beheer van een niet-onderhouden port aanvragen. Stel MAINTAINER in op uw emailadres en stuur een PR (probleemrapport) in met de verandering. Als de port bouwfouten bevat of moet worden bijgewerkt, dan kunt u deze veranderingen in hetzelfde PR opnemen. Dit helpt omdat veel committers minder bereid zijn om beheer aan iemand toe te kennen die geen bekende geschiedenis met &os; heeft. Het insturen van PR's die bouwfouten repareren of ports bijwerken zijn de beste manier om er een op te bouwen. Stuur uw PR in met categorie ports en klasse change-request. Een committer zal uw PR nakijken, de veranderingen committen, en uiteindelijk het PR sluiten. Soms kan dit proces even duren (committers zijn ook vrijwilligers). De uitdaging voor port-onderhouders Deze sectie geeft u een idee waarom ports onderhouden moeten worden en schetst de verantwoordelijkheden van een onderhouder van een port. Waarom ports onderhoud nodig hebben Een port creëeren is een eenmalige taak. Er zeker van zijn dat een port actueel is en blijft bouwen en draaien is een voortdurende inspanning. Onderhouders zijn mensen die wat van hun tijd wijden aan het vervullen van deze doelen. De voornaamste reden waarom ports onderhoud nodig hebben is om het nieuwste en beste van software van derde partijen aan de &os;-gemeenschap te geven. Een aanvullende uitdaging is om individuele ports werkend te houden binnen het evoluerende raamwerk van de Portscollectie. Als onderhouder zult u de volgende uitdagingen moeten aangaan: Nieuwe versies en updates van software. Nieuwe versies en updates van bestaande geporteerde software komen continu beschikbaar, en moeten in de Portscollectie worden verwerkt om actuele software aan te bieden. Veranderingen aan afhankelijkheden. Als er significante wijzigingen zijn gemaakt aan de afhankelijkheden van uw port, kan het zijn dat de port moet worden bijgewerkt zodat het correct blijft werken. Veranderingen die afhankelijke ports beïnvloeden. Als andere ports afhankelijk zijn van een port die u onderhoudt, kan het zijn om veranderingen aan uw port met andere onderhouders te coördineren. Interactie met andere gebruikers, onderhouders, en ontwikkelaars. Een gedeelte van een onderhouder zijn is het vervullen van een ondersteunende rol. Er wordt niet van u verwacht dat u algemene ondersteuning biedt (maar we juichen het toe als u dat doet). U dient een centraal punt voor &os;-specifieke zaken met betrekking tot uw ports te bieden. Bugs oplossen. Een port kan vatbaar zijn voor bugs die specifiek zijn voor &os;. U dient deze bugs te onderzoeken en te repareren wanneer ze worden gerapporteerd. Het grondig testen van een port om problemen te identificeren voordat ze in de Portscollectie terechtkomen is nog beter. Veranderingen aan portsinfrastructuur en beleid. Af en toe worden die systemen die gebruikt worden om ports en pakketten te bouwen bijgewerkt of wordt er een nieuwe aanbeveling met betrekking tot de infrastructuur gemaakt. U dient van deze veranderingen op de hoogte te zijn indien ze betrekking hebben op uw ports en ze bijgewerkt moeten worden. Veranderingen aan het basissysteem. &os; is constant in ontwikkeling. Veranderingen aan software, bibliotheken, de kernel, of zelfs beleidsveranderingen kunnen noodzakelijke veranderingen aan ports veroorzaken. Verantwoordelijkheden als onderhouder Houd uw ports actueel Deze sectie schetst het proces dat gevolgd wordt om uw ports actueel te houden. Dit is een overzicht. Meer informatie over het bijwerken van een port is beschikbaar in het Porter's Handbook. Kijk uit naar updates Houd de stroomopwaartse leverancier in de gaten wat betreft nieuwe versies, updates, en beveiligingsreparaties voor de software. Mailinglijsten met aankondigingen of webpagina's met nieuws zijn hiervoor handig. Soms zullen gebruikers contact met u opnemen en vragen wanneer uw port wordt bijgewerkt. Als u het druk hebt met andere dingen of u het om enige andere reden niet nu kunt bijwerken, vraag ze dan om u te helpen door een update te sturen. U kunt ook geautomatiseerde email van de &os; Ports Version Check ontvangen die u informeert of er een nieuwe versie van het distributiebestand van uw port beschikbaar is. Meer informatie over dat systeem (inclusief hoe toekomstige emails te stoppen) staat in het bericht. Verwerk veranderingen Verwerk veranderingen in de port wanneer ze beschikbaar komen. U dient een patch aan te kunnen maken tussen de originele port en uw bijgewerkte port. Herzie en test Herzie en test uw veranderingen grondig: Bouw, installeer, en test uw port op zoveel mogelijk platforms en architecturen. Het is gebruikelijk dat een port op één tak of platform werkt maar faalt op een ander. Zorg dat de afhankelijkheden van uw port compleet zijn. De aangeraden manier om dit te doen is door uw eigen tinderbox voor ports te installeren. Bekijk bronnen voor meer informatie. Controleer of de pakketlijst actueel is. Dit omvat het toevoegen van nieuwe bestanden en mappen en het verwijderen van ongebruikte regels. Verifieer uw port met &man.portlint.1; als gids. Bekijk bronnen voor belangrijke informatie over het gebruik van portlint. Overweeg of veranderingen aan uw port andere ports zouden kunnen kapotmaken. Bespreek de veranderingen met de onderhouders van die ports als dit het geval is. Dit is speciaal van belang als uw update de versie van de gedeelde bibliotheek verandert; in dit geval dienen de afhankelijke ports minstens een verhoging van de PORTREVISION te krijgen zodat ze automatisch worden bijgewerkt door geautomatiseerde gereedschappen als portmaster of &man.portupgrade.1;. Stuur veranderingen in Verzend uw update door een PR met een uitleg van de veranderingen en een patch die de verschillen tussen de originele port en de bijgewerkte port bevat in te sturen. Bekijk alstublieft Probleemrapporten voor &os; schrijven voor informatie over hoe een echt goed PR te schrijven. Stuur alstublieft geen &man.shar.1;-archief van de gehele port; gebruik in plaats daarvan &man.diff.1; -ruN. Op deze manier kunnen committers veel gemakkelijker zien welke veranderingen er precies gemaakt worden. De sectie in het Porter's Handbook over Upgrading bevat meer informatie hierover. Wacht Op een gegeven moment zal een committer uw PR behandelen. Dit kan minuten, maar ook weken duren — ben dus alstublieft geduldig. Geef feedback Als een committer een probleem vindt in uw veranderingen zullen ze het waarschijnlijk aan u terugkoppelen. Een snel antwoord helpt om uw PR sneller gecommit te krijgen, en is beter voor het behouden van een discussie wanneer er geprobeerd wordt om problemen op te lossen. En ten slotte Uw veranderingen zullen gecommit worden en uw port zal bijgewerkt zijn. Het PR wordt vervolgens door de committer gesloten. Dat is alles! Zorg ervoor dat uw ports correct blijven bouwen Deze sectie gaat over het ontdekken en oplossen van problemen die verhinderen dat uw ports correct bouwen. &os; garandeert alleen dat de Portscollectie op de -STABLE-takken werkt. U dient 7-STABLE of 8-STABLE te draaien, bij voorkeur de laatste. In theorie zou het voldoende moeten zijn om de nieuwste uitgave van elke STABLE-tak te draaien (aangezien de ABI's niet horen te veranderen), maar als u die tak kunt draaien is dat beter. Aangezien de meerderheid van &os;-installaties op PC-compatibele machines draait (wat wordt aangeduid als de i386-architectuur), verwachten wij van u dat u de port op die architectuur werkend houdt. We prefereren dat de ports ook op de amd64-architectuur draaien. Het is prima om hulp te vragen als u een van deze machines niet heeft. De gebruikelijke manieren om te falen voor niet-i386 machines zijn dat de originele programmeurs aannamen dat, bijvoorbeeld, pointers ints zijn of dat een relatief lakse oudere gcc compiler werd gebruikt. Steeds meer reorganiseren applicatie-auteurs hun code om deze aannames te verwijderen — maar als de auteur de code niet actief onderhoudt, zult u dit zelf moeten doen. Deze taken moet u uitvoeren om ervoor te zorgen dat uw port gebouwd kan worden: Kijk uit naar bouwfouten Controleer regelmatig het geautomatiseerde portbouwcluster, pointyhat, en de - scanner voor distributiebestanden om te zien + url="http://portscout.FreeBSD.org">scanner voor + distributiebestanden om te zien of er ports zijn die u onderhoudt die er niet in slagen om gebouwd of opgehaald te worden (bekijk bronnen voor meer informatie over deze systemen). Rapportages over mislukkingen kunnen ook via email van andere gebruikers of geautomatiseerde systemen tot u komen. Verzamel informatie Als u eenmaal op de hoogte bent van een probleem, verzamel dan informatie die u helpt het op te lossen. Bouwfouten die door pointyhat worden gerapporteerd worden vergezeld door logs die aangeven waar het bouwen mislukte. Als de mislukking door een gebruiker aan u werd gerapporteerd, vraag ze dan om informatie te verzenden die u helpt om het probleem te vast te stellen, zoals: Bouwlogs De commando's en opties die gebruikt werden om de port te bouwen (inclusief opties die in /etc/make.conf zijn ingesteld) Een lijst met op hun systeem geïnstalleerde pakketten als aangegeven door &man.pkg.info.1; De versie van &os; die ze draaien als aangegeven door &man.uname.1; -a Wanneer hun Portscollectie voor het laatst was bijgewerkt Wanneer hun bestand INDEX voor het laatst was bijgewerkt Onderzoek en zoek een oplossing Helaas is er geen rechttoe-rechtaan proces dat gevolgd kan worden om dit te doen. Herinner: vraag om hulp als u vast zit! De &a.ports; is een goede plaats om te starten, en de stroomopwaartse ontwikkelaars zijn vaak zeer behulpzaam. Stuur veranderingen in Net zoals bij het bijwerken van een port, dient u nu de veranderingen te integreren, te herzien en te testen, uw veranderingen als een PR in te sturen, en feedback te geven als dat nodig is. Stuur patches naar de stroomopwaartse auteurs In sommige gevallen moet u patches maken om de port op &os; te laten draaien. Sommige (maar niet alle) stroomopwaartse auteurs zullen zulke patches in hun code accepteren voor de volgende uitgave. Als dit zo is, kan dit zelfs hun gebruikers op andere op BSD-gebaseerde systemen helpen en misschien dubbel werk besparen. Overweeg alstublieft om geschikte patches naar de auteurs te zenden als teken van goede wil. Onderzoek foutrapporten en PR's die aan uw port gerelateerd zijn Deze sectie gaat over het ontdekken en repareren van bugs. &os;-specifieke bugs worden in het algemeen veroorzaakt door aannames over de bouw- en draaiomgevingen die niet voor &os; gelden. U zult zo'n soort fout minder snel aantreffen, maar het kan subtieler en moeilijker zijn om het vast te stellen. De onderstaande taken moet u uitvoeren om ervoor te zorgen dat uw port als bedoeld blijft werken: Reageer op bugrapporten Bugs kunnen per email via de GNATS Probleemrapportendatabase aan u worden gerapporteerd. Bugs kunnen ook direct door gebruikers aan u gerapporteerd worden. U dient binnen 14 dagen op PR's en andere rapporten te reageren, probeer hier alstublieft niet zo lang over te doen. Probeer zo snel mogelijk te reageren, zelfs als het alleen maar is om te zeggen dat u wat meer tijd nodig heeft voordat u aan het PR kan werken. Als u niet na 14 dagen heeft gereageerd, mag elke committer via een maintainer-timeout uit een PR committen waarop u niet heeft gereageerd. Verzamel informatie Als degene die de bug heeft gerapporteerd niet ook een reparatie heeft aangeleverd, zult u informatie moeten verzamelen die u in staat stelt om er een te genereren. Als de bug reproduceerbaar is, kunt u zelf de meeste vereiste informatie verzamelen. Zo niet, vraag dan degene die de bug rapporteerde om de informatie voor u te verzamelen, zoals: Een gedetailleerde beschrijving van hun acties, verwacht gedrag en eigenlijk gedrag van het programma Kopiën van invoergegevens die de bug aanzwengelden Informatie over hun bouw- en uitvoeromgeving — bijvoorbeeld een lijst van geïnstalleerde pakketten en de uitvoer van &man.env.1; Coredumps Stacktraces Elimineer onjuiste rapporten Sommige bugrapporten kunnen onjuist zijn. De gebruiker kan het programma simpelweg verkeerd gebruikt hebben; of hun geïnstalleerde pakketten kunnen verouderd zijn en bijgewerkt moeten worden. Soms is een gerapporteerde fout niet specifiek voor &os;. Rapporteer in dit geval de bug naar de stroomopwaartse ontwikkelaars. Als u de bug kunt repareren, kunt u de port ook patchen zodat de reparatie is toegepast voor de volgende stroomopwaartse uitgave. Vind een oplossing Net als met bouwfouten dient u een oplossing voor het probleem te vinden. Nogmaals, vraag om hulp als u vastzit! Stuur veranderingen in of keur ze goed Net als bij het bijwerken van een port, dient u nu de veranderingen te integreren, ze te herzien en te testen, en ze in een PR op te sturen (of een vervolg te verzenden als er al een PR voor het probleem bestaat). Als een andere gebruiker veranderingen in het PR heeft ingezonden, kunt u ook een vervolg sturen waarin u zegt of u de veranderingen wel of niet goedkeurt. Ondersteuning bieden Deel van een onderhouder zijn is ondersteuning bieden — niet noodzakelijk voor de software in het algemeen — maar voor de port en alle &os;-specifieke rariteiten en problemen. Gebruikers kunnen contact met u opnemen voor vragen, suggesties, problemen, en patches. Meestal zal hun correspondentie specifiek voor &os; zijn. Af en toe zult u uw diplomatieke vaardigheden moeten gebruiken, en gebruikers die algemene ondersteuning zoeken vriendelijk naar de geschikte bronnen verwijzen. Minder vaak zult u iemand tegenkomen die vraagt waarom de RPMs niet actueel zijn of hoe ze de software onder Foo Linux kunnen draaien. Grijp deze kans om ze te vertellen dat uw port actueel is (als het dat is, uiteraard!) en stel voor dat ze &os; uitproberen. Soms zullen gebruikers en ontwikkelaars besluiten dat u een druk persoon bent wiens tijd waardevol is en wat werk van u overnemen. Ze kunnen bijvoorbeeld: een PR insturen of u patches toesturen om uw port bij te werken, een PR onderzoeken en er misschien een reparatie voor aanleveren, of op andere wijze veranderen aan uw port insturen. In deze gevallen is uw hoofdplicht om op tijd te reageren. Nogmaals, de timeout voor niet-reagerende onderhouders is 14 dagen. Na deze periode mogen niet-goedgekeurde veranderingen gecommit worden. Ze hebben de moeite genomen om dit voor u te doen; dus probeer tenminste op tijd te reageren. Daarna dient u zo snel mogelijk hun veranderingen te herzien, goed te keuren, te wijzigen, of met hen te bediscussiëren. Als u ervoor kunt zorgen dat ze het gevoel hebben dat hun bijdrage gewaardeerd wordt (wat zo hoort te zijn), dan heeft u een grotere kans om ze te overtuigen om in de toekomst meer voor u te doen :-). Een kapotte port vinden en repareren Er zijn twee zeer goede plaatsen om een port te vinden die wat aandacht nodig heeft. U kunt de webinterface voor de probleemrapportdatabase gebruiken om onopgeloste PR's te doorzoeken en ze te bekijken. De meerderheid van port-PR's zijn updates, maar met een beetje zoeken door en uitkammen van de samenvattingen zou u iets moeten kunnen vinden wat interessant is om aan te werken (de klasse sw-bug is een goede plaats om te beginnen). De andere plaats is het &os; Ports Monitoring System. Zoek in het bijzonder naar niet-onderhouden ports met bouwfouten en ports die als BROKEN zijn gemerkt. Het is ook goed om veranderingen voor een onderhouden port te versturen, maar denk eraan om de onderhouder te vragen in het geval dat ze al aan het probleem werken. Als u eenmaal een bug of probleem heeft gevonden, verzamel dan informatie, onderzoek, en repareer het! Als er een bestaand PR is, ga daar dan mee verder. Maak anders een nieuw PR aan. Uw veranderingen zullen worden herzien en, als alles goed is, gecommit. Wanneer het tijd wordt om te stoppen Wanneer uw interesses en toewijdingen veranderen, zult u erachter komen dat u niet langer tijd heeft om sommige van (of al) uw ports-bijdragen voort te zetten. Dat is prima! Laat ons weten als u een port niet langer gebruikt of om andere redenen de tijd of interesse heeft verloren om ports te onderhouden. Op deze manier kunnen we verder gaan en andere mensen toestaan om te proberen om aan bestaande problemen met de port te werken zonder op uw antwoord te wachten. Herinner dat &os; een vrijwilligersproject is, dus als het onderhouden van een port niet langer leuk is, is het waarschijnlijk tijd om iemand anders het te laten doen! In elk geval houdt het Ports Management Team (portmgr) zich het recht voor om u als onderhouder te wissen als u uw port voor enige tijd niet actief heeft onderhouden. (Momenteel is dit 3 maanden.) Hiermee bedoelen we dat er onopgeloste problemen of wachtende updates zijn waaraan binnen die tijd niet gewerkt is. Bronnen voor onderhouders en vrijwilligers voor ports Het Porter's Handbook is uw overlevingsgids voor het portssysteem. Houd het in de buurt! Probleemrapporten voor &os; schrijven beschrijft hoe het beste een PR geformuleerd en ingezonden kan worden. In 2005 werden er meer dan elfduizend port-PR's ingestuurd! Het volgen van dit artikel helpt ons enorm om de tijd te verkorten die nodig is om uw PR's te behandelen. De Probleemrapportendatabase. Pointyhat is het bouwcluster voor ports. U kunt Pointyhat gebruiken om bouwlogs van ports over alle architecturen en grote uitgaven te controleren. Het &os; Ports Monitoring System kan u kruislingse informatie over ports zoals bouwfouten en probleemrapporten laten zien. Als u een onderhouder bent kunt u het gebruiken om de bouwstatus van uw ports te controleren. Als een vrijwilliger kunt u het gebruiken om kapotte en niet-onderhouden ports te vinden die gerepareerd moeten worden. De scanner voor distributiebestanden voor - &os; ports kan u ports laten zien waarvoor + url="http://portscout.FreeBSD.org">scanner voor distributiebestanden + voor &os; ports kan u ports laten zien waarvoor de distributiebestanden niet kunnen worden opgehaald. U kunt uw eigen ports controleren of u kunt het gebruiken om ports te vinden waarvan de MASTER_SITES moet worden bijwerkt. De tinderbox voor ports is de meest grondige manier om een port door de gehele cyclus van installatie, inpakken, en deïnstallatie te halen. Het biedt een opdrachtregelinterface maar kan ook via een webinterface worden beheerd. Meer informatie staat op de marcuscom tinderbox homepage. &man.portlint.1; is een applicatie die gebruikt kan worden om te verifiëren dat uw port zich aan vele belangrijke stilistische en functionele richtlijnen houdt. portlint is een eenvoudige heuristieke applicatie, dus dient u het alleen als gids te gebruiken. Als portlint veranderingen voorstelt die onredelijk lijken, raadpleeg dan het Porter's Handbook of vraag om advies. De &a.ports; dient voor algemene ports-gerelateerde discussies. Het is een goede plaats om hulp te vragen. U kunt zich aanmelden, of de lijstarchieven lezen en doorzoeken. Het lezen van de archieven van de &a.ports-bugs; en de &a.cvs-ports; kan ook interessant zijn.
Index: translations/nl_NL.ISO8859-1/books/Makefile =================================================================== --- translations/nl_NL.ISO8859-1/books/Makefile (revision 40366) +++ translations/nl_NL.ISO8859-1/books/Makefile (revision 40367) @@ -1,13 +1,13 @@ # $FreeBSD$ # # %SOURCE% en_US.ISO8859-1/books/Makefile -# %SRCID% 38826 +# %SRCID% 40258 # SUBDIR = handbook SUBDIR += faq ROOT_SYMLINKS= handbook DOC_PREFIX?= ${.CURDIR}/../.. .include "${DOC_PREFIX}/share/mk/doc.project.mk" Index: translations/nl_NL.ISO8859-1/books/handbook/advanced-networking/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/advanced-networking/chapter.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/advanced-networking/chapter.xml (revision 40367) @@ -1,6772 +1,6772 @@ René Ladan Vertaald door Geavanceerde netwerken Samenvatting Dit hoofdstuk zal een aantal onderwerpen over geavanceerde netwerken behandelen. Na het lezen van dit hoofdstuk is bekend: De beginselen van gateways en routes. Hoe &ieee; 802.11- en &bluetooth;-apparaten te installeren. Hoe &os; als een bridge te laten werken. Hoe een schijfloze machine vanaf het netwerk op te starten. Hoe opstarten met netwerk-PXE en een NFS-root-bestandssysteem te installeren. Hoe Network Address Translation te installeren. Hoe twee computers via PLIP met elkaar te verbinden. Hoe IPv6 op een &os;-machine te installeren. Hoe ATM in te stellen. Hoe de mogelijkheden van CARP, het Common Address Redundancy Protocol, aan te zetten en te benutten. Voordat dit hoofdstuk gelezen wordt, dient de lezer: De beginselen van de scripts in /etc/rc te begrijpen. Bekend te zijn met basisnetwerktermen. Te weten hoe een nieuwe &os;-kernel in te stellen en te installeren (). Te weten hoe aanvullende software van derde partijen te installeren (). Coranth Gryphon Bijgedragen door Gateways en routes routing gateway subnet Indien een machine een andere machine over een netwerk wil vinden, dient er een mechanisme te zijn dat beschrijft hoe van de ene naar de andere machine te gaan. Dit wordt routen genoemd. Een route is een gedefinieerd adressenpaar: een bestemming en een gateway. Het paar geeft aan dat door deze gateway gecommuniceerd moet worden om bij deze bestemming aan te komen. Er zijn drie soorten bestemmingen: individuele host, subnetten en standaard. De standaardroute wordt gebruikt indien geen van de andere routes van toepassing zijn. Verderop wordt verder op standaardroutes ingegaan. Er zijn ook drie soorten gateways: individuele hosts, interfaces (ook wel verbindingen genoemd), en Ethernet-hardware-adressen (MAC-adressen). Een voorbeeld Om de verschillende aspecten van routen te illustreren, wordt het volgende voorbeeld van netstat gebruikt: &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 standaardroute De eerste twee regels geven de standaardroute (die behandeld wordt in de volgende sectie) en de localhost-route aan. teruglusapparaat De interface (kolom Netif) dat deze routeertabel aangeeft om voor localhost te gebruiken is lo0, ook bekend als het teruglusapparaat. Dit geeft aan dat alle verkeer voor deze bestemming intern gehouden moet worden, in plaats van het over het LAN te sturen, aangezien het alleen aankomt op de plaats waar het verzonden werd. Ethernet MAC-adres Het volgende dat opvalt zijn de adressen die beginnen met 0:e0:. Dit zijn Ethernet-hardware adressen, ook bekend als MAC-adressen. &os; zal automatisch elke host (test0 in het voorbeeld) op het lokale Ethernet identificeren en een route voor die host toevoegen, direct van deze host over de Ethernet-interface, ed0. Er is ook een timeout (kolom Expire) met deze routesoort geassocieerd, die gebruikt wordt indien er binnen een bepaalde tijd geen bericht komt van de host. Indien dit gebeurt, wordt de route naar deze host automatisch verwijderd. Deze hosts worden geïdentificeerd door middel van een mechanisme dat bekend staat als RIP (Routing Information Protocol), dat routes naar lokale hosts bepaald door middel van een kortste-pad algoritme. subnet &os; zal ook subnetroutes voor het lokale subnet toevoegen (10.20.30.255 is het broadcast-adres voor het subnet 10.20.30, en example.com is de domeinnaam die bij dat subnet hoort). De aanduiding link#1 verwijst naar de eerste Ethernetkaart in de machine. Merk op dat voor hen geen aanvullende interface is gespecificeerd. Voor beide groepen (lokale netwerkhosts en lokale subnetten) worden de routes automatisch ingesteld door een daemon genaamd routed. Indien dit niet draait, zullen alleen routes die statisch gedefinieerd (i.e., expliciet vermeld zijn) bestaan. De regel met host1 verwijst naar deze host, het kent deze door het Ethernetadres. Aangezien het de zendende host is, weet &os; dat het de teruglus-interface (lo0) moet gebruiken, in plaats van het over de Ethernet-interface te verzenden. De twee regels met host2 geven een voorbeeld van wat er gebeurt als een alias met &man.ifconfig.8; gebruikt wordt (in de sectie over Ethernet staan redenen waarom dit gedaan wordt). Het symbool => na de interface lo0 zegt dat niet alleen de teruglus gebruikt wordt (aangezien dit adres ook verwijst naar de lokale host), maar specifiek dat dit een alias is. Zulke routes verschijnen alleen op de hosts die de alias ondersteunen; alle andere hosts op het lokale netwerk vermelden simpelweg een regel met link#1 voor zulke routes. De laatste regel (bestemming subnet 224) heeft te maken met multicasten, wat in een andere sectie besproken wordt. Als laatste staan in de kolom Flags verschillende attributen. Hieronder staat een korte tabel met enkele van deze vlaggen en hun betekenis: U Up: De route is actief. H Host: De bestemming van de route is een enkele host. G Gateway: Stuur alles voor deze bestemming door naar dit verre systeem, dat zoekt daar uit waar het verder naar te sturen. S Statisch: Deze route was handmatig ingesteld, dus niet automatisch door het systeem aangemaakt. C Kloon: Maakt op basis van deze route een nieuwe route aan voor machines waarmee verbinding wordt gemaakt. Dit soort routes wordt gewoonlijk in lokale netwerken gebruikt. W WasGekloond: Geeft aan dat een route automatisch was ingesteld gebaseerd op een LAN (kloon)-route. L Verbinding: De route maakt gebruik van verwijzingen naar Ethernet-hardware. Standaardroutes standaardroute Wanneer het lokale systeem een verbinding met een verre host moet maken, controleert het de routeertabel op reeds bekende paden. Indien de verre host binnen een subnet valt waarvan bekend is hoe het bereikt kan worden (gekloonde routes), controleert het systeem of het met de daarbij behorende interface verbinding kan maken. Indien alle bekende paden falen, heeft het systeem één laatste mogelijkheid: de standaardroute. Deze route is een speciaal soort gateway-route (gewoonlijk de enig aanwezige in het systeem) en is altijd gemarkeerd met een c in het vlaggenveld. Voor hosts op een LAN staat deze gateway ingesteld op de machine die een directe verbinding met de buitenwereld heeft (via een PPP-verbinding, DSL, kabelmodem, T1, of een ander netwerkinterface). Indien de standaardroute wordt ingesteld voor een machine die zelf als gateway naar de buitenwereld werkt, zal de standaardroute de gateway-machine van de internetprovider zijn. Hieronder volgt een voorbeeld van standaardroutes. Dit is een veelgebruikte opstelling: [Lokaal2] <--ether--> [Lokaal1] <--PPP--> [IP-Serv] <--ether--> [T1-GW] De hosts Lokaal1 en Lokaal2 staan op deze site. Lokaal1 is verbonden met een internetprovider via een inbel-PPP-verbinding. Deze PPP-server is door een LAN verbonden met een andere gateway-computer door een externe interface naar de Internet-feed van de internetprovider. De standaardroutes voor de machines zijn: Host Standaard gateway Interface Lokaal2 Lokaal1 Ethernet Lokaal1 T1-GW PPP Een veelvoorkomende vraag is Waarom (of hoe) moet worden ingesteld dat T1-GW de standaard gateway is voor Lokaal1, in plaats van de server van de internetprovider waarmee het verbonden is?. Onthoud dat, aangezien de PPP-interface een adres gebruikt op het lokale netwerk van de internetprovider voor deze kant van de verbinding, routes voor alle andere machines op het lokale netwerk van de internetprovider automatisch aangemaakt worden. Daarom is het al bekend hoe de machine T1-GW bereikt kan worden, dus is de tussenstap dat het verkeer eerst naar de server van de internetprovider gestuurd wordt niet nodig. Het is gebruikelijk om het adres X.X.X.1 te gebruiken als het gateway-adres voor het lokale netwerk. Dus (gebruikmakend van hetzelfde voorbeeld), indien de lokale klasse-C adresruimte 10.20.30 was en de internetprovider 10.9.9 gebruikte, zouden de standaardroutes als volgt zijn: Host Standaardroute Lokaal2 (10.20.30.2) Lokaal1 (10.20.30.1) Lokaal1 (10.20.30.1, 10.9.9.30) T1-GW (10.9.9.1) De standaardroute kan eenvoudig in /etc/rc.conf gedefinieerd worden. In dit voorbeeld werd de volgende regel aan /etc/rc.conf van Lokaal2 toegevoegd: defaultrouter="10.20.30.1" Het is ook mogelijk dit met het commando &man.route.8; direct vanaf de opdrachtregel te doen: &prompt.root; route add default 10.20.30.1 Voor meer informatie over het handmatig manipuleren van netwerkrouteertabellen kan de hulppagina &man.route.8; geraadpleegd worden. Dual Homed machines dual homed hosts Er is nog één andere soort opstelling die behandeld dient te worden, en dat is een host die in twee verschillende netwerken zit. Technisch gezien telt elke machine die als gateway dienst doet (in bovenstaand voorbeeld door een PPP-verbinding te gebruiken) als een dual-homed host. Maar de term wordt echt alleen gebruikt om naar een machine te verwijzen die in twee LAN's zit. In het ene geval heeft de machine twee Ethernetkaarten, waarbij elke kaart een adres op de gescheiden subnetten heeft. Een alternatief is dat de machine slechts één Ethernetkaart heeft en gebruikt maakt van &man.ifconfig.8; aliasing. Het eerste wordt gebruikt indien er twee fysiek gescheiden Ethernet-netwerken in gebruik zijn, het laatste indien er één fysiek netwerksegment is, maar er twee logisch gescheiden subnetten zijn. In beide gevallen worden er routeertabellen aangemaakt zodat elk subnet weet dat deze machine de gedefinieerde gateway (ingaande route) naar het andere subnet is. Deze opstelling, waarbij de machine dienst doet als router tussen de twee subnetten, wordt vaak gebruikt voor het implementeren van pakketfilters of firewall-beveiliging in één of beide richtingen. Om deze machine daadwerkelijk pakketten te laten forwarden tussen de twee interfaces, moet aan &os; verteld worden dat het deze mogelijkheid aan moet zetten. In de volgende sectie staan meer details over hoe dit te doen. Een router bouwen router Een netwerkrouter is simpelweg een systeem dat pakketten van de ene naar de andere interface doorstuurt. Internetstandaarden en goede ontwerppraktijken verhinderen het &os; Project dit standaard in &os; aan te zetten. Deze mogelijkheid kan worden aangezet door de volgende variabele in &man.rc.conf.5; op YES in te stellen: gateway_enable="YES" # Op YES instellen indien deze host een gateway is Deze optie stelt de &man.sysctl.8; variabele net.inet.ip.forwarding in op 1. Indien het nodig is om het routen tijdelijk te stoppen, kan deze variabele tijdelijk op 0 worden teruggezet. BGP RIP OSPF De nieuwe router heeft routes nodig om te weten waar het het verkeer naar toe moet sturen. Voor een eenvoudig netwerk kunnen statische routes gebruikt worden. &os; wordt met het standaard BSD routeer-daemon &man.routed.8; geleverd, dat RIP (zowel versie 1 en versie 2) en IRDP spreekt. Ondersteuning voor BGP v4, OSPF v2, en andere slimme routeerprotocollen is beschikbaar via het pakket net/zebra. Ook zijn commerciële producten als &gated; beschikbaar voor complexere netwerkrouteer-oplossingen. Al Hoang Bijgedragen door Statische routes opzetten Handmatige configuratie Er wordt van het volgende netwerk uitgegaan: INTERNET | (10.0.0.1/24) Standaardrouter naar Internet | |Interface xl0 |10.0.0.10/24 +------+ | | RouterA | | (FreeBSD gateway) +------+ | Interface xl1 | 192.168.1.1/24 | +--------------------------------+ Intern Net 1 | 192.168.1.2/24 | +------+ | | RouterB | | +------+ | 192.168.2.1/24 | Intern Net 2 In dit scenario is RouterA een &os;-machine die dienst doet als router naar de rest van het Internet. Het heeft een standaardroute ingesteld op 10.0.0.1, dat het in staat stelt om verbindingen met de buitenwereld te maken. Er wordt aangenomen dat RouterB reeds juist is ingesteld en dat het weet hoe het waar naar toe moet gaan. (In dit plaatje is dit simpel. Voeg een standaardroute op RouterB toe door 192.168.1.1 als gateway te gebruiken.) De routeertabel voor RouterA zou er ongeveer als volgt uitzien: &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.0/24 link#1 UC 0 0 xl0 192.168.1.0/24 link#2 UC 0 0 xl1 Met de huidige routeertabel is RouterA niet in staat om Intern Net 2 te bereiken. Het heeft geen route voor 192.168.2.0/24. Een manier om dit te verhelpen is om de route handmatig toe te voegen. Het volgende commando voegt het netwerk Intern Net 2 toe aan de routeertabel van RouterA door 192.168.1.2 als de volgende hop te gebruiken: &prompt.root; route add -net 192.168.2.0/24 192.168.1.2 Nu kan RouterA elke host op het netwerk 192.168.2.0/24 bereiken. Persistente configuratie Bovenstaand voorbeeld is perfect voor het instellen van een statische route op een draaiend systeem. Een probleem is dat de routeerinformatie verdwijnt indien de &os;-machine opnieuw wordt opgestart. Aanvullende statische routes kunnen in /etc/rc.conf opgenomen worden: # Voeg Intern Net 2 als een statische route toe static_routes="internnet2" route_internnet2="-net 192.168.2.0/24 192.168.1.2" De instellingsvariabele static_routes is een lijst van strings gescheiden door een spatie. Elke string verwijst naar een routenaam. Bovenstaand voorbeeld heeft slechts één string in static_routes. Dit is de string internnet2. Vervolgens wordt een instellingsvariabele route_internnet2 toegevoegd waarin alle instellingsparameters staan die aan het commando &man.route.8; moeten worden doorgegeven. Voor bovenstaand voorbeeld zou het volgende commando zijn gebruikt: &prompt.root; route add -net 192.168.2.0/24 192.168.1.2 Dus is "-net 192.168.2.0/24 192.168.1.2" nodig. Zoals hierboven is vermeld is het mogelijk om meerdere strings in static_routes te hebben. Dit maakt het mogelijk om meerdere statische routes aan te maken. De volgende regels geven een voorbeeld van het toevoegen van statische routes voor de netwerken 192.168.0.0/24 en 192.168.1.0/24 op een denkbeeldige router: 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" Routes propageren routes propageren Er is al gesproken over hoe routes naar de buitenwereld te definiëren, maar niet over hoe de buitenwereld ons kan vinden. Het is al bekend dat routeertabellen aangemaakt kunnen worden zodat al het verkeer voor een bepaalde adresruimte (in ons voorbeeld een klasse-C subnet) naar een bepaalde host op dat netwerk gezonden kan worden, dat de ingaande pakketten doorgeeft. Wanneer een adresruimte aan een site wordt toegewezen, stelt de serviceprovider al hun routeertabellen zodanig in dat al het verkeer voor het bijhorende subnet naar de PPP-verbinding van de site gezonden wordt. Maar hoe weten sites door het land heen hoe naar de internetprovider van deze site te versturen? Er bestaat een systeem (dat veel lijkt op de gedistribueerde DNS-informatie) dat alle toegewezen adresruimtes bijhoudt, en hun verbindingspunt met de Internet Backbone definieert. De Backbone zijn de grote kabels die Internetverkeer door het land en over de wereld sturen. Elke backbone-machine heeft een kopie van een master-verzameling van tabellen, die verkeer voor een bepaald netwerk naar een bepaalde backbone-carrier sturen, en van daaruit naar een keten van serviceproviders totdat het netwerk van de site bereikt is. Het is de taak van de serviceprovider om bij de backbone-sites aan te geven dat zij het verbindingspunt (en dus het ingaande pad) zijn voor de site. Dit staat bekend als routepropagatie. Problemen oplossen traceroute Soms is er een probleem met routepropagatie en kunnen sommige sites geen verbinding maken. Misschien is het nuttigste commando om proberen uit te zoeken waar het routen misgaat &man.traceroute.8;. Het is ook nuttig als er geen verbinding mogelijk lijkt met een verre machine (dus als &man.ping.8; faalt). Het commando &man.traceroute.8; wordt gedraaid met de naam van de verre host waarmee geprobeerd wordt te verbinden. Het laat de gateway-hosts zien langs het gepoogde pad, dat uiteindelijk de doelhost bereikt, of wegens een gebrek aan verbinding afgebroken wordt. Raadpleeg voor meer informatie de hulppagina voor &man.traceroute.8;. Multicast routen multicast routen kernelopties MROUTING &os; ondersteunt zowel multicast-applicaties als multicast routen van huis uit. Voor multicast-applicaties is geen speciale configuratie van &os; nodig; applicaties draaien over het algemeen als geleverd. Voor multicast routen dient ondersteuning in de kernel gecompileerd te worden: options MROUTING Ook dient de multicast-routeer-daemon &man.mrouted.8; ingesteld worden zodat het tunnels en DVMRP via /etc/mrouted.conf aanmaakt. Kijk voor meer details over multicast-instellingen in de hulppagina voor &man.mrouted.8;. De &man.mrouted.8; multicast-routeer-daemon implementeert het multicast-routeer-protocol DVRMP welke in veel multicast-installaties grotendeels is vervangen door &man.pim.4;. &man.mrouted.8; en de gerelateerde &man.map-mbone.8; en &man.mrinfo.8; gereedschappen zijn beschikbaar in de &os; Ports Collectie als net/mrouted. Loader Marc Fonvieille Murray Stokely Draadloze netwerken draadloze netwerken 802.11 draadloze netwerken De beginselen van draadloos netwerken De meeste draadloze netwerken zijn op de &ieee; 802.11 standaarden gebaseerd. Een eenvoudig draadloos netwerk bestaat uit meerdere stations die met radio's communiceren die in de 2,4GHz of de 5GHz band uitzenden (alhoewel dit regionaal varieert en het ook verandert om communicatie in de 2,3GHz en de 4,9GHz banden mogelijk te maken). 802.11-netwerken zijn op twee manieren georganiseerd: in infrastructuurmodus treedt één station als meester op, alle andere stations associëren met dit station; dit netwerk staat bekend als een BSS en het meesterstation heet een toegangspunt (AP). In een BSS gaat alle communicatie via het AP; zelfs als een station met een ander draadloos station wil communiceren gaan de boodschappen door het AP. In de tweede netwerkvorm is er geen meester en communiceren de stations direct. Deze netwerkvorm is een IBSS en staat gewoonlijk bekend als een ad-hoc netwerk. 802.11 netwerken begonnen in de 2,4GHz band waarbij gebruik werd gemaakt van protocollen die door de &ieee; 802.11 en 802.11b standaarden worden gedefinieerd. Deze specificaties omvatten de werkfrequenties, karakteristieken van de MAC-lagen waaronder frame- en zendsnelheden (communicatie kan met verschillende snelheden plaatsvinden). Later definieerde de 802.11a-standaard het werken in de 5GHz band, inclusief andere mechanismen voor signalering en hogere zendsnelheden. Nog later werd de 802.11g-standaard gedefinieerd om gebruik te kunnen maken van de signalerings- en zendmechanismen van 802.11a in de 2,4GHz band zodanig dat het met terugwerkende kracht werkt op 802.11b-netwerken. Afgezien van de onderliggende zendtechnieken beschikken 802.11-netwerken over een verscheidenheid aan beveiligingstechnieken. De originele 802.11-specificaties definieerden een eenvoudig beveiligingsprotocol genaamd WEP. Dit protocol maakt gebruik van een vaste, van te voren gedeelde sleutel en het cryptografische algoritme RC4 om de gegevens die over het netwerk verstuurd worden te coderen. Alle stations dienen dezelfde sleutel te gebruiken om te kunnen communiceren. Het is bewezen dat dit mechanisme eenvoudig te kraken is en wordt nu, afgezien om voorbijgaande gebruikers te ontmoedigen het netwerk te gebruiken, nog zelden gebruikt. De huidige beveiligingsmethoden worden gegeven door de &ieee; 802.11i specificatie dat nieuwe cryptografische algoritmen en een aanvullend protocol om stations aan een toegangspunt te authenticeren en om sleutels voor gegevenscommunicatie uit te wisselen definieert. Verder worden cryptografische sleutels periodiek ververst en zijn er mechanismen om indringpogingen te detecteren (en om indringpogingen tegen te gaan). Een andere specificatie van een veelgebruikt beveiligingsprotocol in draadloze netwerken is WPA. Dit was een voorloper op 802.11i en gedefinieerd door een industriegroep als een tussenmaatregel terwijl er gewacht werd op de ratificatie van 802.11i. WPA specificeert een deel van de eisen van 802.11i en is ontworpen voor implementatie op verouderde hardware. In het bijzonder vereist WPA alleen de TKIP-sleutel die van de originele WEP-sleutel is afgeleid. 802.11i staat het gebruik van TKIP toe maar vereist ook ondersteuning voor een sterkere sleutel, AES-CCM, om gegevens te versleutelen. (De AES-sleutel was niet nodig in WPA omdat het rekenkundig te kostbaar werd geacht voor implementatie op verouderde hardware.) Afgezien van de bovenstaande protocolstandaarden is de andere belangrijke standaard waarvan bewustzijn belangrijk is 802.11e. Deze standaard definieert het opstellen van multimediatoepassingen zoals gestroomde video en voice over IP (VoIP) binnen een 802.11-netwerk. Net als 802.11i heeft ook 802.11e een voorgaande specificatie genaamd WME (later hernoemd tot WMM) die door een industriegroep is gedefinieerd als een deelverzameling van 802.11e die nu kan worden gebruikt om multimediatoepassingen mogelijk te maken terwijl er gewacht wordt op de uiteindelijke ratificatie van 802.11e. Het belangrijkste om over 802.11e en WME/WMM te weten is dat ze gepriotiseerd verkeersgebruik van een draadloos netwerk mogelijk maken door middel van Quality of Service (QoS) protocollen en protocollen voor verbeterde mediatoegang. Een juiste implementatie van deze protocollen maken snelle gegevensbursts en gepriotiseerde verkeersstromen mogelijk. &os; ondersteunt netwerken die met 802.11a, 802.11b, en 802.11g werken. Ook worden de veiligheidsprotocollen WPA en 802.11i ondersteund (samen met 11a, 11b, of 11g) en QoS en de verkeerspriorisatieprotocollen die nodig zijn voor de protocollen WME/WMM worden voor een beperkte verzameling draadloze apparatuur ondersteund. Basisinstallatie Kernelinstellingen Om van een draadloos netwerk gebruik te maken is het nodig om een draadloze netwerkkaart te hebben en om de kernel met de juiste ondersteuning voor draadloze netwerken in te stellen. Het laatste is verdeeld in meerdere modulen zodat alleen de software ingesteld hoeft te worden die daadwerkelijk gebruikt zal worden. Ten eerste is een draadloos netwerkapparaat nodig. De meestgebruikte apparaten zijn degenen die onderdelen van Atheros gebruiken. Deze apparaten worden ondersteund door het stuurprogramma &man.ath.4; en voor hen dient de volgende regel aan /boot/loader.conf toegevoegd te worden: if_ath_load="YES" Het stuurprogramma voor Atheros is opgedeeld in drie verschillende delen: het eigenlijke stuurprogramma (&man.ath.4;), de ondersteuningslaag voor de hardware die chip-specifieke functies afhandelt (&man.ath.hal.4;), en een algoritme om de snelheid om frames te verzenden te kiezen uit een reeks mogelijke waarden (hier ath_rate_sample). Indien deze ondersteuning als kernelmodules wordt geladen, zullen de afhankelijkheden automatisch afgehandeld worden. Voor andere apparaten dan die van Atheros dient de module voor dat stuurprogramma geladen te worden; bijvoorbeeld: if_wi_load="YES" voor apparaten die op onderdelen van Intersil Prism zijn gebaseerd (stuurprogramma &man.wi.4;). In de rest van dit document zal een &man.ath.4; apparaat gebruikt worden, de naam van het apparaat in de voorbeelden dient aangepast te worden aan de lokale installatie. Een lijst van beschikbare draadloze stuurprogramma's en ondersteunde adapters staat in de &os; Hardware Notes. Kopieën hiervan voor verschillende uitgaven en architecturen zijn beschikbaar op de Uitgave Informatie pagina van de &os; website. Indien er geen origineel stuurprogramma voor het draadloze apparaat bestaat, is het mogelijk om te proberen om direct het stuurprogramma van &windows; proberen te gebruiken met behulp van de stuurprogramma-wrapper NDIS. Nadat het apparaatstuurprogramma is ingesteld onder &os; 7.X is het ook nodig om de ondersteuning voor 802.11-netwerken waarvan het stuurprogramma gebruik maakt in te stellen. Voor het stuurprogramma &man.ath.4; zijn dit minimaal de modules &man.wlan.4;, wlan_scan_ap en wlan_scan_sta; de module &man.wlan.4; wordt automatisch geladen met het stuurprogramma voor draadloze apparaten, de overige modules dienen tijdens het opstarten geladen te worden in /boot/loader.conf: wlan_scan_ap_load="YES" wlan_scan_sta_load="YES" Sinds &os; 8.0 zijn deze modules deel van het basisstuurprogramma &man.wlan.4; dat dynamisch met het stuurprogramma voor de adapter wordt geladen. Daarvoor zijn ook de modules nodig die cryptografische ondersteuning implementeren voor de te gebruiken veiligheidsprotocollen. Het is de bedoeling dat ze dynamisch door de module &man.wlan.4; worden geladen maar momenteel dienen ze handmatig ingesteld te worden. De volgende modules zijn beschikbaar: &man.wlan.wep.4;, &man.wlan.ccmp.4;, en &man.wlan.tkip.4;. Zowel de stuurprogramma's &man.wlan.ccmp.4; en &man.wlan.tkip.4; zijn alleen nodig indien het veiligheidsprotocol WPA en/of 802.11i gebruikt wordt. Indien het netwerk encryptieloos dient te zijn, is de ondersteuning van &man.wlan.wep.4; niet nodig. Om deze modules tijdens het opstarten te laden, dienen de volgende regels aan /boot/loader.conf toegevoegd te worden: wlan_wep_load="YES" wlan_ccmp_load="YES" wlan_tkip_load="YES" Nadat deze informatie aan het instellingenbestand om het systeem op te starten (i.e. /boot/loader.conf) is toegevoegd, is het noodzakelijk om de &os;-computer opnieuw op te starten. Indien het ongewenst is om de computer nu opnieuw op te starten, kunnen de modules ook handmatig worden geladen door &man.kldload.8; te gebruiken. Indien het gebruik van modules ongewenst is, kunnen deze stuurprogramma's in de kernel worden gecompileerd door de volgende regels aan het kernelinstellingenbestand toe te voegen: device wlan # 802.11 ondersteuning device wlan_wep # 802.11 WEP-ondersteuning device wlan_ccmp # 802.11 CCMP-ondersteuning device wlan_tkip # 802.11 TKIP-ondersteuning device wlan_amrr # AMRR controle-algoritme voor zendsnelheid device ath # Atheros PCI/Cardbus netwerkkaarten device ath_hal # Ondersteuning voor PCI/cardbus chips options AH_SUPPORT_AR5146 # zet AR5146 tx/rx descriptors aan device ath_rate_sample # SampleRate verzendsnelheid-controle voor ath Beide van de volgende regels zijn nodig voor &os; 7.X, voor andere versies van &os; zijn ze niet nodig: device wlan_scan_ap # 802.11 AP mode scanning device wlan_scan_sta # 802.11 STA mode scanning Met deze informatie in het kernelinstellingenbestand kan de kernel opnieuw gecompileerd en de &os;-computer opnieuw opgestart worden. Wanneer het systeem draait, is het mogelijk om enige informatie over de draadloze apparaten in de opstartboodschappen te vinden, zoals: ath0: <Atheros 5212> mem 0x88000000-0x8800ffff irq 11 at device 0.0 on cardbus1 ath0: [ITHREAD] ath0: AR2413 mac 7.9 RF2413 phy 4.5 Infrastructuurmodus De infrastructuur- of BSS-modus is de modus die normaliter gebruikt wordt. In deze modus zijn een aantal draadloze toegangspunten verbonden met een bedraad netwerk. Elk draadloos netwerk heeft een eigen naam, deze naam wordt de SSID van het netwerk genoemd. Draadloze cliënten verbinden zich met de draadloze toegangspunten. &os; cliënten Hoe toegangspunten te vinden Voor het scannen van netwerken wordt het commando ifconfig gebruikt. Het kan even duren voordat dit verzoek is afgehandeld aangezien het systeem op elke beschikbare draadloze frequentie naar toegangspunten moet zoeken. Alleen de super-gebruiker kan zo'n scan opzetten: &prompt.root; ifconfig wlan0 create wlandev ath0 &prompt.root; ifconfig wlan0 up scan SSID/MESH ID BSSID CHAN RATE S:N INT CAPS dlinkap 00:13:46:49:41:76 11 54M -90:96 100 EPS WPA WME freebsdap 00:11:95:c3:0d:ac 1 54M -83:96 100 EPS WPA De interface dient als up te worden gemarkeerd voordat het scannen begint. Voor verdere scans is het niet nodig om de interface als up te markeren. In &os; 7.X wordt de apparaat-adapter, bijvoorbeeld ath0, direct gebruikt in plaats van het apparaat wlan. Hierom is het nodig om beide vorige regels te vervangen door: &prompt.root; ifconfig ath0 up scan In de rest van dit document dienen gebruikers van &os; 7.X de opdracht- en instellingregels volgens dat schema aan te passen. De uitvoer van een scanverzoek vermeld elk gevonden BSS/IBSS-netwerk. Naast de naam van het netwerk, SSID, staat het BSSID, wat het MAC-adres van het toegangspunt is. Het veld CAPS identificeert het type van elk netwerk en de mogelijkheden van de stations die daar werkzaam zijn: Station Capability Codes Capability Code Betekenis E Uitgebreide dienstenverzameling (ESS). Geeft aan dat het station deel uitmaakt van een infrastructuurnetwerk (in tegenstelling tot een IBSS-/ ad-hoc-netwerk). I IBSS-/ad-hoc-netwerk. Geeft aan dat het station deel uitmaakt van een ad-hoc-netwerk (in tegenstelling tot een ESS-netwerk). P Privacy. Vertrouwelijkheid is vereist voor alle gegevensframes die binnen het BSS worden uitgewisseld. Dit betekent dat dit BSS eist dat het station cryptografische middelen als WEP, TKIP of AES-CCMP dient te gebruiken om de gegevensframes die met anderen worden uitgewisseld te versleutelen en te ontsleutelen. S Korte preambule. Geeft aan dat het netwerk korte preambules gebruikt (gedefinieerd in 802.11b Hoge Snelheid/DSSS PHY, korte preambule gebruikt een 56-bits synchronisatieveld in tegenstelling tot een 128-bits dat bij lange preambules wordt gebruikt). s Korte slottijd. Geeft aan dat het 802.11g-netwerk een korte slottijd gebruikt omdat er geen verouderde (802.11b) stations aanwezig zijn.
Het is ook mogelijk om de huidige lijst van bekende netwerken weer te geven met: &prompt.root; ifconfig scan0 list scan Deze informatie kan automatisch bijgewerkt worden door de adapter of handmatig met een verzoek. Oude gegevens worden automatisch uit de cache verwijderd, dus kan deze lijst na verloop van tijd korter worden tenzij er meer scanverzoeken gedaan worden.
Basisinstellingen Deze sectie geeft een eenvoudig voorbeeld hoe de draadloze netwerkadapter in &os; zonder encryptie aan de praat te krijgen. Nadat deze concepten bekend zijn, wordt het sterk aangeraden om WPA te gebruiken om de draadloze netwerken op te zetten. Er zijn drie basisstappen om een draadloos netwerk in te stellen: een toegangspunt kiezen, het station authenticeren, en een IP-adres instellen. De volgende secties behandelen elk een stap. Een toegangspunt kiezen In de meeste gevallen is het voldoende om het systeem een toegangspunt gebaseerd op de ingebouwde heuristieken te laten kiezen. Dit is het standaardgedrag wanneer een interface als up wordt gemarkeerd of als een interface wordt ingesteld door het te noemen in /etc/rc.conf, bijvoorbeeld: wlans_ath0="wlan0" ifconfig_wlan0="DHCP" Zoals eerder vermeld, is voor &os; 7.X alleen een regel nodig voor de apparaat-adapter: ifconfig_ath0="DHCP" Indien er meerdere toegangspunten zijn en het gewenst is om een specifieke te kiezen, kan dit met het SSID: wlans_ath0="wlan0" ifconfig_wlan0="ssid uw_ssid_hier DHCP" In een omgeving waar meerdere toegangspunten hetzelfde SSID hebben (vaak gedaan om roamen eenvoudiger te maken) kan het nodig zijn om met één specifiek apparaat te associëren. In dit geval kan ook het BSSID van het toegangspunt gespecificeerd worden (het SSID kan ook weggelaten worden): wlans_ath0="wlan0" ifconfig_wlan0="ssid uw_ssid_hier bssid xx:xx:xx:xx:xx:xx DHCP Er zijn andere manieren om de keuze van een toegangspunt te beperken zoals het beperken van het aantal frequenties waarop het systeem scant. Dit kan handig zijn bij multi-band-netwerkkaarten aangezien het scannen van alle mogelijke kanalen tijdrovend kan zijn. Om de werking tot een specifieke band te beperken kan de parameter gebruikt worden; bijvoorbeeld: wlans_ath0="wlan0" ifconfig_wlan0="mode 11g ssid uw_ssid_hier DHCP" zal de kaart forceren om te werken in 802.11g welke alleen voor 2,4GHz frequenties is gedefinieerd dus de 5GHz kanalen blijven buiten beschouwing. Andere manieren om dit te doen zijn de parameter , om bewerkingen op één specifieke frequentie vast te zetten, en de parameter , om een lijst van te scannen kanalen te specificeren. Meer informatie over deze parameters kan in de hulppagina &man.ifconfig.8; gevonden worden. Authenticatie Nadat er een toegangspunt is gekozen moet het station zich authenticeren voordat het gegevens kan versturen. Authenticatie kan op verschillende manieren gebeuren. Het meest gebruikte schema wordt open authenticatie genoemd en staat doe dat elk station aan het netwerk deelneemt en communiceert. Deze manier van authenticatie dient gebruikt te worden voor testdoeleinden tijdens het voor de eerste keer opzetten van een draadloos netwerk. Andere schema's vereisen dat cryptografische overeenkomsten voltooid worden voordat gegevensverkeer kan stromen; ofwel door vooraf gedeelde sleutels of geheimen te gebruiken, of door complexere schema's te gebruiken welke achterliggende diensten zoals RADIUS betrekken. De meeste gebruikers zullen open authenticatie gebruiken welke de standaardinstelling is. De dan meest voorkomende opstelling is WPA-PSK, ook bekend als WPA Personal, welke hieronder beschreven is. Indien er een &apple; &airport; Extreme basisstation als toegangspunt wordt gebruikt kan het nodig zijn om gedeelde-sleutel-authenticatie samen met een WEP-sleutel in te stellen. Dit kan gedaan worden in het bestand /etc/rc.conf of door het programma &man.wpa.supplicant.8; te gebruiken. Indien er een enkel &airport; basisstation wordt gebruikt kan de toegang met zoiets als het volgende worden ingesteld: wlans_ath0="wlan0" ifconfig_wlan0="authmode shared wepmode on weptxkey 1 wepkey 01234567 DHCP" Over het algemeen dient authenticatie via gedeelde sleutels worden voorkomen omdat het materiaal van de WEP-sleutel op een zeer afgedwongen manier gebruikt wordt wat het zelfs gemakkelijker maakt om de sleutel te kraken. Indien WEP gebruikt moet worden (bijvoorbeeld voor compatibiliteit met verouderde apparaten) is het beter om WEP met open authenticatie te gebruiken. Meer informatie met betrekking tot WEP kan gevonden worden in . Een IP-adres verkrijgen met DHCP Nadat het toegangspunt is gekozen en de parameters voor de authenticatie zijn ingesteld, dient er een IP-adres ter communicatie verkregen worden. In de meeste gevallen wordt het draadloze IP-adres verkregen via DHCP. Om dat te bereiken, dient /etc/rc.conf bewerkt te worden en DHCP aan de instellingen voor het apparaat toegevoegd te worden zoals in de verschillende bovenstaande voorbeelden is laten zien: wlans_ath0="wlan0" ifconfig_wlan0="DHCP" Op dit moment kan de draadloze interface geactiveerd worden: &prompt.root; /etc/rc.d/netif start Wanneer de interface draait, kan ifconfig gebruikt worden om de status van de interface ath0 te zien: &prompt.root; ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.1.00 netmask 0xffffff00 broadcast 192.168.1.255 media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g status: associated ssid dlinkap channel 11 (2462 Mhz 11g) bssid 00:13:46:49:41:76 country US ecm authmode OPEN privacy OFF txpower 21.5 bmiss 7 scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst Het status: associated betekent dat er verbinding is met een draadloos netwerk (in dit geval met het netwerk dlinkap). Het gedeelte bssid 00:13:46:49:41:76 is het MAC-adres van het toegangspunt; de gedeelte met authmode vertelt dat de communicatie niet versleuteld is. Statisch IP-adres In het geval dat het niet mogelijk is om een IP-adres van een DHCP-server te krijgen, kan er een vast IP-adres worden ingesteld. Vervang het sleutelwoord DHCP van hierboven met de adresinformatie. Zorg ervoor dat de andere parameters voor het selecteren van een toegangspunt behouden blijven: wlans_ath0="wlan0" ifconfig_wlan0="inet 192.168.1.100 netmask 255.255.255.0 ssid uw_ssid_hier" WPA WPA (Wi-Fi Protected Access) is een beveiligingsprotocol dat samen met 802.11-netwerken wordt gebruikt om het gebrek aan degelijke authenticatie en de zwakte van WEP te benadrukken. WPA verbetert het 802.1X-authenticatieprotocol en gebruikt een sleutel gekozen uit meerdere in plaats van WEP voor gegevensintegriteit. De enige sleutel welke WPA vereist is TKIP (Temporary Key Integrity Protocol). TKIP is een sleutel dat de basis-RC4-sleutel welke door WEP wordt gebruikt uitbreidt door integriteitscontroles, knoeidetectie, en maatregelen om op elke gedetecteerde inbraak te reageren toe te voegen. TKIP is ontworpen om op verouderde hardware met enkel wijzigingen in software te draaien; het representeert een compromis dat de veiligheid verbetert maar nog steeds niet geheel immuun is tegen aanvallen. WPA specificeert ook de sleutel AES-CCMP als een alternatief voor TKIP welke te verkiezen is indien mogelijk; voor deze specificatie wordt gewoonlijk de term WPA2 (of RSN) gebruikt. WPA definieert protocollen voor authenticatie en versleuteling. Authenticatie gebeurt het meeste door één van deze twee technieken te gebruiken: door 802.1X en een achterliggende authenticatiedienst zoals RADIUS, of door een minimale overeenkomst tussen het station en het toegangspunt door een van te voren gedeeld geheim te gebruiken. Het eerste wordt vaak WPA Enterprise genoemd en het laatste staat bekend als WPA Personal. Aangezien de meeste mensen geen achterliggende RADIUS-server voor hun draadloos netwerk zullen opzetten, is WPA-PSK veruit de meest gebruikte configuratie voor WPA. Het beheer van de draadloze verbinding en de authenticatie (sleutelonderhandeling of authenticatie met een server) gebeurt met het gereedschap &man.wpa.supplicant.8;. Dit programma vereist dat er een instellingenbestand, /etc/wpa_supplicant.conf, draait. Meer informatie over dit bestand kan in de hulppagina &man.wpa.supplicant.conf.5; worden gevonden. WPA-PSK WPA-PSK, ook bekend als WPA-Personal, is gebaseerd op een vooraf gedeelde sleutel (PSK) gegenereerd vanuit een gegeven wachtwoord die gebruikt zal worden als de hoofdsleutel in het draadloze netwerk. Dit betekent dat alle draadloze gebruikers dezelfde sleutel zullen delen. WPA-PSK is bedoeld voor kleine netwerken waar het gebruik van een authenticatieserver niet mogelijk of gewenst is. Gebruik altijd sterke wachtwoorden welke voldoende lang zijn en opgebouwd zijn uit een grote tekenverzameling zodat ze niet gemakkelijk worden geraden of aangevallen. De eerste stap is het instellen van het bestand /etc/wpa_supplicant.conf met het SSID en de vooraf gedeelde sleutel van het netwerk: network={ ssid="freebsdap" psk="freebsdmall" } Daarna zal in /etc/rc.conf worden aangegeven dat de draadloze configuratie met WPA zal gebeuren en dat het IP-adres met DHCP zal worden verkregen: wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP" Hierna kan de interface geactiveerd worden: &prompt.root; /etc/rc.d/netif start Starting wpa_supplicant. DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 5 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 6 DHCPOFFER from 192.168.0.1 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPACK from 192.168.0.1 bound to 192.168.0.254 -- renewal in 300 seconds. wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL Ook kan gepoogd worden dit handmatig in te stellen door hetzelfde /etc/wpa_supplicant.conf als hierboven te gebruiken, en dit te draaien: &prompt.root; wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf Trying to associate with 00:11:95:c3:0d:ac (SSID='freebsdap' freq=2412 MHz) Associated with 00:11:95:c3:0d:ac WPA: Key negotiation completed with 00:11:95:c3:0d:ac [PTK=CCMP GTK=CCMP] CTRL-EVENT-CONNECTED - Connection to 00:11:95:c3:0d:ac completed (auth) [id=0 idstr=] De volgende stap is het lanceren van het commando dhclient om een IP-adres van de DHCP-server te krijgen: &prompt.root; dhclient wlan0 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPACK from 192.168.0.1 bound to 192.168.0.254 -- renewal in 300 seconds. &prompt.root; ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON defxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL /etc/rc.conf heeft een regel ifconfig_wlan0 met de tekst DHCP (zoals ifconfig_wlan0="DHCP"), dhclient zal automatisch gestart worden nadat wpa_supplicant geassocieerd is met het toegangspunt. Als DHCP niet mogelijk of gewenst is, kan een statisch IP-adres worden ingesteld nadat wpa_supplicant het station heeft geauthenticeerd: &prompt.root; ifconfig wlan0 inet 192.168.0.100 netmask 255.255.255.0 &prompt.root; ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL Indien DHCP niet wordt gebruikt, dienen ook de standaard gateway en de naamserver handmatig ingesteld te worden: &prompt.root; route add default uw_standaard_router &prompt.root; echo "nameserver uw_DNS_server" >> /etc/resolv.conf WPA met EAP-TLS De tweede manier om WPA te gebruiken is met een achterliggende 802.1X-authenticatieserver. In dit geval wordt het WPA-Enterprise genoemd om het verschil met het minder veilige WPA-Personal met de vooraf gedeelde sleutel aan te duiden. Authenticatie is in WPA-Enterprise gebaseerd op EAP (Extensible Authentication Protocol). EAP wordt niet met een encryptiemethode geleverd. In plaats daarvan was het besloten om EAP in een versleutelde tunnel te omsluiten. Er bestaan vele EAP-authenticatiemethodes, de meest voorkomende zijn EAP-TLS, EAP-TTLS, en EAP-PEAP. EAP-TLS (EAP met Transport Layer Security) is een zeer goed ondersteund authenticatieprotocol in de draadloze wereld aangezien het de eerste EAP-methode was die gecertificeerd werd door de Wi-Fi alliantie. EAP-TLS vereist dat er drie certificaten draaien: het CA-certificaat (geïnstalleerd op alle machines), het servercertificaat voor de authenticatieserver, en een cliëntcertificaat voor elke draadloze cliënt. Bij deze EAP-methode authenticeren zowel de authenticatieserver als de draadloze cliënt elkaar door hun respectievelijke certificaten te laten zien, en ze controleren dat deze certificaten zijn getekend door de certificatenauthoriteit (CA) van de organisatie. Zoals voorheen gebeurt het instellen via /etc/wpa_supplicant.conf: network={ ssid="freebsdap" proto=RSN key_mgmt=WPA-EAP eap=TLS identity="loader" ca_cert="/etc/certs/cacert.pem" client_cert="/etc/certs/clientcert.pem" private_key="/etc/certs/clientkey.pem" private_key_passwd="freebsdmallclient" } Dit veld geeft de naam van het netwerk (SSID) aan. Hier wordt het RSN (&ieee; 802.11i) protocol gebruikt, ofwel WPA2. De regel key_mgmt verwijst naar het gebruikte sleutelbeheerprotocol. In dit geval is het WPA dat EAP-authenticatie gebruikt: WPA-EAP. In dit veld wordt de EAP-methode voor de verbinding genoemd. Het veld identity bevat de identiteitsstring voor EAP. Het veld ca_cert geeft de padnaam van het CA-certificaatbestand aan. Dit bestand is nodig om het servercertificaat te controleren. De regel client_cert geeft de padnaam van het cliëntcertificaatbestand aan. Dit certificaat is uniek voor elke draadloze cliënt van het netwerk. Het veld private_key is de padnaam naar het bestand dat de privésleutel van het cliëntcertificaat bevat. Het veld private_key_passwd bevat het wachtwoord voor de privésleutel. Voeg vervolgens de volgende regels toe aan /etc/rc.conf: wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP" De volgende stap is het activeren van de interface met behulp van de faciliteit rc.c: &prompt.root; /etc/rc.d/netif start Starting wpa_supplicant. DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPACK from 192.168.0.20 bound to 192.168.0.254 -- renewal in 300 seconds. wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL Zoals eerder is laten zien, is het ook mogelijk om de interface handmatig te activeren met zowel de commando's wpa_supplicant en ifconfig. WPA met EAP-TTLS Bij EAP-TLS hebben zowel de authenticatieserver als de cliënt een certificaat nodig, met EAP-TTLS (EAP-Tunneled Transport Layer Security) is een cliëntcertificaat optioneel. Deze methode komt in de buurt van wat sommige beveiligde websites doen, waar de webserver een veilige SSL-tunnel kan aanmaken zelfs als de bezoekers geen certificaten aan de cliëntkant hebben. EAP-TTLS zal de versleutelde TLS-tunnel gebruiken voor het veilig transporteren van de authenticatiegegevens. De instellingen worden gedaan via het bestand /etc/wpa_supplicant.conf: network={ ssid="freebsdap" proto=RSN key_mgmt=WPA-EAP eap=TTLS identity="test" password="test" ca_cert="/etc/certs/cacert.pem" phase2="auth=MD5" } Dit veld noemt de EAP-methode voor de verbinding. Het veld identity bevat de identiteitsstring voor EAP-authenticatie binnen de versleutelde TLS-tunnel. Het veld password bevat het wachtwoord voor de EAP-authenticatie. Het veld ca_cert wijst naar de padnaam van het CA-certificaatbestand. Dit bestand is nodig om het servercertificaat te controleren. Dit veld noemt de gebruikte authenticatiemethode in de versleutelde TLS-tunnel. In dit geval is EAP met MD5-Challenge gebruikt. De binnenste authenticatie-fase wordt vaak phase2 genoemd. Ook dienen de volgende regels toegevoegd te worden aan /etc/rc.conf: wlans_ath0="wlan0" ifconfig_ath0="WPA DHCP" De volgende stap is het activeren van de interface: &prompt.root; /etc/rc.d/netif start Starting wpa_supplicant. DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 21 DHCPACK from 192.168.0.20 bound to 192.168.0.254 -- renewal in 300 seconds. wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet autoselect DS/11Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL WPA met EAP-PEAP PEAPv0/EAP-MSCHAPv2 is de meest gebruikelijke PEAP-methode. In de rest van dit document wordt de term PEAP gebruikt om naar die methode te verwijzen. PEAP (Beveiligd EAP) is ontworpen als een alternatief voor EAP-TTLS, en is de meest gebruikte EAP-standaard na EAP-TLS. Met andere woorden, als u een netwerk met verschillende besturingssystemen heeft, zou PEAP de meest ondersteunde standaard moeten zijn na EAP-TLS. PEAP is soortgelijk aan EAP-TTLS: het gebruikt een server-side certificaat om de cliënten te authenticeren door een beveiligde TLS-tunnel tussen de cliënt en de authenticatieserver aan te maken, welke de uitwisseling van de authenticatie-informatie beschermt. Vanuit een beveiligingsoogpunt gezien is het verschil tussen EAP-TTLS en PEAP dat PEAP-authenticatie de gebruikersnaam onversleuteld uitzendt, alleen het wachtwoord wordt in de beveiligde TLS-tunnel verzonden. EAP-TTLS gebruikt de TLS-tunnel voor zowel de gebruikersnaam als het wachtwoord. Het bestand /etc/wpa_supplicant.conf dient gewijzigd te worden om de EAP-PEAP-gerelateerde instellingen toe te voegen: network={ ssid="freebsdap" proto=RSN key_mgmt=WPA-EAP eap=PEAP identity="test" password="test" ca_cert="/etc/certs/cacert.pem" phase1="peaplabel=0" phase2="auth=MSCHAPV2" } Dit veld noemt de EAP-methode voor de verbinding. Het veld identity bevat de identiteitsstring voor EAP-authenticatie binnen de versleutelde TLS-tunnel. Het veld password bevat het wachtwoord voor de EAP-authenticatie. Het veld ca_cert wijst naar de padnaam van het CA-certificaatbestand. Dit bestand is nodig om het servercertificaat te controleren. Dit veld bevat de parameters voor de eerste fase van authenticatie (de TLS-tunnel). Afhankelijk van de gebruikte authenticatieserver moet er een specifiek label voor authenticatie worden opgegeven. In de meeste gevallen zal het label client EAP encryption zijn welke ingesteld is door peaplabel=0 te gebruiken. Meer informatie kan in de hulppagina &man.wpa.supplicant.conf.5; gevonden worden. Dit veld noemt het authenticatieprotocol dat in de versleutelde TLS-tunnel gebruikt wordt. In het geval van PEAP is dit auth=MSCHAPV2. Het volgende dient te worden toegevoegd aan /etc/rc.conf: wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP" Hierna kan de interface worden geactiveerd: &prompt.root; /etc/rc.d/netif start Starting wpa_supplicant. DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 21 DHCPACK from 192.168.0.20 bound to 192.168.0.254 -- renewal in 300 seconds. wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet autoselect DS/11Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL WEP WEP (Wired Equivalent Privacy) maakt deel uit van de oorspronkelijke 802.11 standaard. Er is geen authenticatiemechanisme, slechts een zwakke vorm van toegangscontrole, en het is gemakkelijk te kraken. WEP kan worden opgezet met ifconfig: &prompt.root; ifconfig wlan0 create wlandev ath0 &prompt.root; ifconfig wlan0 inet 192.168.1.100 netmask 255.255.255.0 \ ssid mijn_net wepmode on weptxkey 3 wepkey 3:0x3456789012 De weptxkey geeft aan welke WEP-sleutel zal worden gebruikt tijdens het verzenden. Hier wordt de derde sleutel gebruikt. Dit dient overeen te komen met de instelling in het toegangspunt. Probeer, indien onbekend is welke sleutel door het toegangspunt wordt gebruikt, 1 (i.e., de eerste sleutel) voor deze waarde te gebruiken. De wepkey selecteert één van de WEP-sleutels in. Het dient in het formaat index:sleutel te zijn. Sleutel 1 wordt als standaard gebruikt; de index hoeft alleen ingesteld te worden als we een andere dan de eerste sleutel gebruiken. De 0x3456789012 dient vervangen te worden door de sleutel die ingesteld is voor gebruik met het toegangspunt. Het wordt aangeraden om de hulppagina &man.ifconfig.8; te lezen voor verdere informatie. De faciliteit wpa_supplicant kan ook gebruikt worden om de draadloze interface in te stellen voor WEP. Het bovenstaande voorbeeld kan worden ingesteld door de volgende regels toe te voegen aan /etc/wpa_supplicant.conf: network={ ssid="mijn_net" key_mgmt=NONE wep_key3=3456789012 wep_tx_keyidx=3 } Daarna: &prompt.root; wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf Trying to associate with 00:13:46:49:41:76 (SSID='dlinkap' freq=2437 MHz) Associated with 00:13:46:49:41:76
Ad-hoc-modus IBSS-modus, ook ad-hoc-modus genoemd, is ontworpen voor point-to-point-verbindingen. Om bijvoorbeeld een ad-hoc-netwerk tussen de machine A en de machine B op te zetten, is het slechts nodig om twee IP-adressen en een SSID te kiezen. Op machine A: &prompt.root; ifconfig wlan0 create wlandev ath0 wlanmode adhoc &prompt.root; ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 00:11:95:c3:0d:ac inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <adhoc> status: running ssid freebsdap channel 2 (2417 Mhz 11g) bssid 02:11:95:c3:0d:ac country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60 protmode CTS wme burst De parameter adhoc geeft aan dat de interface in de IBSS-modus draait. Op B zal het mogelijk moeten zijn om A te detecteren: &prompt.root; ifconfig wlan0 create wlandev ath0 wlanmode adhoc &prompt.root; ifconfig wlan0 up scan SSID/MESH ID BSSID CHAN RATE S:N INT CAPS reebsdap 02:11:95:c3:0d:ac 2 54M -64:-96 100 IS WME De I in de uitvoer bevestigt dat machine A in ad-hoc-modus verkeert. Het is slechts nodig om B met een ander IP-adres in te stellen: &prompt.root; ifconfig wlan0 inet 192.168.0.2 netmask 255.255.255.0 ssid freebsdap &prompt.root; ifconfig wlan0 ssid freebsdap mediaopt adhoc inet 192.168.0.2 netmask 255.255.255.0 &prompt.root; ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <adhoc> status: running ssid freebsdap channel 2 (2417 Mhz 11g) bssid 02:11:95:c3:0d:ac country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60 protmode CTS wme burst Zowel A als B zijn nu klaar om informatie uit te wisselen. &os; Host Toegangspunten &os; kan als toegangspunt (AP) functioneren wat de noodzaak om een hardwarematig AP te kopen of een ad-hoc-netwerk te draaien wegneemt. Dit kan bijzonder nuttig zijn indien de &os;-machine als gateway naar een ander netwerk (bijvoorbeeld het Internet) functioneert. Basisinstellingen Voordat de &os;-machine als een AP wordt ingesteld, dient de kernel te worden ingesteld met de juiste ondersteuning voor draadloos netwerken voor de draadloze kaart. Ook dient er ondersteuning voor de te gebruiken beveiligingsprotocollen te worden toegevoegd. Meer details staan in . Momenteel staan de NDIS-stuurprogrammawrapper en de stuurprogramma's van &windows; het werken als AP niet toe. Alleen originele draadloze &os;-stuurprogramma's ondersteunen AP-modus. Wanneer de ondersteuning voor draadloos netwerken is geladen, kan gecontroleerd worden of het draadloze apparaat de hostgebaseerde toegangspuntmodus ondersteunt (ook bekend als hostap-modus): &prompt.root; ifconfig wlan0 create wlandev ath0 &prompt.root; ifconfig wlan0 list caps drivercaps=6f85edc1<STA,FF,TURBOP,IBSS,HOSTAP,AHDEMO,TXPMGT,SHSLOT,SHPREAMBLE,MONITOR,MBSS,WPA1,WPA2,BURST,WME,WDS,BGSCAN,TXFRAG> cryptocaps=1f<WEP,TKIP,AES,AES_CCM,TKIPMIC> Deze uitvoer geeft de mogelijkheden van de kaart weer, het woord HOSTAP bevestigt dat deze draadloze kaart als toegangspunt kan functioneren. Ook worden verschillende ondersteunde versleutelmethoden genoemd: WEP, TKIP, AES, enzovoorts. Deze informatie is belangrijk om te weten welke beveiligingsprotocollen gebruikt kunnen worden op het toegangspunt. Het draadloze apparaat kan enkel in hostap-modus worden gezet tijdens het creeëren van het netwerk pseudo-device dus een vooraf aangemaakt apparaat moet eerst verwijderd worden: &prompt.root; ifconfig wlan0 destroy waarna deze opnieuw aangemaakt kan worden met de juiste parameters: &prompt.root; ifconfig wlan0 create wlandev ath0 wlanmode hostap &prompt.root; ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1 Gebruik nogmaals ifconfig om de status van de interface wlan0 te zien: &prompt.root; ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 00:11:95:c3:0d:ac inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255 status: running ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60 protmode CTS wme burst dtimperiod 1 -dfs De parameter hostap geeft aan dat de interface in hostgebaseerde toegangspuntmodus draait. Het instellen van de interface kan automatisch tijdens het opstarten gedaan worden door de volgende regels aan /etc/rc.conf toe te voegen: wlans_ath0="wlan0" create_args_wlan0="wlanmode hostap" ifconfig_wlan0="inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1" Hostgebaseerde toegangspunt zonder authenticatie of versleuteling Hoewel het niet aangeraden wordt om een AP zonder enige vorm van authenticatie of encryptie te draaien, is dit een eenvoudige manier om te controleren of het AP werkt. Deze configuratie is ook belangrijk voor het debuggen van problemen met cliënten. Nadat het AP is ingesteld als eerder is laten zien, is het mogelijk om van een andere draadloze machine een scan te beginnen om het AP te vinden: &prompt.root; ifconfig wlan0 create wlandev ath0 &prompt.root; ifconfig wlan0 up scan SSID/MESH ID BSSID CHAN RATE S:N INT CAPS freebsdap 00:11:95:c3:0d:ac 1 54M -66:-96 100 ES WME De cliëntmachine heeft het AP gevonden en kan ermee geassocieerd worden: &prompt.root; ifconfig ath0 ssid freebsdap inet 192.168.0.2 netmask 255.255.255.0 ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode OPEN privacy OFF txpower 21.5 bmiss 7 scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst WPA hostgebaseerde toegangspunt Deze sectie zal zich richten op opzetten van een &os; toegangspunt dat het beveiligingsprotocol WPA gebruikt. Meer details over WPA en het instellen van op WPA gebaseerde draadloze cliënten kan gevonden worden in . De daemon hostapd wordt gebruikt om cliëntauthenticatie en sleutelbeheer op het toegangspunt met WPA af te handelen. In het volgende zullen alle instellingsbewerkingen worden uitgevoerd op de &os;-machine die als AP dienst doet. Wanneer het AP correct werkt, zou hostapd automatisch tijdens het opstarten aangezet moeten worden met de volgende regel in /etc/rc.conf: hostapd_enable="YES" Zorg ervoor dat voordat geprobeerd wordt om hostapd in te stellen, de basisinstellingen die in zijn geïntroduceerd zijn uitgevoerd. WPA-PSK WPA-PSK is bedoeld voor kleine netwerken waar het gebruik van een achterliggende authenticatieserver niet mogelijk of gewenst is. Het instellen wordt gedaan in het bestand /etc/hostapd.conf: interface=wlan0 debug=1 ctrl_interface=/var/run/hostapd ctrl_interface_group=wheel ssid=freebsdap wpa=1 wpa_passphrase=freebsdmall wpa_key_mgmt=WPA-PSK wpa_pairwise=CCMP TKIP Dit veld geeft aan welke draadloze interface voor het toegangspunt wordt gebruikt. Dit veld stelt het verbositeitsniveau in dat tijdens het draaien van hostapd wordt gebruikt. Een waarde van 1 vertegenwoordigt het minimale niveau. Het veld ctrl_interface geeft de padnaam van de door hostapd gebruikte map om de domeinsocketbestanden voor communicatie met externe programma's zoals &man.hostapd.cli.8; in op te slaan. Hier wordt de standaardwaarde gebruikt. De regel ctrl_interface_group stelt de groep in (hier is het de groep wheel) die toegang heeft tot de controle interfacebestanden. Het veld wpa maakt WPA mogelijk en specificeert welk WPA-authenticatieprotocol nodig zal zijn. De waarde 1 stelt het AP in op WPA-PSK. Het veld wpa_passphrase bevat het ASCII-wachtwoord voor de WPA-authenticatie. Gebruik altijd sterke wachtwoorden welke voldoende lang zijn en opgebouwd zijn uit een grote tekenverzameling zodat ze niet gemakkelijk worden geraden of aangevallen. De regel wpa_key_mgmt verwijst naar het gebruikte sleutelbeheerprotocol. In dit geval is dat WPA-PSK. Het veld wpa_pairwise geeft aan welke versleutelingsalgoritmes door het toegangspunt worden geaccepteerd. Hier worden zowel de versleuteling TKIP (WPA) en CCMP (WPA2) geaccepteerd. De versleuteling CCMP is een alternatief voor TKIP en wordt sterk aangeraden indien mogelijk; TKIP dient alleen gebruikt te worden voor stations die geen CCMP aankunnen. De volgende stap is het starten van hostapd: &prompt.root /etc/rc.d/hostapd forcestart &prompt.root; ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2290 inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255dddd inet6 fe80::211:95ff:fec3:dac%ath0 prefixlen 64 scopeid 0x4 ether 00:11:95:c3:0d:ac media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap> status: associated ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac authmode WPA2/802.11i privacy MIXED deftxkey 2 TKIP 2:128-bit txpowmax 36 protmode CTS dtimperiod 1 bintval 100 Het toegangspunt draait nu, de cliënten kunnen er nu mee worden geassocieerd, zie voor meer details. Het is mogelijk om de stations die met het AP geassocieerd zijn te zien door het commando ifconfig wlan0 list te gebruiken. WEP hostgebaseerd toegangspunt Het wordt niet aangeraden om WEP te gebruiken om een toegangspunt op te zetten aangezien er geen authenticatiemechanisme is en het gemakkelijk is te kraken. Sommige verouderde draadloze kaarten ondersteunen alleen WEP als een beveiligingsprotocol, met deze kaarten is het alleen mogelijk om een AP zonder authenticatie of encryptie of een AP dat het WEP-protocol gebruikt op te zetten. Het draadloze apparaat kan nu in hostap-modus worden gezet en ingesteld worden met het juiste SSID en IP-adres: &prompt.root; ifconfig wlan0 create wlandev ath0 wlanmode hostap &prompt.root; ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 \ ssid freebsdap wepmode on weptxkey 3 wepkey 3:0x3456789012 mode 11g Het weptxkey geeft aan welke WEP-sleutel tijdens het zenden zal worden gebruikt. Hier wordt de derde sleutel gebruikt (merk op dat de nummering van de sleutels bij 1 begint). Deze parameter moet gespecificeerd worden om de gegevens daadwerkelijk te versleutelen. Het wepkey geeft aan dat de geselecteerde WEP-sleutel wordt ingesteld. Het dient in het formaat index:key te zijn, indien de index niet is gegeven, wordt sleutel 1 gebruikt. Dus indien een andere sleutel dan de eerste wordt gebruikt dient de index te worden ingesteld. Weer wordt ifconfig gebruikt om de status van de interface wlan0 te zien: &prompt.root; ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 00:11:95:c3:0d:ac inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap> status: running ssid freebsdap channel 4 (2427 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode OPEN privacy ON deftxkey 3 wepkey 3:40-bit txpower 21.5 scanvalid 60 protmode CTS wme burst dtimperiod 1 -dfs Vanaf een andere draadloze machine is het mogelijk om een scan te beginnen om het AP te vinden: &prompt.root; ifconfig wlan0 create wlandev ath0 &prompt.root; ifconfig wlan0 up scan SSID BSSID CHAN RATE S:N INT CAPS freebsdap 00:11:95:c3:0d:ac 1 54M 22:1 100 EPS De cliëntmachine heeft het toegangspunt gevonden en kan ermee geassocieerd worden door de juiste parameters (sleutel, enz.) te gebruiken, zie voor meer details. Zowel de bekabelde als de draadloze verbinding gebruiken Een bekabelde verbinding biedt betere prestaties en betrouwbaarheid, terwijl een draadloze verbinding meer flexibiliteit en mobiliteit biedt; laptop-gebruikers zullen dit willen combineren en naadloos tussen de twee overschakelen. In &os; is het mogelijk om twee of meer netwerkinterfaces te combineren in een failover-opstelling, dit houdt in dat de meest geprefereerde en best beschikbare verbinding van een groep van netwerkinterfaces wordt gebruikt, en het besturingssysteem automatisch te laten overschakelen wanneer de status van de verbinding verandert. Link-aggregatie en failover worden behandeld in , een voorbeeld voor het gebruik van zowel een bekabelde als een draadloze verbinding wordt gegeven in . Problemen verhelpen Indien er problemen met het draadloos netwerk zijn, zijn er een aantal stappen die genomen kunnen worden om het probleem te helpen verhelpen. Indien het toegangspunt niet vermeld wordt tijdens het scannen, controleer dan of het draadloze apparaat niet is ingesteld op een beperkt aantal kanalen. Indien het niet mogelijk is om met een toegangspunt te associëren, controleer dan of de instellingen van het station overeenkomen met die van het toegangspunt. Dit omvat het authenticatieschema en de beveiligingsprotocollen. Versimpel de configuratie zoveel mogelijk. Indien een beveiligingsprotocol als WPA of WEP wordt gebruikt, stel het toegangspunt dan in voor open authenticatie en geen beveiliging en kijk of er verkeer door kan. Wanneer er met het toegangspunt geassocieerd kan worden, stel dan een diagnose over alle beveiligingsinstellingen met eenvoudige gereedschappen zoals &man.ping.8;. wpa_supplicant biedt veel ondersteuning voor debuggen; probeer het handmatig te draaien met de optie en controleer de systeemlogs. Er zijn ook veel debug-gereedschappen op lagere niveaus. Het is mogelijk om debugberichten in de laag die het 802.11 protocol ondersteunt aan te zetten door het programma wlandebug te gebruiken dat gevonden wordt in /usr/src/tools/tools/net80211. Bijvoorbeeld: &prompt.root; wlandebug -i ath0 +scan+auth+debug+assoc net.wlan.0.debug: 0 => 0xc80000<assoc,auth,scan> kan worden gebruikt om consoleberichten aan te zetten die te maken hebben met het scannen van toegangspunten en het uitvoeren van 802.11 handshakes die nodig zijn om communicatie te regelen. Er worden ook veel nuttige statistieken door de 802.11 laag bijgehouden; het gereedschap wlanstats geeft deze informatie weer. Deze statistieken zouden alle fouten die door de 802.11 laag zijn geïdentificeerd moeten identificeren. Let erop dat sommige fouten worden geïdentificeerd in de apparaatstuurprogramma's die onder de 802.11 laag liggen zodat ze niet verschijnen. Voor het diagnosticeren van apparaatspecifieke problemen dient de documentatie van het stuurprogramma geraadpleegd te worden. Indien de bovenstaande informatie niet helpt om het probleem te verhelderen, stuur dan een probleemrapport op inclusief de uitvoer van de bovenstaande gereedschappen.
Pav Lucistnik Geschreven door
pav@FreeBSD.org
Bluetooth Bluetooth Introductie Bluetooth is een draadloze technologie om persoonlijke netwerken aan te maken die in de vrije 2,4GHz-band werken binnen een straal van 10 meter. Deze netwerken worden gewoonlijk ad-hoc gevormd en bestaan uit draagbare apparaten zoals mobiele telefoons, handhelds en laptops. In tegenstelling tot die andere populaire draadloze techniek, Wi-Fi, biedt Bluetooth een hoger niveau van serviceprofielen, zoals FTP-achtige bestandsservers, pushing van bestanden, stemtransport, emulatie van seriële lijnen, en meer. De Bluetooth stack is in &os; geïmplementeerd door gebruik te maken van het Netgraph-raamwerk (zie &man.netgraph.4;). Veel van de Bluetooth USB-dongles worden ondersteund door het stuurprogramma &man.ng.ubt.4;. Apparaten gebaseerd op de Broadcom BCM2033 chip worden ondersteund door de stuurprogramma's &man.ubtbcmfw.4; en &man.ng.ubt.4;. De 3Com Bluetooth PC Card 3CRWB60-A wordt ondersteund door het stuurprogramma &man.ng.bt3c.4;. Seriële en op UART gebaseerde Bluetooth-apparaten worden ondersteund via &man.sio.4;, &man.ng.h4.4;, en &man.hcseriald.8;. Deze sectie beschrijft het gebruik van de USB Bluetooth-dongle. Het apparaat inprikken Standaard zijn stuurprogramma's voor Bluetooth-apparaten beschikbaar als kernelmodules. Voordat een apparaat wordt aangekoppeld, dient het stuurprogramma in de kernel geladen te worden: &prompt.root; kldload ng_ubt Indien het Bluetooth-apparaat tijdens het opstarten van het systeem in het systeem aanwezig is, kan de module vanuit /boot/loader.conf geladen worden: ng_ubt_load="YES" Prik de USB-dongle in. Uitvoer vergelijkbaar aan de onderstaande zal op de console (of in syslog) verschijnen: 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 Het script /etc/rc.d/bluetooth wordt gebruikt om de Bluetooth-stack te starten en te stoppen. Het is een goed idee om de stack te stoppen voordat het apparaat wordt losgekoppeld, maar het is (gewoonlijk) niet fataal. Tijdens het starten van de stack verschijnt er uitvoer vergelijkbaar met de onderstaande: &prompt.root; /etc/rc.d/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 Host Controller Interface (HCI) HCI Het Host Controller Interface (HCI) biedt een opdrachtinterface naar de controller van de basisband en de verbindingsbeheerder, en toegang tot hardwarestatus en controleregisters. Deze interface biedt een uniforme manier om de mogelijkheden van de basisband van Bluetooth te benaderen. De HCI-laag op de gastheer wisselt gegevens en opdrachten uit met de HCI-firmware in de Bluetooth-hardware. Het stuurprogramma voor de Host Controller Transport Layer (i.e., de fysieke bus) biedt aan beide HCI-lagen de mogelijkheid om informatie met elkaar uit te wisselen. Voor een enkel Bluetooth-apparaat wordt een enkele Netgraph knoop van het type hci aangemaakt. De HCI-knoop is normaliter verbonden met de knoop van het Bluetooth-apparaatstuurprogramma (naar beneden toe) en de L2CAP-knoop (naar boven toe). Alle HCI-bewerkingen dienen te worden uitgevoerd op de HCI-knoop en niet op de knoop van het apparaatstuurprogramma. De standaardnaam voor de HCI-knoop is devicehci. Kijk voor meer details in de hulppagina &man.ng.hci.4;. Eén van de meest voorkomende taken is het ontdekken van Bluetooth-apparaten binnen radiobereik. Deze bewerking wordt ondervragen genoemd. Ondervragen en andere HCI-gerelateerde bewerkingen worden uitgevoerd met het programma &man.hccontrol.8;. Het onderstaande voorbeeld laat zien hoe kan worden uitgezocht welke Bluetooth-apparaten zich binnen het bereik bevinden. De lijst met apparaten zou binnen enkele seconden moeten binnenkomen. Bedenk dat een apparaat op afstand alleen antwoord op de ondervraging zal geven indien het in ontdekbare modus staat. &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 is een uniek adres van een Bluetooth-apparaat, vergelijkbaar met een MAC-adres van een netwerkkaart. Dit adres is nodig voor verdere communicatie met een apparaat. Het is mogelijk om een menselijk leesbare naam aan een BD_ADDR toe te kennen. Het bestand /etc/bluetooth/hosts bevat informatie over de bekende Bluetooth-gastheren. Het volgende voorbeeld laat zien hoe de menselijk leesbare naam dat aan het apparaat op afstand was toegekend te verkrijgen is: &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 Tijdens het uitvoeren van een ondervraging op een Bluetooth-apparaat op afstand zal het de computer als uw.gastheer.naam (ubt0) vinden. De naam die aan het lokale apparaat is toegekend, kan altijd gewijzigd worden. Het Bluetooth-systeem biedt een punt-naar-punt-verbinding (slechts twee Bluetooth-eenheden betrokken), of een punt-naar-veelpunt-verbinding. Bij een punt-naar-veelpunt-verbinding wordt de verbinding met meerdere Bluetooth-apparaten gedeeld. Het volgende voorbeeld laat zien hoe de lijst met actieve basisbandverbindingen voor het lokale apparaat te verkrijgen is: &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 Een verbindingshandvat is nuttig indien het beëindigen van de basisbandverbinding noodzakelijk is. Normaalgesproken is het niet nodig om dit handmatig te doen. De stack zal automatisch niet-actieve basisbandverbindingen beëindigen. &prompt.root; hccontrol -n ubt0hci disconnect 41 Connection handle: 41 Reason: Connection terminated by local host [0x16] Raadpleeg hccontrol help voor een volledige lijst van beschikbare HCI-opdrachten. Voor de meeste HCI-opdrachten zijn geen beheerdersrechten nodig. Logical Link Control and Adaptation Protocol (L2CAP) L2CAP Het Logical Link Control and Adaptation Protocol (L2CAP) biedt verbindingsgeoriënteerde en verbindingsloze gegevensdiensten met mogelijkheden om protocollen te multiplexen en mogelijkheden voor segmentatie/herassemblage voor protocollen in hogere lagen. L2CAP staat toe dat protocollen en toepassingen in hogere lagen L2CAP-gegevenspakketten met een maximale lengte van 64 kB te verzenden en ontvangen. L2CAP is op het concept van kanalen gebaseerd. Een kanaal is een logische verbinding bovenop een basisbandverbinding. Elk kanaal is op een veel-op-één manier aan een enkel protocol gebonden. Aan hetzelfde protocol kunnen meerdere kanalen worden gebonden, maar één kanaal kan niet aan meerdere protocollen worden gebonden. Elk L2CAP-pakket dat op een kanaal wordt ontvangen, wordt naar het juiste hogere protocol doorgestuurd. Meerdere kanalen kunnen dezelfde basisbandverbinding delen. Voor elk Bluetooth-apparaat wordt een enkele Netgraph-knoop van het soort l2cap aangemaakt. De L2CAP-knoop is normaalgesproken verbonden met de Bluetooth HCI-knoop (naar beneden toe) en de knopen van de stopcontacten voor Bluetooth (naar boven toe). De standaardnaam voor de L2CAP-knoop is devicel2cap. Zie voor meer details de hulppagina &man.ng.l2cap.4;. Een nuttig commando is &man.l2ping.8;, dat gebruikt kan worden om andere apparaten te pingen. Sommige Bluetooth-implementaties geven niet alle verzonden gegevens terug, dus is 0 bytes normaal in het volgende voorbeeld. &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 Met het programma &man.l2control.8; kunnen verschillende bewerkingen op L2CAP-knopen worden uitgevoerd. Dit voorbeeld laat zien hoe de lijst met logische verbindingen (kanalen) en de lijst met basisbandverbindingen voor het lokale apparaat verkregen kunnen worden: &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 Een ander diagnostisch programma is &man.btsockstat.1;. Het heeft ongeveer hetzelfde doel als &man.netstat.1;, maar dan voor Bluetooth-netwerkgerelateerde gegevensstructuren. Het onderstaande voorbeeld laat dezelfde logische verbinding zien als die van &man.l2control.8; hierboven. &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 Het RFCOMM-protocol RFCOMM Het RFCOMM-protocol biedt emulatie van seriële poorten over het L2CAP-protocol. Het protocol is gebaseerd op de ETSI-standaard TS 07.10. RFCOMM is een eenvoudig transportprotocol, met aanvullende voorzieningen om de 9 circuits van RS-232- (EIATIA-232-E-) seriële poorten te emuleren. Het RFCOMM-protocol ondersteunt tot 60 gelijktijdige verbindingen (RFCOMM-kanalen) tussen twee Bluetooth-apparaten. Het is de bedoeling van RFCOMM dat in een volledig communicatiepad twee toepassingen op verschillende apparaten draaien (de eindpunten van de communicatie) met daartussen een communicatiesegment. RFCOMM is bedoeld om de toepassingen te beheren die gebruik maken van de seriële poorten van de apparaten waarop ze zijn geïnstalleerd. Het communicatiesegment is een directe Bluetooth-verbinding van het ene apparaat naar het andere. RFCOMM houdt zich alleen bezig met de verbinding tussen twee apparaten bij directe verbindingen, of tussen het apparaat en een modem in het geval van een netwerk. RFCOMM kan andere opstellingen ondersteunen, zoals modules die via draadloze Bluetooth-technologie communiceren aan de ene kant, en een draadinterface aanbieden aan de andere kant. In &os; is het RFCOMM-protocol in de laag van de Bluetooth-stopcontacten geïmplementeerd. Het paren van apparaten paren Standaard is Bluetooth-communicatie niet geauthenticeerd en kan elk apparaat met elk ander apparaat praten. Een Bluetooth-apparaat (bijvoorbeeld een mobiele telefoon) kan ervoor kiezen dat voor bepaalde diensten authenticatie nodig is (bijvoorbeeld voor de inbeldienst). Bluetooth-authenticatie geschied normaalgesproken met PIN-codes. Een PIN-code is een ACII-reeks van maximaal 16 tekens lang. De gebruiker dient dezelfde PIN-code op beide apparaten in te voeren. Nadat de gebruiker de PIN-code heeft ingevoerd, zullen beide apparaten een verbindingssleutel aanmaken. Hierna kan de verbindingssleutel òfwel in de apparaten zelf, òfwel in een permanente opslag worden opgeslagen. De volgende keer zullen beide apparaten de van tevoren aangemaakte verbindingssleutel gebruiken. Bovenstaande procedure wordt paren genoemd. Merk op dat indien een apparaat de verbindingssleutel verliest, het paren moet worden herhaald. De daemon &man.hcsecd.8; is verantwoordelijk voor het behandelen van alle verzoeken voor Bluetooth-authenticatie. Het standaard instellingenbestand is /etc/bluetooth/hcsecd.conf. Een voorbeeldsectie voor een mobiele telefoon waarvan de PIN-code willekeurig op 1234 is hieronder beschreven: device { bgaddr 00:80:37:29:19:a4; name "Pav's T39"; key nokey; pin "1234"; } Er is geen limiet voor PIN-codes (behalve de lengte). Voor sommige apparaten (bijvoorbeeld Bluetooth-headsets) kan de PIN-code vast zijn ingebouwd. De schakelaar dwingt de daemon &man.hcsecd.8; om op de voorgrond te blijven, zodat het gemakkelijk is om te zien wat er gebeurt. Stel het andere apparaat in om paarverzoeken te ontvangen en initialiseer de Bluetooth-verbinding naar het andere apparaat. Het apparaat moet zeggen dat het paarverzoek geaccepteerd is en om de PIN-code vragen. Geef dezelfde PIN-code op als in hcsecd.conf. Nu zijn de PC en het andere apparaat gepaard. Als alternatief kan paren op het andere apparaat worden geïnitialiseerd. De volgende regel kan aan het bestand /etc/rc.conf worden toegevoegd om hcsecd automatisch met het systeem op te starten: hcsecd_enable="YES" Het volgende is een voorbeeld van de uitvoer van de daemon 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 Service Discovery Protocol (SDP) SDP Het Service Discovery Protocol (SDP) biedt voor cliënttoepassingen de mogelijkheid om diensten te ontdekken die door servertoepassingen worden aangeboden alsook de kenmerken van deze diensten. De kenmerken van een dienst omvatten de soort of klasse van de aangeboden dienst en de informatie over het mechanisme of protocol dat nodig is om de dienst te gebruiken. SDP omvat communicatie tussen een SDP-server en een SDP-cliënt. De server houdt een lijst van dienstenregistraties bij die de eigenschappen van de diensten beschrijven die met de server geassocieerd zijn. Elke dienstregistratie bevat informatie over een enkele dienst. Een cliënt kan informatie over een dienstregistratie opvragen die door de SDP-server wordt bijgehouden door een SDP-verzoek in te dienen. Indien de cliënt, of een toepassing die met de cliënt geassocieerd is, besluit om de dienst te gebruiken, moet het een aparte verbinding naar de aanbieder van de dienst openen om de dienst te gebruiken. SDP biedt een mechanisme om diensten en hun attributen te ontdekken, maar het biedt geen mechanisme om die diensten te gebruiken. Normaalgesproken zoekt een SDP-cliënt naar diensten naar aanleiding van enkele gewenste eigenschappen van die diensten. Soms is het echter wenselijk om te ontdekken welke soorten diensten door de dienstregistraties van een SDP-server worden beschreven zonder enige voorkennis van deze diensten. Dit kijken naar alle aangeboden diensten wordt browsen genoemd. De Bluetooth SDP-server &man.sdpd.8; en de opdrachtregelcliënt &man.sdpcontrol.8; zitten in de standaard &os;-installatie. Het volgende voorbeeld laat zien hoe een SDP-browse query uit te voeren. &prompt.user; sdpcontrol -a 00:01:03:fc:6e:ec browse Record Handle: 00000000 Service Class ID List: Service Discovery Server (0x1000) Protocol Descriptor List: L2CAP (0x0100) Protocol specific parameter #1: u/int/uuid16 1 Protocol specific parameter #2: u/int/uuid16 1 Record Handle: 0x00000001 Service Class ID List: Browse Group Descriptor (0x1001) Record Handle: 0x00000002 Service Class ID List: LAN Access Using PPP (0x1102) Protocol Descriptor List: L2CAP (0x0100) RFCOMM (0x0003) Protocol specific parameter #1: u/int8/bool 1 Bluetooth Profile Descriptor List: LAN Access Using PPP (0x1102) ver. 1.0 ... enzovoorts. Merk op dat elke dienst een lijst met attributen heeft (bijvoorbeeld een RFCOMM-kanaal). Afhankelijk van de dienst kan het nodig zijn om een aantekening van sommige attributen te maken. Sommige Bluetooth-implementaties ondersteunen dienst-browsen niet en zullen een lege lijst teruggeven. In dit geval is het mogelijk om naar de specifieke dienst te zoeken. Het onderstaande voorbeeld laat zien hoe naar de dienst OBEX Object Push (OPUSH) gezocht kan worden: &prompt.user; sdpcontrol -a 00:01:03:fc:6e:ec search OPUSH Het aanbieden van diensten op &os; aan Bluetooth-cliënten wordt gedaan met de server &man.sdpd.8;. De volgende regel kan aan het bestand /etc/rc.conf worden toegevoegd: sdpd_enable="YES" Het daemon sdpd kan worden gestart met: &prompt.root; /etc/rc.d/sdpd start De plaatselijke servertoepassing die Bluetooth-diensten wil aanbieden aan verre cliënten zal de dienst registreren bij de plaatselijke SDP-daemon. Een voorbeeld van zo'n toepassing is &man.rfcomm.pppd.8;. Nadat het gestart is zal het de Bluetooth LAN-dienst bij de plaatselijke SDP-daemon registreren. De lijst met diensten die bij de plaatselijke SDP-server zijn geregistreerd kan worden opgevraagd door te SDP-browsen via het plaatselijke controlekanaal: &prompt.root; sdpcontrol -l browse Dial-Up Networking (DUN) en netwerktoegang met PPP (LAN) profielen Het inbelnetwerk (DUN) profiel wordt het meeste gebruikt met modems en mobiele telefoons. De volgende scenario's worden in dit profiel behandeld: het gebruik van een mobiele telefoon of modem door een computer als een draadloze modem voor het verbinden met een inbelserver voor Internet-toegang, of voor andere inbeldiensten; het gebruik van een mobiele telefoon of modem door een computer om gegevensoproepen te ontvangen. Het profiel voor netwerktoegang met PPP (LAN) kan in de volgende situaties gebruikt worden: LAN-toegang voor een enkel Bluetooth-apparaat; LAN-toegang voor meerdere Bluetooth-apparaten; PC naar PC (door PPP-netwerken over een seriële kabel te emuleren). Op &os; zijn beide profielen geïmplementeerd met &man.ppp.8; en &man.rfcomm.pppd.8; - een wrapper die een RFCOMM Bluetooth-verbinding omzet in iets waar PPP mee overweg kan. Voordat een profiel gebruikt kan worden, dient een nieuw PPP-label in het bestand /etc/ppp/ppp.conf te worden aangemaakt. Raadpleeg de hulppagina &man.rfcomm.pppd.8; voor voorbeelden. In het volgende voorbeeld zal &man.rfcomm.pppd.8; gebruikt worden om RFCOMM-verbinding met een ver apparaat met BD_ADDR 00:80:37:29:19:a4 op een DUN RFCOMM-kanaal te maken. Het eigenlijke RFCOMM-kanaalnummer wordt via SDP van het verre apparaat verkregen. Het is mogelijk om het RFCOMM-kanaal handmatig op te geven, en in dat geval zal &man.rfcomm.pppd.8; het SDP-verzoek niet uitvoeren. Gebruik &man.sdpcontrol.8; om het RFCOMM-kanaal op het verre apparaat te achterhalen. &prompt.root; rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup Om netwerktoegang met PPP (LAN) aan te bieden moet de server &man.sdpd.8; draaien. Er dient een nieuwe regel voor LAN-cliënten in het bestand /etc/ppp/ppp.conf aangemaakt te worden. Raadpleeg de hulppagina &man.rfcomm.pppd.8; voor voorbeelden. Tenslotte dient de RFCOMM PPP-server op een geldig RFCOMM-kanaal gestart te worden. De RFCOMM PPP-server zal automatisch de Bluetooth LAN-dienst bij de plaatselijke SDP-daemon registreren. Het volgende voorbeeld laat zien hoe een RFCOMM PPP-server te starten: &prompt.root; rfcomm_pppd -s -C 7 -l rfcomm-server Het OBEX Object Push (OPUSH) profiel OBEX OBEX is een veelgebruikt protocol voor eenvoudige bestandsoverdrachten tussen mobiele apparaten. Het primaire gebruik is infraroodcommunicatie, waar het wordt gebruikt voor generieke bestandsoverdrachten tussen notebooks of PDA's, en om visitekaarten en kalenderregels tussen mobiele telefoons en andere apparaten met PIM-toepassingen over te dragen. De OBEX-server en clieënt zijn geïmplenteerd als een pakket van derde partij, obexapp, dat beschikbaar is als de port comms/obexapp. De OBEX-cliënt wordt gebruikt om objecten naar en/of van de OBEX-server te duwen/trekken. Een object kan bijvoorbeeld een visitekaart of een afspraak zijn. De OBEX-cliënt kan het RFCOMM-kanaalnummer van het verre apparaat via SDP opvragen. Dit kan gedaan worden door de dienstnaam in plaats van het RFCOMM-kanaalnummer op te geven. De ondersteunde dienstnamen zijn: IrMC, FTRN, en OPUSH. Het is mogelijk om het RFCOMM-kanaal als een nummer op te geven. Het onderstaande is een voorbeeld van een OBEX-sessie, waar een apparaatinformatie-object van de mobiele telefoon wordt getrokken, en een nieuw object (een visitekaart) in de gids van de telefoon wordt geduwd: &prompt.user; obexapp -a 00:80:37:29:19:a4 -C IrMC obex> get telecom/devinfo.txt devinfo-t39.txt Success, response: OK, Success (0x20) obex> put new.vcf Success, response: OK, Success (0x20) obex> di Success, response: OK, Success (0x20) Om de dienst OBEX Object Push aan te bieden, moet de server &man.sdpd.8; draaien. Er moet een hoofdmap worden aangemaakt waarin alle binnenkomende objecten worden opgeslagen. Het standaardpad naar de hoofdmap is /var/spool/obex. Tenslotte moet de OBEX-server op een geldig RFCOMM-kanaal worden gestart. De OBEX-server zal automatisch de dienst OBEX Object Push bij de plaatselijke SDP-daemon registeren. Het onderstaande voorbeeld laat zien hoe de OBEX-server gestart wordt: &prompt.root; obexapp -s -C 10 Serial Port Profile (SPP) Het Seriële Poort Profiel (SPP) zorgt ervoor dat Bluetooth-apparaten RS232 (of gelijkwaardige) seriële kabels kunnen emuleren. Het scenario dat dit profiel behandelt zorgt ervoor dat oude toepassingen Bluetooth kunnen gebruiken als vervanging van kabels, door gebruik te maken van een virtuele seriële poort. Het programma &man.rfcomm.sppd.1; implementeert het Seriële Poort profiel. Een pseudo-tty wordt gebruikt als abstractie voor een virtuele seriële poort. Onderstaand voorbeeld laat zien hoe met een Seriële Poortdienst voor verre apparaten te verbinden. Merk op dat het niet nodig is om een RFCOMM-kanaal te kiezen - &man.rfcomm.sppd.1; kan het via SDP van het verre apparaat verkrijgen. Dit kan worden overruled door een RFCOMM-kanaal op de opdrachtregel te specificeren. &prompt.root; rfcomm_sppd -a 00:07:E0:00:0B:CA -t /dev/ttyp6 rfcomm_sppd[94692]: Starting on /dev/ttyp6... Als er een verbinding is, kan de pseudo-tty als seriële poort worden gebruikt: &prompt.root; cu -l ttyp6 Problemen oplossen Een apparaat op afstand kan geen verbinding maken Sommige oudere Bluetooth-apparaten ondersteunen het wisselen van rol niet. Standaard probeert &os;, wanneer het een nieuwe verbinding accepteert, een rolwisseling uit te voeren en meester te worden. Apparaten die dit niet ondersteunen zullen niet kunnen verbinden. Merk op dat van rol wordt gewisseld wanneer een nieuwe verbinding wordt gemaakt, dus het is niet mogelijk om het verre apparaat te vragen of het rolwisseling ondersteunt. Er is een HCI-optie om rolwisselen aan de plaatselijke kant uit te zetten: &prompt.root; hccontrol -n ubt0hci write_node_role_switch 0 Er gaat iets mis, kan ik precies zien wat er gebeurt? Ja, dit is mogelijk. Gebruik het pakket hcidump, dat beschikbaar is als de port comms/hcidump. Het gereedschap hcidump is vergelijkbaar met &man.tcpdump.1;. Het kan gebruikt worden om de inhoud van Bluetooth-pakketten op de terminal te laten zien en om de Bluetooth-pakketten naar een bestand te schrijven.
Andrew Thompson Geschreven door Bridging Introductie IP-subnet bridge Soms is het handig om één fysiek netwerk (zoals een Ethernet-segment) in twee gescheiden netwerksegmenten te verdelen zonder de noodzaak om een IP-subnet aan te maken en een router te gebruiken om de segmenten met elkaar te verbinden. Een apparaat dat twee netwerken op deze manier met elkaar verbindt wordt een bridge (brug) genoemd. Een &os;-systeem met twee netwerkkaarten kan als bridge dienen. De bridge werkt door de adressen van de MAC-laag (Ethernetadressen) van de apparaten op elke netwerkinterface te leren. Het stuurt alleen verkeer tussen twee netwerken door indien de bron en het doel zich op verschillende netwerken bevinden. In vele opzichten is een bridge als een Ethernet-switch met erg weinig poorten. Situaties waarin bridging juist is Er zijn vandaag de dag veel situaties waarin een bridge gebruikt wordt. Netwerken verbinden Het basisgebruik van een bridge is het met elkaar verbinden van twee of meer netwerksegmenten. Er zijn vele redenen om een hostgebaseerde bridge te gebruiken in plaats van simpele netwerkapparaten zoals kabelbeperkingen, firewalling of het verbinden van pseudonetwerken zoals een interface van een virtuële machine. Een bridge kan ook een draadloze interface die in hostap-modus draait met een bedraad netwerk verbinden en als een toegangspunt dienen. Filtering/Bandbreedtebeheersende firewall firewall NAT Een gebruikelijke situatie dient zich voor wanneer de functionaliteit van een firewall nodig is zonder routing of network address translation (NAT). Een voorbeeld is een klein bedrijf dat via DSL of ISDN met hun internetprovider verbonden is. Dit bedrijf heeft 13 wereldwijd bereikbare IP-adressen van de internetprovider en 10 PC's op hun netwerk. In deze situatie is een firewall die op een router gebaseerd is lastig wegens subnet-problemen. router DSL ISDN Een firewall die op een bridge gebaseerd is kan ingesteld en net na de DSL- of ISDN-router geplaatst worden zonder dat er problemen met IP-nummers optreden. Netwerktap Een bridge kan twee netwerksegmenten verbinden en kan gebruikt worden om alle Ethernetframes die tussen dezen voorbijkomen te inspecteren. Dit kan òfwel vanuit het gebruik van &man.bpf.4;/&man.tcpdump.1; op de bridge-interface òfwel door een kopie van alle frames naar een extra interface (overspanpoort) te versturen. Laag 2 VPN Twee Ethernetnetwerken kunnen over een IP-verbinding verbonden worden door de netwerken naar een EtherIP-tunnel te bridgen of met een oplossing gebaseerd po &man.tap.4; zoals OpenVPN. Laag 2 Redundancy Een netwerk kan met meerdere verbindingen verbonden worden en het Spanning Tree Protocol gebruiken om overbodige paden te blokkeren. Een Ethernetnetwerk kan alleen juist functioneren indien er slechts één actief pad bestaat tussen twee apparaten, Spanning Tree zal lussen detecteren en de overbodige verbindingen in een geblokkeerde toestand zetten. Indien een van de actieve verbindingen faalt zal het protocol een andere boom berekenen en een van de geblokkeerde paden weer activeren om de verbindingen naar alle punten in het netwerk te herstellen. De kernel instellen Deze sectie behandelt de bridges geïmplementeerd met &man.if.bridge.4;, een stuurprogramma dat bridges met netgraph implementeert is ook beschikbaar, zie voor meer informatie de hulppagina &man.ng.bridge.4;. Het bridge-stuurprogramma is een kernelmodule en zal automatisch door &man.ifconfig.8; worden geladen wanneer er een bridge-interface wordt aangemaakt. Het is mogelijk om de bridge in de kernel te compileren door device if_bridge aan het kernelinstellingenbestand toe te voegen. Pakketfiltering kan met elk firewall-pakket worden gebruikt dat via het raamwerk &man.pfil.9; aankoppelt. De firewall kan als een module worden geladen of in de kernel worden gecompileerd. De bridge kan als met &man.altq.4; of &man.dummynet.4; als een verkeersregelaar worden gebruikt. De bridge inschakelen De bridge wordt aangemaakt door interfaces te klonen. Om een bridge aan te maken wordt &man.ifconfig.8; gebruikt, indien het bridge-stuurprogramma niet in de kernel aanwezig is zal het automatisch worden geladen. &prompt.root; ifconfig bridge create &prompt.root; ifconfig bridge0 bridge0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 96:3d:4b:f1:79:7a id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200 root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0 Een bridge-interface is aangemaakt en er is automatisch een random gegenereerd Ethernetadres aan toegekend. De parameters maxaddr en timeout bepalen hoeveel MAC-adressen de bridge in de doorstuurtabel houdt en hoeveel seconden voordat elke regel wordt verwijderd nadat het voor het laatst gezien is. De andere parameters bepalen hoe Spanning Tree werkt. Voeg de netwerkinterfaces die lid zijn aan de bridge toe. Om de bridge pakketten te laten doorsturen dienen alle lidinterfaces en de bridge actief te zijn: &prompt.root; ifconfig bridge0 addm fxp0 addm fxp1 up &prompt.root; ifconfig fxp0 up &prompt.root; ifconfig fxp1 up De bridge stuurt nu Ethernet-frames door tussen fxp0 en fxp1. De overeenkomstige configuratie in /etc/rc.conf zodat de bridge tijdens het opstarten wordt aangemaakt is: cloned_interfaces="bridge0" ifconfig_bridge0="addm fxp0 addm fxp1 up" ifconfig_fxp0="up" ifconfig_fxp1="up" Indien de bridge-gastheer een IP-adres nodig heeft dan is de juiste plaats om dit in te stellen op de bridge-interface zelf in plaats van op een van de lidinterfaces. Dit kan statisch of via DHCP worden ingesteld: &prompt.root; ifconfig bridge0 inet 192.168.0.1/24 Het is ook mogelijk om een IPv6-adres aan een bridge-interface toe te kennen. Firewalls gebruiken firewall Wanneer pakketten worden gefilterd, zullen gebridgede pakketten het filter inbound op de vertrekkende interface passeren, op de bridge-interface en outbound op de bestemde interface. Elke stap kan uitgezet worden. Wanneer de richting van het pakketverkeer belangrijk is, kan de firewall het beste op de lidinterfaces draaien en niet op de bridge zelf. De bridge heeft verschillende aanpasbare instellingen voor het doorlaten van non-IP- en ARP-pakketten, en een laag 2 firewall met IPFW. Zie &man.if.bridge.4; voor meer informatie. Opspannende boom Het bridge-stuurprogramma implementeert het Rapid Spanning Tree Protocol (RSTP of 802.1w) met terugwaartse compatibiliteit met het verouderde Spanning Tree Protocol (STP). Spanning Tree wordt gebruikt om lussen in een netwerktopologie te detecteren en verwijderen. RSTP biedt snellere convergentie naar een opspannende boom dan het verouderde STP, het protocol wisselt informatie met naburige switches uit om snel naar forwarding over te gaan zonder lussen te creëren. &os; ondersteunt RSTP en STP als opties, waarbij RSTP de standaard is. Spanning Tree kan op lidinterfaces worden geactiveerd met het commando stp. Voor een bridge met fxp0 en fxp1 alle huidige interfaces, wordt STP met het volgende geactiveerd: &prompt.root; ifconfig bridge0 stp fxp0 stp fxp1 bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether d6:cf:d5:a0:94:6d id 00:01:02:4b:d4:50 priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200 root id 00:01:02:4b:d4:50 priority 32768 ifcost 0 port 0 member: fxp0 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP> port 3 priority 128 path cost 200000 proto rstp role designated state forwarding member: fxp1 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP> port 4 priority 128 path cost 200000 proto rstp role designated state forwarding De bridge heeft spanning tree ID 00:01:02:4b:d4:50 en prioriteit 32768. Aangezien het root id hetzelfde is geeft dit aan dat dit de hoofdbridge voor de boom is. Een andere bridge in het netwerk heeft spanning tree ook geactiveerd: bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 96:3d:4b:f1:79:7a id 00:13:d4:9a:06:7a priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200 root id 00:01:02:4b:d4:50 priority 32768 ifcost 400000 port 4 member: fxp0 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP> port 4 priority 128 path cost 200000 proto rstp role root state forwarding member: fxp1 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP> port 5 priority 128 path cost 200000 proto rstp role designated state forwarding De reegl root id 00:01:02:4b:d4:50 priority 32768 ifcost 400000 port 4 geeft aan dat de hoofdbridge 00:01:02:4b:d4:50 is zoals boven en dat de padkosten 400000 zijn vanaf deze bridge, het pad naar de hoofdbridge gaat via port 4 welke fxp0 is. Geavanceerd bridgen Verkeersstromen reconstrueren De bridge ondersteunt monitormodus, waarin de pakketten worden verwijderd nadat ze door &man.bpf.4; zijn verwerkt, en ze niet verder verwerkt of doorgestuurd worden. Dit kan worden gebruikt om de invoer van twee of meer interfaces naar een enkele &man.bpf.4;-stroom te multiplexen. Dit is nuttig voor het reconstrueren van het verkeer voor netwerktaps welke de RX/TX-signalen over twee verschillende interfaces uitzenden. Om de invoer van vier netwerkinterfaces als één stroom te lezen: &prompt.root; ifconfig bridge0 addm fxp0 addmfxp1 addm fxp2 addm fxp3 monitor up &prompt.root; tcpdump -i bridge0 SPAN poorten Van elk Ethernet-frame dat door de bridge wordt ontvangen wordt er een kopie naar de aangewezen SPAN-poort verstuurd. Het aantal geconfigureerde SPAN-poorten op een bridge is onbeperkt, indien een interface aangewezen is als SPAN-poort kan het niet ook als gewone bridgepoort gebruikt worden. Dit is het nuttigste voor het passief afluisteren van een gebridged netwerk op een andere host die met een van de SPAN-poorten van de bridge verbonden is. Om een kopie van alle frames naar de interface fxp4 te versturen: &prompt.root; ifconfig bridge0 span fxp4 Privé-interfaces Een privé-interface stuurt geen verkeer door naar poorten die niet ook een privé-interface zijn. Het verkeer wordt onvoorwaardelijk geblokkeerd, dus worden er geen Ethernetframes doorgestuurd, inclusief ARP. Indien verkeer selectief dient te worden geblokkeerd dient er in plaats hiervan een firewall gebruikt te worden. Klevende interfaces Indien een lidinterface van een bridge als klevend is gemarkeerd worden dynamisch geleerde adresregels als statisch behandelt wanneer ze in de doorstuurcache komen. Klevende interfaces vallen nooit uit de cache en worden nooit vervangen, zelfs niet als het adres op een andere interface wordt gezien. Dit biedt het voordeel van statische adresregels zonder dat de doorstuurtabel van te voren gevuld hoeft te worden, cliënten die geleerd zijn op een bepaald segment van de bridge kunnen niet roamen naar een ander segment. Een ander voorbeeld voor het gebruik van klevende adressen zou het combineren van de bridge met VLANs zijn om een router te creëren waar klantnetwerken geïsoleerd zijn zonder dat IP-adresruimte verspild wordt. Neem aan dat KlantA op vlan100 zit en KlantB op vlan101. De bridge heeft het adres 192.168.0.1 en is tevens een internet-router. &prompt.root; ifconfig bridge0 addm vlan100 sticky vlan100 addm vlan101 sticky vlan101 &prompt.root; ifconfig bridge0 inet 192.168.0.1/24 Beide cliënten zien 192.168.0.1 als hun standaard gateway en aangezien de bridge-cache kleverig is kunnen ze niet het MAC-adres van de andere klant spoofen om hun verkeer op te vangen. Alle communicatie tussen de VLANs kan geblokkeerd worden door het gebruik van privé-interfaces (of een firewall): &prompt.root; ifconfig bridge0 private vlan100 private vlan101 De klanten zijn compleet geïsoleerd van elkaar, het volledige /24 adresruimte kan zonder subnetten toegewezen worden. Adresbeperkingen Het aantal unieke bron-MAC-adressen achter een interface kan beperkt zijn. Wanneer de limiet bereikt is worden pakketten met een onbekend bronadres gedropt totdat een bestaande ingang in de host-cache vervalt of wordt verwijderd. Het volgende voorbeeld stelt het maximum aantal Ethernetapparaten voor KlantA op vlan100 in op 10. &prompt.root; ifconfig bridge0 ifmaxaddr vlan100 10 SNMP-monitoring De bridge-interface en STP-parameters kunnen gemonitord worden via het SNMP-daemon dat met het basis &os;-systeem wordt meegeleverd. De geëxporteerde bridge-MIBs houden zich aan de standaarden van de IETF zodat elke SNMP-cliënt of monitorpakket kan worden gebruikt om de gegevens te verzamelen. Op de bridge-machine dient de regel begemotSnmpdModulePath."bridge" = "/usr/lib/snmp_bridge.so" van /etc/snmp.config geactiveerd te worden en het daemon bsnmpd gestart te worden. Andere instellingen zoals gemeenschapsnamen en toegangslijsten dienen eventueel aangepast te worden. Zie &man.bsnmpd.1; en &man.snmp.bridge.3; voor meer informatie. Het volgende voorbeeld gebruikt de software Net-SNMP (net-mgmt/net-snmp om een bridge te ondervragen, de port net-mgmt/bsnmptools kan ook worden gebruikt. Voeg de volgende regels toe aan $HOME/.snmp/snmp.conf op de SNMP-cliënt-host om de MIB-definities van de bridge in Net-SNMP te importeren: mibdirs +/usr/share/snmp/mibs mibs +BRIDGE-MIB:RSTP-MIB:BEGEMOT-MIB:BEGEMOT-BRIDGE-MIB Om een enkele bridge via de IETF BRIDGE-MIB (RFC4188) te monitoren: &prompt.user; snmpwalk -v 2c -c public bridge1.example.com mib-2.dot1dBridge BRIDGE-MIB::dot1dBaseBridgeAddress.0 = STRING: 66:fb:9b:6e:5c:44 BRIDGE-MIB::dot1dBaseNumPorts.0 = INTEGER: 1 ports BRIDGE-MIB::dot1dStpTimeSinceTopologyChange.0 = Timeticks: (189959) 0:31:39.59 centi-seconds BRIDGE-MIB::dot1dStpTopChanges.0 = Counter32: 2 BRIDGE-MIB::dot1dStpDesignatedRoot.0 = Hex-STRING: 80 00 00 01 02 4B D4 50 ... BRIDGE-MIB::dot1dStpPortState.3 = INTEGER: forwarding(5) BRIDGE-MIB::dot1dStpPortEnable.3 = INTEGER: enabled(1) BRIDGE-MIB::dot1dStpPortPathCost.3 = INTEGER: 200000 BRIDGE-MIB::dot1dStpPortDesignatedRoot.3 = Hex-STRING: 80 00 00 01 02 4B D4 50 BRIDGE-MIB::dot1dStpPortDesignatedCost.3 = INTEGER: 0 BRIDGE-MIB::dot1dStpPortDesignatedBridge.3 = Hex-STRING: 80 00 00 01 02 4B D4 50 BRIDGE-MIB::dot1dStpPortDesignatedPort.3 = Hex-STRING: 03 80 BRIDGE-MIB::dot1dStpPortForwardTransitions.3 = Counter32: 1 RSTP-MIB::dot1dStpVersion.0 = INTEGER: rstp(2) De waarde dot1dStpTopChanges.0 is twee wat betekent dat de topologie van de STP-bridge twee maal veranderd is, een topologieverandering houdt in dat één of meerdere links in het netwerk zijn veranderd of hebben gefaald en dat er een nieuwe boom is berekend. De waarde dot1dStpTimeSinceTopologyChange.0 laat zien wanneer dit gebeurde. Om meerdere bridge-interfaces te monitoren kan men het privé BEGEMOT-BRIDGE-MIB gebruiken: &prompt.user; snmpwalk -v 2c -c public bridge1.example.com enterprises.fokus.begemot.begemotBridge BEGEMOT-BRIDGE-MIB::begemotBridgeBaseName."bridge0" = STRING: bridge0 BEGEMOT-BRIDGE-MIB::begemotBridgeBaseName."bridge2" = STRING: bridge2 BEGEMOT-BRIDGE-MIB::begemotBridgeBaseAddress."bridge0" = STRING: e:ce:3b:5a:9e:13 BEGEMOT-BRIDGE-MIB::begemotBridgeBaseAddress."bridge2" = STRING: 12:5e:4d:74:d:fc BEGEMOT-BRIDGE-MIB::begemotBridgeBaseNumPorts."bridge0" = INTEGER: 1 BEGEMOT-BRIDGE-MIB::begemotBridgeBaseNumPorts."bridge2" = INTEGER: 1 ... BEGEMOT-BRIDGE-MIB::begemotBridgeStpTimeSinceTopologyChange."bridge0" = Timeticks: (116927) 0:19:29.27 centi-seconds BEGEMOT-BRIDGE-MIB::begemotBridgeStpTimeSinceTopologyChange."bridge2" = Timeticks: (82773) 0:13:47.73 centi-seconds BEGEMOT-BRIDGE-MIB::begemotBridgeStpTopChanges."bridge0" = Counter32: 1 BEGEMOT-BRIDGE-MIB::begemotBridgeStpTopChanges."bridge2" = Counter32: 1 BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot."bridge0" = Hex-STRING: 80 00 00 40 95 30 5E 31 BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot."bridge2" = Hex-STRING: 80 00 00 50 8B B8 C6 A9 Om de bridge-interface die via de subboom mib-2.dot1dBridge wordt gemonitord te veranderen: &prompt.user; snmpset -v 2c -c private bridge1.example.com BEGEMOT-BRIDGE-MIB::begemotBridgeDefaultBridgeIf.0 s bridge2 Andrew Thompson Geschreven door Verbindingsaggregatie en failover lagg failover fec lacp loadbalance roundrobin Introductie De interface &man.lagg.4; maakt het mogelijk om meerdere netwerkinterfaces te aggregeren in één virtueel interface voor het bieden van fout-tolerante en zeer snelle verbindingen. Werkmodi Failover Zendt en ontvangt verkeer alleen door de meesterpoort. Wanneer de meesterpoort niet beschikbaar is, wordt de volgende actieve poort gebruikt. De eerste toegevoegde interface is de meesterpoort; alle interfaces die hierna zijn toegevoegd worden gebruikt als failover-apparaten. Als failover naar een niet-meesterpoort plaatsvindt, dan wordt de originele poort de meester wanneer deze weer beschikbaar wordt. &cisco; Fast ðerchannel; &cisco; Fast ðerchannel; (FEC), is een statische installatie en onderhandelt niet over aggregatie met de peer noch wisselt het frames uit om de verbinding te monitoren. Indien de switch LACP ondersteunt dient dat gebruikt te worden. FEC balanceert uitgaand verkeer over de actieve poorten gebaseerd op gehashde informatie over protocolheaders en accepteert inkomend verkeer van elke actieve poort. De hash bevat het Ethernet bron- en doeladres, en indien beschikbaar, de VLAN-tag, en de IPv4/IPv6 bron- en doeladressen. LACP Het &ieee; 802.3ad Link Aggregation Control Protocol (LACP) en het Marker Protocol. LACP onderhandelt met de peer over een verzameling aggregeerbare verbindingen in één of meerdere Link Aggregated Groups (LAG). Elke LAG is opgebouwd uit poorten die dezelfde snelheid hebben, ingesteld op full-duplex werking. Het verkeer zal over de poorten in de LAG gebalanceerd worden met de hoogste totaalsnelheid, in de meeste gevallen zal er slechts één LAG zijn die alle poorten bevat. Wanneer er fysieke verbindingen veranderen, zal Link Aggregation snel naar een nieuwe opstelling convergeren. LACP balanceert uitgaand verkeer over de actieve poorten gebaseerd op gehashde informatie over protocolheaders en accepteert inkomend verkeer van elke actieve poort. De hash bevat het Ethernet bron- en doeladres, en indien beschikbaar, de VLAN-tag, en de IPv4/IPv6 bron- en doeladressen. Loadbalance Dit is een alias van de FEC modus. Round-Robin Distribueert uitgaand verkeer door middel van een round-robin scheduler over alle actieve poorten en accepteert inkomend verkeer van elke actieve poort. Deze modus schendt Ethernet frame-ordering en dient met zorg gebruikt te worden. Voorbeelden LACP-aggregatie met een &cisco; switch Dit voorbeeld verbindt twee interfaces op een &os;-machine met de switch als een enkele loadgebalanceerde en fout-tolerante verbinding. Er kunnen meer interfaces worden toegevoegd om de doorvoer en fouttolerantie te verhogen. Aangezien frame-ordering verplicht is op Ethernetverbindingen stroomt al het verkeer tussen twee stations altijd over dezelfde fysieke verbinding zodat de maximum snelheid beperkt wordt tot die van één interface. Het verzendalgoritme probeert zoveel mogelijk informatie te gebruiken voor het onderscheiden van verschillende verkeersstromen en deze over de beschikbare interfaces te balanceren. Voeg op de &cisco; switch de interfaces FastEthernet0/1 en FastEthernet0/2 aan de kanaalgroep 1 toe: interface FastEthernet0/1 channel-group 1 mode active channel-protocol lacp ! interface FastEthernet0/2 channel-group 1 mode active channel-protocol lacp Maak de &man.lagg.4;-interface aan met fxp0 en fxp1 en activeer de interface met IP-adres 10.0.0.3/24: &prompt.root; ifconfig fxp0 up &prompt.root; ifconfig fxp1 up &prompt.root; ifconfig lagg0 create &prompt.root; ifconfig lagg0 up laggproto lacp laggport fxp0 laggport fxp1 10.0.0.3/24 Bekijk de interfacestatus van ifconfig: &prompt.root; ifconfig lagg0 Poorten die als ACTIVE zijn gemarkeerd zijn lid van de actieve aggregatiegroep waarover onderhandeld is met de verre switch en waarover verkeer zal worden verzonden en ontvangen. Gebruik de uitgebreide uitvoer van &man.ifconfig.8; om de LAG-identifiers te bekijken. lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:05:5d:71:8d:b8 media: Ethernet autoselect status: active laggproto lacp laggport: fxp1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING> laggport: fxp0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING> Gebruik, om de toestand van de poorten op de switch te bekijken, show lacp neighbor. switch# show lacp neighbor Flags: S - Device is requesting Slow LACPDUs F - Device is requesting Fast LACPDUs A - Device is in Active mode P - Device is in Passive mode Channel group 1 neighbors Partner's information: LACP port Oper Port Port Port Flags Priority Dev ID Age Key Number State Fa0/1 SA 32768 0005.5d71.8db8 29s 0x146 0x3 0x3D Fa0/2 SA 32768 0005.5d71.8db8 29s 0x146 0x4 0x3D Gebruik voor meer detail het commando show lacp neighbor detail. Voeg de volgende regels aan /etc/rc.conf toe om deze informatie na het opnieuw starten te behouden: ifconfig_fxp0="up" ifconfig_fxp1="up" cloned_interfaces="lagg0" ifconfig_lagg0="laggproto lacp laggport fxp0 laggport fxp1 10.0.0.3/24" Failover-modus Failover-modus kan worden gebruikt om op een secondaire interface over te schakelen wanneer de verbinding op de meesterinterface verloren is. Activeer de onderliggende fysieke interface. Creëer de interface lagg0, met fxp0 als de meesterinterface en fxp1 als de secondaire interface en ken er IP-adres 10.0.0.15/24 aan toe: &prompt.root; ifconfig fxp0 up &prompt.root; ifconfig fxp1 up &prompt.root; ifconfig lagg0 create &prompt.root; ifconfig lagg0 up laggproto failover laggport fxp0 laggport fxp1 10.0.0.15/24 De interface zal er ongeveer als volgt uitzien, de grote verschillen zullen het MAC-adres en de apparaatnamen zijn: &prompt.root; ifconfig lagg0 lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:05:5d:71:8d:b8 inet 10.0.0.15 netmask 0xffffff00 broadcast 10.0.0.255 media: Ethernet autoselect status: active laggproto failover laggport: fxp1 flags=0<> laggport: fxp0 flags=5<MASTER,ACTIVE> Het verkeer zal worden verzonden en ontvangen op fxp0. Indien de verbinding op fxp0 verloren is, zal fxp1 de actieve verbinding worden. Indien de verbinding op de meesterinterface hersteld is, zal het weer de actieve verbinding worden. Voeg de volgende regels aan /etc/rc.conf toe om deze informatie na het opnieuw starten te behouden: ifconfig_fxp0="up" ifconfig_fxp1="up" cloned_interfaces="lagg0" ifconfig_lagg0="laggproto lacp laggport fxp0 laggport fxp1 10.0.0.15/24" Failover-modus tussen bekabelde en draadloze interfaces Voor laptop-gebruikers is het normaliter wenselijk om het draadloze interface als secundair interface te gebruiken indien het bekabelde interface niet beschikbaar is. Met &man.lagg.4; is het mogelijk om één IP-adres te gebruiken en het bekabelde interface voor zowel prestatie als veiligheid te prefereren terwijl de mogelijkheid behouden blijft om de draadloze verbinding te gebruiken. In deze opstelling dient het MAC-adres van het onderliggende draadloze interface overschreven te worden om met dat van &man.lagg.4; overeen te komen, welke afkomstig is van het primaire interface dat wordt gebruikt, het bekabelde interface. In deze opstelling wordt het bekabelde interface, bge0 als meester gebruikt, en het draadloze interface, wlan0, als het failover-interface. wlan0 was aangemaakt vanuit iwn0 voor welke het MAC-adres van de bekabelde verbinding zal worden gebruikt. De eerste stap is om het MAC-adres van het bekabelde interface te verkrijgen: &prompt.root; ifconfig bge0 bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4> ether 00:21:70:da:ae:37 inet6 fe80::221:70ff:feda:ae37%bge0 prefixlen 64 scopeid 0x2 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet autoselect (1000baseT <full-duplex>) status: active bge0 kan vervangen worden door het eigenlijke interface, er zal een andere regel met ether verschijnen, dit is het MAC-adres van het bekabelde interface. Om het onderliggende draadloze interface, iwn0 te wijzigen: &prompt.root; ifconfig iwn0 ether 00:21:70:da:ae:37 Activeer het draadloze interface maar geef er nog geen IP-adres aan: &prompt.root; ifconfig wlan0 create wlandev iwn0 ssid mijn_router up Activeer de interface bge0. Maak het &man.lagg.4;-interface aan met bge0 als meester, en met failover naar wlan0 indien nodig: &prompt.root; ifconfig bge0 up &prompt.root; ifconfig lagg0 create &prompt.root; ifconfig lagg0 up laggproto failover laggport bge0 laggport wlan0 Het interface zal er ongeveer als volgt uitzien, de grootste verschillen zullen het MAC-adres en de apparaatnamen zijn: &prompt.root; ifconfig lagg0 lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:21:70:da:ae:37 media: Ethernet autoselect status: active laggproto failover laggport: wlan0 flags=0<> laggport: bge0 flags=5<MASTER,ACTIVE> Start vervolgens de DHCP-cliënt om een IP-adres te verkrijgen: &prompt.root; dhclient lagg0 Om deze configuratie bij het opstarten te behouden, kan het volgende aan /etc/rc.conf worden toegevoegd: ifconfig_bge0="up" ifconfig_iwn0="ether 00:21:70:da:ae:37" wlans_iwn0="wlan0" ifconfig_wlan0="WPA" cloned_interfaces="lagg0" ifconfig_lagg0="laggproto failover laggport bge0 laggport wlan0 DHCP" Jean-François Dockès Bijgewerkt door Alex Dupre Gereorganiseerd en uitgebreid door Schijfloos werken schijfloos werkstation schijfloos werken Een &os;-machine kan over het netwerk opstarten en zonder een plaatselijke schijf werken, door gebruik te maken van bestandssystemen die van een NFS-server aangekoppeld worden. Er zijn geen systeemwijzigingen nodig anders dan de standaard instellingenbestanden. Dit soort systemen is relatief eenvoudig op te zetten omdat alle noodzakelijke elementen al aanwezig zijn: Er zijn minstens twee manieren om de kernel over het netwerk te laden: PXE: De &intel; Preboot eXecution Environment is een vorm een smart boot ROM dat in sommige netwerkkaarten en moederborden is ingebouwd. Bekijk de hulppagina &man.pxeboot.8; voor meer informatie. De poort Etherboot (net/etherboot) maakt code aan dat naar een ROM geschreven kan worden en dat kernels over het netwerk opstart. De code kan òfwel naar een opstart-PROM op een netwerkkaart geflashed worden, òfwel van een floppy (of harde) schijf geladen worden, òfwel van een draaiend &ms-dos; systeem geladen worden. Vele netwerkkaarten worden ondersteund. Een voorbeeldscript (/usr/share/examples/diskless/clone_root) vergemakkelijkt het aanmaken en beheren van het root bestandssysteem van het werkstation op de server. Het kan nodig zijn dat het script wat aangepast moet worden, maar het zorgt voor een snelle start. Er bestaan standaardbestanden voor het opstarten van het systeem in /etc om een systeemstart zonder schijf te detecteren en te ondersteunen. Het gebruik van een wisselbestand, indien nodig, kan worden gedaan naar òfwel een NFS bestand òfwel naar een plaatselijke schijf. Er zijn vele manieren om een schijfloos werkstation op te zetten. Hierbij zijn veel elementen betrokken, en vele kunnen aan de eigen smaak worden aangepast. Het volgende beschrijft variaties met betrekking tot het installeren van een compleet systeem, waarbij de nadruk ligt op de eenvoud en de compatibiliteit met de standaard opstartscripts van &os;. Het beschreven systeem heeft de volgende eigenschappen: De schijfloze werkstations gebruiken een gedeeld bestandssysteem voor /, dat alleen gelezen kan worden, en een gedeeld bestandssysteem voor /usr, dat eveneens alleen gelezen kan worden. Het root-bestandssysteem is een kopie van een standaard root-bestandssysteem voor &os; (typisch van een server), waarbij enkele instellingenbestanden zijn overschreven door versies die specifiek zijn voor een schijfloos systeem of, mogelijk, door het werkstation horen waar ze bij horen. De delen van het root-bestandssysteem die beschrijfbaar moeten zijn, zijn overdekt met &man.md.4; bestandssystemen. Alle veranderingen gaan verloren indien het systeem opnieuw wordt opgestart. De kernel is overgedragen en òfwel met Etherboot òfwel met PXE geladen, aangezien sommige situaties het gebruik van één van de methodes kan eisen. Het systeem zoals hierboven beschreven is onveilig. Het dient in een beschermd gebied van een netwerk te functioneren, en niet vertrouwd te worden door andere hosts. Alle informatie in deze sectie is getest met &os; 5.2.1-RELEASE. Achtergrondinformatie Het installeren van schijfloze werkstations is zowel vrij rechttoe-rechtaan als foutgevoelig. Deze fouten zijn soms moeilijk vast te stellen wegens een aantal redenen. Bijvoorbeeld: Opties die tijdens het compileren zijn opgegeven kunnen verschillend gedrag tonen tijdens het draaien. Foutmeldingen zijn vaak cryptisch of geheel afwezig. Op dit gebied is het bezit van wat achtergrondkennis over de gebruikte mechanismen zeer nuttig om mogelijke problemen op te lossen. Voor een succesvol opstarten dienen verschillende handelingen uitgevoerd te worden: De machine moet een aantal initiële parameters zoals het IP-adres, de bestandsnaam van de executable, de naam van de server, en het root-pad verkrijgen. Dit wordt gedaan door gebruik te maken van de DHCP of BOOTP protocollen. DHCP is een compatible uitbreiding van BOOTP, het gebruikt dezelfde poorten en het pakketformaat heeft dezelfde basis. Het is mogelijk om een systeem in te stellen zodat het alleen BOOTP gebruikt. Het serverprogramma &man.bootpd.8; wordt met het basissysteem van &os; meegeleverd. DHCP biedt echter een aantal voordelen boven BOOTP (fijnere instellingenbestanden, mogelijkheid om PXE te gebruiken, en vele anderen die niet direct verband houden met schijfloos werken), er zal hoofdzakelijk een opstelling met DHCP worden beschreven, met analoge voorbeelden voor &man.bootpd.8; indien mogelijk. De voorbeeldopstelling zal het softwarepakket van ISC DHCP gebruiken (versie 3.0.1.r12 was geïnstalleerd op de testserver). De machine moet één of meerdere programma's naar het plaatselijke geheugen versturen. Eén van TFTP of NFS wordt gebruikt. De keuze tussen TFTP en NFS is op verschillende plaatsen een optie tijdens het compileren. Een veelgemaakte fout is het opgeven van bestandsnamen voor het verkeerde protocol: TFTP verstuurd typisch alle bestanden vanuit één map op de server, en verwacht dat alle bestandsnamen relatief aan deze map zijn; NFS verwacht absolute bestandspaden. De mogelijke tussentijdse opstartprogramma's en de kernel dienen geïnitialiseerd en uitgevoerd te worden. Er zijn enkele belangrijke variaties op dit gebied: PXE zal &man.pxeboot.8; laden, wat een aangepaste versie is van de lader voor stage drie van &os;. &man.loader.8; zal de meeste parameters verkrijgen die noodzakelijk zijn om het systeem op te starten, en zal ze in de kernelomgeving laten staan voordat het de controle overdraagt. Het is in dit geval mogelijk om een GENERIC kernel te gebruiken. Etherboot zal met minder voorbereiding direct de kernel laden. Hiervoor is het noodzakelijk om een kernel met specifieke opties te bouwen. PXE en Etherboot werken beide even goed; echter, omdat kernels normaalgesproken meer werk overlaten aan &man.loader.8;, is PXE de te verkiezen methode. Indien het BIOS en de netwerkkaarten PXE ondersteunen, dient dat waarschijnlijk gebruikt te worden. Tenslotte: de machine heeft toegang tot de bestandssystemen nodig. NFS wordt in alle gevallen gebruikt. Zie ook de hulppagina &man.diskless.8;. Installatie-instructies Instellen met behulp van <application>ISC DHCP</application> DHCP schijfloos werken De ISC DHCP server kan zowel verzoeken voor BOOTP als DHCP beantwoorden. ISC DHCP 4.2 maakt geen deel uit van het basissysteem. Eerst dient de poort net/isc-dhcp42-server of het corresponderende pakket geïnstalleerd te worden. Wanneer ISC DHCP is geïnstalleerd, heeft het een instellingenbestand nodig om te draaien (normaliter /usr/local/etc/dhcpd.conf genoemd). Hieronder volgt een voorbeeld met commentaar, waarbij host margaux gebruik maakt van Etherboot en corbieres gebruik maakt van PXE: 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 "/data/misc/kernel.diskless"; option root-path "192.168.4.4:/data/misc/diskless"; } host corbieres { hardware ethernet 00:02:b3:27:62:df; fixed-address corbieres.example.com; next-server 192.168.4.4; filename "pxeboot"; option root-path "192.168.4.4:/data/misc/diskless"; } } Deze optie vertelt dhcpd om de waarde die in de verklaringen voor host staan te versturen als de hostnaam voor de schijfloze host. Een andere mogelijkheid is om option host-name margaux binnen de verklaringen voor host op te nemen. De aanwijzing next-server bepaalt de TFTP of NFS server die gebruikt moet worden voor het laden van het lader- of kernelbestand (standaard wordt dezelfde host als voor de DHCP-server gebruikt). De aanwijzing filename bepaalt het bestand dat Etherboot of PXE gebruikt voor de volgende uitvoerstap. Het dient gespecificeerd te worden volgens de gebruikte verzendmethode. Voor Etherboot kan tijdens het compileren worden opgegeven of het NFS of TFTP moet gebruiken. De &os;-poort stelt standaard NFS in. PXE gebruikt TFTP, vandaar dat hier een relatieve bestandsnaam wordt gebruikt (dit kan afhangen van de instellingen van de TFTP-server, maar het is de gewoonte). Verder geldt dat PXE pxeboot en niet de kernel laadt. Er zijn andere interessante mogelijkheden, zoals het laden van pxeboot vanuit de map /boot van een &os; CD-ROM (aangezien &man.pxeboot.8; de GENERIC kernel kan laden, bestaat de mogelijkheid om PXE te gebruiken om van een CDROM op afstand op te starten. De optie root-path definieert het pad naar het root-bestandssysteem, in de gebruikelijke notatie van NFS. Indien PXE gebruikt wordt, is het mogelijk om het IP-adres van de host weg te laten zolang de kerneloptie BOOTP niet geactiveerd is. De NFS-server is dan dezelfde als die van TFTP. Configuratie door gebruik van BOOTP BOOTP schijfloos werken Hieronder staan de equivalente instellingen voor bootpd (gereduceerd tot één cliënt). Dit staat in /etc/bootptab. Merk op dat Etherboot gecompileerd dient te worden met de afwijkende optie NO_DHCP_SUPPORT om BOOTP te gebruiken, en dat PXE DHCP nodig heeft. Het enige duidelijke voordeel van bootpd is dat het in het basissysteem zit. .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 Een opstartprogramma voorbereiden met <application>Etherboot</application> Etherboot De website van Etherboot bevat uitgebreide documentatie die over het algemeen is bedoeld voor Linux-systemen, maar die desalniettemin bruikbare informatie bevat. Het volgende geeft een samenvatting over hoe Etherboot op een &os;-systeem te gebruiken. Ten eerste dient het pakket of de poort net/etherboot geïnstalleerd te worden. De instellingen van Etherboot (i.e., om TFTP in plaats van NFS te gebruiken) kunnen gewijzigd worden door het bestand Config in de bronmap van Etherboot te bewerken. Hieronder zal een opstartdiskette gebruikt worden. Raadpleeg voor andere methoden (PROM, of een &ms-dos;-programma) de documentatie van Etherboot. Om een opstartdiskette te maken, dient er een diskette in het diskettestation van de machine aanwezig te zijn waarop Etherboot is geïnstalleerd, daarna dient er naar de map src in de mapboom van Etherboot gegaan te worden, en het volgende ingetypt te worden: &prompt.root; gmake bin32/apparaatsoort.fd0 apparaatsoort hangt af van het soort Ethernetkaart dat in het schijfloze werkstation aanwezig is. Raadpleeg het bestand NIC in dezelfde map om het juiste apparaatsoort te bepalen. Opstarten met <acronym>PXE</acronym> Standaard laadt de lader &man.pxeboot.8; de kernel via NFS. Het kan zodanig gecompileerd worden dat het TFTP gebruikt door de optie LOADER_TFTP_SUPPORT in /etc/make.conf te specificeren. Raadpleeg het commentaar in /usr/share/examples/etc/make.conf voor instructies. Er zijn nog twee andere opties voor make.conf die nuttig kunnen zijn bij het opzetten van een schijfloze machine die als seriële console gebruikt wordt: BOOT_PXELDR_PROBE_KEYBOARD, en BOOT_PXELDR_ALWAYS_SERIAL. Om PXE bij het opstarten van de machine te gebruiken, is het gewoonlijk nodig om de optie Boot from network in het BIOS te selecteren, of om een functietoets tijdens de initialisatie van de PC in te typen. De <acronym>TFTP</acronym> en <acronym>NFS</acronym> servers instellen TFTP schijfloos werken NFS schijfloos werken Indien PXE of Etherboot gebruikt wordt, welke is ingesteld om TFTP te gebruiken, is het nodig om tftpd op de bestandsserver aan te zetten: Maak een map aan van waaruit tftpd de bestanden serveert, bijvoorbeeld /tftpboot. Voeg deze regel toe aan /etc/inetd.conf: tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot Het schijnt dat sommige versies van PXE de TCP-versie van TFTP vereisen. In dit geval dient een tweede regel toegevoegd te worden, waarbij dgram udp door stream tcp vervangen wordt. inetd dient de instellingenbestanden opnieuw te lezen. De regel dient in het bestand /etc/rc.conf aanwezig te zijn voor de juiste werking van deze opdracht: &prompt.root; /etc/rc.d/inetd restart De map tftpboot kan overal op de server geplaatst worden. De plaats dient zowel in inetd.conf als in dhcpd.conf ingesteld te worden. In alle gevallen dient er ook voor gezorgd te worden dat NFS aanstaat en dat het juiste bestandssysteem op de NFS-server geëxporteerd wordt. Voeg het volgende toe aan /etc/rc.conf: nfs_server_enable="YES" Exporteer het bestandssysteem waar de schijfloze root-map zich bevindt door het volgende aan /etc/exports toe te voegen (pas het aankoppelpunt van het volume aan en vervang margaux corbieres door de namen van de schijfloze werkstations): /data/misc -alldirs -ro margaux corbieres mountd dient het instellingenbestand opnieuw te lezen. Indien het nodig was om NFS in /etc/rc.conf tijdens de eerste stap aan te zetten, is het waarschijnlijk gewenst om in plaats hiervan opnieuw op te starten. &prompt.root; /etc/rc.d/mountd restart Een schijfloze kernel bouwen schijfloos werken kernelinstellingen Indien Etherboot gebruikt wordt, is het nodig om een kernelinstellingenbestand voor de schijfloze cliënt met de volgende opties (naast de gebruikelijke) aan te maken: options BOOTP # Gebruik BOOTP om het IP-adres en de hostnaam te verkrijgen options BOOTP_NFSROOT # NFS-mount het root-bestandssysteem door gebruik te maken van de informatie van BOOTP Het kan ook gewenst zijn om BOOTP_NFSV3, BOOT_COMPAT, en BOOTP_WIRED_TO te gebruiken (raadpleeg hiervoor NOTES). De namen van deze opties zijn historisch en enigszins misleidend aangezien ze eigenlijk onverschillig gebruik van DHCP en BOOTP in de kernel mogelijk maken (het is ook mogelijk om strikt gebruik van BOOTP of DHCP te forceren). De kernel dient gebouwd te worden (zie ) en gekopieerd te worden naar de plaats die in dhcpd.conf is aangegeven. Indien PXE gebruikt wordt, is het bouwen van een kernel met bovenstaande opties niet strikt noodzakelijk (maar wel aangeraden). Door deze opties aan te zetten zullen er meer verzoeken voor DHCP tijdens het opstarten van de kernel verstuurd worden, met in sommige speciale gevallen een klein risico op inconsistentie tussen de nieuwe waarden en degenen die door &man.pxeboot.8; zijn ontvangen. Het voordeel van het gebruik van deze opties is dat de hostnaam als een bijverschijnsel wordt ingesteld. In de andere gevallen dient de hostnaam op een andere manier ingesteld te worden, bijvoorbeeld in een cliënt-specifiek bestand rc.conf. Om laadbaar te zijn met Etherboot, dienen de apparaataanwijzingen in de kernel gecompileerd te worden. Normaalgesproken wordt hiervoor de volgende optie in het instellingenbestand gebruikt (zie het instellingencommentaarbestand NOTES): hints "GENERIC.hints" Het root-bestandssysteem voorbereiden root-bestandssysteem schijfloos werken Er dient een root-bestandssysteem voor de schijfloze werkstations op de plaats die als root-path in dhcpd.conf staat aangegeven aangemaakt te worden. <command>make world</command> gebruiken om het root-bestandssysteem te bevolken Deze methode is snel en installeert een compleet maagdelijk systeem (niet alleen het root-bestandssysteem) in DESTDIR. Hiervoor dient slechts het volgende script uitgevoerd te worden: #!/bin/sh export DESTDIR=/data/misc/diskless mkdir -p ${DESTDIR} cd /usr/src; make buildworld && make buildkernel make installworld && make installkernel cd /usr/src/etc; make distribution Nadat dit gedaan is, kunnen /etc/rc.conf en /etc/fstab die in DESTDIR geplaatst zijn naar behoefte worden aangepast. Swapruimte instellen Indien nodig kan een wisselbestand dat zich op de server bevindt via NFS worden benaderd. Swapruimte via <acronym>NFS</acronym> De kernel biedt geen ondersteuning om swapruimte via NFS tijdens het opstarten aan te zetten. De swapruimte moet door de opstartscripts worden aangezet, door een beschrijfbaar bestandssysteem aan te koppelen en een wisselbestand aan te maken en aan te zetten. De volgende opdracht maakt een wisselbestand van de juiste grootte aan: &prompt.root; dd if=/dev/zero of=/pad/naar/wisselbestand bs=1k count=1 oseek=100000 Om het aan te zetten dient de volgende regel aan /etc/rc.conf te worden toegevoegd: swapfile=/pad/naar/wisselbestand Diverse problemen Draaien met een alleen-lezen <filename>/usr</filename> schijfloos werken /usr alleen-lezen Indien het schijfloze werkstation is ingesteld om X te draaien, is het nodig om het instellingenbestand van XDM te wijzigen, dat standaard het foutenlogboek in /usr plaatst. Gebruik maken van een niet-&os;-server Indien de server voor het root-bestandssysteem geen &os; draait, is het nodig om het root-bestandssysteem op een &os;-machine aan te maken, en het daarna naar de bestemming te kopiëren, door gebruik te maken van tar of cpio. In deze situatie zijn er af en toe problemen met de speciale bestanden in /dev, vanwege verschillen in de groottes van grote/kleine integers. Een oplossing voor dit probleem is om een map van de niet-&os;-server te exporteren, deze map op een &os;-machine aan te koppelen, en &man.devfs.5; te gebruiken om de apparaatknooppunten transparant voor de gebruiker toe te wijzen. Craig Rodrigues
rodrigc@FreeBSD.org
Geschreven door
Met PXE en een NFS-root-bestandssysteem opstarten Het Preboot eXecution Environment (PXE) van &intel; maakt het mogelijk om het besturingssysteem over het netwerk op te starten. Ondersteuning voor PXE wordt normaliter aangeboden in het BIOS van moderne moederborden, waar het kan worden aangezet in de instellingen van het BIOS wat opstarten over het netwerk mogelijk maakt. Een volledig werkende PXE-opstelling vereist ook correct geconfigureerde DHCP- en TFTP-servers. Wanneer de gastheercomputer opstart, krijgt het informatie over DHCP over waar de intiële bootloader staat via TFTP. Nadat de gastheercomputer deze informatie heeft ontvangen, downloadt het de bootloader via TFTP en voert het vervolgens de bootloader uit. Dit is gedocumenteerd in sectie 2.2.1 van de Preboot Execution Environment (PXE) Specification. In &os; is de bootloader die tijdens het PXE-proces wordt opgehaald /boot/pxeboot. Terwijl /boot/pxeboot wordt uitgevoerd, wordt de kernel van &os; geladen en wordt er verder gegaan met de rest van de opstartprocedure van &os;. Kijk voor meer informatie over het opstartproces van &os; in . De <command>chroot</command>-omgeving voor het NFS-root-bestandssysteem instellen Kies een map uit voor een installatie van &os; die over NFS aangekoppeld kan worden. Bijvoorbeeld een map als /b/tftpboot/FreeBSD/install. &prompt.root; export NFSROOTDIR=/b/tftpboot/FreeBSD/install &prompt.root; mkdir -p ${NFSROOTDIR} Stel de NFS-server in door de instructies in op te volgen. Exporteer de map via NFS door het volgende aan /etc/exports toe te voegen: /b -ro -alldirs Herstart de NFS-server: &prompt.root; /etc/rc.d/nfsd restart Stel &man.inetd.8; in door de stappen zoals in beschreven op te volgen. Voeg de volgende regel toe aan /etc/inetd.conf: tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /b/tftpboot Herstart inetd: &prompt.root; /etc/rc.d/inetd restart Herbouw de kernel en userland van &os;: &prompt.root; cd /usr/src &prompt.root; make buildworld &prompt.root; make buildkernel Installeer &os; in de map die over NFS is aangekoppeld: &prompt.root; make installworld DESTDIR=${NFSROOTDIR} &prompt.root; make installkernel DESTDIR=${NFSROOTDIR} &prompt.root; make distribution DESTDIR=${NFSROOTDIR} Test dat de TFTP-server werkt en dat het de bootloader dat via PXE verkregen zal worden kan downloaden: &prompt.root; tftp localhost tftp> get FreeBSD/install/boot/pxeboot Received 264951 bytes in 0.1 seconds Voeg een regel aan ${NFSROOTDIR}/etc/fstab toe om het root-bestandssysteem over NFS aan te koppelen: # Device Mountpoint FSType Options Dump Pass -mijnhost.voorbeeld.com:/b/tftpboot/FreeBSD/install / nfs ro 0 0 +mijnhost.example.com:/b/tftpboot/FreeBSD/install / nfs ro 0 0 - Vervang mijnhost.voorbeeld.com door + Vervang mijnhost.example.com door de hostnaam of het IP-adres van uw NFS-server. In dit voorbeeld wordt het root-bestandssysteem als alleen-lezen aangekoppeld om te voorkomen dat NFS-cliënten per ongeluk de inhoud van het root-bestandssysteem wissen. Stel het root-wachtwoord in voor de &man.chroot.8;-omgeving. &prompt.root; chroot ${NFSROOTDIR} &prompt.root; passwd Dit stelt het root-wachtwoord in voor cliëntmachines die over PXE opstarten. Maak root-logins over SSH mogelijk voor cliëntmachines die met PXE opstarten door ${NFSROOTDIR}/etc/ssh/sshd_config te bewerken en de optie PermitRootLogin aan te zetten. Dit is gedocumenteerd in &man.sshd.config.5;. Pas andere wijzigingen toe aan de &man.chroot.8;-omgeving in ${NFSROOTDIR}. Deze wijzigingen zouden het toevoegen van pakketten met &man.pkg.add.1;, het bewerken van het wachtwoordbestand met &man.vipw.8; of het bewerken van &man.amd.conf.5;-projecties voor automatisch aankoppelen kunnen zijn. Bijvoorbeeld: &prompt.root; chroot ${NFSROOTDIR} &prompt.root; pkg_add -r bash Geheugenbestandssystemen die gebruikt worden door <filename>/etc/rc.initdiskless</filename> configureren Als u vanaf een NFS-rootvolume opstart, detecteert /etc/rc dat u over NFS opstartte en draait het het script /etc/rc.initdiskless. Lees het commentaar in dit script om te begrijpen wat er gebeurt. Het is nodig om /etc en /var geheugen-backed te maken omdat deze mappen schrijfbaar moeten zijn, maar de NFS-rootmap is alleen-lezen. &prompt.root; chroot ${NFSROOTDIR} &prompt.root; mkdir -p conf/base &prompt.root; tar -c -v -f conf/base/etc.cpio.gz --format cpio --gzip etc &prompt.root; tar -c -v -f conf/base/var.cpio.gz --format cpio --gzip var Wanneer het systeem opstart, zullen er geheugen-bestandssystemen voor /etc en /var worden aangemaakt en aangekoppeld, en zal de inhoud van de cpio.gz-bestanden er naartoe worden gekopieerd. Een DHCP-server prepareren PXE heeft een geprepareerde TFTP-server en DHCP-server nodig. De DHCP-server hoeft niet per së dezelfde machine te zijn als de TFTP-server, maar het dient bereikbaar te zijn in uw netwerk. Installeer de DHCP-server door de instructies op te volgen zoals beschreven in . Zorg ervoor dat /etc/rc.conf en /usr/local/etc/dhcpd.conf correct zijn geconfigureerd. Stel in /usr/local/etc/dhcpd.conf next-server, filename en option root-path in om het IP-adres van uw TFTP-server, het pad naar /boot/pxeboot en het pad naar het NFS-root-bestandssysteem op te geven. Hier is een voorbeeld van de instellingen voor dhcpd.conf: subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.0.3 ; option subnet-mask 255.255.255.0 ; option routers 192.168.0.1 ; option broadcast-address 192.168.0.255 ; option domain-name-server 192.168.35.35, 192.168.35.36 ; - option domain-name "voorbeeld.com"; + option domain-name "example.com"; # IP-adres van TFTP server next-server 192.168.0.1 ; # pad van bootloader verkregen via TFTP filename "FreeBSD/install/boot/pxeboot" ; # pxeboot bootloader zal proberen om deze map te NFS-mounten voor root-FS option root-path "192.168.0.1:/b/tftpboot/FreeBSD/install/" ; } De PXE-cliënt configureren en verbindingsproblemen opsporen Ga naar het BIOS-configuratiemenu wanneer de cliëntmachine opstart. Stel het BIOS zo in dat het van het netwerk opstart. Indien alle vorige configuratiestappen correct zijn, zou alles "gewoon" moeten werken. Gebruik de poort net/wireshark om netwerkverkeer met betrekking tot het PXE-opstartproces te debuggen, wat geïllustreerd is in onderstaand diagram. In is een voorbeeldconfiguratie gegeven waarbij de DHCP-, TFTP- en NFS-servers op dezelfde machine staan. Deze servers kunnen echter op verschillende machines staan.
PXE-opstartproces met NFS-root-mount Cliënt zendt DHCPDISCOVER uit. DHCP-server antwoordt met IP-adres, next-server, filename en root-path. Cliënt verstuurt TFTP-verzoek naar next-server om filename op te vragen. TFTP-server antwoordt en verstuurt filename naar cliënt. Cliënt voert filename uit welke &man.pxeboot.8; is. &man.pxeboot.8; laadt de kernel. Wanneer de kernel draait, wordt het root-bestandssysteem gespecificeerd door root-path over NFS aangekoppeld.
Controleer dat het bestand pxeboot via TFTP kan worden verkregen. Kijk op uw TFTP-server in /var/log/xferlog om er zeker van de zijn dat het bestand pxeboot van de juiste locatie is opgehaald. Om de configuratie met bovenstaande dhcpd.conf te testen: &prompt.root; tftp 192.168.0.1 tftp> get FreeBSD/install/boot/pxeboot Received 264951 bytes in 0.1 seconds Lees &man.tftpd.8; en &man.tftp.1;. De BUGS secties in deze pagina's documenteren enkele beperkingen van TFTP. Controleer dat het root-bestandssysteem via NFS kan worden aangekoppeld. Om de configuratie met bovenstaande dhcpd.conf te testen: &prompt.root; mount -t nfs 192.168.0.1:/b/tftpboot/FreeBSD/install /mnt Lees de code in src/sys/boot/i386/libi386/pxe.c om te begrijpen hoe de pxeboot-lader variabelen als boot.nfsroot.server en boot.nfsroot.path instelt. Deze variabelen worden vervolgens gebruikt in de root-aankoppelcode voor diskvrij NFS in src/sys/nfsclient/nfs_diskless.c. Lees &man.pxeboot.8; en &man.loader.8;.
ISDN ISDN Een goede bron voor informatie over de technologie van en hardware over ISDN is Dan Kegel's ISDN Page. Hieronder staat een snelle eenvoudige handleiding voor ISDN: Indien u in Europa leeft is het raadzaam om de sectie over ISDN-kaarten te bestuderen. Indien het plan is om ISDN hoofdzakelijk te gebruiken om via een niet-toegewijde inbellijn een verbinding met het Internet te maken, zijn Terminal Adapters wellicht een optie. Dit biedt de meeste flexibiliteit, en de minste problemen bij het wisselen van providers. Indien twee LANs met elkaar verbonden worden, of indien er een toegewijde ISDN-verbinding wordt gebruikt om met het Internet te verbinden, is het gebruik van een zelfstandige router/bridge te overwegen. Financiële kosten zijn een belangrijke factor in de uiteindelijke oplossing. De volgende opties zijn gesorteerd in volgorde van oplopende kosten. Hellmuth Michaelis Bijgedragen door ISDN-kaarten ISDN kaarten De ISDN-implementatie in &os; biedt alleen ondersteuning voor de DSS1/Q.931 (of Euro-ISDN) standaard indien passieve kaarten gebruikt worden. Sommige actieve kaarten worden ondersteund indien de firmware ook ondersteuning voor andere signaleringsprotocollen biedt; dit omvat ook de eerst ondersteunde Primary Rate (PRI) ISDN-kaart. De isdn4bsd-software biedt de mogelijkheid om met andere ISDN-routers te verbinden door òfwel IP over rauwe HDLC òfwel synchrone PPP te gebruiken: òfwel via kernel-PPP met isppp, een aangepast stuurprogramma voor &man.sppp.4;, òfwel via het gebruikersprogramma &man.ppp.8;. Door het gebruikersprogramma &man.ppp.8; te gebruiken, is het combineren van twee of meer ISDN B-kanalen mogelijk. Ook zijn een toepassing die de telefoon beantwoordt en vele gereedschappen zoals een 300 Baud-modem in software beschikbaar. Een groeiend aantal ISDN-kaarten voor de PC wordt door &os; ondersteund en volgens de rapportages wordt het succesvol in heel Europa en in vele andere delen van de wereld gebruikt. De ondersteunde passieve ISDN-kaarten zijn meestal uitgerust met de Infineon (voormalig Siemens) ISAC/HSCX/IPAC ISDN-chipsets, maar ook worden ISDN-kaarten ondersteund met chips van Cologne Chip (alleen ISA-bus), PCI-kaarten met Winbond W6692-chips, enkele kaarten met combinaties van Tiger300/320/ISAC chipsets en enkele kaarten die gebaseerd zijn op fabrikantspecifieke chipsets zoals de AVM Fritz!Card PCI V.1.0 en de AVM Fritz!Card PnP. Momenteel zijn de actieve ISDN-kaarten die ondersteund worden de AVM B1 (ISA en PCI) BRI-kaarten en de AVM T1 PCI PRI-kaarten. Kijk voor documentatie over isdn4bsd op de homepage van isdn4bsd, welke ook verwijzingen naar tips, errata, en veel meer documentatie zoals het isdn4bsd handboek bevat. Indien er interesse is om ondersteuning voor een ander ISDN-protocol, een momenteel niet-ondersteunde ISDN-kaart voor de PC, of een andere verbetering voor isdn4bsd toe te voegen, dient er contact opgenomen te worden met &a.hm;. Voor vragen over het installeren, instellen, en problemen met isdn4bsd oplossen is er een mailinglijst, &a.isdn.name;, beschikbaar. ISDN Terminal Adapters Terminal adapters (TA) zijn voor ISDN wat modems voor gewone telefoonlijnen zijn. modem De meeste TA's gebruiken de standaard opdrachtenverzameling van de Hayes-modem, en kunnen direct als vervanging van een modem gebruikt worden. Een TA zal als een gewoon modem werken behalve dat de verbindings- en doorvoersnelheden veel hoger zullen zijn dan van het oude modem. Het is noodzakelijk om PPP precies hetzelfde als voor het modem in te stellen. Zorg ervoor dat de seriële snelheid zo hoog mogelijk wordt ingesteld. PPP Het grootste voordeel van met een TA met een internetprovider te verbinden is de mogelijkheid tot dynamisch PPP. Aangezien IP-adresruimte steeds schaarser wordt, zijn de meeste providers niet meer bereid om een statisch IP te geven. De meeste zelfstandige routers zijn niet in staat tot dynamische IP-toewijzing. TA's zijn geheel afhankelijk van het PPP-daemon dat gedraaid wordt voor hun mogelijkheden en stabiliteit van de verbinding. Dit maakt het mogelijk om gemakkelijk om op een &os;-machine van een modem naar ISDN over te gaan, indien PPP reeds is ingesteld. Echter, dezelfde problemen die er waren met het PPP-programma zullen blijven voorkomen. Indien maximale stabiliteit gewenst is, dient de kernel PPP-, niet de gebruikers-PPP-optie gebruikt te worden. Van de volgende TA's is bekend dat ze met &os; werken: Motorola BitSurfer en BitSurfer Pro Adtran De meeste andere TA's zullen waarschijnlijk ook werken, TA-verkopers proberen er zeker van te zijn dat hun product het meeste van de AT-opdrachtverzameling van het standaardmodem accepteert. Het echte probleem met externe TA's is dat, net zoals bij modems, een goede seriële kaart in de computer nodig is. Voor een goed begrip van seriële apparaten dient de tutorial &os; Serial Hardware en de verschillen tussen asynchrone en synchrone seriële poorten gelezen te worden. Een TA die op een standaard seriële poort (asynchroon) van een PC draait beperkt de snelheid tot 115.2 Kbps, zelfs als er een 128 Kbps-verbinding beschikbaar is. Om de volledige 128 Kbps waartoe ISDN in staat is te gebruiken, dient de TA op een synchrone seriële kaart overgeplaatst te worden. Het kopen van een interne TA voorkomt het probleem van synchroon/asynchroon niet. Interne TA's hebben simpelweg een seriële poortchip van een standaard PC ingebouwd. Dit ontlast de gebruiker alleen van het kopen van nog een seriële kabel en het vinden van nog een leeg elektronisch uitbreidingsslot. Een synchrone kaart met een TA is minstens zo snel als een zelfstandige router, en wanneer het door een eenvoudige 386 met &os; erop wordt aangestuurd, waarschijnlijk flexibeler. De keuze tussen synchrone kaart/TA en zelfstandige router is grotendeels religieus. Hierover zijn wat discussies in de mailinglijsten gevoerd. Het wordt aangeraden om de archieven te doorzoeken voor de volledige discussie. Zelfstandige ISDN bridges/routers ISDN zelfstandige bridges/routers ISDN-bridges of -routers zijn in het geheel niet specifiek voor &os; of enig ander besturingssysteem. Raadpleeg voor een volledigere beschrijving van de technologie van routing en bridging een referentieboek over netwerken. In deze sectie zullen de termen router en bridge door elkaar worden gebruikt. Aangezien de prijzen van eenvoudige ISDN-routers/-bridges zakken, zal dit waarschijnlijk een steeds populairdere keuze worden. Een ISDN-router is en kleine doos die direct in het plaatselijke Ethernetnetwerk geprikt wordt, en zijn eigen verbinding met de andere bridge/router beheert. Het heeft ingebouwde software om via PPP en andere populaire protocollen te communiceren. Een router staat veel snellere doorvoer dan een standaard-TA toe, aangezien het een volledig synchrone ISDN-verbinding zal gebruiken. Het grootste probleem met ISDN-routers en -bridges is dat samenwerking tussen fabrikanten nog steeds een probleem kan zijn. Indien er plannen zijn om met een internetprovider te verbinden, is het raadzaam de wensen met hen te bespreken. Indien er gepland is om twee LAN-segmenten met elkaar te verbinden, zoals het thuis-LAN en het kantoor-LAN, is dit de eenvoudigste en onderhoudarmste oplossing. Aangezien de apparatuur voor beide kanten van de verbinding wordt gekocht is het zeker dat de verbinding zal werken. De volgende installatie kan worden gebruikt om bijvoorbeeld een thuiscomputer of een netwerk van een afdelingskantoor met een netwerk van het hoofdkantoor te verbinden: Netwerk van afdelingskantoor of thuis 10 base 2 Het netwerk gebruikt een topologie gebaseerd op een bus met een 10 base 2 Ethernet (thinnet). Verbind indien nodig de router met de netwerkkabel met een AUI/10BT transceiver. ---Sun werkstation | ---FreeBSD computer | ---Windows 95 | Zelfstandige router | ISDN BRI lijn 10 Base 2 Ethernet Wanneer het thuis-/afdelingskantoornetwerk uit slechts één computer bestaat kan een twisted-pair crossover-kabel gebruikt worden om direct met de zelfstandige router te verbinden. Hoofdkantoor- of ander LAN 10 base T Het netwerk gebruikt een stertopologie met 10 base T Ethernet (Twisted Pair). -------Novell Server | H | | ---Sun | | | U ---FreeBSD | | | ---Windows 95 | B | |___---Zelfstandige router | ISDN BRI lijn ISDN Netwerkdiagram Een groot voordeel van de meeste routers/bridges is dat ze gelijktijdig 2 gescheiden onafhankelijke PPP-verbindingen met 2 gescheiden sites toestaan. Dit wordt door de meeste TA's niet ondersteund, behalve voor specifieke (gewoonlijk dure) modellen die twee seriële poorten hebben. Dit dient niet met kanaalbinding, MPP, etcetera verward te worden. Dit kan een erg handige eigenschap zijn indien, bijvoorbeeld, er een toegewijde ISDN-verbinding op kantoor is en het gewenst is om deze af te tappen, maar een andere ISDN-lijn op het werk ongewenst is. Een router op kantoor kan een toegewijde B-kanaal verbinding (64 Kbps) met het Internet beheren en het andere B-kanaal voor een gescheiden gegevensverbinding gebruiken. Het tweede B-kanaal kan voor inbellen, uitbellen, of dynamisch binden (MPP, etcetera) gebruikt worden met het eerste B-kanaal voor meer bandbreedte. IPX/SPX Een Ethernet-bridge staat ook toe om meer dan alleen IP-verkeer te verzenden. Het is ook mogelijk om IPX/SPX of enig ander protocol te gebruiken. Chern Lee Bijgedragen door Network Address Translation Overzicht natd Het Network Address Translation daemon van &os;, in het algemeen bekend als &man.natd.8;, is een daemon dat rauwe binnenkomende IP-pakketten accepteert, de bron naar die van de plaatselijke machine verandert en de pakketten terug in de uitgaande IP-pakketstroom injecteert. &man.natd.8; doet dit door het IP-adres en de poort van de bron zo te veranderen dat wanneer de gegevens weer ontvangen worden, het in staat is om de originele plaats van de gegevens te achterhalen en ze door te sturen naar de originele aanvrager. Internetverbinding delen NAT NAT wordt het meest gebruikt wat in het algemeen bekend is als het delen van een Internetverbinding. Installatie Wegens de krimpende IP-ruimte in IPv4, en het groeiend aantal gebruikers van consumentenlijnen op hoge snelheid zoals kabel of DSL, hebben steeds meer mensen een oplossing als het delen van een Internetverbinding nodig. Vanwege de mogelijkheid om meerdere computers online te verbinden door één verbinding en IP-adres is &man.natd.8; een redelijke keuze. In de meeste gevallen heeft een gebruiker een machine verbonden met een kabel- of DSL-lijn met één IP-adres en is het gewenst om deze ene verbonden computer te gebruiken om Internettoegang aan meerdere computers over een LAN te geven. Hiervoor dient de &os;-machine op het Internet dienst doen als gateway. Deze gateway-machine heeft twee NICs nodig — één voor de verbinding met de Internetrouter, de andere voor de verbinding met het LAN. Alle machines op het LAN zijn verbonden door een hub of switch. Er zijn vele manieren om een LAN via een &os;-gateway met het Internet te verbinden. Dit voorbeeld behandelt slechts een gateway met tenminste twee NICs. _______ __________ ________ | | | | | | | Hub |-----| Client B |-----| Router |----- Internet |_______| |__________| |________| | ____|_____ | | | Client A | |__________| Netwerkschema Dit soort installaties wordt in het algemeen gebruikt om een Internetverbinding te delen. Eén van de LAN-machines is verbonden met het Internet. De rest van de machines hebben internettoegang via die gateway-machine. Bootloader-configuratie bootloader configuratie De mogelijkheden van de kernel voor network address translation met &man.natd.8; staan niet aan in GENERIC, maar ze kunnen worden voorgeladen tijdens het opstarten door enkele opties aan /boot/loader.conf toe te voegen: ipfw_load="YES" ipdivert_load="YES" Ook moet de tunable net.inet.ip.fw.default_to_accept op 1 worden gezet: net.inet.ip.fw.default_to_accept="1" Het is een goed idee om deze optie aan te zetten tijdens de eerste pogingen om een firewall en NAT gateway te installeren. Op deze manier zal het standaardbeleid van &man.ipfw.8; allow ip from any to any zijn in plaats van het minder vrije deny ip from any to any, en zal het iets moeilijker zijn om buitengesloten te worden net na het opnieuw opstarten van het systeem. Kernelconfiguratie kernel instellingen Wanneer modules geen optie zijn of wanneer het gewenst is om alle benodigde mogelijkheden in de draaiende kernel te bouwen, dienen de volgende opties in het kernelinstellingenbestand aanwezig te zijn: options IPFIREWALL options IPDIVERT De volgende opties kunnen ook van pas komen: options IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_VERBOSE Systeeminstellingen voor het opstarten Om de firewall en NAT tijdens het opstarten aan te zetten, moet het volgende in /etc/rc.conf staan: gateway_enable="YES" firewall_enable="YES" firewall_type="OPEN" natd_enable="YES" natd_interface="fxp0" natd_flags="" Stelt de machine in om dienst te doen als gateway. Het draaien van sysctl net.inet.ip.forwarding=1 heeft hetzelfde effect. Activeert de firewall-regels in /etc/rc.firewall tijdens het opstarten. Dit specificeert een vooraf gedefinieerde verzameling van firewall-regels die alles binnenlaat. Raadpleeg /etc/rc.firewall voor aanvullende types. Geeft aan welke interface te gebruiken om pakketten naar door te sturen (de interface die met het Internet verbonden is). Alle aanvullende instelopties die tijdens het opstarten aan &man.natd.8; worden doorgegeven. Het gedefinieerd hebben van de bovenstaande opties in /etc/rc.conf zal natd -interface fxp0 draaien tijdens het opstarten. Dit kan ook handmatig worden gedraaid. Het is ook mogelijk om een instellingenbestand voor &man.natd.8; te gebruiken als er teveel opties zijn om door te geven. In dit geval dient het instellingenbestand te worden gedefinieerd door de volgende regel aan /etc/rc.conf toe te voegen: natd_flags="-f /etc/natd.conf" Het bestand /etc/natd.conf zal een lijst met instelopties bevatten, één per regel. Het geval in de volgende sectie bijvoorbeeld zal het volgende bestand gebruiken: redirect_port tcp 192.168.0.2:6667 6667 redirect_port tcpc 192.168.0.3:80 80 Raadpleeg voor meer informatie over het instellingenbestand het gedeelte over de optie van de hulppagina &man.natd.8;. Elke machine en interface achter het LAN dient een IP-adres in de privé-netwerkruimte toegewezen te krijgen zoals gedefinieerd in RFC 1918 en een standaard gateway van het interne IP-adres van de natd-machine hebben. Bijvoorbeeld, cliënt A en B achter het LAN hebben IP-adressen 192.168.0.2 en 192.168.0.3, terwijl de LAN-interface van de natd-machine IP-adres 192.168.0.1 heeft. De standaard gateway van cliënt A en B dient ingesteld te worden op die van de natd-machine, 192.168.0.1. Voor de externe, of Internet-interface van de natd-machine zijn geen speciale wijzigingen nodig om &man.natd.8; te laten werken. Poorten omleiden Het nadeel van &man.natd.8; is dat de LAN-cliënten niet vanaf het Internet toegankelijk zijn. Cliënten op het LAN kunnen uitgaande verbinden naar de wereld maken maar kunnen geen inkomende verbindingen ontvangen. Dit vormt een probleem wanneer geprobeerd wordt om Internetdiensten op een van de LAN-cliëntmachines te draaien. Een eenvoudige om dit te omzeilen is om bepaalde Internetpoorten op de natd-machine om te leiden naar een LAN-cliënt. Bijvoorbeeld, er draait een IRC-server op cliënt A, en er draait een webserver op cliënt B. Om dit goed te laten werken, dienen verbindingen die worden ontvangen op poorten 6667 (IRC) en 80 (web) te worden omgeleid naar de respectievelijke machines. De optie dient aan &man.natd.8; met de juiste opties te worden doorgegeven. De syntaxis is als volgt: -redirect_port proto doelIP:doelPOORT[-doelPOORT] [aliasIP:]aliasPOORT[-aliasPOORT] [verIP[:verrePOORT[-verrePOORT]]] In het bovenstaand voorbeeld dienen de argumenten te zijn: -redirect_port tcp 192.168.0.2:6667 6667 -redirectport tcp 192.168.0.3:80 80 Dit zal de juiste tcp-poorten naar de LAN-cliënt-machines omleiden. Het argument kan worden gebruikt om poortbereiken over individuele poorten aan te geven. Bijvoorbeeld, tcp 192.168.0.2:2000-3000 2000-3000 zal alle verbindingen die op poorten 2000 tot 3000 worden ontvangen omleiden naar poorten 2000 tot 3000 op cliënt A. Deze opties kunnen worden gebruikt wanneer &man.natd.8; direct wordt gedraaid, wanneer ze zijn geplaatst in de optie natd_flags="" van /etc/rc.conf, of wanneer ze via een instellingenbestand worden doorgegeven. Raadpleeg voor meer instelopties &man.natd.8;. Adressen omleiden adressen omleiden Adressen omleiden is handig wanneer er verschillende IP-adressen beschikbaar zijn, maar ze op één machine moeten zitten. Hiermee kan &man.natd.8; aan elke LAN-cliënt een eigen extern IP-adres toewijzen. Vervolgens overschrijft &man.natd.8; de uitgaande pakketten van de LAN-cliënten met het juiste IP-adres en leidt het al het binnenkomende verkeer op dat ene IP-adres terug naar de specifieke LAN-cliënt. Dit staat ook bekend als statisch NAT. Bijvoorbeeld, de IP-adressen 128.1.1.1, 128.1.1.2, en 1281.2..3 behoren toe aan de natd gateway-machine. 128.1.1.1 kan gebruikt worden als het externe IP-adres van de natd gateway-machine, terwijl 128.1.1.2 en 128.1.1.3 terug worden gestuurd naar de LAN-cliënten A en B. De syntaxis van is als volgt: -redirect_address lokaalIP publiekIP lokaalIP Het interne IP-adres van de LAN-cliënt. publiekIP Het externe IP-adres overeenkomend met de LAN-cliënt. In het voorbeeld zou dit argument zijn: -redirect_address 192.168.0.2 128.1.1.2 -redirect_address 192.168.0.3 128.1.1.3 Net zoals worden ook deze argumenten geplaatst in de optie natd_flags="" van /etc/rc.conf, of doorgegeven via een instellingenbestand. Met adresomleiding is het omleiden van poorten niet nodig aangezien alle gegevens die op een bepaald IP-adres worden ontvangen worden omgeleidt. Het externe IP-adres op de natd machine dient actief en naar een externe interface gealiased te zijn. In &man.rc.conf.5; staat hoe dit te doen. Parallel Line IP (PLIP) PLIP Parallel Line IP PLIP PLIP maakt het mogelijk om TCP/IP tussen parallelle poorten te draaien. Het is nuttig op machines zonder netwerkkaarten, of om op laptops te installeren. In deze sectie wordt besproken: Het maken van een parallelle (laplink) kabel. Twee computers met PLIP verbinden. Een parallelle kabel maken Een parallelle is te koop in de meeste computerwinkels. Wanneer dit niet mogelijk is, of indien de het gewenst is om te weten hoe ze worden gemaakt, laat de volgende tabel zien hoe ze met een gewone parallelle printerkabel gemaakt kunnen worden. Een parallelle kabel voor netwerken bedraden A-naam A-einde B-einde Beschrijving Post/Bit DATA0 -ERROR 2 15 15 2 Gegevens 0/0x01 1/0x08 DATA1 +SLCT 3 13 13 3 Gegevens 0/0x02 1/0x10 DATA2 +PE 4 12 12 4 Gegevens 0/0x04 1/0x20 DATA3 -ACK 5 10 10 5 Strobe 0/0x08 1/0x40 DATA4 BUSY 6 11 11 6 Gegevens 0/0x10 1/0x80 GND 18-25 18-25 GND -
PLIP opzetten Als eerste dient er een laplink-kabel aanwezig te zijn. Controleer vervolgens dat beide computers een kernel hebben met ondersteuning voor het stuurprogramma &man.lpt.4;: &prompt.root; grep lp /var/run/dmesg.boot lpt0: <Printer> on ppbus0 lpt0: Interrupt-driven port De parallelle poort dient een interrupt-gestuurde poort te zijn, regels zoals de volgende dienen in het bestand /boot/device.hints aanwezig te zijn: hint.ppc0.at="isa" hint.ppc0.irq="7" Controleer vervolgens dat het kernelinstellingenbestand een regel device plip bevat of dat de kernelmodule plip.ko is geladen. In beide gevallen dienen de parallelle netwerkinterfaces te verschijnen wanneer het commando &man.ifconfig.8; gebruikt wordt om het weer te geven: &prompt.root; ifconfig plip0 plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500 Steek de laplink-kabel in de parallelle interface op beide computers. Stel als root op beide sites de parameters voor de netwerkinterface in. Bijvoorbeeld, indien het gewenst is om host host1 met een andere machine host2 te verbinden: host1 <-----> host2 IP Address 10.0.0.1 10.0.0.2 Stel de interface op host1 in met: &prompt.root; ifconfig plip0 10.0.0.1 10.0.0.2 Stel de interface op host2 in met: &prompt.root; ifconfig plip0 10.0.0.2 10.0.0.1 Er dient nu een werkende verbinding te zijn. Lees voor meer details de hulppagina's &man.lp.4; en &man.lpt.4;. Ook dienen beide hosts aan /etc/hosts toegevoegd te worden: 127.0.0.1 localhost.mijn.domein localhost 10.0.0.1 host1.mijn.domein host1 10.0.0.2 host2.mijn.domein host2 Ga naar elke host en ping de andere om te bevestigen dat de verbinding werkt. Bijvoorbeeld, op host1: &prompt.root; ifconfig plip0 plip0: 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 plip0 &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 Origineel geschreven door Tom Rhodes Geherstructureerd en toegevoegd door Brad Davis Uitgebreid door IPv6 IPv6 (ook bekend als IPng IP next generation) is de nieuwe versie van het welbekende IP-protocol (ook bekend als IPv4). Net zoals de andere huidige *BSD-systemen, bevat &os; de referentie-implementatie van KAME IPv6. Het &os;-systeem wordt dus geleverd met alles wat nodig is om met IPv6 te experimenteren. Deze sectie richt zich op het ingesteld en draaiend krijgen van IPv6. In de vroege jaren 1990 werden mensen zich bewust van de snel krimpende adresruimte van IPv4. De uitbreidingssnelheid van het Internet baarde twee grote zorgen: Geen adresruimte meer. Tegenwoordig is dit niet zo'n probleem meer aangezien RFC1918 voor privé-adresruimte (10.0.0.0/8, 172.16.0.0/12, en 192.168.0.0/16) en Network Address Translation (NAT) worden gebruikt. De regels in de routeertabellen werden te groot. Dit is tegenwoordig nog steeds een probleem. IPv6 behandelt deze en vele andere zaken: 128-bits adresruimte. Met andere woorden, er zijn theoretisch 340.282.366.920.938.463.463.374.607.431.768.211.456 adressen beschikbaar. Dit betekent dat er ongeveer 6,67 * 10^27 IPv6-adressen per vierkante meter op onze planeet beschikbaar zijn. Routers zullen alleen netwerkaggregatie-adressen in hun routeertabellen opslaan en dus de gemiddelde ruimte van een routeertabel verkleinen tot 8192 regels. IPv6 heeft ook vele andere nuttige eigenschappen zoals: Automatische adresconfiguratie (RFC2462) Anycast-adressen (ééen-van-velen) Verplichte multicast-adressen IPsec (IP security) Versimpelde structuur van de headers Mobiele IP Overgangsmechanismen voor IPv6 naar IPv4 Bekijk voor meer informatie: IPv6-overzicht op playground.sun.com KAME.net Achtergrond over IPv6 adressen Er zijn verschillende soorten IPv6-adressen: unicast, anycast, en multicast. Unicast-adressen zijn de bekende adressen. Een pakket dat naar een unicast-adres wordt verzonden arriveert precies op de interface dat bij dat adres hoort. Anycast-adressen zijn syntactisch niet van unicast-adressen te onderscheiden maar ze adresseren een groep interfaces. Een pakket dat bestemd is voor een anycast-adres zal bij de dichtstbijzijnde interface arriveren (in router-metrieken). Anycast-adressen mogen alleen door routers worden gebruikt. Multicast-adressen identificeren een groep interfaces. Een pakket dat bestemd is voor en multicast-adres zal bij alle interfaces die bij de multicast-groep horen arriveren. Het broadcast-adres van IPv4 (gewoonlijk xxx.xxx.xxx.255) wordt in IPv6 met multicast-adressen uitgedrukt. Gereserveerde IPv6-adressen IPv6-adres Prefixlengte (bits) Beschrijving Opmerkingen :: 128 bits niet gespecificeerd cf. 0.0.0.0 in IPv4 ::1 128 bits teruglusadres cf. 127.0.0.1 in IPv4 ::00:xx:xx:xx:xx 96 bits ingebouwd IPv4 De laagste 32 bits zijn het IPv4-adres. Ook IPv4 compatibel IPv6-adres genoemd. ::ff:xx:xx:xx:xx 96 bits IPv4-afgebeeld IPv6-adres De laagste 32 bits zijn het IPv4-adres. Voor hosts die geen IPv6 ondersteunen. fe80:: - feb:: 10 bits link-lokaal cf. teruglusadres in IPv4 fec0:: - fef:: 10 bits site-lokaal   ff:: 8 bits multicast   001 (base 2) 3 bits globale unicast Alle globale unicast-adressen worden vanuit deze pool toegewezen. De eerste 3 bits zijn 001.
IPv6-adressen lezen De canonieke vorm wordt weergegeven als: x:x:x:x:x:x:x:x, waarbij elke x een 16-bits hexadecimale waarde is. Bijvoorbeeld FEBC:A574:382B:23C1:AA49:4592:4EFE:9982 Vaak bevat een adres lange deelstrings van allen nullen, daarom kan per adres één zo'n deelstring worden afgekort als ::. Ook kunnen maximaal drie voorlopende 0's per hexadecimaal viertal worden weggelaten. Bijvoorbeeld, fe80::1 komt overeen met de canonieke vorm fe80:0000:0000:0000:0000:0000:0000:0001. Een derde vorm is het schrijven van de laatste 32 bits in de bekende (decimale) IPv4-stijl met punten . als scheidingstekens. Bijvoorbeeld, 2002::10.0.0.1 komt overeen met de (hexadecimale) canonieke representatie 2002:0000:0000:0000:0000:0000:0a00:0001 wat weer hetzelfde is als 2002::a00:1. Op dit punt dient de lezer het volgende te begrijpen: &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 is een automatisch ingesteld link-lokaal adres. Het is als deel van de automatische instelling vanuit het MAC-adres aangemaakt. Kijk voor verdere informatie over de structuur van IPv6-adressen op RFC3513. Verbinding krijgen Er zijn momenteel vier manieren om met andere IPv6-hosts en -netwerken te verbinden: Neem contact op met de Internetprovider om te zien of ze al IPv6 aanbieden. SixXS biedt wereldwijd tunnels met eindpunten aan. Tunnelen via 6-naar-4 (RFC3068) Gebruik de poort net/freenet6 indien er een inbelverbinding wordt gebruikt. DNS in de IPv6-wereld Er waren twee soorten DNS-records voor IPv6. De IETF heeft A6-records overbodig verklaard. AAAA-records zijn nu de standaard. AAAA-records gebruiken gaat rechttoe-rechtaan. Wijs de hostnaam toe aan het nieuwe IPv6-adres dat net ontvangen is door het volgende aan de DNS-bestand voor primaire zones toe te voegen: MIJNHOSTNAAM AAAA MIJNIPv6ADRES Vraag het aan de DNS-provider indien de DNS-zones niet zelf worden geserveerd. De huidige versies van bind (versie 8.3 en 9) en dns/djbdns (met de IPv6-patch) ondersteunen AAAA-records. De benodigde wijzigingen doorvoeren in <filename>/etc/rc.conf</filename> IPv6-cliëntinstellingen Deze instellingen helpen bij het configureren van een machine in het LAN die als cliënt in plaats van router dienst zal doen. Om &man.rtsol.8; automatisch de interface tijdens het opstarten te laten configureren op &os; 9.X en nieuwer dient het volgende aan rc.conf toegevoegd te worden: ipv6_prefer="YES" Voeg voor &os; 8.X en ouder het volgende toe: ipv6_enable="YES" Voeg het volgende toe om statisch een IP-adres zoals 2001:471:1f11:251:290:27ff:fee0:2093 aan de interface fxp0 toe te voegen voor &os; 9.X: ifconfig_fxp0_ipv6="2001:471:1f11:251:290:27ff:fee0:2093 prefixlen 64" Zorg ervoor dat prefixlen 64 wordt vervangen door de juiste waarde voor het subnet van de computer. Voeg voor &os; 8.X het volgende toe: ipv6_ifconfig_fxp0="2001:471:1f11:251:290:27ff:fee0:2093" Voeg het volgende aan /etc/rc.conf toe om een standaardrouter 2001:471:1f11:251::1 toe te wijzen: ipv6_defaultrouter="2001:471:1f11:251::1" IPv6 router/gateway instellingen Deze paragraaf helpt bij het opvolgen van de aanwijzingen die de tunnelprovider heeft gegeven en ze om te zetten in instellingen die blijven na een herstart. Om de tunnel tijdens het opstarten te herstellen kan het volgende in /etc/rc.conf gebruikt worden: Noem de generieke tunnelinterfaces die zullen worden ingesteld, bijvoorbeeld gif0: gif_interfaces="gif0" Om de interface met een lokaal eindpunt MIJN_IPv4_ADRES in te stellen naar een ver eindpunt VER_IPv4_ADRES: gifconfig_gif0="MIJN_IPv4_ADRES VER_IPv4_ADRES" Voeg het volgende toe om het IPv6-adres dat is toegewezen als het eindpunt van de IPv6-tunnel te gebruiken voor &os; 9.X en nieuwer: ifconfig_gif0_ipv6="inet6 MIJN_TOEGEWEZEN_IPv6_TUNNEL_EINDPUNT_ADRES" Voeg voor &os; 8.X en eerder het volgende toe: ipv6_ifconfig_gif0="MIJN_TOEGEWEZEN_IPv6_TUNNEL_EINDPUNT_ADRES" Nu hoeft alleen de standaardroute voor IPv6 ingesteld te worden. Dit is de andere kant van de IPv6-tunnel: ipv6_defaultrouter="MIJN_IPv6_VER_TUNNEL_EINDPUNT_ADRES" IPv6-tunnelinstellingen Indien de server gebruikt wordt om IPv6 tussen de rest van het netwerk en de wereld te routen, is ook de volgende instelling in /etc/rc.conf nodig: ipv6_gateway_enable="YES" Routeradvertentie en automatische hostconfiguratie Deze sectie helpt bij het instellen van &man.rtadvd.8; om de standaard IPv6-route te adverteren. Het volgende is nodig in /etc/rc.conf om &man.rtadvd.8; aan te zetten: rtadvd_enable="YES" Het is belangrijk om de interface te specificeren waarop het IPv6-routerverzoek plaatsvindt. Om bijvoorbeeld &man.rtadvd.8; te vertellen om fxp0 te gebruiken: rtadvd_interfaces="fxp0" Nu dient het instellingenbestand /etc/rtadvd.conf aangemaakt te worden. Hier is een voorbeeld: fxp0:\ :addrs#1:addr="2001:471:1f11:246::":prefixlen#64:tc=ether: Vervang fxp0 door de interface die gebruikt gaat worden. Vervang vervolgens 2001:471:1f11:246:: met de prefix van uw toewijzing. Indien een /64 subnet is toegewezen, hoeft er verder niets veranderd te worden. In andere gevallen dient de juiste waarde voor prefixlen# gebruikt te worden.
Harti Brandt Bijgedragen door Asynchronous Transfer Mode (ATM) Klassiek IP configureren over ATM (PVCs) Klassiek IP over ATM (CLIP) is de eenvoudigste methode om Asynchronous Transfer Mode (ATM) met IP te gebruiken. Het kan met geswitchte verbindingen (SVCs) en met permanente verbindingen (PVCs) gebruikt worden. Deze sectie beschrijft hoe een netwerk gebaseerd op PVCs op te zetten. Volledig geschakelde configuraties De eerste methode om een CLIP met PVCs op te zetten is om elke machine met elke andere machine in het netwerk te verbinden via een toegewijde PVC. Hoewel dit eenvoudig te configureren is, wordt het onpraktisch voor een groter aantal machines. Dit netwerk gaat ervan uit dat er vier machines in het netwerk zijn, allen verbonden met het ATM netwerk met een ATM adapterkaart. De eerste stap is het plannen van de IP-adressen en de ATM verbindingen tussen de machines. Het volgende wordt gebruikt: Host IP-adres hostA 192.168.173.1 hostB 192.168.173.2 hostC 192.168.173.3 hostD 192.168.173.4 Om een volledig geschakeld net te bouwen is er een ATM-verbinding nodig tussen elk paar machines: Machines VPI.VCI koppel hostA - hostB 0.100 hostA - hostC 0.101 hostA - hostD 0.102 hostB - hostC 0.103 hostB - hostD 0.104 hostC - hostD 0.105 De VPI- en VCI-waarde kunnen aan beide kanten van de verbinding verschillen, maar voor de eenvoud wordt aangenomen dat ze hetzelfde zijn. Vervolgens dienen de ATM-interfaces op elke host geconfigureerd te worden: hostA&prompt.root; ifconfig hatm0 192.168.173.1 up hostB&prompt.root; ifconfig hatm0 192.168.173.2 up hostC&prompt.root; ifconfig hatm0 192.168.173.3 up hostD&prompt.root; ifconfig hatm0 192.168.173.4 up aannemende dat de ATM-interface op alle hosts hatm0 is. Nu dienen de PVCs op hostA geconfigureerd te worden (er wordt aangenomen dat ze reeds op de ATM-switches zijn geconfigureerd, raadpleeg de handleiding van de switch hoe dit te doen). hostA&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 100 llc/snap ubr hostA&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 101 llc/snap ubr hostA&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 102 llc/snap ubr hostB&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 100 llc/snap ubr hostB&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 103 llc/snap ubr hostB&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 104 llc/snap ubr hostC&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 101 llc/snap ubr hostC&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 103 llc/snap ubr hostC&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 105 llc/snap ubr hostD&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 102 llc/snap ubr hostD&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 104 llc/snap ubr hostD&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 105 llc/snap ubr Uiteraard kunnen ook andere verkeerscontracten dan UBR worden gebruikt indien de ATM-adapter die ondersteunt. In dit geval wordt de naam van het verkeerscontract gevolgd door de parameters van het verkeer. Hulp voor het gereedschap &man.atmconfig.8; kan verkregen worden met: &prompt.root; atmconfig help natm add of in de hulppagina &man.atmconfig.8;. Dezelfde configuratie kan ook bereikt worden via /etc/rc.conf. Voor hostA wordt dit: network_interfaces="lo0 hatm0" ifconfig_hatm0="inet 192.168.173.1 up" natm_static_routes="hostB hostC hostD" route_hostB="192.168.173.2 hatm0 0 100 llc/snap ubr" route_hostC="192.168.173.3 hatm0 0 101 llc/snap ubr" route_hostD="192.168.173.4 hatm0 0 102 llc/snap ubr" De huidige toestand van alle CLIP routes kan worden verkregen met: hostA&prompt.root; atmconfig natm show Tom Rhodes Bijgedragen door Common Address Redundancy Protocol (CARP) CARP Common Address Redundancy Protocol Het Common Address Redundancy Protocol, of CARP, staat toe dat meerdere hosts hetzelfde IP-adres gebruiken. In sommige opstellingen wordt dit gebruikt voor beschikbaarheid of loadbalancing. Hosts kunnen ook gescheiden IP-adressen gebruiken, zoals in het voorbeeld dat hier is gegeven. Om ondersteuning voor CARP aan te zetten, dient de &os;-kernel herbouwd zoals beschreven in met de volgende optie: device carp Als alternatief kan de if_carp.ko module geladen worden tijdens het opstarten. Voeg de volgende regel toe aan /boot/loader.conf: if_carp_load="YES" De functionaliteit van CARP zou nu beschikbaar moeten zijn en kan met verschillende sysctl-OIDs worden bijgesteld: OID Beschrijving net.inet.carp.allow Accepteer inkomende CARP pakketten. Staat standaard aan. net.inet.carp.preempt Deze optie zet alle CARP interfaces down op de host wanneer er een down gaat. Staat standaard uit. net.inet.carp.log De waarde 0 zet alle logging uit. De waarde 1 zet het loggen van slechte CARP-pakketten aan. Waardes hoger dan 1 zet het loggen van toestandsveranderingen van de CARP interfaces aan. De standaardwaarde is 1. net.inet.carp.arpbalance Balanceer lokaal netwerkverkeer met ARP. Staat standaard uit. net.inet.carp.suppress_preempt Een alleen-lezen OID die de toestand van preëmptie-onderdrukking weergeeft. Preëmptie kan worden onderdrukt wanneer de verbinding op een interface afwezig is. De waarde 0 betekent dat preëmptie niet onderdrukt is. Elk probleem verhoogt deze OID. De CARP-apparaten zelf kunnen met het commando ifconfig worden aangemaakt: &prompt.root; ifconfig carp0 create In een echte omgeving hebben deze interfaces unieke identificatienummers, bekend als een VHID, nodig. Dit VHID of Virtual Host Identification zal worden gebruikt om de hosts op het netwerk te onderscheiden. CARP gebruiken voor serverbeschikbaarheid Eén gebruik van CARP, zoals boven aangegeven, is serverbeschikbaarheid. Dit voorbeeld geeft failover-ondersteuning voor drie hosts, met allemaal een uniek IP-adres en dezelfde webinhoud. Deze machines zullen samen met een Round Robin DNS configuratie dienst doen. De failover-machine zal twee aanvullende CARP-interfaces hebben, één voor elk van de IP's van de contentservers. Wanneer er een storing optreedt, zou de failover-server het IP-adres van de falende machine moeten oppikken. Dit betekent dat de storing geheel onmerkbaar zou moeten zijn voor de gebruiker. De failover-server heeft dezelfde inhoud en diensten nodig als de andere contentservers waarvoor het moet invallen. De twee machines dienen identiek geconfigureerd te worden op de gegeven hostnamen en VHIDs na. Dit voorbeeld noemt deze machines respectievelijk hosta.example.org en hostb.example.org. Ten eerste dienen de benodigde regels voor een CARP-configuratie aan rc.conf te worden toegevoegd. Voor hosta.example.org dient het bestand rc.conf de volgende regels te bevatten: hostname="hosta.example.org" ifconfig_fxp0="inet 192.168.1.3 netmask 255.255.255.0" cloned_interfaces="carp0" ifconfig_carp0="vhid 1 pass testpass 192.168.1.50/24" Op hostb.example.org dienen de volgende regels in rc.conf te staan: hostname="hostb.example.org" ifconfig_fxp0="inet 192.168.1.4 netmask 255.255.255.0" cloned_interfaces="carp0" ifconfig_carp0="vhid 2 pass testpass 192.168.1.51/24" Het is erg belangrijk dat de wachtwoorden die met de optie aan ifconfig gegeven zijn, identiek zijn. De carp apparaten zullen alleen luisteren naar en advertenties accepteren van machines met het juiste wachtwoord. Het VHID dient ook verschillend te zijn voor elke machine. De derde machine, provider.example.org, dient voorbereidt te worden op het afhandelen van failover van beide hosts. Deze machine heeft twee carp apparaten nodig, één om elke host af te handelen. De juiste instelregels voor rc.conf zullen ongeveer gelijk zijn aan de volgende: hostname="provider.example.org" ifconfig_fxp0="inet 192.168.1.5 netmask 255.255.255.0" cloned_interfaces="carp0 carp1" ifconfig_carp0="vhid 1 advskew 100 pass testpass 192.168.1.50/24" ifconfig_carp1="vhid 2 advskew 100 pass testpass 192.168.1.51/24" Met twee carp apparaten is provider.example.org in staat om het IP-adres van de andere machine op te pikken wanneer de ene niet meer antwoordt. De standaard &os;-kernel kan preëmptie geactiveerd hebben. In dat geval hoeft provider.example.org het IP-adres niet terug te geven aan de originele contentserver. In dit geval kan het nodig zijn dat een beheerder handmatig het IP terug aan de meester moet geven. Het volgende commando dient op provider.example.org gegeven te worden: &prompt.root; ifconfig carp0 down && ifconfig carp0 up Dit dient gedaan te worden op de carp interface die met de juiste host overeenkomt. Op dit moment dient CARP volledig actief en beschikbaar voor testen te zijn. Voor het testen dienen òfwel het netwerken herstart te worden, òf de machines dienen opnieuw opgestart te worden. Meer informatie is altijd beschikbaar in de hulppagina &man.carp.4;
Index: translations/nl_NL.ISO8859-1/books/handbook/basics/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/basics/chapter.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/basics/chapter.xml (revision 40367) @@ -1,3016 +1,3007 @@ Chris Shumway Herschreven door Remko Lodder Vertaald door &unix; beginselen Overzicht Het volgende hoofdstuk behandelt de basiscommando's en functionaliteit van het &os; besturingssysteem. Veel van dit materiaal is relevant voor elk &unix; achtig besturingssysteem. Als de lezer reeds bekend is met het materiaal, hoeft dit hoofdstuk niet gelezen te worden. Lezer die nog niet eerder met &os; te maken hebben gehad wordt aangeraden door te lezen. Na het lezen van dit hoofdstuk weet de lezer: Hoe virtuele consoles in &os; gebruikt kunnen worden; Hoe &unix; bestandspermissies werken en hoe bestandsvlaggen in &os; werken; Hoe het standaard &os; bestandssysteem eruit ziet; Hoe een &os; harde schijf is ingedeeld; Hoe bestandssystemen gekoppeld en ontkoppeld worden; Wat processen, daemons en signalen zijn; Wat een shell is en hoe de standaard omgevingsvariabelen veranderd kunnen worden; Hoe elementaire tekstverwerkers te gebruiken; Wat apparaten en apparaatkoppelpunten zijn; Welk binair formaat &os; gebruikt; Hoe handleidingen te gebruiken meer informatie. Virtuele consoles en terminals Virtuele consoles terminals &os; kan op diverse manieren gebruikt worden. Één van deze manieren is het typen van commando's in een tekstterminal. Veel van de flexibiliteit en kracht van een &unix; besturingssysteem is gemakkelijk beschikbaar als je &os; op deze manier gebruikt. Dit onderdeel beschrijft wat terminals en consoles zijn en hoe je deze kan gebruiken in &os;. De console console Als &os; niet is ingesteld om automatisch een grafische omgeving te starten tijdens het opstarten, geeft het systeem een login prompt als het gestart is. Dit gebeurt direct nadat de startscripts klaar zijn. Er wordt iets als het volgende getoond: Additional ABI support:. Local package initialization:. Additional TCP options:. Fri Sep 20 13:01:06 EEST 2002 &os;/i386 (pc3.example.org) (ttyv0) login: De meldingen op het scherm kunnen wellicht iets anders zijn op een systeem, maar het zal iets soortgelijks zijn. De laatste twee regels zijn de regels waar het nu over gaat. De voorlaatste regel toont: &os;/i386 (pc3.example.org) (ttyv0) Deze regel bevat enkele informatie over het systeem dat net gestart is: dit is een &os; console, draaiend op een Intel of soortgelijke processor op de x86 architectuur. Dit betekent i386. Let op: ook al draait &os; niet op een Intel 386 processor, toch is dit een i386. Het is niet het type processor, maar de processor architectuur. De naam van de machine (elke &unix; machine heeft een naam) is pc3.example.org en dit is de console van het systeem, de ttyv0 terminal. De laatste regel is altijd: login: Dit is het deel waar een gebruikersnaam ingevuld moet worden om aan te melden op &os;. Het volgende deel beschrijft hoe dat werkt. Aanmelden op &os; &os; is een multi-user en multi-processing systeem. Dit is de formele beschrijving die meestal gegeven wordt aan een systeem dat gebruikt wordt door meerdere personen die gelijktijdig verschillende programma's draaien op één enkele machine. Elk multi-user systeem heeft een manier nodig om een gebruiker van alle andere gebruikers te kunnen onderscheiden. In &os; (en alle andere &unix; achtige besturingssystemen), wordt dit bereikt door te eisen dat elke gebruiker moet aanmelden op het systeem voordat hij/zij programma's kan draaien. Elke gebruiker heeft een unieke naam (de gebruikersnaam) en een persoonlijke, geheime sleutel (het wachtwoord). &os; vraagt om deze twee gegevens voordat het een gebruiker toegestaat om programma's te draaien. startup scripts Direct nadat &os; is opgestart en de opstartscripts Opstart scripts zijn programma's die automatisch gestart worden tijdens het opstarten. Het hoofddoel van deze programma's is om dingen goed te zetten zodat alle andere programma's ook kunnen draaien, en om services te starten die je geconfigureerd hebt om bruikbare zaken in de achtergrond te doen. afgerond zijn, wordt een prompt getoond dat vraagt om een geldige aanmeldnaam op te geven. login: In dit voorbeeld wordt aangenomen de gebruikersnaam john is. Als na deze prompt john wordt getype en op Enter wordt gedrukt, verschijnt hierna een prompt om het wachtwoord in te voeren: login: john Password: Nu kan john's wachtwoord ingevoerd worden en op Enter gedrukt worden. Het wachtwoord wordt niet getoond! Daarover hoeft geen zorg te bestaan. Het is voldoende om te zeggen dat dit om veiligheidsredenen gedaan wordt. Als het juiste wachtwoord is ingegeven, is er aangemeld bij op &os; en in het systeem klaar om alle beschikbare commando's uit te voeren. Na het aanmelden is de MOTD of het bericht van de dag zichtbaar, gevolgd door een commandoprompt (een #, $ of een % karakter). Dit geeft aan dat er succesvol is aangemeld op &os;. Meerdere consoles &unix; programma's draaien in één console is prima, maar &os; kan veel programma's tegelijk draaien. Om maar één console te hebben waar commando's ingetypt kunnen worden zou zonde zijn van een besturingssysteem als &os; waar meerdere programma's tegelijkertijd op kunnen draaien. Hier kunnen virtuele consoles van pas komen. &os; kan ingesteld worden om verschillende virtuele consoles te tonen. Met toetscombinaties kan van de ene console naar de gewisseld worden. Elke console heeft zijn eigen uitvoerkanaal, en &os; zorgt ervoor dat alle toetsenbordinvoer en monitoruitvoer goed wordt gezet als er van de ene console naar de volgende wordt gewisseld. In &os; kunnen speciale toetscombinaties gebruikt worden om te wisselen naar een ander virtueel console. Een redelijk technische en accurate beschrijving van alle details over de &os; console en toetsenborddrivers staan in de hulppagina's van &man.syscons.4;, &man.atkbd.4;, &man.vidcontrol.1; en &man.kbdcontrol.1;. Hier wordt niet verder op ingegaan, maar de geïnteresseerde lezer kan altijd de hulppagina's raadplegen voor meer details en een grondige uitleg over hoe alles werkt. In &os; kan AltF1, AltF2 tot en met AltF8 gebruikt worden om te wisselen naar een ander virtueel console. Als wordt gewisseld van de ene naar de andere console zorgt &os; dat de uitvoer bewaard blijft. Het resultaat is een illusie van het hebben van meerdere schermen en toetsenborden die gebruikt kunnen worden om commando's in te voeren om &os; te laten draaien. De programma's die in de ene virtuele console draaien, stoppen niet als de console niet zichtbaar is. Ze blijven doordraaien als naar een andere virtuele console wordt gewisseld. Het bestand <filename>/etc/ttys</filename> De standaardinstelling van &os; start op met acht virtuele consoles. Dit is echter geen vaste waarde en een installatie kan eenvoudig aangepast worden, zodat het systeem gestart wordt met meer of minder virtuele consoles. De hoeveelheid en instellingen van de virtuele consoles worden ingesteld in /etc/ttys. /etc/ttys kan gebruikt worden om virtuele consoles in te stellen. Elke niet-commentaar regel in dit bestand (regels die niet beginnen met een # karakter) bevat instellingen voor een terminal of virtuele console. De standaardversie van dit bestand die meegeleverd wordt met &os; stelt negen virtuele consoles in en activeert er acht. Dit zijn de regels die beginnen met ttyv: # naam getty type status commentaar # ttyv0 "/usr/libexec/getty Pc" cons25 on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" cons25 on secure ttyv2 "/usr/libexec/getty Pc" cons25 on secure ttyv3 "/usr/libexec/getty Pc" cons25 on secure ttyv4 "/usr/libexec/getty Pc" cons25 on secure ttyv5 "/usr/libexec/getty Pc" cons25 on secure ttyv6 "/usr/libexec/getty Pc" cons25 on secure ttyv7 "/usr/libexec/getty Pc" cons25 on secure ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure Een uitgebreide beschrijving van elke kolom in dit bestand en alle mogelijke opties voor virtuele consoles staan in de &man.ttys.5; hulppagina gebruiken. Single-user console In staat een gedetailleerde beschrijving van de single-user modus. Het is belanrijk te melden dat er in single-user modus maar één console is. Er zijn geen virtuele consoles beschikbaar. De instellingen van de single-user modus console staan ook in /etc/ttys . De regel begint met console: # name getty type status commentaar # # Als een console gemarkeerd is als "insecure", zal het init script om het root-wachtwoord # vragen wanneer het in single-user mode komt. console none unknown off secure Zoals het commentaar boven de console regel aangeeft, kan in deze regel het woord secure gewijzigd worden in insecure. In dat geval vraagt &os; bij het opstarten in single-user modus nog steeds om een root-wachtwoord. Pas op als dit wordt veranderd in insecure. Als het wachtwoord van de gebruiker root zoek is, wordt het opstarten in single-user modus lastig. Het is nog steeds mogelijk, maar het kan vrij moeilijk zijn voor iemand die &os; niet zo goed kent met betrekking tot het opstarten en de programma's die daarbij gebruikt worden. Het wijzigen van de console video mode De &os; standaard video mode kan worden gewijzigd in 1024x768, 1280x1024, of een van de vele andere formaten die ondersteund worden door de grafische kaart en monitor. Om gebruik te maken van de verschillende video modes, moet eerst de kernel opnieuw gecompileerd worden met twee extra opties: options VESA options SC_PIXEL_MODE Zodra de kernel opnieuw gecompileerd is met deze twee opties kan gekeken worden welke video modes er ondersteund worden door de hardware door gebruik te maken van de &man.vidcontrol.1; applicatie. Om een overzicht te krijgen van de ondersteunde video modes moet het volgende ingevoerd worden: &prompt.root; vidcontrol -i mode Het resultaat van dit commando is een lijst van video modes welke ondersteund worden door de hardware. Hierna kan de nieuwe video mode gekozen worden door dit aan te geven aan &man.vidcontrol.1;: &prompt.root; vidcontrol MODE_279 Als de nieuwe video mode acceptabel is, kan dit permanent ingesteld worden door het volgende in /etc/rc.conf te zetten: allscreens_flags="MODE_279" Rechten UNIX &os;, direct afgeleid van BSD &unix;, is gebaseerd op verschillende belangrijke &unix; concepten. Het meest bekende is dat &os; een multi-user systeem is. Het systeem kan meerdere gebruikers behandelen die tegelijkertijd totaal verschillende dingen doen. Het systeem is verantwoordelijk voor het netjes delen en beheren voor aanvragen voor hardware, randapparatuur, geheugen en cpu tijd tussen elke gebruiker. Omdat het systeem in staat is om meerdere gebruikers te ondersteunen, heeft alles wat door het systeem beheerd wordt een set van rechten die aangeeft wie mag lezen, schrijven en de bron mag uitvoeren. Deze rechten zijn opgeslagen in drie octetten, die weer in drie stukjes onderverdeeld zijn: één voor de eigenaar van het bestand, één voor de groep waar het bestand toe behoort en één voor de overigen. De numerieke weergave werkt als volgt: Rechten Bestandsrechten Waarde Recht Maprecht 0 Niet lezen, niet schrijven, niet uitvoeren --- 1 Niet lezen, niet schrijven, uitvoeren --x 2 Niet lezen, schrijven, niet uitvoeren -w- 3 Niet lezen, schrijven, uitvoeren -wx 4 Lezen, niet schrijven, niet uitvoeren r-- 5 Lezen, niet schrijven, uitvoeren r-x 6 Lezen, schrijven, niet uitvoeren rw- 7 Lezen, schrijven, uitvoeren rwx ls mappen De optie kan gebruikt worden met &man.ls.1; om een lange lijst met de inhoud van een map te zien die een kolom heeft met informatie over bestandsrechten voor de eigenaar, groep en de rest. ls -l in een willekeurige map kan het volgende laten zien: &prompt.user; ls -l total 530 -rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile -rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile -rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt ... Zo ziet de eerste kolom van ls -l eruit: -rw-r--r-- Het eerste (meest linkse) karakter geeft aan of dit een reguliere bestand is, een map, een speciaal karakter component(!), een socket of een andere pseudo-file component(!). In dit geval betekent de - dat het een regulier bestand is. De volgende drie karakters, rw- in dit voorbeeld, geven de rechten voor de eigenaar van het bestand. De drie karakters r-- erna geven de rechten van voor de groep van het bestand. De overige drie karakters r-- tonen de rechten voor alle overige gebruikers. Een streepje betekent dat de rechten uitgeschakeld zijn. In het geval van dit bestand zijn de rechten zo ingesteld dat de eigenaar kan lezen en schrijven naar het bestand, de groep het bestand kan lezen, en alle overige gebruikers kunnen ook het bestand lezen. Volgens de tabel hierboven worden de rechten 644, waar de cijfers de drie stukjes van de rechten aangeven. Dit is allemaal leuk en aardig, maar hoe controleert het systeem dan rechten voor apparaten? &os; behandelt de meeste hardware apparaten als bestanden die door programma's kunnen worden geopend en gelezen, en waar data naar toe kan worden geschreven, net zoals elk ander bestand. Deze speciale apparaat bestanden worden bewaard in de map /dev. Mappen worden ook behandeld als bestanden. Ze hebben lees, schrijf en uitvoerbare rechten. De uitvoerbare vlag voor een map heeft een klein verschil qua betekenis dan die voor gewone bestanden. Als een map als uitvoerbaar gemarkeerd is, betekent het dat erin gekeken mag worden. Het is dus mogelijk om te wisselen naar de map met cd (wissel van map). Dit betekent ook dat in de map bestanden benaderd kunnen worden waarvan de naam bekend is. Dit is natuurlijk afhankelijk van de rechten op het bestand zelf. In het bijzonder, om een lijst van de map te kunnen maken, moet een gebruiker leesrechten op de map hebben. Om een bestand te verwijderen zijn de naam van het bestand en schrijf en uitvoerrechten op de map nodig waarin het bestand zich bevindt. Er zijn meer rechtenvlaggen, maar die worden slechts gebruikt in speciale gevallen, zoals bij setuid binaries en sticky mappen. Meer informatie over bestandsrechten en hoe die aangepast kunnen worden staat in &man.chmod.1;. Tom Rhodes Bijgedragen door Symbolische rechten rechten symbolisch Symbolische rechten, soms ook wel symbolische expressies, gebruiken karakters in plaats van octale getallen om rechten aan bestanden en mappen te geven. Symbolische expressies gebruiken de volgende opbouw: (wie) (actie) (permissies), waar de volgende waardes beschikbaar zijn: Optie Letter Vertegenwoordigt (wie) u Gebruiker (wie) g Groepseigenaar (wie) o Overigen (wie) a Iedereen (wereld) (actie) + Rechten toevoegen (actie) - Rechten verwijderen (actie) = Stel deze rechten in (recht) r Lezen (recht) w Schrijven (recht) x Uitvoeren (recht) t Sticky bit (recht) s Verander UID of GID Deze waardes worden gebruikt met &man.chmod.1;, net zoals eerder, alleen nu met letters. Het volgende commando kan gebruikt worden om de overige gebruikers toegang tot BESTAND te ontzeggen: &prompt.user; chmod go= BESTAND Er kan een door komma's gescheiden lijst geleverd worden als meer dan één wijziging aan een bestand moet worden uitgevoerd. Het volgende commando past de rechten voor de groep en de wereld aan door de schrijfrechten te ontnemen om daarna iedereen uitvoerrechten te geven: &prompt.user; chmod go-w,a+x BESTAND Tom Rhodes Geschreven door &os; bestandsvlaggen Naast de bestandsrechten die hiervoor zijn besproken, biedt &os; ondersteuning voor bestandsvlaggen. Deze vlaggen bieden een aanvullend beveiligingsniveau en controle over bestanden, maar niet over mappen. Bestandsvlaggen voegen een extra niveau van controle over bestanden, waardoor verzekerd kan worden dat in sommige gevallen zelfs root een bestand niet kan verwijderen of wijzigen. Bestandsvlaggen worden gewijzigd met het hulpprogramma &man.chflags.1;, dat een eenvoudige interface heeft. Om bijvoorbeeld de systeemvlag niet verwijderdbaar in te stellen op het bestand file1: &prompt.root; chflags sunlink file1 Om de vlag niet verwijderbaar weer te verwijderen kan het voorgaande commando met no voor worden uitgevoerd: &prompt.root; chflags nosunlink file1 Om de vlaggen op een bestand te bekijken, kan het &man.ls.1; commando met de vlaggen gebruikt worden: &prompt.root; ls -lo file1 De uitvoer hoort er ongeveer als volgt uit te zien: -rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1 Een aantal vlaggen kan alleen ingesteld of verwijderd worden door de gebruiker root. In andere gevallen kan de eigenaar van een bestand vlaggen instellen. Meer informatie voor beheerders staat in &man.chflags.1; en &man.chflags.2;. Tom Rhodes Bijgedragen door De <literal>setuid</literal>-, <literal>setgid</literal>-, en <literal>klevende</literal> toestemmingen Buiten de toestemmingen die reeds besproken zijn, zijn er nog drie specifieke instellingen waarvan alle beheerders kennis dienen te hebben. Dit zijn de setuid-, setgid-, en sticky toestemmingen. Deze instellingen zijn belangrijk voor sommige &unix;-bewerkingen omdat ze functionaliteit bieden die normaliter niet aan normale gebruikers wordt gegeven. Om ze te begrijpen, dient ook het verschil tussen de echte gebruikers-ID en de effectieve gebruikers-ID opgemerkt te worden. De echte gebruikers-ID is de UID die het proces start of bezit. De effectieve UID is de gebruikers-ID waaronder het proces draait. Bijvoorbeeld, het gereedschap &man.passwd.1; draait met de echte gebruikers-ID van de gebruiker die het wachtwoord verandert; echter, om de database met wachtwoorden te manipuleren, draait het met de effectieve ID van de gebruiker root. Dit is wat normale gebruikers in staat stelt om hun wachtwoorden te veranderen zonder een fout Permission Denied te zien. De &man.mount.8;-optie nosuid zorgt ervoor dat deze binairen zwijgend falen. Dit houdt in dat ze niet worden uitgevoerd zonder ooit de gebruiker op de hoogte te stellen. Deze optie is ook niet geheel betrouwbaar aangezien een nosuid-wrapper dit volgens de handleidingpagina &man.mount.8; kan omzeilen. De setuid-toestemming kan aangezet worden door het cijfer vier (4) voor een toestemmingenverzameling te plaatsen zoals te zien is in het volgende voorbeeld: &prompt.root; chmod 4755 suidvoorbeeld.sh De toestemmingen op het bestand suidvoorbeeld.sh dienen er nu als volgt uit te zien: -rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidvoorbeeld.sh Het zou in dit voorbeeld te zien moeten zijn dat een s nu deel is van de toestemmingenverzameling bestemd voor de bestandseigenaar, en de uitvoerbare bit vervangt. Dit staat gereedschappen toe die verhoogde toestemmingen nodig hebben, zoals passwd. Open twee terminals om dit in real-time te zien. Start op het ene het proces passwd als een normale gebruiker. Controleer de procestabel terwijl het op een nieuw wachtwoord wacht en kijk naar de gebruikersinformatie van het commando passwd. In terminal A: Changing local password for trhodes Old Password: In terminal B: &prompt.root; ps aux | grep passwd trhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 Zoals boven vermeld, wordt passwd door een normale gebruiker gedraaid, maar gebruikt het de effectieve UID van root. De setgid-toestemming voert dezelfde functie uit als de setuid-toestemming; behalve dat het de groepsinstellingen verandert. Wanneer een applicatie of gereedschap met deze instelling wordt gedraaid, krijgt het de toestemmingen gebaseerd op de groep die het bestand bezit, niet op de gebruiker die het proces startte. Om de setgid-toestemming op een bestand aan te zetten, dient een voorlopende twee (2) aan het commando chmod gegeven te worden zoals in het volgende voorbeeld: &prompt.root; chmod 2755 sgidvoorbeeld.sh De nieuwe instelling kan zoals hierboven bekeken worden, merk op dat de s nu in het veld bestemd voor de instellingen van de groepstoestemmingen staat: -rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidvoorbeeld.sh In deze voorbeelden zal het shellscript niet met een andere EUID of effectief gebruikers-ID draaien, zelfs al is het shellscript uitvoerbaar. Dit is omdat shellscripts geen toegang hebben tot de &man.setuid.2;-systeemaanroepen. De eerste twee speciale toestemmingsbits die we besproken hebben (de toestemmingsbits setuid en setgid) kunnen de systeemveiligheid verlagen, door verhoogde toestemmingen toe te staan. Er is een derde bit voor speciale toestemmingen die de veiligheid van een systeem kan verhogen: de klevende bit. De klevende bit, wanneer deze op een map is ingesteld, staat alleen het verwijderen van bestanden toe door de eigenaar van die bestanden. Deze toestemmingenverzameling is nuttig om het verwijderen van bestanden in publieke mappen, zoals /tmp, door gebruikers die het bestand niet bezitten te voorkomen. Zet een één (1) voor de toestemming om deze toestemming te gebruiken. Bijvoorbeeld: &prompt.root; chmod 1777 /tmp Het effect kan nu met het commando ls bekeken worden: &prompt.root; ls -al / | grep tmp drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp De toestemming klevende bit is te onderscheiden met de t aan het einde van de verzameling. Mappenstructuur mappenstructuur De &os; mappenstructuur is erg belangrijk om het systeem goed te leren kennen. Het belangrijkste concept om greep op te krijgen is die van de rootmap, /. Deze map is de eerste die gekoppeld wordt tijdens het opstarten en bevat het basissysteem dat nodig is om het besturingssysteem gereed te maken voor multi-user taken. De rootmap bevat ook koppelpunten voor elk ander bestandssysteem dat misschien gekoppeld wordt. Een koppelpunt is een map waar extra bestandssystemen aan het een bestandssysteem gekoppeld kunnen worden (meestal het root bestandssysteem). Dit wordt beschreven in . Standaard koppelpunten zijn /usr, /var, /tmp, /mnt en /cdrom. Naar deze mappen wordt meestal verwezen in /etc/fstab, een tabel met bestandssystemen en koppelpunten ter referentie voor het systeem. De meeste bestandssystemen in /etc/fstab worden automatisch gekoppeld tijdens het opstarten door het script &man.rc.8;, behalve als de optie gedefinieerd is. Details staan beschreven in . Een complete beschrijving over het bestandssysteem staat in &man.hier.7;. Hier wordt volstaan met een overzicht van de voorkomende mappen. Map Omschrijving / Rootmap van het bestandssysteem. /bin/ Gebruikersapplicaties, belangrijk voor zowel single user als multi-user omgevingen. /boot/ Programma's en instellingenbestanden die gebruikt worden tijdens het opstarten van het besturingssysteem. /boot/defaults/ Bestanden met standaardinstellingen voor opstarten;, zie &man.loader.conf.5;. /dev/ Apparaatnodes;, zie &man.intro.4;. /etc/ Bestanden met systeeminstellingen en scripts. /etc/defaults/ Bestanden met standaard systeeminstellingen;, zie &man.rc.8;. /etc/mail/ Instellingenbestanden voor mail transport programma's zoals &man.sendmail.8;. /etc/namedb/ Instellingenbestanden voor named, zie &man.named.8;. /etc/periodic/ Scripts die dagelijks, wekelijks en maandelijks via &man.cron.8; worden uitgevoerd, zie &man.periodic.8;. /etc/ppp/ Instellingenbestanden voor ppp, zie &man.ppp.8;. /mnt/ Lege map, veel gebruikt door systeembeheerders als tijdelijk koppelpunt voor opslagruimtes. /proc/ Process bestandssysteem;, zie &man.procfs.5; en &man.mount.procfs.8;. /rescue/ Statisch gelinkte programma's voor noodherstel, zie &man.rescue.8;. /root/ Thuismap van de gebruiker root. /sbin/ Systeemprogramma's en administratieprogramma's belangrijk voor zowel single-user en multi-user omgevingen. /tmp/ Tijdelijke bestanden. De inhoud van /tmp blijft meestal NIET bewaard na een herstart. Er wordt vaak een geheugengebaseerd bestandssysteem gekoppeld op /tmp. Dit kan geautomatiseerd worden met de tmpmfs-gerelateerde variabelen van &man.rc.conf.5; (of met een regel in /etc/fstab). Zie &man.mdmfs.8;. /usr/ Hier bevindt zich het leeuwendeel van alle hulpprogramma's en gewone programma's. /usr/bin/ Standaard programma's, programmeertools. /usr/include/ Standaard C invoegbestanden. /usr/lib/ Functiebibliotheken. /usr/libdata/ Diverse databestanden voor hulpprogramma's. /usr/libexec/ Systeemdaemons en systeemhulpprogramma's (uitgevoerd door andere programma's). /usr/local/ Lokale programma's, bibliotheken, etc. Wordt ook gebruikt als standaard locatie voor de &os; ports. Binnen /usr/local, wordt de algemene layout bepaald door &man.hier.7;, dat ook voor /usr wordt gebruikt. Uitzonderingen is de map man, die direct onder /usr/local ligt in plaats van onder /usr/local/share, en de documentatie voor ports is te vinden in share/doc/port. /usr/obj/ Architectuur afhankelijke doelstructuur voor resultaten van de bouw van /usr/src. /usr/ports/ De &os; Portscollectie (optioneel). /usr/sbin/ Systeemdaemons en systeemhulpprogramma's (uitgevoerd door gebruikers). /usr/share/ Architectuur onafhankelijke bestanden. /usr/src/ BSD en/of lokale broncodebestanden. /usr/X11R6/ Uitvoerbare bestanden en bibliotheken, etc, voor de X11R6 distributie (optioneel). /var/ Multifunctionele logboek-, tijdelijke, transparante en spool bestanden. /var/log/ Diverse logboekbestanden van het systeem. /var/mail/ Postbusbestanden van gebruikers. /var/spool/ Diverse printer- en mailsysteemspoolingmappen. /var/tmp/ Tijdelijke bestanden die bewaard worden bij een herstart van het systeem. /var/yp/ NIS maps. Organisatie van schijven De kleinste vorm van organisatie die &os; gebruikt om bestanden te vinden is de bestandsnaam. Bestandsnamen zijn hoofdlettergevoelig, wat betekent dat readme.txt en README.TXT twee verschillende bestanden zijn. &os; gebruikt de extensie niet (.txt) van een bestand om te bepalen of het bestand een programma, een document of een vorm van data is. Bestanden worden bewaard in mappen. Een map kan leeg zijn of honderden bestanden bevatten. Een map kan ook andere mappen bevatten, wat het mogelijk maakt om een hiërarchie van mappen te maken. Dit maakt het veel makkelijker om data te organiseren. Bestanden en mappen worden aangegeven door het bestand of de map aan te geven, gevolgd door een voorwaardse slash, /, gevolgd door andere mapnamen die nodig zijn. Als map foo de map bar bevat, die op zijn beurt het bestand readme.txt bevat, dan wordt de volledige naam of pad naar het bestand foo/bar/readme.txt. Mappen en bestanden worden bewaard op een bestandssysteem. Elk bestandssysteem bevat precies één map op het hoogste niveau die de rootmap van het bestandssysteem heet. Deze rootmap kan op zijn beurt andere mappen bevatten. Tot zover is dit waarschijnlijk hetzelfde als voor elk ander besturingssysteem. Er zijn een paar verschillen. &ms-dos; gebruikt bijvoorbeeld een \ om bestanden en mappen te scheiden, terwijl &macos; gebruik maakt van :. &os; gebruikt geen schijfletters, of andere schijfnamen in het pad. &os; gebruikt geen c:/foo/bar/readme.txt. Eén bestandssysteem wordt aangewezen als root bestandssysteem, waar naar wordt verwezen met /. Elk ander bestandssysteem wordt daarna gekoppeld onder het root bestandssysteem. Hoeveel schijven er ook aan een &os; systeem hangen, het lijkt alsof elke map zich op dezelfde schijf bevindt. Stel er zijn drie bestandssystemen met de namen A,B en C. Elk bestandssysteem heeft één root map die twee andere mappen bevat, A1 en A2 (zo ook voor de andere twee: B1, B2, C1 en C2). A wordt het root besturingsysteem. Met ls, dat de inhoud van de map kan tonen, zijn de twee mappen A1 en A2 te zien. De mappenstructuur ziet er als volgend uit: / | +--- A1 | `--- A2 Een bestandssysteem moet gekoppeld worden in een map op een ander bestandssysteem. Als nu bestandssysteem B wordt gekoppeld onder de map A1 vervangt B A1 en zien de koppelingen in B er als volgt uit: / | +--- A1 | | | +--- B1 | | | `--- B2 | `--- A2 Elk bestand dat in de mappen B1 en B2 aanwezig is, kan benaderd worden met het pad /A1/B1 of /A1/B2. Elk bestand dat in /A1 stond is tijdelijk verborgen en komt tevoorschijn als Bis ontkoppeldvan A. Als B gekoppeld is onder A2 ziet de diagram er als volgt uit: / | +--- A1 | `--- A2 | +--- B1 | `--- B2 en de paden zouden dan respectievelijk /A2/B1 en /A2/B2 zijn. Bestandssystemen kunnen op elkaar worden gekoppeld. Doorgaand op het vorige voorbeeld kan het bestandssysteem C gekoppeld worden bovenop de map B1 in het bestandssysteem B. Dit resulteert in: / | +--- A1 | `--- A2 | +--- B1 | | | +--- C1 | | | `--- C2 | `--- B2 Of C kan direct onder het bestandssysteem A gekoppeld worden, onder de map A1: / | +--- A1 | | | +--- C1 | | | `--- C2 | `--- A2 | +--- B1 | `--- B2 Hoewel het niet gelijk is, lijkt het op het gebruik van join in &ms-dos;. Beginnende gebruikers hoeven zich hier gewoonlijk niet mee bezig te houden. Normaal gesproken worden bestandssystemen gemaakt als &os; wordt geïnstalleerd en er wordt besloten waar ze gekoppeld worden. Meestal worden ze ook niet gewijzigd tot er een nieuwe schijf aan een systeem wordt toegevoegd. Het is mogelijk om één groot root bestandssysteem te hebben en geen andere. Deze benadering heeft voordelen en nadelen. Voordelen van meerdere bestandssystemen Verschillende bestandssystemen kunnen verschillende mount opties hebben. Met een goede voorbereiding kan het root bestandssysteem bijvoorbeeld als alleen-lezen gekoppeld worden, waardoor het onmogelijk wordt om per ongeluk kritische bestanden te verwijderen of te bewerken. Het scheiden van andere bestandssystemen die beschrijfbaar zijn door gebruikers, zoals /home van andere bestandssystemen stelt de beheerder in staat om ze nosuid te koppelen. Deze optie voorkomt dat suid/guid bits op uitvoerbare bestanden effectief gebruikt kunnen worden, waardoor de beveiliging mogelijk beter wordt. &os; optimaliseert automatisch de layout van bestanden op een bestandssysteem, afhankelijk van hoe het bestandssysteem wordt gebruikt. Een bestandsysteem dat veel bestanden bevat waar regelmatig naar geschreven wordt, wordt anders geoptimaliseerd dan een bestandssysteem dat minder maar grotere bestanden bevat. Door het gebruik van één groot bestandssysteem werkt deze optimalisatie niet. &os;'s bestandssystemen zijn erg robuust als er bijvoorbeeld een stroomstoring is, hoewel een stroomstoring op een kritiek moment nog steeds kan leiden tot schade aan de structuur van het bestandssysteem. Door het verdelen van data over meerdere bestandssystemen, is de kans groter dat het systeem nog opstart, wat terugzetten van een back-up makkelijker maakt als dat nodig is. Voordeel van één bestandssysteem Bestandssystemen hebben een vaste grootte. Als bij de installatie van &os; een bestandssysteem wordt gemaakt, is het later mogelijk dat de partitie groter gemaakt moet worden. Dit is niet zo makkelijk zonder een back-up, het opnieuw maken van het bestandssysteem met gewijzigde grootte en het terugzetten van de geback-upte gegevens. &os; heeft &man.growfs.8; waarmee de grootte van het bestandssysteem is aan te passen terwijl het draait. Bestandssystemen worden opgeslagen in partities. Dit betekent niet hetzelfde als de algemene betekenis van de term partitie (bijvoorbeeld, &ms-dos; partitie), vanwege &os;'s &unix; achtergrond. Elke partitie wordt geïdentificeerd door een letter van a tot en met h. Elke partitie kan slechts één bestandssysteem hebben, wat betekent dat bestandssystem vaak omschreven worden aan de hand van hun koppelpunt in de bestandssysteem hiërarchie of de letter van de partitie waar ze in opgeslagen zijn. &os; gebruikt ook schijfruimte voor wisselbestanden. Wisselbestanden geven &os; virtueel geheugen. Dit geeft de computer de mogelijkheid om net te doen alsof er veel meer geheugen in de machine aanwezig is dan werkelijk het geval is. Als &os; geen geheugen meer heeft, verplaatst het data die op dat moment niet gebruikt wordt naar de wisselbestanden en plaatst het terug als het wel nodig is (en zet iets anders in ruil daarvoor terug). Aan sommige partities zijn bepaalde conventies gekoppeld. Partitie Conventie a Bevat meestal het root bestandssysteem b Bevat meestal de swapruimte c Heeft meestal dezelfde grootte als de hele harde schijf. Dit geeft hulpprogramma's de mogelijkheid om op een complete schijf te werken (voor bijvoorbeeld een bad block scanner) om te werken op de c partitie. Meest wordt hierop dan ook geen bestandssysteem gecreeërd. d Partitie d had vroeger een speciale betekenis, maar die is verdwenen. d zou nu kunnen werken als een normale partitie. Elke partitie die een bestandssysteem bevat is opgeslagen in wat &os; noemt een slice. Slice is &os;'s term voor wat meeste mensen partities noemen. Dit komt wederom door &os;'s &unix; achtergrond. Slices zijn genummerd van 1 tot en met 4. slices partities gevaarlijk toegewijd Slicenummers volgen de apparaatnamen, voorafgegaan door een s die begint bij 1. Dus da0s1 is de eerste slice op de eerste SCSI drive. Er kunnen maximaal vier fysieke slices op een schijf staan, maar er kunnen logische slices in fysieke slices van het correcte type staan. Deze uitgebreide slices zijn genummerd vanaf 5. Dus ad0s5 is de eerste uitgebreide slice op de eerste IDE schijf. Deze apparaten worden gebruikt door bestandssystemen waarvan verwacht wordt dat ze een slice in beslag nemen. Slices, gevaarlijk toegewijde (dangerously dedicated) fysieke drivers en andere drives bevatten partities, die worden weergegeven door letters vanaf a tot h. Deze letter wordt achter de apparaatnaam geplakt. Dus da0a is de a partitie op de eerste da drive, die gevaarlijk toegewijd is. ad1s3e is de vijfde partitie op de derde slice van de tweede IDE schijf. Elke schijf op het systeem wordt geïdentificeerd. Een schijfnaam start met een code die het type aangeeft en dan een nummer dat aangeeft welke schijf het is. In tegenstelling tot bij slices, start het nummeren van schijven bij 0. Standaardcodes staan beschreven in . Bij een referentie aan een partitie verwacht &os; ook dat de slice en schijf refereert naar die partitie en als naar een slice wordt verwezen moet ook de schijfnaam genoemd worden. Dit kan door de schijfnaam, s, het slice nummer en de partitieletter aan te geven. Voorbeelden staan in . In staat een conceptmodel van een schijflayout die een en ander verduidelijkt. Voordat &os; geïnstalleerd kan worden moeten eerst de schijfslices gemaakt worden en daarna moeten de partities op de slices voor &os; gemaakt worden. Daarna wordt op elke partitie het bestandssysteem (of wisselbestand) gemaakt en als laatste wordt besloten waar het filesysteem gekoppeld wordt. Schijf apparaatcodes Code Betekenis ad ATAPI (IDE) schijf da SCSI directe toegang schijf acd ATAPI (IDE) CDROM cd SCSI CDROM fd Floppydisk
Voorbeeld schijf-, slice- en partitienamen Name Betekenis ad0s1a De eerste partitie (a) op de eerste slice (s1) op de eerste IDE schijf (ad0). da1s2e De vijfde partitie (e) op de tweede slice (s1) op de tweede SCSI schijf (da1). Conceptmodel van een schijf Het onderstaande diagram geeft aan hoe &os; de eerste IDE schijf in het systeem ziet. Stel dat de schijf 4 GB groot is en dat deze twee 2 GB slices (&ms-dos; partities) bevat. De eerste slice bevat een &ms-dos; schijf, C: en de tweede slice bevat een &os; installatie. Deze &os; installatie heeft drie partities en een partitie met een wisselbestand. De drie partities hebben elk een bestandssysteem. Partitie a wordt gebruikt voor het root bestandssysteem, e voor de map /var en f voor de map /usr. .-----------------. --. | | | | DOS / Windows | | : : > Eerste slice, ad0s1 : : | | | | :=================: ==: --. | | | Partitie a, gekoppeld als / | | | > gerefereerd als ad0s2a | | | | | :-----------------: ==: | | | | Partitie b, gebruikt als swap | | | > gerefereerd als ad0s2b | | | | | :-----------------: ==: | Partitie c, geen | | | Partition e, gebruikt als /var > bestandssysteem, bevat | | > gerefereerd als ad0s2e | alle &os; slices, | | | | ad0s2c :-----------------: ==: | | | | | : : | Partitie f, gebruikt als /usr | : : > gerefereerd als ad0s2f | : : | | | | | | | | --' | `-----------------' --'
Het koppelen en ontkoppelen van bestandssystemen Het bestandssysteem wordt het best weergegeven als een boom, met de stam als /. /dev, /usr en de andere map in root zijn takken die weer hun eigen takken kunnen hebben, zoals /usr/local, etc. root bestandssysteem Er zijn verschillende redenen om sommige van deze mappen op aparte bestandssystemen te plaatsen. /var bevat de mappen log/, spool/ en verschillende types tijdelijke bestanden en kan volraken. Het laten vollopen van het root bestandssysteem is geen goed idee, dus het splitsen van /var van /is vaak de favoriet. Een andere vaak voorkomende reden om bepaalde mapbomen op aparte bestandssystemen te plaatsen, is om ze op verschillende fysieke schrijven te zetten of gescheiden virtuele schijven zoals gemounte Netwerk bestandssystemen of cd-rom drives. Het bestand <filename>fstab</filename> bestandssystemen gekoppeld met fstab Tijdens het opstartproces, worden bestandssystemen die vermeld staan in /etc/fstab automatisch gekoppeld (tenzij ze vermeld staan met ). /etc/fstab bevat een lijst van regels die aan het volgende formaat voldoen: apparaat /koppelpunt fstype opties dumpfreq passno apparaat Een apparaatnaam (die moet bestaan) zoals uitgelegd in . koppelpunt Een map (die moet bestaan) waarop het bestandssysteem gekoppeld moet worden. fstype Het bestandssysteem type dat aan &man.mount.8; gegeven wordt. Het standaard &os; bestandssysteem is ufs. opties Dit is of voor lezen en schrijven bestandssytemen, of voor alleen lezen, gevolgd door elke andere optie die mogelijk nodig is. Een standaard optie is voor bestandssystemen die niet automatisch gekoppeld worden tijdens het opstarten. Andere opties staan in &man.mount.8;. dumpfreq Dit wordt gebruikt door &man.dump.8; om te bepalen welke bestandssystemen gedumpt moeten worden. Als het veld niet is ingevuld, wordt aangenomen dat er een nul staat. passno Dit bepaalt in welke volgorde bestandssystemen gecontroleerd moeten worden. Bestandssystemen die overgeslagen moeten worden moeten hun passno waarde op nul hebben staan. Voor het root bestandssysteem (dat voor alle andere gecontroleerd moet worden) moet passno op één staan en passno waarden voor andere bestandssystemen moeten een waarde hebben groter dan één. Als bestandssysteem dezelfde passno waarde hebben probeert &man.fsck.8; deze bestandssystemen tegelijkertijd te controleren. In &man.fstab.5; staat meer informatie over de opmaak van /etc/fstab en de mogelijke opties. Het commando <command>mount</command> bestandssystemen koppelen &man.mount.8; wordt gebruikt om bestandsystemen te koppelen. De meest eenvoudige vorm is: &prompt.root; mount apparaat koppelpunt Alle opties voor het commando staat in &man.mount.8;, maar de meest voorkomende zijn: Mountopties Mount alle bestandssystemen die in /etc/fstab staan, behalve die gemarkeerd staan als noauto, uitgesloten zijn door de optie of die al gekoppeld zijn. Doe alles behalve het echt aanroepen van de systeemopdracht mount. Deze optie is handig in samen met de optie om te bepalen wat &man.mount.8; eigenlijk probeert te doen. Forceert het koppelen van een niet schoon bestandssysteem (gevaarlijk) of forceert het innemen van schrijftoegang als de koppelstatus van een bestandssysteem wijzigt van lezen en schrijven naar alleen lezen. Mount het bestandssysteem alleen lezen. Dit is identiek aan de optie voor de optie . fstype Mount het opgegeven bestandssysteem als het opgegeven type bestandssysteem of koppelt alleen bestandssystemen van het aangegeven type als ook de optie is opgegeven. ufs is het standaard bestandssysteem. Werk koppel opties van het bestandssysteem bij. Geef uitgebreide informatie (verbose). Mount het bestandssysteem lezen en schrijven. De optie accepteert een door komma's gescheiden lijst van opties, waaronder de volgende: noexec Sta geen uitvoerbare bestanden toe op dit bestandssysteem. Ook dit is een nuttige veiligheidsoptie. nosuid Interpreteer geen setuid of setgid opties op het bestandssysteem. Ook dit is een nuttige veiligheidsoptie. Het commando <command>umount</command> bestandssystemen ontkoppelen &man.umount.8; heeft een koppelpunt, een apparaatnaam, of als parameter. Alle vormen kunnen de optie hebben om een bestandsysteem te forceren te ontkoppelen en de optie voor uitgebreide informatie. De optie is meestal geen goed idee. Forceren dat een bestandssysteem ontkoppeld wordt kan de computer laten crashen of data op het bestandssysteem beschadigen. De opties en worden gebruikt om alle bestandssystemen te unmounten, mogelijk nader gespecificeerd door de optie met daarachter op welke typen bestandssystemen het betrekking heeft. Voor de optie geldt dat deze niet probeert het root bestandssysteem te ontkoppelen. Processen &os; is een multi-tasking besturingssysteem. Dit betekent dat het lijkt alsof er meer dan één proces tegelijkertijd draait. Elk programma dat draait wordt een proces genoemd. Elk commando dat wordt uitgevoerd start op zijn minst één nieuw proces en er zijn systeemprocessen die continu draaien om het systeem functioneel te houden. Elk proces wordt geïdentificeerd door een nummer dat process ID of PID heet, en net zoals bij bestanden heeft elk proces één eigenaar en groep. De eigenaars- en groepsinformatie wordt gebruikt om te bepalen welke bestanden en apparaten het proces mag openen, waarbij gebruik wordt gemaakt van de bestandsrechten die eerder zijn behandeld. Veel processen hebben ook een ouderproces (parent process). Een ouderproces is een proces dat het nieuwe proces heeft gestart. Als commando's in een shell worden ingevoerd, start de shell een proces en elk commando dat draait is ook een proces. De uitzondering hierop is het speciale proces &man.init.8;. init is altijd het eerste proces, dus het PID is altijd 1. init wordt automatisch gestart door de kernel als &os; opstart. Twee commando's die erg handig zijn om te zien welke processen er draaien zijn &man.ps.1; en &man.top.1;. ps wordt gebruikt om een statische lijst op te vragen van de processen die op het moment van uitvoeren draaien en kan hun PID, geheugengebruik, de startende commandoregel, enzovoort, tonen. top geeft alle draaiende processen weer en werkt de status elke paar seconden bij zodat interactief wordt weergegeven wat een computer aan het doen is. Standaard laat ps alleen zien welke commando's draaien waarvan de gebruiker die het uitvoert de eigenaar is: &prompt.user; ps PID TT STAT TIME COMMAND 298 p0 Ss 0:01.10 tcsh 7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14) 37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14) 48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi 48730 p0 IW 0:00.00 (dns helper) (navigator-linux-) 72210 p0 R+ 0:00.00 ps 390 p1 Is 0:01.14 tcsh 7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y 6688 p3 IWs 0:00.00 tcsh 10735 p4 IWs 0:00.00 tcsh 20256 p5 IWs 0:00.00 tcsh 262 v0 IWs 0:00.00 -tcsh (tcsh) 270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16 280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16 284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc 285 v0 S 0:38.45 /usr/X11R6/bin/sawfish In het bovenstaande voorbeeld is de uitvoer van &man.ps.1; georganiseerd in een aantal kolommen. PID is het proces ID. PIDs worden toegekend vanaf 1 en lopen op tot 99999. Als ze allemaal zijn gebruikt, worden ze hergebruikt. (een PID wordt niet hergebruikt als deze reeds in gebruik is). De TT kolom toont de tty vanwaar het programma draait en wordt nu buiten beschouwing gelaten. STAT toont de huidige staat van het programma en ook deze kolom wordt buiten beschouwing gelaten. TIME is de hoeveelheid tijd die het programma gedraaid heeft op de CPU. Dit is meestal niet de verstreken tijd vanaf het moment dat het programma is gestart. Veel programma's wachten omdat er alleen gebruik wordt gemaakt van de CPU als er iets voor het programma te doen is. Als laatste is COMMAND de commandoregel die gebruikt is om het programma te starten. &man.ps.1; ondersteunt een aantal opties die de informatie wijzigen die wordt weergegeven. Één van de meest nuttige combinaties is auxww. De optie toont informatie over alle draaiende processen, niet alleen die van de gebruiker die is aangemeld. De optie toont de gebruikersnaam van de proceseigenaar, evenals geheugengebruik. De optie toont informatie over daemonprocessen en met de optie laat &man.ps.1; de volledige commandoregel zien voor elk proces, in plaats van een mogelijk afgekorte regel omdat die te lang is om op het scherm te passsen. De uitvoer van &man.top.1; is hetzelfde: &prompt.user; top last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10 47 processes: 1 running, 46 sleeping CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free Swap: 256M Total, 38M Used, 217M Free, 15% Inuse PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top 7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14 281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA 296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm 48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu 175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd 7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt ... De uitvoer is gesplitst in twee secties. De kop (de eerste vijf regels) toont het laatst uitgegeven PID, de gemiddelde systeembelasting (hoe druk is een systeem), de uptime van het systeem (tijd verstreken sinds laatste reboot) en de huidige tijd. De andere cijfers in de kop tonen hoeveel processen er draaien (in dit geval 47) , hoeveel geheugen en swap er gebruikt wordt en hoeveel processortijd het systeem besteed aan verschillende taakgroepen. Daaronder staat een serie van kolommen die soortgelijke informatie bevatten als de uitvoer van &man.ps.1;. Zo zijn het PID, de gebruikersnaam, de hoeveelheid processortijd en het commando dat gebruikt is om het proces te starten te zien. &man.top.1; laat standaard ook zien hoeveel geheugen er gebruikt wordt door een proces. Dit staat in twee kolommen waarbij in de eerste kolom het maximale geheugengebruik wordt getoond en in de tweede kolom het huidige geheugengebruik. Maximale gebruik is de hoeveelheid geheugen die het proces nodig had in de tijd dat het bestaat en het residente gebruik is hoeveel er op het moment van weergeven gebruikt wordt. In dit voorbeeld is zichtbaar dat &netscape; bijna 30 MB RAM nodig had, maar op het moment van uitvoeren 9 MB verbruikt. &man.top.1; werkt het beeld automatisch iedere twee seconden bij. Dat kan gewijzigd worden met de optie . Daemons, signalen en het stoppen van processen Als een gebruiker een editor draait is het makkelijk om de editor te besturen, te vertellen om bestanden te openen, etc. Dit kan omdat de editor de mogelijkheden geeft om dat te doen en omdat de editor gekoppeld is aan een terminal. Sommige programma's zijn niet ontworpen om te draaien met continue gebruikersinvoer, dus als zij de kans krijgen ontkoppelen zij zich van de terminal. Een webserver reageert bijvoorbeeld de hele dag op webaanvragen en heeft eigenlijk geen input van een lokale gebruiker nodig. Programma's die email van locatie naar locatie transporteren zijn een ander voorbeeld. Deze programma's heten daemons. Daemons waren karakters in de Griekste mythologie, goed noch slecht, ze waren dienende geesten die op grote schaal nuttige dingen deden voor de mensheid. Net zoals de huidige webservers en mailservers nuttige dingen doen. Dit is waarom de mascotte voor BSD al lang een vrolijk kijkende daemon met puntoren en een drietand is. Er is een overeenkomst om programma's die meestal draaien als daemon te voorzien van het achtervoegsel d. BIND is de Berkeley Internet Name Domain (het echte programma heet named), de Apache webserver heet httpd, de printerspooldriver heet lpd, etc. Deze overeenkomst geldt niet altijd. De hoofd maildaemon voor Sendmail heet bijvoorbeeld sendmail en niet maild. Soms is communicatie met een daemon nodig. Een manier om dit te doen is het versturen van een signaal (signals). Er zijn een verschillende signalen. Sommige hebben een specifieke bedoeling, andere worden geïntrepeteerd door de applicatie. In de documentatie van de applicatie staat hoe de applicatie signalen intrepeteert. Er kan alleen een signaal naar een proces gezonden worden waar de uitvoerende gebruiker eigenaar van is. Als met &man.kill.1; of &man.kill.2; een signaal naar een proces van een andere gebruiker wordt gestuurd, wordt de toegang geweigerd. De enige uitzondering hierop is de root gebruiker, die signalen naar processen van alle gebruikers kan sturen. &os; stuurt soms ook signalen naar applicaties. Als een applicatie slecht geschreven is en hij probeert geheugen te benaderen waar hij niet naartoe mag, stuurt &os; het proces een Segmentation Violation signaal (SIGSEGV). Als een applicatie de systeemaanroep &man.alarm.3; heeft gebruikt om na een bepaalde periode een alarm te ontvangen, wordt er een Alarm signaal heen gestuurd (SIGALRM), etc. Twee signalen kunnen gebruikt worden om een proces te stoppen: SIGTERM en SIGKILL. SIGTERM is de nette manier om een proces te killen. Het proces kan het signaal afvangen, begrijpen dat de eigenaar wil dat het wordt afgesloten, wellicht logboekbestanden sluiten die geopend zijn en alle onderhanden activiteiten afhandelen. In een aantal gevallen kan een proces SIGTERM negeren: als het midden in een taak zit die niet beëindigd kan worden. SIGKILL mag niet worden genegeerd door een proces. Dit is het Wat je ook aan het doen bent, stop er nu mee signaal. Na een SIGKILL stopt &os; het proces meteen. Dit is niet geheel waar. Er zijn een aantal dingen die niet onderbroken kunnen worden. Als het proces bijvoorbeeld een bestand probeert uit te lezen dat op een andere computer in het netwerk staat en de andere computer is verdwenen (uitgezet of het netwerk heeft een fout), dan wordt er gezegd dat het proces niet onderbroken kan worden. Uiteindelijk loopt het proces uit de tijd, meestal na twee minuten. Zodra het uit de tijd loopt, wordt het proces alsnog gestopt. Andere veelgebruikte signalen zijn SIGHUP, SIGUSR1 en SIGUSR2. Dit zijn algemeen bruikbare signalen en verschillende applicaties zullen verschillend reageren als ze verstuurd worden. Stel dat het bestand met instellingen voor de webserver is aangepast. Dan moet aan de webserver verteld worden dat die de instellingen opnieuw moet lezen. Hiervoor zou httpd gestopt en gestart kunnen worden, maar dit resulteert in een korte onderbreking van de webserverdienst, wat ongewenst kan zijn. De meeste daemons zijn geschreven om te reageren op het SIGHUP signaal door het opnieuw inlezen van het instellingenbestand. Dus in plaats van het stoppen en herstarten van httpd kan het SIGHUP signaal gezonden worden. Omdat er geen standaard manier is om op deze signalen te reageren, reageren verschillende daemons anders. Het is verstandig eerst de documentatie van de daemon in kwestie te lezen. Zoals onderstaand voorbeeld laat zien, worden signalen door &man.kill.1; verzonden. Het versturen van een signaal naar een proces Dit voorbeeld toont hoe een signaal naar &man.inetd.8; wordt verstuurd. Het bestand met instellingen voor inetd is /etc/inetd.conf en inetd leest dit bestand opnieuw in als er een SIGHUP wordt verstuurd. Eerst moet het proces ID worden opgezocht van het proces waar een signaal naar verzonden moeten worden. Dit kan door - &man.ps.1; en &man.grep.1; te gebruiken. &man.grep.1; wordt - gebruikt om in de uitvoer te zoeken en te kijken naar de - string die de gebruiker opgeeft. Dit commando wordt gedraaid - als een normale gebruiker en &man.inetd.8; wordt gedraaid - onder de gebruiker root, dus aan - &man.ps.1; moet de optie meegegeven - worden. + &man.pgrep.1; te gebruiken. - &prompt.user; ps -ax | grep inetd - 198 ?? IWs 0:00.00 inetd -wW + &prompt.user; pgrep -l inetd +198 inetd -wW - Dus PID van &man.inetd.8; is 198. In sommige gevallen - kan grep inetd ook voorkomen in de - uitvoer. Dit komt door de manier waarop &man.ps.1; de lijst - van draaiende processen moet vinden. + Dus het PID van &man.inetd.8; is 198. Met &man.kill.1; kan het signaal verzonden worden. Omdat &man.inetd.8; wordt gedraaid door root moet &man.su.1; gebruikt worden om root te worden. &prompt.user; su Password: &prompt.root; /bin/kill -s HUP 198 Zoals zovaak met &unix; commando's, geeft &man.kill.1; geen uitvoer als het succesvol uitgevoerd is. Als een signaal wordt verzonden naar een proces waarvan de gebruiker niet zelf de eigenaar is, dan is de melding: kill: PID: Operation not permitted. Als het PID verkeerd wordt ingevuld, wordt het signaal naar het verkeerde proces verzonden, wat slecht kan zijn, of, als de gebruiker geluk heeft, wordt het verzonden naar een PID dat momenteel niet in gebruik is, waarop de foutmelding kill: PID: No such process verschijnt. Waarom <command>/bin/kill</command> gebruiken? Veel shells leveren kill als ingebouwd commando. Dat betekent dat de shell het signaal direct verstuurt in plaats van door het starten van /bin/kill. Dit kan erg nuttig zijn, maar verschillende shells hebben een verschillende opdrachtregel voor het specificeren van de naam van het signaal dat verstuurd moet worden. In plaats van ze allemaal te leren, is het eenvoudiger om gewoon /bin/kill PID te gebruiken. Andere signalen versturen werkt bijna hetzelfde door TERM of KILL op de commandoregel te vervangen door wat nodig is. Het stoppen van willekeurige processen op een systeem is meestal een slecht idee. In het bijzonder bij &man.init.8; met proces ID 1. Het draaien van /bin/kill -s KILL 1 is een snelle manier om een systeem uit te zetten. Argumenten die aan &man.kill.1; worden meegegeven moeten altijd twee keer gecontroleerd worden voordat op Enter gedrukt wordt. Shells shells commandoregel In &os; wordt een groot deel van het alledaagse werk gedaan vanuit een omgeving met een commandoregel die shell heet. De grootste taak van een shell is om commando's van het invoerkanaal op te vangen en deze uit te voeren. Veel shells hebben ook functies ingebouwd om mee te helpen om alledaagse taken zoals bestandsbeheer, bestandsglobbing, bestanden wijzigen vanaf de commandoregel, commandomacro's schrijven en uitvoeren en omgevingsvariabelen instellen en wijzigen. &os; heeft een aantal shells bijgeleverd zoals sh, de Bourne Shell en tcsh, de verbeterde C-shell. Er zijn veel andere shells beschikbaar in de &os; Portscollectie zoals zsh en bash. Welke shell gebruiken? Dit is een kwestie van smaak. Een C–programmeur voelt zich misschien prettiger bij een C–achtige shell, zoals tcsh. Een voormalig &linux; gebruiker of iemand die niet veel ervaring heeft met een &unix; commandoregel interface wil misschien bash proberen. Elke shell heeft zijn eigen unieke eigenschappen die wel of niet werken voor een bepaalde gebruiker. Een standaard optie in een shell is bestandsnaam completie. Door het intikken van de eerste paar letters van een commando of bestandsnaam, kan de shell opdracht gegeven worden om automatisch de rest het commando of bestandsnaam toe te voegen met de Tab toets op het toetsenbord. Stel dat er twee bestanden zijn met de namen foobar en foo.bar en foo.bar moet verwijderd worden. Dan kan op het toetsenbord rm fo[Tab].[Tab] ingevoerd worden. De shell geeft rm foo[BEEP].bar weer. De [BEEP] geeft aan dat de shell in staat was om de bestandsnaam te completeren omdat er meer dan één soortgelijk bestand was. foobar en foo.bar beginnen met fo, maar het was in staat om het af te maken tot foo. Na het invoeren van een . en daarna Tab, is de shell in staat om de rest van de bestandsnaam aan te vullen. omgevingsvariabelen Een andere optie van de shell is het gebruik van omgevingsvariabelen. Omgevingsvariabelen zijn variabele sleutelparen die opgeslagen zijn in de omgevingsruimte van een shell. Deze ruimte kan uitgelezen worden door elk programma dat door de shell wordt uitgevoerd en bevat dus veel programmainstellingen. Hieronder staat een lijst van standaard omgevingsvariabelen en wat ze betekenen: omgevingsvariabelen Variabele Omschrijving USER Gebruikersnaam van de gebruiker die is aangemeld. PATH Een lijst van mappen, gescheiden door een : voor het zoeken naar binaire bestanden. DISPLAY Netwerknaam van het X11 scherm om verbinding mee te maken, indien beschikbaar. SHELL De huidige shell. TERM De naam van de huidige gebruikersterminal. Gebruikt om de mogelijkheden van de terminal te bepalen. TERMCAP Databaseregel met terminal escape codes voor het uitvoeren van diverse terminalfuncties. OSTYPE Type besturingssysteem, bijvoorbeeld &os;. MACHTYPE De CPU architectuur waar het systeem op draait. EDITOR De teksteditor waar de gebruiker de voorkeur aan geeft. PAGER De tekstpager waar de gebruiker de voorkeur aan geeft. MANPATH Lijst van mappen gescheiden door een : voor het zoeken naar handleidingen. Bourne shells Het instellen van omgevingsvariabelen verschilt van shell tot shell. In de C–achtige shells zoals tcsh en csh moet setenv gebruikt worden om omgevingsvariabelen in te stellen. In Bourne-shells zoals sh en bash moet export gebruikt worden om de omgevingsvariabelen in te stellen. Om bijvoorbeeld de omgevingsvariabele EDITOR te wijzigen naar /usr/local/bin/emacs onder csh of tcsh moet het volgende gedaan worden: &prompt.user; setenv EDITOR /usr/local/bin/emacs In Bourne shells is dat: &prompt.user; export EDITOR="/usr/local/bin/emacs" Met de meeste shells kunnen de omgevingsvariabelen ook weergegeven worden door een $ karakter voor de variabelenaam te plaatsen op de commandoregel. echo $TERM zou weergeven wat er in $TERM gezet is, omdat de shell $TERM uitbreid en het resultaat doorgeeft aan echo. Shells kennen veel speciale karakters, die meta-karakters heten, als speciale weergaves van data. De meest voorkomende is het karakter * karakter, dat elk karakter in een bestandsnaam voorstelt. Deze speciale meta-karakters kunnen gebruikt worden om bestandsnaamglobbing te doen. Door bijvoorbeeld echo * in te voeren, is het resultaat bijna hetzelfde als door het uitvoeren van ls, omdat de shell alle bestanden die van toepassing zijn aan echo geeft om ze daarna te tonen. Om te voorkomen dat de shell deze speciale tekens verwerkt, kunnen ze uitgeschakeld worden door er het backslash karakter (\) voor te plaatsen. echo $TERM print de inhoud van TERM naar het scherm. echo \$TERM print $TERM zoals het geschreven is. Shell wijzigen De makkelijkste manier om de shell te wijzigen is door het chsh commando te gebruiken. Door chsh te starten wordt de editor gestart die in de EDITOR omgevingsvariable staat. Als deze niet is ingesteld, wordt vi gestart. In de editor kan de regel waarop Shell: staat gewijzigd worden. Aan chsh kan ook de optie meegegeven worden. Dit stelt de shell in, zonder dat een editor gebruikt hoeft te worden. Als de shell bijvoorbeeld gewijzigd moet worden in bash, kan dat als volgt: &prompt.user; chsh -s /usr/local/bin/bash De te gebruiken shell moet geregistreerd zijn in /etc/shells. Als een shell uit de Portscollectie is geïnstalleerd, is dit meestal automatisch gebeurd. Als de shell met de hand is geïnstalleerd moet het onderstaande gedaan worden. Als bijvoorbeeld bash met de hand geïnstalleerd is in /usr/local/bin, dient het onderstaande te gebeuren: &prompt.root; echo "/usr/local/bin/bash" >> /etc/shells Hierna kan chsh weer gedraaid worden. Teksteditors teksteditors editors Een groot deel van de instellingen in &os; wordt gemaakt door het bewerken van tekstbestanden. Hierdoor is het een goed idee om bekend te zijn met een tekstverwerker. &os; heeft er een paar in het basissysteem en veel anderen zijn beschikbaar via de Portscollectie. ee editors ee De makkelijkste en simpelste editor om te leren is de editor ee, wat easy editor betekent. Om ee te starten, moet op de commandoregel ee bestandsnaam ingevoerd worden, waar bestandsnaam de naam is van het bestand dat bewerkt moet worden. Om bijvoorbeeld /etc/rc.conf te bewerken, wordt ee /etc/rc.conf ingegeven. Eenmaal in ee worden alle manipulatie commando's die de editor heeft weergegeven aan de bovenkant van het scherm. Het karakter dakje ^ staat voor de toets CTRL op het toetsenbord, dus ^e vormt de toetscombinatie Ctrle . Om uit ee te komen wordt op de toets Esc gedrukt en daar kan gekozen worden om de editor te verlaten. De editor vraagt dan of de wijzigingen bewaard moeten worden als het bestand veranderd is. vi editors vi Emacs editors Emacs &os; heeft ook uitgebreidere tekstverwerkers, zoals vi, in het basissysteem en andere editors als Emacs en vim maken onderdeel uit van de &os; Portscollectie (editors/emacs en editors/vim). Deze editors leveren veel meer functionaliteit en kracht maar zijn lastiger om te leren. Als echter veel met tekstverwerking gedaan wordt, is het leren van een krachtige editor als vim of Emacs verstandig omdat deze uiteindelijk veel tijd kan besparen. Veel applicaties die bestanden wijzigen of getypte invoer nodig hebben zullen automatisch een tekstverwerker openen. Om de tekstverwerker te wijzigen die standaard wordt gebruikt, stelt u de omgevingsvariabele EDITOR in. Zie de sectie shells voor meer details. Apparaten en apparaatnodes Apparaat is een term die meestal wordt gebruikt voor hardwareonderdelen in een systeem, zoals schijven, printers grafische kaarten en toetsenborden. Als &os; opstart laat het vooral zien welke apparaten gedetecteerd worden. Deze opstartmeldingen kunnen nagekeken worden door het bestand /var/run/dmesg.boot te bekijken. acd0 is bijvoorbeeld de eerste IDE cd-rom drive, terwijl kbd0 staat voor het toetsenbord. Veel van deze apparaten moeten in een &unix; besturingssysteem benaderd worden via speciale bestanden die apparaatnodes heten en te vinden zijn in de map /dev. Apparaatnodes maken Als een nieuw apparaat wordt toegevoegd aan een systeem of als ondersteuning voor extra apparaten wordt gecompileerd, dan moeten er misschien nieuwe apparaat nodes aangemaakt worden. <literal>DEVFS</literal> (apparaatbestandssysteem - DEVice File System) Het apparaatbestandssysteem of DEVFS, levert toegang tot de apparaatruimte van de kernel in het globale bestandssysteem. In plaats van dat het nodig is om apparaatnodes te maken en te wijzigen, doet DEVFS dit. In &man.devfs.5; staat meer informatie. Binaire formaten Om te kunnen begrijpen waarom &os; gebruik maakt van het &man.elf.5; formaat, is het belangrijk op de hoogte zijn van de drie dominante uitvoerbare formaten voor &unix;: &man.a.out.5; Het oudste en klassieke &unix; object formaat. Het gebruikt een korte en compacte kop met een magisch nummer aan het begin dat veel gebruikt wordt om het formaat aan te geven (&man.a.out.5; geeft meer details). Het bevat drie laadbare segmenten: .tekst, .data en .bss, een symbolentabel en een stringtabel. COFF Het SVR3 object formaat. De kop bestaat uit een sectietabel, dus er kunnen meer dan alleen .tekst, .data, en .bss secties zijn. &man.elf.5; De opvolger van COFF, heeft meerdere secties en 32-bit of 64-bit als mogelijke waarden. Één nadeel: ELF was ook ontworpen met de aanname dat er maar één ABI per systeemarchitectuur zou zijn. Deze aanname is eigenlijk redelijk incorrect, zelfs niet in de commerciële SYSV wereld (die op zijn minst drie ABIs heeft: SRV4, Solaris en SCO). &os; probeert om dit probleem heen te werken door een hulpprogramma te leveren voor het brandmerken van een bekend ELF uitvoerbaar bestand met informatie over de ABI waar hij mee kan werken. In &man.brandelf.1; staat meer informatie. &os; komt uit het klassieke kamp en gebruikt het &man.a.out.5; formaat, een technologie die zich bewezen heeft door meerdere generaties van BSD versies heen, tot het begin van de 3.X versies. Alhoewel het al mogelijk was om ELF programma's en kernels te bouwen en te draaien op een &os; systeem , verzette &os; zich eerst tegen de druk om over te schakelen naar ELF als standaard formaat. Waarom? Toen het &linux; kamp hun pijnlijke wissel maakte naar ELF, was dat niet zozeer om van het a.out formaat af te komen, maar meer omdat van het op de inflexibele jump-tabel gebaseerde gedeelde bibliotheekmechanisme af te komen, die het maken van gedeelde bibliotheken erg moeilijk maakte voor bedrijven en ontwikkelaars. Omdat de ELF hulprogramma's een oplossing voor het gedeelde bibliotheek probleem waren en algemeen gezien werden als een stap vooruit, werd de migratie geaccepteerd als noodzakelijk kwaad en werd de wissel uitgevoerd. Het gedeelde bibliotheek mechanisme van &os; is meer gebaseerd op het gedeelde bibliotheek mechanisme van Sun's &sunos; en daardoor erg makkelijk te gebruiken. Waarom zijn er zoveel verschillende formaten? In het duistere donkere verleden was er simpele hardware. Deze simpele hardware ondersteunde een simpel klein systeem. a.out was volledig adequaat voor de taak om binaire bestanden op dat simpele systeem te vertegenwoordigen (een PDP-11). Toen mensen &unix; van deze machine gingen porten, behielden ze het a.out formaat omdat het voldeed voor de vroege ports van &unix; naar architecturen als Motorola 68k, VAXen, enzovoort. Toen besloot een slimme hardware engineer dat als hij de software kon forceren om wat simpele truckjes te doen, hij in staat was om een paar onderdelen van het ontwerp af te schaven, waardoor zijn processorcore sneller kon draaien. Terwijl men probeerde om het met deze nieuwe vorm van hardware te laten werken (vandaag de dag beter bekend als RISC), was a.out te beperkt voor deze hardware. Dus werden er vele formaten ontworpen om betere prestaties te krijgen uit deze hardware dan het simpele formaat a.out kon leveren. Toen werden COFF, ECOFF en een paar andere duistere formaten uitgevonden en werden de limieten verkend, waarna men besloot om zich te richten op ELF. Daarnaast werden programma's groter en bleven schijven (en fysiek geheugen) relatief klein, zodat het concept van een gedeelde bibliotheek werd geboren. Het VM systeem werd ook meer verfijnd. Terwijl al deze verbeteringen bereikt werden door het a.out formaat, werd het nut met elke nieuwe eigenschap verder uitgerekt. Daarnaast wilde men dingen dynamisch laden tijdens het starten of delen weggooien nadat het programma zijn intiële code had gedraaid om te blijven hangen in het hoofdgeheugen en in de wisselbestanden. Talen werden verder verfijnd en men wilde dat code automatisch werd aangeroepen voor main. Er werden veel hacks gedaan in het a.out formaat om alles mogelijk te maken en dit werkte ook enige tijd. Na verloop van tijd was a.out niet meer in staat om alle problemen te adresseren zonder toenemende overhead in code en complexibiliteit. Hoewel ELF veel van deze problemem verhielp, was het moeilijk om te wisselen naar een systeem dat compleet anders werkte. Dus moest ELF wachten totdat het pijnlijker was om a.out te behouden dan het te migreren naar ELF. Met het verstrijken van de tijd, werden de bouwprogramma's die &os; heeft afgeleid van hun bouwprogramma's (vooral de assembler en de loader) ontwikkeld in twee parallel lopende takken. De &os; tree voegde gedeelde bibliotheken toe en heeft wat bugs opgelost. De mensen van GNU die deze programma's hebben geschreven, hebben ze herschreven en simpelere ondersteuning toegevoegd voor het bouwen van cross-compilers, waarbij verschillende formaten zo nodig ingevoegd konden worden, enzovoort. Omdat veel mensen cross-compilers wilden bouwen die gericht waren op &os;, hadden die pech, omdat de oudere broncode van &os; voor as en ld niet opgewassen was tegen deze taak. De nieuwe GNU programmaketen (binutils) ondersteunt cross-compiling, ELF, gedeelde bibliotheken, C++ extensies, enzovoort. Daarnaast leveren veel leverancierds ELF binaire bestanden en is het goed voor &os; om het te draaien. ELF heeft meer expressiemogelijkheden dan a.out en geeft meer uitbreidingsmogelijkheden aan het basissysteem. De ELF hulpprogramma's worden beter onderhouden en geven de mogelijkheid tot ondersteuning voor cross compilatie, wat voor veel mensen belangrijk is. ELF is misschien iets trager dan a.out, maar het meten daarvan kan vrij lastig zijn. Er zijn ook ontelbare verschillen tussen de twee in hoe ze pages opslaan, initiële code verwerken, enzovoort. Geen van allen zijn ze erg belangrijk, maar er zijn verschillen. Na verloop van tijd verdwijnt de ondersteuning voor a.out uit de GENERIC kernel en uiteindelijk ook helemaal uit de kernel als de noodzaak voor a.out gebaseerde programma's voorbij is. Meer informatie Handleidingen handleidingen De meest uitvoerige documentatie van &os; is geschreven in de vorm van handleidingen. Bijna elk programma op het systeem heeft een kleine handleiding die uitlegt wat de basisopties en verschillende argumenten doen. Deze handleidingen bekeken worden met man. Het gebruik van man gaat als volgt: &prompt.user; man commando commando is de naam van het commando waar meer informatie over getoond moet worden. Om bijvoorbeeld meer informatie weer te geven over ls kan het volgende uitgevoerd worden: &prompt.user; man ls De handleidingen zijn opgedeeld in genummerde onderdelen: Gebruikerscommando's. Systeemaanroepen en foutnummernummers. Functies in de C bibliotheken. Apparaatdrivers. Bestandsindelingen. Spelletjes en andere afleidingen. Diverse informatie. Systeemonderhoud en commando's Kernelontwikkelaars. In sommige gevallen kan een bepaald onderwerp vaker voorkomen in een onderdeel van de handleidingen. Er is bijvoorbeeld een gebruikerscommando chmod en een systeemaanroep chmod(). In deze gevallen kan man aangegeven worden welke documentatie weer te geven door het specificeren van het onderdeel: &prompt.user; man 1 chmod Dit geeft de handleiding van het gebruikerscommando chmod weer. Verwijzingen naar een bepaald onderdeel van de handleiding worden traditioneel tussen haakjes geplaatst: &man.chmod.1; verwijst naar het commando chmod en &man.chmod.2; verwijst naar de systeemaanroep. Dit werkt prima als de naam van het commando bekend is en alleen informatie nodig is over hoe het commando gebruikt kan worden, maar wat als de naam van het commando niet bekend is? Dan kan man gebruikt worden om naar trefwoorden te zoeken in de commandobeschrijvingen door de optie te gebruiken: &prompt.user; man -k mail Met dit commando wordt een overzicht getoond met commando's die het trefwoord mail in hun omschrijving hebben. Dit is gelijk aan het commando apropos. Dus om meer informatie over spannende commando's met een onbekende functie in /usr/bin te krijgen is het volgende commando voldoende: &prompt.user; cd /usr/bin &prompt.user; man -f * Het onderstaande commando resulteert in hetzelfde: &prompt.user; cd /usr/bin &prompt.user; whatis * Gnu infobestanden Free Software Foundation &os; heeft veel applicaties en hulpmiddelen die gemaakt zijn door de Free Software Foundation (FSF). Als extraatje voor de documentatie hebben deze programma's uitgebreidere html bestanden die infobestanden heten, die uitgelezen kunnen worden met info of, als emacs is geïnstalleerd, de infomodus van emacs. &man.info.1; wordt als volgt gebruikt: &prompt.user; info h geeft een korte beschrijving en ? toont een kort commando–overzicht.
Index: translations/nl_NL.ISO8859-1/books/handbook/config/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/config/chapter.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/config/chapter.xml (revision 40367) @@ -1,3692 +1,3692 @@ Chern Lee Geschreven door Mike Smith Naar een tutorial van Matt Dillon Tevens gebaseerd op tuning(7) door Danny Pansters Vertaald door René Ladan Instellingen en optimalisatie Overzicht systeeminstellingen systeemoptimalisatie Systeeminstellingen zijn een belangrijk aspect van &os;. Correcte instellingen helpen moeilijkheden bij toekomstige upgrades te voorkomen. In dit hoofdstuk wordt het instellen van &os; beschreven, alsmede een aantal prestatiebevorderende maatregelen waarmee een &os; systeem geoptimaliseerd kan worden. Na het lezen van dit hoofdstuk weet de lezer: Hoe efficiënt om te gaan met bestandssystemen en wisselpartities; De grondbeginselen van het rc.conf instellingensysteem en van het opstarten van toepassingen (diensten) met /usr/local/etc/rc.d; Hoe een netwerkkaart ingesteld en getest wordt; Hoe virtuele hosts op netwerkapparatuur ingesteld worden; Hoe de instellingenbestanden in /etc gebruikt worden; Hoe &os; geoptimaliseerd kan worden met sysctl-variabelen; Hoe schijfprestaties te verbeteren en hoe kernelbeperkingen gewijzigd kunnen worden. Veronderstelde voorkennis: De grondbeginselen van &unix; en &os; () begrijpen; Bekend zijn met de grondbeginselen van kernelinstellingen en compilatie (). Initiële instellingen Partitioneren partitioneren /etc /var /usr Basispartities Bij het aanmaken van bestandssystemen met &man.bsdlabel.8; of &man.sysinstall.8; is het van belang dat op een harde schijf de gegevensoverdracht het snelst is aan de buitenste sporen en het langzaamst aan de binnenste. Kleinere en veelgebruikte bestandssystemen kunnen daarom het beste aan de buitenkant van de schijf geplaatst worden, terwijl grotere partities als /usr meer naar de binnenkant van de schijf geplaatst kunnen worden. Het is een goed idee om partities aan te maken in deze of gelijksoortige volgorde: root, swap, /var, /usr. De grootte van de partitie /var hangt af van de wijze waarop de machine gebruikt gaat worden. Het bestandssysteem /var wordt gebruikt voor onder meer postbussen, logbestanden en printergegevens en -wachtrijen. Postbussen en logbestanden kunnen onverwacht groot worden, afhankelijk van het aantal systeemgebruikers en de bewaarduur van logbestanden. De meeste gebruikers zullen zelden meer dan ongeveer een gigabyte aan vrije schijfruimte op /var nodig hebben. Er zijn een aantal gevallen waar een grote hoeveelheid ruimte in /var/tmp nodig is. Wanneer er nieuwe software wordt geïnstalleerd met &man.pkg.add.1; pakken de pakketprogramma's een tijdelijke kopie van de pakketten uit in /var/tmp. Grote softwarepakketten, zoals Firefox, OpenOffice of LibreOffice kunnen lastig zijn om te installeren wanneer er onvoldoende vrije schijfruimte beschikbaar is onder /var/tmp. De partitie /usr bevat veel van de benodigde systeembestanden, waaronder de &man.ports.7; collectie (aanbevolen) en de broncode (optioneel). Beide zijn optioneel tijdens de installatie, maar we raden voor deze partitie tenminste 2 gigabyte aan. Het is verstandig rekening te houden met de vereiste schijfruimte bij het kiezen van partitiegroottes. Als in een partitie onvoldoende vrije schijfruimte is, terwijl een andere vrijwel niet gebruikt wordt, is dat een vervelend en niet optimaal oplosbaar probleem. &man.sysinstall.8;'s Auto-defaults partitiekeuze kan in de ervaring van sommige gebruikers mogelijk te kleine /var en / partities opleveren. Partitioneren moet verstandig en niet te zuinig gebeuren. Wisselpartities (swap) swap grootte wisselpartitie wisselpartitiegrootte De vuistregel is dat het wisselbestand ongeveer het dubbele van de grootte van het systeemgeheugen (RAM) moet zijn. Als de machine bijvoorbeeld 128 megabytes geheugen heeft, kan het beste een wisselbestand van (tenminste) 256 megabytes gebruikt worden. Minder dan 256 megabytes swap is in dit geval af te raden. Systemen met weinig geheugen kunnen overigens beter functioneren met meer swap. Ook is het verstandig rekening te houden met eventuele geheugenuitbreiding in de toekomst. Bovendien zijn de VM paging-algoritmen van de kernel zo afgestemd dat ze het beste presteren bij een wisselbestand van tenminste tweemaal de grootte van het geheugen. Een te kleine swap kan dus inefficiënties in de VM-code tot gevolg hebben en mogelijk problemen veroorzaken als het systeemgeheugen uitgebreid wordt. Op grotere systemen met meerdere SCSI-schijven (of meerdere IDE-schijven op verschillende controllers) is het aan te raden om op elke schijf een wisselpartitie in te stellen (dit kan tot en met vier schijven), elk met ongeveer dezelfde grootte. De kernel kan met arbitraire groottes werken, maar interne datastructuren schalen tot viermaal de grootste swappartitie. De kernel kan de beschikbare ruimte voor het wisselbestand het meest optimaal indelen als de partities ongeveer even groot zijn. Een grote swap is prima, ook als ze zelden gebruikt wordt. Zo kan het gemakkelijker zijn om een (uit de hand gelopen) proces dat het systeem grotendeels bezet houdt te beëindigen, voordat er opnieuw opgestart moet worden. Waarom partitioneren? Waarom niet één enkele grote partitie gebruiken? Er zijn verscheidene redenen waarom dit niet zo'n goed idee is. De verschillende partities hebben hun eigen karakteristieke operationele gedrag en vereisten. Door ze te scheiden zijn er betere mogelijkheden om het systeem te optimaliseren. Vanaf de / en /usr partities wordt bijvoorbeeld vooral gelezen en er wordt weinig naar geschreven, terwijl er in /var en /var/tmp zowel veel gelezen als geschreven wordt. Door een systeem goed te partitioneren wordt vermeden dat fragmentatie die optreedt in de kleinere partities met veel schrijfactiviteit doorsijpelt naar partities die vooral lees-intensief zijn. Door schrijf-intensieve partities aan het begin van de schijf te plaatsen, zijn de prestaties wat betreft invoer/uitvoer het beste daar waar het het meest nodig is. Ofschoon er natuurlijk ook de best mogelijke in/uit prestaties wenselijk zijn in de grotere partities, weegt het plaatsen van deze bestandssystemen aan het begin van de schijf niet tegen de voordelen van het plaatsen van /var aan het begin van de schijf (na root en swap) voor de totale snelheid van het systeem. Tenslotte zijn er veiligheidsoverwegingen. Een compacte en nette rootpartitie die vrijwel alleen-lezen is, heeft een betere kans om een nare crash te overleven. Hoofdinstellingen rc bestanden rc.conf De voornaamste lokatie voor systeeminstellingen is /etc/rc.conf. Dit bestand bevat een scala aan instellingen, die gebruikt wordt om het systeem in te stellen bij het opstarten. De naam impliceert dit al. Het is informatie voor de rc* bestanden (rc staat voor resource configuration of broninstellingen). De systeembeheerder wordt geacht regels toe te voegen aan rc.conf om de standaardinstellingen uit /etc/defaults/rc.conf aan te passen. Het standaardbestand moet niet letterlijk gekopiëerd worden naar /etc. Het bevat standaardwaardes en is niet bedoeld als voorbeeld. Alle wijzigingen die specifiek zijn voor een systeem horen in /etc/rc.conf thuis. In een clusterscenario is het nuttig om systeemspecifieke instellingen te scheiden van algemene instellingen die voor het hele cluster gelden. Hiervoor kunnen een aantal strategieën worden gebruikt. De aanbevolen benadering is om systeem-specifieke instellingen in /etc/rc.conf.local te plaatsen. Een voorbeeld: /etc/rc.conf: sshd_enable="YES" keyrate="fast" defaultrouter="10.1.1.254" /etc/rc.conf.local: - hostname="node1.voorbeeld.org" + hostname="node1.example.org" ifconfig_fxp0="inet 10.1.1.1/8" - rc.conf kan naar elk systeem + rc.conf kan vervolgens naar elk systeem gedistribueerd worden met rsync of een gelijksoortig programma, terwijl rc.conf.local uniek blijft. Het actualiseren van het systeem met &man.sysinstall.8; of make world overschrijft rc.conf niet, zodat de bestaande systeeminstellingen niet verloren gaan. Het instellingenbestand /etc/rc.conf wordt gelezen door &man.sh.1;. Dit stelt systeembeheerders in staat om een zekere hoeveelheid logica aan dit bestand toe te voegen, dat kan helpen in het creëren van zeer ingewikkelde configuratiescenario's. Bekijk &man.rc.conf.5; voor meer informatie over dit onderwerp. Toepassingen instellen Geïnstalleerde toepassingen hebben meestal hun eigen instellingenbestanden, met hun eigen syntaxis, etc. Het is van belang deze bestanden apart te houden van het basissysteem, zodat ze makkelijk gelokaliseerd kunnen worden en beheerd kunnen worden met de hulpmiddelen voor pakketbeheer. /usr/local/etc Deze bestanden worden meestal geïnstalleerd in /usr/local/etc. Als een toepassing een uitgebreide verzameling bestanden voor instellingen heeft, wordt er een submap voor aangemaakt. Bij de installatie van een port of pakket, worden normaliter ook voorbeeldbestanden met instellingen geïnstalleerd. Deze zijn doorgaans te herkennen aan een toevoegsel .default. Als er geen bestaande instellingenbestanden voor de toepassing zijn, kunnen ze gemaakt worden door de .default-bestanden te kopiëren. Een voorbeeld is de map /usr/local/etc/apache: -rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf -rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf.default -rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf -rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf.default -rw-r--r-- 1 root wheel 12205 May 20 1998 magic -rw-r--r-- 1 root wheel 12205 May 20 1998 magic.default -rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types -rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types.default -rw-r--r-- 1 root wheel 7980 May 20 1998 srm.conf -rw-r--r-- 1 root wheel 7933 May 20 1998 srm.conf.default Aan de grootte van de bestanden is te zien dat alleen srm.conf gewijzigd is. Als later de port Apache wordt vernieuwd, wordt dit bestand niet overschreven. Tom Rhodes Bijgedragen door Diensten starten diensten Veel gebruikers kiezen ervoor om software van derden te installeren op &os; vanuit de Portscollectie. In veel gevallen is het noodzakelijk om de software dusdanig in te stellen dat het opstart tijdens het opstarten van de computer. Diensten zoals mail/postfix of www/apache22 zijn slechts twee voorbeelden van softwarepakketten die gestart kunnen worden tijdens de systeemstart. In deze paragraaf wordt toegelicht hoe software van derde partijen kan worden gestart. In &os; worden de meeste diensten, zoals &man.cron.8;, door de opstartscripts van het systeem gestart. Deze scripts kunnen verschillen tussen &os; en leverancierversies, echter het meest belangrijke aspect om in gedachten te houden is dat hun opstartinstellingen verwerkt kunnen worden door simpele opstartscripts. Uitgebreide applicatieinstellingen Nu &os; rc.d heeft, zijn de instellingen van applicaties die mee moeten opstarten versimpeld en rijker aan mogelijkheden. Door gebruik te maken van de sleutelwoorden die in de paragraaf rc.d behandeld worden, kunnen applicaties nu starten na andere diensten. DNS kan bijvoorbeeld extra opties meekrijgen van /etc/rc.conf in plaats van hard ingestelde opties in het opstartscript. Een basisscript ziet er ongeveer als volgt uit: #!/bin/sh # # PROVIDE: utility # REQUIRE: DAEMON # KEYWORD: shutdown . /etc/rc.subr name=utility rcvar=utility_enable command="/usr/local/sbin/utility" load_rc_config $name # # VERANDER DE STANDAARDWAARDEN HIER NIET # STEL ZE IN HET BESTAND /etc/rc.conf IN # utility_enable=${utility_enable-"NO"} pidfile=${utility_pidfile-"/var/run/utility.pid"} run_rc_command "$1" Dit script zorgt ervoor dat utility wordt gestart na de pseudodienst DAEMON. Het biedt ook de mogelijkheid voor het instellingen en volgen van het PID of het proces-ID bestand. Voor deze applicatie kan dan de volgende regel in /etc/rc.conf geplaatst worden: utility_enable="YES" Deze methode maakt het volgende mogelijk: makkelijker commandoregelopties manipuleren, importeren van standaardfuncties uit /etc/rc.subr, compatibiliteit met het gereedschap &man.rcorder.8; en het levert makkelijkere configuratie via rc.conf. Diensten met diensten starten Andere diensten, zoals POP3-server daemons, IMAP, enzovoort, kunnen gestart worden door gebruik te maken van &man.inetd.8;. Daaraan is voorafgegaan dat die dienst uit de Portscollectie is geïstalleerd en dat er een regel met instellingen is toegevoegd aan /etc/inetd.conf of één van de bestaande niet-actieve regels is geactiveerd. Werken met inetd en zijn instellingen wordt uitgebreid toegelicht in de paragraaf over inetd. In sommige gevallen is het handiger om &man.cron.8; te gebruiken om diensten te starten. Deze aanpak heeft een aantal voordelen omdat cron start als de eigenaar van crontab. Dit stelt reguliere gebruikers in staat om sommige applicaties te starten en te onderhouden. cron levert een unieke optie: in plaats van een tijdsspecificatie kan @reboot gebruikt worden. Dit zorgt ervoor dat de taak gestart wordt als &man.cron.8; gestart wordt, meestal tijdens een systeemstart. Tom Rhodes Geschreven door <command>cron</command> instellen cron instellen Een zeer nuttig hulpprogramma in &os; is &man.cron.8;. De daemon cron draait op de achtergrond en controleert voortdurend /etc/crontab. Ook controleert cron de map /var/cron/tabs, op zoek naar nieuwe crontab bestanden. Deze crontab bestanden bevatten informatie over specifieke taken die cron moet verrichten op gezette tijden. cron gebruikt twee verschillende soorten instellingenbestanden: de systeemcrontab en gebruikerscrontabs. Deze formaten verschillen alleen in het zesde en verdere velden. In de systeemcrontab zal cron het commando draaien als de gebruiker die in het zesde veld is opgegeven. In een gebruikerscrontab draaien alle commando's onder de gebruiker die de crontab heeft aangemaakt, dus is het zesde veld het laatste veld; dit is een belangrijk beveiligingsaspect. Het laatste veld is altijd het commando dat gedraaid wordt. Gebruikerscrontabs geven individuele gebruikers de mogelijkheid om bepaalde terugkerende taken automatisch te laten uitvoeren zonder dat root-rechten noodig zijn. Commando's in de crontab van een gebruiker worden uitgevoerd met de rechten van de eigenaar. root kan ook een gebruikerscrontab aanleggen net als elke andere gebruiker. Dit is niet dezelfde als - /etc/crontab (de systeemcrontab). Omdat de + /etc/crontab, de systeemcrontab. Omdat de systeemcrontab in de praktijk de commando's als root uitvoert, is het doorgaans niet nodig om een gebruikerscrontab voor root te maken. /etc/crontab (de systeemcrontab) ziet er uit als volgt: # /etc/crontab - root's crontab for &os; # # $&os;: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $ # # SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/var/log # # #minuut uur mdag maand wdag wie commando # # */5 * * * * root /usr/libexec/atrun - Zoals in de meeste &os; instellingenbestanden gaat het - karakter # vooraf aan commentaar. + Zoals in de meeste instellingenbestanden van &os; zijn regels die + met het karakter # beginnen commentaar. Commentaar wordt gebruikt als uitleg en geheugensteun. Commentaar dient niet vermengd te worden met commando's, anders wordt het commentaar opgevat als deel van het commando. Blanco regels worden genegeerd. Eerst worden omgevingsvariabelen gedefiniëerd. Hoervoor wordt het is-gelijk karakter (=) gebruikt. In het bovenstaande voorbeeld wordt het gebruikt voor de variabelen SHELL, PATH en HOME. Als de regel SHELL ontbreekt, gebruikt cron standaard sh als shell. Voor de omgevingsvariabele PATH bestaat geen standaardwaarde. Als PATH ontbreekt moeten absolute paden gebruikt worden. Als HOME ontbreekt, gebruikt cron de thuismap van de gebruiker die cron aanroept. In deze commentaarregel staan de zeven velden van een crontabdefinitie. Dit zijn minuut, uur, mdag, maand, wdag, wie en commando. De betekenissen liggen voor de hand: minuut is het aantal minuten van het tijdstip waarop het commando moet worden uitgevoerd; uur geeft het uur aan; mdag staat voor de dag van de maand; maand staat voor het maandnummer en wdag geeft de dag van de week aan. Het veld wie is bijzonder en bestaat alleen in /etc/crontab. Het geeft aan als welke gebruiker het commando uitgevoerd moet worden. Het laatste veld bevat het uit te voeren commando. In deze regel worden aan de hierboven besproken opties waarden toegekend. Er wordt gebruik gemaakt van */5 en * karakters. Deze betekenen eerst-laatst en kunnen gezien worden als telkens. In deze regel staat dus dat atrun elke vijf minuten moet worden uitgevoerd door root, ongeacht welke dag of maand het is. Meer informatie over atrun staat in &man.atrun.8;. Commando's kunnen een willekeurig aantal opties of argumenten meekrijgen. Als commando's echter meerdere regels nodig hebben moeten deze regels afgebroken worden met een backslash \ karakter, om aan te geven dat ze op de volgende regel vervolgd worden. Dit is de basisopzet voor elk crontab bestand. De enige uitzondering is de aanwezigheid van veld zes, waar de gebruikersnaam wordt aangegeven. Dit veld bestaat alleen in de systeemversie van /etc/crontab. Voor crontab-bestanden van individuele gebruikers moet dit veld worden weggelaten. Een crontab installeren De onderstaande procedure moet niet gebruikt worden om de systeemcrontab /etc/crontab te wijzigen of te installeren. Er kan een gewone editor gebruikt worden. cron ziet dat het bestand veranderd is en begint direct met het gebruiken van de nieuwe versie. Deze FAQ vraag geeft verdere uitleg. Om een nieuwe crontab te installeren moet eerst een bestand in het juiste formaat gemaakt worden en daarna moet het geiuml;nstalleerd worden met commando crontab: &prompt.root; crontab crontabbestand In dit voorbeeld is crontabbestand de naam van een eerder gemaakt crontab-bestand. Er bestaat ook een optie om een lijst van geïnstalleerde crontab-bestanden op te vragen, namelijk de optie van crontab. Gebruikers die hun eigen crontabbestand willen schrijven zonder het gebruik van een sjabloon, kunnen gebruik maken van crontab -e. Dit opent de EDITOR met een leeg bestand. Als het bestand wordt opgeslagen en de editor wordt afgesloten, wordt het bestand automatisch als crontab geïnstalleerd. Een gebruikerscrontab kan verwijderd worden door de met crontab de optie te gebruiken. Tom Rhodes Geschreven door Gebruik van rc met &os; rc.d Sinds 2002 gebruikt &os; het NetBSD rc.d systeem bij het opstarten van het systeem. Veel van de bestanden in /etc/rc.d zijn scripts voor basisdiensten die werken met de opties , en , analoog aan hoe diensten die via een port of pakket zijn geïnstalleerd gestart worden met de scripts in /usr/local/etc/rc.d. &man.sshd.8; kan bijvoorbeeld als volgt herstart worden: &prompt.root; /etc/rc.d/sshd restart Deze procedure is vrijwel gelijk voor andere diensten. Uiteraard worden diensten meestal automatisch tijdens het opstarten van de computer gestart zoals in &man.rc.conf.5; staat. Om de Network Address Translation daemon bij het opstarten te laten starten is de volgende regel in /etc/rc.conf bijvoorbeeld voldoende: natd_enable="YES" Als er reeds een natd_enable="NO" regel is, kan NO gewoon in YES veranderd worden. De rc scripts starten, voor zover nodig, automatisch andere afhankelijke diensten. Omdat het rc.d systeem in eerste instantie bedoeld is om diensten te starten en stoppen bij het opstarten en afsluiten van het systeem, werken de standaardopties , en alleen als de juiste variabelen in /etc/rc.conf zijn ingesteld. Het commando sshd restart alleen dan als sshd_enable de waarde YES heeft in /etc/rc.conf. Als er een dienst gestart, gestopt of herstart moet worden, ongeacht de definities in /etc/rc.conf, moet het commando voorafgegaan worden door one. Dus om sshd te herstarten ongeacht de instellingen in /etc/rc.conf, voldoet het volgende commando: &prompt.root; /etc/rc.d/sshd onerestart Het is eenvoudig te controleren of een dienst is ingeschakeld is in /etc/rc.conf door het bijpassende rc.d-script uit te voeren met de optie . Voor sshd: &prompt.root; /etc/rc.d/sshd rcvar # sshd $sshd_enable=YES De tweede regel (# sshd) is de uitvoer van sshd, geen root-console. De optie wordt gebruikt om vast te stellen of een dienst gestart is. Om bijvoorbeeld te controleren of sshd gestart is: &prompt.root; /etc/rc.d/sshd status sshd is running as pid 433. In sommige gevallen is het ook mogelijk om een dienst te herstarten met de optie . Dan wordt er getracht een signaal te sturen aan een individuele dienst, waarbij de dienst de bestanden met instellingen opnieuw in moet lezen. Meestal komt dit neer op het verzenden van het signaal SIGHUP. Deze optie wordt niet door alle diensten ondersteund. Het rc.d-systeem wordt niet alleen gebruikt voor netwerkdiensten, maar ook voor het merendeel van de systeemstart. In dit kader is bijvoorbeeld het bestand bgfsck interessant. Als dit script wordt uitgevoerd, wordt de volgende boodschap getoond: Starting background file system checks in 60 seconds. Dit script wordt dus gebruikt voor bestandssysteemcontrole in de achtergrond, hetgeen alleen tijdens de systeemstart gebeurt. Veel systeemdiensten zijn afhankelijk van andere diensten om correct te kunnen functioneren. Zo starten NIS en andere RPC-gebaseerde diensten niet als de dienst rpcbind (portmapper) nog niet draait. Om dit te stroomlijnen wordt informatie over afhankelijkheden en andere metagegevens ingevoegd in het commentaar bovenaan het opstartscript. Deze commentaarregels worden vervolgens tijdens de systeemstart met &man.rcorder.8; verwerkt om zo vast te stellen in welke volgorde de systeemdiensten gestart moeten worden. De volgende woorden moeten in alle opstartscripts staan (ze zijn benodigd door &man.rc.subr.8; om het opstartscript te activeren): PROVIDE: geeft aan in welke diensten dit bestand voorziet. REQUIRE: geeft aan welke andere diensten vereist zijn voor deze dienst. Dit script wordt uitgevoerd na de aangegeven diensten. BEFORE: geeft diensten aan die afhankelijk zijn van deze dienst. Dit bestand wordt uitgevoerd vóór de aangegeven diensten. Met deze methode kan een systeembeheerder gemakkelijk systeemdiensten besturen, zonder gedoe met runlevels zoals bij sommige andere &unix; systemen. Meer informatie over het rc.d-systeem staat in &man.rc.8; en &man.rc.subr.8;. Als u geïnteresseerd bent in het schrijven van uw eigen rc.d-script of om de huidige scripts te verbeteren is wellicht dit artikel interessant. Marc Fonvieille Geschreven door Netwerkkaarten instellen netwerkkaarten instellen Het is tegenwoordig nauwelijks voorstelbaar dat een computer geen netwerkverbinding heeft. Het toevoegen en instellen van een netwerkkaart is een gebruikelijke taak voor een &os;-beheerder. Het juiste stuurprogramma vinden netwerkkaarten stuurprogramma Voor het zoeken begint, moet duidelijk zijn om welke kaart het gaat, welke chip erop zit en of het een PCI- of ISA-kaart is. &os; ondersteunt vele kaarten. Op de Hardware Compatibiliteitslijst voor de betreffende uitgave staan de kaarten die ondersteund worden. Als duidelijk is dat een kaart ondersteund wordt, moet vastgesteld worden wat het geschikte stuurprogramma is. In het bestand /usr/src/sys/conf/NOTES staat een lijst van stuurprogramma's voor netwerkinterfaces met wat informatie over de ondersteunde chipsets of kaarten. In geval van twijfel biedt de hulppagina voor het stuurprogramma (man) vaak uitkomst. In het algemeen bevat deze meer informatie over de ondersteunde hardware en mogelijke problemen die kunnen optreden. Als een veelgebruikte kaart gebruikt wordt, hoeft meestal niet ver gezocht te worden. Stuurprogramma's voor veelvoorkomende netwerkinterfaces zijn al aanwezig in de algemene kernel GENERIC. In dat geval wordt zo'n kaart al gevonden bij het opstarten, bijvoorbeeld met het volgende bericht: dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38 000ff irq 15 at device 11.0 on pci0 miibus0: <MII bus> on dc0 bmtphy0: <BCM5201 10/100baseTX PHY> PHY 1 on miibus0 bmtphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto dc0: Ethernet address: 00:a0:cc:da:da:da dc0: [ITHREAD] dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30 000ff irq 11 at device 12.0 on pci0 miibus1: <MII bus> on dc1 bmtphy1: <BCM5201 10/100baseTX PHY> PHY 1 on miibus1 bmtphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto dc1: Ethernet address: 00:a0:cc:da:da:db dc1: [ITHREAD] In dit voorbeeld zitten er twee kaarten in het systeem die het stuurprogramma &man.dc.4; gebruiken. Als het stuurprogramma voor een NIC geen onderdeel is van de kernel GENERIC, dan dient het juiste stuurprogramma voor die NIC geladen te worden. Dit kan op twee manieren: De meest eenvoudige manier is het laden van een kernelmodule voor een netwerkkaart met &man.kldload.8; of automatisch tijdens het opstarten van het systeem door de benodigde regel toe te voegen aan /boot/loader.conf. Niet alle NIC-stuurprogramma's zijn als module beschikbaar. Zo zijn er bijvoorbeeld geen modules beschikbaar voor ISA-kaarten. Ondersteuning voor een kaart kan ook in de kernel gecompileerd worden. In /usr/src/sys/conf/NOTES, /usr/src/sys/arch/conf/NOTES en de hulppagina van het stuurprogramma is na te lezen wat er in het kernelinstellingenbestand moet staan. In staat meer informatie over het compileren van een eigen kernel. Als een netwerkkaart al bij het opstarten wordt herkend door de kernel GENERIC, is er geen reden om een andere kernel te bouwen. Gebruik maken van &windows; NDIS-stuurprogramma's NDIS NDISulator &windows; drivers Microsoft Windows Microsoft Windows device drivers KLD (kernel loadable object) Helaas zijn er nog steeds veel leveranciers die geen schema's leveren voor stuurprogramma's aan de open-source gemeenschap, omdat ze deze informatie beschouwen als handelsgeheimen. Als gevolg daarvan hebben de ontwikkelaars van &os; en andere projecten twee keuzes: zelf de stuurprogramma's ontwikkelen door een langdurig en pijnlijk proces van de huidige stuurprogramma's te ontcijferen, of door gebruik te maken van de huidige binaire bestanden voor het µsoft.windows; platform. De meeste ontwikkelaars, inclusief diegeen die gekoppeld zijn aan &os;, hebben voor het laatste gekozen. Dankzij de bijdragen van Bill Paul (wpaul) is er native ondersteuning voor de Network Driver Interface Specification (NDIS). De &os; NDISulator (ook wel bekend als Project Evil) neemt een binair &windows; stuurprogramma en doet net alsof deze in een &windows; systeem draait. Omdat het stuurprogramma &man.ndis.4; een &windows; binary gebruikt; draait het alleen op &i386;- en amd64-systemen. PCI, CardBus, PCMCIA (PC-Card) en USB-apparaten worden ondersteund. Om de NDISulator te gebruiken zijn drie dingen nodig: De bronbestanden van de kernel Een &windowsxp; stuurprogramma (met de extensie .SYS) Een instellingenbestand van het &windowsxp; stuurprogramma (met de extensie .INF) Lokaliseer de bestanden voor uw specifieke kaart. Over het algemeen kunnen deze gevonden worden op de bijgeleverde CD's of op de website van de leverancier. In de volgende voorbeelden maken we gebruik van W32DRIVER.SYS en W32DRIVER.INF. De bit-breedte van het stuurprogramma moet overeenkomen met die van het stuurprogramma. Gebruik voor &os;/i386 een 32-bits &windows; stuurprogramma. Voor &os;/amd64 is een 64-bits &windows; stuurprogramma nodig. De volgende stap is het compileren van het binaire stuurprogramma in een laadbare kernelmodule. Gebruik &man.ndisgen.8; als root: &prompt.root; ndisgen /pad/naar/W32DRIVER.INF /pad/naar/W32DRIVER.SYS &man.ndisgen.8; is interactief en vraagt om extra informatie als het dat nodig heeft. Een nieuwe kernel-module wordt in de huidige map geschreven. Gebruik &man.kldload.8; om de nieuwe module te laden: &prompt.root; kldload ./W32DRIVER_SYS.ko Naast de gegenereerde kernelmodule, moeten ook de modules ndis.ko en if_ndis.ko geladen worden. Dit zou automatisch moeten gebeuren als er een module geladen wordt dit afhankelijk is van &man.ndis.4;. Als ze handmatig ingeladen moeten worden gebruik dan de volgende commando's: &prompt.root; kldload ndis &prompt.root; kldload if_ndis Het eerste commando laadt de stuurprogrammawrapper voor de NDIS miniport, de tweede laadt de daadwerkelijke netwerkinterface. Controleer nu &man.dmesg.8; om te zien of er ergens fouten voorkomen. Als alles goed gegaan is ziet u ongeveer het volgende: ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1 ndis0: NDIS API version: 5.0 ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5 ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps Vanaf dit moment kan de ndis0 net zo gebruikt worden als elke andere netwerkkaart (bv. dc0). Het systeem kan geconfigureerd worden zodat de NDIS-modules automatisch gestart worden tijdens het opstarten van het systeem, net zoals bij andere modules. Kopieer eerst de gegenereerde module W32DRIVER_SYS.ko naar de map /boot/modules. Voeg daarna de volgende regel toe aan /boot/loader.conf: W32DRIVER_SYS_load="YES" De netwerkkaart instellen netwerkkaarten instellen Nadat een geschikt stuurprogramma geladen is, moet de kaart nog ingesteld worden. Mogelijk is dit al gebeurd door sysinstall tijdens de installatie. Om de instellen van de netwerkkaarten weer te geven: &prompt.user; ifconfig dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> ether 00:a0:cc:da:da:da inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255 media: Ethernet autoselect (100baseTX <full-duplex>) status: active dc1: flags=8802<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> ether 00:a0:cc:da:da:db inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255 media: Ethernet 10baseT/UTP status: no carrier plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=3<RXCSUM,TXCSUM> inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4 inet6 ::1 prefixlen 128 nd6 options=3<PERFORMNUD,ACCEPT_RTADV> In dit voorbeeld werden de volgende apparaten weergegeven: dc0: de eerste Ethernet-interface; dc1: de tweede Ethernet-interface; plip0: De parallele poort-interface (mits er een parallele poort aanwezig is op de machine) lo0: het loopback-apparaat; &os; gebruikt de naam van het stuurprogramma gevolgd door een nummer voor de volgorde waarop de kaarten gedetecteerd zijn bij het opstarten. sis2 is de derde netwerkkaart in het systeem die het stuurprogramma &man.sis.4; gebruikt. In het vorige voorbeeld is het apparaat dc0 volledig operationeel. Dit blijkt uit de volgende indicatoren: UP betekent dat de kaart ingesteld is en klaar is voor gebruik; De kaart heeft een Internet (inet) adres (in dit geval 192.168.1.3); Het heeft een geldig subnetmasker (netmask; 0xffffff00 is hetzelfde als 255.255.255.0); Het heeft een geldig broadcastadres (in dit geval 192.168.1.255); Het MAC-adres van de kaart (ether) is 00:a0:cc:da:da:da; De fysieke mediaselectie staat in autoselectiemodus (media: Ethernet autoselect (100baseTX <full-duplex>)). dc1 is ingesteld om met 10baseT/UTP-media te werken. Meer informatie over de mogelijke mediatypes staan in de hulppagina's voor het betreffende stuurprogramma. De status van de verbinding (status) is active, dat wil zeggen dat de drager is gevonden. Bij dc1staat echter status: no carrier. Dit is normaal als er geen Ethernetkabel in de kaart gestoken is. Als de uitvoer &man.ifconfig.8; er ongeveer zoals hieronder uitziet, dan is de netwerkkaart nog niet ingesteld: dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> ether 00:a0:cc:da:da:da media: Ethernet autoselect (100baseTX <full-duplex>) status: active Om de kaart in te stellen zijn root-rechten nodig. De netwerkkaart kan vanaf de console worden ingesteld met &man.ifconfig.8;, maar dan moet dat na elke herstart herhaald worden. Daarom wordt het vrijwel altijd in /etc/rc.conf gezet. In /etc/rc.conf moet voor elke netwerkkaart in een systeem een regel toegevoegd worden. In het huidige voorbeeld zou dat het volgende kunnen zijn: ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0" ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP" dc0, dc1, enzovoort, moeten vervangen worden door de correcte stuurprogramma's voor de netwerkkaarten, zo ook de IP-adressen. In de handleiding van het stuurprogramma en van &man.ifconfig.8; staan meer details over de mogelijke opties en in &man.rc.conf.5; staat meer informatie over /etc/rc.conf. Als het netwerk al is ingesteld tijdens het installeren van &os; staan er al enkele regels met betrekking tot de netwerkkaart(en) in /etc/rc.conf. Het is dus handig /etc/rc.conf te controleren voordat er regels toegevoegd worden. Ook /etc/hosts moet worden gewijzigd om de namen en IP adressen van verschillende machines op het lokale netwerk, als ze er nog niet in staan. Meer informatie staat in &man.hosts.5; en /usr/share/examples/etc/hosts. Als internettoegang nodig is met dit apparaat, kan het zijn dat de default gateway en de naamserver handmatig moeten worden ingesteld: &prompt.root; echo 'defaultrouter="your_default_router"' >> /etc/rc.conf &prompt.root; echo 'nameserver your_DNS_server' >> /etc/resolv.conf Testen en problemen oplossen Als de veranderingen in /etc/rc.conf zijn gemaakt, moet het systeem opnieuw gestarten worden (of moeten nauwkeurig alle daemons gestart of herstart worden). Veranderingen aan de interface(s) worden dan toegepast en dan kan er controleerd worden of herstarten goed werkt zonder foutmeldingen. Als alternatief kan ook het netwerk systeem herstart worden: &prompt.root; /etc/rc.d/netif restart Als er ook een default gateway ingesteld is in het /etc/rc.conf bestand, moet ook onderstaand command worden gegeven: &prompt.root; /etc/rc.d/routing restart Zodra het netwerk systeem is herstart, moeten de netwerk interfaces opnieuw getest worden. Testen van de netwerkkaart netwerk kaarten testen Om te controleren of een ethernet kaart goed geconfigureerd is, moeten er twee dingen gedaan worden. Allereerst, ping de interface zelf, en daarna een andere machine op het LAN. Test eerst de lokale interface: &prompt.user; ping -c5 192.168.1.3 PING 192.168.1.3 (192.168.1.3): 56 data bytes 64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms 64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms 64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms 64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms 64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms --- 192.168.1.3 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms Nu kan er een andere machine op het LAN gepinged worden: &prompt.user; ping -c5 192.168.1.2 PING 192.168.1.2 (192.168.1.2): 56 data bytes 64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms 64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms --- 192.168.1.2 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms Dit kan ook worden geprobeerd met de machine naam in plaats van met 192.168.1.2 als dit geconfigureerd is in /etc/hosts. Problemen oplossen netwerk kaarten probleem oplossing Het testen en zoeken van problemen is altijd een pijnpunt, welke verminderd kan worden door een aantal simpele dingen eerst te controleren. Is de netwerkkabel ingestoken? Zijn de netwerk instellingen correct opgegeven? Is de firewall goed geconfigureerd? Is de netwerkkaart ondersteund door &os;? Controleer altijd de hardware notities voordat er een probleem rapport wordt verstuurd. Update naar de laatste -STABLE versie, en controleer de mailing lijsten en misschien zelfs het internet. Als de kaart werkt, maar de prestaties zijn slecht, dan kan het de moeite waard zijn om &man.tuning.7; door te nemen. Incorrecte netwerkinstellingen kunnen ook tot langzame verbindingen leiden. Soms kunnen enkele device timeouts optreden. Met sommige kaarten is dit normaal gedrag. Maar als dit continu gebeurt of storend is, is het verstandig uit te zoeken of er geen sprake is van een hardwareconfict tussen de netwerkkaart en een ander apparaat. Ook dient nogmaals de bekabeling gecontroleerd te worden. Misschien zit er niets anders op dan een andere netwerkkaart te gebruiken. Het is ook mogelijk dat er watchdog timeout foutmeldingen optreden. Als eerste moet dan de netwerkkabel gecontroleerd worden. Veel kaarten hebben een PCI-slot nodig dat Bus Mastering ondersteunt. Sommige oudere moederborden hebben maar één PCI-slot waarmee dit kan (meestal slot 0). In de documentatie van de netwerkkaart en het moederbord is na te gaan of dit het probleem is. No route to host meldingen treden op als het systeem niet in staat is om een pakket naar de eindbestemming te routeren. Dit kan gebeuren als er geen standaardroute aangegeven is of als er een kabel niet verbonden is. De uitvoer van netstat -rn moet gecontroleerd worden of er een geldige route is naar de bestemming. Mocht dit niet het geval zijn, dan staat er meer informatie in . ping: sendto: Permission denied foutmeldingen worden vaak veroorzaakt door een verkeerd ingestelde firewall. Als de kernel ipfw activeert bij het opstarten zonder dat er firewallregels zijn gedefiniëerd, is het standaardbeleid om alle verkeer te weigeren, zelfs pings! In staat meer informatie. Er kan ook sprake zijn van onvoldoende prestaties doordat de instelling van de mediaselectie niet optimaal is. In dergelijke gevallen is het mogelijk om de mediaselectie niet als autoselect in te stellen, maar expliciet aan te geven wat de mediaselectie moet zijn, bijvoorbeeld 10baseT/UTP voor twisted pair. Hoewel dit voor de meeste hardware helpt, kan het zijn dat de problemen blijven. Dan moeten nogmaals de netwerkinstellingen gecontroleerd worden en geeft de &man.tuning.7; handleiding wellicht meer informatie. Virtuele hosts virtuele hosts IP-aliassen &os; wordt veel gebruikt voor virtuele sitehosting, waarbij één fysieke server er op het netwerk uitziet alsof het meerdere servers zijn. Dit kan bereikt worden door meerdere IP-adressen toe te kennen aan dezelfde interface. Een bepaalde netwerkinterface heeft een echt adres en kan daarnaast een willekeurig aantal alias-adressen hebben. Normaliter worden dergelijke aliassen toegevoegd door aliasregels toe te voegen aan /etc/rc.conf. Een aliasregel voor de interface fxp0 ziet er zo uit: ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx" De aliasregels moeten beginnen met alias0 en moete elkaar dan opvolgen (bijvoorbeeld _alias1,, _alias2, enzovoort). Het instelproces stopt als er een nummer ontbreekt. Het is belangrijk dat aliassen het juiste netmasker hebben. Dit is eenvoudig: Een bepaalde interface moet altijd één adres hebben dat het netmasker van het netwerk correct representeert. Elk ander adres binnen dit netwerk op deze interface (alias) moet een netmasker van allemaal 1'en (bits) hebben (getoond als 255.255.255.255 of 0xffffffff). Een voorbeeld. Stel de interface fxp0 is verbonden met twee netwerken, het netwerk 10.1.1.0 met masker 255.255.255.0 en het netwerk 202.0.75.16 met netmasker 255.255.255.240. Het systeem moet ook de adressen 10.1.1.1 tot en met 10.1.1.5 en 202.0.75.17 tot en met 202.0.75.20 krijgen. Zoals hierboven vermeld, heeft alleen het eerste adres in een netwerkreeks (in dit geval 10.0.1.1 en 202.0.75.17) een geldig netmasker. Alle overige (10.1.1.2 tot en met 10.1.1.5 en 202.0.75.18 tot en met 202.0.75.20) moeten ingesteld worden met het netmasker 255.255.255.255. De volgende regels voor /etc/rc.conf stellen een adapter in voor het bovenstaande scenario: ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0" ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255" ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255" ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255" ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255" ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240" ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255" ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255" ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255" Niclas Zeising Bijgedragen door De systeemlogger <application>syslogd</application> configureren systeemlogging syslog syslogd Systeemlogging is een belangrijk aspect van systeembeheer. Het wordt zowel gebruikt voor het opsporen van hardware-problemen als voor software-problemen in het systeem. Het speelt ook zeer belangrijke rol bij het controleren van de beveiliging en het reageren op incidenten. Systeem-daemons die niet in een terminal beheerd worden, loggen gewoonlijk informatie naar een systeemlogfaciliteit of een ander logbestand. Deze sectie beschrijft hoe de &os; systeemlogger, &man.syslogd.8;, te configureren en te gebruiken, en behandelt logrotatie en logbeheer met &man.newsyslog.8;. De focus ligt bij het opzetten en gebruiken van syslogd op een lokale machine. Meer geavanceerdere opstellingen die een aparte loghost gebruiken staan in . <application>syslogd</application> gebruiken In de standaardconfiguratie van &os; wordt &man.syslogd.8; gestart tijdens het opstarten. Dit wordt bepaald door de variabele syslogd_enable in /etc/rc.conf. Er zijn vele toepassingsargumenten die het gedrag van &man.syslogd.8; beïnvloeden. Gebruik syslogd_flags in /etc/rc.conf om ze te veranderen. Bekijk &man.syslogd.8; voor meer informatie over de argumenten, en &man.rc.conf.5;, en voor meer informatie over /etc/rc.conf en het deelsysteem &man.rc.8;. <application>syslogd</application> configureren syslog.conf Het configuratiebestand, standaard /etc/syslog.conf, bepaalt wat &man.syslogd.8; doet met de logregels nadat ze eenmaal ontvangen zijn. Er zijn verschillende parameters om de afhandeling van binnenkomende gebeurtenissen te beheren, waarvan de twee basaalste faciliteit en niveau zijn. De faciliteit beschrijft welk deelsysteem het bericht genereerde, zoals de kernel of een daemon, het niveau beschrijft de ernst van de opgetreden gebeurtenis. Dit maakt het mogelijk om het bericht naar verschillende logbestanden te loggen, of het weg te gooien, afhankelijk van de faciliteit en het niveau. Het is ook mogelijk om actie te nemen afhankelijk van de toepassing dat het bericht verstuurde, en in het geval van loggen op afstand, ook de hostnaam van de machine dat het logbericht genereerde. Het configureren van &man.syslogd.8; is vrij rechttoe-rechtaan. Het configuratiebestand bevat één regel per actie, de syntaxis van elke regel is een selecteerderveld gevolgd door een actieveld. De syntaxis van het selecteerderveld is faciliteit.niveau dat overeenkomt met logberichten van faciliteit op niveau niveau of hoger. Het is ook mogelijk om een optionele vergelijkingsvlag voor het niveau toe te voegen om meer precies te specificeren wat er gelogd wordt. Er kunnen meerdere selecteerdervelden worden gebruikt voor dezelfde actie, ze worden gescheiden door een puntkomma (;). Het gebruik van * zal met alles overeenkomen. Het actieveld bepaalt waar het logbericht naar toe wordt gezonden, zoals een bestand of een loghost op afstand. Als voorbeeld is hier de standaard syslog.conf van &os;: # $&os;$ # # Spaces ARE valid field separators in this file. However, # other *nix-like systems still insist on using tabs as field # separators. If you are sharing this file between systems, you # may want to use only tabs as field separators here. # Consult the &man.syslog.conf.5; manpage. *.err;kern.warning;auth.notice;mail.crit /dev/console *.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages security.* /var/log/security auth.info;authpriv.info /var/log/auth.log mail.info /var/log/maillog lpr.info /var/log/lpd-errs ftp.info /var/log/xferlog cron.* /var/log/cron *.=debug /var/log/debug.log *.emerg * # uncomment this to log all writes to /dev/console to /var/log/console.log #console.info /var/log/console.log # uncomment this to enable logging of all log messages to /var/log/all.log # touch /var/log/all.log and chmod it to mode 600 before it will work #*.* /var/log/all.log # uncomment this to enable logging to a remote loghost named loghost #*.* @loghost # uncomment these if you're running inn # news.crit /var/log/news/news.crit # news.err /var/log/news/news.err # news.notice /var/log/news/news.notice !ppp *.* /var/log/ppp.log !* Komt overeen met alle berichten met een err of hoger, alsook met kern.warning, auth.notice en mail.crit, en stuur deze logberichten naar de console ( /dev/console). Komt overeen met alle berichten van de faciliteit mail op niveau info of hoger, en logt de berichten in /var/log/maillog. Deze regel gebruikt een vergelijkingsvlag, = om alleen met de berichten op niveau debug overeen te komen en ze op te slaan in /var/log/debug.log. Hier volgt een gebruiksvoorbeeld van een programmaspecificatie. Dit zorgt ervoor dat de regels alleen geldig zijn voor het programma in de programmaspecificatie. In dit geval zorgen deze en de volgende regel ervoor dat alle berichten van ppp, maar niet van andere programma's, in /var/log/ppp.log terechtkomen. Dit voorbeeld toont dat er vele niveaus en deelsystemen zijn. De niveaus zijn, in volgorde van meest naar minst kritisch: emerg, alert, crit, err, warning, notice, info en debug. De faciliteiten zijn, in geen specifieke volgorde: auth, authpriv, console, cron, daemon, ftp, kern, lpr, mail, mark, news, security, syslog, user, uucp en local0 tot en met local7. Let erop dat andere besturingssystemen andere faciliteiten kunnen hebben. Met deze kennis is het eenvoudig om een nieuwe regel aan /etc/syslog.conf toe te voegen om alles van de verschillende daemons op niveau notice en hoger naar /var/log/daemon.log te loggen: daemon.notice /var/log/daemon.log Bekijk &man.syslog.3; en &man.syslogd.8; voor meer informatie over de verschillende niveaus en faciliteiten. Zie &man.syslog.conf.5; en voor meer informatie over syslog.conf, de syntaxis, en geavanceerdere gebruiksvoorbeelden. Logbeheer en -rotatie met <application>newsyslog</application> newsyslog newsyslog.conf logrotatie logbeheer Logbestanden hebben de neiging om snel te groeien en gestadig opgehoopt te raken. Dit leidt tot bestanden die vol zitten met minder direct bruikbare informatie en de harde schijf volmaken. Logbeheer kan gebruikt worden om dit te beheersen. In &os; wordt &man.newsyslog.8; gebruikt om logbestanden te beheren. Dit programma wordt gebruikt om periodiek logbestanden te roteren en te comprimeren en om optioneel ontbrekende logbestanden aan te maken en programma's te signaleren dat logbestanden zijn verplaatst. De logbestanden hoeven niet per sé van syslog afkomstig te zijn; &man.newsyslog.8; werkt met elke log van elk programma. Het is belangrijk om op te merken dat newsyslog normaliter vanuit &man.cron.8; wordt gedraaid en niet een systeem-daemon is. In de standaardconfiguratie wordt het elk uur gedraaid. <application>newsyslog</application> configureren Om te weten wat het moet doen leest &man.newsyslog.8; zijn configuratiebestand, standaard is dit /etc/newsyslog.conf. Dit configuratiebestand bevat één regel voor elk bestand dat &man.newsyslog.8; beheert. Elke regel noemt de eigenaar van het bestand, rechten, en wanneer dat bestand te roteren, alsook optionele vlaggen die de logrotatie beïnvloeden (zoals compressie) en naar welke programma's een signaal te sturen wanner de log is geroteerd. Als voorbeeld is hier de standaard configuratie in &os;: # configuration file for newsyslog # $&os;$ # # Entries which do not specify the '/pid_file' field will cause the # syslogd process to be signalled when that log file is rotated. This # action is only appropriate for log files which are written to by the # syslogd process (ie, files listed in /etc/syslog.conf). If there # is no process which needs to be signalled when a given log file is # rotated, then the entry for that file should include the 'N' flag. # # The 'flags' field is one or more of the letters: BCDGJNUXZ or a '-'. # # Note: some sites will want to select more restrictive protections than the # defaults. In particular, it may be desirable to switch many of the 644 # entries to 640 or 600. For example, some sites will consider the # contents of maillog, messages, and lpd-errs to be confidential. In the # future, these defaults may change to more conservative ones. # # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/all.log 600 7 * @T00 J /var/log/amd.log 644 7 100 * J /var/log/auth.log 600 7 100 @0101T JC /var/log/console.log 600 5 100 * J /var/log/cron 600 3 100 * JC /var/log/daily.log 640 7 * @T00 JN /var/log/debug.log 600 7 100 * JC /var/log/init.log 644 3 100 * J /var/log/kerberos.log 600 7 100 * J /var/log/lpd-errs 644 7 100 * JC /var/log/maillog 640 7 * @T00 JC /var/log/messages 644 5 100 @0101T JC /var/log/monthly.log 640 12 * $M1D0 JN /var/log/pflog 600 3 100 * JB /var/run/pflogd.pid /var/log/ppp.log root:network 640 3 100 * JC /var/log/security 600 10 100 * JC /var/log/sendmail.st 640 10 * 168 B /var/log/utx.log 644 3 * @01T05 B /var/log/weekly.log 640 5 1 $W6D0 JN /var/log/xferlog 600 7 100 * JC Elke regel begint met de naam van het bestand dat geroteerd moet worden, optioneel gevolgd door een eigenaar en groep voor zowel de geroteerde als nieuw aangemaakte bestanden. Het volgende veld, mode is de modus van de bestanden en count geeft aan hoeveel geroteerde logbestanden bewaard moeten worden. De velden size en when vertellen newyslog wanneer het bestand geroteerd moet worden. Een logbestand wordt geroteerd wanneer òfwel de grootte meer is dan de waarde in het veld size, òfwel wanneer de tijd in het veld when is verstreken. * geeft aan dat dit veld genegeerd wordt. Het veld flags geeft &man.newsyslog.8; verdere instructies, zoals hoe het geroteerde bestand te comprimeren of om het logbestand aan te maken als het ontbreekt. De laatste twee velden zijn optioneel en specificeren het PID-bestand van een proces en een naar dat proces te verzenden signaalnummer wanneer het bestand wordt geroteerd. Raadpleeg &man.newsyslog.conf.5; voor meer informatie over alle velden, geldige vlaggen en hoe de rotatietijd te specificeren. Herinner dat newsyslog wordt gedraaid vanuit cron en niet vaker bestanden kan roteren dan dat het gedraaid wordt vanuit &man.cron.8;. Instellingenbestanden <filename class="directory">/etc</filename> layout Instellingengegevens wordt in een aantal mappen bewaard. Daar zijn onder andere: /etc Generieke systeeminstellingenbestanden, specifiek voor het systeem. /etc/defaults De standaardversies van systeeminstellingenbestanden. /etc/mail Extra &man.sendmail.8; instellingenbestanden of instellingenbestanden voor andere MTAs. /etc/ppp Instellingen voor zowel gebruiker- als kernel-ppp programma's. /etc/namedb Standaardlocatie voor &man.named.8; gegevens. Normaal gesproken bevinden zich hier named.conf en zonebestanden. /usr/local/etc Instellingenbestanden voor geïnstalleerde software. Kan submappen hebben waarin bij elkaar horende instellingengegevens van een applicatie gegroepeerd zijn. /usr/local/etc/rc.d Start- en stopscripts voor geïnstalleerde diensten. /var/db Automatisch gemaakte systeemspecifieke databasebestanden, zoals de pakketdatabase, de &man.locate.1; database, enzovoort. Hostnamen hostnaam DNS <filename>/etc/resolv.conf</filename> resolv.conf In /etc/resolv.conf wordt voorgeschreven op welke wijze &os; het Domain Name System (DNS) moet gebruiken. De meest voorkomende termen in resolv.conf zijn: nameserver Het IP-adres van een naamserver die ondervraagd moet worden voor naam/IP-conversie. De servers worden in volgorde geprobeerd en het maximale aantal is drie. search Zoeklijst voor het opzoeken van hostnamen. Meestal wordt deze bepaald door het domein waarop de lokale hostnaam zich bevindt. domain De lokale domeinnaam. Een typisch resolv.conf bestand: search example.com nameserver 147.11.1.11 nameserver 147.11.100.30 search en domain dienen niet tegelijk gebruikt te worden. Als DHCP wordt gebruikt: &man.dhclient.8; overschrijft meestal resolv.conf met informatie ontvangen van de DHCP-server. <filename>/etc/hosts</filename> hosts /etc/hosts is een eenvoudige tekstdatabase uit de dagen van het oude Internet. Het werkt samen met DNS en NIS om namen en IP adressen over en weer te vertalen. Lokale computers, verbonden via een LAN, kunnen hier het beste in opgenomen worden om zo op simpele wijze naam/IP conversie voor een LAN te hebben, zonder noodzaak voor een &man.named.8; server. Ook kunnen naamaliassen toegekend worden (vergelijkbaar met CNAMES bij DNS). Op soortgelijke wijze kan /etc/hosts gebruikt worden als een (zeer beperkte) lokale DNS cache. # $&os;$ # # Host Database # Dit bestand hoort de adressen en aliassen te bevatten # voor de lokale hosts die dit bestand gebruiken. # Bij gebruik van DNS of NIS hoeft dit bestand helemaal niet gebruikt # te worden. Zie /etc/nsswitch.conf voor de volgorde van resolutie. # # ::1 localhost localhost.my.domain myname.my.domain 127.0.0.1 localhost localhost.my.domain myname.my.domain # # Verzonnen netwerk. #10.0.0.2 myname.my.domain myname #10.0.0.3 myfriend.my.domain myfriend # # Volgens RFC 1918 mogen de volgende IP netwerken gebruikt worden # als private netwerken die niet met Internet verbonden zijn: # # 10.0.0.0 - 10.255.255.255 # 172.16.0.0 - 172.31.255.255 # 192.168.0.0 - 192.168.255.255 # # Als er toch verbinding moet zijn met Internet, zijn echte # officieel toegewezen nummers nodig. Probeer ECHT GEEN eigen # netwerknummers te verzinnen, maar vraag ze op bij de provider # (als die er is) of bij de Internet Registry (ftp naar # rs.internic.net, map `/templates'). # /etc/hosts heeft als formaat: [Internet address] [official hostname] [alias1] [alias2] ... Bijvoorbeeld: 10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2 In &man.hosts.5; staat meer informatie. <filename>sysctl.conf</filename> sysctl.conf sysctl sysctl.conf lijkt veel op rc.conf. Waardetoekenning heeft weer de vorm variable=value. De ingestelde &man.sysctl.8;-waarden worden doorgevoerd op het moment dat het systeem naar multi-user modus gaat. Niet alle variabelen kunnen in deze modus gewijzigd worden. Om te voorkomen dat er logregels geplaatst worden als processen crashen en om te voorkomen dat andere gebruikers kunnen zien welke processen er gestart zijn door een andere gebruiker, kunnen de volgende instellingen worden gezet in sysctl.conf: #Log exits met fatale signalen niet (bv. sig 11) kern.logsigexit=0 # Voorkom dat gebruikers informatie zien over processen die # worden gedraaid onder een ander UID. security.bsd.see_other_uids=0 Optimaliseren met sysctl sysctl optimalisering met sysctl &man.sysctl.8; is een interface waarmee veranderingen gemaakt kunnen worden aan een draaiend &os;-systeem. Er zijn onder meer vele geavanceerde opties voor de TCP/IP-stack en het virtuele geheugensysteem, waarmee een ervaren systeembeheerder de systeemprestaties drastisch kan verbeteren. Met &man.sysctl.8; kunnen meer dan vijfhonderd systeemvariabelen opgevraagd en ingesteld worden. In essentie heeft &man.sysctl.8; twee functies: het lezen en wijzigen van systeeminstellingen. Om alle leesbare variabelen te tonen: &prompt.user; sysctl -a Om een bepaalde variabele op te vragen, bijvoorbeeld kern.maxproc: &prompt.user; sysctl kern.maxproc kern.maxproc: 1044 Om een bepaalde variabele toe te kennen (te wijzigen), is de syntaxis variable=value: &prompt.root; sysctl kern.maxfiles=5000 kern.maxfiles: 2088 -> 5000 Waarden van sysctl-variabelen zijn doorgaans strings (tekst), getallen of booleans (1 als waar, 0 als onwaar). Om automatisch variabelen in te stellen als de machine start, kunnen ze toegevoegd worden aan /etc/sysctl.conf. Meer informatie staat in &man.sysctl.conf.5; en . Tom Rhodes Geschreven door &man.sysctl.8; alleen-lezen In sommige gevallen is het wenselijk om &man.sysctl.8;-waarden die alleen-lezen zijn toch te wijzigen. Hoewel dit soms onontkoombaar is, kan het alleen bij een (her)start gedaan worden. Op sommige laptops is bijvoorbeeld het apparaat &man.cardbus.4; niet in staat om geheugenregio's af te tasten, met als gevolg foutmeldingen als: cbb0: Could not map register memory device_probe_and_attach: cbb0 attach returned 12 In dergelijke gevallen moeten er meestal enkele &man.sysctl.8;-instellingen gewijzigd worden die alleen-lezen zijn en een standaardwaarde hebben. Dit kan bereikt worden door &man.sysctl.8; OIDs in de lokale /boot/loader.conf te zetten. Standaardinstellingen staan in /boot/defaults/loader.conf. Om het bovenstaande probleem op te lossen moet in /boot/loader.conf hw.pci.allow_unsupported_io_range=1 ingesteld worden. Dan werkt &man.cardbus.4; wel goed. Harde schijven optimaliseren Sysctl-variabelen <varname>vfs.vmiodirenable</varname> vfs.vmiodirenable De sysctl-variabele vfs.vmiodirenable kan de waarde 0 (uit) of 1 (aan) hebben. De standaardwaarde is 1. Deze variabele bepaalt hoe mappen door het systeem in een cache bewaard worden. De meeste mappen zijn klein en gebruiken slechts een klein fragment (typisch 1 K) in het bestandssysteem en nog minder (typisch 512 bytes) in de buffercache. Als deze variabele uit staat (op 0) bewaart de buffercache slechts een bepaald aantal mappen in de cache, ook al is er een overvloed aan geheugen beschikbaar. Wanneer deze aan staat (op 1), wordt de VM paginacache gebruikt, waardoor voor het cachen van mappen al het geheugen kan worden gebruikt. Het is echter wel zo dat het minimale in-core geheugen dat gebruikt wordt om een map te cachen in dat geval de fysieke paginagrootte is (typisch 4 K) in plaats van 512  bytes. Het is aan te raden deze optie aan te laten staan als gebruik gemaakt wordt van diensten die met grote aantallen bestanden werken, zoals webcaches, grote mailsystemen en newsservers. Als deze optie aan blijft staan, verlaagt die de prestaties niet, ook al kost het meer geheugen. Door experimenteren is dit voor een systeem na te gaan. <varname>vfs.write_behind</varname> vfs.write_behind De sysctl-variabele vfs.write_behind staat standaard aan (1). Dit betekent dat het bestandssysteem gegevens naar het medium gaat schrijven op het moment dat er een volledig cluster aan gegevens verzameld is. Dit is meestal het geval bij het schrijven van grote sequentiële bestanden. Het idee is om te voorkomen dat de buffercache verzadigd raakt met vuile buffers zonder dat dit bijdraagt aan de I/O-prestaties. Dit kan echter processen ophouden en onder sommige omstandigheden is het wellicht beter deze sysctl uit te zetten. <varname>vfs.hirunningspace</varname> vfs.hirunningspace De sysctl-variabele vfs.hirunningspace bepaalt hoeveel nog te schrijven gegevens er in het complete systeem op elk moment in de wachtrij naar schijfcontrollers mag staan. De standaardwaarde is meestal voldoende, maar op machines met veel schijven, is het beter deze te verhogen naar vier of vijf megabyte. Het instellen van een te hoge waarde (groter dan de schrijfdrempel van de buffercache) kan leiden tot zeer slechte prestaties bij clustering. Stel deze waarde niet arbitrair hoog in! Hogere schrijfwaarden kunnen vertraging veroorzaken in het lezen, als dit tegelijk plaatsvindt. Er zijn verscheidene andere sysctl's voor buffercache en VM-pagecache. Het wordt afgeraden deze te wijzigen. Het VM-systeem is zeer goed in staat zichzelf automatisch te optimaliseren. <varname>vm.swap_idle_enabled</varname> vm.swap_idle_enabled De sysctl-variabele vm.swap_idle_enabled is nuttig in grote meergebruikersystemen met veel gebruikers die af- en aanmelden en veel onbenutte processen. Dergelijke systemen hebben de neiging om voortdurend de vrije geheugenreserves onder druk te zetten. Het is mogelijk om de prioriteit van geheugenpagina's die verband houden met onbenutte processen sneller te laten dalen dan met het normale pageout-algoritme, door deze sysctl aan te zetten en via vm.swap_idle_threshold1 en vm.swap_idle_threshold2 de swapout hysterese (in seconden onbenut) af te stemmen. Deze optie dient alleen gebruikt te worden als ze echt nodig is, want de andere kant van de medaille is dat dit eerder pre-page geheugen inhoudt in plaats van later, waardoor het meer wisselbestand- en schijfbandbreedte kost. In een klein systeem heeft deze optie een voorspelbaar effect, maar in grote systemen waar al sprake is van een matige paging kan deze optie het mogelijk maken voor het VM-systeem om hele processen gemakkelijk in en uit het geheugen te halen. <varname>hw.ata.wc</varname> hw.ata.wc Ten tijde van &os; 4.3 is er geflirt met het uitzetten van IDE-schrijfcaching. Hierdoor neemt de bandbraadte naar IDE-schijven af, maar het werd als noodzakelijk beschouwd vanwege ernstige problemen met gegevensinconsistentie die door harde schijfproducenten geëintroduceerd waren. Het probleem is dat IDE-schijven niet de waarheid vertellen over wanneer een schrijfactie klaar is. Door IDE-schrijfcaching wordt data niet alleen ongeordend geschreven, maar soms kan zelfs het schrijven van sommige blokken voortdurend uitgesteld worden als er sprake is van een hoge schijfbelasting. Een crash of stroomstoring kan dan ernstige corruptie aan het bestandssysteem veroorzaken. Daarom werd de standaardinstelling van &os; voor alle zekerheid gewijzigd. Helaas was het resultaat een groot verlies aan prestaties en na die uitgave is de standaardwaarde weer terug veranderd. Met de sysctl-variabele hw.ata.wc kan gecontroleerd worden of schrijfcaching aan of uit staat. Als schrijfcaching uit staat, kan het die weer aangezet worden door hw.ata.wc op 1 te zetten. Aangezien dit een kernelvariabele is, moet deze ingesteld worden vanuit de bootloader tijdens het opstarten. Nadat de kernel eenmaal opgestart is, heeft het wijzigen van deze sysctl geen effect. Meer informatie staat in &man.ata.4;. <literal>SCSI_DELAY</literal> (<varname>kern.cam.scsi_delay</varname>) kern.cam.scsi.delay kernelopties SCSI_DELAY De kernelinstelling SCSI_DELAY kan gebruikt worden om de opstarttijd te versnellen. De standaardwaarde is nogal hoog en kan 15 seconden vertraging veroorzaken. Met modernere SCSI-systemen is 5 seconden al voldoende (zeker met moderne schijven). De kern.cam.scsi_delay opstart variabele moet hier gebruikt worden. De variabele en kernelconfiguratie-optie accepteren waarden uitgedrukt in milliseconden en niet in seconden. Softupdates Softupdates tunefs &man.tunefs.8; kan gebruikt worden om een bestandsysteem nauwkeurig af te stellen. Het heeft veel opties, maar nu wordt alleen het aan- en uitzetten van softupdates besproken. Dat gaat als volgt: &prompt.root; tunefs -n enable /filesystem &prompt.root; tunefs -n disable /filesystem Een bestandssysteem kan niet met &man.tunefs.8; gewijzigd worden als het aangekoppeld is. Softupdates aanzetten wordt dus in het algemeen gedaan vanuit enkelegebruikermodus, voordat partities aangekoppeld zijn. Softupdates zorgen voor een drastische verbetering van de prestaties met betrekking tot metagegevens, met name het aanmaken en verwijderen van bestanden, door gebruik van een geheugencache. Het wordt dan ook aangeraden om op alle bestandssystemen softupdates te gebruiken. Er zijn twee nadelen aan softupdates: softupdates garanderen een consistent bestandssysteem in geval van een crash, maar het kan makkelijk enkele seconden (zelfs een minuut) achter liggen met het daadwerkelijk bijwerken op de fysieke harde schijf. Als een systeem crasht gaat wellicht meer werk verloren dan anders het geval zou zijn. Daarnaast vertragen softupdates het vrijgeven van bestandssysteemblokken. Als een bestandssysteem (zoals de rootpartitie) bijna vol is, dan kan het verrichten van een grote update, zoals make installworld, ertoe leiden dat het bestandssysteem ruimtegebrek krijgt en dat daardoor de operatie mislukt. Meer over softupdates Softupdates details Er zijn traditioneel twee methodes om de metagegevens van een bestandssysteem terug naar de schijf te schrijven. Het bijwerken van metagegevens houdt het bijwerken van van niet-inhoudelijke gegevens zoals inodes of mappen in. Historisch gezien was het gebruikelijk om updates aan metagegevens synchroon weg te schrijven. Als een map bijvoorbeeld gewijzigd was, wachtte het systeem totdat de verandering daadwerkelijk naar de schijf geschreven was. De gegevensbuffers (de inhoud van een bestand) werden doorgeschoven naar de buffercache en op een later moment asynchroon op de schijf opgeslagen. Het voordeel van deze benadering is dat ze altijd veilig is. Als het systeem faalt tijdens het bijwerken, zijn de metagegevens nog altijd consistent. Een bestand kan volledig gecreëerd zijn of helemaal niet. Als de gegevensblokken van een bestand nog niet van de buffercache naar de schijf geschreven zijn ten tijde van de crash, is &man.fsck.8; in staat om dit te herkennen en het bestandssysteem te repareren door de lengte van het bestand nul te maken. Deze implementatie is ook helder en eenvoudig. Het nadeel is echter dat het wijzigen van metagegevens een traag proces is. Een rm -r benadert bijvoorbeeld alle bestanden in een map sequentiëel, maar elke mapverandering (verwijderen van een bestand) wordt synchroon naar de schijf geschreven. Dit omvat ook het bijwerken van de map zelf, van de inodetabel en mogelijk ook van indirecte blokken die voor het bestand in kwestie zijn gealloceerd. Gelijksoortige processen spelen zich af bij een commando als tar -x, waarbij een grote bestandshiëearchie wordt uitgepakt. De tweede mogelijkheid is om het bijwerken van metagegevens asynchroon weg te schrijven. Dit is standaard in &linux;/ext2fs en als een *BSD UFS-bestandssysteem met mount -o async aangekoppeld is, is de werking hetzelfde. Alle bijwerkingen aan metagegevens worden eenvoudigweg doorgegeven aan de buffercache en vermengd met inhoudelijke updates van de bestandsgegevens. Het voordeel is een grote winst aan snelheid, omdat er niet telkens gewacht hoeft te worden op het bijwerken van metagegevens tot deze daadwerkelijk naar de schijf geschreven zijn. De implementatie is ook in dit geval helder en eenvoudig. Het grote nadeel is uiteraard dat er geen enkele garantie is voor de consistentie van het bestandssysteem. Als het systeem faalt tijdens een operatie waarbij veel metagegevens worden bijgewerkt (bijvoorbeeld door een stroomstoring of iemand drukt op de resetknop), blijft het bestandssysteem in een onvoorspelbare toestand achter. Er is geen mogelijkheid om de toestand van het bestandssysteem te onderzoeken als het systeem weer opstart, want de gegevensblokken van een bestand kunnen al weggeschreven zijn geweest terwijl het wegschrijven van bijwerkingen aan de inodetabel of de bijhorende map nog niet plaats heeft gevonden. Het is zelfs onmogelijk om een fsck te implementeren die de overgebleven chaos kan opruimen: de benodigde informatie is gewoon niet volledig aanwezig op de schijf. Als een bestandssysteem op deze manier onherstelbaar beschadigd is, is de enige optie &man.newfs.8; te gebruiken en vervolgens te herstellen van een back-up. De gebruikelijke oplossing voor dit probleem is het implementeren van dirty region logging, ook wel journaling genoemd, hoewel deze term niet consistent gebruikt wordt en soms ook wordt gebruikt voor andere vormen van transactielogging. Het bijwerken van metagegevens wordt nog steeds synchroon geschreven, maar slechts naar een klein gebied van de schijf. Later worden ze dan naar de juiste locatie verplaatst. Omdat het loggebied klein is, hoeven de koppen van de schijf zelfs tijdens schrijfintensieve operaties nog maar over een kleine fysieke afstand te bewegen en door deze snellere respons zijn dit soort operaties sneller dan op de traditionele manier. De extra complexiteit van de implementatie is nogal beperkt, dus het risico van introductie van extra bugs valt mee. Een nadeel is dat alle metagegevens tweemaal geschreven worden (eerst naar het loggebied en later nog eens naar de definitieve locatie). Dus bij normaal gebruik kan er sprake zijn van wat men wel noemt een performance pessimization. Anderzijds kunnen in geval van een crash alle nog uitstaande metagegevensoperaties snel worden teruggedraaid of vanuit het loggebied alsnog worden afgemaakt wanneer de machine weer opstart. Het bestandssysteem start dan snel op. Kirk McKusick, de vader van het Berkeley FFS, loste dit probleem op met softupdates, wat betekent dat alle uitstaande acties voor het bijwerken van metagegevens in het geheugen bewaard worden en dan geordend naar de schijf geschreven worden. Dit heeft het gevolg dat in geval van intensieve operaties met betrekking tot metagegevens, latere bijwerkingen aan een item eerdere bewerkingen opvangen (catch) als deze nog in het geheugen zitten en nog niet weggeschreven waren. Dus alle operaties, op bijvoorbeeld een map, worden in het algemeen eerst in het geheugen uitgevoerd voordat er wordt bijgewerkt naar schijf. De gegevensblokken worden geordend conform hun positie, zodat ze nooit weggeschreven worden voordat hun metagegevens geschreven zijn. Als het systeem een crash ondervindt, veroorzaakt dat impliciet het terugdraaien van uitstaande operaties (log rewind): alle operaties die nog niet weggeschreven waren lijken nooit gebeurd te zijn. Zo wordt een consistent bestandssysteem in stand gehouden dat eruit ziet alsof het 30 tot 60 seconden eerder was. Het gebruikte algoritme garandeert dat alle bronnen die in gebruik zijn als zodanig gemarkeerd worden in hun daarvoor geschikte bitmaps: blokken en inodes. Na een crash is de enige allocatiefout die kan optreden dat bronnen gemarkeerd kunnen zijn als in gebruik (used), terwijl ze feitelijk alweer beschikbaar (free) zijn. &man.fsck.8; herkent deze situatie en stelt dergelijke vrij te maken bronnen opnieuw beschikbaar. Het is volkomen veilig om na een crash te negeren dat het bestandssysteem niet schoon is en het tot aankoppelen te dwingen met mount -f. Om niet langer gebruikte bronnen vrij te maken moet later &man.fsck.8; uitgevoerd worden. Dit is dan ook het idee achter background fsck: op het moment dat het systeem aan het opstarten is, wordt er alleen een snapshot van het systeem bewaard. fsck kan later uitgevoerd worden. Alle bestandssystemen kunnen dirty aangekoppeld worden en het systeem kan gewoon verder opstarten naar meergebruikermodus. Vervolgens zijn er fscks gepland die in de achtergrond draaien voor elk bestandssysteem dat niet schoon is en waarmee bezette bronnen vrijgegeven worden. Bestandssystemen die geen gebruik maken van softupdates moeten echter nog steeds gebruik maken van de normale fsck in de voorgrond. Het voordeel van softupdates is dat operaties op metagegevens bijna net zo snel zijn als asynchrone updates (dat wil zeggen sneller dan met logging, waarbij de metagegevens keer op keer geschreven worden). Nadelen zijn de complexiteit van de code (wat een groter risico op bugs impliceert in een gebied dat bijzonder gevoelig is voor verlies van gebruikersgegevens) en een groter geheugenverbruik. Tevens moet de gebruiker wennen aan enkele eigenaardigheden. Na een crash lijkt de toestand van het bestandssysteem wat ouder. In situaties waar de standaard synchrone benadering een aantal lege bestanden zou hebben achtergelaten na fsck, is het met softupdates juist zo dat dergelijke bestanden er helemaal niet zijn, omdat de metagegevens of de bestandsinhoud nooit naar de schijf zijn geschreven. Schijfruimte wordt pas vrijgegeven als de bijwerkingen aan metagegevens en inhoudelijke bestandsgegevens weggeschreven zijn, wat mogelijk pas enige tijd na het uitvoeren van rm plaatsvindt. Dit kan problemen veroorzaken als er grote hoeveelheden gegevens naar een bestandssysteem geschreven worden dat onvoldoende vrije ruimte heeft om alle bestanden twee keer te kunnen bevatten (bijvoorbeeld in /tmp). Fijnafstemming van kernellimieten fijnafstemming kernellimieten Bestandsproceslimieten <varname>kern.maxfiles</varname> kern.maxfiles kern.maxfiles kan worden verhoogd of verlaagd, afhankelijk van de systeembehoeften. Deze variabele geeft het maximale aantal bestandsdescriptors op een systeem. Als de bestandsdescriptortabel vol is, toont de systeembuffer meerdere malen file: table is full, hetgeen achteraf te zien is met dmesg. Elk geopend bestand, socket of fifo heeft een bestandsdescriptor. Een grote produktieserver kan makkelijk enige duizenden bestandsdescriptors nodig hebben, afhankelijk van het soort en aantal diensten die tegelijk draaien. In oudere versies van &os; werd de standaard waarde van kern.maxfiles afgeleid van de optie in het kernelconfiguratiebestand. kern.maxfiles groeit evenredig met de waarde van maxusers. Als een aangepaste kernel wordt gebouwd, is het een goed idee om deze kerneloptie in te stellen afhankelijk van het gebruikt van een systeem (maar niet te laag). Hoewel een produktieserver misschien niet 256 gelijktijdige gebruikers heeft, kunnen de benodigde systeembronnen het beste vergeleken worden met een grootschalige webserver. De optie maxusers stelt de grootte van een aantal belangrijke systeemtabellen in. Dit aantal moet ruwweg gelijk zijn aan het aantal gebruikers dat verwacht wordt gelijktijdig van de machine gebruik te maken. Vanaf &os; 4.5 wordt kern.maxusers automatisch ingesteld tijdens het opstarten gebaseerd op de hoeveelheid beschikbare geheugen in het systeem en kan worden vastgesteld tijdens het draaien door te kijken naar de alleen-lezen sysctl kern.maxusers. Sommige configuraties hebben grotere of kleinere waarden nodig van kern.maxusers, deze kunnen worden gezet als een opstartvariabele. Waardes van 64, 128 en 256 zijn daarin niet ongewoon. We raden aan om niet boven de 256 te gaan tenzij er heel veel bestandsdescriptors benodigd zijn; veel van de aanpasbaare waarden die standaard worden bepaald door kern.maxusers kunnen individueel worden overschreven tijdens het opstarten en/of tijdens het draaien van het systeem in /boot/loader.conf (zie de handleiding &man.loader.conf.5; of /boot/defaults/loader.conf voor een paar aanwijzingen) of zoals elders beschreven in dit document. Voor oudere versies stelt het systeem deze waarde zelf in als deze uitdrukkelijk op 0 is gezet. Het auto-tuning-algoritme stelt maxusers in afhankelijk van de hoeveelheid geheugen in het systeem, met een minimum van 32 en een maximum van 384. Als het gewenst is om deze waarde zelf aan te geven, wordt aangeraden om maxusers minstens op 4 te zetten, met name als het X Window systeem in gebruik is of als er software gecompileerd wordt. De reden hiervoor is dat de belangrijkste tabel die door maxusers ingesteld wordt, het maximum aantal processen is, dat ingesteld wordt op 20 + 16 * maxusers, dus als maxusers op 1 ingesteld wordt, zijn er maar 36 gelijktijdige processen mogelijk, inclusief de ongeveer achttien processen die door het systeem tijdens het opstarten start en de ongeveer vijftien processen die waarschijnlijk aangemaakt worden door het opstarten van het X Window systeem. Zelfs een eenvoudige taak als het afbeelden van een hulppagina start negen processen op om de pagina te filteren, te decomprimeren en af te beelden. Als maxusers op 64 ingesteld wordt, zijn er 1044 gelijktijdige processen mogelijk, wat genoeg moet zijn voor bijna alle soorten gebruik. Als echter de gevreesde fout proc table full verschijnt als er geprobeerd wordt om een programma op te starten of als er een server gedraaid wordt met een groot aantal gelijktijdige gebruikers, zoals ftp.FreeBSD.org, kan het getal altijd verhoogd worden en kan de kernel opnieuw gebouwd worden. maxusers stelt geen grens aan het aantal gebruikers dat zich op de machine kan aanmelden. Het stelt gewoon verschillende tabelgroottes in op redelijke waardes, uitgaande van het maximum aantal gebruikers dat waarschijnlijk de machine gebruikt en van het aantal processen dat elk van deze gebruikers zal draaien. Een sleutelwoord dat wel het aantal gelijktijdige aanmeldingen op afstand en X-terminalvensters begrensd is pseudo-device pty 16. In &os; 5.X kan dit getal genegeerd worden omdat daar het stuurprogramma &man.pty.4; auto-cloning is. Er kan eenvoudig gebruik worden gemaakt van de regel device pty in het instellingenbestand. <varname>kern.ipc.somaxconn</varname> kern.ipc.somaxconn De sysctl-variabele kern.ipc.somaxconn beparkt de grootte van de luisterwachtrij voor het accepteren van nieuwe TCP-verbindingen. De standaardwaarde van 128 is meestal te laag voor robuuste behandeling van nieuwe verbindingen in een zwaarbeladen webserveromgeving. Voor zulke omgevingen wordt aangeraden deze waarde te verhogen tot 1024 of hoger. De dienstdaemon beperkt misschien zelf de luisterwachtrij (bijvoorbeeld &man.sendmail.8; of Apache), maar heeft vaak een mogelijkheid in een configuratiebestand de wachtrijgrootte aan te passen. Grote luisterwachtrijen zijn ook beter in het ontwijken van Ontzegging van Dienst (DoS) aanvallen. Netwerkbeperkingen De kerneloptie NMBCLUSTERS bepaalt het aantal netwerk-Mbufs dat beschikbaar is voor een systeem. Een veel bezochte server met een laag aantal Mbufs beperkt de mogelijkheden van &os;. Elk cluster staat voor ongeveer 2 K geheugen, dus een waarde van 1024 stelt 2 megabyte aan kernelgeheugen voor, dat is gereserveerd voor netwerkbuffers. Een simpele berekening geeft aan hoeveel er nodig is. Stel dat een webserver met een maximum van 1000 simultane verbindingen voor elke verbinding 16 K aan ontvangstnetwerkbuffers en 16 K aan zendbuffers kost, dan is ongeveer 32 MB aan netbuffers nodig voor de webserver. Een goede vuistregel is te vermeniguldigen met twee, dus 2x32 MB / 2 KB = 64 MB / 2 kB = 32768. Voor machines met veel geheugen wordt 4096 tot 32768 aangeraden. Er moet in geen geval een arbitrair hoge waarde voor deze sysctl opgegeven worden, want dat kan leiden tot een crash tijdens het opstarten. Met de optie van &man.netstat.1; kan het clustergebruik van het netwerk bekeken worden. De loaderparameter kern.ipc.nmbclusters moet gebruikt worden om dit tijdens het opstarten toe te passen. Alleen voor oudere versies van &os; is het nodig om de kerneloptie NMBCLUSTERS te gebruiken. Voor drukke servers die extensief gebruik maken van de systeemaanroep &man.sendfile.2;, kan het nodig zijn het aantal &man.sendfile.2;-buffers te verhogen via de kerneloptie NSFBUFS of door de waarde in te stellen in /boot/loader.conf (in &man.loader.8; staan details). Als er in de procestabel processen staan met een status sfbufa is dat een algemene indicator dat deze parameter aangepast moet worden. De sysctl-variabele kern.ipc.nsfbufs is alleen-lezen en laat zien op welke waarde deze kernelvariabele is ingesteld. Deze parameter schaalt engiszins met de variabele kern.maxusers, maar het kan nodig zijn om deze bij te stellen. Zelfs als een socket als non-blocking gemarkeerd is, dan nog kan het aanroepen van &man.sendfile.2; op de non-blocking socket ertoe leiden dat er toch blokkade optreedt totdat er voldoende struct sf_buf's vrijgemaakt zijn. <varname>net.inet.ip.portrange.*</varname> net.inet.ip.portrange.* De sysctl-variabelen net.inet.ip.portrange.* bepalen welke reeks poortnummers automatisch gebonden wordt aan TCP- en UDP-sockets. Er zijn drie gebieden: een laag gebied, een (standaard) middengebied en een hoog gebied. De meeste netwerkprogramma's gebruiken het standaardbereik, wat begrensd wordt door net.inet.ip.portrange.first en net.inet.ip.portrange.last met standaardwaarden van respectievelijk 1024 en 5000. Gebonden poortreeksen worden gebruikt voor uitgaande verbindingen en het is onder bepaalde omstandigheden mogelijk dat poorten op raken. Dit gebeurt meestal in het geval van een zwaar belaste webproxy. Poortbereik is niet van belang als vooral diensten draaien die zich bezighouden met inkomende verbindingen, zoals een normale webserver, of als het aantal uitgaande verbindingen beperkt is, zoals bij een mailrelay. Voor situaties waarin een tekort aan poorten dreigt, wordt aangeraden om net.inet.ip.portrange.last bescheiden op te hogen. Een waarde van 10000, 20000 of 30000 is redelijk. Er moet ook rekening met effecten op firewalls gehouden worden als de poortreeks gewijzigd wordt. Sommige firewalls kunnen grote poortreeksen blokkeren, meestal de lagere poorten, en verwachten dat andere systemen hogere poorten gebruiken voor uitgaande verbindingen. Om deze reden wordt het niet aanbevolen om net.inet.ip.portrange.first te verlagen. TCP Bandbreedtevertragingsproduct (TCP Bandwidth Delay Product) TCP bandbreedtevertragingsproduct net.inet.tcp.inflight.enable De TCP-bandbreedtevertragingsproductlimitatie lijkt op TCP/Vegas in NetBSD. Het kan aangezet worden door de sysctl-variabele net.inet.tcp.inflight.enable de waarde 1 te geven. Het systeem tracht dan het bandbreedtevertragingssprodukt te berekenen voor elke verbinding en beperkt dan de hoeveelheid gegevens in de wachtrij naar het netwerk tot de hoeveelheid die vereist is om maximale doorvoer te kunnen handhaven. Dit is nuttig bij gebruik van modems, Gigabit Ethernet of zelfs bij WAN-verbindingen met hoge snelheid (of elke andere verbinding met een groot bandbreedtevertragingsprodukt), in het bijzonder als ook windowschaling of een groot verzendwindow gebruikt wordt. Als deze optie aangezet wordt, dient ook net.inet.tcp.inflight.debug de waarde 0 te krijgen (geen debugging) en voor produktiegebruik kan het instellen van net.inet.tcp.inflight.min naar minstens 6144 voordeel opleveren. Het instellen van hoge minima kan effectief het beperken van bandbreedte ondermijnen, afhankelijk van de verbinding. De mogelijkheid tot limitering zorgt ervoor dat de hoeveelheid gegevens die opgebouwd wordt, in tussentijdse route- en switchwachtrijen verlaagd kan worden en tevens kan de hoeveelheid gegevens die opgebouwd wordt in de interfacewachtrij van de lokale host verlaagd worden. Met minder pakketten in wachtrijen kunnen interactieve verbindingen opereren met lagere Round Trip tijden, met name over langzame modems. Deze optie gaat alleen over datatransmissie (upload / serverkant) en heeft geen effect gegevensontvangst (download / cliëntkant). Aanpassen van net.inet.tcp.inflight.stab wordt niet aangeraden. Deze parameter krijgt standaard een waarde van 20, wat 2 maximale pakketten opgeteld bij de bandbreedtevensterberekening representeert. Het extra venster is nodig om het algoritme stabiel te houden en om de reactietijd bij veranderende omstandigheden te verbeteren, maar het kan ook leiden tot langere pingtijden over langzame verbindingen (zonder het inflight-algoritme kan dit echter nog erger zijn). In dergelijke gevallen kan deze parameter misschien verlaagd worden naar 15, 10 of 5 en misschien moet voor het gewenste effect ook net.inet.tcp.inflight.min verlaagd worden (bijvoorbeeld naar 3500). Het verlagen van deze parameters moet pas in laatste instantie overwogen worden. Virtueel Geheugen <varname>kern.maxvnodes</varname> Een vnode is de interne representatie van een bestand of een map. Het verlagen van het aantal beschikbare vnodes voor het besturingssysteem leidt dus tot een daling van schijf-I/O. Normaliter wordt dit door het besturingssysteem afgehandeld en hoeft de instelling niet gewijzigd te worden. Im sommige gevallen kan schijf-I/O de beperkende factor zijn en kan het systeem alle beschikbare vnodes in gebruik hebben. Dan dient deze instelling gewijzigd te worden. De hoeveelheid inactief en beschikbaar RAM dient meegenomen te worden in de beslissing. Het huidige aantal gebruikte vnodes kan als volgt bekeken worden: &prompt.root; sysctl vfs.numvnodes vfs.numvnodes: 91349 Om het maximale aantal vnodes weer te geven: &prompt.root; sysctl kern.maxvnodes kern.maxvnodes: 100000 Als het huidige aantal gebruikte vnodes dicht bij het maximale aantal ligt, is het verstandig om kern.maxvnodes op te hogen met 1.000. Ook vfs.numvnodes dient in de gaten gehouden te worden. Als de waarde weer tot aan het maximum stijgt, dan moet kern.maxvnodes verder opgehoogd worden. Er dient een verschuiving op te treden in het door &man.top.1; gerapporteerde geheugengebruik. Er hoort meer geheugen actief te zijn. Wisselbestandruimte toevoegen Hoe goed er ook gepland wordt, soms draait een systeem gewoon niet zoals verwacht. Een oorzaak hiervoor kan een tekort aan wisselbestandruimte zijn. Als blijkt dat er meer wisselbestandruimte nodig is, kan dat eenvoudig. Er zijn drie manieren om de totale ruimte beschikbaar als wisselbestand te vergroten: een nieuwe harde schijf toevoegen, swappen over NFS of een wisselbestand maken op een bestaande (UFS of andere) partitie. Kijk voor informatie over het beveiligen van het wisselbestand, welke opties hiervoor bestaan, en waarom dit gedaan zou moeten worden in van het handboek. Swap op een nieuwe of bestaande harde schijf Een nieuwe harde schijf voor swap toevoegen geeft betere prestaties dan een partitie aan een bestaande schijf toevoegen. Het aanmaken van partities en harde schijven wordt uitgelegd in . bespreekt de overwegingen van partitie-indelingen en de grootte van swap-partities. Gebruik &man.swapon.8; om een swap-partitie aan het systeem toe te voegen, bijvoorbeeld: &prompt.root; swapon /dev/ada1s1b Het is mogelijk om elke partitie te gebruiken die momenteel niet aangekoppeld is, zelfs als deze al gegevens bevat. Het gebruik van &man.swapon.8; op een partitie die gegevens bevat zal deze gegevens overschrijven en vernietigen. Zorg ervoor dat de partitie die als swap toegevoegd wordt echt de bedoelde partitie is voordat &man.swapon.8; gebruikt wordt. Voeg een regel toe aan /etc/fstab voor de partitie om deze swap-partitie automatisch toe te voegen tijdens het opstarten: /dev/ada1s1b none swap sw 0 0 Raadpleeg &man.fstab.5; voor een uitleg over de regels in /etc/fstab. Swappen over NFS In het algemeen wordt swappen over NFS niet aangeraden behalve als het onmogelijk is om naar een lokale schijf te swappen. NFS-swappen wordt gelimiteerd door de hoeveelheid beschikbare bandbreedte en belast het de NFS-server. Wisselbestanden Het is mogelijk om een bestand aan te maken van een bepaalde grootte en dit als swap te gebruiken. In dit voorbeeld wordt een bestand van 64 MB gebruikt, /usr/swap0. Uiteraard kan een willekeurige naam gebruikt worden. Een wisselbestand aanmaken op &os; De kernel GENERIC bevat reeds het stuurprogramma voor geheugenschijven (&man.md.4;) dat nodig is voor deze bewerking. Zorg ervoor dat tijdens het bouwen van een eigen kernel de volgende regel in uw configuratiebestand zit: device md Kijk voor meer informatie over het bouwen van een eigen kernel in . Het wisselbestand /usr/swap0 aanmaken: &prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64 De correcte rechten op /usr/swap0 instellen: &prompt.root; chmod 0600 /usr/swap0 Het wisselbestand opnemen in /etc/rc.conf: swapfile="/usr/swap0" # Instellen op naam van wisselbestand als hulpwisselbestand gewenst is De machine moet herstart worden of om het wisselbestand direct in te schakelen: &prompt.root; mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0 Hiten Pandya Geschreven door Tom Rhodes Energie- en bronnenbeheer Het is belangrijk om hardwarebronnen op een efficiënte wijze te benutten. Voordat ACPI geïntroduceerd werd was het lastig en onflexibel om het energieverbruik en de thermische eigenschappen van een systeem te beheersen. De hardware werd beheerst de BIOS en dus had de gebruiker minder controle en zichtbaarheid in de energiebeheerinstellingen. Enige gelimiteerde configuratie was mogelijk via Advanced Power Management (APM). Energie- en bronnenbeheer is een belangrijk onderdeel van moderne machines. Het besturingssysteem moet bijvoorbeeld systeemlimieten in de gaten houdt (en mogelijk een SMS sturen of iets dergelijks) als de systeemtemperatuur onverwacht toeneemt. In dit deel van het &os; handboek wordt uitgebreide informatie verschaft over ACPI. Aan het einde worden referenties geleverd naar meer leesmateriaal. Wat is ACPI? ACPI APM Advanced Configuration and Power Interface (ACPI) is een standaard die door een alliantie van producenten geschreven is, met als doel te voorzien in een standaardinterface voor hardwarebronnen- en energiebeheer. Een belangrijk element is dat het meer flexibiliteit en beheersmogelijkheden biedt aan het besturingssysteem (OS). Moderne systemen hebben de limieten van de huidige PNP-interfaces verder opgerekt dan wenselijk en misschien wel mogelijk was. ACPI is de directe opvolger van APM (Advanced Power Management). Centraal is het verleggen van hardwarebeheer en -monitoring naar de OS-laag in plaats van de zeer beperkte BIOS-laag. Tekortkomingen van APM Met de Advanced Power Management (APM) faciliteit kan het energieverbruik van een systeem geregeld worden op basis van de systeemactiviteit. Het APM-BIOS wordt geleverd door de systeemproducent of -verkoper en het is specifiek voor dat betreffende hardwareplatform. Een APM-stuurprogramma in het besturingssysteem regelt vervolgens de toegang tot de APM Software Interface, die het besturen van vermogensniveau mogelijk maakt. APM dient nog steeds gebruikt te worden met systemen die gefabriceerd zijn voor het jaar 2000. Er zijn vier hoofdproblemen met APM te onderscheiden: ten eerste wordt het energiebeheer verricht door een BIOS (afhankelijk van producent) en het besturingssysteem heeft daar geen kennis van. De gebruiker die idle-time waarden instelt voor een harde schijf in het APM-BIOS is hier een voorbeeld van. Dan zal het BIOS de harde schijf langzamer kunnen laten draaien zonder dat het besturingssysteem de noodzaak ziet of het goedkeurt. Ten tweede: de APM-logica is ingebed in de BIOS, waardoor het buiten het besturingssysteem om opereert. Dit houdt in dat gebruikers problemen met hun APM-BIOS alleen kunnen verhelpen door een nieuw BIOS in het ROM te flashen, wat een gevaarlijke en mogelijk onherstelbare operatie is. Ten derde is APM een producent-specifieke technologie, in de zin dat er altijd een hoge mate van duplicatie zal zijn van al dan niet geslaagde pogingen om het wiel opnieuw uit te vinden en uiteraard ook van bugs. Er is geen enkele garantie dat het wegnemen van een bug door een producent ook een zelfde bug wegneemt bij een concurrent. Tenslotte is het van belang te weten dat de APM-BIOS in het algemeen gewoon te weing geheugen kon gebruiken om een ingewikkeld energiebeheer te kunnen implementeren. Laat staan dat deze goed aanpasbaar was aan veranderlijke doelstellingen voor de betreffende machine. Plug-n-play BIOS (PNPBIOS) was in veel situaties onbetrouwbaar. PNPBIOS is 16-bitstechnologie, dus het besturingssysteem moet 16-bit emulatie gebruiken om met PNPBIOS-methoden te kunnen samenwerken. Het &os;-stuurprogramma APM is gedocumenteerd in &man.apm.4;. <acronym>ACPI</acronym> instellen Het stuurprogramma acpi.ko wordt standaard geladen bij het opstarten door de &man.loader.8; en hoeft niet gecompileerd te worden. De redenatie is dat er met modules gemakkelijker gewerkt kan worden, bijvoorbeeld een andere acpi.ko gebruiken zonder dat er een nieuwe kernel gebouwd moet worden. Dit heeft het voordeel dat testen eenvoudiger is. Een andere reden is dat het opstarten van ACPI nadat een systeem eenmaal volledig opgestart is meestal niet goed werkt. Mocht er hinder ondervonden worden, dan kan ACPI beter uitgeschakeld worden. Dit stuurprogramma kan niet gestopt worden als het eenmaal geladen is, omdat de systeembus het gebruikt voor allerlei interacties met hardware. ACPI kan uitgezet worden door het instellen van hint.acpi.0.disabled="1" in /boot/loader.conf of in de &man.loader.8; prompt. ACPI en APM kunnen niet samenleven en moeten afzonderlijk en exclusief gebruikt worden. De laatste die gestart wordt bepaalt of het stuurprogramma de ander wel of niet ziet. In haar eenvoudigste vorm kan ACPI gebruikt worden om het systeem in slaapmodus te zetten met &man.acpiconf.8; met de vlag en een optie 1-5. De meeste gebruikers hebben alleen 1 of 3 nodig. De optie 5 verricht een soft-off, wat hetzelfde is als: &prompt.root; halt -p Andere opties zijn mogelijk via &man.sysctl.8;. Zie de handleidingen van &man.acpi.4; en &man.acpiconf.8; voor meer informatie. Nate Lawson Geschreven door Peter Schultz Met medewerking van Tom Rhodes &os; <acronym>ACPI</acronym> gebruiken en debuggen ACPI is een totaal nieuwe manier om apparaten te ontdekken, om energieverbruik te beheren en om een gestandaardiseerde toegang te bieden tot allerlei apparaten die eerder via het BIOS beheerd werden. Er wordt voortdurend vooruitgang geboekt om ACPI op alle systemen te laten werken, maar bugs in de ACPIMachine Language (AML) bytecode van sommige moederborden, onvolledigheden in de subsystemen van de kernel van &os; en bugs in de &intel; ACPI-CA interpreter blijven opduiken. Deze tekst is bedoeld om u te helpen met het bijstaan van de &os; ACPI beheerders met het vinden van de hoofdoorzaken van problemen die u opmerkt en met het debuggen en het vinden van een oplossing. Debuginformatie aanleveren Voordat een probleem wordt gemeld, moet het zeker zijn dat de laatste BIOS versie draait en indien beschikbaar de geïntregeerde controller firmware versie. Diegenen die meteen een probleem willen indienen, sturen de volgende informatie naar freebsd-acpi@FreeBSD.org: Omschrijving van het foutieve gedrag, inclusief systeemtype en -model en alles wat de fout kan veroorzaken. Als het een nieuw fenomeen is, dan dient ook zo accuraat mogelijk aangegeven te worden wanneer de fout het eerst optrad. De uitvoer van &man.dmesg.8; van boot -v, inclusief foutmeldingen die gegenereerd worden als de fout optreedt. De uitvoer van &man.dmesg.8; van boot -v met ACPI uitgeschakeld, indien het uitzetten van ACPI het probleem oplost. Uitvoer van sysctl hw.acpi. Dit is tevens een goede manier om uit te vinden welke ACPI-mogelijkheden een systeem heeft. Een URL waar de ACPISource Language (ASL) gevonden kan worden. De ASL dient niet rechtstreeks naar de lijst gezonden te worden, omdat deze nogal groot kan zijn. Een kopie van een ASL kan gemaakt worden met het volgende commando: &prompt.root; acpidump -dt > naam-systeem.asl (Vervang uw aanmeldnaam door $NAME en producent/model door $SYSTEM. Bijvoorbeeld: njl-FooCo6000.asl) De meeste &os;-programmeurs lezen de &a.current;, maar problemen gaan bij voorkeur ook naar &a.acpi.name; zodat ze zeker gezien worden. Het kan enige tijd duren voordat er antwoord komt, omdat deze mensen elders ook nog volledige banen hebben. Als de bug niet meteen duidelijk is, komt er waarschijnlijk en verzoek om een PR in te dienen via &man.send-pr.1;. Als er een PR moet worden opgesteld, dan dient alle hierboven gevraagde informatie vermeld te worden. Dit helpt om het probleem te kunnen volgen en oplossen. Het sturen van een PR zonder eerst &a.acpi.name; te mailen is niet wenselijk, aangezien men PRs gebruikt als herinnering van bestaande problemen, niet als rapportagesysteem. Mogelijk is een probleem al eens door iemand anders gemeld. Achtergrond ACPI is aanwezig op alle moderne computers die voldoen aan de ia32 (x86), ia64 (Itanium) of amd64 (AMD) architecturen. De volledige standaard heeft vele mogelijkheden zoals CPU-prestatiebeheer, energiebeheer, thermische zones, diverse batterijsystemen, ingebedde controllers en busnummering. De meeste systemen implementeren minder dan de volledige standaard. Een desktopsysteem implementeert bijvoorbeeld meestal alleen busnummering, terwijl laptops mogelijk ook koeling- en batterijbeheer ondersteunen. Laptops hebben ook suspend en resume (slapen en wakker worden) met hun eigen aanverwante comlexiteit. Een ACPI-compliant systeem heeft verscheidene componenten. Het BIOS- en chipsetverkopers bieden verscheidene vaste tabellen aan zoals FADT in het geheugen die zaken als de APIC-afbeelding (gebruikt voor SMP), configuratieregisters, en eenvoudige configuratiewaarden specificeren. Ook wordt er een tabel van bytecode (de Differentiated System Description Table of DSDT) geleverd die een op een boomstructuur lijkende namespace biedt voor apparaten en methoden. Het stuurprogramma ACPI moet de voorgedefinieerde tabellen verwerken, een interpreter voor de bytecode implementeren en apparaatstuurprogramma's en de kernel aanpassen om informatie van het ACPI-subsysteem te accepteren. &intel; heeft een interpreter beschikbaar gesteld (ACPI-CA) die door &os; en ook door &linux; en NetBSD gebruikt wordt. De ACPI-CA-broncode staat in src/sys/contrib/dev/acpica. De lijmcode die ACPI-CA laat werken met &os; staat in src/sys/dev/acpica/Osd. Stuurprogramma's die verscheidene ACPI-apparaten implementeren staan in src/sys/dev/acpica. Algemene problemen Wil ACPI goed werken, dan moeten alle onderdelen goed werken. Hieronder staan enkele algemene problemen in volgorde van hoe vaak ze optreden en enkele mogelijke oplossingen of manieren om de problemen te vermijden. Muisproblemen Soms doet een muis het niet bij het opstarten uit de slaapstand. Een bekend lapmiddel is het toevoegen van hint.psm.0.flags="0x3000" aan /boot/loader.conf. Als dat niet werkt, dan wordt aangeraden een bugrapport in te sturen, zoals eerder is beschreven. Suspend/resume ACPI heeft drie slaapstanden waarbij het geheugen (RAM) wordt ingezet. Dit zijn de STR-toestanden S1-S3, en nog een slaap-met-gebruik-van-harde-schijf toestand (STD) die S4 heet. S5 is zacht uit en is de normale status van een systeem als het is aangesloten maar niet is aangezet. S4 kan feitelijk op twee manieren geïmplementeerd worden: S4BIOS is een slaapstand naar schijf met behulp van het BIOS en S4OS wordt volledig door het besturingssysteem geïmplenteerd. als eerste dienen de sysctl hw.acpi items die iets met de slaapstand te maken hebben gecontroleerd te worden. Hieronder staan de resultaten voor een Thinkpad: hw.acpi.supported_sleep_state: S3 S4 S5 hw.acpi.s4bios: 0 Dit betekent dat hier acpiconf -s gebruikt kan worden om S3, S4OS en S5 te testen. Als gelijk was aan (1), dan zou er S4BIOS ondersteuning zijn in plaats van S4 OS. Als suspend/resume getest moet worden, dient, indien ondersteund, bij S1 begonnen te worden. Deze toestand heeft de grootste kans om te werken, omdat deze niet veel stuurprogrammaondersteuning vereist. Niemand heeft nog S2 geïmplementeerd, maar het is ongeveer hetzelfde als S1. Daarna wordt S3 getest. Dit is het diepste STR-niveau en heeft uitgebreide ondersteuning van stuurprogramma's nodig om hardware goed opnieuw te kunnen starten. Mochten er blokkades optreden, dan kan naar de &a.acpi.name; lijst gemaild worden. Er kan echter geen snelle oplossing verwacht worden, omdat er nog de nodige stuurprogramma's/hardware liggen om getest en bewerkt te worden. Een veelvoorkomend probleem met suspend/resume is dat veel apparaatstuurprogramma's hun firmware, registers of apparaatgeheugen niet fatsoenlijk opslaan, herstellen, of herinitialiseren. Een eerste poging om het probleem te vinden omvat: &prompt.root; sysctl debug.bootverbose=1 &prompt.root; sysctl debug.acpi.suspend_bounce=1 &prompt.root; acpiconf -s 3 Deze test emuleert de suspend/resume-cyclus van alle apparaten zonder daadwerkelijk naar de toestand S3 te gaan. In sommige gevallen kunt u zo eenvoudig problemen vaststellen (bijvoorbeeld het verliezen van de firmware-toestand, timeout van de apparaatwaakhond, en steeds opnieuw iets proberen). Merk op dat het systeem niet werkelijk naar de toestand S3 gaat, wat inhoudt dat apparaten geen spanning verliezen waardoor velen prima zullen werken zelfs als de suspend/resume-methoden geheel ontbreken, dit in tegenstelling tot de echte toestand S3. Moeilijkere gevallen vereisen aanvullende hardware, dat is een serieële poort/kabel voor de serieële console of een Firewire poort/kabel voor &man.dcons.4;, en vaardigheden in het debuggen van de kernel. Om een probleem te kunnen isoleren helpt het om zoveel mogelijk stuurprogramma's uit de kernel te halen. Als dit werkt, kan er teruggewerkt worden naar het stuurprogramma dat schuldig is aan het falen. Meestal vertonen binaire stuurprogramma's als nvidia.ko, X11 beeldschermstuurprogramma's en USB de meeste problemen, terwijl bijvoorbeeld Ethernet-interfaces meestal meteen goed werken. Als de stuurprogramma's zonder problemen geladen en verwijderd kunnen worden, dan is dit te automatiseren door de juiste commando's in /etc/rc.suspend en /etc/rc.resume te zetten. Er staat een voorbeeld (achter commentaartekens) voor het laden en verwijderen van een stuurprogramma. Als het beeldscherm er na wakker worden vreemd uitziet, kan geprobeerd worden op nul te zetten. Met langere of kortere waarden voor kan bekeken worden of dat helpt. In geval van problemen is het ook een optie om een recente &linux; distibutie met ondersteuning voor ACPI support te starten en daarvan de suspend/resume ondersteuning op dezelfde hardware uit te proberen. Als het werkt met &linux;, dan is het waarschijnlijk een &os; stuurprogrammaprobleem en als het mogelijk is uit te vinden over welk stuurprogramma het gaat, kan dat bijdragen aan het oplossen van het probleem. ACPI houdt zich in het algemeen niet bezig met andere stuurprogramma's zoals geluid, ATA, enzovoort. Als er dus een echt probleem met een stuurprogramma is, dan is waarchijnlijk uiteindelijk ook nodig naar de &a.current.name; lijst te posten en naar de beheerder van het stuurprogramma. Voor degenen met moed is het vooral aan te raden een paar &man.printf.3;s in problematische stukken van een stuurprogramma te plaatsen voor debugging om na te gaan waar de resumefunctie precies hangt. Tot slot kan geprobeerd worden om ACPI uit te zetten en in plaats daarvan APM aan te zetten. Als suspend/resume werkt met APM, is het wellicht verstandig het daarbij te houden, vooral met wat oudere apparatuur (voor 2000). Producenten hebben nogal wat tijd nodig gehad om ACPI ondersteuning goed te krijgen en voor oudere hardware is het waarschijnlijker dat er BIOS-problemen zijn met ACPI. Systeem hangt (tijdelijk of permanent) Meestal is het hangen van het systeem het gevolg van verloren interrupts of een interruptstorm. Chipsets kunnen een heleboel problemen hebben, afhankelijk van hoe het BIOS interrupts instelt voor het opstarten, of de APIC (MADT) tabel correct is en de routering van het System Control Interrupt (SCI). interruptstorms Interruptstorms kunnen onderscheiden worden van verloren geraakte interrupts door de uitvoer van vmstat -i te controleren en de regel met acpi0 goed te lezen. Als de teller in toenemende mate hoger staat dan enkele per seconde, dan is sprake van een interruptstorm. Als het systeem lijkt te hangen, is het wellicht nog mogelijk door te dringen tot de DDB (CTRL ALTESC) en show interrupts uit te voeren. APIC uitschakelen De beste hoop in geval van interruptproblemen is om APIC-ondersteuning uit te zetten met hint.apic.0.disabled="1" in loader.conf. Panics Panics zijn relatief zeldzaam met ACPI en krijgen de hoogste prioriteit bij het oplossen. Eerst moeten de verschillende gebeurtenissen waarmee de panic (als mogelijk) te reproduceren is geïsoleerd worden en moet een backtrace gemaakt worden. options DDB dient aangezet te worden en er dient een seriële console () of een &man.dump.8; partitie te komen. In DDB is een backtrace te maken met tr. Als de backtrace handmatig opgeschreven moet worden, is het belangrijk dat in ieder geval de bovenste en onderste vijf (5) regels van de backtrace genoteerd worden. Daarna dient getracht te worden het systeem te starten zonder ACPI. Als dat werkt, is het ACPI-subsysteem geïsoleerd en kunnen de verschillende -waarden uitgeprobeerd worden. In &man.acpi.4; staan enkele voorbeelden. Systeem slaat aan na slaapstand of stop hw.acpi.disable_on_poweroff="0" kan uitgezet worden in &man.loader.conf.5;. Hierdoor schakelt ACPI bepaalde gebeurtenissen tijdens het afsluitproces niet uit. Om dezelfde redenen moeten sommige systemen deze waarde altijd op 1 (standaard) hebben staan. In het algemeen lost dit een probleem op waarbij een systeem spontaan weer opkomt nadat het in slaapstand is gezet of geheel gestopt is. Overige problemen Als er nog andere problemen zijn met ACPI (met een docking station of apparaten niet gedetecteerd, enzovoort), dan kan een mail met beschijving naar de mailinglijst gezonden worden. Sommige zaken kunnen echter gerelateerd zijn aan delen van het ACPI-subsysteem die nog niet af zijn, dus het kan in sommige gevallen een tijd duren. Gebruikers moeten soms geduld en de bereidheid om eventuele patches uit te proberen hebben. <acronym>ASL</acronym>, <command>acpidump</command> en <acronym>IASL</acronym> ACPI ASL Het grootste probleem is dat BIOS-producenten vaak incorrecte (of gewoon foutieve) bytecode leveren. Dit blijkt doorgaans uit kernelboodschappen als: ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\ (Node 0xc3f6d160), AE_NOT_FOUND Vaak kunnen dergelijke problemen geoplost worden door de BIOS bij te werken tot de laatste revisie. De meeste consoleberichten zijn onschuldig, maar als er andere problemen zijn, zoals batterijstatus die niet werkt, dan ligt het voor de hand te zoeken naar problemen in de AML-code. De bytecode die AML genoemd wordt, wordt gecompileerd van een broncodetaal ASL. Deze staat weer in een tabel DSDT. Met &man.acpidump.8; kan een kopie van de ASL gemaakt worden. Dan moeten zowel de opties (laat inhoud van vaste tabellen zien) als (disassembleer AML naar ASL) gebruikt worden. In Debuginformatie aanleveren staat een voorbeeld. De eenvoudigste eerste controle is de ASL-code opnieuw compileren en kijken of er foutmeldingen optreden. Waarschuwingen kunnen doorgaans genegeerd worden, maar fouten zijn bugs die er meestal toe leiden dat ACPI niet correct werkt. Om ASL te hercompileren: &prompt.root; iasl eigen.asl <acronym>ASL</acronym> repareren ACPI ASL Op langere termijn is het de bedoeling dat voor vrijwel elke machine ACPI werkt zonder enig ingrijpen van de gebruiker. Op dit moment wordt er echter nog gewerkt aan oplossingen voor veel voorkomende vergissingen die BIOS-producenten maken. De µsoft; interpreter (acpi.sys en acpiec.sys) controleert niet strikt of het BIOS volledig aan de standaard voldoet, waardoor het voorkomt dat BIOS-makers die alleen testen onder &windows; bepaalde fouten in hun ASL nooit correct repareren. &os; hoopt door te gaan met de identificatie en documentatie van welk niet-standaard gedrag precies wordt toegelaten door µsoft;'s interpreter en te dit te repliceren zodat &os; kan werken zonder dat gebruikers zich gedwongen zien om de ASL te repareren. Als een tijdelijke oplossing en om te helpen met het in kaart brengen van bepaald gedrag, kan de ASL handmatig gerepareerd worden. Mocht dit lukken, dan wordt erop aangedrongen een &man.diff.1; van de oude en de nieuwe ASL te mailen, zodat het foutieve gedrag mogelijk in ACPI-CA kan worden verwerkt, waardoor andere gebruikers niet meer handmatig met hun ASL aan de gang hoeven. ACPI foutmeldingen Hieronder staat een lijst algemene foutmeldingen, hun oorzaken en hoe ze op te lossen: _OS afhankelijkheden Sommige AMLs gaan ervan uit dat de wereld enkel bestaat uit &windows; versies. &os; kan zich voordoen als elk OS om te kijken of dit problemen oplost. Een gemakkelijke manier om dit te doen is hw.acpi.osname="Windows 2001" in te stellen in /boot/loader.conf of andere gelijksoortige strings die in een ASL staan. Ontbrekende return-opdrachten Sommige methoden hebben geen specifieke returnwaarde, zoals wel vereist wordt door de standaard. Hoewel ACPI-CA hier niets mee doet, heeft &os; de mogelijkheid tot impliciete returns. Er kunnen ook expliciete return-opdrachten toegevoegd worden waar vereist, als het bekend is welke waarden teruggevoerd moeten worden. Om iasl te dwingen tot compilatie van ASL kan de schakeloptie gebruikt worden. De standaard <acronym>AML</acronym> aanpassen Nadat eigen.asl aangepast is, kan deze als volgt gecompileerd worden: &prompt.root; iasl eigen.asl Met de optie is af te dwingen dat de AML gemaakt wordt, zelfs als er compileerfouten optreden. Sommige fouten (zoals ontbrekende return-opdrachten) worden automatisch opgelost door de interpreter. DSDT.aml is de standaardnaam voor het bestand dat door iasl wordt geproduceerd. Dit is in plaats van de foutieve versie uit het BIOS (die nog steeds aanwezig is in het flashgeneugen) te laden door /boot/loader.conf als volgt te wijzigen: acpi_dsdt_load="YES" acpi_dsdt_name="/boot/DSDT.aml" DSDT.aml moet in de map /boot staan. Debuguitvoer van <acronym>ACPI</acronym> verkrijgen ACPI problemen ACPI debuggen Het stuurprogramma ACPI heeft een zeer flexibele debugfaciliteit. Er kan zowel een verzameling van subsystemen aangegeven worden als het niveau van uitvoerigheid. De te debuggen subsystemen worden aangegeven als lagen (layers) en zijn opgedeeld in ACPI-CA-componenten (ACPI_ALL_COMPONENTS) en ACPI-hardware-ondersteuning (ACPI_ALL_DRIVERS). De uitvoerigheid van debuguitvoer wordt aangegeven als het niveau (level) en gaat van CPI_LV_ERROR (alleen fouten rapporteren) tot ACPI_LV_VERBOSE (alles). Het niveau is een bitmasker en dus kunnen er meerdere opties tegelijk ingeschakeld worden (gescheiden door spaties). In de praktijk wordt wellicht een seriële console gebruikt om de uitvoer te loggen als deze zo omvangrijk is dat de console berichtbuffer vol loopt (misschien wel meerdere keren). Een complete lijst van de individuele lagen en niveaus staat in &man.acpi.4;. Debuguitvoer staat standaard niet aan. Door options ACPI_DEBUG toe te voegen aan het bestand met kernelinstellingen als ACPI als de kernel is gebouwd, wordt het ingeschakeld. Door ACPI_DEBUG=1 toe te voegen aan /etc/make.conf wordt het systeembreed ingeschakeld. Als ACPI als module wordt gebruikt (de normale situatie), dan hoeft slechts de module acpi.ko opnieuw gecompileerd te worden: &prompt.root; cd /sys/modules/acpi/acpi && make clean && make ACPI_DEBUG=1 acpi.ko moet in /boot/kernel komen te staan en de gewenste debuglaag en het gewenste niveau van uitvoerigheid dienen toegevoegd te worden aan loader.conf. Hieronder een voorbeeld waarmee debuguitvoer wordt aangezet voor alle ACPI-CA-componenten en alle ACPI-hardware-stuurprogramma's (CPU, LID, enzovoort. Het niveau van uitvoerigheid is het laagst mogelijke. Er worden alleen fouten gemeld. debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS" debug.acpi.level="ACPI_LV_ERROR" Als de gezochte informatie wordt veroorzaakt door een specifieke gebeurtenis (bijvoorbeeld in en uit slaapstand gaan), dan kunnen wijzigingen aan loader.conf achterwege blijven en in plaats daarvan kan sysctl gebruikt worden om laag en niveau in te stellen na het opstarten en zo het systeem voor te bereiden op die specifieke gebeurtenis. De sysctls hebben dezelfde namen als de parameters in loader.conf. Verwijzingen Meer informatie over ACPI staat op de volgende locaties: De &a.acpi; De ACPI mailinglijst archieven De oude ACPI mailinglijst archieven De ACPI 2.0 specificatie &os; Handleidingen: &man.acpi.4;, &man.acpi.thermal.4;, &man.acpidump.8;, &man.iasl.8;, &man.acpidb.8; DSDT debugging informatie. (Gebruikt Compaq als voorbeeld, maar van algemeen nut). Index: translations/nl_NL.ISO8859-1/books/handbook/disks/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/disks/chapter.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/disks/chapter.xml (revision 40367) @@ -1,5185 +1,5185 @@ René Ladan Vertaald door Opslag Overzicht Dit hoofdstuk behandelt het gebruik van schijven in &os;. Dit omvat geheugenschijven, schijven die met het netwerk verbonden zijn, SCSI/IDE-opslagapparaten en apparaten die gebruik maken van de USB-interface. Na het lezen van dit hoofdstuk weet de lezer: Welke terminologie &os; gebruikt om de gegevensindeling op een fysieke schijf te beschrijven (partities en slices); Hoe aanvullende harde schijven aan een systeem toe te voegen; Hoe &os; in te stellen om het gebruik te laten maken van USB-opslagapparaten; Hoe virtuële bestandssystemen, zoals geheugenschijven, aan te maken; Hoe quota te gebruiken om het schijfgebruik te beperken; Hoe schijven te versleutelen om ze tegen inbrekers te beschermen; Hoe vanuit &os; CD's en DVD's aan te maken en te branden; Wat de verschillende mogelijkheden zijn voor opslagmedia voor back-ups; Hoe back-upprogramma's te gebruiken die beschikbaar zijn in &os;; Hoe een back-up naar diskettes te maken; Wat bestandssysteem snapshots zijn en hoe ze efficiënt te gebruiken. Aangeraden voorkennis: Hoe een nieuwe &os;-kernel in te stellen en te installeren (). Apparaatnamen De volgende lijst noemt de fysieke opslagapparaten die in &os; ondersteund worden, samen met de bijhorende namen. Naamconventies voor fysieke Schijven Type medium Apparaatnaam medium IDE harde schijven ad IDE CD-ROM-stations acd SCSI harde schijven en USB-apparaten voor massa-opslag da SCSI CD-ROM-schijven cd Overige niet-standaard-CD-ROM-stations mcd voor Mitsumi CD-ROM en scd voor Sony CD-ROM apparaten. Diskettestations fd SCSI bandstations sa IDE bandstations ast Flashdrives fla voor &diskonchip; flashapparaten RAID-schijven aacd voor &adaptec; AdvancedRAID, mlxd en mlyd voor &mylex;, amrd voor AMI &megaraid;, idad voor Compaq Smart RAID, twed voor &tm.3ware; RAID.
David O'Brien Origineel bijgedragen door Schijven toevoegen schijven toevoegen De volgende sectie beschrijft hoe een nieuwe SCSI schijf aan een machine toe te voegen die slechts een enkele drive heeft. Ten eerste dient de computer uitgeschakeld te worden en dient de schijf volgens de instructies van de computer, controller en schijffabrikant geïnstalleerd te worden. Wegens de grote variéteiten om dit soort procedures uit te voeren, vallen de details buiten het bereik van dit document. Er dient als gebruiker root ingelogd te worden. Nadat de schijf is toegevoegd, dient /var/run/dmesg.boot bekeken te worden om er zeker van te zijn dat de nieuwe schijf is gevonden. Volgens het voorbeeld heet de nieuw toegevoegde schijf da1 en die wordt aangekoppeld op /1 (als er een IDE-schijf wordt toegevoegd, is de apparaatnaam ad1). partities slices fdisk &os; draait op IBM-PC-compatibele computers. Daarom moet het rekening houden met de PC-BIOS-partities. Deze wijken af van de traditionele BSD-partities. Een PC-schijf bevat tot vier ingangen voor BIOS-partities. Indien de schijf geheel aan &os; wordt gewijd, kan de toegewijde-modus gebruikt worden. In het andere geval moet &os; binnen één van de vier PC-BIOS-partities draaien. De PC-BIOS-partities worden door &os; slices genoemd om ze niet met de traditionele BSD-partities te verwarren. Slices kunnen ook op een schijf worden gebruikt die toegewijd is aan &os;, maar in een computer zit die ook andere besturingssystemen heeft geïnstalleerd. Dit is een goede manier om verwarring met het programma fdisk van andere, niet-&os; besturingssystemen te voorkomen. Als er met slices gewerkt wordt, wordt de schijf toegevoegd als /dev/da1s1e. Dit moet worden gelezen als: SCSI-schijf, eenheid 1 (tweede SCSI-schijf), slice 1 (PC-BIOS-partitie 1) en BSD-partitie e. Als de schijf toegewijd is, wordt deze simpelweg als /dev/da1e toegevoegd. Omdat 32-bit-integers worden gebruikt om het aantal sectoren op te slaan, is &man.bsdlabel.8; beperkt tot 2^32-1 sectoren per schijf, wat meestal neerkomt op 2 TB. Het programma &man.fdisk.8; staat geen hogere startsector toe dan 2^32-1 en geen grotere lengte dan 2^32-1, meestal worden hiermee partities tot 2 TB begrensd en schijven tot 4 TB. Het formaat van &man.sunlabel.8; is beperkt tot 2^32-1 sectoren per partitie en 8 partities per schijf, in totaal dus 16 TB. Voor grotere schijven kan &man.gpart.8; worden gebruikt om GPT-partities aan te maken. GPT heeft het bijkomende voordeel dat het niet tot 4 slices beperkt is. &man.sysinstall.8; gebruiken sysinstall schijven toevoegen su Navigeren door <application>sysinstall</application> sysinstall kan gebruikt worden om een nieuwe schijf te partitioneren en te labelen met eenvoudig te gebruiken menu's. Hiervoor dient òfwel als gebruiker root ingelogd te zijn, òfwel gebruik te worden gemaakt van su. Draai sysinstall en ga naar het menu Configure. Scroll binnen het &os; Configuration Menu naar beneden en kies de optie Fdisk. <application>fdisk</application> partitie-bewerker Eenmaal binnen fdisk kan op A gedrukt worden om de gehele schijf voor &os; te gebruiken. Wanneer gevraagd wordt of het systeem compatibel dient te blijven met mogelijk toekomstige besturingssystemen, dient met YES geantwoord te worden. Met W kunnen de veranderingen naar de schijf worden geschreven. Nu dient de FDISK-bewerker verlaten te worden door op Q te drukken. Vervolgens wordt er een vraag gesteld over het Master Boot Record. Omdat er een schijf aan een reeds draaiend systeem wordt toegevoegd, dient hier None gekozen te worden. Schijflabelbewerker BSD-partities Vervolgens dient sysinstall verlaten en opnieuw gestart te worden. Volg bovenstaande aanwijzingen, maar kies deze keer voor de optie Label. Dit geeft toegang tot de Disk Label Editor. Hier worden de traditionele BSD-partities aangemaakt. Een schijf kan tot acht partities bevatten, gelabeld a-h. Enkele partitielabels hebben een speciale functie. De partitie a wordt gebruikt voor de rootpartitie (/). Alleen de systeemschijf (bijvoorbeeld de schijf van waaruit opgestart wordt) moet een partitie a hebben. De partitie b wordt voor swappartities gebruikt, en het is mogelijk om vele schijven met swappartities te hebben. De partitie c adresseert de gehele schijf in toegewijde modus, of de gehele &os;-slice in slice-modus. De andere partities zijn voor algemeen gebruik. sysinstall's Labelbewerker heeft een voorkeur voor de partitie e voor niet-root-niet-swap-partities. Binnen de Labelbewerker dient een enkel bestandssysteem te worden aangemaakt door op C te drukken. Kies FS wanneer gevraagd wordt of dit een FS (file system) of swap wordt, en geef een koppelpunt in (bijvoorbeeld /mnt). Wanneer een schijf in post-installatie-modus wordt toegevoegd, maakt sysinstall geen ingangen aan in /etc/fstab, dus dan is het opgegeven koppelpunt niet van belang. Nu kan het nieuwe label naar de schijf worden geschreven en er een bestandssysteem op aangemaakt worden. Dit kan gedaan worden door op W te drukken. Fouten van sysinstall dat de nieuwe partitie niet aankoppeld kon worden kunnen genegeerd worden. De Labelbewerker en sysinstall kunnen nu volledig verlaten worden. Afronden De laatste stap bestaat uit het bewerken van /etc/fstab om hier een regel voor de nieuwe schijf aan toe te voegen. Het gebruik van opdrachtregelgereedschappen Het gebruik van slices Deze installatie zorgt ervoor dat de schijf correct samenwerkt met andere besturingssystemen die eventueel op de computer zijn geïnstalleerd en dat de fdisk-gereedschappen van andere besturingssystemen niet verward raken. Het wordt aangeraden om deze methode te gebruiken voor de installatie van nieuwe schijven. Gebruik de toegewijde modus alleen als hier een goede reden voor bestaat! &prompt.root; dd if=/dev/zero of/dev/da1 bs=1k count=1 &prompt.root; fdisk -BI da1 # Initialiseer de nieuwe schijf. &prompt.root; bsdlabel -B -w da1s1 auto # Label de schijf. &prompt.root; bsdlabel -e da1s1 # Bewerk de zojuist aangemaakte schijflabel en voeg partities toe. &prompt.root; mkdir -p /1 &prompt.root; newfs /dev/da1s1e # Herhaal dit voor alle aangemaakte partities. &prompt.root; mount /dev/da1s1e /1 # Mount de partitie(s). &prompt.root; vi /etc/fstab # Voeg de juiste regel(s) aan /etc/fstab toe. Vervang voor een IDE-schijf da door ad. Toegewijd OS/2 Indien de nieuwe schijf niet met een ander besturingssysteem gedeeld wordt, kan de toegewijde modus gebruikt worden. Denk eraan dat deze modus besturingssystemen van Microsoft kan verwarren. Ze richten echter geen schade aan. IBM's &os2; fatsoeneert echter partities die het niet begrijpt. &prompt.root; dd if=/dev/zero of=/dev/da1 bs=1k count=1 &prompt.root; bsdlabel -Bw da1 auto &prompt.root; bsdlabel -e da1 # Maak de `e'-partitie aan. &prompt.root; newfs /dev/da1e &prompt.root; mkdir -p /1 &prompt.root; vi /etc/fstab # Voeg een regel voor /dev/da1e toe. &prompt.root; mount /1 Een alternatieve methode is: &prompt.root; dd if=/dev/zero of=/dev/da1 count=2 &prompt.root; bsdlabel /dev/da1 | bsdlabel -BR da1 /dev/stdin &prompt.root; newfs /dev/da1e &prompt.root; mkdir -p /1 # Voeg een regel voor /dev/da1e toe. &prompt.root; mount /1 RAID Software RAID Christopher Shumway Origineel werk van Jim Brown Herzien door Concatenated Disk Driver (CCD) instellingen RAID softwarematig RAID CCD Bij het kiezen van een medium voor massa-opslag zijn de belangrijkste afwegingen snelheid, betrouwbaarheid en kosten. Het komt zelden voor dat alle drie in balans zijn. Normaalgesproken is een snel, betrouwbaar apparaat voor massa-opslag duur en kosten sparen gaat ten koste van òfwel snelheid òfwel betrouwbaarheid. Bij het ontwerpen van het onderstaande systeem werd primair op de kosten gelet, gevolgd door snelheid en als laatste betrouwbaarheid. De overdrachtsnelheid van gegevens wordt voor dit systeem uiteindelijk beperkt door het netwerk. En hoewel betrouwbaarheid erg belangrijk is, wordt onderstaande CCD-schijf gebruikt voor het serven van on-line gegevens die reeds volledig op CD-R's zijn geback-upt en eenvoudig vervangen kunnen worden. De eerste stap in het kiezen van een massa-opslagoplossing is het bepalen van de eigen benodigdheden. Indien snelheid belangrijker is dan betrouwbaarheid of kosten, wijkt de oplossing af van het systeem dat in deze sectie wordt beschreven. Hardware installeren Als aanvulling op de IDE systeemschijf zijn drie Western Digital IDE-schijven van 30 GB, 5400 RPM vanuit de kern van de onderstaande CCD-schijf aanwezig, die ongeveer 90 GB aan on-line opslag bieden. Ideaal gezien heeft iedere IDE-schijf een eigen IDE-controller en kabel, maar om de kosten te minimaliseren zijn geen aanvullende IDE-kabels gebruikt. In plaats hiervan zijn de schijven zodanig met jumpers ingesteld dat elke IDE-controller één master en één slave heeft. Tijdens het opnieuw opstarten werd het systeem-BIOS zodanig ingesteld dat het automatisch de aangekoppelde schijven detecteerde. Het was belangrijker dat &os; ze tijdens het opnieuw opstarten herkende: ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33 ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33 ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33 ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33 Indien &os; niet alle schijven detecteert, moet gecontroleerd worden of de jumpers juist zijn ingesteld. De meeste IDE-schijven hebben ook een jumper voor Cable Select. Dit is niet de jumper voor de master/slave-instelling. Voor hulp met het identificeren van de juiste jumper dient de documentatie van de schijf geraadpleegd te worden. Vervolgens dient besloten te worden hoe ze deel gaan uitmaken van het bestandssysteem. Hiervoor dienen &man.vinum.4; () en &man.ccd.4; bestudeerd te worden. Voor deze instellingen werd voor &man.ccd.4; gekozen. CCD installeren Het stuurprogramma &man.ccd.4; biedt de mogelijkheid om meerdere identieke schijven aaneen te rijgen tot één logisch bestandssysteem. Om gebruik te kunnen maken van &man.ccd.4; is een kernel met ingebouwde ondersteuning voor &man.ccd.4; nodig. De volgende regel dient toegevoegd te worden aan het kernelinstellingenbestand en de kernel dient opnieuw gebouwd en geïnstalleerd te worden: device ccd Om &man.ccd.4; te installeren dient eerst &man.bsdlabel.8; gebruikt te worden om de schijven te labelen: bsdlabel -w -ad1 auto bsdlabel -w ad2 auto bsdlabel -w ad3 auto Bovenstaande maakt een schijflabel aan voor ad1c, ad2c en ad3c die de gehele schijf beslaat. Vervolgens dient het labeltype van de schijf veranderd te worden. Voor het bewerken van de schijven kan &man.bsdlabel.8; gebruikt worden: bsdlabel -e ad1 bsdlabel -e ad2 bsdlabel -e ad3 Dit zorgt ervoor dat het huidige schijflabel van elke schijf met de tekstverwerker wordt geopend die door de omgevingsvariabele EDITOR wordt gespecificeerd, vaak &man.vi.1;. Een ongewijzigd schijflabel ziet er ongeveer als volgt uit: 8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597) Er dient een nieuwe partitie e toegevoegd te worden die door &man.ccd.4; gebruikt kan worden. Deze kan gewoonlijk van partitie c overgenomen worden, maar het moet 4.2BSD zijn. Het schijflabel ziet er nu ongeveer als volgt uit: 8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597) e: 60074784 0 4.2BSD 0 0 0 # (Cyl. 0 - 59597) Bestandssysteem aanmaken Nu alle schijven gelabeld zijn, moet de &man.ccd.4; gebouwd worden. Om dit te doen, dient &man.ccdconfig.8; gebruikt te worden met opties die ongeveer gelijk zijn aan de volgende: ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e Hieronder staat het gebruik en de betekenis van elke optie: Het eerste argument is het in te stellen apparaat, in dit geval /dev/ccd0c. Het gedeelte /dev/ is optioneel. De interleave voor het bestandssysteem. De interleave definiëert de grootte van een stripe in schijfblokken, elk schijfblok is normaalgesproken 512 bytes groot. Een interleave van 32 is dus 16.384 bytes groot. Vlaggen voor &man.ccdconfig.8;. Indien het gewenst is om schijfspiegeling aan te zetten, kan er hier een vlag voor gespecificeerd worden. Deze opstelling biedt geen spiegeling voor &man.ccd.4;, dus is die op 0 (nul) ingesteld. De laatste argumenten voor &man.ccdconfig.8; zijn de apparaten die in de rij geplaatst dienen te worden. Voor elk apparaat dient de complete padnaam gebruikt te worden. Nadat &man.ccdconfig.8; gedraaid is, is de &man.ccd.4; ingesteld. Er kan een bestandssysteem worden geïnstalleerd. Er kan in &man.newfs.8; worden gekeken voor opties, of het draaien van het onderstaande commando is ook toereikend: newfs /dev/ccd0c Alles automatisch maken In het algemeen is het wenselijk om de &man.ccd.4; telkens te mouten wanneer er opnieuw opgestart wordt. Dit dient eerst ingesteld te worden. Met het volgende commando worden de huidige instellingen naar /etc/ccd.conf geschreven: ccdconfig -g > /etc/ccd.conf Tijdens het opstarten draait het script /etc/rc ccdconfig -C indien /etc/ccd.conf bestaat. Dit stelt automatisch de &man.ccd.4; in, zodat die kan worden aangekoppeld. Indien er in enkele-gebruiker-modus wordt opgestart, dient het volgende commando te worden uitgevoerd om de rij in te stellen voordat de &man.ccd.4; aangekoppeld kan worden: ccdconfig -C Om de &man.ccd.4; automatisch aan te koppelen, kan er een regel voor de &man.ccd.4; in /etc/fstab geplaatst worden, zodat die tijdens het opstarten aangekoppeld wordt: /dev/ccd0c /media ufs rw 2 2 Volumebeheerder Vinum RAID software RAID Vinum De volumebeheerder Vinum is een blokstuurprogramma dat virtuele schijven implementeert. Het isoleert schijfhardware van de blokapparaat-interface en projecteert gegevens op een manier die de flexibiliteit, prestatie en betrouwbaarheid verhoogt in vergelijking met de traditionele slice-blik op schijfopslag. &man.vinum.4; implementeert de modellen RAID-0, RAID-1 en RAID-5, zowel individueel als als combinatie. In staat meer informatie over &man.vinum.4;. Hardwarematige RAID RAID hardwarematig &os; ondersteunt ook een verscheidenheid aan hardwarematige RAID-stuurprogramma's. Deze apparaten besturen een RAID-deelsysteem zonder dat er &os;-specifieke software nodig is om de rij te beheren. Door gebruik te maken van een BIOS die op de kaart aanwezig is, beheert de kaart de meeste schijfbewerkingen zelf. Nu volgt een korte beschrijving van een opzet waarbij een Promise IDE-stuurprogramma is gebruikt. Wanneer deze kaart geïnstalleerd en het systeem opgestart is, beeldt het een prompt af waarbij om informatie wordt gevraagd. De instructies dienen opgevolgd te worden om bij het instelscherm van de kaart te komen. Van hieruit kunnen alle aangekoppelde schijven gecombineerd worden. Nadat dit gedaan is, zien de schijven er voor &os; als één enkele schijf uit. Andere RAID-niveaus kunnen overeenkomstig ingesteld worden. ATA RAID1-rijen opnieuw bouwen Met &os; is het mogelijk om een defecte schijf in een rij te vervangen terwijl de computer aanstaat (hot replace). Hiervoor dient de schijf vóór het opnieuw opstarten vervangen te zijn. Waarschijnlijk is zoiets als het volgende in /var/log/messages of in de uitvoer van &man.dmesg.8; te zien: ad6 on monster1 suffered a hard error. ad6: READ command timeout tag=0 serv=0 - resetting ad6: trying fallback to PIO mode ata3: resetting devices .. done ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\ status=59 error=40 ar0: WARNING - mirror lost Meer informatie kan met behulp van &man.atacontrol.8; gezocht worden: &prompt.root; atacontrol list ATA channel 0: Master: no device present Slave: acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0 ATA channel 1: Master: no device present Slave: no device present ATA channel 2: Master: ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present ATA channel 3: Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present &prompt.root; atacontrol status ar0 ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED Ontkoppel eerst het ata kanaal met de falende schijf zodat deze veilig kan worden verwijderd: &prompt.root; atacontrol detach ata3 Vervang de schijf. Koppel het ata kanaal opnieuw aan: &prompt.root; atacontrol attach ata3 Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present Voeg de nieuwe schijf toe aan de rij als reserve: &prompt.root; atacontrol addspare ar0 ad6 De rij dient nu opnieuw opgebouwd te worden: &prompt.root; atacontrol rebuild ar0 Het is mogelijk de voortgang te volgen met het volgende commando: &prompt.root; dmesg | tail -10 [uitvoer verwijderd] ad6: removed from configuration ad6: deleted from ar0 disk1 ad6: inserted into ar0 disk1 as spare &prompt.root; atacontrol status ar0 ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed Nu moet er gewacht worden tot de bewerking voltooid is. Marc Fonvieille Bijgedragen door USB-opslagapparaten USB schijven Veel externe opslagoplossingen gebruiken tegenwoordig de Universele Seriële Bus (USB): harde schijven, USB-duimdrives, CD-R-branders, etc. &os; biedt voor al dit soort apparaten ondersteuning. Instellen Het stuurprogramma &man.umass.4; biedt de ondersteuning voor USB-opslagapparaten. Indien de kernel GENERIC wordt gebruikt, hoeft er niets aan de instellingen gewijzigd te worden. Als er een eigen kernel wordt gebruikt, dienen de volgende regels in het kernelinstellingenbestand aanwezig zijn: device scbus device da device pass device uhci device ohci device ehci device usb device umass Het stuurprogramma &man.umass.4; gebruikt het subsysteem SCSI om toegang te krijgen tot de USB-opslagapparaten. Het USB-apparaat wordt door het systeem als een SCSI-apparaat gezien. Afhankelijk van de chipset op het moederbord is slechts òf device uhci òf device ohci nodig voor ondersteuning van USB 1.X. Het kan echter geen kwaad om ze beiden in het kernelinstellingenbestand te hebben. Ondersteuning voor USB 2.0 wordt geleverd door het stuurprogramma &man.ehci.4; (de regel met device ehci). Indien er regels zijn toegevoegd dient de kernel opnieuw gecompileerd en geïnstalleerd te worden. Indien het USB-apparaat een CD-R- of DVD-brander is, dient het SCSI CD-ROM-stuurprogramma &man.cd.4; met de volgende regel aan de kernel toegevoegd te worden: device cd Aangezien de brander als een SCSI-schijf gezien wordt, dient het stuurprogramma &man.atapicam.4; niet in de kernelinstellingen gebruikt te worden. Instellingen testen De instellingen zijn klaar om getest te worden: het USB-apparaat dient aangesloten te worden en in de buffer voor systeemmeldingen (&man.dmesg.8;) dient het stuurprogramma ongeveer als volgt te verschijnen: umass0: USB Solid state disk, rev 1.10/1.00, addr 2 GEOM: create disk da0 dp=0xc2d74850 da0 at umass-sim0 bus 0 target 0 lun 0 da0: <Generic Traveling Disk 1.11> Removable Direct Access SCSI-2 device da0: 1.000MB/s transfers da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C) Uiteraard kunnen het merk, de apparaatnode (da0) en andere details verschillen naar gelang de instelling. Aangezien het USB-apparaat als een SCSI-apparaat gezien wordt, kan het commando camcontrol gebruikt worden om de USB-opslagapparaten weer te geven die aan het systeem gekoppeld zijn: &prompt.root; camcontrol devlist <Generic Traveling Disk 1.11> at scbus0 target 0 lun 0 (da0,pass0) Indien er een bestandssysteem op de schijf aanwezig is, kan dat aangekoppeld worden. biedt indien nodig hulp bij het formatteren en aanmaken van partities op de USB-drive. Door het toestaan dat gewone gebruikers verschillende media kunnen koppelen door bijvoorbeeld het aanzetten van vfs.usermount zoals hieronder beschreven, zou niet als veilig beschoud moeten worden uit een beveiligings oogpunt. Veel bestandssystemen in &os; zijn niet geschreven om beveiliging te bieden tegen kwaadaardige apparaten. Om het apparaat koppelbaar te maken voor de gewone gebruiker moeten er een aantal stappen ondernomen worden. Als eerste moeten de apparaten die gecreeerd worden wanneer het USB opslag- medium wordt toegevoegd toegankelijk zijn voor de gebruiker. Een oplossing is om alle gebruikers die deze rechten nodig hebben toe te voegen aan de operator groep. Dit kan gedaan worden met &man.pw.8;. Daarna moet het voor de operator groep mogelijk zijn te lezen en te schrijven naar de gecreeerde apparaten. Dit kan bewerkstelligd worden door de volgende regels toe te voegen aan /etc/devfs.rules: [localrules=5] add path 'da*' mode 0660 group operator Als er SCSI schijven in het systeem aanwezig zijn moet dit anders aangepakt worden. Stel dat het systeem reeds over de volgende schijven beschikt da0 tot en met da2, verander de regel dan in het volgende: add path 'da[3-9]*' mode 0660 group operator Dit sluit de reeds bestaande schijven buiten van toegang door de operator groep. Erna moet ook de nieuwe ruleset voor &man.devfs.rules.5; ingeschakeld worden door middel van /etc/rc.conf: devfs_system_ruleset="localrules" Hierna moet de kernel worden geconfigureerd zodat gewone gebruikers rechten krijgen om bestandssystemen te koppelen. De makkelijkste manier is door de volgende regel toe te voegen aan /etc/sysctl.conf: vfs.usermount=1 Let op, deze wijziging wordt pas actief na de volgende start van het systeem. Als alternatief kan ook &man.sysctl.8; gebruikt worden om deze variabele te zetten. De laatste stap is het creëeren van de map waar het bestandssysteem gekoppeld wordt. Deze map moet eigendom zijn van de gebruiker die het bestandssysteem gaat koppelen. Een manier om dat te bewerkstelligen is door met de gebruiker root een submap aan te maken die eigendom is van de gebruiker als /mntgebruikersnaam (verander gebruikersnaam door de loginnaam van de daadwerkelijke gebruiker en gebruikersgroep door de primaire groep van de gebruiker): &prompt.root; mkdir /mnt/gebruikersnaam &prompt.root; chown gebruikersnaam:gebruikersgroep /mnt/gebruikersnaam Stel dat er vervolgens een USB-stick ingeplugged wordt en er een /dev/da0s1 aangemaakt wordt. Omdat deze apparaten meestal voorgeformatteerd met een FAT-bestandssysteem komen, kan deze als volgende gekoppeld worden: &prompt.user; mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/gebruikersnaam Indien het apparaat losgekoppeld wordt (nadat de schijf afgekoppeld is), dient in de buffer voor systeemmeldingen iets als het volgende te zien te zijn: umass0: at uhub0 port 1 (addr2) disconnected (da0:umass-sim0:0:0:0): lost device (da0:umass-sim0:0:0:0): removing device entry GEOM: destroy disk da0 dp=0xc2d74850 umass0: detached Referenties Naast de onderdelen Schijven toevoegen en Bestandssystemen aan- en afkoppelen, kunnen de volgende hulppagina's ook nuttig zijn: &man.umass.4;, &man.camcontrol.8; en &man.usbconfig.8; voor &os; 8.X of &man.usbdevs.8; voor eerdere versies van &os;. Mike Meyer Bijgedragen door Optische media (CD's) aanmaken en gebruiken CD-ROM's aanmaken Inleiding CD's hebben een aantal eigenschappen waardoor ze verschillen van conventionele schijven. Initieel zijn ze door de gebruiker niet beschrijfbaar. Ze zijn zó ontworpen dat ze continu, zonder vertragingen van het verplaatsen van de kop tussen tracks, gelezen kunnen worden. Ze zijn ook veel gemakkelijker tussen twee systemen te verplaatsen dan gelijksoortige media in hun tijd waren. CD's hebben tracks, maar die verwijzen naar secties van gegevens die continu gelezen dienen te worden en niet naar fysieke eigenschappen van de schijf. Om een CD op &os; te produceren, dienen de gegevensbestanden waaruit de tracks op de CD gaan bestaan te worden voorbereid, waarna de tracks op de CD worden geschreven. ISO 9660 bestandssystemen ISO 9660 Het bestandssysteem ISO 9660 is ontworpen om met deze verschillen om te gaan. Helaas codeert het bestandssysteemgrenzen die destijds gebruikelijk waren. Gelukkig biedt het een uitbreidingsmechanisme dat correct geschreven CD's toestaat om deze grenzen te overschrijden en nog steeds te werken met systemen die deze uitbreidingen niet ondersteunen. sysutils/cdrtools De port sysutils/cdrtools bevat &man.mkisofs.8;, een programma dat gebruikt kan worden om een gegevensbestand aan te maken dat een ISO 9660-bestandssysteem bevat. Het bevat opties die verschillende uitbreidingen ondersteunen en wordt hieronder beschreven. CD-brander ATAPI Het gereedschap om de CD te branden hangt af van het feit of de CD-brander ATAPI of iets anders is. ATAPI CD-branders gebruiken het programma burncd dat deel uitmaakt van het basissysteem. SCSI en USB CD-branders dienen cdrecord van de port sysutils/cdrtools te gebruiken. Het is ook mogelijk om cdrecord en andere gereedschappen voor SCSI-drives op ATAPI-hardware te gebruiken door middel van de module ATAPI/CAM. Indien CD-brandsoftware met een grafische gebruikersinterface gewenst is, is X-CD-Roast of K3b een mogelijkheid. Deze gereedschappen zijn beschikbaar als package of vanuit de ports sysutils/xcdroast en sysutils/k3b. X-CD-Roast en K3b hebben de module ATAPI/CAM met ATAPI-hardware nodig. <application>mkisofs</application> Het programma &man.mkisofs.8;, dat deel uitmaakt van de port sysutils/cdrtools, maakt een ISO 9660-bestandssysteem aan dat een beeld is van een boomstructuur in de &unix; bestandssysteem-namespace. De eenvoudigste gebruiksvorm is: &prompt.root; mkisofs -o beeldbestand.iso /pad/naar/boomstructuur bestandssystemen ISO 9660 Dit commando maakt een beeldbestand.iso aan dat een ISO 9660-bestandssysteem bevat dat een kopie is van de boomstructuur in /pad/naar/boomstructuur. Tijdens het proces beeldt het bestandsnamen af op namen die aan de beperkingen van het standaard ISO 9660-bestandssysteem voldoen en sluit het bestanden uit die namen hebben die niet karakteristiek zijn voor ISO-bestandssystemen. bestandssystemen HFS bestandssystemen Joliet Er is een aantal opties beschikbaar om over deze beperkingen heen te komen. In het bijzonder zet de Rock Ridge-uitbreidingen aan die gangbaar zijn voor &unix; systemen, zet de Rock Ridge-uitbreidingen aan die gebruikt worden op Microsoft-systemen en kan gebruikt worden om HFS-bestandssystemen aan te maken die door &macos; gebruikt worden. Voor CD's die alleen op &os;-systemen gebruikt gaan worden, kan gebruikt worden om alle restricties op bestandsnamen uit te zetten. Indien het met gebruikt wordt, maakt het een bestandssysteembeeld aan dat identiek is aan de &os;-boomstructuur van waaruit begonnen is, alhoewel het mogelijk is dat het zich op aantal manieren niet aan de ISO 9660-standaard houdt. CD-ROM's opstartbaar maken De laatste optie voor algemeen gebruik is . Deze wordt gebruikt om de plaats van het opstartbeeld aan te geven om een El Torito opstartbare CD te maken. Deze optie heeft een argument nodig, namelijk het pad naar een opstartbeeld dat het begin van de boomstructuur die naar de CD geschreven wordt voorstelt. Gewoonlijk maakt &man.mkisofs.8; een ISO-beeld aan in de zogenaamde diskette-emulatie-modus en verwacht het dus dat het beeldbestand exact 1200, 1440 of 2880 KB groot is. Sommige bootloaders, zoals degene die door de distributieschijven van &os; wordt gebruikt, gebruiken de emulatiemodus niet. In dat geval dient de optie gebruikt te worden. Dus indien /tmp/myboot een opstartbaar &os;-systeem met het beeldbestand in /tmp/myboot/boot/cdboot bevat, kan het beeld van een ISO 9660-bestandssysteem als volgt in /tmp/bootable.iso aangemaakt worden: &prompt.root; mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot Als dit gedaan is en md in de kernel is ingesteld, kan het bestandssysteem gekoppeld worden: &prompt.root; mdconfig -a -t vnode -f /tmp/bootable.iso -u 0 &prompt.root; mount -t cd9660 /dev/md0 /mnt Nu kan gecontroleerd worden of /mnt en /tmp/myboot identiek zijn. Er zijn vele andere opties die met &man.mkisofs.8; gebruikt kunnen worden om het gedrag af te stemmen. In het bijzonder wijzigingen aan een ISO 9660-structuur en het aanmaken van Joliet- en HFS-schijven. Details staan in &man.mkisofs.8;. <application>burncd</application> CD-ROM's branden Indien er een ATAPI CD-brander aanwezig is, kan het commando burncd gebruikt worden om een ISO-beeld naar een CD te branden. burncd maakt deel uit van het basissysteem en is geïnstalleerd als /usr/sbin/burncd. Het gebruik is erg eenvoudig, aangezien het weinig opties heeft. &prompt.root; burncd -f cd-apparaat gegevens beeldbestand.iso fixate Het bovenstaande commando brandt een kopie van beeldbestand.iso naar cd-apparaat. Het standaardapparaat is /dev/acd0. Opties om de schrijfsnelheid in te stellen, de CD na het branden uit te werpen en geluidsgegevens te schrijven staan in &man.burncd.8;. <application>cdrecord</application> Indien er geen ATAPI CD-brander aanwezig is, dient cdrecord gebruikt te worden om CD's te branden. cdrecord maakt geen deel uit van het basissysteem. Het dient òfwel vanuit de port in sysutils/cdrtools òfwel als package geïnstalleerd te worden. Veranderingen in het basissysteem kunnen ervoor zorgen dat binaire versies van dit programma falen, wat mogelijk tot een coaster leidt. Daarom dient òfwel de port bijgewerkt te worden als het systeem wordt bijgewerkt, òwel, als -STABLE gevolgd wordt, dient de port bijgewerkt te worden wanneer er een nieuwe versie beschikbaar komt. Hoewel cdrecord vele opties heeft, is het gebruik voor gewone situaties nog eenvoudiger dan dat van burncd. Een ISO 9660-beeld kan gebrand worden met: &prompt.root; cdrecord dev=device beeldbestand.iso Het lastige gedeelte in het gebruik van cdrecord is het vinden van de juiste . Om de juiste instelling te vinden, kan de vlag van cdrecord gebruikt worden, wat resultaten zoals de onderstaande kan geven: CD-ROM's branden &prompt.root; cdrecord -scanbus Cdrecord-Clone 2.01 (i386-unknown-freebsd7.0) Copyright (C) 1995-2004 Jörg Schilling Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk 0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk 0,2,0 2) * 0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk 0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM 0,5,0 5) * 0,6,0 6) * 0,7,0 7) * scsibus1: 1,0,0 100) * 1,1,0 101) * 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM 1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner 1,7,0 107) * Dit geeft de gepaste -waarden voor de apparaten in de lijst. De CD-brander dient gezocht te worden, waarna de drie getallen gescheiden door komma's gebruikt kunnen worden als de waarde voor . In dit geval is het CD-RW-apparaat 1,5,0, dus is de juiste invoer . Er zijn eenvoudigere manieren om deze waarde te specificeren. In &man.cdrecord.1; staan meer details. Hier staat ook informatie over geluidstracks, de snelheid instellen en meer. Audio-CD's dupliceren Een audio-CD kan gedupliceerd worden door de geluidsgegevens van de CD naar een serie bestanden te schrijven en deze bestanden daarna naar een lege CD te schrijven. Het proces verschilt licht tussen ATAPI- en SCSI-drives. SCSI-drives Onttrek cdda2wav de audio: &prompt.user; cdda2wav -vall -D2,0 -B -Owav Schrijf met cdrecord de .wav-bestanden: &prompt.user; cdrecord -v dev=2,0 -dao -useinfo *.wav Controleer of 2,0 juist is opgegeven, zoals beschreven in . ATAPI-drives Met behulp van de ATAPI/CAM module kan cdda2wav ook gebruikt worden voor ATAPI-drives. Dit gereedschap is vaak een betere keuze voor de meeste gebruikers (jitter-correctie, endianness-zaken, etc.) dan de methode die hieronder wordt voorgesteld. Het ATAPI CD-stuurprogramma maakt elke track beschikbaar als /dev/acddtnn, waarin d het stationsnummer is en nn het tracknummer is in twee decimale cijfers, dat indien nodig vooraf wordt gegaan door een nul. Dus is de eerste track op de eerste schijf /dev/acd0t01, de tweede /dev/acd0t02, de derde /dev/acd0t03, enzovoort. Controleer of de juiste bestanden in /dev bestaan. Als de benodigde namen er niet bijstaan, forceer het systeem dan om opnieuw te kijken: &prompt.root; dd if=/dev/acd0 of=/dev/null count=1 De track kan met &man.dd.1; onttrokken worden. Bij het onttrekken van de bestanden dient een specifieke blokgrootte gebruikt te worden. &prompt.root; dd if=/dev/acd0t01 of=track1.cdr bs=2352 &prompt.root;dd if=/dev/acd0t02 of=track2.cdr bs=2352 ... Brand de onttrokken bestanden met burncd. Er dient opgegeven te worden dat het geluidsbestanden zijn en dat burncd de schijf moet fixeren wanneer na afronding van het proces. &prompt.root; burncd -f /dev/acd0 audio track1.cdr track2.cdr ... fixate Gegevens-CD's dupliceren Een gegevens-CD kan gekopieerd worden naar een beeldbestand dat functioneel gelijk is aan het beeldbestand dat met &man.mkisofs.8; gemaakt is en het kan gebruikt worden om elke gegevens-CD te dupliceren. Het hier gegeven voorbeeld neemt aan dat het CD-ROM-apparaat acd0 is. &prompt.root; dd if=/dev/acd0 of=bestand.iso bs=2048 Nu het beeld beschikbaar is, kan het naar CD geschreven worden zoals hierboven beschreven. Gegevens-CD's gebruiken Nu er een standaard gegevens-CD-ROM is aangemaakt moet deze waarschijnlijk aangekoppeld worden om de gegevens die er op staan te lezen. Normaalgesproken neemt &man.mount.8; aan dat een bestandssysteem van het soort ufs is. Als zoiets als onderstaande geprobeerd wordt komt er een klacht over Incorrect super block en wordt er niet aangekoppeld: &prompt.root; mount /dev/cd0 /mnt De CD-ROM bevat geen UFS-bestandssysteem, dus pogingen om zo aan te koppelen mislukken. Er dient aan &man.mount.8; verteld te worden dat het bestandssysteem van het soort ISO9660 is en dan werkt alles. Dit kan door de optie van &man.mount.8; op te geven. Het CD-ROM-apparaat /dev/cd0 onder /mnt aankoppelen kan zo: &prompt.root; mount -t cd9660 /dev/cd0 /mnt De apparaatnaam (in dit voorbeeld /dev/cd0) kan afwijken, afhankelijk van de interface die de CD-ROM gebruikt. Verder voert de optie gewoon &man.mount.cd9660.8; uit. Bovenstaand voorbeeld kan verkort worden tot: &prompt.root; mount_cd9660 /dev/cd0 /mnt Het is in het algemeen mogelijk om gegevens-CD-ROMs van elke fabrikant op deze manier te gebruiken. Schijven met bepaalde uitbreidingen op ISO 9660 kunnen zich echter vreemd gedragen. Joliet-schijven bijvoorbeeld, slaan alle bestandsnamen op in twee-byte Unicode-karakters. De &os;-kernel spreekt geen Unicode, maar het &os; CD9660 stuurprogramma is in staat om Unicode karakters direct te converteren. Als er niet-Engelse karakters verschijnen als vraagtekens, moet de lokale karakterset gedefinieerd worden met de optie. Zie de &man.mount.cd9660.8; handleiding voor meer informatie. Om in staat te zijn om de karakter conversie te doen met behulp van de optie, heeft de kernel de cd9660_iconv.ko module nodig. Deze kan ingeladen worden door het volgende toe te voegen aan /boot/loader.conf: cd9660_iconv_load="YES" en daarna de machine te herstarten of door de module direct in te laden met &man.kldload.8;. Zo nu en dan kan Device not configured verschijnen als geprobeerd wordt om een CD-ROM aan te koppelen. Dit betekent meestal dat het CD-ROM-station denkt dat er geen schijf in de lade ligt of dat het station niet zichtbaar is op de bus. Omdat het enkele seconden kan duren voordat een CD-ROM-station doorheeft dat er een CD-ROM in ligt, is geduld geboden. Soms wordt een SCSI CD-ROM gemist omdat het station niet genoeg tijd had om antwoord te geven op de busreset. Indien er een SCSI CD-ROM aanwezig is, dient de volgende optie aan de kernelinstellingen toegevoegd te worden en de kernel opnieuw gebouwd te worden. options SCSI_DELAY=15000 Dit zorgt ervoor dat de SCSI-bus 15 seconden pauzeert tijdens het opstarten opdat het CD-ROM-station elke gelegenheid krijgt om de busreset te beantwoorden. Rauwe gegevens-CD's branden Een bestand kan direct naar CD geschreven worden zonder een ISO 9660-bestandssysteem aan te maken. Sommige mensen doen dit voor back-updoeleinden. Dit gaat sneller dan een standaard-CD branden: &prompt.root; burncd -f /dev/acd1 -s 12 gegevens archief.tar.gz fixate Om de gegevens terug te halen die op zo'n CD gebrand zijn, is het noodzakelijk om gegevens van de rauwe apparaatnode te lezen: &prompt.root; tar xzvf /dev/acd1 Het is niet mogelijk om deze schijf aan te koppelen zoals dat voor een normale CD-ROM gedaan wordt. Zo'n CD-ROM kan onder geen enkel besturingssysteem, behalve &os;, gelezen worden. Om de CD aan te kunnen koppelen of gegevens te delen met een ander besturingssysteem, dient &man.mkisofs.8; gebruikt te worden, zoals boven beschreven is. Marc Fonvieille Bijgedragen door Het ATAPI/CAM-stuurprogramma gebruiken CD-brander ATAPI/CAM-stuurprogramma Dit stuurprogramma stelt ATAPI-apparaten (CD-ROM, CD-RW, DVD-stations, enzovoort) in staat om vanuit het SCSI-subsysteem benaderd te worden en maakt daarmee het gebruik van applicaties zoals sysutils/cdrdao of &man.cdrecord.1; mogelijk. Om dit stuurprogramma te gebruiken, is het noodzakelijk om de volgende regel aan het /boot/loader.conf bestand toe te voegen: atapicam_load="YES" om daarna de machine opnieuw op te starten. Als het noodzakelijk is om &man.atapicam.4; statisch toe te voegen aan de kernel moet de volgende regel worden toegevoegd aan het kernelinstellingenbestand: device atapicam Ook zijn de volgende regels in het kernelinstellingenbestand nodig, die meestal wel aanwezig zijn: device ata device scbus device cd device pass Hierna dient de nieuwe kernel opnieuw gebouwd en geïnstalleerd te worden en dient de machine opnieuw gestart te worden. Tijdens het opstartproces dient de brander als volgt te verschijnen: acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4 cd0 at ata1 bus 0 target 0 lun 0 cd0: <MATSHITA CD-RW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device cd0: 16.000MB/s transfers cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed Het station is nu toegankelijk via de apparaatnaam /dev/cd0. Om bijvoorbeeld een CD-ROM op /mnt aan te koppelen: &prompt.root; mount -t cd9660 /dev/cd0 /mnt Als root kan het volgende commando gegeven worden om het SCSI-adres van de brander te verkrijgen: &prompt.root; camcontrol devlist <MATSHITA CD-RW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0) Dus 1,0,0 is het SCSI-adres dat met &man.cdrecord.1; en andere SCSI-toepassingen gebruikt dient te worden. Meer informatie over het ATAPI/CAM en het SCSI-systeem staat in de hulppagina's van &man.atapicam.4; en &man.cam.4;. Marc Fonvieille Bijgedragen door Andy Polyakov Met toevoegingen van Optische media (DVD's) aanmaken en gebruiken DVD branden Inleiding Vergeleken met de CD behoort de DVD de tot de volgende generatie van optische media-opslagtechnologie. De DVD kan meer gegevens bevatten dan enige CD en is tegenwoordig de standaard voor videopublicatie. Er kunnen vijf fysieke opneembare formaten gedefinieerd worden die opneembare DVD heten: DVD-R: dit was het eerst beschikbare opneembare DVD-formaat. De DVD-R-standaard is gedefinieerd door het DVD Forum. Dit formaat is voor eenmalig schrijven. DVD-RW: dit is de herschrijfbare versie van de DVD-R-standaard. Een DVD-RW kan tot ongeveer 1.000 maal herschreven worden. DVD-RAM: dit is ook een herschrijfbaar formaat dat door het DVD Forum ondersteund wordt. Een DVD-RAM kan gezien worden als een verwisselbare harde schijf. Dit medium is echter niet uitwisselbaar met de meeste DVD-ROM-stations en DVD-Video-spelers. Slechts enkele DVD-schrijvers ondersteunen het DVD-RAM-formaat. Lees voor meer informatie over het gebruik van DVD-RAM. DVD+RW: dit is het herschrijfbare formaat dat is gedefinieerd door de DVD+RW Alliance. Een DVD+RW kan tot ongeveer 1.000 maal herschreven worden. DVD+R: dit formaat is de eenmalig beschrijfbare versie van het DVD+RW-formaat. Een enkellaags opneembare DVD kan maximaal 4.700.000.000 bytes bevatten, wat eigenlijk 4,38 GB of 4.485 MB is (1 kB is 1024 bytes). Er dient onderscheid gemaakt te worden tussen het fysieke medium en de toepassing. Een DVD-Video bijvoorbeeld is een specifiek bestandsschema dat op elk fysiek opneembaar DVD-medium geschreven kan worden: DVD-R, DVD+R, DVD-RW, enzovoort. Voordat het mediumtype gekozen wordt, dient het zeker te zijn dat zowel de brander als de DVD-Video-speler (een onafhankelijke speler of een DVD-ROM-station in een computer) overweg kunnen met het overwogen medium. Instellingen Het programma &man.growisofs.1; wordt gebruikt om DVD's op te nemen. Dit commando is deel van de dvd+rw-tools gereedschappen (sysutils/dvd+rw-tools). dvd+rw-tools ondersteunt alle types DVD-media. Deze gereedschappen gebruiken het SCSI-subsysteem om toegang tot de apparaten te krijgen, daarvoor moet ondersteuning voor ATAPI/CAM aan de kernel toegevoegd worden. Indien de brander de USB-interface gebruikt, is deze toevoeging nutteloos en dient gelezen te worden voor meer details over het instellen van USB-apparaten. De DMA-toegang voor ATAPI-apparaten dient ook aangezet te worden door de volgende regel aan het bestand /boot/loader.conf toe te voegen: hw.ata.atapi_dma="1" Voordat de dvd+rw-tools gebruikt kunnen worden, dienen de dvd+rw-tools' hardware compatibility notes geraadpleegd te worden voor enige informatie die betrekking heeft op de DVD-brander. Indien een grafische gebruikersinterface gewenst is, is K3b (sysutils/k3b), die een gebruikersvriendelijke interface biedt voor &man.growisofs.1; en vele andere brandprogramma's, het bekijken waard. Gegevens-DVD's branden Het commando &man.growisofs.1; is een frontend voor mkisofs. Het roept &man.mkisofs.8; aan om het bestandssysteemoverzicht aan te maken en het schrijft naar de DVD. Hierdoor is het niet nodig om een beeld van de gegevens aan te maken voordat met branden begonnen wordt. Om de gegevens uit de map /pad/naar/gegevens op een DVD+R of een DVD-R te branden: &prompt.root; growisofs -dvd-compat -Z /dev/cd0 -J -R /pad/naar/gegevens De opties worden doorgegeven aan &man.mkisofs.8; voor het aanmaken van het bestandssysteem (in dit geval een ISO 9660-bestandssysteem met Joliet en Rock Ridge uitbreidingen). Meer details staan in de hulppagina &man.mkisofs.8;. De optie wordt gebruikt voor het opnemen van de eerste sessie, ook bij meerdere sessies. Het DVD-apparaat, /dev/cd0, dient aan de hand van de instellingen aangepast te worden. De parameter sluit de schijf zodat er niets aan de opname toegevoegd kan worden. Dit zou als tegenprestatie betere uitwisselbaarheid met DVD-ROM-stations moeten geven. Het is ook mogelijk om een vooraf gemastered beeld te branden, om bijvoorbeeld het beeld beeldbestand.iso te branden: &prompt.root; growisofs -dvd-compat -Z /dev/cd0=beeldbestand.iso De schrijfsnelheid moet automatisch gedetecteerd en ingesteld worden, afhankelijk van het medium en het gebruikte station. Om de schrijfsnelheid te forceren, dient de parameter gebruikt te worden. Meer informatie staat in de hulppagina &man.growisofs.1;. Om bestanden groter dan 4,38GB in de compilatie op te nemen dient een UDF/ISO-9660 hybride bestandssysteem aangemaakt te worden door de aanvullende parameter aan &man.mkisofs.8; en alle gerelateerde programma's (i.e. &man.growisofs.1;) door te geven. Dit is alleen nodig als een ISO beeldbestand wordt aangemaakt, of als bestanden direct naar een schijf worden geschreven. Schijven die op deze manier zijn aangemaakt moeten als een UDF-bestandssysteem worden aangekoppeld met het hulpmiddel &man.mount.udf.8;, zodat het alleen bruikbaar is op een besturingssysteem dat zich van UDF bewust is, anders zal het lijken of er corrupte bestanden op staan. Om zo'n ISO-bestand aan te maken: &prompt.user; mkisofs -R -J -udf -iso-level 3 -o beeldbestand.iso /pad/naar/gegevens Om de bestanden direct naar een schijf te schrijven: &prompt.root; growisofs -dvd-compat -udf -iso-level 3 -Z /dev/cd0 -J -R /pad/naar/gegevens Wanneer u een ISO-beeld heeft dat al grote bestanden bevat, zijn er geen extra opties nodig om met &man.growisofs.1; het beeld naar een schijf te schrijven. Zorg er ook voor dat u een actuele versie van sysutils/cdrtools heeft (welke &man.mkisofs.8; bevat), aangezien oudere versies geen ondersteuning voor grote bestanden bieden. Als u problemen tegenkomt, gebruik dan de ontwikkelversie, sysutils/cdrtools-devel en lees de handleidingpagina &man.mkisofs.8;. DVD-Video branden DVD DVD-Video Een DVD-Video is een specifiek bestandsschema dat gebaseerd is op de ISO 9660 en de micro-UDF (M-UDF) specificaties. DVD-Video heeft ook een specifieke hiërarchie voor de gegevensstructuur, de reden waarom een speciaal programma zoals multimedia/dvdauthor nodig is om de DVD te schrijven. Indien er reeds een beeld van het bestandssysteem van de DVD-Video beschikbaar is, kan het zoals elk ander beeld gebrand worden. In de vorige sectie staat een voorbeeld. Als het resultaat voor de inhoud voor de DVD bijvoorbeeld in de map /pad/naar/video staat, kan de DVD-Video als volgt gebrand worden: &prompt.root; growisofs -Z /dev/cd0 -dvd-video /pad/naar/video De optie wordt doorgegeven aan &man.mkisofs.8; en geeft het opdracht om een bestandssysteemschema voor een DVD-Video aan te maken. Verder impliceert de optie de optie van &man.growisofs.1;. DVD+RW gebruiken DVD DVD+RW In tegenstelling tot een CD-RW dient een nieuwe DVD+RW voor het eerste gebruik geformatteerd te worden. Het programma &man.growisofs.1; regelt dit automatisch als nodig. Dit is de aanbevolen manier. Het is ook mogelijk om dvd+rw-format te gebruiken om een DVD+RW te formatteren: &prompt.root; dvd+rw-format /dev/cd0 Deze operatie hoeft slechts één maal uitgevoerd te worden. Onthoud dat alleen nieuwe DVD+RW-media geformatteerd dienen te worden. Daarna is het mogelijk om de DVD+RW op dezelfde manier te branden zoals in bovenstaande secties staat vermeldt. Om nieuwe gegevens op een DVD+RW te branden (een geheel nieuw bestandssysteem branden, niet wat gegevens toevoegen), is het niet nodig om deze te wissen. Het is voldoende om de vorige opname te overschrijven (tijdens het aanmaken van een initiële sessie), zoals hieronder: &prompt.root; growisofs -Z /dev/cd0 -J -R /pad/naar/nieuwe gegevens Het DVD+RW-formaat biedt de mogelijkheid om eenvoudig nieuwe gegevens aan een vorige opname toe te voegen. De operatie bestaat uit het samenvoegen van een nieuwe sessie en de bestaande. Het is geen multisessie-schrijven. &man.growisofs.1; laat het ISO 9660-bestandssysteem dat aanwezig is op het medium groeien. Om gegevens aan de vorige DVD+RW toe te voegen: &prompt.root; growisofs -M /dev/cd0 -J -R /pad/naar/volgende gegevens Dezelfde opties van &man.mkisofs.8; die gebruikt werden om de initiële sessie te branden, dienen gebruikt te worden tijdens schrijfsessies. De optie kan gebruikt worden als betere uitwisselbaarheid met DVD-ROM-stations gewenst is. In het geval van een DVD+RW verhindert dit het toevoegen van gegevens niet. Om het medium te wissen: &prompt.root; growisofs -Z /dev/cd0=/dev/zero DVD-RW gebruiken DVD DVD-RW Een DVD-RW accepteert twee schijfformaten: de incrementele sequentiële en beperkt overschrijven. Standaard zijn DVD-RW-schijven in het sequentiële formaat. Een nieuwe DVD-RW kan direct beschreven worden zonder deze te formatteren. Een gebruikte DVD-RW in sequentieel formaat dient echter gewist te worden voordat het mogelijk is om een nieuwe initiële sessie te schrijven. Om een DVD-RW in sequentiële toestand te wissen, dient het volgende gedaan te worden: &prompt.root; dvd+rw-format -blank=full /dev/cd0 Volledig wissen () neemt ongeveer één uur in beslag op een 1x-medium. Het is mogelijk om snel te wissen door gebruik te maken van de optie als de DVD-RW in Disk-At-Once-modus (DAO) wordt opgenomen. Om de DVD-RW in DAO-modus te branden: &prompt.root; growisofs -use-the-force-luke=dao -Z /dev/cd0=beeldbestand.iso De optie is niet nodig aangezien &man.growisofs.1; probeert om minimale (snel gewiste) media te detecteren en gebruik te maken van DAO-schrijven. Eigenlijk moet beperkt overschrijven gebruikt worden met elke DVD-RW. Dit formaat is flexibeler dan het standaard incrementeel sequentiële. Om gegevens op een sequentiële DVD-RW te schrijven, worden dezelfde instructies gebruikt als voor de andere DVD-formaten: &prompt.root; growisofs -Z /dev/cd0 -J -R /pad/naar/gegevens Om wat gegevens aan de vorige opname toe te voegen, dient de optie van &man.growisofs.1; gebruikt te worden. Als echter gegevens aan een DVD-RW in incrementeel sequentiële modus worden toegevoegd, wordt een nieuwe sessie op de schijf aangemaakt wat resulteert in een multisessie schijf. Een DVD-RW in het beperkt overschrijven formaat hoeft niet gewist te worden vóór een nieuwe initiële sessie. Het is voldoende om de schijf te overschrijven met de optie , wat analoog is aan het geval van de DVD+RW. Het is ook mogelijk om een bestaand ISO 9660-bestandssysteem te laten groeien op soortgelijke wijze als voor een DVD+RW met de optie . Het resultaat is een enkelsessie DVD. Om een DVD-RW in het beperkt overschrijven-formaat te zetten: &prompt.root; dvd+rw-format /dev/cd0 Om terug te gaan naar het sequentiële formaat: &prompt.root; dvd+rw-format -blank=full /dev/cd0 Multisessie Multisessie DVD's worden door zeer weinig DVD-ROM-stations geaccepteerd en meestal lezen ze hopelijk tenminste de eerste sessie. DVD+R, DVD-R en DVD-RW kunnen in het sequentiële formaat meerdere sessies accepteren. Het idee van meerdere sessies bestaat niet voor de formaten DVD+RW en DVD-RW in beperkt overschrijven. Om een nieuwe sessie achter een initiële (niet-gesloten) sessie op een DVD+R, DVD-R of DVD-RW in sequentieel formaat toe te voegen: &prompt.root; growisofs -M /dev/cd0 -J -R /pad/naar/volgende gegevens Het gebruik van dit commando met een DVD+RW of een DVD-RW in beperkt overschrijven-formaat voegt gegevens toe door de nieuwe sessie samen te voegen met de bestaande. Dit leidt tot een enkelsessie schijf. Deze manier kan gebruikt worden om gegevens achter een initiële sessie aan deze media toe te voegen. Op deze media wordt wat ruimte gebruikt tussen elke sessie om het einde en begin van de sessies aan te geven. Daarom dienen sessies met grote hoeveelheden gegevens toegevoegd te worden om de mediaruimte te optimaliseren. Het aantal sessies is beperkt tot 154 voor een DVD+R, ongeveer 2000 voor een DVD-R en 127 voor een dubbellaags DVD+R. Meer informatie Om meer informatie over een DVD te verkrijgen kan het commando dvd+rw-mediainfo /dev/cd0 met de schijf in het station gebruikt worden. Meer informatie over dvd+rw-tools staat in de hulppagina &man.growisofs.1;, op de dvd+rw-tools website en in de archieven van de cdwrite mailing list. De uitvoer van dvd+rw-mediainfo met betrekking tot de resulterende opname of het medium met problemen is verplicht voor elk probleemrapport. Zonder deze uitvoer volgt geen hulp. DVD-RAM gebruiken DVD DVD-RAM Configuratie DVD-RAM schrijvers komen met of een SCSI of een ATAPI interface. DMA toegang voor ATAPI apparaten moet worden ingeschakeld, wat gedaan kan worden door de volgende regel toe te voegen aan /boot/loader.conf: hw.ata.atapi_dma="1" Voorbereiden van het medium Zoals vermeld in de introductie van dit hoofdstuk kan DVD-RAM gezien worden als een verwijderbare harde schijf. Zoals elke andere harde schijf moet de DVD-RAM voorbereid worden voor het eerste gebruik. In het voorbeeld wordt alle beschikbare ruimte gebruikt voor een standaard UFS2 bestandssysteem: &prompt.root; dd if=/dev/zero of=/dev/acd0 bs=2k count=1 &prompt.root; bsdlabel -Bw acd0 &prompt.root; newfs /dev/acd0 Het DVD apparaat, acd0 moet worden gewijzigd naar gelang de configuratie. Het medium gebruiken Zodra de voorgaande operaties uitgevoerd zijn op de DVD-RAM kan het gekoppeld worden net als een normale harde schijf: &prompt.root; mount /dev/acd0 /mnt Hierna zal de DVD-RAM zowel lees- als beschrijfbaar zijn. Julio Merino Origineel werk door Martin Karlsson Herschreven door Diskettes aanmaken en gebruiken Soms is het opslaan van gegevens op een diskette nuttig, bijvoorbeeld als er geen andere verwijderbare opslagmedia beschikbaar zijn of als kleine hoeveelheden gegevens naar een andere computer moeten worden overgedragen. In deze sectie wordt beschreven hoe diskettes in &os; gebruikt dienen te worden. Hier worden hoofdzakelijk het formatteren en gebruik van 3,5 inch DOS-diskettes behandeld, maar de concepten zijn vergelijkbaar voor andere disketteformaten. Diskettes formatteren Het apparaat Diskettes worden benaderd door ingangen in /dev net zoals andere apparaten. Om een rauwe floppy te benaderen gebruikt u /dev/fdN. Formatteren Een diskette dient op laag niveau geformatteerd te worden voordat deze kan worden gebruikt. Dit wordt meestal door de fabrikant gedaan, maar formatteren is een goede manier om de integriteit van het medium te controleren. Hoewel het mogelijk is om grotere (of kleinere) schijfgroottes te forceren, zijn de meeste diskettes ontworpen voor 1440kB. Een diskette kan op laag niveau geformatteerd worden met &man.fdformat.1;. Dit gereedschap verwacht de apparaatnaam als parameter. Op basis van eventuele foutmeldingen kan bepaald worden of een schijf goed of slecht is. Formatteren van floppies Voor het formatteren van de diskette dienen de apparaten /dev/fdN gebruikt te worden. Nadat een 3,5 inch diskette in het station is gestoken: &prompt.root; /usr/sbin/fdformat -f 1440 /dev/fd0 Schijflabels Nadat de diskette op laag niveau is geformatteerd, dient er schijflabel aan gekoppeld te worden. Dit schijflabel wordt later vernietigd, maar het systeem heeft het nodig om later de grootte en de geometrie van de schijf te bepalen. Het nieuwe schijflabel neemt de gehele schijf over en bevat alle benodigde informatie over de geometrie van de diskette. De geometriewaarden van het schijflabel staan vermeld in /etc/disktab. Nu kan &man.bsdlabel.8; als volgt gedraaid worden: &prompt.root; /sbin/bsdlabel -B -w /dev/fd0 fd1440 Bestandssystemen Nu is de diskette klaar om op hoog niveau geformatteerd te worden. Hiermee wordt een nieuw bestandssysteem opgezet, wat &os; in staat stelt om naar de schijf te lezen en te schrijven. Nadat het nieuwe bestandssysteem is aangemaakt, wordt het schijflabel vernietigd, dus om de schijf te herformatteren is het noodzakelijk om het schijflabel opnieuw aan te maken. Het bestandssysteem voor diskettes kan zowel UFS als FAT zijn. FAT is over het algemeen een betere keuze voor diskettes. Om een nieuw bestandssysteem op de diskettes te zetten: &prompt.root; /sbin/newfs_msdos /dev/fd0 De schijf is nu klaar voor gebruik. Diskettes gebruiken Om de diskette te gebruiken kan &man.mount.msdosfs.8; gebruikt worden om het medium aan te koppelen. Ook kan emulators/mtools uit de Portscollectie worden gebruikt. Gegevensbanden aanmaken en gebruiken bandmedia De belangrijkste bandmedia zijn de 4mm, 8mm, QIC, mini-cartridge en DLT. 4mm (DDS: Digital Data Storage) bandmedia DDS (4mm) banden bandmedia QIC banden 4mm-banden vervangen steeds vaker QIC-banden als back-upmedium voor werkstations. Deze trend werd versneld toen Connor Archive, een toonaangevende fabrikant van QIC-stations, overnam en daarna de productie van QIC-stations stopte. 4mm-stations zijn klein en stil maar genieten niet de betrouwbaarheidsreputatie van 8mm-stations. De cartridges zijn minder duur en kleiner (3 x 2 x 0,5 inch, 76 x 51 x 12 mm) dan 8mm-cartridges. Net zoals bij 8mm hebben de koppen bij 4mm een vergelijkbaar kort leven, omdat beiden gebruik maken van een helische scan. De gegevensdoorvoer op deze stations begint bij ongeveer 150 kB/s, met pieken van 500 kB/s. De opslagcapaciteit begint bij 1,3 GB en eindigt bij 2,0 GB. Hardwarecompressie, die voor de meeste stations beschikbaar is, zorgt voor ongeveer een verdubbeling van de capaciteit. Bibliotheekeenheden van multi-station bandbiliotheken kunnen 6 stations in een enkel kabinet bevatten met automatische wisseling van de banden. De capaciteit van een bibliotheek loopt op tot 240 GB. Door de DDS-3-standaard worden bandcapaciteiten van 12 GB (of 24 GB met compressie) ondersteund. Net als 8mm-drives gebruiken 4mm-drives helische scan. Alle voor- en nadelen van helische scan gelden voor zowel 4mm- als 8mm-stations. Banden dienen na 2.000 maal of 100 volledige back-ups afgedankt te worden. 8mm (Exabyte) bandmedia Exabyte (8mm) banden 8mm-banden zijn de meest gebruikte SCSI-banden. Ze vormen de beste keuze met betrekking tot het uitwisselen van banden. Bijna elk bedrijf heeft een Exabyte 2 GB 8mm-bandstation. 8mm-stations zijn betrouwbaar, gemakkelijk en stil. Cartridges zijn niet duur en klein (4,8 x 3,3 x 0,6 inch; 122 x 84 x 15 mm). Een nadeel van 8mm-banden is de relatief korte levensduur van de kop en band vanwege de hoge mate van relatieve beweging tussen de band en de koppen. De gegevensdoorvoer varieert van ~250 kB/s tot ~500 kB/s. De gegevensomvang begint bij 300 MB en kan oplopen tot 7 GB. Hardwarecompressie, waarmee de meeste stations van deze soort zijn uitgerust, zorgt voor ongeveer een verdubbeling van de capaciteit. Deze stations zijn los of als multi-station bandbiliotheken met 6 stations en 120 banden in een enkele kast beschikbaar. In het laatste geval worden banden automatisch per stuk verwisseld. De capaciteit van een bibliotheek kan oplopen tot meer dan 840 GB. Het model Mammoth van Exabyte ondersteunt een capaciteit van 12 GB (24 GB met compressie) per band en kost ongeveer twee maal zoveel als een gewoon bandstation. Gegevens worden door middel van helische scan op de band gezet en de koppen zijn onder een hoek (ongeveer 6 graden) op het medium gepositioneerd. De band wordt 270 graden om de spoel gewikkeld die de koppen vasthoudt. Dit resulteert in een hoge gegevensdichtheid en dicht bij elkaar staande sporen die een hoek van de ene naar de andere kant van de band maken. QIC bandmedia QIC-150 De banden en stations voor de QIC-150 zijn misschien de meest voorkomende bandstations en bandmedia. QIC-bandstations zijn de minst dure serieuze back-upstations. Het nadeel is de prijs van de media. QIC-banden zijn duur in vergelijking met 8mm- of 4mm-banden. De prijs per GB opslagruimte kan tot 5 maal zo hoog zijn. Indien een half dozijn banden toereikend is, zijn QIC-banden waarschijnlijk de juiste keuze. QIC is het meest voorkomende bandstation. Elk bedrijf heeft QIC-stations met een bepaalde capaciteit. QIC heeft namelijk een groot aantal capaciteiten per type band, die fysiek vergelijkbaar (soms identiek) zijn. QIC-banden zijn niet stil. Deze stations maken een hoorbaar geluid tijdens het zoeken voordat ze beginnen met het opnemen van gegevens en zijn duidelijk hoorbaar tijdens het lezen, schrijven en zoeken. QIC-banden zijn 6 x 4 x 0,7 inch of 152 x 102 x 17 mm groot. De gegevensdoorvoer varieert van ~150 kB/s tot ~500 kB/s. Hardwarecompressie is mogelijk met veel van de nieuwere bandstations. QIC-stations worden steeds minder vaak geïnstalleerd. Ze worden vervangen door DAT-stations. Gegevens worden in sporen op de band gezet. De sporen lopen parallel aan de lange as van het bandmedium van het ene naar het andere einde. Het aantal sporen, en daarmee de breedte van een spoor, varieert met de capaciteit van de band. De meeste, zo niet alle, nieuwe stations bieden achterwaartse leescompatibiliteit (en vaak ook achterwaartse schrijfcompabiliteit). QIC heeft een goede reputatie op het gebied van gegevensveiligheid (de mechanismen zijn eenvoudiger en robuuster dan die van helische scan-stations). Banden dienen na 5.000 back-ups afgedankt te worden. DLT bandmedia DLT DLT-banden hebben de snelste gegevensdoorvoer van alle hiergenoemde bandstations. De band van 1/2 inch (12,5 mm) zit in een cartridge (4 x 4 x 1 inch; 100 x 100 x 25 mm) op één enkele haspel. De cartridge heeft een opklapbare opening aan één gehele kant van de cartridge. Het mechanisme van het station opent deze opening om de bandleider eruit te halen. De bandleider heeft een ovaal gat dat door het station gebruikt wordt om de band vast te zetten. De haspel die de band aanpakt is in het bandstation gesitueerd. Bij alle andere bandcartridges die hier genoemd zijn (9-sporige banden zijn de enige uitzondering) zitten zowel de haspel die de band levert als de haspel die de band aanpakt in de bandcartridge zelf. De gegevensdoorvoer bedraagt ongeveer 1.5 MB/s, drie maal de doorvoer van 4mm-, 8mm-, en QIC-bandstations. De gegevenscapaciteit varieert van 10 GB tot 20 GB per stations. Stations zijn als meerdere-bandwisselaars en als bibliotheken van meerdere banden en meerdere stations beschikbaar, die 5 tot 900 banden bevatten verspreid over 1 tot 20 stations, waardoor een opslagcapaciteit van 50 GB tot 9 TB geleverd wordt. Met compressie levert het formaat DLT Type IV tot 70 GB aan capaciteit. Gegevens worden in sporen die parallel aan de looprichting lopen op de band gezet (net als met QIC-banden). Er worden twee sporen per keer geschreven. De levensduur van de lees- en schrijfkoppen is relatief lang. Als de band eenmaal stilstaat, is er geen relatieve beweging tussen de koppen en de band. AIT bandmedia AIT AIT is een nieuw formaat van Sony dat (met compressie) tot 50 GB gegevens per band kan bevatten. De band bevat geheugenchips die een index van de inhoud van de band bevatten. Deze index kan snel door het bandstation gelezen worden voor het bepalen van de positie van bestanden op de band, in plaats van de enkele minuten die nodig zijn voor andere banden. Software als SAMS:Alexandria kan meer dan veertig AIT-bandbibliotheken beheren, waarbij het direct met de geheugenchip van de band communiceert om de inhoud op het scherm te tonen, om te bepalen welke bestanden naar welke band zijn geback-upped en om de correcte band te vinden, laden en de gegevens ervan terug te zetten. Dit soort bibliotheken kosten rond de $ 20.000, waardoor ze enigszins boven het budget van de hobbyist liggen. Eerste gebruik van een nieuwe band Als de eerste keer van een nieuwe, geheel lege band wordt gelezen of ernaar wordt geschreven, mislukt dit. Het bericht op de console zier er analoog aan het volgende uit: sa0(ncr1:4:0): NOT READY asc:4,1 sa0(ncr1:4:0): Logical unit is in process of becoming ready De band bevat geen Identifier Block (bloknummer 0). Alle QIC-bandstations sinds de adoptie van de standaard QIC-525 schrijven een Identifier Block naar de band. Er zijn twee oplossingen: mt fsf 1 zorgt ervoor dat het bandstation een Identifier Block naar de band schrijft. De knop aan de voorkant van het paneel dient gebruikt te worden om de band uit te werpen. De band dient opnieuw in het station gestoken te worden en met dump worden gegevens naar de band gedumpt. dump geeft DUMP: End of tape detected en de console laat het volgende zien:HARDWARE FAILURE info:280 asc:80,96. De band kan met mt rewind teruggespoeld te worden. Hierna zijn alle bandbewerkingen succesvol. Naar diskettes back-uppen Kunnen diskettes gebruikt worden om gegevens te back-uppen? back-updiskettes diskettes Diskettes zijn niet bepaald een geschikt medium om back-ups mee te maken, omdat: Het medium onbetrouwbaar is, in het bijzonder op de langere termijn; Het back-uppen en terugzetten erg traag is; Diskettes een zeer beperkte capaciteit hebben. De tijden dat een hele harde schijf naar een tiental diskettes kon worden geback-upped zijn allang verstreken. Maar als er geen andere manier beschikbaar is om de gegevens te back-uppen, is een back-up naar diskettes beter dan helemaal geen back-up. Gebruikte diskettes moet van goede kwaliteit zijn. Diskettes die al jaren op kantoor rondgeslingerd hebben, zijn een slechte keuze. In het ideale geval dienen nieuwe diskettes van een reputabele fabrikant gebruikt te worden. Hoe de gegevens naar diskettes back-uppen? Het beste kan naar diskettes worden geback-upped door gebruik te maken van &man.tar.1; met de optie (meerdere volumes), die back-ups over meerdere diskettes ondersteunt. Om alle bestanden in de huidige map en de submappen te back-uppen (als root): &prompt.root; tar Mcvf /dev/fd0 * Als de eerste diskette vol is, vraagt &man.tar.1; om het volgende volume. Omdat &man.tar.1; media-onafhankelijk is, refereert het aan volumes, in deze context diskettes. Prepare volume #2 for /dev/fd0 and hit return: Dit wordt herhaald (met oplopend volumenummer) totdat alle gespecificeerde bestanden zijn geback-upped. Kunnen back-ups gecomprimeerd worden? tar gzip compressie Helaas staat &man.tar.1; het gebruik van de optie niet toe voor archieven over meerdere volumes. Het is uiteraard mogelijk om alle bestanden met &man.gzip.1; te comprimeren, ze met &man.tar.1; op diskettes te zetten en ze daarna met &man.gunzip.1; weer te decomprimeren! Hoe worden de back-ups teruggezet? Om een volledige archief terug te zetten: &prompt.root; tar Mxvf /dev/fd0 Er zijn twee manieren om alleen specifieke bestanden terug te zetten. Ten eerste kan met de eerste diskette begonnen worden: &prompt.root; tar Mxvf /dev/fd0 bestandsnaam Het programma &man.tar.1; vraagt om de vervolgdiskettes totdat het benodigde bestand is gevonden. Als alternatief kan, als bekend is op welke diskette het bestand staat, de betreffende diskette worden ingestoken en bovenstaand commando gebruikt worden. Als het eerste bestand op de diskette een vervolg is van de vorige diskette, waarschuwt &man.tar.1; dat het bestand niet teruggezet kan worden, zelfs als hier niet om gevraagd is! Lowell Gilbert Oorspronkelijk werk van Back-up strategieën Het eerste wat nodig is voor het ontwepken van een back-upplan, is er voor te zorgen dat de volgende mogelijke problemen worden ondervangen: Schijffalen Per ongeluk verwijderde bestanden Willekeurige bestandscorruptie Complete machinevernietiging (door bijvoorbeeld brand), inclusief de vernietiging van lokaal beschikbare back-ups. Het is goed mogelijk dat een aantal systemen het best geholpen zijn door voor al deze problemen een andere techniek te gebruiken. Behalve voor volledig persoonlijke systemen met niet echt belangrijke gegevens, is het zelfs onwaarschijnlijk dat één techniek alle mogelijke problemen kan afvangen. Een aantal technieken in de gereedschapskist zijn: Archiveren van een heel systeem op een back-up die niet lokaal wordt bewaard. Dit biedt bescherming tegen alle hierboven beschreven problemen, maar het is langzaam en onhandig om er een restore van te maken. Het is mogelijk om lokaal een kopie aan te houden en/of online, maar dan zijn er nog steeds onhandigheden, in het bijzonder voor restores voor gebruikers met beperkte rechten. Snapshots van bestandssystemen. Dit werkt eigenlijk alleen in het geval bestanden per ongelijk verwijderd worden, maar het kan in dat geval erg handig zijn en het werkt snel en eenvoudig. Een kopie maken van hele bestandssystemen en/of schijven (bijvoorbeeld een periodieke &man.rsync.1; van een hele machine). Dit is in het algemeen het meest bruikbaar in netwerken met specifieke eisen. Voor algemene bescherming tegen het falen van een schijf, is het meestal minder geschikt dan RAID. Voor het herstellen van per ongeluk verwijderde bestanden is het vergelijkbaar aan UFS snapshots, maar dat hangt af van persoonlijke voorkeuren. RAID. Minimaliseert of voorkomt downtijd als een schijf faalt. Dit ten koste van het vaker hebben van schijven die falen (omdat er meer van zijn), maar wel met een veel lagere urgentie. Controleren van fingerprints van bestanden. Het hulpprogramma &man.mtree.8; kan hier bij helpen. Hoewel dit geen back-uptechniek is, zorgt het er wel voor dat kan worden opgemerkt wanneer back-ups geraadpleegd moeten worden. Dit is in het bijzonder belangrijk voor offline back-ups en de fingerprints horen periodiek gecontroleerd te worden. Het is makkelijk om met nog meer technieken op de proppen te komen, waaronder veel variaties op de bovengenoemde. Bijzondere eisen leiden vaak tot bijzondere oplossingen. Het back-uppen van een draaiende database vereist bijvoorbeeld een methode die toegespitst is op de gebruikte database software als tussenstap. Het is van groot belang om te onderkennen tegen welke gevaren er bescherming dient te zijn en hoe daarmee om te gaan. Back-upbeginselen De drie grote back-upprogramma's zijn &man.dump.8;, &man.tar.1; en &man.cpio.1;. Dump en Restore back-upsoftware dump / restore dump restore De traditionele back-upprogramma's voor &unix; zijn dump en restore. Deze zien het station als een verzameling van schijfblokken, onder de abstracties van bestanden, koppelingen en mappen die door de bestandssystemen worden aangemaakt. In tegenstelling tot andere back-upprogramma's, verzorgt dump een back-up van een compleet bestandssysteem op een apparaat. Het is niet in staat om slechts een gedeelte van een bestandssysteem of een mapstructuur die meer dan één bestandssysteem in beslag neemt te back-uppen. Het commando dump schrijft geen bestanden en mappen naar band, maar de rauwe gegevensblokken waaruit de bestanden en mappen bestaan. Wanneer het gebruikt wordt om gegevens te extraheren, slaat restore tijdelijke bestanden standaard op in /tmp/ — als u werkt vanaf een herstelschijf met een kleine map /tmp, moet u wellicht de omgevingsvariabele TMPDIR op een map met meer vrije ruimte instellen zodat de restore kan slagen. Indien dump op een hoofdmap wordt gebruikt, wordt er geen back-up gemaakt van /home , /usr of van de vele andere mappen, aangezien dit typisch koppelpunten voor andere bestandssystemen of symbolische koppelingen binnen deze bestandssystemen zijn. dump bevat eigenaardigheden die uit de begintijd in Versie 6 van AT&T &unix; (circa 1975) zijn overgebleven. De standaardparameters zijn geschikt voor banden met 9 sporen (6.250 bpi), niet voor de media met hoge dichtheid die vandaag beschikbaar zijn (tot 62.182 ftpi). Deze standaardwaarden dienen op de opdrachtregel overschreven te worden om de capaciteit van de huidige bandstations te benutten. .rhosts Het is ook mogelijk om gegevens met rdump en rrestore over een netwerk naar een bandstation dat aan een andere computer gekoppeld is te back-uppen. Beide programma's maken gebruik van &man.rcmd.3; en &man.ruserok.3; om toegang tot het bandstation op afstand te krijgen. De gebruiker die de back-up uitvoert moet vermeld staat in het bestand .rhosts op de computer op afstand. De argumenten die aan rdump en rrestore gegeven worden dienen geschikt te zijn voor gebruik op de computer op afstand. Als rdump gebruikt wordt om een dump te maken van een &os; computer naar een Exabyte-bandstation dat met een Sun-computer genaamd komodo verbonden is: &prompt.root; /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1 Let op: er kleven veiligheidsbezwaren aan het toestaan van authenticatie met .rhosts. De situatie dient goed geëvalueerd te worden. Het is ook mogelijk om dump en restore op een veiligere manier via ssh te gebruiken. Het gebruik van <command>dump</command> via <application>ssh</application> &prompt.root; /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \ - doelgebruiker@doelmachine.voorbeeld.com dd of=/mijngrotebestanden/dump-usr-10.gz + doelgebruiker@doelmachine.example.com dd of=/mijngrotebestanden/dump-usr-10.gz Ook kan de ingebouwde manier van dump gebruikt worden, door de omgevingsvariabele RSH in te stellen: Het gebruik van <command>dump</command> via <application>ssh</application> met ingestelde <envar>RSH</envar> - &prompt.root; env RSH=/usr/bin/ssh /sbin/dump -0uan -f doelgebruiker@doelmachine.voorbeeld.com:/dev/sa0 /usr + &prompt.root; env RSH=/usr/bin/ssh /sbin/dump -0uan -f doelgebruiker@doelmachine.example.com:/dev/sa0 /usr <command>tar</command> back-upsoftware tar &man.tar.1; stamt ook uit de tijd van Versie 6 van AT&T &unix; (circa 1975). Het werkt samen met het bestandssysteem. tar schrijft bestanden en mappen naar band en ondersteunt niet het volledige scala aan opties dat beschikbaar is met &man.cpio.1;, maar tar heeft niet de ongebruikelijke opdrachtpijplijn nodig die cpio gebruikt. tar Om tar toe te passen op een Exabyte-bandstation die met een Sun genaamd komodo verbonden is: &prompt.root; tar cf - . | rsh komodo dd of=tape-device obs=20b Indien de veiligheid van back-uppen over een netwerk een punt is, dient gebruik te worden gemaakt van het commando ssh en niet van rsh. <command>cpio</command> back-upsoftware cpio &man.cpio.1; is het originele &unix; bandprogramma voor magnetische media om bestanden uit te wisselen. cpio heeft opties (naast vele anderen) om byte-swapping uit te voeren, een aantal verschillende archiefformaten te schrijven en de gegevens over een pijplijn naar andere programma's te voeren. Deze laatste optie maakt cpio een uitstekende keuze voor installatiemedia. cpio weet niet hoe het door een mapstructuur moet lopen. Er dient een lijst met bestanden door stdin aangeleverd te worden. cpio cpio biedt geen ondersteuning voor back-ups over het netwerk. Er kan gebruik worden gemaakt van een pijplijn en rsh om de gegevens naar een banddrive op afstand te sturen. &prompt.root; for f in maplijst; do find $f >> back-up.lijst done &prompt.root; cpio -v -o --format=newc < back-up.lijst | ssh gebruiker@host "cat > back-upapparaat" Hier is maplijst een lijst van de mappen waarvan een back-up gemaakt dient te worden, gebruiker@host de gebruiker/hostnaam-combinatie die de back-ups uitvoert, en back-upapparaat het apparaat waar de back-ups naar toe geschreven te worden (bijvoorbeeld /dev/nsa0). <command>pax</command> back-upsoftware pax pax POSIX IEEE &man.pax.1; is het antwoord van IEEE en &posix; op tar en cpio. In de loop der jaren zijn de verscheidene versies van tar en cpio licht incompatibel geworden. Dus in plaats van dit uit te vechten en ze volledig te standaardiseren, heeft &posix; een nieuw archiveringsprogramma gemaakt. pax poogt om veel van de verscheidene formaten van cpio en tar te lezen en te schrijven, met daarbij nog nieuwe, eigen formaten. De commandoverzameling lijkt meer op die van cpio dan op die van tar. <application>Amanda</application> back-upsoftware Amanda Amanda Amanda (Advanced Maryland Network Disk Archiver) is een client/server-back-upsysteem, in plaats van een enkel programma. Een Amanda server back-upt elk aantal computers dat een Amanda client en een netwerkverbinding met de Amanda server heeft naar een enkel bandstation. Een veelvoorkomend probleem bij bedrijven met een groot aantal schijven is dat de tijd die nodig is om de gegevens direct naar band te back-uppen langer is dan de tijd die voor de taak gereserveerd is. Amanda lost dit probleem op. Amanda kan gebruik maken van een tussenschijf om verschillende bestandssystemen tegelijkertijd te back-uppen. Amanda maakt archiefverzamelingen aan, een groep banden die gedurende een tijd gebruikt wordt om volledige back-ups te maken van alle bestandssystemen die in het instellingenbestand van Amanda vermeld staan. De archiefverzameling bevat ook incrementele (of differentiële) back-ups van alle bestandssystemen. Voor het herstellen van een beschadigd bestandssysteem zijn de meest recente volledige back-up en de incrementele back-ups nodig. Het instellingenbestand biedt verfijnde controle over de back-ups en het netwerkverkeer door Amanda. Amanda kan elk bovenstaand back-upprogramma gebruiken om de gegevens naar de band te schijven. Amanda is òf als port òf als package beschikbaar. Nietsdoen Nietsdoen is geen computerprogramma, maar de de meest gebruikte back-upstrategie. Er zijn geen initiële kosten. Er is geen back-upschema om te volgen. Zeg gewoon nee. Als er iets met gegevens gebeurt, lach erom en leef ermee! Als tijd en gegevens weinig tot niets waard zijn, is Nietsdoen het meest geschikte back-upprogramma. Maar wees bedacht, &unix; is een nuttig stuk gereedschap en er is zo maar binnen zes maanden een verzameling bestanden die wèl van waarde is. Nietsdoen is de juiste back-upmethode voor /usr/obj en andere mapstructuren die zo opnieuw aangemaakt kunnen worden. Een voorbeeld zijn de bestanden waaruit de HTML- of &postscript; versie van dit Handboek bestaan. Deze documentformaten zijn vanuit XML-invoerbestanden aangemaakt. Het back-uppen van de HTML- of &postscript; bestanden is niet nodig. Van de XML-bestanden dient regelmatig een back-up gemaakt te worden. Welk back-upprogramma is het beste? LISA &man.dump.8;. Punt uit.. Elizabeth D. Zwicky heeft stresstesten op alle hierboven besproken back-upprogramma's uitgevoerd. De heldere keuze voor het behouden van alle gegevens en alle eigenaardigheden van &unix; bestandssystemen is dump. Elizabeth heeft bestandssystemen aangemaakt met een grote verscheidenheid aan ongewone omstandigheden (en enkele minder ongebruikelijke) en heeft elk programma getest door een back-up van die bestandssystemen uit te voeren en ze te herstellen. De eigenaardigheden omvatten bestanden met gaten, bestanden met gaten en een blok nullen, bestanden met vreemde tekens in hun namen, onleesbare en onschrijfbare bestanden, apparaten, bestanden waarvan de grootte verandert tijdens het back-uppen, bestanden die aangemaakt/verwijderd worden tijdens het back-uppen en meer. Ze presenteerde de resultaten op LISA V in oktober 1991. Zie torture-testing Backup and Archive Programs. Noodterugzetprocedure Vóór de ramp Er zijn slechts vier stappen om te volgen bij het voorbereiden op elke ramp die voor kan komen. bsdlabel Het schijflabel van elke schijf dient afgedrukt te worden (bijvoorbeeld met bsdlabel da0 | lpr), de bestandssysteemtabel (/etc/fstab) en alle opstartboodschappen, alles in tweevoud. livefs CD Ten tweede dient een livefs CD-ROM gebrandt te worden. Deze CD-ROM biedt ondersteuning voor het opstarten in een &os; livefs reddingsmodus die gebruiker in staat stelt om vele taken uit te voeren zoals het draaien van &man.dump.8;, &man.restore.8;, &man.fdisk.8;, &man.bsdlabel.8;, &man.newfs.8; en meer. Een livefs CD-beeld voor &os;/&arch.i386; &rel2.current;-RELEASE is beschikbaar op . Livefs CD-beelden zijn niet beschikbaar voor &os; &rel.current;-RELEASE en nieuwer. Naast de beelden voor CDROM-installaties kunnen ook beelden voor flash-drive-installaties gebruikt worden om een systeem te redden. Het memstick-beelden voor &os;/&arch.i386; &rel.current;-RELEASE is beschikbaar op . Ten derde dienen regelmatig back-upbanden aangemaakt te worden. Alle veranderingen die na de laatste back-up zijn gemaakt kunnen onherroepelijk verloren zijn gegaan. De back-upbanden dienen beveiligd te worden tegen overschrijven. Ten vierde dienen de livefs CD-ROM die in stap twee gemaakt is en de back-upbanden getest te worden. Van de handelingen dienen aantekeningen gemaakt te worden. De aantekeningen, de CD-ROM, de afdrukken en de back-upbanden dienen gezamenlijk bewaard te worden. Tijdens het herstellen kunnen de notities ervoor zorgen dat de back-upbanden vernietigd worden. Hoe? In plaats van tar xvf /dev/sa0 kan per ongeluk tar cvf /dev/sa0 worden ingetypt, waardoor de back-upband overschreven wordt. Als extra veiligheidsmaatregel dienen telkens een livefs CD-ROM en twee back-upbanden gemaakt te worden. Eén van deze banden dient op een plaats op afstand bewaard te worden. Zo'n plaats is NIET de kelder van het zelfde kantoorgebouw. Een aantal bedrijven in het World Trade Center heeft deze les op de harde manier geleerd. Zo'n plaats dient fysiek gescheiden te zijn van de computers en de schijven door een significante afstand. Na de ramp De hamvraag is: heeft de hardware het overleefd? Er zijn regelmatig back-ups gemaakt, dus zorgen over de software zijn niet nodig. Indien hardware beschadigd is, dienen kapotte onderdelen vervangen te worden voordat gepoogd wordt om een computer te gebruiken. Plaats de livefs CD-ROM in de CD-ROM drive indien de hardware in orde is en start de computer op. Het originele installatiemenu wordt op het scherm getoond. Kies het land van toepassing en kies daarna Fixit -- Repair mode with CDROM/DVD/floppy en kies het item CDROM/DVD -- Use the live filesystem CDROM/DVD. restore en de andere benodigde programma's staan in /mnt2/rescue. Herstel elk bestandssysteem apart. mount rootpartitie bsdlabel newfs Probeer de rootpartitie van de eerste schijf aan te koppelen (bijvoorbeeld mount /dev/da0a /mnt). Als het schijflabel beschadigd is, gebruik dan bsdlabel om de schijf opnieuw te partitioneren en te labelen zodat deze overeenkomt met het afgedrukte en bewaarde label. Gebruik voor het opnieuw aanmaken van de bestandssystemen newfs. Koppel de rootpartitie van de schijf opnieuw aan voor lezen en schrijven (mount -u -o rw /mnt). Gebruik voor het herstellen van de gegevens van dit bestandssysteem het back-upprogramma en de back-upbanden (bijvoorbeeld restore vrf /dev/sa0). Koppel nu het bestandssysteem af (bijvoorbeeld umount /mnt). Herhaal dit voor elk beschadigd bestandssysteem. Back-up de gegevens naar nieuwe banden als het systeem weer draait. De omstandigheden die verantwoordelijk waren voor de crash of het gegevensverlies kunnen weer voorkomen. Nu een extra uur investeren, kan later grote zorgen besparen. * Er zijn geen voorbereidingen voor de ramp getroffen, wat nu? ]]> Marc Fonvieille Geherstructureerd en verbeterd door Netwerk-, geheugen-, en bestandsgebaseerde bestandssystemen virtuele schijven schijven virtueel Naast de schijven die fysiek in de computer zitten, diskettes, CD's, harde schijven, enzovoort, worden er ook andere vormen van schijven door &os; begrepen: de virtuele schijven. NFS Coda schijven geheugen Dit omvat netwerkbestandssystemen zoals het Network File System en Coda, geheugengebaseerde bestandssystemen en bestandsgebaseerde bestandssystemen. Nagelang de gebruikte versie van &os;, zijn er andere gereedschappen voor het aanmaken en gebruiken van bestandsgebaseerde en geheugengebaseerde bestandssystemen. Gebruik &man.devfs.8; om de apparaatnodes transparant voor de gebruiker toe te wijzen. Bestandsgebaseerd bestandssysteem schijven bestandsgebaseerd Met &man.mdconfig.8; kunnen geheugenschijven, &man.md.4;, ingesteld worden en aangezet worden. Om &man.mdconfig.8; te gebruiken, moet de module &man.md.4; geladen worden of ondersteuning aan het kernelinstellingenbestand toegevoegd worden: device md Het commando &man.mdconfig.8; ondersteunt drie types geheugen-gebaseerde virtuele schijven: geheugenschijven die met &man.malloc.9; toegewezen zijn, geheugenschijven die een bestand als basis gebruiken en geheugenschijven die swapruimte als basis gebruiken. Een mogelijk gebruik is het aankoppelen van een beeld van een diskette of CD dat in een bestand bewaard wordt. Om een bestaand beeld van een bestandssysteem aan te koppelen: <command>mdconfig</command> gebruiken om een bestaand beeld van een bestandssysteem aan te koppelen &prompt.root; mdconfig -a -t vnode -f schijfbeeld -u 0 &prompt.root; mount /dev/md0 /mnt Om een nieuw beeld van een bestandssysteem aan te maken met &man.mdconfig.8;: Nieuwe bestandsgebaseerde schijf aanmaken met <command>mdconfig</command> &prompt.root; dd if=/dev/zero of=nieuwbeeld bs=1k count=5k 5120+0 records in 5120+0 records out &prompt.root; mdconfig -a -t vnode -f nieuwbeeld -u 0 &prompt.root; bsdlabel -w md0 auto &prompt.root; newfs md0a /dev/md0a: 5.0MB (10240 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 1.25MB, 80 blks, 192 inodes. super-block backups (for fsck -b #) at: 160, 2720, 5280, 7840 &prompt.root; mount /dev/md0a /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0a 4710 4 4330 0% /mnt Indien het eenheidsnummer niet met de optie gespecificeerd wordt, gebruikt &man.mdconfig.8; de automatische toewijzing van &man.md.4; om een ongebruikt apparaat te selecteren. De naam van het toegewezen apparaat wordt op stdout weergegeven als md4. Meer details staan in de hulppagina van &man.mdconfig.8;. Het commando &man.mdconfig.8; is erg nuttig, hoewel het veel opdrachten vergt om een bestandsgebaseerd bestandssysteem aan te maken. &os; wordt met &man.mdmfs.8; geleverd. Dit programma stelt een &man.md.4;-schijf in door gebruik te maken van &man.mdconfig.8;, zet er een bestandssysteem op door gebruik te maken van &man.newfs.8; en koppel het aan door gebruik te maken van &man.mount.8;. Om hetzelfde bestandssysteembeeld als hierboven aan te maken en aan te koppelen: Instellen en aankoppelen van een bestandsgebaseerde schijf met <command>mdmfs</command> &prompt.root; dd if=/dev/zero of=nieuwbeeld bs=1k count=5k 5120+0 records in 5120+0 records out &prompt.root; mdmfs -F nieuwbeeld -s 5m md0 /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0 4718 4 4338 0% /mnt Als de optie zonder eenheidsnummer gebruikt wordt, gebruikt &man.mdmfs.8; de automatische toewijzing van &man.md.4; om automatisch een ongebruikt apparaat te selecteren. Meer details staan in de hulppagina van &man.mdmfs.8;. Geheugengebaseerd bestandssysteem schijven geheugenbestandssysteem Voor een geheugen gebaseerd bestands systeem moet normaal gesproken wisselbestand geheugen gebruikt worden. Gebruik maken van wisselbestand geheugen wil niet perse zeggen dat de geheugen schijf direct in het wisselbestand gezet wordt, maar dat het bestand naar het wisselbestand geschreven kan worden indien nodig. Het is ook mogelijk om &man.malloc.9; gebaseerde geheugen schijven te maken, maar door hiervan gebruik te maken kan het gebeuren dat het systeem crashed als de kernel uit het geheugen loopt. Nieuwe geheugengebaseerde schijf aanmaken met <command>mdconfig</command> &prompt.root; mdconfig -a -t swap -s 5m -u 1 &prompt.root; newfs -U md1 /dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 1.27MB, 81 blks, 192 inodes. with soft updates super-block backups (for fsck -b #) at: 160, 2752, 5344, 7936 &prompt.root; mount /dev/md1 /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md1 4718 4 4338 0% /mnt Nieuwe geheugengebaseerde schijf aanmaken met <command>mdmfs</command> &prompt.root; mdmfs -s 5m md2 /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md2 4846 2 4458 0% /mnt Geheugenschijf van het systeem afkoppelen schijven geheugenschijf afkoppelen Als een geheugen- of bestandsgebaseerd bestandssysteem niet gebruikt wordt, dienen alle bronnen aan het systeem vrijgegeven te worden. Koppel als eerste het bestandssysteem af, gebruikt daarna &man.mdconfig.8; om de schijf van een systeem los te koppelen en de bronnen vrij te geven. Om bijvoorbeeld alle bronnen die door /dev/md4 gebruikt worden los te koppelen en vrij te geven: &prompt.root; mdconfig -d -u 4 Het is mogelijk om de informatie over ingestelde &man.md.4; apparaten weer te geven door gebruik te maken van mdconfig -l. Tom Rhodes Bijgedragen door Snapshots van bestandssystemen bestandssystemen snapshots &os; biedt een mogelijkheid om samen met Soft Updates: snapshots van bestandssystemen. Snapshots bieden de mogelijkheid om beelden van een gespecificeerd bestandssysteem te maken en ze als bestand te behandelen. Snapshotbestanden moeten aangemaakt worden in het bestandssysteem waarop de handeling wordt uitgevoerd en er mogen niet meer dan 20 snapshots per bestandssysteem worden aangemaakt. Actieve snapshots worden opgeslagen in het superblok zodat ze persistent zijn met afkoppel- en heraankoppelbewerkingen en met het opnieuw opstarten van het systeem. Als een snapshot niet langer nodig is, kan het met het standaardcommando &man.rm.1; worden verwijderd. Snapshots kunnen in elke volgorde verwijderd worden, alhoewel misschien niet alle gebruikte ruimte teruggewonnen wordt omdat sommige vrijgegeven blokken mogelijk door een ander snapshot geclaimd worden. De onveranderlijke bestandsvlag wordt door &man.mksnap.ffs.8; ingesteld nadat het snapshotbestand initieel is aangemaakt. Het commando &man.unlink.1; maakt een uitzondering voor snapshotbestanden aangezien het toestaat dat ze verwijderd worden. Snapshotbestanden worden aangemaakt met &man.mount.8;. Om een snapshot van /var in het bestand /var/snapshot/snap te plaatsen: &prompt.root; mount -o -o snapshot /var/snapshot/snap /var Als alternatief kan &man.mksnap.ffs.8; gebruikt worden om een snapshot aan te maken: &prompt.root; mksnap_ffs /var /var/snapshot/snap Snapshotbestanden kunnen gezocht worden op een bestandssysteem (bijvoorbeeld /var) door gebruik te maken van het commando &man.find.1;: &prompt.root; find /var -flags snapshot Nadat een snapshot is aangemaakt, kan het voor een aantal dingen gebruikt worden: Sommige systeembeheerders gebruiken een snapshotbestand voor back-updoeleinden, omdat het snapshot naar CD's of band overgezet kan worden; De bestandssysteem integriteit controle, &man.fsck.8; kan gebruikt worden op het snapshot. Ervan uitgaande dat het bestandssysteem schoon was toen het werd aangekoppeld, zou dit altijd een schoon (en onveranderlijk) resultaat moeten opleveren. Dit is in principe wat het &man.fsck.8;-achtergrondsproces doet; Het commando &man.dump.8; draaien op het snapshot. Er wordt een dump teruggegeven die consistent is met het bestandssysteem en tijdsstempel van het snapshot. &man.dump.8; kan ook in één commando een snapshot maken, een dumpbeeld aanmaken en daarna het snapshot verwijderen door gebruik te maken van de vlag ; Het snapshot kan met &man.mount.8; als bevroren beeld van het bestandssysteem worden aangekoppeld. Om het snapshot /var/snapshot/snap aan te koppelen: &prompt.root; mdconfig -a -t vnode -f /var/snapshot/snap -u 4 &prompt.root; mount -r /dev/md4 /mnt Het is nu mogelijk om door de structuur van het bevroren bestandssysteem /var te lopen dat aangekoppeld is op /mnt. Alles zal initieel in dezelfde toestand verkeren als op het moment dat het snapshot werd aangemaakt. De enige uitzondering hierop is dat eerdere snapshots als bestanden met lengte nul verschijnen. Als een snapshot niet meer nodig is, kan het als volgt afgekoppeld worden: &prompt.root; umount /mnt &prompt.root; mdconfig -d -u 4 Meer informatie over en snapshots van bestandssystemen, inclusief technische documenten, staat op de website van Marshall Kirk McKusick op . Bestandssysteemquota accounten schijfruimte schijfquota Quota zijn een optionele mogelijkheid van het besturingssysteem om de hoeveelheid schijfruimte en/of het aantal bestanden dat gebruikers of leden van een groep per bestandssysteem mogen gebruiken te beperken. Dit wordt het meeste gebruikt op timesharing-systemen waar het wenselijk is om het aantal bronnen dat elke gebruiker of groep van gebruikers mag gebruiken te beperken. Dit voorkomt dat één gebruiker of groep van gebruikers alle beschikbare schijfruimte in beslag neemt. Schijfquota inschakelen Controleer alvorens te proberen om schijfquota te gebruiken of quota ingesteld zijn in de kernel. Dit gebeurt door het toevoegen van de volgende regel aan het kernelinstellingenbestand: options QUOTA De standaardkernel GENERIC heeft deze optie niet aanstaan, dus is het nodig om een eigen kernel in te stellen, te bouwen en te installeren om gebruik te kunnen maken van schijfquota. Meer informatie over het instellen van de kernel staat in . Vervolgens dienen schijfquota aangezet te worden in /etc/rc.conf. Op &os; 7.X en eerder wordt deze regel toegevoegd: enable_quotas="YES" Voeg op &os; 8.0-RELEASE en nieuwer in plaats daarvan deze regel toe: quota_enable="YES" schijfquota controleren Voor fijnere controle over de opstartquota zijn extra instellingsvariabelen beschikbaar. Normaalgesproken wordt de integriteit van de quota van elk bestandssysteem tijdens het opstarten door &man.quotacheck.8; gecontroleerd. &man.quotacheck.8; verzekert dat de gegevens in de quotadatabase een juiste afspiegeling vormen van de gegevens op het bestandssysteem. Dit proces neemt erg veel tijd in beslag en beïnvloedt de tijd die een systeem nodig heeft om op te starten significant. Om deze stap over te slaan, bestaat een variabele in /etc/rc.conf: check_quotas="NO" Als laatste dient /etc/fstab bewerkt te worden om schijfquota per bestandssysteem aan te zetten. Hier kunnen gebruiker- of groepquota of beide worden aangezet voor alle bestandssystemen. Om quota per gebruiker op een bestandssysteem aan te zetten, dient de optie aan het optieveld toegevoegd te worden aan de regel in /etc/fstab voor het bestandssysteem waar quota worden aangezet. Bijvoorbeeld: /dev/da1s2g /home ufs rw,userquota 1 2 Analoog, om groepquota aan te zetten, dient de optie in plaats van gebruikt te worden. Om zowel gebruikers- als groepsquota aan te zetten, dient de regel als volgt veranderd te worden: /dev/da1s2g /home ufs rw,userquota,groupquota 1 2 Standaard worden de quotabestanden opgeslagen in de hoofdmap van het bestandssysteem onder de namen quota.user en quota.group voor respectievelijk gebruikers- en groepsquota. Meer informatie staat in &man.fstab.5;. Alhoewel de hulppagina &man.fstab.5; vermeld dat een alternatieve plaats voor de quotabestanden gespecificeerd kan worden, wordt dit niet aangeraden omdat de verschillende quotagereedschappen dit niet juist schijnen af te handelen. Hier aangekomen dient het systeem opnieuw opgestart te worden met de nieuwe kernel. /etc/rc voert automatisch de juiste commando's uit om de initiële quotabestanden aan te maken voor alle quota die in /etc/fstab zijn aangezet. Het is dus niet nodig om handmatig quotabestanden met lengte nul aan te maken. Tijdens normale bewerkingen moet het niet nodig zijn om de commando's &man.quotacheck.8;, &man.quotaon.8; of &man.quotaoff.8; handmatig te draaien. Lees wel de betreffende hulppagina's om bekend te raken met de werking ervan. Quotalimieten instellen schijfquota limieten Indien het systeem ingesteld voor gebruik van quota, controleer dan of ze echt aanstaan. Een eenvoudige manier om dit te doen is de volgende: &prompt.root; quota -v Er hoort een eenregelige samenvatting te verschijnen over het schijfgebruik en de huidige quotalimieten voor elk bestandssysteem waarop quota aanstaan. Nu kunnen quotalimieten toegewezen worden met &man.edquota.8;. Er zijn verschillende opties om grenzen te stellen aan de hoeveelheid schijfruimte die een gebruiker of groep mag toewijzen en het aantal bestanden dat ze mogen aanmaken. Toewijzingen kunnen begrensd worden met betrekking tot schijfruimte (blokquota) of het aantal bestanden (inode-quota) of een combinatie van beide. Elk van deze limieten is op zijn beurt weer opgesplitst in twee categoriën: harde en zachte limieten. harde limiet Een harde limiet mag niet overschreden worden. Indien een gebruiker de harde limiet bereikt, mag deze geen verdere toewijzingen maken op het betreffende bestandssysteem. Indien een gebruiker bijvoorbeeld een harde limiet heeft van 500 kB op een bestandssysteem en er 490 kB van gebruikt, kan deze nog slechts 10 kB toewijzen. Een poging om 11 kB toe te wijzen zal mislukken. zachte limiet Zachte limieten kunnen voor een beperkte tijd overschreden worden. Deze periode staat bekend als de gratieperiode, die standaard een week bedraagt. Als een gebruiker de zachte limiet langer dan de gratieperiode overschrijdt, verandert de zachte limiet in een harde limiet en zijn er geen verdere toewijzingen toegestaan. Als de gebruiker onder de zachte limiet komt, wordt de gratieperiode opnieuw ingesteld. Het volgende is een voorbeeld van een mogelijk gebruik van &man.edquota.8;. Als het commando &man.edquota.8; gestart wordt, wordt de tekstverwerker opgestart die door de omgevingsvariabele EDITOR gespecificeerd is, of de tekstverwerker vi als de variabele EDITOR niet is ingesteld. Nu kunnen de quotalimieten bewerkt worden. &prompt.root; edquota -u test Quotas for user test: /usr: kbytes in use: 65, limits (soft = 50, hard = 75) inodes in use: 7, limits (soft = 50, hard = 60) /usr/var: kbytes in use: 0, limits (soft = 50, hard = 75) inodes in use: 0, limits (soft = 50, hard = 60) Normaalgesproken worden er twee regels weergegeven voor elk bestandssysteem waarvoor quota gelden: één regel voor de bloklimieten, en één voor de inode-limieten. Om de quotalimieten te veranderen dient de waarde ervan veranderd te worden. Om bijvoorbeeld de bloklimiet van een gebruiker te veranderen van een zachte limiet van 50 en een harde limiet van 75 in een zachte limiet van 500 en een harde limiet van 600, dient het volgende veranderd te worden: /usr: kbytes in use: 65, limits (soft = 50, hard = 75) In: /usr: kbytes in use: 65, limits (soft = 500, hard = 600) De nieuwe quotalimieten gelden zodra de tekstverwerker verlaten wordt. Soms is het gewenst om quotalimieten in te stellen op een aantal UID's. Dit kan gedaan worden door de optie van &man.edquota.8; te gebruiken. Wijs eerst de gewenste quotalimiet aan een gebruiker toe en draai daarna edquota -p protogebruiker beginuid-einduid. Indien bijvoorbeeld gebruiker test de gewenste quotalimieten heeft, kan het volgende commando gebruikt worden om deze quotalimieten te dupliceren voor UID's 10.000 tot en met 19.999: &prompt.root; edquota -p test 10000-19999 Meer informatie staat in de hulppagina voor &man.edquota.8;. Quotalimieten en schijfgebruik controleren schijfquota controleren Zowel &man.quota.1; als &man.repquota.8; kunnen gebruikt worden om de quotalimieten en het schijfgebruik te controleren. Het commando &man.quota.1; kan gebruikt worden om de quota van zowel individuele gebruikers als groepen en het schijfgebruik te controleren. Een gebruiker mag alleen de eigen quota en de quota van een groep waarvan deze lid is controleren. Alleen de beheerder mag alle gebruikers- en groepsquota bekijken. Het commando &man.repquota.8; kan gebruikt worden om een overzicht te krijgen van alle quota en gebruik van bestandssystemen waarvan quota aanstaan. Het volgende is een mogelijke uitvoer van het commando quota -v voor een gebruiker die quotalimieten heeft op twee bestandssystemen. Disk quotas for user test (uid 1002): Filesystem usage quota limit grace files quota limit grace /usr 65* 50 75 5days 7 50 60 /usr/var 0 50 75 0 50 60 gratieperiode Voor het bestandssysteem /usr in bovenstaand voorbeeld overschrijdt deze gebruiker de zachte limiet van 50 kB momenteel met 15 kB en heeft deze 5 dagen van de gratieperiode over. De asterisk, * geeft aan dat de gebruiker momenteel de quotalimiet overschrijdt. Normaalgesproken worden bestandssystemen waarvan de gebruiker geen schijfruimte gebruikt niet weergegeven in de uitvoer van &man.quota.1;, zelfs niet als er de gebruiker een quotalimiet heeft voor dat bestandssysteem. De optie geeft deze bestandssystemen weer, zoals het bestandssysteem /usr/var in bovenstaand voorbeeld. Quota over NFS NFS Quota worden afgedwongen door het quota-subsysteem op de NFS-server. De daemon &man.rpc.rquotad.8; stelt quota-informatie beschikbaar aan het commando &man.quota.1; op de NFS-cliënts, wat de gebruikers op deze machines in staat stelt hun quota-statistieken in te zien. rpc.rquotad dient als volgt in /etc/inetd.conf aangezet te worden: rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad Vervolgens dient inetd opnieuw gestart te worden: &prompt.root; /etc/rc.d/inetd restart Lucky Green Bijgedragen door
shamrock@cypherpunks.to
Schijfpartities versleutelen schijven versleutelen &os; biedt uitstekende on-line bescherming tegen onbevoegde gegevenstoegang. Bestandsrechten en Mandatory Access Control (MAC) (zie ) helpen voorkomen dat onbevoegde derde partijen toegang tot de gegevens krijgen als het besturingssysteem actief is en de computer aanstaat. De door het besturingssysteem afgedwongen rechten zijn echter niet relevant als een aanvaller fysieke toegang tot een computer heeft en deze de harde schijf van de computer in een ander systeem kan plaatsen om de gevoelige gegevens te kopiëren en te analyseren. Afgezien van hoe een aanvaller in het bezit van een harde schijf of een uitgezette computer gekomen is, kan GEOM Based Disk Encryption (gbde) de gegevens op het bestandssysteem van de computer zelfs tegen hooggemotiveerde aanvallers met aanzienlijke middelen beschermen. In tegenstelling tot lastige versleutelmethoden die alleen losse bestanden versleutelen, versleutelt gbde gehele bestandssystemen op een transparante manier. De harde schijf komt nooit in aanraking met klare tekst. Los van hoe een aanvaller in het bezit van een harde schijf of een uitgezette computer gekomen is, kunnen de cryptografische subsystemen GEOM Based Disk Encryption (gbde) en geli in &os; gegevens op bestandssystemen van een computer beschermen tegen zelfs de meer gemotiveerde belagers die ook nog eens adequate middelen hebben. Anders dan met lastige versleutelingsmethoden die alleen individuele bestanden versleutelen, versleutelen gbde en geli transparant complete bestandssystemen. Er komt nooit platte tekst op een harde schijf. Schijven versleutelen met <application>gbde</application> Word <username>root</username> Het instellen van gbde vereist beheerdersrechten. &prompt.user; su - Password: Voeg ondersteuning voor &man.gbde.4; aan het kernelinstellingenbestand toe Voeg de volgende regel toe aan het kernelinstellingenbestand: options GEOM_BDE Herbouw de kernel opnieuw zoals beschreven in . Start op met de nieuwe kernel. Een alternatief voor het hercompileren van de kernel is door gebruik te maken van &man.kldload.8; om &man.gbde.4; te laden: &prompt.root; kldload geom_bde Versleutelde harde schijf voorbereiden In het volgende voorbeeld wordt aangenomen dat er een nieuwe harde schijf aan het systeem wordt toegevoegd die een enkele versleutelde partitie zal bevatten. Deze partitie wordt aangekoppeld als /private. gbde kan ook gebruikt worden om /home en /var/mail te versleutelen, maar daarvoor zijn complexere instructies nodig die buiten het bereik van deze inleiding vallen. Voeg een nieuwe harde schijf toe Voeg de nieuwe harde schijf toe zoals beschreven in . In dit voorbeeld is een nieuwe harde schijfpartitie toegevoegd als /dev/ad4s1c. De apparaten /dev/ad0s1* stellen bestaande standaard &os; partities van het voorbeeldsysteem voor. &prompt.root; ls /dev/ad* /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1 /dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c /dev/ad0s1a /dev/ad0s1d /dev/ad4 Maak een map aan voor gbde lockbestanden &prompt.root; mkdir /etc/gbde Het lockbestand voor gbde bevat informatie die gbde nodig heeft om toegang te krijgen tot versleutelde partities. Zonder toegang tot de lockbestand is gbde niet in staat om de gegevens die op de versleutelde partitie staan te ontsleutelen zonder aanzienlijke handmatige tussenkomst die niet door de software ondersteund wordt. Elke versleutelde partitie gebruikt een ander lockbestand. Initialiseer de gbde-partitie Een gbde-partitie dient geïnitialiseerd te worden voordat deze kan worden gebruikt. Deze initialisatie dient slechts eenmalig uitgevoerd te worden: &prompt.root; gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c.lock &man.gbde.8; opent een tekstverwerker om verschillende instellingen in een sjabloon te kunnen instellen. Stel de sector_size in op 2048 als UFS of UFS2 wordt gebruikt: # $FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $ # # Sector size is the smallest unit of data which can be read or written. # Making it too small decreases performance and decreases available space. # Making it too large may prevent filesystems from working. 512 is the # minimum and always safe. For UFS, use the fragment size # sector_size = 2048 [...] &man.gbde.8; vraagt twee keer om de wachtwoordzin voor het beveiligen van de gegevens. De wachtwoordzin dient beide keren hetzelfde te zijn. De mogelijkheid van gbde om de gegevens te beveiligen is geheel afhankelijk de gekozen wachtwoordzin. Tips met betrekking tot het kiezen van veilige wachtwoordzinnen die gemakkelijk te onthouden zijn staan op de website Diceware Passphrase. Het commando gbde init maakt een lockbestand aan voor de gbde-partitie die in dit voorbeeld is opgeslagen als /etc/gbde/ad4s1c.lock. gdbde slotbestanden moeten eindigen op .lock om correct door het opstartscript /etc/rc.d/gbde gedetecteerd te worden. gbde lockbestanden moeten samen met de inhoud van versleutelde partities geback-upped worden. Hoewel het verwijderen van een lockbestand op zich een gedreven aanvaller er niet van weerhoudt een gbde partitie te ontsleutelen, is de wettige eigenaar zonder het lockbestand niet in staat om de gegevens op de versleutelde partitie te benaderen zonder een aanzienlijke hoeveelheid werk die in het geheel niet ondersteund wordt door &man.gbde.8; of de ontwerper ervan. Koppel de versleutelde partitie aan de kernel &prompt.root gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock Er wordt om de wachtwoordzin gevraagd die gekozen is tijdens de initialisatie van de versleutelde partitie. Het nieuwe versleutelde apparaat verschijnt in /dev als /dev/apparaatnaam.bde: &prompt.root; ls /dev/ad* /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1 /dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c /dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bde Maak een bestandssysteem op het versleutelde apparaat Nu het versleutelde apparaat aan de kernel gekoppeld is, kan een bestandssysteem op het apparaat aangemaakt worden. Met &man.newfs.8; kan een bestandssysteem op het versleutelde apparaat aangemaakt wordne. Aangezien het veel sneller is om een nieuw UFS2 bestandssysteem te initialiseren dan om een oud UFS1 bestandssysteem te initialiseren, is het aan te raden om &man.newfs.8; met de optie te gebruiken. &prompt.root; newfs -U -O2 /dev/ad4s1c.bde Voer &man.newfs.8; uit op een aangekoppelde gbde-partitie die geïndificeerd wordt door de uitbreiding *.bde op de apparaatnaam. Mount de versleutelde partitie Maak een koppelpunt voor het versleutelde bestandssysteem aan: &prompt.root; mkdir /private Mount het versleutelde bestandssysteem: &prompt.root; mount /dev/ad4s1c.bde /private Controleer of het versleutelde bestandssysteem beschikbaar is Het versleutelde bestandssysteem is nu zichtbaar met &man.df.1; en gebruiksklaar: &prompt.user; df -H Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 1037M 72M 883M 8% / /devfs 1.0K 1.0K 0B 100% /dev /dev/ad0s1f 8.1G 55K 7.5G 0% /home /dev/ad0s1e 1037M 1.1M 953M 0% /tmp /dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr /dev/ad4s1c.bde 150G 4.1K 138G 0% /private Bestaande versleutelde bestandssystemen aankoppelen Elke keer nadat het systeem is opgestart dient elk versleuteld bestandssysteem opnieuw aan de kernel gekoppeld te worden, op fouten gecontroleerd te worden, en aangekoppeld te worden voordat de bestandssystemen gebruikt kunnen worden. De benodigde commando's dienen als de gebruiker root uitgevoerd te worden. Koppel de gbde-partitie aan de kernel &prompt.root gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock Er wordt om de wachtwoordzin gevraagd die gekozen is tijdens de initialisatie van de versleutelde gbde-partitie. Controleer het bestandssysteem op fouten Aangezien het nog niet mogelijk is om versleutelde bestandssystemen op te nemen in /etc/fstab voor automatische controle, dienen de bestandssystemen voordat ze aangekoppeld worden handmatig op fouten gecontroleerd te worden door &man.fsck.8; uit te voeren: &prompt.root; fsck -p -t ffs /dev/ad4s1c.bde Mount het versleutelde bestandssysteem &prompt.root; mount /dev/ad4s1c.bde /private Het versleutelde bestandssysteem is nu klaar voor gebruik. Versleutelde partities automatisch aankoppelen Het is mogelijk om een script aan te maken om automatisch een versleutelde partitie aan te koppelen, op fouten te controleren en aan te koppelen, maar vanwege veiligheidsredenen dient het script niet het wachtwoord voor &man.gbde.8; te bevatten. In plaats hiervan wordt het aangeraden om zulke scripts handmatig uit te voeren en het wachtwoord via de console of &man.ssh.1; te geven. Als alternatief, wordt er een rc.d script bijgeleverd. De argumenten kunnen via &man.rc.conf.5; doorgegeven worden. Bijvoorbeeld: gbde_autoattach_all="YES" gbde_devices="ad4s1c" gbde_lockdir="/etc/gbde" Hierdoor is het noodzakelijk dat de wachtwoordzin voor gbde bij het starten wordt ingegeven. Na het invoeren van de juiste wachtwoordzin wordt de met gbde versleutelde partitie automatisch aangekoppeld. Dit kan erg handig zijn bij het gebruik van gbde op notebooks. Door gbde gebruikte cryptografische beschermingen &man.gbde.8; versleutelt de sectorlading door gebruik te maken van 128-bit AES in CBC-modus. Elke sector op de schijf wordt met een andere AES-sleutel versleuteld. Meer informatie over het cryptografische ontwerp van gbde, inclusief de methode die gebruikt wordt om de sectorsleutels van de door de gebruiker gegeven wachtwoordzin af te leiden, staan in &man.gbde.4;. Compatibiliteitspunten &man.sysinstall.8; is niet compatibel met apparaten die met gbde versleuteld zijn. Alle *.bde apparaten moeten van de kernel ontkoppeld worden voordat &man.sysinstall.8; gebruikt wordt om te voorkomen dat het crasht tijdens het initiële zoeken naar apparaten. Om het versleutelde apparaat dat in dit voorbeeld gebruikt wordt te ontkoppelen: &prompt.root; gbde detach /dev/ad4s1c gbde kan niet met vinum volumes gebruikt worden, omdat &man.vinum.4; geen gebruik maakt van het subsysteem &man.geom.4;. Daniel Gerzo Bijgedragen door Schijfversleuteling met <command>geli</command> Een alternatieve cryptografische GEOM klassie is beschikbaar - geli. Deze wordt op het moment ontwikkeld door &a.pjd;. geli verschilt van gbde in de mogelijkheden en in het gebruik van een andere methode voor het versleutelen. De meest belangrijke mogelijkheden van &man.geli.8; zijn: Gebruikt het &man.crypto.9; framework; als cryptografische hardware aanwezig is, gebruikt geli die automatisch; Ondersteunt meedere cryptografische algoritmen. Op dit moment AES, Blowfish en 3DES; Staat toe dat de root-partitie wordt versleuteld. De wachtwoordzin die wordt gebruikt om de root-partitie te versleutelen wordt opgevraagd tijdens het starten van een systeem; Staat het gebruik van twee onafhankelijke sleutels toe, bijvoorbeeld een sleutel en een bedrijfssleutel); geli is snel; het werkt met sector-naar-sector versleuteling; Ondersteunt back-up en restore van Master Keys. Als een gebruiker sleutels moet vernietigen, is het mogelijk weer toegang te krijgen tot de gegevens door sleutels uit een back-up te halen; Ondersteunt het koppelen van een schijf met een willekeurige, eenmalige sleutel. Handig voor swap-partities en tijdelijke bestandssystemen. Meer mogelijkheden van geli staan beschreven in de handleiding van &man.geli.8;. De volgende stappen beschrijven hoe ondersteuning voor geli in de &os;-kernel ingeschakeld kan worden en hoe een nieuwe geli versleutelingsvoorziening gemaakt kan worden. Het is noodzakelijk super-user rechten te hebben omdat de kernel wordt aangepast. Toevoegen van <command>geli</command>-ondersteuning Voeg de volgende regels toe aan het bestand met kernelinstellingen: options GEOM_ELI device crypto Herbouw de kernel zoals beschreven is in . De geli-module kan ook bij het opstarten geladen worden. Voeg de volgende regel toe aan /boot/loader.conf: geom_eli_load="YES" Nu hoort &man.geli.8; door de kernel ondersteund te worden. Een Master Key genereren Het volgende voorbeeld beschrijft hoe een sleutelbestand te maken, dat wordt gebruikt als onderdeel van de Master Key voor de versleutelde dienst die wordt aangekoppeld onder /private. Het sleutelbestand zorgt voor wat willekeurige gegevens die worden gebruikt om de Master Key te versleutelen. De Master Key wordt ook door een wachtwoordzin beschermd. De sectorgrootte van de dienst wordt 4 kB. Ook wordt beschreven hoe de geli-dienst te koppelen, er een bestandsysteem op te maken, dat aan te koppelen, hoe ermee te werken en tenslotte hoe te ontkoppelen. Het wordt aangeraden een grotere sectorgrootte in te stellen (zoals 4 kB) voor betere prestaties. De Master Key wordt beschermd door een wachtwoordzin en de gegevensbron voor het sleutelbestand wordt /dev/random. De sectorgrootte van /dev/da2.eli, die als dienst wordt aangeduid, wordt 4 kB. &prompt.root; dd if=/dev/random of=/root/da2.key bs=64 count=1 &prompt.root; geli init -s 4096 -K /root/da2.key /dev/da2 Enter new passphrase: Reenter new passphrase: Het is niet verplicht om zowel een wachtwoordzijn als een sleutelbestand te gebruiken. De methodes kunnen onafhankelijk van elkaar gebruikt worden. Als een sleutelbestand wordt opgegeven als -, wordt de standaardinvoer gebruikt. In het onderstaande voorbeeld wordt aangegeven hoe meer dan een sleutelbestand kan worden gebruikt. &prompt.root; cat sleutelbestand1 sleutelbestand2 sleutelbestand3 | geli init -K - /dev/da2 De dienst koppelen met de gemaakte sleutel &prompt.root; geli attach -k /root/da2.key /dev/da2 Enter passphrase: Het nieuwe platte tekst-apparaat wordt /dev/da2.eli genoemd. &prompt.root; ls /dev/da2* /dev/da2 /dev/da2.eli Het nieuwe bestandssysteem maken &prompt.root; dd if=/dev/random of=/dev/da2.eli bs=1m &prompt.root; newfs /dev/da2.eli &prompt.root; mount /dev/da2.eli /private Het versleutelde bestandssysteem moet nu zichtbaar zijn voor &man.df.1; en beschikbaar zijn voor gebruik: &prompt.root; df -H Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 248M 89M 139M 38% / /devfs 1.0K 1.0K 0B 100% /dev /dev/ad0s1f 7.7G 2.3G 4.9G 32% /usr /dev/ad0s1d 989M 1.5M 909M 0% /tmp /dev/ad0s1e 3.9G 1.3G 2.3G 35% /var /dev/da2.eli 150G 4.1K 138G 0% /private De dienst afkoppelen Als het werk met de versleutelde partitie is afgehandeld en de /private-partitie niet langer nodig is, dan is het verstandig te overwegen de met geli versleutelde partitie af te koppelen van het bestandssysteem en de kernel. &prompt.root; umount /private &prompt.root; geli detach da2.eli Meer informatie over &man.geli.8; staat in de handleiding. Gebruik maken van het <filename>geli</filename> <filename>rc.d</filename> script. Bij geli hoort een rc.d script dat gebruikt kan worden om het gebruik van geli te vereenvoudigen. Een voorbeeld van hoe geli met &man.rc.conf.5; ingesteld kan worden volgt: geli_devices="da2" geli_da2_flags="-p -k /root/da2.key" Hiermee wordt /dev/da2 ingesteld als geli-dienst met Master Key-bestand /root/da2.key en geli gebruikt geen wachtwoordzin als de dienst wordt gekoppeld (dit kan alleen gebruikt worden als is meegegeven tijdens de geli init fase van geli). Een systeem ontkoppelt de geli-dienst van de kernel voordat het afsluit. Meer informatie over het instellen van rc.d staat in het onderdeel over rc.d.
Christian Brüffer Geschreven door Remko Lodder Vertaald door Het versleutelen van de wisselbestand ruimte swap encrypting Het versleutelen van de wisselbestand ruimte is gemakkelijk met &os; te configureren. Afhankelijk van welke versie er gebruikt wordt zijn er verschillende configuratie opties en instellingen mogelijk. De &man.gbde.8; en &man.geli.8; programma's kunnen gebruikt worden voor het versleutelen van het wisselbestand. Beide systemen maken gebruik van het encswap rc.d script. De vorige sectie, Schijfpartities versleutelen, biedt een korte discussie over de verschillende versleutel systemen. Waarom moet het wisselbestand versleuteld worden? Net als met het versleutelen van harde schijven, wordt het versleutelen van het wisselbestand gebruikt om gevoelige data te beschermen. Stelt u eens een applicatie voor dat omgaat het wachtwoorden. Zolang deze wachtwoorden in het fysieke geheugen blijven is er niets aan de hand. Echter zodra deze verplaatst worden naar het wisselbestand om ruimte te maken voor andere applicaties, kan het gebeuren dat de wachtwoorden onbeschermd op de harde schijf geschreven worden, waardoor het makkelijk te achterhalen is voor iemand die kwaad wilt. Het versleutelen van het wisselbestand biedt hierin een mogelijke uitkomst. Voorbereiding Tot het einde van deze sectie zal ad0s1b het wisselbestand bevatten. Tot op dit moment is het wisselbestand niet versleuteld. Het is mogelijk dat er reeds wachtwoorden of andere gevoelige data onbeschermd op de harde schijf geschreven zijn. Om dit te corrigeren, moet de data op de swap partitie overschreven worden met willekeurige data: &prompt.root; dd if=/dev/random of=/dev/ad0s1b bs=1m Versleutelen van het wisselbestand met &man.gbde.8; Er moet gebruik gemaakt worden van het .bde achtervoegsel aan het apparaat in de respectievelijke /etc/fstab-regel betreffende het wisselbestand: # Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b.bde none swap sw 0 0 Versleutelen van het wisselbestand met &man.geli.8; Het opzetten van &man.geli.8; voor het versleutelen van het wisselbestand is hetzelfde als dat van &man.gbde.8;. Hier moet echter gebruik gemaakt worden van het .eli achtervoegsel aan het apparaat in de respectievelijke /etc/fstab wisselbestand regel: # Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b.eli none swap sw 0 0 &man.geli.8; maakt standaard gebruik van het AES algoritme met een sleutellengte van 128 bits. Optioneel kunnen deze standaardwaarden worden aangepast door gebruik te maken van de geli_swap_flags optie in /etc/rc.conf. De volgende regel verteld het encswap rc.d bestand om een &man.geli.8; wisselbestand te maken met het Blowfish algoritme met een sleutel lengte van 128 bit, een sectorgrootte van 4 kilobytes en met de optie ontkoppelen nadat de laatste afsluiting gezet: geli_swap_flags="-e blowfish -l 128 -s 4096 -d" Zie de uitleg over het onetime commando in de &man.geli.8; handleiding voor een lijst van mogelijke opties. Controleren of het werkt Zodra het systeem opnieuw opgestart is kan gekeken worden of alles nog goed werkt door gebruik te maken van het swapinfo commando. Als gebruik gemaakt wordt van &man.gbde.8;: &prompt.user; swapinfo Device 1K-blocks Used Avail Capacity /dev/ad0s1b.bde 542720 0 542720 0% Als gebruik gemaakt wordt van &man.geli.8;: &prompt.user; swapinfo Device 1K-blocks Used Avail Capacity /dev/ad0s1b.eli 542720 0 542720 0% Daniel Gerzo Bijgedragen door Freddie Cash Met informatie van Pawel Jakub Dawidek Michael W. Lucas Viktor Petersson Highly Available Storage (HAST) HAST hoge beschikbaarheid Overzicht Hoge beschikbaarheid is een van de hoofdzaken in serieuze zakelijke toepassingen en hoog beschikbare opslag is een sleutelonderdeel in zulke omgevingen. Hoog beschikbare opslag, of HASTHighly Available STorage, werd ontwikkeld door &a.pjd; als een raamwerk dat transparante opslag van dezelfde gegevens toestaat over fysiek gescheiden machines die verbonden zijn door een TCP/IP-netwerk. HAST kan gezien worden als een netwerkgebaseerde RAID1 (spiegel) en is vergelijkbaar met het DRBD® opslagsysteem bekend van het GNU/&linux; platform. In combinatie met andere eigenschappen voor hoge beschikbaarheid van &os; zoals CARP maakt HAST het mogelijk om een opslagcluster met hoge beschikbaarheid te bouwen dat resistent is tegen falende hardware. Na het lezen van deze sectie weet u: Wat HAST is, hoe het werkt en welke mogelijkheden het biedt. Hoe HAST op &os; te op te zetten en te gebruiken. Hoe CARP en &man.devd.8; te integreren om een robuust opslagsysteem te bouwen. Voor het lezen van deze sectie dient u: De beginselen van &unix; en &os; te begrijpen (). Te weten hoe de netwerkinterfaces en andere kerndeelsystemen van &os; in te stellen (). Netwerken op &os; goed te begrijpen (). &os; 8.1-RELEASE of nieuwer te gebruiken. Het HAST-project werd gesponsord door The &os; Foundation met ondersteuning van OMCnet Internet Service GmbH en TransIP BV. Eigenschappen van HAST De belangrijkste eigenschappen van HAST zijn: Het kan gebruikt worden om I/O-fouten op lokale harde schijven te maskeren. Agnostisch qua bestandssysteem, dus het werkt met elk bestandssysteem dat door &os; wordt ondersteund. Efficiënte en snelle hersynchronisatie, alleen de blokken die zijn veranderd toen een knooppunt uitstond worden gesynchroniseerd. Het kan gebruikt worden in reeds uitgerolde omgevingen om aanvullende redundantie toe te voegen. Samen met CARP, Heartbeat of andere gereedschappen kan het worden gebruikt om een robuust en duurzaam opslagsysteem te bouwen. Werking van HAST Omdat HAST synchrone replicatie op blokniveau van elk opslagmedium naar verscheidene machines biedt, heeft het tenminste twee knooppunten (fysieke machines) nodig — het primaire (ook bekend als meester) knooppunt en het secundaire (slaaf) knooppunt. Tezamen worden deze twee machines een cluster genoemd. HAST is momenteel beperkt tot een totaal van twee clusterknooppunten. Aangezien HAST in een primaire-secundaire configuratie werkt, kan er op elk moment slechts één van de clusterknooppunten actief zijn. Het primaire knooppunt, ookwel actief, is degene die alle I/O-verzoeken aan apparaten die door HAST worden beheerd afhandelt. Het secundaire knooppunt wordt dan automatisch gesynchroniseerd vanuit het primaire knooppunt. De fysieke componenten van het HAST-systeem zijn: lokale schijf (op primair knooppunt) schijf op verre machine (secundair knooppunt) HAST werkt synchroon op blokniveau, wat het transparant maakt voor bestandssystemen en toepassingen. HAST biedt reguliere GEOM-aanbieders aan in /dev/hast/ voor zowel andere gereedschappen als toepassingen, er is dus geen verschil tussen het gebruik van apparaten die door HAST worden geleverd en rauwe schijven, partities, etc. Elke bewerking met betrekking tot schrijven, verwijderen of spoelen wordt naar de plaatselijke schijf en over TCP/IP naar de verre schijf gestuurd. Elke leesbewerking wordt gedaan door de plaatselijke schijf, tenzij de plaatselijke schijf niet actueel is of er een I/O-fout optreed. In zulke gevallen wordt de leesbewerking naar het secundaire knooppunt gestuurd. Synchronisatie- en replicatiemodi HAST probeert om een snel herstel van fouten te leveren. Om deze reden is het heel belangrijk om de synchronisatietijd te verkorten nadat een knooppunt is hersteld van een uitval. Om een snelle synchronisatie te leveren, beheert HAST op de schijf een bitmap van gebruikte extents en synchroniseert het die alleen tijdens een reguliere synchronisatie (met uitzondering van de initiëe synchronisatie). Er zijn vele manieren om synchronisatie af te handelen. HAST implementeert meerdere replicatiemodi om verschillende synchronisatiemethodes af te handelen: memsync: rapporteer een schrijfbewerking als voltooid wanneer de plaatselijke schrijfbewerking klaar is en wanneer het verre knooppunt de gegevensaankomst bevestigt, maar voordat het de gegevens daadwerkelijk heeft opgeslagen. De gegevens op het verre knooppunt zullen meteen na het versturen van de bevestiging worden opgeslagen. Deze modus is bedoeld om latency te verminderen en nog steeds een zeer goede betrouwbaarheid te bieden. De replicatiemodus memsync is momenteel niet geïmplementeerd. fullsync: rapporteer een schrijfbewerking als voltooid wanneer zowel de plaatselijke en de verre schrijfbewerking voltooid zijn. Dit is de veiligste en traagste replicatiemodus. Dit is de standaardmodus. async: rapporteer de schrijfbewerking als voltooid wanneer de plaatselijke schrijfbewerking klaar is. Dit is de snelste en gevaarlijkste replicatiemodus. Het dient gebruikt te worden wanneer er naar een ver knooppunt wordt gerepliceerd en de latency te hoog is voor andere modi. De replicatiemodus async is momenteel niet geïmplementeerd. Momenteel wordt alleen de replicatiemodus fullsync ondersteund. HAST-configuratie HAST heeft ondersteuning voor GEOM_GATE nodig om te kunnen functioneren. De kernel GENERIC bevat standaard geen GEOM_GATE, de laadbare module geom_gate.ko is echter beschikbaar in de standaardinstallatie van &os;. Zorg ervoor dat deze module beschikbaar is voor afgeslankte systemen. Het is ook mogelijk om ondersteuning voor GEOM_GATE statisch in de kernel te bouwen, door deze regel aan het kernelconfiguratiebestand toe te voegen: options GEOM_GATE Het HAST-raamwerk bestaat vanuit het besturingssysteem gezien uit verschillende delen: het daemon &man.hastd.8; dat verantwoordelijk is voor de gegevenssynchronisatie, het beheerprogramma &man.hastctl.8; voor de gebruikers, het configuratiebestand &man.hast.conf.5;. Het volgende voorbeeld beschrijft hoe twee knooppunten in een meester-slaaf / primaire-secundaire opstelling te configureren door HAST te gebruiken om de gegevens tussen de twee te repliceren. De knooppunten worden hasta met IP-adres 172.16.0.1 en hastb met IP-adres 172.16.0.2 genoemd. Beide knooppunten hebben een toegewijde harde schijf /dev/ad6 van dezelfde grootte om met HAST te werken. De HAST-pool (soms ook een hulpbron genoemd, i.e., de GEOM-aanbieder in /dev/hast/) wordt test genoemd. Het bestand /etc/hast.conf regelt de configuratie van HAST. Dit bestand dient hetzelfde te zijn op beide knooppunten. Het volgende is de eenvoudigste configuratie die mogelijk is: resource test { on hasta { local /dev/ad6 remote 172.16.0.2 } on hastb { local /dev/ad6 remote 172.16.0.1 } } Raadpleeg voor geavanceerdere configuraties de handleidingpagina &man.hast.conf.5;. Het is ook mogelijk om hostnamen in de regels met remote te gebruiken. Zorg er in dat geval voor dat deze hosts vindbaar zijn, bijvoorbeeld doordat ze zijn gedefinieerd in het bestand /etc/hosts of anders in het plaatselijke DNS. Nu de configuratie op beide knooppunten aanwezig is, kan de HAST-pool aangemaakt worden . Voer deze commando's op beide knooppunten uit om de initiële metagegevens op de plaatselijke schijf te plaatsen en het &man.hastd.8;-daemon te starten: &prompt.root; hastctl create test &prompt.root; /etc/rc.d/hastd onestart Het is niet mogelijk om GEOM-aanbieders met een bestaand bestandssysteem te gebruiken (i.e., een bestaande opslag omzetten naar een door HAST beheerde pool), omdat deze procedure wat metagegevens op de aanbieder moet opslaan en er daarvoor niet genoeg beschikbare ruimte is. De rol van een HAST-knooppunt (primair of secundair) wordt uitgekozen door een beheerder of software zoals Heartbeat dat het gereedschap &man.hastctl.8; gebruikt. Voer het volgende commando uit op het primaire knooppunt ( hasta): &prompt.root; hastctl role primary test Voer dit soortgelijke commando uit op het secundaire knooppunt ( hastb): &prompt.root; hastctl role secondary test De situatie dat de knooppunten niet met elkaar kunnen communiceren en beide geconfigureerd zijn als primaire knooppunten; wordt split-brain genoemd. Volg de stappen zoals beschreven in om deze situatie op te lossen. Verifieer met het gereedschap &man.hastctl.8; het resultaat op elk knooppunt: &prompt.root; hastctl status test De belangrijke tekst is de regel met status dat voor alle knooppunten complete dient te bevatten. Als het degraded bevat, is er iets verkeerd gegaan. Op dat moment is de synchronisatie tussen de knooppunten al begonnen. De synchronisatie is compleet wanneer hastctl status 0 bytes aan dirty extents rapporteert. De volgende stap is het aanmaken van een bestandssysteem op de GEOM-aanbieder /dev/hast/test en het aan te koppelen. Dit moet op het primaire knooppunt gebeuren, aangezien /dev/hast/test alleen op het primaire knooppunt verschijnt. Het aanmaken van het bestandssysteem kan afhankelijk van de grootte van de harde schijf enkele minuten duren: &prompt.root; newfs -U /dev/hast/test &prompt.root; mkdir /hast/test &prompt.root; mount /dev/hast/test /hast/test Wanneer het HAST-raamwerk correct is geconfigureerd, betreft de laatste stap het ervoor zorgen dat HAST automatisch tijdens het opstarten wordt gestart. Voeg deze regel toe aan het bestand /etc/rc.conf: hastd_enable="YES" Failover-configuratie Het doel van dit voorbeeld is om een robuust opslagsysteem te bouwen dat resistent is tegen het falen van alle knooppunten. Het scenario is dat een primair knooppunt van het cluster faalt. Als dit gebeurt, dan neemt het secundaire knooppunt het feilloos over, controleert het het bestandssysteem en koppelt het het bestandssysteem aan, en gaat het verder zonder dat er een bit aan gegevens ontbreekt. Om dit voor elkaar te krijgen, is er een andere eigenschap die beschikbaar is op &os; dat voorziet in automatische failover van de IP-laag — CARP. CARP (Common Address Redundancy Protocol) maakt het mogelijk dat meerdere hosts in hetzelfde netwerksegment een IP-adres delen. Stel CARP in op beide knooppunten van het cluster volgens de documentatie die beschikbaar is in . Nadat de opzet voltooid is, heeft elk knooppunt een eigen interface carp0 met een gedeeld IP-adres 172.16.0.254. Het primaire HAST-knooppunt van het cluster moet het meester-CARP-knooppunt zijn. De HAST-pool die in de vorige sectie is gemaakt is nu klaar om geëxporteerd te worden naar de andere hosts op het netwerk. Dit kan gedaan worden door het te exporteren over NFS, Samba, etc., door gebruik te maken van het gedeelde IP-adres 172.16.0.254. Het enige overgebleven probleem is een automatische failover in het geval dat het primaire knooppunt het begeeft. Als een CARP-interface aan- of uitgaat, genereert &os; een &man.devd.8;-gebeurtenis, wat het mogelijk maakt om toestandsveranderingen op de CARP-interfaces in de gaten te houden. Een toestandsverandering op het CARP-interface geeft aan dat een van de knooppunten het begaf of weer online kwam. Deze toestandsveranderingen maken het mogelijk om een script te draaien dat automatisch de HAST-failover afhandelt. Voeg, om toestandsverandering op de CARP-interfaces af te vangen, het volgende toe aan het bestand /etc/devd.conf op elk knooppunt: notify 30 { match "system" "IFNET"; match "subsystem" "carp0"; match "type" "LINK_UP"; action "/usr/local/sbin/carp-hast-switch master"; }; notify 30 { match "system" "IFNET"; match "subsystem" "carp0"; match "type" "LINK_DOWN"; action "/usr/local/sbin/carp-hast-switch slave"; }; Herstart &man.devd.8; op beide knooppunten om de nieuwe configuratie te laten gelden: &prompt.root; /etc/rc.d/devd restart Als het interface carp0 aan of uit gaat (i.e., de toestand van het interface verandert), genereert het systeem een notificatie wat het subsysteem &man.devd.8; in staat stelt om een willekeurig script te draaien, in dit geval /usr/local/sbin/carp-hast-switch. Dit is het script dat de automatische failover afhandelt. Raadpleeg de handleidingpagina &man.devd.conf.5; voor verdere uitleg over de bovenstaande configuratie van &man.devd.8;. Dit zou een voorbeeld van zo'n script kunnen zijn: #!/bin/sh # Origineel script door Freddie Cash <fjwcash@gmail.com> # Gewijzigd door Michael W. Lucas <mwlucas@BlackHelicopters.org> # en Viktor Petersson <vpetersson@wireload.net> # De namen van de HAST-hulpbronnen, zoals vermeld in /etc/hast.conf resources="test" # vertraging voor het aankoppelen van de HAST-hulpbron na het worden van meester # doe een gok delay=3 # logging log="local0.debug" name="carp-hast" # einde van gebruiker-instelbare dingen case "$1" in master) logger -p $log -t $name "Omschakelen naar primaire aanbieder voor ${resources}." sleep ${delay} # Wacht totdat de "hastd secondary" processen zijn gestopt for disk in ${resources}; do while $( pgrep -lf "hastd: ${disk} \(secondary\)" > /dev/null 2>&1 ); do sleep 1 done # Verwissel de rol voor elke schijf hastctl role primary ${disk} if [ $? -ne 0 ]; then logger -p $log -t $name "Omschakelen van rol naar primair voor hulpbron ${disk} mislukt." exit 1 fi done # Wacht totdat de apparaten /dev/hast/* verschijnen for disk in ${resources}; do for I in $( jot 60 ); do [ -c "/dev/hast/${disk}" ] && break sleep 0.5 done if [ ! -c "/dev/hast/${disk}" ]; then logger -p $log -t $name "GEOM-aanbieder /dev/hast/${disk} is niet verschenen." exit 1 fi done logger -p $log -t $name "Rollen van HAST-hulpbronnen ${resources} omgeschakeld naar primair." logger -p $log -t $name "Schijven aankoppelen." for disk in ${resources}; do mkdir -p /hast/${disk} fsck -p -y -t ufs /dev/hast/${disk} mount /dev/hast/${disk} /hast/${disk} done ;; slave) logger -p $log -t $name "Omschakelen naar secundaire aanbieder voor ${resources}." # Schakel de rollen van de HAST-hulpbronnen om for disk in ${resources}; do if ! mount | grep -q "^/dev/hast/${disk} on " then else umount -f /hast/${disk} fi sleep $delay hastctl role secondary ${disk} 2>&1 if [ $? -ne 0 ]; then logger -p $log -t $name "Omschakelen van rol naar secundair voor hulpbron ${disk} mislukt." exit 1 fi logger -p $log -t $name "Rol van hulpbron ${disk} omgeschakeld naar secundair." done ;; esac In een notendop neemt het script deze acties wanneer een knooppunt meester / primair wordt: De HAST-pools opwaarderen naar primair op een gegeven knooppunt. Het bestandssysteem onder de HAST-pool controleren. De pools op een juiste plaats aankoppelen. Wanneer een knooppunt back-up / secundair wordt: De HAST-pools afkoppelen. De HAST-pools degraderen naar secundair. Houd in gedachte dat dit slechts een voorbeeldscript is om aan te tonen dat alles werkt. Het behandeld niet alle mogelijke situaties en kan op elke manier worden uitgebreid of veranderd, het kan bijvoorbeeld benodigde diensten starten en stoppen. Voor dit voorbeeld hebben we een standaard UFS-bestandssysteem gebruikt. Om de tijd die nodig is voor herstel te verkorten, kan een bestandssysteem met UFS-journalling of ZFS worden gebruikt. Meer gedetailleerde informatie met aanvullende voorbeelden kunnen gevonden worden op de HAST Wiki-pagina. Problemen oplossen Algemene tips om problemen op te lossen HAST zou over het algemeen zonder problemen moeten werken. Net als met elk ander software-product zijn er momenten waarop het anders werkt dan het zou moeten. De oorzaken van de problemen kunnen verschillen, maar de vuistregel is om ervoor te zorgen dat de klokken zijn gesynchroniseerd op alle knooppunten in het cluster. Wanneer problemen met HAST worden verholpen, dient het debug-niveau van &man.hastd.8; verhoogd te worden door het daemon &man.hastd.8; met het argument -d op te starten. Merk op dat dit argument meerdere malen kan worden opgegeven om het debug-niveau nog verder op te hogen. Op deze manier kan veel nuttige informatie worden vergaard. Overweeg ook om het argument -F te gebruiken, dat het daemon &man.hastd.8; in de voorgrond zal starten. Herstellen van de Split-brain-conditie Split-brain treedt op waneer de knooppunten van het cluster niet met elkaar kunnen communiceren, en beide als primair zijn geconfigureerd. Dit is een gevaarlijke situatie omdat het beide knooppunten in staat stelt om incompatibele veranderingen aan de gegevens te maken. Dit probleem dient handmatig door de systeembeheerder te worden gecorrigeerd. De beheerder moet besluiten welk knooppunt de belangrijkere veranderingen bevat (of ze handmatig samenvoegen) en HAST een volledige synchronisatie op het knooppunt dat de kapotte gegevens heeft laten uitvoeren. Voer hiervoor deze commando's uit op het knooppunt dat opnieuw gesynchroniseerd moet worden: &prompt.root; hastctl role init <resource> &prompt.root; hastctl create <resource> &prompt.root; hastctl role secondary <resource>
Index: translations/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.xml (revision 40367) @@ -1,413 +1,413 @@ Tom Rhodes Geschreven door René Ladan Vertaald door &dtrace; Overzicht &dtrace; &dtrace;-ondersteuning &dtrace; &dtrace;, ook bekend als Dynamic Tracing, was ontwikkeld door &sun; als een gereedschap om prestatie-bottlenecks in productie- en preproductiesystemen op te sporen. Het is in geen enkel opzicht een debug-gereedschap, maar een gereedschap voor real-time analyse om prestatie- en andere zaken op te sporen. &dtrace; is een opmerkelijk profileringsgereedschap, met een indrukwekkende verzameling mogelijkheden om systeemzaken te diagnosticeren. Het kan ook worden gebruikt om vooraf geschreven scripts te draaien om zo voordeel te halen uit de mogelijkheden. Gebruikers kunnen zelfs hun eigen middelen schrijven door gebruik te maken van de &dtrace; D Language, wat ze in staat stelt om hun profilering aan te passen aan hun specifieke behoeften. Na het lezen van dit hoofdstuk weet u: Wat &dtrace; is en welke mogelijkheden het biedt. De verschillen tussen de &dtrace;-implementatie van &solaris; en degene die door &os; wordt aangeboden. Hoe &dtrace; op &os; aan te zetten en te gebruiken. Voordat u dit hoofdstuk leest, dient u: De beginselen van &unix; en &os; te begrijpen (). Bekend te zijn met de beginselen van kernelconfiguratie en -compilatie (). Wat bekendheid te hebben met beveiliging en hoe het zich verhoudt tot &os; (). Te begrijpen hoe de broncode van &os; te verkrijgen en te herbouwen (). Deze mogelijkheid wordt als experimenteel beschouwd. Van sommige opties kan er functionaliteit ontbreken, andere delen kunnen in het geheel niet werken. In de loop der tijd zal deze mogelijkheid als productierijp worden beschouwd en zal deze documentatie worden aangepast om die situatie te representeren. Implementatieverschillen Hoewel &dtrace; in &os; erg lijkt op degene die in &solaris; zit, zijn er verschillen die uitgelegd moeten worden voordat er verder wordt gegaan. Het primaire verschil dat gebruikers zullen zien is dat &dtrace; specifiek moet worden aangezet op &os;. Er zijn kernelopties en modulen die aangezet moeten worden om &dtrace; juist te laten werken. Deze zullen later worden uitgelegd. Er is een kerneloptie DDB_CTF die gebruikt wordt om ondersteuning voor het laden van CTF-gegevens van kernelmodulen en de kernel zelf. CTF is het Compact C Type Format van &solaris; welke een beperkte vorm van debuginformatie bevat die vergelijkbaar is met DWARF en de befaamde stabs. Deze CTF-gegevens worden door de bouwmiddelen ctfconvert en ctfmerge aan de binairen toegevoegd. Het hulpmiddel ctfconvert parseert DWARF ELF-debug-secties die door de compiler zijn aangemaakt en ctfmerge voegt CTF ELF-secties van objecten samen in hun executables of gedeelde bibliotheken. Meer informatie over hoe dit voor de bouw van de kernel en &os; aan te zetten komt eraan. Sommige aanbieders voor &os; verschillen van die voor &solaris;. De meest opmerkelijke is de aanbieder dtmalloc, welke het volgen van malloc() op soort in de &os;-kernel toestaat. Alleen root mag &dtrace; op &os; gebruiken. Dit heeft te maken met beveiligingsverschillen, &solaris; heeft enkele beveiligingscontroles op laag niveau die nog niet bestaan in &os;. Hierom is /dev/dtrace/dtrace strikt beperkt tot root. Tenslotte valt de &dtrace;-software onder de CDDL-licentie van &sun;. De Common Development and Distribution License wordt bij &os; geleverd, zie /usr/src/cddl/contrib/opensolaris/OPENSOLARIS.LICENSE of bekijk het online op . Deze licentie houdt in dat een &os;-kernel met de &dtrace;-opties nog steeds onder de BSD-licentie valt; de CDDL komt echter op de proppen wanneer de modulen in binaire vorm worden verspreid, of wanneer de binairen zijn geladen. Ondersteuning voor &dtrace; aanzetten Voeg de volgende regels toe aan het kernelinstellingenbestand om ondersteuning voor &dtrace; aan te zetten: options KDTRACE_HOOKS options DDB_CTF Gebruikers van de AMD64-architectuur zullen de volgende regel aan hun kernelinstellingenbestand willen toevoegen: options KDTRACE_FRAME Deze optie biedt ondersteuning voor de mogelijkheid FBT. &dtrace; zal zonder deze optie werken; er zal echter beperkte ondersteuning zijn voor het volgen van functiegrenzen. Alle broncode moet herbouwd en geherinstalleerd worden met de CTF-opties. Om deze taak te volbrengen, wordt de &os;-broncode herbouwd met: &prompt.root; cd /usr/src &prompt.root; make WITH_CTF=1 kernel Het systeem moet opnieuw gestart worden. Nadat opnieuw is opgestart en de nieuwe kernel in het geheugen is geladen, dient ondersteuning voor de Korn-shell te worden toegevoegd. Dit is nodig omdat de verschillende hulpmiddelen van - &dtrace; in ksh zijn geschreven. Installeer + &dtrace;Toolkit in ksh zijn geschreven. Installeer shells/ksh93. Het is ook mogelijk om deze hulpmiddelen in shells/pdksh of shells/mksh te draaien. - Als laatste dient de huidige &dtrace;-gereedschapskist - verkregen te worden. De huidige versie is beschikbaar op . - Het bevat een installatiemechanisme; om gebruik te maken van de - bijgeleverde hulpmiddelen is installatie echter niet nodig. + Als laatste dient de huidige &dtrace;Toolkit verkregen te worden. + Indien u &os; 10 draait, vindt u de &dtrace;Toolkit in + /usr/share/dtrace. In andere gevallen kunt u de + &dtrace;Toolkit installeren via de port sysutils/DTraceToolkit. &dtrace; gebruiken Voordat er gebruik wordt gemaakt van de functionaliteit van &dtrace;, moet het &dtrace;-apparaat bestaan. Geef het volgende commando om het apparaat te laten: &prompt.root; kldload dtraceall Ondersteuning van &dtrace; zou nu beschikbaar moeten zijn. De beheerder kan het volgende commando uitvoeren om alle sondes te bekijken: &prompt.root; dtrace -l | more Alle uitvoer wordt aan het hulpmiddel more doorgegeven omdat het snel de schermbuffer zal laten overstromen. &dtrace; kan nu als werkend worden beschouwd. Het is nu tijd om de gereedschapskist te bekijken. De gereedschapskist is een verzameling van kant-en-klare scripts die met &dtrace; gedraaid kunnen worden om informatie over het systeem te verzamelen. Er zijn scripts om open bestanden, geheugen, CPU-gebruik, en nog veel meer te controleren. Pak de scripts uit met het volgende commando: &prompt.root; gunzip -c DTraceToolkit* | tar xvf - Ga naar die map met cd en zet de uitvoerpermissies voor alle bestanden waarvan de naam uit kleine letters bestaat, op 755. De inhoud van al deze scripts moet veranderd worden. Degenen die naar /usr/bin/ksh verwijzen dienen naar /usr/local/bin/ksh te verwijzen, de anderen die /usr/bin/sh gebruiken dienen gewijzigd te worden om /bin/sh te gebruiken, en tenslotte dienen degenen die /usr/bin/perl gebruiken veranderd te worden om /usr/local/bin/perl te gebruiken. Op dit moment is het voorzichtig om de lezer eraan te herinneren dat de ondersteuning voor &dtrace; in &os; niet compleet en experimenteel is. Veel van deze scripts zullen niet werken omdat ze of te &solaris;-specifiek zijn of omdat ze sondes gebruiken die momenteel niet ondersteund worden. Op het moment van schrijven worden slechts twee scripts van de &dtrace; Toolkit volledig ondersteund in &os;: de scripts hotkernel en procsystime. Dit zijn de twee die we in de volgende gedeelten van deze sectie zullen bekijken. De hotkernel is ontworpen om te identificeren welke functie de meeste kerneltijd gebruikt. Als het normaal gedraaid wordt, zal het uitvoer die op de volgende lijkt produceren: - &prompt.root; ./hotkernel + &prompt.root; cd /usr/share/dtrace/toolkit +&prompt.root; ./hotkernel Sampling... Hit Ctrl-C to end. De systeembeheerder moet de toetsencombinatie CtrlC gebruiken om het proces te stoppen. Nadat het gestopt is, zal het script een lijst van kernelfuncties en timinginformatie weergeven, waarbij de uitvoer in volgorde van toenemende tijd is gesorteerd: kernel`_thread_lock_flags 2 0.0% 0xc1097063 2 0.0% kernel`sched_userret 2 0.0% kernel`kern_select 2 0.0% kernel`generic_copyin 3 0.0% kernel`_mtx_assert 3 0.0% kernel`vm_fault 3 0.0% kernel`sopoll_generic 3 0.0% kernel`fixup_filename 4 0.0% kernel`_isitmyx 4 0.0% kernel`find_instance 4 0.0% kernel`_mtx_unlock_flags 5 0.0% kernel`syscall 5 0.0% kernel`DELAY 5 0.0% 0xc108a253 6 0.0% kernel`witness_lock 7 0.0% kernel`read_aux_data_no_wait 7 0.0% kernel`Xint0x80_syscall 7 0.0% kernel`witness_checkorder 7 0.0% kernel`sse2_pagezero 8 0.0% kernel`strncmp 9 0.0% kernel`spinlock_exit 10 0.0% kernel`_mtx_lock_flags 11 0.0% kernel`witness_unlock 15 0.0% kernel`sched_idletd 137 0.3% 0xc10981a5 42139 99.3% Het script werkt ook met kernelmodules. Draai het script met de vlag om deze mogelijkheid te gebruiken: &prompt.root; ./hotkernel -m Sampling... Hit Ctrl-C to end. ^C MODULE COUNT PCNT 0xc107882e 1 0.0% 0xc10e6aa4 1 0.0% 0xc1076983 1 0.0% 0xc109708a 1 0.0% 0xc1075a5d 1 0.0% 0xc1077325 1 0.0% 0xc108a245 1 0.0% 0xc107730d 1 0.0% 0xc1097063 2 0.0% 0xc108a253 73 0.0% kernel 874 0.4% 0xc10981a5 213781 99.6% Het script procsystime vangt en beeldt het tijdsgebruik van systeemaanroepen af voor een gegeven PID of procesnaam. In het volgende voorbeeld wordt er een nieuwe instantie van /bin/csh gedraaid. Het procsystime werd uitgevoerd en bleef wachten terwijl er enkele commando's op de andere instantie van csh werden getypt. Dit zijn de resultaten van deze test: &prompt.root; ./procsystime -n csh Tracing... Hit Ctrl-C to end... ^C Elapsed Times for processes csh, SYSCALL TIME (ns) getpid 6131 sigreturn 8121 close 19127 fcntl 19959 dup 26955 setpgid 28070 stat 31899 setitimer 40938 wait4 62717 sigaction 67372 sigprocmask 119091 gettimeofday 183710 write 263242 execve 492547 ioctl 770073 vfork 3258923 sigsuspend 6985124 read 3988049784 Zoals te zien is, lijkt de systeemaanroep read() de meeste tijd in nanoseconden te gebruiken en gebruikte de systeemaanroep getpid() de minste hoeveelheid tijd. De taal D De &dtrace;-gereedschapskist bevat vele scripts in de speciale taal van &dtrace;. Deze taal wordt de taal D genoemd door de documentatie van &sun;, en lijkt sterk op C++. Een diepgaande discussie over de taal valt buiten het bereik van dit document. Het wordt uitgebreid behandeld op . Index: translations/nl_NL.ISO8859-1/books/handbook/eresources/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/eresources/chapter.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/eresources/chapter.xml (revision 40367) @@ -1,2368 +1,2375 @@ Bronnen op Internet Door de snelle ontwikkeling van &os; zijn gedrukte media niet zo praktisch om de laatste ontwikkelingen te volgen. Elektronische bronnen zijn de beste, en vaak de enige, om op de hoogte te blijven van de laatste ontwikkelingen. Omdat &os; draait op de inzet van vrijwilligers, is de gebruikersgemeenschap vaak een soort technische ondersteuningsgroep, die heeft ontdekt dat email, webfora, en USENET de meeste effectieve manieren zijn om de gebruikersgemeenschap te bereiken. Hieronder staan de meest belangrijke contactmogelijkheden met de &os; gebruikersgemeenschap beschreven. Mochten er andere bronnen zijn die hier niet beschreven zijn, laat die dan weten aan de &a.doc;, zodat ze hier ook beschreven kunnen worden. Mailinglijsten De mailinglijsten zijn de meest directe manier om vragen te stellen aan of een technische discussie te beginnen met een geconcentreerd &os;-publiek. Er is een grote verscheidenheid aan lijsten met betrekking tot verschillende &os;-onderwerpen. Door uw vragen aan de meest geschikte mailinglijst te stellen bent u ongetwijfeld verzekerd van een sneller en accurater antwoord. De doelstellingen van de verschillende lijsten staan onderaan dit document. Lees alstublieft de doelstellingen alvorens lid te worden of mail te sturen. De meeste leden ontvangen tegenwoordig vaak honderden &os;-gerelateerde berichten per dag, en door de doelstellingen en gebruiksregels op te stellen wordt gestreefd om zo min mogelijk ruis op de lijn te krijgen. Door de voorgaande adviezen te negeren zouden de mailinglijsten op termijn falen als een effectief communicatiemedium over het project. Als u wilt testen of u naar de &os; lijsten email kunt versturen, stuur dan een bericht naar &a.test.name;. Stuur alstublieft geen testberichten naar andere lijsten. Bij twijfel over naar welke lijst te posten, kan de pagina Hoe de beste resultaten uit de &os;-vragen mailinglijst te halen wellicht helpen. Alvorens naar enige lijst te posten, is het verstandig te leren hoe de mailinglijsten het beste gebruikt kunnen worden. Hoe bijvoorbeeld zich vaak herhalende discussies voorkomen kunnen worden door het document Veel Gestelde Mailinglijstvragen (FAQ) te lezen. Voor alle mailinglijsten worden archieven bijgehouden die doorzocht kunnen worden op de &os; World Wide Web server. De met sleutelwoorden te doorzoeken archieven bieden een voortreffelijke methode om antwoorden te vinden op vaak gestelde vragen en horen geraadpleegd te worden voordat er vragen op een lijst worden gesteld. Merk op dat dit ook betekent dat berichten die naar de mailinglijsten van &os; worden verzonden tot in de oneindigheid worden gearchiveerd. Overweeg, wanneer het beschermen van privacy belangrijk is, om een tweede emailadres dat weggegooid kan worden te gebruiken en om alleen publieke informatie te posten. Lijstsamenvatting Algemene lijsten: De volgende zijn algemene lijsten waarop vrijelijk (en aangemoedigd) geabonneerd kan worden: Lijst Doel &a.advocacy.name; &os; Evangelisatie &a.announce.name; Belangrijke gebeurtenissen en projectdoelen &a.arch.name; Architectuur en ontwerp discussies &a.bugbusters.name; Discussie over het onderhoud van de &os; probleemrapportendatabase en aanverwante zaken &a.bugs.name; Bugbeschrijvingen &a.chat.name; Niet-technische onderwerpen met betrekking tot de &os;-gemeenschap &a.chromium.name; &os; specifieke Chromium problemen &a.current.name; Discussie over het gebruik van &os.current; &a.isp.name; Zaken voor Internet Service Providers die &os; gebruiken &a.jobs.name; Werk en mogelijkheden voor het geven van advies met betrekking tot &os; &a.questions.name; Gebruikersvragen en technische ondersteuning &a.security-notifications.name; Beveiligingswaarschuwingen &a.stable.name; Discussies over het gebruik van &os.stable; &a.test.name; Hier kunnen testberichten heengestuurd worden in plaats van naar de eigenlijke lijsten Technische lijsten: De volgende lijsten zijn voor technische discussie. Het is van belang de doelstellingen te lezen alvorens lid te worden of mail te sturen omdat de richlijnen voor het gebruik en de inhoud erg strikt zijn. Lijst Doel &a.acpi.name; Ontwikkeling van ACPI en energiebeheer &a.afs.name; Porten van AFS naar &os; &a.aic7xxx.name; Ontwikkeling van stuurprogramma's voor de &adaptec; AIC 7xxx &a.amd64.name; Porten van &os; naar AMD64-systemen &a.apache.name; Discussie over ports met betrekking tot Apache &a.arm.name; Porten van &os; naar &arm;-processors &a.atm.name; Het gebruik van ATM-netwerken met &os; &a.bluetooth.name; &bluetooth; technologie gebruiken in &os; &a.cluster.name; &os; gebruiken in een geclusterde omgeving &a.cvsweb.name; CVSweb onderhoud &a.database.name; Discussie over het gebruik en de ontwikkeling van databases met &os; &a.desktop.name; &os; gebruiken op en verbeteren voor bureaubladen &a.doc.name; Het maken van &os;-gerelateerde documenten &a.drivers.name; Apparaatstuurprogramma's schrijven voor &os; &a.eclipse.name; Gebruikers van Eclipse IDE, hulpprogramma's, cliëntapplicaties en ports &a.eol.name; Ondersteuning voor &os;-gerelateerde software welke niet langer ondersteund worden door het &os;-project. &a.embedded.name; &os; gebruiken in embedded applicaties. &a.emulation.name; Emulatie van andere systemen zoals &linux;, &ms-dos;, en &windows; &a.firewire.name; &os; &firewire; (iLink, IEEE 1394) technische discussie &a.fs.name; Bestandssystemen &a.gecko.name; Discussies over de Gecko Rendering Engine &a.geom.name; GEOM-specifieke discussies en implementaties &a.gnome.name; Porten van GNOME en GNOME applicaties &a.hackers.name; Algemene technische discussies &a.hardware.name; Algemene discussies over hardware voor het draaien van &os; &a.i18n.name; &os; Internationalisatie &a.ia32.name; &os; op het IA-32 (&intel; x86) platform &a.ia64.name; Porten van &os; naar &intel;'s IA64 systemen + &a.infiniband.name; + + Infiniband op &os; + + + &a.ipfw.name; Technische discussie over het herontwerp van de IP-firewallcode &a.isdn.name; ISDN-ontwikkelaars &a.jail.name; Discussies over de &man.jail.8;-faciliteiten. &a.java.name; &java; ontwikkelaars en mensen die &jdk;s porten naar &os; &a.kde.name; Porten van KDE en KDE applicaties &a.lfs.name; Porten van LFS naar &os; &a.mips.name; Porten van &os; naar &mips; &a.mobile.name; Discussie over mobiel computeren &a.mono.name; Mono en C# applicaties op &os; &a.mozilla.name; Porten van Mozilla naar &os; &a.multimedia.name; Multimedia-applicaties &a.newbus.name; Technische discussies over busarchitecturen &a.net.name; Discussies over netwerken en TCP/IP-broncode &a.numerics.name; Discussies over implementaties van hoge kwaliteit van functies in libm &a.office.name; Kantoortoepassingen op &os; &a.performance.name; Optimalisatie van prestaties voor installaties met hoge prestaties en/of load &a.perl.name; Onderhoud van een aantal ports met betrekking tot Perl &a.pf.name; Discussies en vragen voor het pakketfilter firewallsysteem &a.platforms.name; Ports naar niet &intel;-architectuurplatformen &a.ports.name; Discussie over de Portscollectie &a.ports-announce.name; Belangrijk nieuws en belangrijke instructies over de Portscollectie &a.ports-bugs.name; Discussie over bugs in ports en PR's &a.ppc.name; Porten van &os; naar de &powerpc; &a.proliant.name; Technische discussie over &os; op HP Proliant serverplatforms &a.python.name; &os;-specifieke zaken over Python &a.realtime.name; Ontwikkeling van realtime-uitbreidingen voor &os; &a.rc.name; Discussie over het rc.d-systeem en de ontwikkeling daarvan &a.ruby.name; &os;-specifieke discussies over Ruby &a.scsi.name; Het SCSI-subsysteem &a.security.name; Beveiligingsonderwerpen betreffende &os; &a.small.name; &os; gebruiken in embedded toepassingen, verouderd, gebruik in plaats hiervan &a.embedded.name; &a.sparc.name; Porten van &os; naar op &sparc; gebaseerde systemen &a.standards.name; Volgen van de C99- en de &posix; standaarden door &os; &a.sysinstall.name; Ontwikkeling van &man.sysinstall.8; + &a.tcltk.name; + + &os;-specifieke discussies over Tcl/Tk + + + &a.threads.name; Threading in &os; &a.tilera.name; &os; porteren naar de Tilera CPU-familie &a.tokenring.name; Ondersteuning voor Token Ring in &os; &a.toolchain.name; Onderhoud van de ingebouwde toolchain van &os; &a.usb.name; Discussie over &os;-ondersteuning voor USB &a.virtualization.name; Discussies over verscheidene virtualisatietechnieken ondersteund door &os; &a.vuxml.name; Discussie over VuXML-infrastructuur &a.x11.name; Onderhoud en ondersteuning voor X11 op &os; &a.xen.name; Discussies over het overbrengen van &os; naar &xen; — implementatie en gebruik &a.xfce.name; Overbrengen en onderhouden van XFCE voor &os; &a.zope.name; Zope voor &os; — overbrengen en onderhouden Beperkte lijsten: De volgende lijsten zijn voor meer gespecialiseerd publiek en algemene gebruikers hebben er waarschijnlijk niets aan. Het is verstandig om eerst naam te maken in de technische lijsten alvorens lid te worden van een van de onderstaande beperkte lijsten, zodat de gebruiken op die lijst bekend zijn. Lijst Doel &a.hubs.name; Mensen die mirrorsites draaien (infrastructurele ondersteuning) &a.usergroups.name; Gebruikersgroepcoördinatie &a.vendors.name; Coördinatie van vooruitgaven met wederverkopers &a.wip-status.name; &os; Werk-In-Uitvoering status &a.wireless.name; Discussies over de ontwikkeling van de 802.11-stack, gereedschappen en stuurprogramma's. &a.www.name; Beheerders van www.FreeBSD.org Verkorte versie van lijsten (digest): Alle hierboven beschreven lijsten zijn beschikbaar in verkorte vorm. Na het lid worden van een lijst zijn de digest opties te wijzigen bij de accountopties. SVN-lijsten: De volgende lijsten zijn voor mensen met interesse in het zien van logboekberichten voor wijzigingen in verschillende onderdelen van de broncodeboom. Het zijn Alleen-lezen-lijsten waar geen email heen gezonden hoort te worden. Lijst Broncodegebied Broncodebeschrijving &a.svn-doc-all.name; /usr/doc Alle wijzigingen aan het doc-Subversion-reservoir (behalve user, projects en translations) &a.svn-doc-head.name; /usr/doc Alle wijzigingen aan de tak head van het doc-Subversion-reservoir &a.svn-doc-projects.name; /usr/doc/projects Alle wijzigingen in het projects-gebied van het doc-Subversion-reservoir &a.svn-doc-svnadmin.name; /usr/doc Alle wijzigingen aan de administratieve scripts, haken en andere configuratiegegevens van het doc-Subversion-reservoir &a.svn-ports-all.name; /usr/ports Alle wijzigingen aan het ports-Subversion-reservoir &a.svn-ports-head.name; /usr/ports Alle wijzigingen aan de tak head van het ports-Subversion-reservoir &a.svn-ports-svnadmin.name; /usr/ports Alle wijzigingen aan de administratieve scripts, haken en andere configuratiegegevens van het ports-Subversion-reservoir &a.svn-src-all.name; /usr/src Alle wijzigingen in het src-Subversion-repository (behalve user en projects) &a.svn-src-head.name; /usr/src Alle wijzigingen aan de head-tak van het src-Subversion-repository (de tak &os;-CURRENT) &a.svn-src-projects.name; /usr/projects Alle wijzigingen aan het gebied projects van het src-Subversion-repository &a.svn-src-release.name; /usr/src Alle veranderingen aan het gebied releases van het src-Subversion-repository &a.svn-src-releng.name; /usr/src Alle veranderingen aan de takken releng van het src-Subversion-repository (de beveiligings- / uitgavetakken) &a.svn-src-stable.name; /usr/src Alle veranderingen aan alle stable-takken van het src-Subversion-repository &a.svn-src-stable-6.name; /usr/src Alle veranderingen aan de stable/6-tak van het src-Subversion-repository &a.svn-src-stable-7.name; /usr/src Alle veranderingen aan de stable/7-tak van het src-Subversion-repository &a.svn-src-stable-8.name; /usr/src Alle veranderingen aan de stable/8-tak van het src-Subversion-repository &a.svn-src-stable-9.name; /usr/src Alle veranderingen aan de stable/9-tak van het src-Subversion-repository &a.svn-src-stable-other.name; /usr/src Alle veranderingen aan de oudere stable-takken van het src-Subversion-repository &a.svn-src-svnadmin.name; /usr/src Alle veranderingen aan de administratieve scripts, haken, en andere configuratiegegevens van het src-Subversion-repository &a.svn-src-user.name; /usr/src Alle veranderingen aan het experimentele gebied user van het src-Subversion-repository &a.svn-src-vendor.name; /usr/src Alle wijzigingen aan het verkoperswerkgebied van het src-Subversion-repository Hoe abonneren Om te abonneren op een lijst kan geklikt worden op de naam van de lijst hierboven of kan op &a.mailman.lists.link; geklikt worden op de lijst waarin interesse bestaat. De pagina waarop de lijsten staan beschreven bevat alle informatie die nodig is om te abonneren. Om te posten op een lijst kan een email gestuurd worden naar lijstnaam@FreeBSD.org. Daarna wordt die doorgestuurd aan leden van de lijst in de hele wereld. Om het abonnement op een lijst op te zeggen kan op de URL die onderaan iedere email van een lijst staat geklikt worden. Het is ook mogelijk om een email te sturen naar lijstnaam-unsubscribe@FreeBSD.org om een abonnement op te zeggen. Hierbij nogmaals het advies om discussies op de technische mailinglijsten technisch te houden. Als er alleen interesse bestaat in belangrijke mededelingen dan wordt aangeraden te abonnneren op &a.announce;, waarop zelden verkeer voorkomt. Lijstdoelstellingen Alle &os;-mailinglijsten hebben eigen regels waaraan voldaan dient te worden bij gebruik. Als daaraan niet wordt voldaan, resulteert dat in maximaal twee (2) schriftelijke waarschuwingen van de &os; Postmaster postmaster@FreeBSD.org, waarna na de derde overtreding de poster verwijderd wordt van alle &os;-mailinglijsten en alle toekomstige mail van het adres van de verzender wordt uitgefilterd. Helaas zijn deze regels nodig, omdat het Internet van vandaag de dag een onvriendelijke omgeving is en slechts weinigen zich bewust zijn van hoe fragiel sommige mechanismen zijn. Standaardregels: Het onderwerp van iedere mail dient te voldoen aan de basisdoelstellingen van de lijst waarnaar wordt gepost. Als de lijst bijvoorbeeld over technische onderwerpen gaat, dan hoort een post ook over iets technisch te gaan. Ruis en flaming doen alleen af aan de waarde van een mailinglijst voor alle leden en dat wordt niet getolereerd. Voor vrije discussie dient de &a.chat; gebruikt te worden die daar speciaal voor is ingesteld. Bijdragen horen niet naar meer dan twee mailinglijsten verzonden te worden en alleen dan naar twee als het helder en duidelijk is dat daarvoor de noodzaak bestaat. Voor de meeste lijsten bestaat er al veel overlap in de leden en met uitzondering van de meer esoterische lijsten, zoals bijvoorbeeld -stable & -scsi, is er eigenlijk slechts zelden aanleiding om naar meer dan een lijst te posten. Als een bericht zo is verzonden dat er meerdere mailinglijsten op de regel Cc staan, dan hoort de regel Cc weer ingekort te worden in een eventueel antwoord. De verzender is verantwoordelijk voor zijn eigen kruisposten, wie ook een eerdere zender was. Persoonlijke aanvallen en profane taal (in de context van een geschil) zijn niet toegestaan. Dit geldt zowel voor gebruikers als ontwikkelaars. Grove schending van de netiquette, zoals kopiëren uit of het volledig doorsturen van persoonlijke email zonder dat daarvoor toestemming is gegeven, wordt niet op prijs gesteld. Er zijn hoe dan ook zeer weinig gevallen waarin zoiets dergelijks wel binnen de doelstelling van een lijst valt, waardoor dat soort emails op grond van de inhoud alleen al vaak reden zijn voor een waarschuwing (of ban). Adverteren voor niet-&os;-gerelateerde producten is streng verboden en heeft direct een ban tot gevolg als helder is dat de overtreder adverteert door middel van spam. Individuele lijstdoelstellingen: &a.acpi.name; ACPI en energiebeheerontwikkeling &a.afs.name; Andrew Bestandssysteem (Andrew File System) Deze lijst is voor onderwerpen over het porten en gebruik van AFS van CMU/Transarc &a.announce.name; Belangrijke gebeurtenissen en projectdoelen Dit is de mailinglijst voor hen die alleen interesse hebben in gelegenheidsmededelingen of belangrijke &os;-gebeurtenissen. Hieronder vallen aankondigingen over snapshots en andere uitgaven. De lijst omvat ook aankondigingen over nieuwe mogelijkheden binnen &os;. Er kunnen ook oproepen gedaan worden voor vrijwilligers, enzovoort. Deze lijst kent een laag volume en is volledig gemodereerd. &a.arch.name; Discussie van architectuur en ontwerp Deze lijst is bedoeld voor het bespreken van de &os;-architectuur. Berichten zijn in het algemeen strikt technisch van aard. Voorbeelden van geschikte onderwerpen zijn: Hoe het buildsysteem bijgewerkt kan worden zodat meerdere aanpaste builds tegelijkertijd kunnen lopen. Wat moet er aan VPS aangepast worden om Heidemann-lagen te laten werken. Hoe kan de apparataatstuurprogramma interface aangepast worden zodat dezelfde stuurprogramma's netjes op vele bussen en architecturen gebruikt kunnen worden. Hoe een netwerkstuurprogramma geschreven kan worden. &a.bluetooth.name; &bluetooth; in &os; Dit is het forum waar gebruikers van &bluetooth; op &os; samenkomen. Gespreksstof op het gebied van ontwerp, implementatiedetails, patches, probleemrapportages, statusrapportages, verzoeken voor nieuwe mogelijkheden en al het andere dat met &bluetooth; te maken heeft is geschikt materiaal. &a.bugbusters.name; Coördinatie afhandeling Problem Reports Het doel van deze lijst is een platform zijn voor de coördinatie en discussie voor de Bugmeister, zijn Bugbusters en anderen die interesse hebben in de PR-database. Deze lijst is niet bedoeld voor discussies over specifieke bugs, patches of PR's. &a.bugs.name; Bug reports Dit is de mailinglijst voor het rapporteren van bugs in &os;. Waar mogelijk dienen bugs ingezonden te worden via &man.send-pr.1; of via de Webinterface daarvan. &a.chat.name; Niet-technische onderwerpen met betrekking tot de &os;-gemeenschap Deze lijst bevat alle onderwerpen waar op andere lijsten geen ruimte voor is wat betreft niet-technische en sociale informatie. Er wordt gesproken over de moord op Van Gogh, of er in onderkast of kapitalen geschreven dient te worden, wie er te veel koffie drinkt, waar het beste bier vandaan komt, enzovoort. Belangrijke gebeurtenissen (zoals feestjes, bruiloften, geboorten, nieuwe banen, enzovoort) kunnen op de technische lijsten aangekondigd worden, maar antwoorden dienen naar deze -chat lijst te gaan. &a.chromium.name; &os; specifieke Chromium problemen Dit is een lijst voor het bespreken van Chromium ondersteuning voor &os;. Dit is een technische lijst om de ontwikkelingen en installatie van Chromium te bespreken. &a.core.name; &os; Kernteam Dit is een interne mailinglijst die wordt gebruikt door de kernleden. Er kunnen berichten naar gestuurd worden als een belangrijke &os;-gerelateerde zaak arbitrage nodig heeft of een onderzoekende blik op hoog niveau nodig is. &a.current.name; Discussie over het gebruikt van &os.current; Dit is de mailinglijst voor gebruikers van &os.current;. Er staan waarschuwingen op over nieuwe mogelijkheden in -CURRENT die impact hebben op gebruikers en instructies over de te nemen stappen om -CURRENT te blijven. Iedereen die CURRENT draait, zou zich moeten abonneren. Dit is een technische mailinglijst waarop strikt technische berichten worden verwacht. &a.cvsweb.name; &os; CVSweb Project Technische discussie over het gebruik, de ontwikkeling en het beheer van &os;-CVSweb. &a.desktop.name; &os; gebruiken op en verbeteren voor bureaubladen Dit is een forum voor het bespreken van &os; op desktops. Het is vooral een plaats voor porters en gebruikers van bureaubladomgevingen om zaken te bespreken en de ondersteuning van &os; op het bureaublad te verbeteren. &a.doc.name; Documentatieproject Dit is de mailinglijst voor het bespreken van onderwerpen en projecten die te maken hebben met het maken van documentatie voor &os;. De leden van deze mailinglijst worden samen The &os; Documentation Project genoemd. Het is een open lijst waarop zonder problemen een abonnement genomen kan worden en bijdragen zeer op prijs worden gesteld! &a.drivers.name; Apparaatstuurprogramma's schrijven voor &os; Dit is een forum voor technische discussie met betrekking tot apparaatstuurprogramma's op &os;. Het is vooral een plaats voor schrijvers van apparaatstuurprogramma's om vragen te stellen over hoe apparaatstuurprogramma's te schrijven met de API's in de kernel van &os;. &a.eclipse.name; Gebruikers van Eclipse IDE, hulpprogramma's, cliëntapplicaties en ports De doelstelling van deze lijst is wederzijdse ondersteuning bieden voor alles dat te maken heeft met het kiezen, installeren, gebruiken, ontwikkelen, en onderhouden van Eclipse IDE, hulpprogramma's en cliëntapplicaties op het &os;-platform en te ondersteunen bij het porten van Eclipse IDE en plugins naar de &os;-omgeving. Het is ook de bedoeling om het uitwisselen van informatie tussen de Eclipse gemeenschap en de &os;-gemeenschap te bevorderen zodat beiden ervan kunnen profiteren. Hoewel deze lijst voornamelijk is gericht op de behoeften van gebruikers van Eclipse, wordt ook een forum geboden voor hen die &os;-specifieke applicaties willen ontwikkelen met het Eclipse raamwerk. &a.eol.name; Ondersteuning van &os; gerelateerde software welke niet meer ondersteund wordt door het &os;-project. Deze lijst is voor degenen die geïnteresseerd zijn in het leveren of gebruiken van ondersteuning voor &os;-gerelateerde software voor welke het &os;-project geen ondersteuning meer biedt (in de vorm van beveiligingsadviezen en patches). &a.embedded.name; &os; gebruiken in embedded applicaties Deze lijst heeft tot doel om te discussieren over &os; in embedded systemen. Dit is een technische mailinglijst waarbij men alleen technische inhoud verwacht. Voor het belang van deze lijst definiëren we embedded systemen als computersystemen die geen desktop-systemen zijn en meestal slechts één doel hebben ten opzichte van gewone systemen. Voorbeelden bevatten onder andere: diverse soorten telefoonsets, netwerkapparatuur zoals routers, switches en PBX'en, op afstand bestuurbare meetapparatuur, PDA's, Point of Sale systemen etc. &a.emulation.name; Emulatie van andere systemen zoals &linux;, &ms-dos; en &windows; Dit is een forum voor technische discussie met betrekking tot het draaien van programma's op &os; die zijn geschreven voor andere besturingssystemen. &a.firewire.name; &firewire; (iLink, IEEE 1394) Dit is de mailinglijst voor het bespreken van het ontwerp en de implementatie van een &firewire; (ook wel IEEE 1394 of iLink) subsysteem voor &os;. Relevante onderwerpen omvatten de standaarden, busapparaten en hun protocollen, adapter boards/kaarten/chipssets en de architectuur en implementatie van code voor een juiste ondersteuning. &a.fs.name; Bestandssystemen Discussie over &os;-bestandssystemen. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. &a.gecko.name; Gecko Rendering Engine Dit is een forum over Gecko applicaties die &os; gebruiken. De discussie concentreert zich op toepassingen van Gecko Ports, hun installatie, hun ontwikkeling en hun ondersteuning binnen &os;. &a.geom.name; GEOM Discussie specifiek over GEOM en gerelateerde implementaties. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. &a.gnome.name; GNOME Discussie over de bureaubladomgeving GNOME voor &os;. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. + &a.infiniband.name; + + + Infiniband op &os; + + Technische mailinglijst over Infiniband, OFED en OpenSM op + &os;. + + + + &a.ipfw.name; IP Firewall Dit is het forum voor technische bespreking van het herontwerp van de IP-firewallcode in &os;. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. &a.ia64.name; Porten van &os; naar IA64 Dit is een technische mailinglijst voor individuen die actief werken aan het porten van &os; naar het platform IA-64 van &intel;, om problemen op tafel te leggen of alternatieve oplossingen te bespreken. Geïnteresseerden die alleen de technische bespreking willen volgen zijn ook welkom. &a.isdn.name; ISDN-communicatie Dit is de mailinglijst voor discussie over de ontwikkeling van ISDN-ondersteuning voor &os;. &a.java.name; &java; Ontwikkeling Dit is de mailinglijst voor het bespreken van de ontwikkeling van significante &java; applicaties voor &os; en het porten en het beheer van &jdk;'s. &a.jobs.name; Banen in de aanbieding en gezocht Dit is een forum voor vacatures en CV's specifiek gerelateerd aan &os;, bijvoorbeeld als er &os;-gerelateerd werk wordt gezocht of in de aanbieding is. Dit is geen mailinglijst voor algemene werkonderwerpen omdat daarvoor al elders ruimte staat. Ook deze lijst wordt net als alle andere FreeBSD.org mailinglijsten wereldwijd verspreid. Daarom dient duidelijk vermeld te worden om welke locatie het gaat en onder welke voorwaarden telewerken of bijdragen in huisvesting mogelijk zijn. Email dient alleen open formaten te bevatten. Bij voorkeur platte tekst, maar standaard Portable Document Format (PDF), HTML, en een aantal andere, zijn acceptabel voor lezers. Gesloten formaten, zoals µsoft; Word (.doc), worden door de mailinglijstserver geweigerd. &a.kde.name; KDE Discussie over KDE op &os;-systemen. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. &a.hackers.name; Technische discussies Dit is een forum voor technische discussie met betrekking tot &os;. Dit is de leidende technische mailinglijst die is bestemd voor mensen die actief aan &os; werken om problemen aan het voetlicht te brengen of alternatieve oplossingen te bespreken. Geïnteresseerden die alleen de technische bespreking willen volgen zijn ook welkom. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. &a.hardware.name; Algemene discussie over &os;-hardware Algemene discussie over de typen hardware waar &os; op draait en problemen en oplossingen over wat te kopen en wat vooral niet. &a.hubs.name; Mirrorsites Aankondigingen en discussie voor beheerders van &os;-mirrorsites. &a.isp.name; Onderwerpen voor Internet Service Providers Deze mailinglijst is voor het bespreken van relevante onderwerpen voor Internet Service Providers (ISP's) die &os; gebruiken. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. &a.mono.name; Mono en C# applicaties op &os; Dit is een lijst voor discussies met betrekking tot het Mono-ontwikkelraamwerk op &os;. Dit is een technische mailinglijst. Het is bedoeld voor individuen die actief werken aan het overbrengen van Mono of C# applicaties naar &os;, om problemen naar voren te brengen of alternatieve oplossingen te bespreken. Individuen die geïnteresseerd zijn in het volgen van de technische discussie zijn ook welkom. &a.office.name; Kantoortoepassingen op &os; De discussie richt zich op kantoortoepassingen, hun installatie, hun ontwikkeling en hun ondersteuning binnen &os;. &a.performance.name; Discussie over het optimaliseren of versnellen van &os; Deze mailinglijst is een platform voor hackers, beheerders en/of andere belanghebbenden om &os;- en prestatiegerelateerde onderwerpen te bespreken. De onderwerpen die besproken kunnen worden omvatten &os;-installaties met een hoge load, systemen met prestatieproblemen of systemen die tegen de limieten van &os; aan zitten. Zij die willen meewerken om de prestaties van &os; te verbeteren worden sterk aangemoedigd zich op deze lijst te abonneren. Deze lijst is bijzonder technisch en bijzonder geschikt voor ervaren &os;-gebruikers, hackers en beheerders die &os; snel, robuust, en schaalbaar willen houden. Deze lijst is geen vraag-en-antwoord lijst die dient als vervanging voor het lezen van documentatie, maar hier worden bijdragen geleverd of vragen gesteld over nog niet eerder beschreven prestatiegerelateerde onderwerpen. &a.pf.name; Discussie en vragen over het pakketfilter firewallsysteem Discussie over het pakketfilter (pf) firewallsysteem met betrekking tot &os;. Technische discussie en gebruikersvragen zijn beiden welkom. Deze lijst is ook de plaats om het raamwerk ALTQ QoS te bespreken. &a.platforms.name; Porten van niet-&intel; platforms Cross-platform &os;-zaken, algemene discussie en voorstellen voor niet-&intel; &os; ports. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. &a.ports.name; Discussie over ports Discussie over de Portscollectie (/usr/ports) van &os;, de Ports infrastructuur en algemene coördinatie aangaande ports. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. &a.ports-announce.name; Belangrijk nieuws en belangrijke instructies over &os; Portscollectie Belangrijk nieuws voor ontwikkelaars, porters en gebruikers van de Portscollectie (/usr/ports), waaronder veranderingen aan de architectuur/infrastructuur, nieuwe mogelijkheden, kritische opwaardeerinstructies, en uitgave-informatie. Dit is een mailinglijst met een laag volume, bedoeld voor aankondigingen. &a.ports-bugs.name; Discussie over ports bugs Discussie over probleemrapportages voor de &os; Portscollectie (/usr/ports), voorgestelde ports of aanpassingen aan ports. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. &a.proliant.name; Technische discussie over &os; op HP Proliant serverplatforms Deze mailinglijst wordt gebruikt voor technische discussie over het gebruik van &os; op HP ProLiant servers, inclusief het bespreken van ProLiant-specifieke stuurprogramma's, beheersoftware, gereedschappen voor instellingen en BIOS-updates. Dit is daaarom ook de uitgesproken plaats voor het bespreken van de modules hpasmd, hpasmcli, en hpacucli. &a.python.name; Python op &os; Dit is een lijst voor discussie gerelateerd aan het verbeteren van ondersteuning voor Python op &os;. Dit is een technische mailinglijst voor mensen die aan het porten van Python, aanverwante modules en Zope-dingen naar &os; werken. &a.questions.name; Gebruikersvragen Dit is de mailinglijst voor vragen over &os;. Er horen geen how to vragen op de technische mailinglijsten thuis, tenzij een vraag erg technisch van aard is. &a.ruby.name; &os;-specifieke discussies over Ruby Dit is een lijst voor discussies gerelateerd aan de Ruby-ondersteuning op &os;. Dit is een technische mailinglijst. Het is bedoeld voor individuen die aan Ruby-ports, bibliotheken van derde partijen, en raamwerken werken. Individuen die geïnteresseerd zijn in de technische discussie zijn ook welkom. &a.scsi.name; SCSI-subsysteem Dit is de mailinglijst voor mensen die aan het SCSI-subsysteem voor &os; werken. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. &a.security.name; Beveiligingsonderwerpen &os;-computerbeveiligingsonderwerpen (DES, Kerberos, bekende beveiligingsgaten, oplossingen, enzovoort). Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. Dit is zeker geen vraag-en-antwoord lijst, maar bijdragen voor de FAQ (zowel vraag als antwoord) zijn welkom. &a.security-notifications.name; Beveiligingswaarschuwingen Waarschuwingen voor &os; beveiligingsproblemen en oplossingen. Dit is geen discussielijst. De discussielijst is &a.security.name;. &a.small.name; &os; gebruiken in embedded toepassingen Op deze lijst worden onderwerpen gerelateerd aan ongebruikelijk kleine en embedded &os;-installaties besproken. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. Deze lijst is vervangen door &a.embedded.name; &a.stable.name; Discussie over het gebruik van &os.stable; Dit is de mailinglijst voor gebruikers van &os.stable;. Er worden ook waarschuwingen op gepost over nieuwe opties in -STABLE die invloed op de systemen van gebruikers kunnen hebben en instructies over de te nemen stappen om -STABLE te blijven. Iedereen die STABLE draait hoort zich op deze lijst te abonneren. Dit is een technische mailinglijst waarop slechts strikt technische bijdragen worden verwacht. &a.standards.name; Conformeren C99 & POSIX Dit is een forum voor technische bespreking gerelateerd aan het conformeren van &os; aan de C99- en de POSIX-standaarden. &a.toolchain.name; Onderhoud van de ingebouwde toolchain van &os; Dit is de mailinglijst bedoeld voor discussies over het onderhoud van de toolchain die met &os; wordt geleverd. Dit zou de toestand van Clang en GCC kunnen omvatten, maar ook software als assemblers, linkers en debuggers. &a.usb.name; Discussie over &os; ondersteuning voor USB Dit is de mailinglijst voor technische bespreking van onderwerpen gerelateerd aan &os; ondersteuning voor USB. &a.usergroups.name; Gebruikersgroep Coördinatie Lijst Dit is de mailinglijst voor coördinatoren voor alle lokale gebruikersgroepen, zodat ze met elkaar en een lid van het Kernteam zaken kunnen bespreken. Deze lijst hoort beperkt te blijven tot een overzicht van overleggen en de coördinatie van projecten waarbij meerdere gebruikersgroepen betrokken zijn. &a.vendors.name; Verkopers Coördinatie en discussie tussen het &os;-project en verkopers van software en hardware voor &os;. &a.virtualization.name; Discussies over verscheidene virtualisatietechnieken ondersteund door &os; Een lijst om de verscheidene virtualisatietechnieken die door &os; worden ondersteund te bespreken. Aan de ene kant zal de nadruk liggen op de implementatie van de basale functionaliteit alsook op het toevoegen van nieuwe mogelijkheden. Aan de andere kant zullen gebruikers een forum hebben om om hulp te vragen bij problemen of om hun usecases te bespreken. &a.wip-status.name; &os; Werk-In-Uitvoering status Deze mailinglijst kan gebruikt worden om de schepping en voortgang van uw &os;-gerelateerd werk aan te kondigen. Berichten zullen gemodereerd worden. Het wordt gesuggereerd om het bericht "Aan:" een &os;-mailinglijst dat het onderwerp beter dekt te sturen en deze lijst alleen te "BCC:"-en. Op deze manier kan uw werk-in-uitvoering ook op de onderwerpslijst worden bediscussieerd, aangezien discussies op deze lijst niet zijn toegestaan. Kijk in de archieven voor voorbeelden van geschikte berichten. Een redactioneel overzicht van de berichten aan deze lijst kan om de paar maanden naar de &os;-website gezonden worden als deel van de Status Reports . Meer voorbeelden en oude rapportages zijn daar ook te vinden. &a.wireless.name; Discussies over de 802.11-stack, de ontwikkeling van gereedschappen voor stuurprogramma's De &os;-wireless lijst richt zich op de 802.11-stack (sys/net80211) en de ontwikkeling van stuurprogramma's en gereedschappen. Dit omvat bugs, nieuwe eigenschappen en onderhoud. &a.xen.name; Discussies over het porteren van &os; naar &xen; — implementatie en gebruik Een lijst die zich richt op de &os; &xen; port. De verwachte hoeveelheid verkeer is laag genoeg zodat het voor zowel technische discussies over de implementatie- en ontwerpdetails als voor zaken over administratief gebruik bedoeld is. &a.xfce.name; XFCE Dit is een forum voor discussies gerelateerd aan de XFCE-omgeving voor &os;. Dit is een technische mailinglijst. Het is bedoeld voor degenen die actief werken aan het porten van XFCE naar &os;, om problemen naar voren te brengen of alternatieve oplossingen te bespreken. Personen die geïnteresseerd zijn in het volgen van de technische discussie zijn ook welkom. &a.zope.name; Zope Dit is een forum voor discussies die verwant zijn aan het brengen van de Zope-omgeving naar &os;. Dit is een technische mailinglijst. Het is bedoeld voor individuen die actief werken aan het overbrengen van Zope naar &os;, om problemen aan te dragen of alternatieve oplossingen te bespreken. Individuen die geïnteresseerd zijn in het volgen van de technische discussie zijn ook welkom. Filters op de mailinglijsten De &os;-mailinglijsten worden op verschillende manieren gefilterd om het doorsturen van spam, virussen, en andere ongewenste email te beperken. De hieronder beschreven filteracties bevatten niet alle genomen acties voor de beveiliging van de mailinglijsten. Er is een beperkt aantal typen bijlagen toegestaan op de mailinglijsten. Alle bijlagen met een MIME-inhoudtype dat niet in de onderstaande lijst staat worden verwijderd voordat de mail wordt doorgestuurd naar de mailinglijsten. application/octet-stream application/pdf application/pgp-signature application/x-pkcs7-signature message/rfc822 multipart/alternative multipart/related multipart/signed text/html text/plain text/x-diff text/x-patch Sommige mailinglijsten staan wellicht bijlagen toe met andere MIME-inhoudtypen, maar de bovenstaande lijst zal gelden voor de meeste mailinglijsten. Als een email zowel een HTML- als een platte tekstversie bevat, dan wordt de HTML-versie verwijderd. Als een mail alleen een HTML-versie bevat, dan wordt die omgezet naar platte tekst. Usenet-nieuwsgroepen Naast de twee specifieke &os;-nieuwsgroepen zijn er nog vele andere waarin &os; wordt besproken of die anderszins relevant zijn voor gebruikers van &os;. Specifieke BSD nieuwsgroepen comp.unix.bsd.freebsd.announce comp.unix.bsd.freebsd.misc de.comp.os.unix.bsd (Duits) fr.comp.os.bsd (Frans) it.comp.os.freebsd (Italiaans) - - - tw.bbs.comp.386bsd - (Traditioneel Chinees) - Overige interessante &unix;-nieuwsgroepen comp.unix comp.unix.questions comp.unix.admin comp.unix.programmer comp.unix.shell comp.unix.user-friendly comp.security.unix comp.sources.unix comp.unix.advocacy comp.unix.misc - - - - comp.bugs.4bsd - - - - comp.bugs.4bsd.ucb-fixes comp.unix.bsd X Window systeem comp.windows.x.i386unix comp.windows.x comp.windows.x.apps comp.windows.x.announce comp.windows.x.intrinsics comp.windows.x.motif comp.windows.x.pex comp.emulators.ms-windows.wine World wide webservers Fora, blogs, en sociale netwerken The &os; Forums bieden een webgebaseerd discussieforum voor vragen en technische discussies over &os;. Planet &os; biedt een samengestelde feed van tientallen blogs geschreven door &os;-ontwikkelaars. Vele ontwikkelaars gebruiken dit om korte notities te posten over waaraan ze werken, nieuwe patches, en ander werk in uitvoering. Het BSDConferences YouTube Channel biedt een verzameling van video's van hoge kwaliteit van wereldwijde BSD-conferenties. Dit is een prima manier om presentaties van hoofdontwikkelaars over nieuw werk in &os; te zien. Officiële spiegels &chap.eresources.www.inc; Email-adressen De onderstaande gebruikersgroepen bieden &os;-gerelateerde email-adressen aan voor hun leden. De aangegeven beheerders behouden zich het recht voor om een account te verwijderen als die op enigerlei wijze wordt misbruikt. Domein Faciliteiten Gebruikersgroep Beheerder ukug.uk.FreeBSD.org Alleen forwarden ukfreebsd@uk.FreeBSD.org Lee Johnston lee@uk.FreeBSD.org Index: translations/nl_NL.ISO8859-1/books/handbook/filesystems/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/filesystems/chapter.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/filesystems/chapter.xml (revision 40367) @@ -1,913 +1,913 @@ Tom Rhodes Geschreven door Wouter Reckman Vertaald door René Ladan Ondersteuning van bestandssystemen Overzicht Bestandssystemen Ondersteuning bestandssystemen Bestandssystemen Bestandssystemen zijn een integraal onderdeel van ieder besturingssysteem. Ze stellen gebruikers in de gelegenheid om bestanden te uploaden en op te slaan, geven toegang tot gegevens en maken natuurlijk harde schijven bruikbaar. Verschillende besturingssystemen hebben gewoonlijk één gezamenlijk aspect, namelijk het bestandssysteem. Op &os; staat dit bestandssysteem bekend onder de naam Fast File System ofwel FFS, dat is gebaseerd op het oorspronkelijke Unix™ File System, ook bekend als UFS. Dit is het oorspronkelijke bestandssysteem van &os; dat op harde schijven wordt geplaatst voor gegevenstoegang. &os; ondersteunt daarnaast ook een groot aantal andere bestandssystemen om lokaal toegang tot gegevens van andere besturingssystemen te bewerkstelligen; dat wil zeggen: gegevens opgeslagen op lokaal aangesloten USB opslagapparaten, flash drives, en harde schijven. Verder is er ook ondersteuning voor vreemde bestandssystemen. Dit zijn bestandssystemen ontwikkeld voor andere besturingssystemen zoals het &linux; Extended File System (EXT) en het &sun; Z File System (ZFS). Er zijn verschillende gradaties van ondersteuning voor de verschillende bestandssystemen op &os;. Sommigen vereisen het laden van een kernelmodule, voor anderen moet een toolset worden geïnstalleerd. Dit hoofdstuk is geschreven om gebruikers van &os; te helpen om op hun systeem toegang te verkrijgen tot andere bestandssystemen, te beginnen met het &sun; Z File System. Na het lezen van dit hoofstuk weet de lezer: Het verschil tussen eigen en ondersteunde bestandssystemen. Welke bestandssystemen zijn ondersteund in &os;. Hoe niet-eigen bestandssystemen geactiveerd, geconfigureerd, benaderd en gebruikt kunnen worden. Voorafgaand aan het lezen van dit hoofdstuk dient de lezer: Begrip te hebben van de beginselen van &unix; en &os; (). Bekend te zijn met de beginselen van kernelconfiguratie en -compilatie (). Vertrouwd te zijn met installatie van software van derden in &os; (). Enigszins bekend te zijn met schijven, opslag en apparaatnamen in &os; (). Het Z File System (ZFS) Het Z File System, ontwikkeld door &sun;, is een nieuwe technologie ontwikkeld om gebruik te maken van een pool-gebaseerde opslagmethode. Dit houdt in dat ruimte pas wordt gebruikt wanneer het nodig is voor dataopslag. Verder is het ontworpen voor maximale integriteit van gegevens, ondersteuning van gegevens-snapshots, meerdere kopieën, en gegevenschecksums. Ook is een nieuw gegevensreplicatiemodel, bekend als RAID-Z, toegevoegd; RAID-Z lijkt op RAID5, maar is ontworpen om corruptie tijdens het schrijven van gegevens te voorkomen. ZFS tuning Het ZFS subsysteem maakt gebruik van veel systeembronnen waardoor het nodig kan zijn een en ander af te stellen, zodat voor het dagelijks gebruik maximale efficiëntie wordt behaald. Doordat het een experimentele eigenschap van &os; is, kan dit in de nabije toekomst veranderen; op dit moment echter, worden de volgende stappen aangeraden. Geheugen De totale hoeveelheid systeemgeheugen dient minstens één gigabyte te zijn, maar twee gigabytes of meer wordt aanbevolen. In alle voorbeelden hier heeft het systeem één gigabyte geheugen, met verschillende andere afstelmechanismen in werking. Sommigen hebben succes gehad met minder dan een gigabyte geheugen, maar met een dergelijke, beperkte hoeveelheid geheugen is de kans groot dat onder zware belasting een kernelpanic in &os; op zal treden door uitputting van het geheugen. Kernelconfiguratie Het wordt aangeraden om ongebruikte stuurprogramma's en opties te verwijderen uit het kernelconfiguratiebestand. Omdat de meeste stuurprogramma's beschikbaar zijn als modules kunnen ze alsnog worden geladen door middel van het bestand /boot/loader.conf. Gebruikers van de &i386;-architectuur dienen de volgende optie aan hun kernelconfiguratiebestand toe te voegen, de kernel opnieuw te compileren, en opnieuw op te starten: options KVA_PAGES=512 Deze optie vergroot de kerneladresruimte, waarmee het mogelijk wordt gemaakt om de vm.kvm_size afstelling hoger dan de huidige limiet van 1 GB (2 GB voor PAE) in te stellen. Deel, om de meest geschikte waarde voor deze optie te vinden, de gewenste hoeveelheid adresruimte door vier (4). In dit geval is dat 512 voor 2 GB. Loader tunables De kmem adresruimte dient te worden vergroot op alle &os; architecturen. Op het testsysteem met één gigabyte fysiek geheugen werd succes behaald met de volgende opties, die in het bestand /boot/loader.conf geplaatst dienen te worden, waarna het systeem opnieuw moet worden opgestart: vm.kmem_size="330M" vm.kmem_size_max="330M" vfs.zfs.arc_max="40M" vfs.zfs.vdev.cache.size="5M" Zie voor een meer gedetailleerde lijst van aanbevelingen aangaande ZFS-afstelling: . Gebruik maken van <acronym>ZFS</acronym> Er is een opstartmechanisme dat &os; in staat stelt om ZFS pools te mounten tijdens initialisatie van het systeem. Voer de volgende commando's uit om dit in te stellen: &prompt.root; echo 'zfs_enable="YES"' >> /etc/rc.conf &prompt.root; /etc/rc.d/zfs start In het resterende deel van dit document wordt aangenomen dat er drie SCSI-schijven beschikbaar zijn, en dat hun apparaatnamen respectievelijk da0, da1 en da2 zijn. Gebruikers van IDE-hardware kunnen de ad apparaten gebruiken in plaats van SCSI-apparaten. Een pool op een enkele schijf Voer het commando zpool uit om een simpele, niet-redundante ZFS-pool op een enkele schijf aan te maken: &prompt.root; zpool create example /dev/da0 Bestudeer de uitvoer van het commando df om de nieuwe pool te zien: &prompt.root; df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1a 2026030 235230 1628718 13% / devfs 1 1 0 100% /dev /dev/ad0s1d 54098308 1032846 48737598 2% /usr example 17547136 0 17547136 0% /example In deze uitvoer wordt duidelijk dat de example-pool niet alleen is aangemaakt, maar ook direct gemount is. Hij is ook toegankelijk, net als een gewoon bestandssysteem; er kunnen bestanden op worden aangemaakt en gebruikers kunnen er op rondkijken zoals in het volgende voorbeeld: &prompt.root cd /example &prompt.root; ls &prompt.root; touch testfile &prompt.root; ls -al total 4 drwxr-xr-x 2 root wheel 3 Aug 29 23:15 . drwxr-xr-x 21 root wheel 512 Aug 29 23:12 .. -rw-r--r-- 1 root wheel 0 Aug 29 23:15 testfile Helaas benut deze pool nog geen ZFS-mogelijkheden. Maak een bestandssysteem aan op deze pool en activeer er compressie op: &prompt.root; zfs create example/compressed &prompt.root; zfs set compression=gzip example/compressed example/compressed is nu een gecomprimeerd ZFS-bestandssysteem. Probeer er een paar grote bestanden naartoe te kopiëren door ze naar /example/compressed te kopiëren. De compressie kan nu worden uitgeschakeld met: &prompt.root; zfs set compression=off example/compressed Voer het volgende commando uit om het bestandssysteem te unmounten, en controleer dat daarna met df: &prompt.root; zfs umount example/compressed &prompt.root; df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1a 2026030 235232 1628716 13% / devfs 1 1 0 100% /dev /dev/ad0s1d 54098308 1032864 48737580 2% /usr example 17547008 0 17547008 0% /example Mount het bestandssysteem opnieuw om het weer toegankelijk te maken en controleer met df: &prompt.root; zfs mount example/compressed &prompt.root; df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1a 2026030 235234 1628714 13% / devfs 1 1 0 100% /dev /dev/ad0s1d 54098308 1032864 48737580 2% /usr example 17547008 0 17547008 0% /example example/compressed 17547008 0 17547008 0% /example/compressed De pool en het bestandssysteem zijn ook zichtbaar in de uitvoer van mount: &prompt.root; mount /dev/ad0s1a on / (ufs, local) devfs on /dev (devfs, local) /dev/ad0s1d on /usr (ufs, local, soft-updates) example on /example (zfs, local) example/data on /example/data (zfs, local) example/compressed on /example/compressed (zfs, local) Zoals is te zien kunnen ZFS-bestandssystemen, nadat ze zijn gecreëerd, net als gewone bestandssystemen worden gebruikt; er zijn echter ook vele andere mogelijkheden beschikbaar. In het volgende voorbeeld wordt er een nieuw bestandssysteem data gecreëerd. Er zullen belangrijke bestanden op worden bewaard, dus het bestandssysteem wordt zodanig ingesteld dat het twee kopieën van ieder gegevensblok opslaat: &prompt.root; zfs create example/data &prompt.root; zfs set copies=2 example/data Het is nu mogelijk om het gegevens- en ruimtegebruik te bekijken door df opnieuw te draaien: &prompt.root; df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1a 2026030 235234 1628714 13% / devfs 1 1 0 100% /dev /dev/ad0s1d 54098308 1032864 48737580 2% /usr example 17547008 0 17547008 0% /example example/compressed 17547008 0 17547008 0% /example/compressed example/data 17547008 0 17547008 0% /example/data Merk op dat ieder bestandssysteem in de pool dezelfde hoeveelheid vrije ruimte heeft. Dit is de reden dat df steeds wordt gebruikt tussen de voorbeelden door, om te laten zien dat de bestandssystemen slechts zoveel ruimte gebruiken als ze nodig hebben en allemaal putten uit dezelfde pool. Het ZFS bestandssysteem elimineert concepten als volumes en partities, en staat verschillende bestandssystemen toe om in dezelfde pool te bestaan. Verwijder nu de bestandssystemen en verwijder daarna de pool, omdat deze niet meer nodig zijn: &prompt.root; zfs destroy example/compressed &prompt.root; zfs destroy example/data &prompt.root; zpool destroy example Schijven gaan slechter werken en begeven het, een onvermijdelijke eigenschap. Wanneer de schijf stukgaat zullen de gegevens verloren gaan. Een methode om gegevensverlies ten gevolge van een kapotte harde schijf te vermijden is het implementeren van RAID. ZFS ondersteunt deze mogelijkheid in zijn pool-ontwerp en wordt beschreven in de volgende sectie. <acronym>ZFS</acronym> RAID-Z Zoals eerder opgemerkt wordt in deze sectie aangenomen dat er drie SCSI-schijven bestaan als de apparaten da0, da1 en da2 (of ad0 en hoger als IDE-schijven worden gebruikt). Voer het volgende commando uit om een RAID-Z-pool te creëren: &prompt.root; zpool create storage raidz da0 da1 da2 &sun; raadt aan om tussen de drie en negen schijven te gebruiken voor een RAID-Z-configuratie. Overweeg, als u een enkele pool met 10 of meer schijven nodig heeft, om deze te splitsen in kleine RAID-Z-groepen. Overweeg, als u slechts twee schijven heeft en nog steeds redundantie nodig heeft, om in plaats hiervan een ZFS-spiegel te gebruiken. Bekijk de handleidingpagina &man.zpool.8; voor meer details. De storage zpool zou gecreëerd moeten zijn. Dit kan worden geverifieerd met de &man.mount.8; en &man.df.1; commando's zoals eerder. Er kunnen meer schijfapparaten worden toegewezen door ze aan het einde van de bovenstaande lijst toe te voegen. Maak een nieuw bestandssysteem in de pool, genaamd home, waar op den duur de gebruikersbestanden geplaatst zullen worden: &prompt.root; zfs create storage/home Het is nu mogelijk om compressie in te schakelen en extra kopieën te bewaren van de gebruikersmappen en -bestanden. Dit kan net als eerder worden bewerkstelligd door de volgende commando's uit te voeren: &prompt.root; zfs set copies=2 storage/home &prompt.root; zfs set compression=gzip storage/home Kopieer, om dit als de nieuwe home-map voor gebruikers in te stellen, de gebruikersgegevens naar deze map en creëer de benodigde links: &prompt.root; cp -rp /home/* /storage/home &prompt.root; rm -rf /home /usr/home &prompt.root; ln -s /storage/home /home &prompt.root; ln -s /storage/home /usr/home De gebruikersgegevens zouden nu op het nieuw aangemaakte /storage/home bestandssysteem moeten staan. Test dit door een nieuwe gebruiker aan te maken en daarmee in te loggen. Probeer een snapshot te maken dat later weer hersteld kan worden: &prompt.root; zfs snapshot storage/home@08-30-08 Merk op dat de snapshot-optie alleen een echt bestandssysteem vastlegt, geen mappen of bestanden. Het @-karakter wordt gebruikt als scheidingsteken tussen de naam van het bestandssysteem of de naam van het volume. Wanneer de home-map van een gebruiker wordt weggegooid, kan deze worden hersteld met: &prompt.root; zfs rollback storage/home@08-30-08 Voer ls in de .zfs/snapshot directory van het bestandssysteem uit om een lijst van alle beschikbare snapshots te krijgen. Voer, om bijvoorbeeld het zojuist gemaakte snapshot te zien, het volgende commando uit: &prompt.root; ls /storage/home/.zfs/snapshot Het is mogelijk om een script te schrijven dat maandelijks een snapshot van de gebruikersgegevens maakt; na verloop van tijd kunnen snapshots echter een grote hoeveelheid schrijfruimte in beslag nemen. Het vorige snapshot kan worden verwijderd met het volgende commando: &prompt.root; zfs destroy storage/home@08-30-08 Na al dit testen is er geen reden om /storage/home in zijn huidige staat nog te bewaren. Maak er het echte /home bestandssysteem van: &prompt.root; zfs set mountpoint=/home storage/home Het uitvoeren van de commando's df en mount laat zien dat het systeem ons bestandssysteem nu als de echte /home behandelt: &prompt.root; mount /dev/ad0s1a on / (ufs, local) devfs on /dev (devfs, local) /dev/ad0s1d on /usr (ufs, local, soft-updates) storage on /storage (zfs, local) storage/home on /home (zfs, local) &prompt.root; df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1a 2026030 235240 1628708 13% / devfs 1 1 0 100% /dev /dev/ad0s1d 54098308 1032826 48737618 2% /usr storage 26320512 0 26320512 0% /storage storage/home 26320512 0 26320512 0% /home Hiermee is de RAID-Z configuratie compleet. Voer het volgende commando uit om status-updates van de gecreëerde bestandssystemen te krijgen tijdens het draaien van de nachtelijke &man.periodic.8;: &prompt.root; echo 'daily_status_zfs_enable="YES"' >> /etc/periodic.conf Het herstellen van <acronym>RAID</acronym>-Z Iedere software-RAID heeft een methode om zijn status te inspecteren. ZFS is geen uitzondering. De status van RAID-Z-apparaten kan worden geïnspecteerd met het volgende commando: &prompt.root; zpool status -x Als alle pools in orde zijn en alles is normaal, dan wordt het volgende bericht weergegeven: all pools are healthy Als er een probleem is, misschien een schijf die offine is gegaan, dan wordt de status van de pool weergegeven en dat zal er als volgt uitzien: pool: storage state: DEGRADED status: One or more devices has been taken offline by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. scrub: none requested config: NAME STATE READ WRITE CKSUM storage DEGRADED 0 0 0 raidz1 DEGRADED 0 0 0 da0 ONLINE 0 0 0 da1 OFFLINE 0 0 0 da2 ONLINE 0 0 0 errors: No known data errors Hier staat dat het apparaat offline is gezet door de beheerder. Dat is waar voor dit specifieke voorbeeld. Om de schijf offline te zetten werd het volgende commando gebruikt: &prompt.root; zpool offline storage da1 Het is nu mogelijk om de schijf da1 te vervangen nadat het systeem uitgeschakeld is. Zodra het systeem weer opgestart is, kan het volgende commando worden uitgevoerd om de schijf te vervangen: &prompt.root; zpool replace storage da1 Nu kan de status opnieuw geïnspecteerd worden, dit keer zonder de vlag, om de statusinformatie op te vragen: &prompt.root; zpool status storage pool: storage state: ONLINE scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008 config: NAME STATE READ WRITE CKSUM storage ONLINE 0 0 0 raidz1 ONLINE 0 0 0 da0 ONLINE 0 0 0 da1 ONLINE 0 0 0 da2 ONLINE 0 0 0 errors: No known data errors Zoals te zien in dit voorbeeld lijkt alles normaal te zijn. Gegevensverificatie Zoals eerder opgemerkt gebruikt ZFS checksums om de integriteit van opgeslagen gegevens te verifiëren. Ze worden automatisch ingeschakeld bij het creëeren van bestandssystemen en kunnen worden uitgeschakeld door middel van het volgende commando: &prompt.root; zfs set checksum=off storage/home Dit is echter geen verstandig idee, omdat checksums zeer weinig opslagruimte innemen en nuttiger zijn wanneer ze zijn ingeschakeld. Het lijkt daarnaast ook geen merkbare invloed op de prestaties te hebben wanneer ze zijn ingeschakeld. Wanneer ze aanstaan is het mogelijk om ZFS gegevensintegriteit te laten controleren door middel van checksum-verificatie. Dit proces staat bekend als scrubbing. Voer het volgende commando uit om de gegevensintegriteit van de storage-pool te controleren: &prompt.root; zpool scrub storage Dit proces kan, afhankelijk van de hoeveelheid opgeslagen gegevens, een aanzienlijke hoeveelheid tijd in beslag nemen. Het is daarnaast ook zeer I/O-intensief, zozeer dat slechts één van deze operaties tegelijkertijd uitgevoerd kan worden. Nadat de scrub is voltooid wordt de status bijgewerkt en kan deze worden bekeken door een statusaanvraag te doen: &prompt.root; zpool status storage pool: storage state: ONLINE scrub: scrub completed with 0 errors on Sat Aug 30 19:57:37 2008 config: NAME STATE READ WRITE CKSUM storage ONLINE 0 0 0 raidz1 ONLINE 0 0 0 da0 ONLINE 0 0 0 da1 ONLINE 0 0 0 da2 ONLINE 0 0 0 errors: No known data errors De voltooiingstijd is in dit voorbeeld duidelijk zichtbaar. Deze eigenschap helpt om gegevensintegriteit te garanderen gedurende een langere tijdsperiode. Er zijn vele andere opties voor het Z-bestandssysteem, zie de handleidingpagina's &man.zfs.8; en &man.zpool.8;. ZFS quota ZFS ondersteunt verschillende soorten quota: de refquota, de algemene quota, de gebruikersquota en de groepsquota. Deze sectie legt de beginselen van ieder van deze uit en bevat wat instructies voor gebruik. Quota beperken de hoeveelheid ruimte die een gegevensverzameling en zijn afstammelingen kunnen gebruiken en dwingen een limiet af op de hoeveelheid ruimte dat gebruikt wordt door bestandssystemen en snapshots voor deze afstammelingen. Vanuit gebruikers zijn quota handig om de hoeveelheid ruimte die een bepaalde gebruiker kan gebruiken te beperken. Quota kunnen niet op volumes worden ingesteld, aangezien de eigenschap volsize als een impliciet quotum optreedt. De refquota, refquota=grootte, beperkt de hoeveelheid ruimte die een gegevensverzameling in beslag kan nemen door een harde grens aan de gebruikte ruimte te stellen. Deze harde grens bevat echter niet de ruimte gebruikt door afstammelingen, zoals bestandssystemen of snapshots. Gebruik het volgende om een algemeen quotum van 10 GB voor /home/storage/bob af te dwingen: &prompt.root; zfs set quota=10G storage/home/bob Gebruikersquota beperken de hoeveelheid ruimte die door de aangegeven gebruiker kan worden gebruikt. Het algemene formaat is userquota@gebruiker=grootte waarbij de gebruikersnaam in één van de volgende formaten dient te zijn: Naam compatibel met POSIX (bijvoorbeeld jan). Numeriek POSIX-ID (bijvoorbeeld 789). SID-naam (bijvoorbeeld - jan.bloggs@voorbeeld.com). + jan.bloggs@example.com). Numeriek SID-ID (bijvoorbeeld S-1-123-456-789). Gebruik het volgende om bijvoorbeeld een een quotum van 50 GB voor een gebruiker jan af te dwingen: &prompt.root; zfs set userquota@jan=50G Gebruik in plaats hiervan, om het quotum te verwijderen of er zeker van te zijn dat er geen is ingesteld: &prompt.root; zfs set userquota@jan=none Eigenschappen van gebruikersquota worden niet weergegeven door zfs get all. Niet-root gebruikers kunnen alleen hun eigen quota zien tenzij het privilege userquota aan ze is gegeven. Gebruikers met dit privilege kunnen ieders quota bekijken en instellen. Groepsquota beperken de hoeveelheid ruimte die de gespecificeerde gebruikersgroep in beslag kan nemen. Het algemene formaat is groupquota@groep=grootte. Gebruik om het quotum voor de groep eerstegroep op 50 GB in te stellen: &prompt.root; zfs set groupquota@eerstegroep=50G Gebruik in plaats hiervan, om het quotum voor de groep eerstegroep te verwijderen of om er voor te zorgen dat deze niet is ingesteld: &prompt.root; zfs set groupquota@eerstegroep=none Net zoals bij de eigenschappen van gebruikersquota kunnen niet-root-gebruikers alleen de quota zien die geassocieerd zijn met de gebruikersgroepen waar ze bij horen, een root-gebruiker of een gebruiker met het privilege groupquota kan alle quota voor alle groepen bekijken en instellen. Het deelcommando zfs userspace geeft de hoeveelheid ruimte weer die door elke gebruiker op de snapshot van het gespecificeerde bestandssysteem in beslag wordt genomen, tezamen met alle ingestelde quota. Het deelcommando zfs groupspace doet hetzelfde voor groepen. Bekijk &man.zfs.1; voor meer informatie over ondersteunde opties of het weergegeven van specifieke opties. Gebruik het volgende om de quota voor storage/home/bob weer te geven, als u de juiste privileges heeft of root bent: &prompt.root; zfs get quota storage/home/bob Reserveringen in ZFS ZFS ondersteunt twee soorten van ruimtereserveringen. Deze sectie legt de beginselen van elk van de twee uit en bevat enkele instructies voor gebruik. De eigenschap reservation maakt het mogelijk om een gegarandeerde minimale hoeveelheid ruimte voor een gegevensverzameling en zijn afstammelingen te reserveren. Dit betekent dat als er een reservering van 10 GB is ingesteld voor storage/home/bob en de schijfruimte op raakt, er tenminste 10 GB aan ruimte is gereserveerd voor deze gegevensverzameling. De eigenschap reservation stelt de minimale hoeveelheid ruimte in die gegarandeerd is voor een gegevensverzameling exclusief afstammelingen zoals snapshots, of geeft deze aan. Als er bijvoorbeeld een snapshot is genomen van storage/home/bob moet er genoeg schijfruimte zijn buiten de refreservation hoeveelheid om de operatie te laten slagen omdat afstammelingen van de hoofdgegevensverzameling niet worden meegeteld in de refreservation hoeveelheid en dus niet stiekem de vastgestelde ruimte wijzigen. Reserveringen kunnen in allerlei situaties nuttig zijn, bijvoorbeeld voor het plannen en testen van de geschiktheid van het toewijzen van schijfruimte in een nieuw systeem, of om ervoor te zorgen dat er genoeg schijfruimte beschikbaar is op bestandsssystemen voor systeemherstelprocedures en bestanden. Het algemene formaat van de eigenschap reservation is reservation=grootte, dus gebruik het onderstaande commando om een reservering van 10 GB op storage/home/bob te plaatsen: &prompt.root; zfs set reservation=10G storage/home/bob Gebruik, om te controleren of er geen reservatie is geplaatst of om een reservatie te verwijderen: &prompt.root; zfs set reservation=none storage/home/bob Het zelfde principe kan worden toegepast op de eigenschap refreservation om een refreservation in te stellen, met het algemene formaat refreservation=grootte. Gebruik één van de volgende commando's om te kijken of er een reservatie of refreservation bestaat op storage/home/bob: &prompt.root; zfs get reservation storage/home/bob &prompt.root; zfs get refreservation storage/home/bob &linux; bestandssystemen Deze sectie beschrijft enkele van de &linux; bestandssystemen die door &os; worden ondersteund. Ext2FS De kernelimplementatie van het &man.ext2fs.5; bestandssysteem was geschreven door Godmar Back, het eerste stuurprogramma verscheen in &os; 2.2. In &os; 8 en eerder is de code gelicenseerd onder de GNU Public License, onder &os; 9 is de code echter herschreven en nu beschikbaar onder de BSD-licentie. Het stuurprogramma &man.ext2fs.5; stelt de &os;-kernel in staat om ext2 bestandssystemen te lezen en er naar te schrijven. Laad ten eerste de kernelmodule: &prompt.root; kldload ext2fs Koppel daarna een &man.ext2fs.5;-volume aan dat zich op /dev/ad1s1 bevindt: &prompt.root; mount -t ext2fs /dev/ad1s1 /mnt XFS Het X-bestandssysteem, XFS, is origineel geschreven door SGI voor het besturingssysteem IRIX, ze hebben het overgebracht naar &linux;. De broncode is vrijgegeven onder de GNU Public License. Kijk op deze pagina voor meer details. De &os;-port werd gestart door Russel Cattelan, &a.kan; en &a.rodrigc;. Om XFS als een kernelmodule te laden: &prompt.root; kldload xfs Het stuurprogramma &man.xfs.5; stelt de &os;-kernel in staat om XFS-bestandssystemen te benaderen. Momenteel is echter alleen ondersteuning voor lezen aanwezig. Schrijven naar een volume is niet mogelijk. Om een &man.xfs.5;-volume wat op /dev/ad1s1 aan te koppelen: &prompt.root; mount -t xfs /dev/ad1s1 /mnt Merk op dat de port sysutils/xfsprogs het gereedschap mkfs.xfs bevat wat het mogelijk maakt om XFS-bestandssystemen aan te maken, en verder gereedschappen om ze te analyseren en repareren. De vlag -p van mkfs.xfs kan worden gebruikt om een &man.xfs.5;-bestandssysteem aan te maken welke bevolkt wordt met bestanden en andere meta-gegevens. Dit kan worden gebruikt om snel een alleen-lezen bestandssysteem aan te maken welke op &os; getest kan worden. ReiserFS Het Reiser bestandssysteem, ReiserFS, was overgebracht naar &os; door &a.dumbbell; en is vrijgegeven onder de GNU Public License. Het stuurprogramma voor ReiserFS stelt de &os;-kernel momenteel in staat om ReiserFS bestandssystemen te benaderen en hun inhoud te lezen, maar het kan ze momenteel niet beschrijven. Laad ten eerste eerst de kernelmodule: &prompt.root; kldload reiserfs Om ten tweede een ReiserFS-volume dat zich op /dev/ad1s1 aan te koppelen: &prompt.root; mount -t reiserfs /dev/ad1s1 /mnt Index: translations/nl_NL.ISO8859-1/books/handbook/geom/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/geom/chapter.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/geom/chapter.xml (revision 40367) @@ -1,998 +1,1364 @@ Tom Rhodes Geschreven door Siebrand Mazeland Vertaald door GEOM: Modulair schijftransformatie raamwerk Overzicht GEOM GEOM schijf raamwerk GEOM Dit hoofdstuk beschrijft het gebruik van schijven in het GEOM raamwerk in &os;. Hieronder vallen de belangrijkste RAID besturingsprogramma's die het raamwerk gebruikt voor instellingen. In dit hoofdstuk wordt niet diepgaand beschreven hoe GEOM omgaat met I/O, het onderliggende subsysteem of code. Die informatie staat in het hulppagina voor &man.geom.4; en de verscheidene SEE ALSO referenties. Dit hoofdstuk is ook geen definitief stuk over het instellen van RAID. Alleen de door GEOM ondersteunde RAID-classificaties worden beschreven. Na het lezen van dit hoofdstuk weet de lezer: Welk type RAID-ondersteuning via GEOM beschikbaar is; Hoe de basisgereedschappen te gebruiken om de verschillende RAID-niveaus in te stellen, te onderhouden en te wijzigen; Hoe schijfapparaten via GEOM te spiegelen, aaneen te schakelen, te versleutelen en vanaf afstand schijven aan te sluiten; Hoe problemen op te lossen met schijven die via het GEOM raamwerk zijn aangesloten. Veronderstelde voorkennis: Begrijpen hoe &os; omgaat met schijfapparaten (); Weten hoe een nieuwe &os; kernel in te stellen en te installeren (). GEOM inleiding GEOM staat toegang en controle toe op klassen, Master Boot Records, BSD labels, enzovoort, door gebruik te maken van diensten of de speciale bestanden in /dev. GEOM ondersteunt verschillende software RAID instellingen en biedt transparante toegang tot het besturingssysteem en de hulpprogramma's. Tom Rhodes Geschreven door Murray Stokely RAID0 - aaneengeschakeld GEOM aaneengeschakeld Aaneenschakelen is een methode die gebruikt wordt om meerdere schijven te combineren tot een enkele volume. In veel gevallen wordt dit gedaan met hardware controllers. Het GEOM subsysteem biedt softwareondersteuning voor RAID0, ook wel bekend als aaneenschakelen (disk striping). In een RAID0-systeem worden gegevens opgedeeld in blokken die verdeeld worden over de schijven in een reeks. In plaats van te hoeven wachten tot een systeem 256k naar één schijf heeft geschreven, kan een RAID0-systeem tegelijkertijd 64k naar vier verschillende schijven schrijven, waardoor superieure I/O prestaties worden bereikt. Deze prestaties kunnen nog verbeterd worden door meerdere schijfcontrollers te gebruiken. Iedere schijf in een RAID0-aaneenschakeling moet van dezelfde grootte zijn, omdat I/O-verzoeken altijd zijn opgebouwd uit precies gelijk over de schijven verdeelde verzoeken tot lezen of schrijven. Illustratie aaneengeschakelde schijven Ongeformatteerde ATA-schijven aaneenschakelen Laad de module geom_stripe.ko: &prompt.root; kldload geom_stripe Zorg ervoor dat er een koppelpunt beschikbaar is. Als dit volume een rootpartitie wordt, gebruikt dan tijdelijk een ander koppelpunt zoals /mnt: &prompt.root; mkdir /mnt Stel de apparaatnamen voor de schijven vast die aaneen worden geschakeld en maak het nieuwe apparaat aan. Om twee ongebruikte, ongepartitioneerde ATA schijven aaneen te schakelen (/dev/ad2 en /dev/ad3): &prompt.root; gstripe label -v st0 /dev/ad2 /dev/ad3 Metadata value stored on /dev/ad2. Metadata value stored on /dev/ad3. Done. Schrijf een standaard label naar de nieuwe partitie, ook wel bekend als een partitietabel en installeer de standaard opstart code: &prompt.root; bsdlabel -wB /dev/stripe/st0 Dit proces hoort twee nieuwe apparaten gemaakt te hebben in de map /dev/stripe naast het apparaat st0, te weten st0a en st0c. Vanaf nu kan er een bestandssysteem op st0a worden gezet met behulp van de newfs applicatie: &prompt.root; newfs -U /dev/stripe/st0a Na het uitvoeren van het bovenstaande commando rollen er veel getallen over het scherm en na een aantal seconden is het proces afgerond. Het volume is gereed en klaar om aangekoppeld te worden. Om de nieuwe aaneengeschakelde schijf handmatig te koppelen moet het volgende gedaan worden: &prompt.root; mount /dev/stripe/st0a /mnt Om dit aaneengeschakelde bestandssysteem automatisch aan te koppelen bij het opstarten wordt de volume-informatie in /etc/fstab gezet. Voor dit doel wordt een permanent koppelpunt, genaamd stripe, aangemaakt: &prompt.root; mkdir /stripe &prompt.root; echo "/dev/stripe/st0a /mnt ufs rw 2 2" \ >> /etc/fstab Laadt de module geom_stripe.ko ook automatisch bij het initialiseren van een systeem door de volgende regel toe te voegen aan /boot/loader.conf: &prompt.root; echo 'geom_stripe_load="YES"' >> /boot/loader.conf RAID1 - spiegelen GEOM schijf spiegelen - Spiegelen (mirroring) is een technologie die - door veel bedrijven en thuisgebruikers wordt ingezet om gegevens - te back-uppen zonder onderbrekingen. Als er een spiegel bestaat, - betekent dat eenvoudigweg dat schijfB een kopie is van schijfA, - of misschien zijn schijvenC+D een kopie van schijvenA+B. Los van - de schijfinstellingen is het belangrijkste aspect dat de - gegevens van de ene schijf of partitie worden gerepliceerd naar - de andere. Later kunnen die gegevens eenvoudiger worden hersteld - of geback-upped zonder dat dit leidt tot onderbrekingen in - dienstverlening of toegang tot gegevens en schijven kunnen zelfs - fysiek worden opgeslagen in een kluis. + RAID1 - Begin met een systeem dat twee schijven heeft van gelijke - grootte. Deze oefeningen stellen dat het directe-toegang - (&man.da.4;) SCSI-schijven zijn. + RAID1, of spiegelen, is de + techniek om dezelfde gegevens naar meer dan één schijf te schrijven. + Spiegels worden normaliter gebruikt om tegen gegevensverlies te beschermen + indien een schijf kapot gaat. Elke schijf in een spiegel bevat een + identieke kopie van de gegevens. Wanneer een individuele schijf het + begeeft, blijft de spiegel functioneren, en levert het gegevens van de + schijven die nog wel functioneren. De computer blijft draaien en de + beheerder heeft tijd om de kapotte schijf te vervangen zonder onderbreking + voor de gebruikers. - - Primaire schijven spiegelen + Twee veelvoorkomende situaties worden in deze voorbeelden getoond. + Het eerste is het maken van een spiegel van twee nieuwe schijven en het + als vervanging voor een bestaande enkele schijf te gebruiken. Het tweede + voorbeeld maakt een spiegel op een enkele nieuwe schijf aan, kopieert de + gegevens van de oude schijf er naar toe, en plaatst daarna de oude schijf + in de spiegel. Hoewel deze procedure iets moeilijker is, is er maar één + nieuwe schijf nodig. - Aannemende dat &os; op het eerste - da0-schijfapparaat is - geïnstalleerd, dient er aan &man.gmirror.8; verteld te - worden om daar de primaire gegevens op te slaan. + Traditioneel zijn de twee schijven in een spiegel van hetzelfde model + en hebben ze dezelfde capaciteit, maar &man.gmirror.8; verplicht dit niet. + Spiegels die met ongelijke schijven zijn gemaakt zullen de capaciteit van + de kleinste schijf in de spiegel aannemen. Extra schijfruimte op grotere + schijven zal ongebruikt blijven. Schijven die later in de spiegel worden + geplaatst moeten tenminste evenveel capaciteit hebben als de kleinste + schijf die reeds in de spiegel zit. - Voordat de mirror gebouwd wordt, dient aanvullende - debuginformatie en openingstoegang tot het apparaat aangezet te - worden door de &man.sysctl.8;-optie - kern.geom.debugflags op de volgende waarde in - te stellen: + + De procedures voor het spiegelen die hier getoond worden zijn + niet-destructief, maar maak zoals bij elke grote schijfoperatie eerst + een volledige back-up. + - &prompt.root; sysctl kern.geom.debugflags=17 + + Kwesties met meta-gegevens - Maak nu de mirror aan. Begin het proces door informatie - over metagegevens op het primaire schijfapparaat op te slaan, - waardoor effectief het apparaat /dev/mirror/gm aangemaakt - wordt met het volgende commando: + Veel schijfsystemen slaan meta-gegevens op aan het einde van elke + schijf. Oude meta-gegevens dienen gewist te worden voordat de schijf + herbruikt wordt voor een spiegel. De meeste problemen worden + veroorzaakt door twee soorten van achtergebleven meta-gegevens: + GPT-partitietabellen en oude meta-gegevens van &man.gmirror.8; van een + vorige spiegel. - - Het creëeren van een mirror buiten de opstartschijf - kan resulteren in gegevensverlies als er enige gegevens zijn - opgeslagen op de laatste sector van de schijf. Dit gevaar - wordt verminderd als het creëeren van de mirror direct na - een verse installatie van &os; wordt gedaan. De volgende procedure - werkt ook niet samen met de instellingen van de standaardinstallatie - van &os; 9.X dat het nieuwe - partitieschema GPT gebruikt. GEOM zal de - metagegevens van GPT overschrijven, wat' - gegevensverlies en mogelijk een onstartbaar systeem tot gevolg - heeft. - + GPT-meta-gegevens kunnen gewist worden met &man.gpart.8;. Dit + voorbeeld wist zowel de primaire als de back-up GPT-partitietabellen van + schijf ada8: - &prompt.root; gmirror label -vb round-robin gm0 /dev/da0 + &prompt.root; gpart destroy -F ada8 + &man.gmirror.8; kan in één stap een schijf uit een actieve spiegel + halen en de meta-gegevens wissen. Hier wordt de voorbeeldschijf + ada8 uit de actieve spiegel + gm4 gehaald: - Het systeem hoort te antwoorden met: + &prompt.root; gmirror remove gm4 ada8 - Metadata value stored on /dev/da0. -Done. + Gebruik, als de spiegel niet draait maar er nog oude meta-gegevens + van de spiegel op de schijf staan, gmirror clear om + deze te verwijderen: - Initialiseer GEOM, dit zal de kernelmodule - /boot/kernel/geom_mirror.ko laden: + &prompt.root; gmirror clear ada8 + &man.gmirror.8; slaat één blok aan meta-gegevens aan het einde van + de schijf op. Omdat GPT-partitieschema's ook meta-gegevens aan het + einde van de schijf opslaan, wordt het spiegelen van volledige + GPT-schijven met &man.gmirror.8; niet aangeraden. Hier wordt + MBR-partitionering gebruikt omdat het alleen een partitietabel aan het + begin van de schijf opslaat en niet conflicteert met + &man.gmirror.8;. + + + + Een spiegel met twee nieuwe schijven maken + + In dit voorbeeld is &os; reeds op een enkele schijf + ada0 geïnstalleerd. Twee nieuwe schijven, + ada1 en ada2 zijn met + het systeem verbonden. Er zal een nieuwe spiegel op deze twee schijven + aangemaakt worden die de oude enkele schijf zal vervangen. + + &man.gmirror.8; heeft een kernelmodule + geom_mirror.ko nodig, ingebouwd in de kernel of + geladen tijdens het opstarten of draaien. Laadt nu handmatig de + kernelmodule: + &prompt.root; gmirror load - - Wanneer dit commando succesvol verloopt, maakt het het - apparaatknooppunt gm0 aan onder de - map /dev/mirror. - + Maak de spiegel aan met de twee nieuwe schijven: - Maak het mogelijk om de kernelmodule - geom_mirror.ko tijdens systeeminitialisatie - te laden: + &prompt.root; gmirror label -v gm0 /dev/ada1 /dev/ada2 - &prompt.root; echo 'geom_mirror_load="YES"' >> /boot/loader.conf + gm0 is een door de gebruiker gekozen + apparaatnaam die aan de nieuwe spiegel wordt toegekend. Nadat de + spiegel is gestart, zal deze apparaatnaam verschijnen in de map + /dev/mirror/. - Bewerk het bestand /etc/fstab, waarbij - verwijzingen naar het oude da0 worden - vervangen door de nieuwe apparaatknooppunten van het - mirrorapparaat gm0. + Nu kunnen er met &man.gpart.8; MBR- en bsdlabel-partitietabellen op + de spiegel worden aangemaakt. Hier wordt er een traditioneel schema + van een gesplitst bestandssysteem getoond, met partities voor + /, swap, /var, + /tmp en /usr. Dit werkt ook + voor een enkel bestandssysteem met enkel / en + een wisselpartitie. - - Indien &man.vi.1; de geprefereerde tekstverwerker is, is - het volgende een gemakkelijke manier om deze taak te - volbrengen: + Partities op de spiegel hoeven niet dezelfde grootte te hebben als + die op de bestaande schijf, maar moeten groot genoeg zijn om alle + gegevens die reeds op ada0 staan te kunnen + bevatten. - &prompt.root; vi /etc/fstab + &prompt.root; gpart create -s MBR mirror/gm0 +&prompt.root; gpart add -t freebsd -a 4k mirror/gm0 +&prompt.root; gpart show mirror/gm0 +=> 63 156301423 mirror/gm0 MBR (74G) + 63 63 - free - (31k) + 126 156301299 1 freebsd (74G) + 156301425 61 - free - (30k) - Maak een reservekopie van de huidige gegevens van - fstab in &man.vi.1; door :w - /etc/fstab.bak in te typen. Vervang daarna alle - oude verwijzingen naar da0 door - gm0 door - :%s/da/mirror\/gm/g in te typen. - + &prompt.root; gpart create -s BSD mirror/gm0s1 +&prompt.root; gpart add -t freebsd-ufs -a 4k -s 2g mirror/gm0s1 +&prompt.root; gpart add -t freebsd-swap -a 4k -s 4g mirror/gm0s1 +&prompt.root; gpart add -t freebsd-ufs -a 4k -s 2g mirror/gm0s1 +&prompt.root; gpart add -t freebsd-ufs -a 4k -s 1g mirror/gm0s1 +&prompt.root; gpart add -t freebsd-ufs -a 4k mirror/gm0s1 +&prompt.root; gpart show mirror/gm0s1 +=> 0 156301299 mirror/gm0s1 BSD (74G) + 0 2 - free - (1.0k) + 2 4194304 1 freebsd-ufs (2.0G) + 4194306 8388608 2 freebsd-swap (4.0G) + 12582914 4194304 4 freebsd-ufs (2.0G) + 16777218 2097152 5 freebsd-ufs (1.0G) + 18874370 137426928 6 freebsd-ufs (65G) + 156301298 1 - free - (512B) - Het resulterende fstab zou er ongeveer - hetzelfde als het volgende uit moeten zien. Het maakt niet uit - of de schijfstations SCSI of - RAID zijn, het - RAID-apparaat zal ongeacht hiervan - gm zijn. + Maak de spiegel opstartbaar door opstartcode in het MBR en bsdlabel + te installeren en de actieve slice in te stellen: - # Device Mountpoint FStype Options Dump Pass# -/dev/mirror/gm0s1b none swap sw 0 0 -/dev/mirror/gm0s1a / ufs rw 1 1 -/dev/mirror/gm0s1d /usr ufs rw 0 0 -/dev/mirror/gm0s1f /home ufs rw 2 2 -#/dev/mirror/gm0s2d /store ufs rw 2 2 -/dev/mirror/gm0s1e /var ufs rw 2 2 -/dev/acd0 /cdrom cd9660 ro,noauto 0 0 + &prompt.root; gpart bootcode -b /boot/mbr mirror/gm0 +&prompt.root; gpart set -a active -i 1 mirror/gm0 +&prompt.root; gpart bootcode -b /boot/boot mirror/gm0s1 - Start het systeem opnieuw op: + Formatteer de bestandssystemen op de nieuwe spiegel en zet daarbij + soft-updates aan. - &prompt.root; shutdown -r now + &prompt.root; newfs -U /dev/mirror/gm0s1a +&prompt.root; newfs -U /dev/mirror/gm0s1d +&prompt.root; newfs -U /dev/mirror/gm0s1e +&prompt.root; newfs -U /dev/mirror/gm0s1f - Tijdens de systeeminitialisatie dient het apparaat - gm0 in plaats van - da0 gebruikt te worden. Als het - systeem volledig is geïnitialiseerd, kan dit gecontroleerd - worden door de uitvoer van het commando mount - te inspecteren: + Bestandssystemen van de originele schijf + (ada0) kunnen nu met &man.dump.8; en + &man.restore.8; naar de spiegel gekopieerd worden: - &prompt.root; mount -Filesystem 1K-blocks Used Avail Capacity Mounted on -/dev/mirror/gm0s1a 1012974 224604 707334 24% / -devfs 1 1 0 100% /dev -/dev/mirror/gm0s1f 45970182 28596 42263972 0% /home -/dev/mirror/gm0s1d 6090094 1348356 4254532 24% /usr -/dev/mirror/gm0s1e 3045006 2241420 559986 80% /var -devfs 1 1 0 100% /var/named/dev + &prompt.root; mount /dev/mirror/gm0s1a /mnt +&prompt.root; dump -C16 -b64 -0aL -f - / | (cd /mnt && restore -rf -) +&prompt.root; mount /dev/mirror/gm0s1d /mnt/var +&prompt.root; mount /dev/mirror/gm0s1e /mnt/tmp +&prompt.root; mount /dev/mirror/gm0s1f /mnt/usr +&prompt.root; dump -C16 -b64 -0aL -f - /var | (cd /mnt/var && restore -rf -) +&prompt.root; dump -C16 -b64 -0aL -f - /tmp | (cd /mnt/tmp && restore -rf -) +&prompt.root; dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr && restore -rf -) - De uitvoer ziet er als verwacht uit. Plaats als laatste - stap, om synchronisatie te beginnen, de schijf - da1 in de mirror met het volgende - commando: + /mnt/etc/fstab moet bewerkt worden om naar de + nieuwe bestandssystemen op de spiegel te wijzen: - &prompt.root; gmirror insert gm0 /dev/da1 + # Device Mountpoint FStype Options Dump Pass# +/dev/mirror/gm0s1a / ufs rw 1 1 +/dev/mirror/gm0s1b none swap sw 0 0 +/dev/mirror/gm0s1d /var ufs rw 2 2 +/dev/mirror/gm0s1e /tmp ufs rw 2 2 +/dev/mirror/gm0s1f /usr ufs rw 2 2 - De status kan gecontroleerd worden tijdens het bouwen van de - mirror met het volgende commando: + Als de kernelmodule &man.gmirror.8; niet in de kernel is ingebouwd, + wordt /mnt/boot/loader.conf bewerkt om de module + tijdens het opstarten te laden: - &prompt.root; gmirror status + geom_mirror_load="YES" - Wanneer de mirror gebouwd is en alle huidige gegevens zijn - gesynchroniseerd, dient de uitvoer van het bovenstaande commando - er als volgt uit te zien: + Herstart het systeem om de nieuwe spiegel te testen en te verifiëren + dat alle gegevens zijn gekopieerd. Het BIOS zal de spiegel als twee + individuele schijven zien in plaats van als een spiegel. Omdat de + schijven identiek zijn, maakt het niet uit vanaf welke schijf wordt + opgestart. - Name Status Components -mirror/gm0 COMPLETE da0 - da1 + Bekijk de sectie Problemen + oplossen als er problemen zijn tijdens het opstarten. Door de + originele ada0 uit te schakelen en los te + koppelen kan het als offline back-up bewaard worden. - Als er problemen zijn, of als de mirror nog bezig is om het - bouwproces te voltooien, zal het voorbeeld - DEGRADED in plaats van - COMPLETE laten zien. + Tijdens het gebruik zal de spiegel zich net zoals de originele + enkele schijf gedragen. + Een spiegel met een bestaande schijf aanmaken + + In dit voorbeeld is &os; reeds geïnstalleerd op een enkele schijf, + ada0. Een nieuwe schijf, + ada1, is met het systeem verbonden. Er zal + een spiegel van één schijf worden aangemaakt op de nieuwe schijf, het + bestaande systeem zal ernaar worden gekopieerd, en daarna zal de oude + schijf in de spiegel worden geplaatst. Deze enigszins complexe + procedure is nodig omdat &man.gmirror.8; een blok van 512 bytes aan + meta-gegevens aan het einde van elke schijf moet plaatsen en de + bestaande ada0 meestal alle ruimte reeds heeft + toegewezen. + + Laadt de kernelmodule &man.gmirror.8;: + + &prompt.root; gmirror load + + Controleer de mediagrootte van de originele schijf met + &man.diskinfo.8;: + + &prompt.root; diskinfo -v ada0 | head -n3 +/dev/ada0 + 512 # sectorsize + 1000204821504 # mediasize in bytes (931G) + + Maak een spiegel aan op de nieuwe schijf. Om er zeker van te zijn + dat de capaciteit van de spiegel niet groter is dan die van de originele + schijf, wordt &man.gnop.8; gebruikt om een nepschijf van precies + dezelfde grootte aan te maken. Deze schijf slaat geen gegevens op, maar + wordt alleen gebruikt om de grootte van de spiegel te begrenzen. + Wanneer &man.gmirror.8; de spiegel aanmaakt, zal het de capaciteit + beperken tot de grootte van gzero.nop zelfs + als de nieuwe schijf (ada1) meer ruimte heeft. + Merk op dat de 1000204821504 op de tweede + regel gelijk moet zijn aan de mediagrootte van + ada0 zoals hierboven door &man.diskinfo.8; is + getoond. + + &prompt.root; geom zero load +&prompt.root; gnop create -s 1000204821504 gzero +&prompt.root; gmirror label -v gm0 gzero.nop ada1 +&prompt.root; gmirror forget gm0 + + gzero.nop slaat geen gegevens op, dus ziet + de spiegel het niet als verbonden. De spiegel wordt verteld om + componenten die niet verbonden zijn te vergeten, waarbij + referenties naar gzero.nop worden verwijderd. + Het resultaat is een spiegelapparaat dat slechts één enkele schijf, + ada1, bevat. + + Bekijk de partitietabel van ada0 nadat + gm0 is aangemaakt. + + Deze uitvoer komt van een schijf van 1 TB. Als er wat + niet-toegewezen ruimte aanwezig is aan het einde van de schijf, kan de + inhoud direct van ada0 naar de nieuwe spiegel + worden gekopieerd. + + Als de uitvoer echter toont dat alle ruimte op de schijf is + toegewezen zoals in de volgende lijst, is er geen ruimte over voor de + 512 bytes aan meta-gegevens van &man.gmirror.8; aan het einde van de + schijf. + + &prompt.root; gpart show ada0 +=> 63 1953525105 ada0 MBR (931G) + 63 1953525105 1 freebsd [active] (931G) + + In dit geval moet de partitietabel worden bewerkt om de capaciteit + op mirror/gm0 met één sector te verminderen. + De procedure hiervoor wordt later uitgelegd. + + In beide gevallen dienen de partitietabellen op de primaire schijf + eerst gekopieerd te worden. Dit kan gedaan worden met de subcommando's + backup en restore van + &man.gpart.8;. + + &prompt.root; gpart backup ada0 > table.ada0 +&prompt.root; gpart backup ada0s1 > table.ada0s1 + + Deze subcommando's maken twee bestanden aan, + table.ada0 en table.ada0s1. + Dit voorbeeld komt van een schijf van 1 TB af: + + &prompt.root; cat table.ada0 +MBR 4 +1 freebsd 63 1953525105 [active] + + &prompt.root; cat table.ada0s1 +BSD 8 +1 freebsd-ufs 0 4194304 +2 freebsd-swap 4194304 33554432 +4 freebsd-ufs 37748736 50331648 +5 freebsd-ufs 88080384 41943040 +6 freebsd-ufs 130023424 838860800 +7 freebsd-ufs 968884224 984640881 + + Als de gehele schijf was gebruikt in de uitvoer van &man.gpart.8; + show, dan moet de capaciteit in deze partitietabellen + met één sector verminderd worden. Bewerk de twee bestanden zodat de + grootte van zowel de slice als de laatste partitie met één verminderd + wordt. Dit zijn de laatste getallen in elke lijst. + + &prompt.root; cat table.ada0 +MBR 4 +1 freebsd 63 1953525104 [active] + + &prompt.root; cat table.ada0s1 +BSD 8 +1 freebsd-ufs 0 4194304 +2 freebsd-swap 4194304 33554432 +4 freebsd-ufs 37748736 50331648 +5 freebsd-ufs 88080384 41943040 +6 freebsd-ufs 130023424 838860800 +7 freebsd-ufs 968884224 984640880 + + Als er tenminste één sector aan het einde van de schijf niet was + toegewezen, kunnen deze twee bestanden ongewijzigd gebruikt worden. + Herstel nu de partitietabel naar + mirror/gm0. + + &prompt.root; gpart restore mirror/gm0 < table.ada0 +&prompt.root; gpart restore mirror/gm0s1 < table.ada0s1 + + Controleer de partitietabel met &man.gpart.8; + show. Dit voorbeeld heeft + gm0s1a voor /, + gm0s1d voor /var, + gm0s1e voor /usr, + gm0s1f voor /data1 en + gm0s1g voor /data2. + + &prompt.root; gpart show mirror/gm0 +=> 63 1953525104 mirror/gm0 MBR (931G) + 63 1953525042 1 freebsd [active] (931G) + 1953525105 62 - free - (31k) + +&prompt.root; gpart show mirror/gm0s1 +=> 0 1953525042 mirror/gm0s1 BSD (931G) + 0 2097152 1 freebsd-ufs (1.0G) + 2097152 16777216 2 freebsd-swap (8.0G) + 18874368 41943040 4 freebsd-ufs (20G) + 60817408 20971520 5 freebsd-ufs (10G) + 81788928 629145600 6 freebsd-ufs (300G) + 710934528 1242590514 7 freebsd-ufs (592G) + 1953525042 63 - free - (31k) + + Zowel de slice als de laatste partitie dienen wat vrije ruimte aan + het einde van elke schijf te hebben. + + Maak bestandssystemen aan op deze nieuwe partities. Het aantal + partities zal variëren, overeenkomend met de partities op de originele + schijf, ada0. + + &prompt.root; newfs -U /dev/mirror/gm0s1a +&prompt.root; newfs -U /dev/mirror/gm0s1d +&prompt.root; newfs -U /dev/mirror/gm0s1e +&prompt.root; newfs -U /dev/mirror/gm0s1f +&prompt.root; newfs -U /dev/mirror/gm0s1g + + Maak de spiegel opstartbaar door opstartcode in het MBR en bsdlabel + te installeren en de actieve slice in te stellen: + + &prompt.root; gpart bootcode -b /boot/mbr mirror/gm0 +&prompt.root; gpart set -a active -i 1 mirror/gm0 +&prompt.root; gpart bootcode -b /boot/boot mirror/gm0s1 + + Pas /etc/fstab aan zodat het de nieuwe + partities op de spiegel gebruikt. Maak eerst een kopie van dit bestand + als /etc/fstab.orig. + + &prompt.root; cp /etc/fstab /etc/fstab.orig + + Wijzig /etc/fstab door + /dev/ada0 door + mirror/gm0 te vervangen. + + # Device Mountpoint FStype Options Dump Pass# +/dev/mirror/gm0s1a / ufs rw 1 1 +/dev/mirror/gm0s1b none swap sw 0 0 +/dev/mirror/gm0s1d /var ufs rw 2 2 +/dev/mirror/gm0s1e /usr ufs rw 2 2 +/dev/mirror/gm0s1f /data1 ufs rw 2 2 +/dev/mirror/gm0s1g /data2 ufs rw 2 2 + + Als de kernelmodule &man.gmirror.8; niet in de kernel is gebouwd, + wijzig dan /boot/loader.conf om het te + laden: + + geom_mirror_load="YES" + + Bestandssystemen van de originele schijf kunnen nu met &man.dump.8; + en &man.restore.8; naar de spiegel gekopieerd worden. Merk op dat het + maken van een snapshot voor elk bestandssysteem dat met dump + -L gedumpt is even kan duren. + + &prompt.root; mount /dev/mirror/gm0s1a /mnt +&prompt.root; dump -C16 -b64 -0aL -f - / | (cd /mnt && restore -rf -) +&prompt.root; mount /dev/mirror/gm0s1d /mnt/var +&prompt.root; mount /dev/mirror/gm0s1e /mnt/usr +&prompt.root; mount /dev/mirror/gm0s1f /mnt/data1 +&prompt.root; mount /dev/mirror/gm0s1g /mnt/data2 +&prompt.root; dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr && restore -rf -) +&prompt.root; dump -C16 -b64 -0aL -f - /var | (cd /mnt/var && restore -rf -) +&prompt.root; dump -C16 -b64 -0aL -f - /data1 | (cd /mnt/data1 && restore -rf -) +&prompt.root; dump -C16 -b64 -0aL -f - /data2 | (cd /mnt/data2 && restore -rf -) + + Start het systeem opnieuw op vanaf ada1. + Als alles werkt, zal het systeem opstarten vanaf + mirror/gm0, wat nu dezelfde gegevens bevat die + ada0 eerder bevatte. Zie de sectie Problemen oplossen als er + problemen zijn met het opstarten. + + Op dit moment bestaat de spiegel nog steeds alleen uit de enkele + schijf ada1. + + Nadat er succesvol van mirror/gm0 is + opgestart, is de laatste stap het plaatsen van + ada0 in de spiegel. + + + Als ada0 in de spiegel wordt geplaatst, + zal de vorige inhoud worden overschreven door gegevens in de spiegel. + Ben er zeker van dat mirror/gm0 dezelfde + gegevens bevat als ada0 voordat + ada0 aan de spiegel wordt toegevoegd. Als + er iets mis is met de gegevens die door &man.dump.8; en + &man.restore.8; gekopieerd zijn, draai dan + /etc/fstab terug om de bestandssystemen op + ada0 aan te koppelen, start opnieuw op, en + probeer de hele procedure nogmaals. + + + &prompt.root; gmirror insert gm0 ada0 +GEOM_MIRROR: Device gm0: rebuilding provider ada0 + + De synchronisatie tussen de twee schijven zal onmiddellijk beginnen. + &man.gmirror.8; status toont de voortgang. + + &prompt.root; gmirror status + Name Status Components +mirror/gm0 DEGRADED ada1 (ACTIVE) + ada0 (SYNCHRONIZING, 64%) + + Na een tijd zal de synchronisatie voltooid zijn. + + GEOM_MIRROR: Device gm0: rebuilding provider ada0 finished. +&prompt.root; gmirror status + Name Status Components +mirror/gm0 COMPLETE ada1 (ACTIVE) + ada0 (ACTIVE) + + mirror/gm0 bestaat nu uit de twee schijven + ada0 en ada1, en de + inhoud wordt automatisch met elkaar gesynchroniseerd. In het gebruik + zal mirror/gm0 zich net zo gedragen als de + originele enkele schijf. + + + Problemen oplossen - Systeem weigert op te starten + Problemen met opstarten - Als een systeem opstart in een prompt dat op het volgende - lijkt: + + BIOS-instellingen - ffs_mountroot: can't find rootvp -Root mount failed: 6 -mountroot> + Mogelijk is het nodig om de BIOS-instellingen te wijzigen om + van één van de nieuwe gespiegelde schijven op te starten. Beide + spiegelschijven kunnen gebruikt worden voor het opstarten. Als + componenten van een spiegel bevatten ze identieke gegevens. + - Herstart te machine met de aan/uit-schakelaar of met de - resetknop. Selecteer in het bootmenu optie zes (6). - Hierdoor komt een systeem in een &man.loader.8; prompt. Laad - de kernelmodules handmatig: + + Opstartproblemen - OK? load geom_mirror -OK? boot + Als het opstarten met dit bericht stopt, is er iets mis met het + spiegelapparaat: - Als dit werkt werd de module om welke reden dan ook niet - juist geladen. Controleer of de relevante regel in - /boot/loader.conf correct is. Als het - probleem aanhoudt, zet dan de onderstaande regel in het - bestand met kernelinstellingen en herbouw en installeer de - kernel. + Mounting from ufs:/dev/mirror/gm0s1a failed with error 19. - options GEOM_MIRROR +Loader variables: + vfs.root.mountfrom=ufs:/dev/mirror/gm0s1a + vfs.root.mountfrom.options=rw - Hiermee moet het probleem opgelost zijn. +Manual root filesystem specification: + <fstype>:<device> [options] + Mount <device> using filesystem <fstype> + and with the specified (optional) option list. + + eg. ufs:/dev/da0s1a + zfs:tank + cd9660:/dev/acd0 ro + (which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /) + + ? List valid disk boot devices + . Yield 1 second (for background tasks) + <empty line> Abort manual input + +mountroot> + + Het vergeten om de module geom_mirror in + /boot/loader.conf te laden kan dit probleem + veroorzaken. Start op vanaf een &os;-9 of nieuwere CD of USB-stick + en kies Shell op de eerste prompt om dit op te + lossen. Laadt daarna de spiegelmodule en en koppel het + spiegelapparaat aan: + + &prompt.root; gmirror load +&prompt.root; mount /dev/mirror/gm0s1a /mnt + + Voeg een regel om de spiegelmodule te laden toe aan + /mnt/boot/loader.conf: + + geom_mirror_load="YES" + + Sla het bestand op en start opnieuw op. + + Andere problemen die error 19 veroorzaken + zijn lastiger om op te lossen. Typ + ufs:/dev/ada0s1a in op de prompt. Hoewel het + systeem van ada0 zou moeten opstarten, + verschijnt er een andere prompt om een shell uit te kiezen omdat + /etc/fstab onjuist is. Druk op de prompt op + de Enter-toets. Draai de wijzigingen tot nu toe terug door + /etc/fstab terug te draaien, waardoor de + bestandssystemen vanaf de originele schijf ( + ada0) in plaats vanaf de spiegel worden + aangekoppeld. Start het systeem opnieuw op en probeer de procedure + nogmaals. + + Enter full pathname of shell or RETURN for /bin/sh: +&prompt.root; cp /etc/fstab.orig /etc/fstab +&prompt.root; reboot + Herstellen van falende schijven - Het mooie aan het spiegelen van schijven is dat als een - schijf faalt, deze vervangen kan worden, aangenomen zonder - gegevensverlies. + Het mooie aan het spiegelen van schijven is dat een individuele + schijf kan falen zonder dat de spiegel gegevens verliest. - Neem met betrekking tot de vorige - RAID1-configuratie aan dat - da1 het geeft begeven en vervangen moet - worden. Bepaal, om het te vervangen, welke schijf het heeft - begeven en schakel het systeem uit. Op dit moment kan de schijf - worden verwisseld door een nieuwe en kan het systeem weer worden - opgestart. Nadat het systeem is herstart, kunnen de volgende - commando's worden gebruikt om de schijf te vervangen: + ada0 is één van de twee schijven die de + spiegel in het vorige voorbeeld vormen. Als + ada0 faalt zal de spiegel blijven werken en + gegevens leveren van de overgebleven werkende schijf, + ada1. + Om de kapotte schijf te vervangen wordt de computer uitgezet en de + kapotte schijf fysiek vervangen door een nieuwe schijf van gelijke of + grotere capaciteit. Fabrikanten passen enigszins willekeurige waarden + toe om schijven in gigabytes aan te duiden, de enige manier om er echt + zeker van te zijn is om de totale hoeveelheid aan sectors aangegeven + door diskinfo -v te vergelijken. Een schijf met een + grotere capaciteit dan in de spiegel zal werken, alhoewel de extra + ruimte op de nieuwe schijf niet gebruikt zal worden. + + Nadat de computer opnieuw is aangezet, zal de spiegel in een + degraded toestand met slechts één schijf draaien. De + spiegel wordt verteld om schijven die momenteel niet verbonden zijn te + vergeten: + &prompt.root; gmirror forget gm0 - &prompt.root; gmirror insert gm0 /dev/da1 + Alle oude meta-gegevens zouden van de vervangende schijf gewist + moeten zijn. Daarna wordt de schijf, in dit voorbeeld + ada4, in de spiegel geplaatst: - Gebruik het commando gmirror status om de - voortgang van het herbouwen te bekijken. Zo eenvoudig is het. + &prompt.root; gmirror insert gm0 /dev/ada4 + + De hersynchronisatie begint wanneer de nieuwe schijf in de spiegel + wordt geplaatst. Het kopiëren van gegevens van de spiegel naar een + nieuwe schijf kan een tijd duren. De prestaties van de spiegel zullen + tijdens het kopiëren sterk verminderd zijn, dus is het het beste om + nieuwe schijven in te voegen wanneer de vraag op de computer laag + is. + + De voortgang kan met gmirror status gevolgd + worden, wat de schijven die gesynchroniseerd en het percentage van de + voltooiing laat zien. Tijdens de hersynchronisatie zal de status + DEGRADED zijn en veranderen in + COMPLETE wanneer het proces is + voltooid. Mark Gladman Geschreven door Daniel Gerzo Tom Rhodes Gebaseerd op documentatie van Murray Stokely <acronym>RAID</acronym>3 - Striping op byte-niveau met toegewijde pariteit GEOM RAID3 RAID3 is een methode om verschillende schijven te combineren in een enkel volume met een toegewijde schijf voor de pariteit. In een RAID3-systeem worden de gegevens opgesplitst in een aantal bytes die over alle schijven in de rij worden geschreven, behalve naar één schijf die als een toegewijde schijf voor de pariteit dient. Dit betekent dat het lezen van 1024 kB van een RAID3-implementatie alle schijven in de rij zal benaderen. De prestatie kan worden verhoogd door meerdere schijfcontrollers te gebruiken. De RAID3-rij biedt een fouttolerantie van 1 schijf, terwijl het een capaciteit van 1 - 1/n maal de totale capaciteit biedt van alle schijven in de rij, waarbij n het aantal harde schijven in de rij is. Zulke configuraties zijn meestal geschikt voor het opslaan van gegevens van grotere groottes, bijvoorbeeld multimedia-bestanden. Er zijn minstens 3 fysieke harde schijven nodig om een RAID3-rij te bouwen. Elke schijf moet van dezelfde grootte zijn, aangezien I/O-verzoeken worden verweven om parallel naar meerdere schijven te lezen of schrijven. Bovendien moet vanwege de aard van RAID3 het aantal schijven gelijk zijn aan 3, 5, 9, 17, enzovoorts (dus 2^n + 1). Een toegewijde <acronym>RAID</acronym>3-rij aanmaken. In &os; is ondersteuning voor RAID3 geïmplementeerd in de GEOM-klasse &man.graid3.8;. Voor het aanmaken van een toegewijde RAID3-rij op &os; zijn deze stappen nodig. Hoewel het theoretisch mogelijk is om op &os; van een RAID3-rij op te starten, is deze configuratie ongebruikelijk en niet aangeraden. Laad ten eerste de kernelmodule geom_raid3.ko door de volgende opdracht uit te voeren: &prompt.root; graid3 load Het is ook mogelijk om handmatig de module geom_raid3.ko te laden: &prompt.root; kldload geom_raid3.ko Zorg ervoor dat er een geschikt aankoppelpunt bestaat of maak het aan: &prompt.root; mkdir /multimedia/ Bepaal de apparaatnamen voor de schijven die aan de rij worden toegevoegd en maak het nieuwe RAID3-apparaat aan. Het laatst vermelde apparaat zal dienst doen als de toegewijde schijf voor de pariteit. Dit voorbeeld gebruikt drie ongepartitioneerde ATA-schijven: ada1 en ada2 voor gegevens en ada3 voor pariteit. &prompt.root; graid3 label -v gr0 /dev/ada1 /dev/ada2 /dev/ada3 Metadata value stored on /dev/ada1. Metadata value stored on /dev/ada2. Metadata value stored on /dev/ada3. Done. Partitioneer het nieuw aangemaakte apparaat gr0 en zet er een UFS-bestandssysteem op: &prompt.root; gpart create -s GPT /dev/raid3/gr0 &prompt.root; gpart add -t freebsd-ufs /dev/raid3/gr0 &prompt.root; newfs -j /dev/raid3/gr0p1 Vele getallen zullen over het scherm lopen, en na wat tijd zal het proces voltooid zijn. Het volume is aangemaakt en is klaar om aangekoppeld te worden. De laatste stap is het aankoppelen van het bestandssysteem: &prompt.root; mount /dev/raid3/gr0p1 /multimedia/ De RAID3-rij is nu klaar voor gebruik. Aanvullende configuratie is nodig om de bovenstaande opstelling te behouden tussen het opnieuw starten van het systeem. De module geom_raid3.ko moet geladen zijn voordat de rij kan worden aangekoppeld. Voeg de volgende regel toe aan /boot/loader.conf om de kernelmodule automatisch tijdens de initialisatie van het systeem te laden: geom_raid3_load="YES" De volgende volume-informatie moet aan het bestand /etc/fstab worden toegevoegd om het bestandssysteem van de rij automatisch aan de koppelen tijdens het opstarten van het systeem: /dev/raid3/gr0p1 /multimedia ufs rw 2 2 GEOM Gate netwerk apparaten GEOM ondersteund het op afstand gebruiken van apparaten, zoals schijven, CD-ROMs, bestanden, etcetera door het gebruik van de gate-applicaties. Dit is vergelijkbaar met NFS. Om te beginnen moet er een exports bestand gemaakt worden. Dit bestand specificeert wie de geëxporteerde bron mag benaderen en welke rechten er op dat moment verleend worden. Bijvoorbeeld om de vierde slice te exporteren van de eerste SCSI schijf, moet het volgende in /etc/gg.exports gezet worden: 192.168.1.0/24 RW /dev/da0s4d Dit staat alle machines in het privé netwerk toe om het bestandssysteem op da0s4d te benaderen. Om dit apparaat te kunnen exporteren is het van belang dat de schijf nog niet gekoppeld is en moet de &man.ggated.8; dienst gestart worden. &prompt.root; ggated Om vervolgens het apparaat aan een client machine te koppelen moet het volgende gedaan worden: &prompt.root; ggatec create -o rw 192.168.1.1 /dev/da0s4d ggate0 &prompt.root; mount /dev/ggate0 /mnt Vanaf dit moment kan de schijf benaderd worden via het koppelpunt /mnt. Let op, dit mislukt als de schijf reeds gekoppeld is op de server machine of als deze reeds gekoppeld is aan een andere machine op het netwerk. Zodra het apparaat niet langer nodig is, kan het veilig ontkoppeld worden met behulp van &man.umount.8; net zoals met elke andere schijf. Het labelen van schijven GEOM Disk Labels Tijdens het initialiseren van het systeem zal de &os; kernel apparaatknooppunten creëren nadat het een apparaat gevonden heeft. Deze manier om te zoeken naar apparaten levert wat problemen op bijvoorbeeld wanneer er een nieuwe schijf wordt toegevoegd via USB. Het is hoogst waarschijnlijk dat een flash apparaat een apparaatknooppunt krijgt van da0, waarna de originele da0 op schuift naar da1. Dit levert problemen op als bestandssystemen worden gekoppeld als ze gedefinieerd zijn in /etc/fstab, dit kan zelfs ertoe leiden dat het systeem niet opstart. Een mogelijke oplossing hiervoor is om de SCSI schijven een vaste plek te geven op een bepaalde volgorde, zodat zodra er een nieuwe schijf geplaatst wordt, deze een ongebruikt apparaatknooppunt toegewezen krijgt. Maar wat als er USB apparaten zijn die de primaire SCSI schijf vervangt? Dit gebeurd omdat USB apparaten meestal eerder gevonden worden dan een SCSI kaart. Een oplossing hiervoor is om de apparaten pas toe te voegen als het systeem reeds gestart is, een andere methode kan zijn om alleen een enkele ATA schijf te koppelen en nooit SCSI schijven door middel van /etc/fstab. Maar er is een betere oplossing beschikbaar. Door het gebruik van glabel kunnen beheerders en gebruikers een label toevoegen aan een schijf, en deze labels gebruiken in /etc/fstab. Omdat glabel het label bewaard in de laatste sector van de schijf, kan het label bewaard blijven ook na een reboot en kan het bestandssysteem altijd gekoppeld worden ongeacht welk apparaatknooppunt toegekend is aan het apparaat. Uiteraard hoeft een label niet permanent te zijn, het glabel programma kan zowel tijdelijke als permanente labels aanmaken. Alleen een permanent label blijft beschikbaar ook na een reboot. Zie de &man.glabel.8; handleiding voor meer informatie over de verschillen tussen de labeltypes. Label types en voorbeelden Er zijn twee type labels: een generiek label en een bestandssysteemlabel. Labels kunnen permanent of tijdelijk zijn. Permanente labels kunnen met de commando's &man.tunefs.8; of &man.newfs.8; aangemaakt worden. Ze zullen vervolgens worden aangemaakt in een submap van /dev, welke genoemd wordt naar het bestandssysteemtype. Bijvoorbeeld UFS2 labels worden geplaatst in de map /dev/ufs. Permanente labels kunnen ook worden aangemaakt met het commando glabel label. Deze zijn niet specifiek voor het bestandssysteem, en zullen in de map /dev/label aangemaakt worden. Een tijdelijk label verdwijnt na een herstart van het systeem. Deze labels worden gecreëerd in /dev/label en zijn perfect voor experimenten. Een tijdelijk kan met het commando glabel create worden aangemaakt. Lees voor meer informatie de handleidingpagina van &man.glabel.8;. Om een permanent label te schrijven voor een UFS2-bestandssysteem zonder de huidige data te vernietigen: &prompt.root; tunefs -L home /dev/da3 Als het bestandssyteem vol is kan dit leiden tot data corruptie; echter als het bestandssysteem vol is zou het hoofddoel moeten zijn om oude achtergebleven bestanden weg te halen in plaats van het toevoegen van labels. Er zou nu een label moeten bestaan in /dev/ufs, welke toegevoegd kan worden aan het /etc/fstab bestand: /dev/ufs/home /home ufs rw 2 2 Het bestandssysteem mag niet aangekoppeld zijn op het moment dat tunefs gebruikt wordt. Nu kan het bestandssysteem net als normaal worden gekoppeld: &prompt.root; mount /home Vanaf dit moment is het mogelijk om, zolang de geom_label.ko geladen wordt tijdens het opstarten van het systeem, of als deze is meegecompileerd door middel van de GEOM_LABEL optie in de kernel, het apparaatknooppunt te wijzigen zonder ernstige gevolgen voor het systeem. Bestandssystemen kunnen ook een standaard label mee krijgen door gebruik te maken van de optie met het newfs commando. Zie de &man.newfs.8; handleiding voor meer informatie. Het volgende commando kan worden gebruikt om een label te verwijderen: &prompt.root; glabel destroy home Het volgende voorbeeld laat zien hoe de partities van een opstartschijf gelabeld worden. Partities op de opstartschijf labelen Door de partities op de opstartschijf permanent te labelen zou het systeem in staat moeten zijn om normaal door te gaan met opstarten, zelfs als de schijf verplaatst is naar een andere controller of is overgeplaatst naar een ander systeem. In dit voorbeeld wordt aangenomen dat er een enkele ATA-schijf wordt gebruikt, die momenteel als ad0 door het systeem wordt herkend. Het wordt ook aangenomen dat het standaard partitieschema van &os; wordt gebruikt, met de bestandssystemen /, /var, /usr, en /tmp, alsmede een wisselpartitie. Start het systeem opnieuw op, en druk bij de &man.loader.8;-prompt op 4 om in enkele gebruikersmodus op te starten. Geef dan de volgende commando's: &prompt.root; glabel label rootfs /dev/ad0s1a GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs &prompt.root; glabel label var /dev/ad0s1d GEOM_LABEL: Label for provider /dev/ad0s1d is label/var &prompt.root; glabel label usr /dev/ad0s1f GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr &prompt.root; glabel label tmp /dev/ad0s1e GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp &prompt.root; glabel label swap /dev/ad0s1b GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap &prompt.root; exit Het systeem zal doorgaan met opstarten in meergebruikersmodus. Bewerk, nadat het opstarten is voltooid, /etc/fstab en vervang de conventionele namen door de respectievelijke labels. Het uiteindelijke bestand /etc/fstab zal er als volgt uitzien: # Device Mountpoint FStype Options Dump Pass# /dev/label/swap none swap sw 0 0 /dev/label/rootfs / ufs rw 1 1 /dev/label/tmp /tmp ufs rw 2 2 /dev/label/usr /usr ufs rw 2 2 /dev/label/var /var ufs rw 2 2 Het systeem kan nu worden herstart. Als alles goed ging, zal het normaal opstarten en zal mount dit laten zien: &prompt.root; mount /dev/label/rootfs on / (ufs, local) devfs on /dev (devfs, local) /dev/label/tmp on /tmp (ufs, local, soft-updates) /dev/label/usr on /usr (ufs, local, soft-updates) /dev/label/var on /var (ufs, local, soft-updates) Beginnend met &os; 7.2 ondersteunt de klasse &man.glabel.8; een nieuw labeltype voor UFS-bestandssystemen, gebaseerd op het unieke id van het bestandssysteem, ufsid. Deze labels kunnen in de map /dev/ufsid gevonden worden en worden automatisch tijdens het opstarten aangemaakt. Het is mogelijk om de ufsid-labels te gebruiken om partities aan te koppelen door middel van de faciliteit /etc/fstab. Gebruik glabel status om een lijst van bestandssystemen en hun overeenkomende ufsid-labels te ontvangen: &prompt.user; glabel status Name Status Components ufsid/486b6fc38d330916 N/A ad4s1d ufsid/486b6fc16926168e N/A ad4s1f In het bovenstaande voorbeeld representeert ad4s1d het bestandssysteem /var, terwijl ad4s1f het bestandssysteem /usr representeert. Door gebruik te maken van de gegeven ufsid-waarden kunnen deze partities nu aangekoppeld worden met de volgende regels in /etc/fstab: /dev/ufsid/486b6fc38d330916 /var ufs rw 2 2 /dev/ufsid/486b6fc16926168e /usr ufs rw 2 2 Elke partitie met een ufsid-label kan op deze manier worden aangekoppeld, waardoor het niet meer nodig is om handmatig permanente labels voor ze aan te maken, terwijl er nog steeds van de voordelen van apparaatnaam-onafhankelijk aankoppelen genoten kan worden. UFS logboeken door middel van GEOM GEOM Journaling Met de komst van &os; 7.0 komt ook de langverwachte optie van UFS logboeken. De implementatie zelf is gedaan door middel van het GEOM subsysteem, welke makkelijk geconfigureerd kan worden met behulp van de &man.gjournal.8; applicatie. Wat is logboeken? Logboek mogelijkheden betekend het opslaan van bestandssysteem transacties, zoals wijzigingen die een complete schrijfactie zijn, voor er meta-data wordt toegevoegd en voor de wijzigingen op schijf worden gezet. Deze transactie log kan later opnieuw afgespeeld worden om te voorkomen dat er bestandssysteem inconsistenties voorkomen. Deze methode is een extra manier om te beschermen tegen gegevensverlies en inconsistenties van het bestandssysteem. In tegenstelling tot Soft Updates, welke bijhoud welke meta-data wijzigingen er worden uitgevoerd en Snapshots, wat een beeld bestand is van het bestandssysteem, wordt er een complete log bewaard in de schijfruimte die speciaal voor deze taak is gereserveerd, en in sommige gevallen op een compleet andere schijf. In tegenstelling tot andere logboek implementaties is de gjournal methode blok gebaseerd en niet geïmplementeerd als onderdeel van het bestandssysteem maar als uitbreiding op GEOM. Om ondersteuning in te schakelen voor gjournal, moet de kernel over de volgende optie beschikken, welke standaard is op &os; 7.X-systemen: options UFS_GJOURNAL Indien gejournalde volumes tijdens het opstarten aangekoppeld moeten worden, moet de kernelmodule geom_journal.ko ook geladen zijn, door de volgende regel aan /boot/loader.conf toe te voegen: geom_journal_load="YES" Ook kan deze functie in een eigen kernel worden ingebouwd, door de volgende regel aan het kernelinstellingenbestand toe te voegen: options GEOM_JOURNAL Het creëren van een logboek op een vrij en beschikbaar bestandssysteem kan nu gedaan worden met behulp van de volgende stappen, ervan uitgaande dat da4 de nieuwe beschikbare SCSI schijf is: &prompt.root; gjournal load &prompt.root; gjournal label /dev/da4 Op dit moment zou er een ad4 apparaatknooppunt en een ad4.journal apparaatknooppunt moeten zijn. Nu kan er een bestandssysteem op gezet worden: &prompt.root; newfs -O 2 -J /dev/da4.journal Het hiervoor ingevoerde commando zal een UFS2 bestandssysteem met logboek ondersteuning aanmaken. Koppel het apparaat op een gewenst koppelpunt met: &prompt.root; mount /dev/da4.journal /mnt In het geval dat er meerdere slices zijn, zal er een logboek voor elke slice gecreëerd worden. Bijvoorbeeld, als ad4s1 en ad4s2 allebei slices zijn, dan zal gjournal een ad4s1.journal en een ad4s2.journal creëeren. Voor performance doeleinden is het gewenst om het logboek op een andere schijf te bewaren. Voor deze gevallen moet de logboekleverancier of het opslagapparaat gespecificeerd worden achter het apparaat waarop de logboek functionaliteit aangebracht moet worden. De logboekfunctionaliteit kan ook worden ingeschakeld op een reeds bestaand systeem met behulp van tunefs. Maak echter altijd een back-up voor dat dit soort dingen uitgeprobeerd worden. In de meeste gevallen zal gjournal falen als het geen actueel logboek kan maken, maar het voorkomt geen dataverlies als gevolg van verkeerd gebruik van tunefs. Het is ook mogelijk om een journal van de opstartschijf van een &os;-systeem bij te houden. Voor gedetailleerde instructies over deze taak wordt naar het artikel Implementing UFS Journaling on a Desktop PC verwezen. Index: translations/nl_NL.ISO8859-1/books/handbook/jails/Makefile =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/jails/Makefile (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/jails/Makefile (revision 40367) @@ -1,19 +1,19 @@ # # Build the Handbook with just the content from this chapter. # # $FreeBSD$ # # %SOURCE% en_US.ISO8859-1/books/handbook/jails/Makefile -# %SRCID% 39631 +# %SRCID% 39829 # # CHAPTERS= jails/chapter.xml VPATH= .. MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX} DOC_PREFIX?= ${.CURDIR}/../../../.. .include "../Makefile" Index: translations/nl_NL.ISO8859-1/books/handbook/mac/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/mac/chapter.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/mac/chapter.xml (revision 40367) @@ -1,2180 +1,2180 @@ Tom Rhodes Geschreven door Siebrand Mazeland Vertaald door René Ladan Vertaling voortgezet door Verplichte Toegangscontrole (MAC) Overzicht MAC verplichte toegangscontrole MAC mandatory access control In &os; 5.X werden nieuwe beveiligingsuitbreidingen geïntroduceerd uit het TrustedBSD project, dat is gebaseerd op de &posix;.1e draft. Twee van de meest significante nieuwe beveiligingsmechanismen zijn faciliteiten voor Toegangscontrolelijsten voor bestandssystemen (ACLs) en Verplichte Toegangscontrole (Mandatory Access Control of MAC). Met Verplichte Toegangscontrole kunnen nieuwe toegangscontrolemodules geladen worden, waarmee nieuw beveiligingsbeleid opgelegd kan worden. Een aantal daarvan bieden beveiliging aan hele kleine onderdelen van het systeem, waardoor een bepaalde dienst weerbaarder wordt. Andere bieden allesomvattende gelabelde beveiliging op alle vlakken en objecten. Het verplichte deel van de definitie komt van het feit dat het opleggen van de controle wordt gedaan door beheerders en het systeem en niet wordt overgelaten aan de nukken van gebruikers, zoals wel wordt gedaan met toegangscontrole naar goeddunken (discretionary access control of DAC, de standaardrechten voor bestanden en System V IPC rechten in &os;). In dit hoofdstuk wordt de nadruk gelegd op het Verplichte Toegangscontrole Raamwerk (MAC Framework) en een verzameling van te activeren beveiligingsbeleidsmodules waarmee verschillende soorten beveiligingsmechanismen wordt ingeschakeld. Na het lezen van dit hoofdstuk weet u: Welke MAC beveiligingsbeleidsmodules op dit moment in &os; beschikbaar zijn en welke mechanismen daarbij horen. Wat MAC beveiligingsbeleidsmodules implementeren en het verschil tussen gelabeld en niet-gelabeld beleid. Hoe een systeem efficiënt ingesteld kan worden om met het MAC-raamwerk te werken. Hoe het beleid van de verschillende beveiligingsbeleidsmodules die in het MAC-raamwerk zitten ingesteld kunnen worden. Hoe een veiligere omgeving gemaakt kan worden met het MAC-raamwerk en de getoonde voorbeelden; Hoe de MAC-instellingen getest kunnen worden om er zeker van te zijn dat het raamwerk juist is geïmplementeerd. Aangeraden voorkennis: Begrip van &unix; en &os; basiskennis (); Bekend zijn met de beginselen van het instellen en compileren van de kernel (); Enigszins bekend zijn met beveiliging en wat dat te maken heeft met &os; (). Het verkeerd gebruiken van de informatie die hierin staat kan leiden tot het niet langer toegang hebben tot een systeem, ergernis bij gebruikers, of het niet langer kunnen gebruiken van de mogelijkheden die X11 biedt. Nog belangrijker is dat niet alleen op MAC vertrouwd moet worden voor de beveiliging van een systeem. Het MAC-raamwerk vergroot alleen het bestaande beveiligingsbeleid; zonder goede beveiligingsprocedures en regelmatige beveiligingscontroles is een systeem nooit helemaal veilig. Het is ook van belang op te merken dat de voorbeelden in dit hoofdstuk alleen voorbeelden zijn. Het is niet aan te raden ze uit te rollen op een productiesysteem. Het implementeren van de verschillende beveiligingsbeleidsmodules dient goed overdacht en getest te worden. Iemand die niet helemaal begrijpt hoe alles werkt, komt er waarschijnlijk achter dat die het complete systeem van voor naar achter en weer terug doorloopt en vele bestanden en mappen opnieuw moet instellen. Wat niet wordt behandeld In dit hoofdstuk wordt een brede reeks beveiligingsonderwerpen met betrekking tot het MAC-raamwerk behandeld. De ontwikkeling van nieuwe MAC-beveiligingsbeleidsmodules wordt niet behandeld. Een aantal modules die bij het MAC-raamwerk zitten hebben specifieke eigenschappen voor het testen en ontwikkelen van nieuwe modules. Daaronder vallen &man.mac.test.4;, &man.mac.stub.4; en &man.mac.none.4;. Meer informatie over deze beveiligingsbeleidsmodules en de mogelijkheden die ze bieden staan in de hulppagina's. Sleuteltermen in dit hoofdstuk Voordat dit hoofdstuk gelezen wordt, moeten er een aantal sleuteltermen toegelicht worden. Hiermee wordt hopelijk mogelijke verwarring en de abrupte introductie van nieuwe termen en informatie voorkomen. compartiment: een compartiment is een verzameling van programma's en gegevens die gepartitioneerd of gescheiden dient te worden en waartoe gebruikers expliciet toegang moeten krijgen op een systeem. Een compartiment staat ook voor een groep, zoals een werkgroep, afdeling, project, of onderwerp. Door gebruik te maken van compartimenten is het mogelijk om een need-to-know beveiligingsbeleid in te stellen. hoogwatermarkering: Een hoogwatermarkeringsbeleid is een beleid dat toestaat om beveiligingsniveaus te verhogen met het doel informatie dat op een hoger niveau aanwezig is te benaderen. In de meeste gevallen wordt het originele niveau hersteld nadat het proces voltooid is. Momenteel heeft het MAC-raamwerk van &os; hier geen beleid voor, maar de definitie is voor de volledigheid opgenomen. integriteit: integriteit, als sleutelconcept, is het niveau van vertrouwen dat in gegevens gesteld kan worden. Als de integriteit van gegevens wordt vergroot, dan geldt dat ook voor het vertrouwen dat in die gegevens gesteld kan worden. label: een label is een beveiligingsattribuut dat toegepast kan worden op bestanden, mappen of andere onderdelen van een systeem. Het kan gezien worden als een vertrouwelijkheidsstempel: als er een label op een bestand is geplaatst, beschrijft dat de beveiligingseigenschappen voor dat specifieke bestand en is daarop alleen toegang voor bestanden, gebruikers, bronnen, enzovoort, met gelijke beveiligingsinstellingen. De betekenis en interpretatie van labelwaarden hangt af van de beleidsinstellingen: hoewel sommige beleidseenheden een label beschouwen als representatie van de integriteit of het geheimhoudingsniveau van een object, kunnen andere beleidseenheden labels gebruiken om regels voor toegang in op te slaan. niveau: de verhoogde of verlaagde instelling van een beveiligingsattribuut. Met het stijgen van het niveau wordt ook aangenomen dat de veiligheid stijgt. laagwatermarkering: Een laagwatermarkeringsbeleid is een beleid dat toestaat om de beveiligingsniveaus te verlagen met het doel informatie te benaderen die minder veilig is. In de meeste gevallen wordt het originele beveiligingsniveau van de gebruiker hersteld nadat het proces voltooid is. De enige beveiligingsbeleidsmodule in &os; die dit gebruikt is &man.mac.lomac.4;. meervoudig label: de eigenschap is een optie van het bestandssysteem die in enkelegebruikersmodus met &man.tunefs.8;, tijdens het opstarten via het bestand &man.fstab.5; of tijdens het maken van een nieuw bestandssysteem ingesteld kan worden. Met deze optie wordt het voor een beheerder mogelijk om verschillende MAC-labels op verschillende objecten toe te passen. Deze optie is alleen van toepassing op beveiligingsbeleidsmodules die labels ondersteunen. object: een object of systeemobject is een entiteit waar informatie doorheen stroomt op aanwijzing van een subject. Hieronder vallen mappen, bestanden, velden, schermen, toetsenborden, geheugen, magnetische opslag, printers en alle andere denkbare apparaten waarmee gegevens kunnen worden vervoerd of kunnen worden opgeslagen. In de basis is een object een opslageenheid voor gegevens of een systeembron; toegang tot een object betekent in feite toegang tot de gegevens. beleidseenheid: een verzameling van regels die aangeven hoe doelstellingen bereikt moeten worden. In een beleidseenheid staat meestal beschreven hoe bepaalde eenheden behandeld dienen te worden. In dit hoofdstuk wordt de term beleidseenheid in deze context gezien als een beveiligingsbeleidseenheid, wat zoveel wil zeggen als een verzameling regels die bepaalt hoe gegevens en informatie stroomt en aangeeft wie toegang tot welke gegevens en informatie heeft. gevoeligheid: meestal gebruikt bij het bespreken van MLS. Een gevoeligheidsniveau is een term die gebruikt wordt om te beschrijven hoe belangrijk of geheim de gegevens horen te zijn. Met het stijgen van het gevoeligheidsniveau stijgt ook het belang van de geheimhouding of de vertrouwelijkheid van de gegevens. enkelvoudig label: een enkelvoudig label wordt gebruikt als een heel bestandssysteem gebruik maakt van één label om het toegangsbeleid over de gegevensstromen af te dwingen. Als dit voor een bestandssysteem is ingesteld, wat geldt als er geen gebruik gemaakt wordt van de optie , dan gehoorzamen alle bestanden aan dezelfde labelinstelling. subject: een subject is een gegeven actieve entiteit die het stromen van informatie tussen objecten veroorzaakt, bijvoorbeeld een gebruiker, gebruikersprocessor, systeemproces, enzovoort. Op &os; is dit bijna altijd een thread die in een proces namens een gebruiker optreedt. Uitleg over MAC Met al deze nieuwe termen in gedachten, kan overdacht worden hoe het MAC-raamwerk de complete beveiliging van een systeem kan vergroten. De verschillende beveiligingsbeleidsmodules die het MAC-raamwerk biedt zouden gebruikt kunnen worden om het netwerk en bestandssystemen te beschermen, gebruikers toegang tot bepaalde poorten en sockets kunnen ontzeggen, en nog veel meer. Misschien kunnen de beleidsmodules het beste gebruikt worden door ze samen in te zetten, door meerdere beveiligingsbeleidsmodules te laden om te komen tot een omgeving waarin de beveiliging uit meerdere lagen is opgebouwd. In een omgeving waarin de beveiliging uit meerdere lagen is opgebouwd zijn meerdere beleidsmodules actief om de beveiliging in de hand te houden. Deze aanpak is anders dan een beleid om de beveiliging sec beter te maken, omdat daarmee in het algemeen elementen in een systeem beveiligd worden dat voor een specifiek doel wordt gebruikt. Het enige nadeel is het benodigde beheer in het geval van meervoudige bestandssysteemlabels, het instellen van toegang tot het netwerk per gebruiker, enzovoort. De nadelen zijn wel minimaal als ze worden vergeleken met het immer durende effect van het raamwerk. Zo zorgt bijvoorbeeld de mogelijkheid om te kiezen welke beleidseenheden voor een specifiek gebruik nodig zijn voor het zo laag mogelijk houden van de beheerslast. Het terugdringen van ondersteuning voor onnodige beleidseenheden kan de beschikbaarheid van systemen verhogen en ook de keuzevrijheid vergroten. Voor een goede implementatie worden alle beveiligingseisen in beschouwing genomen en daarna worden de verschillende beveiligingsbeleidsmodules effectief door het raamwerk geïmplementeerd. Een systeem dat gebruik maakt van de mogelijkheden van MAC dient dus tenminste de garantie te bieden dat een gebruiker niet de mogelijkheid heeft naar eigen inzicht beveiligingsattributen te wijzigen. Alle gebruikersprogramma's en scripts moeten werken binnen de beperkingen die de toegangsregels voorschrijven volgens de geselecteerde beveiligingsbeleidsmodules. Het voorgaande impliceert ook dat de volledige controle over de MAC-toegangsregels bij de systeembeheerder ligt. Het is de taak van de systeembeheerder om zorgvuldig de juiste beveiligingsbeleidsmodules te kiezen. Voor sommige omgevingen kan het nodig zijn dat de toegang tot het netwerk wordt beperkt. In dat soort gevallen zijn de beleidsmodules &man.mac.portacl.4;, &man.mac.ifoff.4; en zelfs &man.mac.biba.4; goede startpunten. In andere gevallen kan de strikte vertrouwelijkheid van bestandssysteemobjecten van belang zijn. Dan zijn beleidsmodules zoals &man.mac.bsdextended.4; en &man.mac.mls.4; voor dit doel gemaakt. Beslissingen over beleid zouden gemaakt kunnen worden op basis van het netwerkontwerp. Wellicht wordt alleen bepaalde gebruikers toegestaan gebruik te maken van de mogelijkheden van &man.ssh.1; om toegang te krijgen tot het netwerk of Internet. In dat geval is de juiste beleidsmodule &man.mac.portacl.4;. Maar wat te doen voor bestandssystemen? Moet alle toegang tot bepaalde mappen worden afgesneden van andere gebruikersgroepen of specifieke gebruikers, of moeten de toegang voor gebruikers of programma's tot bepaalde bestanden worden ingesteld door bepaalde objecten als geheim te bestempelen? In het geval van het bestandssysteem, kan ervoor gekozen worden om de toegang voor sommige objecten voor bepaalde gebruikers als geheim te bestempelen, maar voor andere niet. Bijvoorbeeld: een groot ontwikkelteam wordt opgedeeld in kleinere eenheden van individuen. Ontwikkelaars in project A horen geen toegang te hebben tot objecten die zijn geschreven door ontwikkelaars in project B. Maar misschien moeten ze wel toegang hebben tot objecten die zijn geschreven door ontwikkelaars in project C. Dat is nogal wat. Door gebruik te maken van de verschillende beveiligingsbeleidsmodules in het MAC-raamwerk kunnen gebruikers in hun groepen worden opgedeeld en kan ze toegang gegeven worden tot de juiste locaties zonder dat er angst hoeft te zijn voor het lekken van informatie. Zo heeft dus iedere beveiligingsbeleidsmodule een unieke wijze om om te gaan met de totale beveiliging van een systeem. Het kiezen van modules hoort gebaseerd te zijn op een zorgvuldig uitgedacht beveiligingsbeleid. In veel gevallen wordt het totale beveiligingsbeleid aangepast en opnieuw toegepast op het systeem. Een goed begrip van de verschillende beveiligingsbeleidsmodules die het MAC-raamwerk biedt helpt beheerders bij het kiezen van de juiste beleidseenheden voor hun situatie. De standaard &os;-kernel kent geen ondersteuning voor het MAC-raamwerk en daarom dient de volgende kerneloptie toegevoegd te worden voordat op basis van de voorbeelden of informatie uit dit hoofdstuk wijzigen worden gemaakt: options MAC Hierna dient de kernel herbouwd en opnieuw geïnstalleerd te worden. Hoewel in de verschillende hulppagina's voor MAC-beleidsmodules staat dat ze in de kernel gebouwd kunnen worden, is het mogelijk het systeem van het netwerk af te sluiten en meer. Het implementeren van MAC is net zoiets als het implementeren van een firewall en er moet opgepast worden dat een systeem niet totaal op slot gaat. Er dient rekening gehouden te worden met het teruggaan naar een vorige instelling en het op afstand implementeren van MAC dient bijzonder voorzichtig te gebeuren. MAC-labels begrijpen Een MAC-label is een beveiligingsattribuut dat toegepast kan worden op subjecten en objecten die door het systeem gaan. Bij het instellen van een label moet de gebruiker in staat zijn om precies te begrijpen wat er gebeurt. De attributen die voor een object beschikbaar zijn hangen af van de geladen beleidsmodule en die interpreteren hun attributen op nogal verschillende manieren. Het resultaat kan resulteren in onverwacht en wellicht ongewenst gedrag van een systeem als het beleid door een gebrek aan begrip verkeerd is ingesteld. Het beveiligingslabel op een object wordt gebruikt als onderdeel van een beveiligingstoegangscontrolebeslissing door een beleidseenheid. Voor sommige beleidseenheden bevat het label zelf alle informatie die nodig is voor het maken van een beslissing; in andere modellen kunnen de labels als onderdeel van een grotere verzameling verwerkt worden, enzovoort. Zo staat bijvoorbeeld het instellen van het label biba/low op een bestand voor een label dat wordt beheerd door de beveiligingsbeleidsmodule Biba, met een waarde van low. Een aantal beleidsmodules die in &os; de mogelijkheid voor labelen ondersteunen, bieden drie specifieke voorgedefinieerde labels: low, high en equal. Hoewel ze in verschillende beleidsmodules op een andere manier toegangscontrole afdwingen, is er de garantie dat het label low de laagst mogelijke instelling is, het label equal het subject of object uitschakelt of ongemoeid laat en het label high de hoogst mogelijk instelling afdwingt die beschikbaar is in de beleidsmodules Biba en MLS. Binnen een bestandssysteemomgeving met een enkelvoudig label kan er maar één label gebruikt worden op objecten. Hiermee wordt een verzameling van toegangsrechten op het hele systeem opgelegd en dat is voor veel omgevingen voldoende. Er zijn echter een aantal gevallen waarin het wenselijk is meervoudige labels in te stellen op subjecten of objecten in het bestandssysteem. In die gevallen kan de optie meegegeven worden aan &man.tunefs.8;. In het geval van Biba en MLS kan er een numeriek label gezet worden om het precieze niveau van de hiërarchische controle aan te geven. Dit numerieke niveau wordt gebruikt om informatie in verschillende groepen te partitioneren of te sorteren voor het classificeren voor het geven van toegang voor een bepaalde groep of een groep van een hoger niveau. In de meeste gevallen stelt een beheerder alleen maar een enkelvoudig label in dat door het hele bestandssysteem wordt gebruikt. Wacht eens, dat klinkt net als DAC! MAC gaf de controle toch strikt aan de beheerder? Dat klopt nog steeds, root heeft nog steeds de controle in handen en is degene die het beleid instelt zodat gebruikers in de juiste categorie en/of toegangsniveaus worden geplaatst. Daarnaast kunnen veel beleidsmodules ook de gebruiker root beperkingen opleggen. Dan wordt de controle overgedragen aan een groep, maar kan root de instellingen op ieder gewenst moment intrekken of wijzigen. Dit is het hiërarchische of toegangsmodel dat wordt afgedekt door beleidseenheden zoals Biba en MLS. Labelinstellingen Vrijwel alle aspecten voor het instellen van labelbeleid worden uitgevoerd met basissysteemprogramma's. Die commando's bieden een eenvoudige interface voor object- of subjectinstellingen of de manipulatie en verificatie van de instellingen. Alle instellingen kunnen gemaakt worden met de hulpprogramma's &man.setfmac.8; en &man.setpmac.8;. Het commando setfmac wordt gebruikt om MAC labels op systeemobjecten in te stellen en setpmac voor het instellen van de labels op systeemsubjecten: &prompt.root; setfmac biba/high test Als het bovenstaande commando geen foutmeldingen heeft veroorzaakt, dan komt er een prompt terug. Deze commando's geven nooit uitvoer, tenzij er een fout is opgetreden; net als bij de commando's &man.chmod.1; en &man.chown.8;. In sommige gevallen kan de foutmelding Permission denied zijn en deze treedt meestal op als het label wordt ingesteld of gewijzigd op een object dat is beperkt. Andere condities kunnen andere foutmeldingen veroorzaken. De gebruiker die het object probeert te herlabelen kan bijvoorbeeld niet de eigenaar zijn van het bestand, het object kan niet bestaan of alleen-lezen zijn. Een verplichte beleidsinstelling zal het proces niet toestaan om een bestand te herlabelen, misschien om een eigenschap van het bestand, een eigenschap van het proces of een eigenschap van de voorgestelde nieuwe waarde van het label. Een gebruiker die met een lage integriteit draait, probeert bijvoorbeeld het label van een bestand met een hoge integriteit te veranderen of zo'n zelfde gebruiker kan proberen het label van een bestand met lage integriteit te wijzigen in een label van een hoge integriteit. De systeembeheerder kan de volgende commando's gebruiken om dit probleem te voorkomen: &prompt.root; setfmac biba/high test Permission denied &prompt.root; setpmac biba/low setfmac biba/high test &prompt.root; getfmac test test: biba/high Hierboven is te zien dat setpmac gebruikt kan worden om aan de instellingen van een beleidsmodules voorbij te gaan door een ander label toe te wijzen aan het aangeroepen proces. Het hulpprogramma getpmac wordt meestal toegepast op processen die al draaien, zoals sendmail: hoewel er een proces-ID nodig is in plaats van een commando, is de logica gelijk. Als gebruikers proberen een bestand te manipuleren waar ze geen toegang tot hebben, onderhevig aan de regels van de geladen beleidsmodules, dan wordt de foutmelding Operation not permitted weergegeven door de functie mac_set_link. Labeltypen Met de beleidsmodules &man.mac.biba.4;, &man.mac.mls.4; en &man.mac.lomac.4; is het mogelijk eenvoudige labels toe te wijzen. Die kunnen hoog, gelijk aan en laag zijn. Hieronder een beschrijving van wat die labels betekenen: Het label low is de laagst mogelijke labelinstelling die een object of subject kan hebben. Deze instelling op objecten of subjecten blokkeert hun toegang tot objecten of subjecten met de markering hoog. Het label equal hoort alleen ingesteld te worden op objecten die uitgesloten moeten worden van een beleidsinstelling. Het label high geeft een object of subject de hoogst mogelijke instelling. Afhankelijke van iedere beleidsmodule heeft iedere instelling een ander informatiestroomdirectief tot gevolg. Het lezen van de hulppagina's die van toepassing zijn geeft inzicht in de precieze eigenschappen van de standaard labelinstellingen. Gevorderde labelinstellingen Dit zijn de labels met numerieke graden die gebruikt worden voor vergelijking:afdeling+afdeling. biba/10:2+3+6(5:2+3-20:2+3+4+5+6) Het bovenstaande kan dus geïnterpreteerd worden als: Biba-beleidslabel/Graad 10:Afdelingen 2, 3 en 6: (graad 5 ...) In dit voorbeeld is de eerste graad de effectieve graad met de effectieve afdelingen, de tweede graad is de lage graad en de laatste is de hoge graad. In de meeste instellingen worden deze instellingen niet gebruikt. Ze zijn inderdaad instellingen voor gevorderden. Als ze worden toegepast op systeemobjecten, hebben ze alleen een huidige graad/afdeling in vergelijking met systeemsubjecten, omdat ze de reikwijdte van rechten in het systeem en op netwerkinterfaces aangeven, waar ze gebruikt worden voor toegangscontrole. De graad en afdelingen in een subject en object paar wordt gebruikt om een relatie te construeren die dominantie heet, waar een subject een object domineert, geen van beiden domineert, of beiden elkaar domineren. Het geval beiden domineren komt voor als de twee labels gelijk zijn. Vanwege de natuur van de informatiestroom van Biba, heeft een gebruiker rechten op een verzameling van afdelingen, need to know, die overeen zouden kunnen komen met projecten, maar objecten hebben ook een verzameling van afdelingen. Gebruikers dienen wellicht hun rechten onder te verdelen met su of setpmac om toegang te krijgen tot objecten in een afdeling die geen verboden terrein voor ze zijn. Gebruikers en labelinstellingen Gebruikers moeten zelf labels hebben, zodat hun bestanden en processen juist kunnen samenwerken met het beveiligingsbeleid dat op een systeem is ingesteld. Dit wordt ingesteld via het bestand login.conf door gebruik te maken van aanmeldklassen. Iedere beleidsmodule die labels gebruikt implementeert ook de instelling van de gebruikersklasse. Een voorbeeld dat iedere instelling uit de beleidsmodule bevat is hieronder te zien: default:\ :copyright=/etc/COPYRIGHT:\ :welcome=/etc/motd:\ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\ :path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:\ :manpath=/usr/share/man /usr/local/man:\ :nologin=/usr/sbin/nologin:\ :cputime=1h30m:\ :datasize=8M:\ :vmemoryuse=100M:\ :stacksize=2M:\ :memorylocked=4M:\ :memoryuse=8M:\ :filesize=8M:\ :coredumpsize=8M:\ :openfiles=24:\ :maxproc=32:\ :priority=0:\ :requirehome:\ :passwordtime=91d:\ :umask=022:\ :ignoretime@:\ :label=partition/13,mls/5,biba/10(5-15),lomac/10[2]: De optie label wordt gebruikt om het standaardlabel voor aanmeldklasse in te stellen dat door MAC wordt afgedwongen. Het wordt gebruikers nooit toegestaan deze waarde te wijzigen, dus kan het gezien worden als niet optioneel vanuit het perspectief van de gebruiker. In de echte wereld besluit een beheerder echter nooit iedere beleidsmodule te activeren. Het wordt sterk aangeraden de rest van die hoofdstuk te lezen alvorens (een deel van) de bovenstaande instellingen te implementeren. Gebruikers kunnen hun label wijzigen na het initiële aanmelden, maar dit is wel afhankelijk van de beperkingen van een beleidsinstelling. Het bovenstaande voorbeeld vertelt de beleidseenheid Biba dat de minimale integriteit van een proces 5 en het maximum 15, maar dat het effectieve label standaard 10 is. Het proces draait op niveau 10, totdat het proces het label wijzigt, misschien door een gebruiker die setpmac gebruikt, bij het aanmelden beperkt tot de door Biba ingestelde reeks. In alle gevallen dient de database met aanmeldklassemogelijkheden opnieuw gebouwd te worden met cap_mkdb na het wijzigen van login.conf. Dit wordt ook in alle komende voorbeelden en beschrijvingen gedaan. Het is belangrijk op te merken dat in veel gevallen sites te maken hebben met bijzonder grote aantallen gebruikers waardoor er een aantal verschillende aanmeldklassen nodig zijn. Het is dan nodig gedetailleerd te plannen omdat dit anders bijzonder complex wordt om te onderhouden. Netwerkinterfaces en labelinstellingen Labels kunnen ook ingesteld worden op netwerkinterfaces om te assisteren bij het controleren van het stromen van gegevens over het netwerk. In alle gevallen werken ze op dezelfde wijze als het beleid werkt ten aanzien van objecten. Gebruikers met bijvoorbeeld een hoge instelling in biba krijgen geen toegang tot interfaces met een laag label. Het kan meegegeven worden aan ifconfig als het MAC-label op netwerkinterfaces wordt ingesteld: &prompt.root; ifconfig bge0 maclabel biba/equal In het bovenstaande voorbeeld wordt het MAC-label biba/equal ingesteld op de interface &man.bge.4;. Als er een instelling wordt gebruikt die gelijkvormig is aan biba/high(low-high), dan moet het volledige label worden ingegeven, anders treedt er een fout op. Iedere beleidsmodule die labels ondersteunt een instelling waarmee het MAC-label op netwerkinterfaces kan worden uitgeschakeld. Het label instellen op heeft hetzelfde effect. Deze instellingen zijn na te kijken in de uitvoer van sysctl, de hulppagina van het beleid en zelfs later in dit hoofdstuk. Enkelvoudig label of meervoudig label? Standaard gebruikt een systeem de optie . Wat betekent dit voor een beheerder? Er zijn een aantal verschillen die allemaal hun eigen voor- en nadelen hebben voor de flexibiliteit in het beveiligingsmodel voor een systeem. Bij gebruik van kan er maar één label, bijvoorbeeld biba/high, gebruikt worden voor ieder subject of object. Hierdoor is er minder beheer nodig, maar de flexibiliteit voor beleid dat labels ondersteunt daalt erdoor. Veel beheerders willen de optie gebruiken in hun beveiligingsmodel. De optie staat ieder subject of object toe om zijn eigen onafhankelijke MAC-label te hebben in plaats van de standaardoptie , die maar één label toestaat op een hele partitie. De labelopties en zijn alleen verplicht voor de beleidseenheden die de mogelijkheid bieden om te labelen, waaronder de beleidsmogelijkheden van Biba, Lomac, MLS en SEBSD. In veel gevallen hoeft niet eens ingesteld te worden. Stel er is de volgende situatie en beveiligingsmodel: &os;-webserver die gebruik maakt van het MAC-raamwerk en een mengeling van verschillende beleidseenheden. De webserver heeft maar één label nodig, biba/high, voor alles in het systeem. Hier is de optie voor het bestandssysteem niet nodig, omdat een enkelvoudig label altijd van toepassing is. Maar omdat de machine als webserver dienst gaat doen, dient de webserver te draaien als biba/low om administratiemogelijkheden te voorkomen. Later wordt beschreven hoe de beleidseenheid Biba werkt, dus als de voorgaande opmerking wat lastig te begrijpen is, lees dan verder en kom later nog een keer terug. De server zou een aparte partitie kunnen gebruiken waarop biba/low van toepassing kan zijn voor de meeste, zo niet alle, runtime-statussen. Er ontbreekt veel in dit voorbeeld, bijvoorbeeld de restricties op gegevens en (gebruikers)instellingen. Dit was slechts een snel voorbeeld om de hiervoor aangehaalde stelling te ondersteunen. Als er een niet-labelende beleidseenheid wordt gebruikt, dan is de optie nooit verplicht. Hieronder vallen de beleidseenheden seeotheruids, portacl en partition. Bij gebruik van voor een partitie en het neerzetten van een beveiligingsmodel gebaseerd op functionaliteit gaat de deur open voor hogere administratieve rompslomp, omdat alles in een bestandssysteem een label krijgt. Hieronder vallen mappen, bestanden en zelfs apparaatknooppunten. Het volgende commando stelt in op de bestandssystemen om meerdere labels te kunnen krijgen. Dit kan alleen uitgevoerd worden in enkele gebruikersmodus: &prompt.root; tunefs -l enable / Dit is geen criterium voor het wisselbestandssysteem. Sommige gebruikers hebben problemen ondervonden met het instellen van de vlag op de rootpartitie. Als dit het geval is, kijk dan naar van dit hoofdstuk. De beveiligingsconfiguratie plannen Wanneer een nieuwe technologie wordt geïmplementeerd is een planningsfase altijd een goed idee. Tijdens de planningsfases zou een beheerder in het algemeen naar de big picture moeten kijken, en daarbij minstens het volgende in de gaten proberen te houden: De implementatiebenodigdheden; De implementatiedoelen; Voor MAC-installaties houden deze in: Hoe de beschikbare informatie en bronnen die op het doelsysteem aanwezig zijn te classificeren. Voor wat voor soort informatie of bronnen de toegang te beperken samen met het type van de beperkingen die dienen te worden toegepast. Welke MAC-module(s) nodig zullen zijn om dit doel te bereiken. Het is altijd mogelijk om de systeembronnen en de beveiligingsinstellingen te veranderen en te herconfigureren, het komt vaak erg ongelegen om het systeem te doorzoeken en bestaande bestanden en gebruikersaccounts te repareren. Plannen helpt om zeker te zijn van een probleemloze en efficiënte systeemimplementatie. Het is vaak vitaal en zeker in uw voordeel om een proefronde van het vertrouwde systeem, inclusief de configuratie, te draaien vóórdat een MAC-implementatie wordt gebruikt op productiesystemen. Het idee om een systeem met MAC gewoon los te laten is als het plannen van mislukkingen. Verschillende omgevingen kunnen verschillende behoeften en benodigdheden nodig hebben. Het opzetten van een diepgaand en compleet beveiligingsprofiel zal de noodzaak van verandering verminderen wanneer het systeem in gebruik wordt genomen. Zodoende zullen de toekomstige secties de verschillende modules die beschikbaar zijn voor beheerders behandelen; hun gebruik en configuratie beschrijven; en in sommige gevallen inzicht bieden in welke situaties ze het beste tot hun recht komen. Een webserver bijvoorbeeld zou de beleiden &man.mac.biba.4; en &man.mac.bsdextended.4; in gebruik nemen. In andere gevallen kan voor een machine met erg weinig lokale gebruikers &man.mac.partition.4; een goede keuze zijn. Module-instellingen Iedere module uit het MAC-raamwerk kan zoals zojuist aangegeven in de kernel worden gecompileerd of als runtime-kernelmodule geladen worden. De geadviseerde methode is de naam van een module toevoegen aan het bestand /boot/loader.conf zodat die wordt geladen tijdens de eerste fase van het starten van een systeem. In de volgende onderdelen worden de verschillende MAC-modules en hun mogelijkheden beschreven. De implementatie in een specifieke omgeving wordt ook in dit hoofdstuk beschreven. Een aantal modules ondersteunt het gebruik van labelen, wat het beperken van toegang is door een label als dit is toegestaan en dat niet af te dwingen. Een labelinstellingenbestand kan bepalen hoe bestanden kunnen worden benaderd, hoe netwerkcommunicatie wordt uitgewisseld, en meer. In het vorige onderdeel is beschreven hoe de vlag ingesteld kon worden op bestandssystemen om per bestand of per partitie toegangscontrole in te schakelen. Een instelling met een enkelvoudig label zou maar één label over een heel systeem afdwingen, daarom wordt de optie tunefs genoemd. MAC-module seeotheruids MAC zie andere UID's beleidsinstelling Modulenaam: mac_seeotheruids.ko Kernelinstelling: options MAC_SEEOTHERUIDS Opstartoptie: mac_seeotheruids_load="YES" De module &man.mac.seeotheruids.4; imiteert de sysctl-tunables security.bsd.see_other_uids en security.bsd.see_other_gids en breidt deze uit. Voor deze optie hoeven geen labels ingesteld te worden voor de instelling en hij werkt transparant met de andere modules. Na het laden van de module kunnen de volgende sysctl-tunables gebruikt worden om de opties te beheren: security.mac.seeotheruids.enabled schakelt de opties van de module in en gebruikt de standaardinstellingen. Deze standaardinstellingen ontzeggen gebruikt de mogelijkheid processen en sockets te zien die eigendom zijn van andere gebruikers. security.mac.seeotheruids.specificgid_enabled staat toe dat een bepaalde groep niet onder dit beleid valt. Om bepaalde groepen van dit beleid uit te sluiten, kan de sysctl-tunable security.mac.seeotheruids.specificgid=XXX gebruikt worden. In het bovenstaande voorbeeld dient XXX vervangen te worden door het numerieke ID van een groep die uitgesloten moet worden van de beleidsinstelling. security.mac.seeotheruids.primarygroup_enabled wordt gebruikt om specifieke primaire groepen uit te sluiten van dit beleid. Als deze tunable wordt gebruikt, mag security.mac.seeotheruids.specificgid_enabled niet gebruikt worden. MAC-module bsdextended MAC bestandssysteemfirewall beleidsinstelling Modulenaam: mac_bsdextended.ko Kernelinstelling: options MAC_BSDEXTENDED Opstartoptie: mac_bsdextended_load="YES" De module &man.mac.bsdextended.4; dwingt de bestandssysteemfirewall af. Het beleid van deze module biedt een uitbreiding van het standaard rechtenmodel voor bestandssystemen, waardoor een beheerder een firewallachtige verzameling met regels kan maken om bestanden, programma's en mappen in de bestandssysteemhiërarchie te beschermen. Wanneer geprobeerd wordt om toegang tot een object in het bestandssysteem te krijgen, wordt de lijst met regels afgelopen totdat er òf een overeenkomstige regel is gevonden òf het einde van de lijst is bereikt. Dit gedrag kan veranderd worden door het gebruik van de &man.sysctl.8;-parameter security.mac.bsdextended.firstmatch_enabled. Net zoals andere firewall-modules in &os; kan een bestand dat regels voor toegangscontrole bevat tijdens het opstarten door het systeem worden aangemaakt en gelezen door een &man.rc.conf.5;-variabele te gebruiken. De lijst met regels kan ingevoerd worden met het hulpprogramma &man.ugidfw.8;, dat een syntaxis heeft die lijkt op die van &man.ipfw.8;. Meer hulpprogramma's kunnen geschreven worden met de functies in de bibliotheek &man.libugidfw.3;. Bij het werken met deze module dient bijzondere voorzichtigheid in acht te worden genomen. Verkeerd gebruik kan toegang tot bepaalde delen van het bestandssysteem blokkeren. Voorbeelden Nadat de module &man.mac.bsdextended.4; is geladen, kan met het volgende commando de huidige regels getoond worden: &prompt.root; ugidfw list 0 slots, 0 rules Zoals verwacht zijn er geen regels ingesteld. Dit betekent dat alles nog steeds volledig toegankelijk is. Om een regel te maken die alle toegang voor alle gebruikers behalve root ontzegt: &prompt.root; ugidfw add subject not uid root new object not uid root mode n Dit is een slecht idee, omdat het voorkomt dat alle gebruikers ook maar het meest eenvoudige commando kunnen uitvoeren, zoals ls. Een betere lijst met regels zou kunnen zijn: &prompt.root; ugidfw set 2 subject uid gebruiker1 object uid gebruiker2 mode n &prompt.root; ugidfw set 3 subject uid gebruiker1 object gid gebruiker2 mode n Hiermee wordt alle toegang, inclusief het tonen van mapinhoud, tot de thuismap van gebruiker2 ontzegd voor de gebruikersnaam gebruiker1. In plaats van gebruiker1, zou kunnen worden opgegeven. Hierdoor worden dezelfde restricties als hierboven actief voor alle gebruikers in plaats van voor slechts één gebruiker. De gebruiker root blijft onaangetast door deze wijzigingen. Met deze informatie zou een basisbegrip moeten zijn ontstaan over hoe de module &man.mac.bsdextended.4; gebruikt kan worden om een bestandssysteem te beschermen. Meer informatie staat in de hulppagina's van &man.mac.bsdextended.4; en &man.ugidfw.8;. MAC-module ifoff MAC Interface Silencing beleidsinstelling Modulenaam: mac_ifoff.ko Kernelinstelling: options MAC_IFOFF Opstartoptie: mac_ifoff_load="YES" De module &man.mac.ifoff.4; bestaat alleen om netwerkinterfaces tijdens het draaien uit te schakelen en om te verhinderen dat netwerkinterfaces tijdens het initiële opstarten worden geactiveerd. Er hoeven geen labels ingesteld te worden, noch is deze module afhankelijk van andere MAC-modules. Het meeste beheer wordt gedaan met de sysctl-tunables die hieronder zijn vermeld. security.mac.ifoff.lo_enabled schakelt alle verkeer op het teruglusinterface (&man.lo.4;) in of uit. security.mac.ifoff.bpfrecv_enabled schakelt alle verkeer op het Berkeley Packet Filterinterface (&man.bpf.4;) in of uit. security.mac.ifoff.other_enabled schakelt alle verkeer op alle andere interfaces in of uit. &man.mac.ifoff.4; wordt het meest gebruikt om netwerken te monitoren in een omgeving waar netwerkverkeer niet toegestaan zou moeten zijn tijdens het opstarten. Een ander voorgesteld gebruik zou het schrijven van een script zijn dat security/aide gebruikt om automatisch netwerkverkeer te blokkeren wanneer het nieuwe of veranderde bestanden in beschermde mappen vindt. MAC-module portacl MAC poorttoegangscontrolelijst beleidsinstelling Modulenaam: mac_portacl.ko Kernelinstelling: MAC_PORTACL Opstartoptie: mac_portacl_load="YES" De module &man.mac.portacl.4; wordt gebruikt om het binden aan lokale TCP- en UDP-poorten te begrenzen door een waaier aan sysctl-variabelen te gebruiken. In essentie maakt &man.mac.portacl.4; het mogelijk om niet-root-gebruikers in staat te stellen om aan gespecificeerde geprivilegieerde poorten te binden, dus poorten lager dan 1024. Eenmaal geladen zal deze module het MAC-beleid op alle sockets aanzetten. De volgende tunables zijn beschikbaar: security.mac.portacl.enabled schakelt het beleid volledig in of uit. security.mac.portacl.port_high stelt het hoogste poortnummer in waarvoor &man.mac.portacl.4; bescherming biedt. security.mac.portacl.suser_exempt sluit de gebruiker root uit van dit beleid wanneer het op een waarde anders dan nul wordt ingesteld. security.mac.portacl.rules specificeert het eigenlijke beleid van mac_portacl; zie onder. Het eigenlijke beleid van mac_portacl, zoals gespecificeerd in de sysctl security.mac.portacl.rules, is een tekststring van de vorm: regel[,regel,...] met zoveel regels als nodig. Elke regel heeft de vorm: idtype:id:protocol:poort. De parameter idtype kan uid of gid zijn en wordt gebruikt om de parameter id als respectievelijk een gebruikers-id of groeps-id te interpreteren. De parameter protocol wordt gebruikt om te bepalen of de regel op TCP of UDP moet worden toegepast door de parameter op tcp of udp in te stellen. De laatste parameter poort is het poortnummer waaraan de gespecificeerde gebruiker of groep zich mag binden. Aangezien de regelverzameling direct door de kernel wordt geïnterpreteerd kunnen alleen numerieke waarden voor de parameters voor de gebruikers-ID, groeps-ID, en de poort gebruikt worden. Voor gebruikers, groepen, en poortdiensten kunnen dus geen namen gebruikt worden. Standaard kunnen op &unix;-achtige systemen poorten lager dan 1024 alleen aan geprivilegieerde processen gebonden worden, dus diegenen die als root draaien. Om &man.mac.portacl.4; toe te laten staan om ongeprivilegieerde processen aan poorten lager dan 1024 te laten binden moet deze standaard &unix;-beperking uitgezet worden. Dit kan bereikt worden door de &man.sysctl.8;-variabelen net.inet.ip.portange.reservedlow en net.inet.ip.portrange.reservedhigh op nul te zetten. Zie de onderstaande voorbeelden of bekijk de handleidingpagina voor &man.mac.portacl.4; voor meer informatie. Voorbeelden De volgende voorbeelden zouden de bovenstaande discussie wat moeten toelichten: &prompt.root; sysctl security.mac.portacl.port_high=1023 &prompt.root; sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0 Eerst wordt &man.mac.portacl.4; ingesteld om de standaard geprivilegieerde poorten te dekken en worden de normale bindbeperkingen van &unix; uitgeschakeld. &prompt.root; sysctl security.mac.portacl.suser_exempt=1 De gebruiker root zou niet beperkt moeten worden door dit beleid, stel security.mac.portacl.suser_exempt dus in op een waarde anders dan nul. De module &man.mac.portacl.4; is nu ingesteld om zich op de zelfde manier te gedragen als &unix;-achtige systemen zich standaard gedragen. &prompt.root; sysctl security.mac.portacl.rules=uid:80:tcp:80 Sta de gebruiker met UID 80 (normaliter de gebruiker www) toe om zich aan poort 80 te binden. Dit kan gebruikt worden om de gebruiker www toe te staan een webserver te draaien zonder ooit root-rechten te hebben. &prompt.root; sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995 Sta de gebruiker met UID 1001 om zich aan de TCP-poorten 110 (pop3) en 995 (pop3s) te binden. Dit staat deze gebruiker toe om een server te starten die verbindingen accepteert op poorten 110 en 995. MAC-module partition MAC procespartitionering beleidsinstelling Modulenaam: mac_partition.ko Kernelinstelling: options MAC_PARTITION Opstartoptie: mac_partition_load="YES" Het beleid &man.mac.partition.4; plaatst processen in specifieke partities gebaseerd op hun MAC-label. Zie dit als een speciaal soort &man.jail.8;, hoewel dit nauwelijks een waardige vergelijking is. Dit is één module die aan het bestand &man.loader.conf.5; dient te worden toegevoegd zodat het het beleid tijdens het opstartproces laadt en aanzet. De meeste configuratie van dit beleid wordt gedaan met het gereedschap &man.setpmac.8;, wat hieronder zal worden uitgelegd. De volgende sysctl-tunable is beschikbaar voor dit beleid: security.mac.partition.enabled zet het afdwingen van MAC-procespartities aan. Wanneer dit beleid aanstaat, mogen gebruikers alleen hun eigen processen zien, en elke andere in hun partitie, maar mogen niet met gereedschappen buiten deze partitie werken. Bijvoorbeeld, een gebruiker in de klasse insecure heeft geen toegang tot het commando top noch tot vele andere commando's die een proces moeten draaien. Gebruik het gereedschap setpmac om gereedschappen in te stellen of ze in een partitielabel te plaatsen: &prompt.root; setpmac partition/13 top Dit zal het commando top toevoegen aan het label dat voor gebruikers in de klasse insecure gebruikt wordt. Merk op dat alle processen gestart door gebruikers in de klasse insecure in het label partition/13 zullen blijven. Voorbeelden Het volgende commando laat de partitielabel en de proceslijst zien: &prompt.root; ps Zax Het volgende commando staat toe om het procespartitielabel van een andere gebruiker en de momenteel draaiende processen van die gebruiker te zien: &prompt.root; ps -ZU trhodes Gebruikers kunnen processen in het label van root zien tenzij het beleid &man.mac.seeotheruids.4; is geladen. Een echte vakmansimplementatie zou alle diensten in /etc/rc.conf uitzetten en deze door een script met de juiste labeling laten starten. De volgende beleiden ondersteunen integerinstellingen in plaats van de drie standaardlabels die aangeboden worden. Deze opties, inclusief hun beperkingen, worden verder uitgelegd in de handleidingpagina's van de modules. MAC-module Multi-Level Security MAC meerlaagse beveiliging beleidsinstelling Modulenaam: mac_mls.ko Kernelinstelling: options MAC_MLS Opstartoptie: mac_mls_load="YES" Het beleid &man.mac.mls.4; beheert toegang tussen subjecten en objecten in het systeem door een strikt beleid voor informatiestromen af te dwingen. In MLS-omgevingen wordt een toestemming-niveau ingesteld in het label van elk subject of object, samen met compartimenten. Aangezien deze toestemmings- of zinnigheidsniveaus getallen groter dan zesduizend kunnen bereiken; zou het voor elke systeembeheerder een afschrikwekkende taak zijn om elk subject of object grondig te configureren. Gelukkig worden er al drie kant-en-klare bij dit beleid geleverd. Deze labels zijn mls/low, mls/equal en mls/high. Aangezien deze labels uitgebreid in de handleidingpagina worden beschreven, worden ze hier slechts kort beschreven: Het label mls/low bevat een lage configuratie welke het toestaat om door alle andere objecten te worden gedomineerd. Alles dat met mls/low is gelabeld heeft een laag toestemmingsniveau en heeft geen toegang tot informatie van een hoger niveau. Ook voorkomt dit label dat objecten van een hoger toestemmingsniveau informatie naar hen schrijven of aan hen doorgeven. Het label mls/equal dient geplaatst te worden op objecten die geacht te zijn uitgesloten van het beleid. Het label mls/high is het hoogst mogelijke toestemmingsniveau. Objecten waaraan dit label is toegekend zijn dominant over alle andere objecten in het systeem; ze mogen echter geen informatie lekken naar objecten van een lagere klasse. MLS biedt: Een hiërarchisch beveiligingsniveau met een verzameling niet-hiërarchische categoriën; Vaste regels: niet naar boven lezen, niet naar beneden schrijven (een subject kan leestoegang hebben naar objecten op zijn eigen niveau of daaronder, maar niet daarboven. Evenzo kan een subject schrijftoegang hebben naar objecten op zijn eigen niveau of daarboven maar niet daaronder.); Geheimhouding (voorkomt ongeschikte openbaarmaking van gegevens); Een basis voor het ontwerp van systemen die gelijktijdig gegevens op verschillende gevoeligheidsniveaus behandelen (zonder informatie tussen geheim en vertrouwelijk te lekken). De volgende sysctl-tunables zijn beschikbaar voor de configuratie van speciale diensten en interfaces: security.mac.mls.enabled wordt gebruikt om het MLS-beleid in en uit te schakelen. security.mac.mls.ptys_equal labelt alle &man.pty.4;-apparaten als mls/equal wanneer ze worden aangemaakt. security.mac.mls.revocation_enabled wordt gebruikt om toegang tot objecten in te trekken nadat hun label in die van een lagere graad verandert. security.mac.mls.max_compartments wordt gebruikt om het maximaal aantal compartimentniveaus met objecten in te stellen; in feite het maximale compartimentnummer dat op een systeem is toegestaan. Het commando &man.setfmac.8; kan gebruikt worden om de MLS-labels te manipuleren. Gebruik het volgende commando om een label aan een object toe te kennen: &prompt.root; setfmac mls/5 test Gebruik het volgende commando om het MLS-label voor het bestand test te verkrijgen: &prompt.root; getfmac test Dit is een samenvatting van de mogelijkheden van het beleid MLS. Een andere manier is om een meesterbeleidsbestand in /etc aan te maken dat de MLS-informatie bevat en om dat bestand aan het commando setfmac te geven. Deze methode wordt uitgelegd nadat alle beleiden zijn behandeld. Verplichte Gevoeligheid plannen Met de beleidsmodule voor meerlaagse beveiliging plant een beheerder het beheren van gevoelige informatiestromen. Standaard zet het systeem met zijn natuur van lezen naar boven blokkeren en schrijven naar beneden blokkeren alles in een lage toestand. Alles is beschikbaar en een beheerder verandert dit langzaam tijdens de configuratiefase; waarbij de vertrouwelijkheid van de informatie toeneemt. Buiten de bovengenoemde drie basisopties voor labels, kan een beheerder gebruikers en groepen indelen als nodig om de informatiestroom tussen hun te blokkeren. Het is misschien gemakkelijker om naar de informatie te kijken in toestemmingsniveaus waarvoor bekende woorden bestaan, zoals Vertrouwelijk, Geheim en Strikt Geheim. Sommige beheerders zullen verschillende groepen aanmaken gebaseerd op verschillende projecten. Ongeacht de classificatiemethode moet er een goed overwogen plan bestaan voordat zo'n berperkend beleid wordt geïmplementeerd. Wat voorbeeldsituaties voor deze beveiligingsbeleidsmodule kunnen een e-commerce webserver, een bestandsserver die kritieke bedrijfsinformatie, en omgevingen van financiële instellingen zijn. De meest onwaarschijnlijke plaats zou een persoonlijk werkstation met slechts twee of drie gebruikers zijn. MAC-module Biba MAC Biba integriteit beleidsinstelling Modulenaam: mac_biba.ko Kernelinstelling: options MAC_BIBA Opstartoptie: mac_biba_load="YES" De module &man.mac.biba.4; laadt het beleid MAC Biba. Dit beleid werkt vaak zoals dat van MLS behalve dat de regels voor de informatiestroom lichtelijk zijn omgedraaid. Dit is gezegd om de neerwaartse stroom van gevoelige informatie te voorkomen terwijl het beleid MLS de opwaartse stroom van gevoelige informatie voorkomt; veel van deze sectie is dus op beide beleiden toepasbaar. In Biba-omgevingen wordt een integriteits-label op elk subject of object ingesteld. Deze labels bestaan uit hiërarchische graden, en niet-hiërarchische componenten. Een graad van een object of subject stijgt samen met de integriteit. Ondersteunde labels zijn biba/low, biba/equal, en biba/high; zoals hieronder uitgelegd: Het label biba/low wordt gezien als de laagste integriteit die een object of subject kan hebben. Dit instellen op objecten of subjecten zal hun schrijftoegang tot objecten of subjecten die als hoog zijn gemarkeerd blokkeren. Ze hebben echter nog steeds leestoegang. Het label biba/equal dient alleen geplaatst te worden op objecten die geacht te zijn uitgesloten van het beleid. Het label biba/high staat schrijven naar objecten met een lager label toe maar sluit het lezen van dat object uit. Het wordt aangeraden om dit label te plaatsen op objecten die de integriteit van het gehele systeem beïnvloeden. Biba biedt: Hiërarchische integriteitsniveaus met een verzameling niet-hiërarchische integriteitscategoriën; Vaste regels: niet naar boven schrijven, niet naar beneden lezen (tegenovergestelde van MLS). Een subject kan schrijftoegang hebben naar objecten op hetzelfde niveau of daaronder, maar niet daarboven. Evenzo kan een subject leestoegang naar objecten op hetzelfde niveau of daarboven hebben, maar niet daaronder; Integriteit (voorkomt oneigenlijk wijzigen van gegevens); Integriteitsniveaus (in plaats van de gevoeligheidsniveaus van MLS) De volgende sysctl-tunables kunnen gebruikt worden om het Biba-beleid te manipuleren. security.mac.biba.enabled kan gebruikt worden om het afdwingen van het Biba-beleid op de doelmachine aan en uit te zetten. security.mac.biba.ptys_equal kan gebruikt worden om het Biba-beleid op &man.pty.4;-apparaten uit te zetten. security.mac.biba.revocation_enabled dwingt het herroepen van toegang tot objecten af als het label is veranderd om het subject te domineren. Gebruik de commando's setfmac en getfmac om de instellingen van het Biba-beleid op systeemobjecten te benaderen: &prompt.root; setfmac biba/low test &prompt.root; getfmac test test: biba/low Verplichte Integriteit plannen Integriteit, anders dan gevoeligheid, garandeert dat de informatie nooit door onvertrouwde gebruikers zal worden gemanipuleerd. Dit geldt ook voor informatie die tussen subjecten, objecten, of beiden wordt doorgegeven. Het verzekert dat gebruikers alleen de informatie kunnen wijzigen en in sommige gevallen zelfs benaderen die ze expliciet nodig hebben. De beveiligingsbeleidsmodule &man.mac.biba.4; staat een beheerder in staat om te bepalen welke bestanden en programma's een gebruiker of gebruikers mogen zien en draaien terwijl het verzekert dat de programma's en bestanden vrij zijn van dreigingen en vertrouwt zijn door het systeem voor die gebruiker of groep van gebruikers. Tijdens de initiële planningsfase moet een beheerder bereid zijn om gebruikers in gradaties, niveaus, en gebieden in te delen. Gebruikers zal toegang tot niet alleen gegevens maar ook tot programma's en hulpmiddelen ontzegt worden zowel voordat en nadat ze beginnen. Het systeem zal standaard een hoog label instellen nadat deze beleidsmodule is ingeschakeld, en het is aan de beheerder om de verschillende gradaties en niveaus voor gebruikers in te stellen. In plaats van toestemmingsniveaus zoals boven beschreven te gebruiken, kan een goede planningsmethode onderwerpen bevatten. Bijvoorbeeld, geef alleen ontwikkelaars veranderingstoegang tot het broncoderepository, de broncodecompiler, en andere ontwikkelgereedschappen. Andere gebruikers zouden in andere groepen zoals testers, ontwerpers, of gewone gebruikers worden ingedeeld en zouden alleen leestoegang hebben. Met zijn natuurlijke beveiligingsbeheer kan een subject van lagere integriteit niet schijven naar een subject van hogere integriteit; een subject van hogere integriteit kan geen subject van lagere integriteit observeren of lezen. Een label op de laagst mogelijke graad instellen kan het ontoegankelijk voor subjecten maken. Sommige succesvolle omgevingen voor deze beveiligingsbeheermodule zijn een beperkte webserver, een ontwikkel- en testmachine, en broncoderepositories. Minder nuttige implementaties zouden een persoonlijk werkstation, een machine gebruikt als router, of een netwerkfirewall zijn. MAC-module LOMAC MAC LOMAC Modulenaam: mac_lomac.ko Kernelinstelling: options MAC_LOMAC Opstartoptie: mac_lomac_load="YES" In tegenstelling tot het beleid MAC Biba, staat het beleid &man.mac.lomac.4; toegang tot objecten van lagere integriteit slechts toe nadat het integriteitsniveau is verlaagt om de integriteitsregels niet te verstoren. De MAC-versie van het laagwatermarkeringsintegreitsbeleid, niet te verwarren met de oudere implementatie van &man.lomac.4;, werkt bijna hetzelfde als Biba maar met de uitzondering dat er drijvende labels worden gebruikt om subjectdegradatie via een hulpcompartiment met graden te ondersteunen. Dit tweede compartiment heeft de vorm [hulpgraad]. Wanneer een lomac-beleid met een hulpgraad wordt toegekend, dient het er ongeveer uit te zien als: lomac/10[2] waar het getal twee (2) de hulpgraad is. Het beleid MAC LOMAC berust op het overal labelen van alle systeemobjecten met integriteitslabels, waardoor subjecten wordt toegestaan om te lezen van objecten van lage integriteit en om daarna het label op subject te degraderen om toekomstig schrijven naar objecten van hoge integriteit te voorkomen. Dit is de hierboven besproken optie [hulpgraad], dus biedt het beleid grotere compatibiliteit en vereist het minder initiële configuratie dan Biba. Voorbeelden Net zoals bij de beleiden Biba en MLS kunnen de commando's setfmac en setpmac gebruikt worden om labels op systeemobjecten te plaatsen: &prompt.root; setfmac /usr/home/trhodes lomac/high[low] &prompt.root; getfmac /usr/home/trhodes lomac/high[low] Merk op dat de hulpgraad hier low is, dit is een mogelijkheid die alleen door het beleid MAC LOMAC wordt geboden. Nagios in een MAC-jail Nagios in een MAC-jail De volgende demonstratie zal een veilige omgeving implementeren door verschillende MAC-modules te gebruiken met juist ingestelde beleiden. Dit is slechts een test en dient niet gezien te worden als het volledige antwoord op de beveiligingszorgen van iedereen. Gewoon een beleid implementeren en het verder negeren werkt nooit en kan rampzalig zijn in een productieomgeving. Voordat met dit proces wordt begonnen, moet de optie multilabel zijn geactiveerd op elk bestandssysteem zoals vermeld aan het begin van dit hoofdstuk. Nalatigheid zal in fouten resulteren. Zorg er ook voor dat de ports net-mgmt/nagios-plugins, net-mgmt/nagios, en www/apache22 allemaal geïnstalleerde en geconfigureerd zijn en correct werken. Gebruikersklasse <literal>insecure</literal> maken Begin de procedure door de volgende gebruikersklasse toe te voegen aan het bestand /etc/login.conf: insecure:\ :copyright=/etc/COPYRIGHT:\ :welcome=/etc/motd:\ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\ :path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin :manpath=/usr/share/man /usr/local/man:\ :nologin=/usr/sbin/nologin:\ :cputime=1h30m:\ :datasize=8M:\ :vmemoryuse=100M:\ :stacksize=2M:\ :memorylocked=4M:\ :memoryuse=8M:\ :filesize=8M:\ :coredumpsize=8M:\ :openfiles=24:\ :maxproc=32:\ :priority=0:\ :requirehome:\ :passwordtime=91d:\ :umask=022:\ :ignoretime@:\ :label=biba/10(10-10): Voeg de volgende regel toe aan de standaard gebruikersklasse: :label=biba/high: Wanneer dit voltooid is, moet het volgende commando gedraaid worden om de database te herbouwen: &prompt.root; cap_mkdb /etc/login.conf Opstartinstellingen Start nog niet opnieuw op, voeg alleen de volgende regels toe aan /boot/loader.conf zodat de benodigde modules worden geladen tijdens systeeminitialisatie: mac_biba_load="YES" mac_seeotheruids_load="YES" Gebruikers instellen Stel de gebruiker root in op de standaardklasse met: &prompt.root; pw usermod root -L default Alle gebruikersaccounts die geen root of systeemgebruikers zijn hebben nu een aanmeldklasse nodig. De aanmeldklasse is nodig om te voorkomen dat gebruikers geen toegang hebben tot gewone commando's als &man.vi.1;. Het volgende sh-script zou moeten werken: &prompt.root; for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \ /etc/passwd`; do pw usermod $x -L default; done; Laat de gebruikers nagios en www in de klasse insecure vallen: &prompt.root; pw usermod nagios -L insecure &prompt.root; pw usermod www -L insecure Het contextbestand aanmaken Nu dient een contextbestand aangemaakt te worden; het volgende voorbeeld dient geplaatst te worden in /etc/policy.contexts. # Dit is het standaard-BIBA-beleid voor dit systeem. # Systeem: /var/run biba/equal /var/run/* biba/equal /dev biba/equal /dev/* biba/equal /var biba/equal /var/spool biba/equal /var/spool/* biba/equal /var/log biba/equal /var/log/* biba/equal /tmp biba/equal /tmp/* biba/equal /var/tmp biba/equal /var/tmp/* biba/equal /var/spool/mqueue biba/equal /var/spool/clientmqueue biba/equal #Voor Nagios: /usr/local/etc/nagios /usr/local/etc/nagios/* biba/10 /var/spool/nagios biba/10 /var/spool/nagios/* biba/10 #Voor Apache: /usr/local/etc/apache biba/10 /usr/local/etc/apache/* biba/10 Dit beleid zal beveiliging afdwingen door beperkingen aan de informatiestroom te stellen. In deze specifieke configuratie mogen gebruikers, inclusief root, nooit toegang hebben tot Nagios. Instellingenbestanden en processen die deel zijn van Nagios zullen geheel in zichzelf of in een jail zitten. Dit bestand kan nu in ons systeem worden gelezen door ons systeem door het volgende commando uit te voeren: &prompt.root; setfsmac -ef /etc/policy.contexts / &prompt.root; setfsmac -ef /etc/policy.contexts / De bovenstaande indeling van het bestandssysteem kan afhankelijk van de omgeving verschillen; het moet echter op elk bestandssysteem gedraaid worden. Het bestand /etc/mac.conf dient als volgt in de hoofdsectie gewijzigd te worden: default_labels file ?biba default_labels ifnet ?biba default_labels process ?biba default_labels socket ?biba Het netwerk activeren Voeg de volgende regel toe aan /boot/loader.conf: security.mac.biba.trust_all_interfaces=1 En voeg het volgende toe aan de instellingen van de netwerkkaart opgeslagen in rc.conf. Als de primaire Internetconfiguratie via DHCP wordt gedaan, kan het nodig zijn om dit handmatig te configureren telkens nadat het systeem is opgestart: maclabel biba/equal De configuratie testen MAC-configuratie testen Controleer dat de webserver en Nagios niet tijdens de systeeminitialisatie worden gestart, en start opnieuw op. Controleer dat de gebruiker root geen enkel bestand in de instellingenmap van Nagios kan benaderen. Als root het commando &man.ls.1; op /var/spool/nagios kan uitvoeren, is er iets verkeerd. Anders zou er een fout Permission denied teruggegeven moeten worden. Als alles er goed uitziet, kunnen Nagios, Apache, en Sendmail nu gestart worden op een manier die past in het beveiligingsbeleid. De volgende commando's zorgen hiervoor: &prompt.root; cd /etc/mail &↦ make stop && \ setpmac biba/equal make start && setpmac biba/10\(10-10\) apachectl start && \ setpmac biba/10\(10-10\) /usr/local/etc/rc.d/nagios.sh forcestart Controleer nogmaals om er zeker van te zijn dat alles juist werkt. Indien niet, controleer dan de logbestanden of de foutmeldingen. Gebruik het hulpprogramma &man.sysctl.8; om de beveiligingsbeleidsmodule &man.mac.biba.4; uit te schakelen en probeer om alles opnieuw op te starten, zoals gewoonlijk. De gebruiker root kan zonder angst de afgedwongen beveiliging veranderen en de instellingenbestanden bewerken. Het volgende commando staat toe om het beveiligingsbeleid naar een lagere graad te degraderen voor een nieuw voortgebrachte shell: &prompt.root; setpmac biba/10 csh Om te voorkomen dat dit gebeurt, kan de gebruiker via &man.login.conf.5; in een bereik worden gedwongen. Als &man.setpmac.8; probeert om een commando buiten het bereik van het compartiment te draaien, zal er een fout worden teruggegeven en wordt het commando niet uitgevoerd. Zet in dit geval root op biba/high(high-high). Gebruikers afsluiten Dit voorbeeld gaat over een relatief klein opslagsysteem met minder dan vijftig gebruikers. Gebruikers kunnen zich aanmelden, en mogen zowel gegevens opslaan als bronnen benaderen. Voor dit scenario kunnen &man.mac.bsdextended.4; gecombineerd met &man.mac.seeotheruids.4; naast elkaar bestaan en zowel toegang tot systeemobjecten als tot gebruikersprocessen ontzeggen. Begin door de volgende regel aan /boot/loader.conf toe te voegen: mac_seeotheruids_load="YES" Het beveiligingsbeleidsmodule &man.mac.bsdextended.4; kan door volgende variabele in rc.conf geactiveerd worden: ugidfw_enable="YES" De standaardregels in /etc/rc.bsdextended zullen tijdens de systeeminitialisatie worden geladen; het kan echter nodig zijn om de standaardregels te wijzigen. Aangezien van deze machine alleen verwacht wordt dat het gebruikers bedient, kunnen alle regels uitgecommentarieerd blijven behalve de laatste twee. Deze forceren het standaard laden van systeemobjecten die eigendom zijn van gebruikers. Voeg de benodigde gebruikers toe aan deze machine en start opnieuw op. Probeer, voor testdoeleinden, u aan te melden als een andere gebruiker over twee consoles. Draai het commando ps aux om te zien of processen van andere gebruikers zichtbaar zijn. Probeer om &man.ls.1; te draaien op de thuismap van een andere gebruiker, dit zou moeten mislukken. Probeer niet te testen met de gebruiker root tenzij de specifieke sysctl's om supergebruikertoegang te blokkeren zijn aangepast. Wanneer een nieuwe gebruiker is toegevoegd, zit de &man.mac.bsdextended.4;-regel van die gebruiker niet in de lijst van regelverzamelingen. Om de regelverzameling snel bij te werken, kan simpelweg de beveiligingsbeleidsmodule worden herladen met de gereedschappen &man.kldunload.8; en &man.kldload.8;. Problemen oplossen met het MAC-raamwerk MAC-problemen oplossen Tijdens de ontwikkeling hebben een aantal gebruikers problemen aangegeven met normale instellingen. Hieronder worden een aantal van die problemen beschreven: De optie <option>multilabel</option> kan niet ingeschakeld worden op <filename>/</filename> De vlag blijft niet ingeschakeld op de rootpartitie (/)! Het lijkt er inderdaad op dat een paar procent van de gebruikers dit probleem heeft. Nadere analyse van het probleem doet vermoeden dat deze zogenaamde bug het resultaat is van òfwel onjuiste documentatie òfwel verkeerde interpretatie van de documentatie. Hoe het probleem ook is ontstaan, met de volgende stappen is het te verhelpen: Wijzig /etc/fstab en stel de rootpartitie in op voor alleen-lezen. Herstart in enkele-gebruikersmodus. Draai tunefs op /. Herstart in normale modus. Draai mount / en wijzig terug in in /etc/fstab en start het systeem opnieuw. Controleer de uitvoer van mount om zeker te zijn dat juist is ingesteld op het rootbestandssysteem. X11-server start niet na <acronym>MAC</acronym> Na het instellen van een beveiligde omgeving met MAC start X niet meer! Dit kan komen door de MAC-beleidseenheid partition of door een verkeerde labeling van een van de MAC-labeling beleidseenheden. Probeer als volgt te debuggen: Controleer de foutmelding. Als de gebruiker in de klasse insecure zit, kan de beleidseenheid partition het probleem zijn. Zet de klasse voor de gebruiker terug naar de klasse default en herbouw de database met het commando cap_mkdb. Ga naar stap twee als hiermee het probleem niet is opgelost. Controleer de labelbeleidseenheden nog een keer. Stel zeker dat het beleid voor de bewuste gebruiker, de X11-applicatie, en de onderdelen van /dev juist zijn ingesteld. Als geen van beide methodes het probleem oplossen, stuur dan de foutmelding en een beschrijving van de omgeving naar de TrustedBSD-discussielijsten van de TrustedBSD website of naar de &a.questions; mailinglijst. Error: &man..secure.path.3; cannot stat <filename>.login_conf</filename> Bij het wisselen van de gebruiker root naar een andere gebruiker in het systeem, verschijnt de foutmelding _secure_path: unable to state .login_conf. Deze melding komt meestal voor als de gebruiker een hogere labelinstelling heeft dan de gebruiker waarnaar wordt gewisseld. Als bijvoorbeeld gebruiker joe een standaardlabel heeft, dan kan gebruiker root, die een label heeft, de thuismap van joe niet zien. Dit gebeurt zonder rekening te houden met de mogelijkheid dat root met su de identiteit van joe heeft aangenomen. In dit scenario staat het integriteitsmodel van Biba niet toe dat root objecten kan zien van een lager integriteitsniveau. De gebruikersnaam <username>root</username> is stuk! In normale, of zelfs in enkelegebruikersmodus, wordt root niet herkend. Het commando whoami geeft 0 (nul) terug en su heeft als resultaat who are you?. Wat is er aan de hand? Dit kan gebeuren als een labelbeleid is uitgeschakeld, òfwel door &man.sysctl.8; òf doordat de beleidsmodule niet meer is geladen. Als de beleidseenheid (tijdelijk) is uitgeschakeld dan moet de database met aanmeldmogelijkheden opnieuw worden ingesteld, waarbij de optie wordt verwijderd. Er dient voor te worden zorggedragen dat het bestand login.conf wordt ontdaan van alle opties met , waarna de database opnieuw gebouwd kan worden met cap_mkdb. Dit kan ook gebeuren als een beleid toegang verhinderd tot het bestand of de database master.passwd. Meestal wordt dit veroorzaakt door een beheerder die het bestand veranderd onder een label welke conflicteert met het globale beleid dat gebruikt wordt op het systeem. In deze gevallen wordt de gebruikersinformatie gelezen door het systeem en wordt de toegang geblokkeerd omdat het bestand het nieuwe label erft. Zet het beleid uit door middel van &man.sysctl.8; en alles zou weer normaal moeten zijn. Index: translations/nl_NL.ISO8859-1/books/handbook/mail/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/mail/chapter.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/mail/chapter.xml (revision 40367) @@ -1,2307 +1,2303 @@ 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. BIND Traditioneel werd dit door BSD 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. + 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: + Als een goede tussenoplossing kan deze regel: - search foo.bar.edu bar.edu + search foo.bar.edu bar.edu - in plaats van het voorgaande: + in plaats van het voorgaande: - domain foo.bar.edu + domain foo.bar.edu - in /etc/resolv.conf geplaatst worden. + 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. + dan de grens tussen lokale en publieke regelgeving, + zoals RFC 1535 het noemt. - MX-regel - 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. - PPP - 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. UUCP MX-regel Er zijn minstens twee manieren om dit te doen. Eén manier is om UUCP te gebruiken. Een andere manier is ervoor te zorgen dat een server die altijd met het Internet verbonden is secundaire MX-diensten 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 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; /usr/local/etc/rc.d/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} } Index: translations/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml (revision 40367) @@ -1,6179 +1,6181 @@ 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; /etc/rc.d/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; /etc/rc.d/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; /etc/rc.d/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; /etc/rc.d/lockd start &prompt.root; /etc/rc.d/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 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 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ë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; /etc/rc.d/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; /etc/rc.d/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 –username aan het einde van /etc/master.passwd op de cliënt machine toegevoegd te worden, waar username de gebruikersnaam van de gebruiker die niet mag aanmelden is. 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 aan te kunnen laten aanmelden op 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 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. Gebruikersna(a)m(en) 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 Machinena(a)m(en) 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 na(a)m(en) van de host(s) 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; /usr/local/etc/rc.d/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; /etc/rc.d/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 voorbeeld.net in - plaats van voorbeeld.com. Het enige + 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 voorbeeld.com zoals beschreven in de + role="domainname">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 voorbeeld.com te genereren: + role="domainname">example.com te genereren: - &prompt.user; dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE voorbeeld.com + &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 voorbeeld.com + &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 - Kvoorbeeld.com.+005+nnnnn.key (publiek) en - Kvoorbeeld.com.+005+nnnnn.private (privaat). Het + 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 Kvoorbeeld.com.+005+nnnnn.key Kvoorbeeld.com.+005+nnnn.KSK.key -&prompt.user; mv Kvoorbeeld.com.+005+nnnnn.private Kvoorbeeld.com.+005+nnnnn.KSK.private + &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 Kvoorbeeld.com.+005+nnnnn.KSK.key ; KSK -$include Kvoorbeeld.com.+005+nnnnn.ZSK.key ; ZSK + $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 voorbeeld.com, dat zich in - voorbeeld.com.db bevindt, zou er ongeveer zo + role="domainname">example.com, dat zich in + example.com.db bevindt, zou er ongeveer zo uit moeten zien: - &prompt.user; dnssec-signzone -o voorbeeld.com -k Kvoorbeeld.com.+005+nnnnn.KSK voorbeeld.com.db Kvoorbeeld.com.+005+nnnnn.ZSK.key + &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 - voorbeeld.com.db.signed. De example.com.db.signed. De DS-records worden ook naar een - apart bestand dsset-voorbeeld.com geschreven. Om + apart bestand dsset-example.com geschreven. Om deze ondertekende zone te gebruiken hoeft alleen de zone-directief in named.conf veranderd te worden om - voorbeeld.com.db.signed. Standaard zijn de + 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 voorbeeld.com, het volgende aan + role="domainname">example.com, het volgende aan named.conf toe: - zone voorbeeld.com { + zone example.com { type master; key-directory "/etc/named/keys"; update-policy local; auto-dnssec maintain; - file "/etc/named/dynamic/voorbeeld.com.zone"; + 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.8; &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 de map /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; /usr/local/etc/rc.d/apache22 configtest &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 dezelfde &man.rc.8;- en &man.service.8;-mechanismen: &prompt.root; /usr/local/etc/rc.d/apache22 start &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; /etc/rc.d/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 voor de - volgende regel uit /etc/inetd.conf het - commentaarkarakter verwijderd te worden voordat + 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 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; /usr/local/etc/rc.d/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; /usr/local/etc/rc.d/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; /etc/rc.d/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; /etc/rc.d/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; /etc/rc.d/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; /etc/rc.d/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. Index: translations/nl_NL.ISO8859-1/books/handbook/virtualization/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/virtualization/chapter.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/books/handbook/virtualization/chapter.xml (revision 40367) @@ -1,1300 +1,1310 @@ Murray Stokely Bijgedragen door René Ladan Vertaald door Virtualisatie Overzicht Virtualisatiesoftware maakt het mogelijk om meerdere besturingssystemen gelijktijdig op dezelfde computer te draaien. Zulke softwaresystemen voor PC's gebruiken vaak een gastheer-besturingssysteem dat de virtualisatiesoftware draait en dat elk aantal gast-besturingssystemen ondersteunt. Aan het einde van dit hoofdstuk weet de lezer: Het verschil tussen een gastheer-besturingssysteem en een gast-besturingssysteem. Hoe &os; op een &intel;-gebaseerde &apple; &macintosh; computer te installeren. Hoe &os; op µsoft.windows; te installeren met Virtual PC. Hoe een &os;-systeem in te stellen voor de beste prestaties tijdens virtualisatie. Voor het lezen van dit hoofdstuk, dient de lezer: De beginselen van &unix; en &os; () te begrijpen. Te weten hoe &os; te installeren (). Te weten hoe een netwerkverbinding te installeren (). Te weten hoe aanvullende software van derde partijen te installeren (). &os; als een gast-besturingssysteem Parallels op &macos; Parallels Desktop voor &macos; is een commercieel softwareprodukt voor &intel;-gebaseerde &apple; &mac; computers die &macos; 10.4.6 of nieuwer draaien. &os; is een volledig ondersteund gast-besturingssysteem. Nadat Parallels is geïnstalleerd op &macos; X dient de gebruiker een virtuele machine in te stellen en daarna het gewenste gast-besturingssysteem te installeren. &os; installeren op Parallels/&macos; X De eerste stap in het installeren van &os; op &macos; X Parallels is het aanmaken van een nieuwe virtuele machine voor het installeren van &os;. Selecteer &os; als het Guest OS Type wanneer dit gevraagd wordt: Kies verder een hoeveelheid aan schijf- en geheugenruimte afhankelijk van de plannen voor deze virtuele instantie van &os;. 4GB aan schijfruimte en 512MB aan RAM werken goed voor de meeste gebruikers van &os; onder Parallels: Selecteer het type netwerk en een netwerkinterface: Bewaar de instellingen en sluit af: Nadat de virtuele &os;-machine is aangemaakt, dient er &os; op geïnstalleerd te worden. Dit gaat het beste met een officiële &os; CDROM of met een ISO-beeld dat is gedownload van een officiële FTP-site. Wanneer het juiste ISO-beeld op het plaatselijke &mac;-bestandssysteem of een CDROM in de CD-drive van de &mac; aanwezig is, dient op het schijfikoon in de rechteronderhoek van het &os; Parallels-scherm geklikt te worden. Dit zal een scherm tonen dat het mogelijk maakt om de CDROM-drive in de virtuele machine te associëren met een ISO-bestand op schijf of met een echte CDROM-drive. Nadat deze associatie met de CDROM-bron is gemaakt, dient de virtuele &os;-machine herstart te worden door op het herstart-icoon te klikken. Parallels zal herstarten met een speciale BIOS dat eerst controleert of er een CDROM aanwezig is, net zoals een normale BIOS zou doen. In dit geval zal het de installatiemedia van &os; vinden en een normale installatie gebaseerd op sysinstall beginnen zoals beschreven in . X11 kan nu geïnstalleerd, maar nog niet ingesteld, worden. Nadat de installatie is voltooid, kan naar de nieuw geïnstalleerde virtuele &os;-machine herstart worden. &os; instellen op &macos; X/Parallels Nadat &os; succesvol op &macos; X met Parallels is geïnstalleerd, zijn er een aantal instellingen die gewijzigd kunnen worden om het systeem voor virtuele werking te optimaliseren. De variabelen voor de bootloader instellen De belangrijkste stap is om de tunable te verlagen om het CPU-gebruik van &os; onder de Parallels-omgeving te verminderen. Dit kan bereikt worden door de volgende regel aan /boot/loader.conf toe te voegen: kern.hz=100 Zonder deze instelling zal een rustend &os; Parallels gast-besturingssysteem ongeveer 15% van de CPU van een enkele &imac;-processor gebruiken. Na deze wijziging zal het gebruik slechts ongeveer 5% zijn. Een nieuw instellingenbestand voor de kernel aanmaken Alle stuurprogramma's voor SCSI, FireWire, en USB kunnen verwijderd worden. Parallels biedt een virtuele netwerkadapter die door het stuurpogramma &man.ed.4; wordt gebruikt, dus kunnen alle andere netwerkapparaten behalve &man.ed.4; en &man.miibus.4; uit de kernel verwijderd worden. Het netwerk instellen De eenvoudigste netwerkinstallatie omvat het gebruik van DHCP om de virtuele machine met hetzelfde LAN te verbinden als het &mac;-gastheer. Dit kan bereikt worden door ifconfig_ed0="DHCP" aan /etc/rc.conf toe te voegen. Meer geavanceerde netwerkinstallaties staan beschreven in . Virtual PC op &windows; Virtual PC voor &windows; is een softwareprodukt van µsoft; dat gratis gedownload kan worden . Zie systeemeisen. Nadat Virtual PC is geïnstalleerd op µsoft.windows;, dient de gebruiker een virtuele machine in te stellen en daarna het gewenste gast-besturingssysteem te installeren. &os; installeren op Virtual PC/µsoft.windows; De eerste stap in het installeren van &os; op µsoft.windows;/Virtual PC is het aanmaken van een nieuwe virtuele machine voor het installeren van &os;. Kies Create a virtual machine wanneer daarom wordt gevraagd: Selecteer Other als het Operating system wanneer dat gevraagd wordt: Kies vervolgens een gepaste hoeveelheid aan schijf- en geheugenruimte afhankelijk van de plannen voor deze virtuele instantie van &os;. 4GB aan schijfruimte en 512MB aan RAM werken goed voor de meeste gebruikers van &os; onder Virtual PC: Bewaar de instellingen en sluit ze af: Selecteer de virtuele &os;-machine en klik op Settings, stel daarna het type netwerk en een netwerkinterface in: Nadat de virtuele &os;-machine is aangemaakt, dient &os; erop geïnstalleerd te worden. Dit gaat het beste met een officiële &os;-CDROM of met een ISO-beeld dat van een officiële FTP-site is gedownload. Wanneer het juiste ISO-beeld op het lokale bestandssysteem van &windows; staat of er een CDROM in de CD-drive zit, dubbelklik dan op de virtuele &os;-machine om op te starten. Klik daarna op CD en kies Capture ISO Image... in het venster van Virtual PC . Dit toont een scherm dat het mogelijk maakt om de CDROM-drive in de virtuele machine te associëren met een ISO-bestand op schijf of met een echte CDROM-drive. Start, nadat deze associatie met de CDROM-bron is gemaakt, de virtuele &os;-machine opnieuw op zoals gewoonlijk door op Action en Reset te klikken. Virtual PC zal herstarten met een speciale BIOS dat eerst controleert of er een CDROM aanwezig is, net zoals eeen normale BIOS dat zou doen. In dit geval zal het de installatiemedia van &os; vinden en een normale installatie gebaseerd op sysinstall beginnen zoals beschreven in . X11 kan nu geïnstalleerd, maar nog niet ingesteld, worden. Denk eraan om de CDROM of het ISO-beeld te verwijderen nadat de installatie voltooid is. Start als laatste op naar de nieuw geïnstalleerde virtuele &os;-machine. &os; instellen op µsoft.windows;/Virtual PC Nadat &os; succesvol is geïnstalleerd op µsoft.windows; met Virtual PC zijn er een aantal instellingen die aangepast kunnen worden om het system te optimaliseren voor virtueel gebruik. De variabelen voor de bootloader instellen De belangrijkste stap is om de tunable te verlagen om zo het CPU-gebruik van &os; in de omgeving van Virtual PC te verminderen. Dit kan bereikt worden door de volgende regel aan /boot/loader.conf toe te voegen: kern.hz=100 Zonder deze instelling zal een &os; als gast-besturingssysteem voor Virtual PC in rust ongeveer 40% van de CPU van een computer met een enkele processor gebruiken. Na deze verandering zal het gebruik slechts rond de 3% liggen. Een nieuw instellingenbestand voor de kernel aanmaken Alle stuurprogramma's voor SCSI, FireWire, en USB kunnen verwijderd worden. Virtual PC beidt een virtuele netwerkadapter dat door het stuurprogramma &man.de.4; gebruikt wordt, dus kunnen alle netwerkapparaten behalve &man.de.4; en &man.miibus.4; uit de kernel verwijderd worden. Het netwerk instellen De eenvoudigste netwerkinstallatie omvat het gebruik van DHCP om de virtuele machine met het zelfde LAN te verbinden als de µsoft.windows;-gastheer. Dit kan bereikt worden door ifconfig_de0="DHCP" toe te voegen aan /etc/rc.conf. Geavanceerdere netwerkinstallaties staan beschreven in . VMware op &macos; VMware Fusion voor &mac; is een comercieel softwareprodukt beschikbaar voor op &intel; gebaseeerde &mac;-computers die &macos; 10.4.9 of nieuwer draaien. &os; is een volledig ondersteund gast-besturingssysteem. Nadat VMware Fusion is geïnstalleerd op &macos; X dient de gebruiker een virtuele machine in te stellen en daarna het gewenste gast-besturingssysteem te installeren. &os; installeren op VMware/&macos; X De eerste stap is om VMware Fusion te laden, de Virtual Machine Library zal geladen worden. Klik op "New" om de VM aan te maken: Dit laadt de New Virtual Machine Assistant dat helpt om de VM aan te maken, klik op Continue om verder te gaan: Selecteer Other als het Operating System en &os; of &os; 64-bit , afhankelijk van de wens voor ondersteuning voor 64-bit, als de Version wanneer dat gevraagd wordt: Kies de naam van het VM-beeld en de map waarin het bewaard dient te worden: Kies de grootte van de virtuele harde schijf voor de VM: Kies de manier om de VM te installeren, van een ISO-beeld of van een CD: Nadat op Finish is geklikt, zal de VM opstarten: Installeer &os; zoals gewoonlijk, of door de aanwijzingen in op te volgen: Nadat de installatie voltooid is kunnen de instellingen van de VM aangepast worden, zoals het geheugengebruik: De instellingen van de systeemhardware van de VM kunnen niet veranderd worden zolang de VM draait. Het aantal CPU's waartoe de VM toegang heeft: De status van het CD-ROM-apparaat. Gewoonlijk kan de CD-ROM of het ISO-beeld van de VM worden losgekoppeld wanneer het niet meer nodig is. Het laatste om te veranderen is de manier waarop de VM verbinding met het netwerk maakt. Indien verbindingen naar de VM van andere machines naast de gastheer gewenst zijn, dient Connect directly to the physical network (Bridged) gekozen te worden. In andere situaties is Share the host's internet connection (NAT) te verkiezen, zodat de VM toegang kan hebben tot het Internet, maar dat het netwerk geen toegang heeft tot de VM. Herstart de nieuw geïnstalleerde virtuele &os;-machine nadat alle instellingen zijn aangepast. &os; instellen op &macos; X/VMware Nadat &os; succesvol is geïnstalleerd op &macos; X met VMware, zijn er een aantal instellingen die gewijzigd kunnen worden op het systeem te optimaliseren voor virtueel gebruik. De variabelen voor de bootloader instellen De belangrijkste stap is het verlagen van de tunable om het CPU-gebruik van &os; in de omgeving van VMware te verminderen. Dit kan bereikt worden door de volgende regel aan /boot/loader.conf toe te voegen: kern.hz=100 Zonder deze instelling gebruikt &os; als VMware gast-besturingssysteem ongeveer 15% van de CPU van een enkele &imac;-processor. Na deze verandering zal het gebruik dichter bij 5% liggen. Een nieuw instellingenbestand voor de kernel aanmaken Alle stuurprogramma's voor FireWire en USB kunnen verwijderd worden. VMware biedt een virtuele netwerkadapter dat door het stuurpogramma &man.em.4; gebruikt wordt, dus alle netwerkapparaten behalve &man.em.4; kunnen uit de kernel verwijderd worden. Het netwerk instellen De eenvoudigste netwerkinstallatie omvat het gebruik van DHCP om de virtuele machine met hetzelfde LAN te verbinden als de &mac;-gastheer. Dit kan bereikt worden door ifconfig_em0="DHCP" toe te voegen aan /etc/rc.conf. Geavanceerdere netwerkinstallaties staan beschreven in . &virtualbox; gasttoevoegingen op een &os;-gast De gasttoevoegingen van &virtualbox; bieden ondersteuning voor: Het delen van het prikbord Integratie van de muiscursor Synchronisatie met de tijd van de gastheer Het schalen van vensters Naadloze modus De volgende commando's worden gedraaid in de &os;-gast. Installeer ten eerste het pakket emulators/virtualbox-ose-additions in de &os;-gast. &prompt.root; cd /usr/ports/emulators/virtualbox-ose-additions && make install clean Voeg deze regels toe aan /etc/rc.conf: vboxguest_enable="YES" vboxservice_enable="YES" Als &man.ntpd.8; of &man.ntpdate.8; gebruikt, dient de synchronisatie met de tijd van de gastheer te worden uitgeschakeld: vboxservice_flags="--disable-timesync" De vboxvideo_drv zou herkend moeten worden door Xorg -configure. Als dit niet zo is, dient xorg.conf gewijzigd te worden voor de videokaart van &virtualbox;: Section "Device" ### Available Driver options are:- ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" ### [arg]: arg optional Identifier "Card0" Driver "vboxvideo" VendorName "InnoTek Systemberatung GmbH" BoardName "VirtualBox Graphics Adapter" BusID "PCI:0:2:0" EndSection Pas het gedeelte over de muis in xorg.conf aan om vboxmouse_drv te gebruiken: Section "InputDevice" Identifier "Mouse0" Driver "vboxmouse" EndSection Gebruikers van HAL dienen dit bestand aan te maken als /usr/local/etc/hal/fdi/policy/90-vboxguest.fdi of het te kopiëren van /usr/local/hal/fdi/policy/10osvendor/90-vboxguest.fdi: <?xml version="1.0" encoding="utf-8"?> <!-- # Sun VirtualBox # Hal driver description for the vboxmouse driver # $Id$ Copyright (C) 2008-2009 Sun Microsystems, Inc. This file is part of VirtualBox Open Source Edition (OSE, as available from http://www.virtualbox.org. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation, in version 2 as it comes in the "COPYING" file of the VirtualBox OSE distribution. VirtualBox OSE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, CA 95054 USA or visit http://www.sun.com if you need additional information or have any questions. --> <deviceinfo version="0.2"> <device> <match key="info.subsystem" string="pci"> <match key="info.product" string="VirtualBox guest Service"> <append key="info.capabilities" type="strlist">input</append> <append key="info.capabilities" type="strlist">input.mouse</append> <merge key="input.x11_driver" type="string">vboxmouse</merge> <merge key="input.device" type="string">/dev/vboxguest</merge> </match> </match> </device> </deviceinfo> &os; als een gastheer-besturingssysteem Voor een aantal jaren werd &os; niet officieel ondersteund als een gastheer-besturingssysteem door de beschikbare virtualisatiepakketten. Sommige mensen gebruikten oudere en meestal overbodige versies van VMware (zoals emulators/vmware3), die gebruik maakten van de &linux; binaire compatibiliteitslaag. Kort na de uitgave van &os; 7.2 verscheen Suns &virtualbox; in de Ports; Collectie als een programma dat voor &os; zelf bedoeld is. &virtualbox; is een actief ontwikkeld en compleet virtualisatiepakket dat beschikbaar is voor de meeste besturingssystemen waaronder &windows;, &macos;, &linux; en &os;. Het kan evengoed &windows; of &unix; als gast draaien. Het is gerealiseerd als een open-source pakket met gesloten-source componenten beschikbaar in een apart uitbreidingspakket. Deze componenten bevatten onder andere ondersteuning voor USB-2.0-apparaten. Meer informatie kan gevonden worden op de pagina Downloads van de &virtualbox;-wiki op . Momenteel zijn deze uitbreidingen niet beschikbaar voor &os;. &virtualbox; installeren &virtualbox; is beschikbaar als een &os;-port in emulators/virtualbox-ose. Zorg ervoor, aangezien &virtualbox; erg actief ontwikkeld wordt, dat uw ports bijgewerkt is voordat u met de installatie begint. Installeer het met deze commando's: &prompt.root; cd /usr/ports/emulators/virtualbox-ose &prompt.root; make install clean Een nuttige optie in het configuratiescherm is de verzameling GuestAdditions programma's. Deze bieden een aantal nuttige mogelijkheden in gastbesturingssystemen, zoals integratie van de muiscursor (wat het mogelijk maakt om de muis te delen tussen de gast en de gastheer zonder dat er een speciale toetsencombinatie hoeft te worden gebruikt voor het omwisselen) en snellere video-rendering, met name in &windows;-gasten. De gastaanvullingen zijn beschikbaar in het menu Devices, nadat de installatie van het gastbesturingssysteem is voltooid. Er zijn enkele aanpassingen aan de instellingen nodig voordat &virtualbox; voor het eerst wordt gestart. De port installeert een kernelmodule in /boot/modules welke in de draaiende kernel geladen moet worden: &prompt.root; kldload vboxdrv Voeg de volgende regel toe aan /boot/loader.conf om er zeker van te zijn dat de module altijd na een herstart wordt geladen: vboxdrv_load="YES" Voeg het volgende aan /etc/rc.conf toe en herstart de computer om de kernelmodules te gebruiken die in gebridgede of gastheer-only netwerken voorzien: vboxnet_enable="YES" De groep vboxusers wordt tijdens de installatie van &virtualbox; aangemaakt. Alle gebruikers die toegang tot &virtualbox; nodig hebben moeten als lid van deze groep worden toegevoegd. Met het commando pw kunnen nieuwe leden worden toegevoegd: &prompt.root; pw groupmod vboxusers -m uwgebruikersnaam De standaardpermissies voor /dev/vboxnetctl zijn restrictief en moeten veranderd worden voor gebridged netwerken. Om het tijdelijk te testen: &prompt.root; chown root:vboxusers /dev/vboxnetctl &prompt.root; chmod 0660 /dev/vboxnetctl Voeg deze regels toe aan /etc/devfs.conf om de permissiewijziging permanent te maken: own vboxnetctl root:vboxusers perm vboxnetctl 0660 Gebruik de optie Sun VirtualBox van het menu van de grafische omgeving of typ het volgende in een terminal om &virtualbox; te starten: &prompt.user; VirtualBox Bezoek de officiële website op voor meer informatie over het configureren en gebruiken van &virtualbox;. Aangezien de &os;-port erg nieuw is, wordt het nog volop ontwikkeld. Kijk voor de laatste informatie en instructies om problemen op te lossen op de relevantie pagina in de &os;-wiki op . USB-ondersteuning in &virtualbox; Voor deze stappen is VirtualBox 4.0.0 of nieuwer nodig. Om van UBS-apparaten te kunnen lezen en ernaar te kunnen schrijven dienen gebruikers lid te zijn van de groep operator: &prompt.root; pw groupmod operator -m jerry Voeg vervolgens het volgende toe aan /etc/devfs.rules (maak het aan als het nog niet bestaat): [system=10] add path 'usb/*' mode 0660 group operator Voeg het volgende aan toe aan /etc/rc.conf om deze nieuwe regels te laden: devfs_system_ruleset="system Herstart vervolgens devfs: &prompt.root; /etc/rc.d/devfs restart USB kan nu in het gast-besturingssysteem worden aangezet. USB-apparaten zouden zichtbaar moeten zijn in de voorkeuren van &virtualbox;. DVD/CD-toegang van de gastheer in &virtualbox; - De kernelmodule atapicam moet geladen zijn door - de volgende regel toe te voegen aan - /boot/loader.conf: + Toegang tot de CD/DVD-stations van de gastheer wordt bereikt door + het delen van de fysieke stations. In de GUI kan dit vanuit het scherm + Opslag in de Instellingen van de virtuele machine worden ingesteld. + Maak eerst een leeg IDE CD-/DVD-apparaat aan. Kies daarna het + Gastheerstation van het popup-menu voor het kiezen van het virtuele + CD-/DVD-station. Later zal er een checkbox genaamd + Passthrough verschijnen. Dit stelt de virtuele + machine in staat om de hardware direct te gebruiken. Audio-CDs en + branders bijvoorbeeld werken alleen als deze optie is aangezet. - atapicam_load="YES" - HAL moet draaien om de DVD/CD-functies van &virtualbox; te laten werken, zet het dus aan in /etc/rc.conf en start het (als het niet reeds draait): hald_enable="YES" - &prompt.root; /usr/local/etc/rc.d/hald start + &prompt.root; service hald start Om gebruikers de DVD/CD-functionaliteit van &virtualbox; te laten gebruiken, dienen ze toegang te hebben tot /dev/xpt0, /dev/cdN en /dev/passN. - Voeg de volgende regels toe aan - /etc/devfs.conf: + Dit wordt normaliter gedaan door de gebruiker van + &virtualbox; lid te maken van de groep + operator, wat ook de standaardgroep is voor bovengenoemde apparaten. + De rechten van deze apparaten dienen gecorrigeerd te worden door de + volgende regels aan /etc/devfs.conf toe te + voegen: - perm cd0 0600 + perm cd* 0600 perm xpt0 0660 -perm pass0 0660 +perm pass* 0660 + + &prompt.root; /etc/rc.d/devfs restart Index: translations/nl_NL.ISO8859-1/htdocs/administration.xml =================================================================== --- translations/nl_NL.ISO8859-1/htdocs/administration.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/htdocs/administration.xml (revision 40367) @@ -1,510 +1,509 @@ ]> &title; $FreeBSD$

Introductie

Deze pagina geeft de teams, groepen en individuen binnen het &os; project met toegewezen projectrollen en verantwoordelijke gebieden, samen met korte beschrijvingen en contactinformatie.


&os; Core Team <core@FreeBSD.org>

Het &os; Core Team vormt de "Raad van Bestuur" van het project, het is verantwoordelijk voor het bepalen van de algemene doelen en richting van het project alsmede het beheer van specifieke gebieden van het landschap van het &os; project. Het Core Team wordt gekozen door de actieve ontwikkelaars binnen het project.

&os; Documentatiebeheerteam <doceng@FreeBSD.org>

Het &os; Documentatiebeheerteam is verantwoordelijk voor het definiëren en opvolgen van documentatiedoelen voor de committers in het Documentatieproject. De doceng team richtlijnen beschrijven de plichten en verantwoordelijkheden van het Documentatiebeheerteam in meer detail.

&os; Portbeheerteam <portmgr@FreeBSD.org>

De primaire verantwoordelijkheid van het &os; Portbeheerteam is erop toe te zien dat de ontwikkelaarsgemeenschap van de &os; ports een Portscollectie levert die functioneel, stabiel, actueel en volledig is. De secundaire verantwoordelijkheid is het coördineren van de committers en de ontwikkelaars die eraan werken. De portmgr team richtlijnen geven een gedetailleerdere beschrijving van de plichten en verantwoordelijkheden van het Portbeheerteam.


Primaire Uitgavebeheerteam <re@FreeBSD.org>

Het Primaire Uitgavebeheerteam is onder andere verantwoordelijk voor het maken en publiceren van uitgaveschema's voor officiële projectuitgaven van &os;, het aankondigen van code freezes en het beheren van RELENG_*-takken. De richtlijnen van het uitgave engineering team geven een gedetailleerdere beschrijving van de plichten en verantwoordelijkheden van het Primaire Uitgavebeheerteam.

Bouwers Uitgavebeheerteam <re-builders@FreeBSD.org>

Het Bouwers Uitgavebeheerteam is verantwoordelijk voor het bouwen en verpakken van uitgaven van &os; op de ondersteunde platforms.


Donatiesteam <donations@FreeBSD.org>

Het &os; Donatiesteam is verantwoordelijk voor het beantwoorden van aanbiedingen van donaties, het vaststellen van richtlijnen en procedures voor donaties, en het coördineren van aanbiedingen van donaties met de gemeenschap van &os;-ontwikkelaars. Een gedetailleerdere beschrijving van de plichten van het Donatiesteam is beschikbaar op de &os; Donaties Relatie pagina.

Marketingteam <marketing@FreeBSD.org>

Contact met de pers, marketing, interviews, informatie.

Beveiligingsteam <secteam@FreeBSD.org>

Het &os; Beveiligingsteam (voorgezeten door de Beveiligingsofficier) is verantwoordelijk voor het op de hoogte houden van de gemeenschap over bugs, exploits en beveiligingsrisico's die betrekking hebben op de src- en portsbomen van &os;, en voor het promoten en verspreiden van informatie die nodig is om &os;-systemen veilig te draaien. Verder is het verantwoordelijk voor het oplossen van softwarebugs die betrekking hebben op de beveiliging van &os; en het uitgeven van beveiligingsadviezen. De &os; Beveiligingsofficier Richtlijnen geven een gedetailleerdere beschrijving van de plichten en verantwoordelijkheden van de Beveiligingsofficier.

Verkopersrelaties <vendor-relations@FreeBSD.org>

Verkopersrelaties is verantwoordelijk voor het afhandelen van e-mail van hardware- en software-verkopers. E-mail die naar Verkopersrelaties wordt gestuurd, wordt doorgestuurd naar het &os; Kernteam in aanvulling op de &os; Foundation.


Core Team Secretaris <core-secretary@FreeBSD.org>

De &os; Core Team Secretaris is een niet-stemmend lid van het Core Team, verantwoordelijk voor het documenteren van het werk dat door core gedaan wordt, het bijhouden van de agenda van core, het directe contact met niet-core leden die mail naar core sturen en het zijn van een tussenpersoon voor het adminteam voor het goedkeuren van committers en accounts. De Core Team Secretaris is ook verantwoordelijk voor het schrijven en versturen van de maandelijkse statusrapporten naar de ontwikkelaarsgemeenschap van &os;, die een samenvatting bevatten van de meest recente beslissingen en acties van core.

Portbeheerteam-secretaris <portmgr-secretary@FreeBSD.org>

De &os; Portbeheerteam-secretaris is een niet-stemmend lid van het Portbeheerteam, verantwoordelijk voor het documenteren van het werk dat door portmgr gedaan wordt, het bijhouden van stemprocedures, en het zijn van een tussenpersoon naar de andere teams, in het bijzonder de admin en Core Teams. De Portbeheerteam-secretaris is ook verantwoordelijk voor het schrijven en versturen van maandelijkse statusrapporten naar de ontwikkelaarsgemeenschap van &os;, die een samenvatting van de meest recente beslissingen en acties van portmgr bevatten.

Beveiligingsteam Secretaris <secteam-secretary@FreeBSD.org>

De &os; Beveiligingsteam-secretaris zorgt ervoor dat iemand antwoord op binnenkomende emails gericht aan het Beveiligingsteam. Hij zal ontvangst bevestigen en de voortgang binnen het Beveiligingsteam bijhouden. Indien nodig zal de Secretaris contact opnemen met leden van het Beveiligingsteam om hen een update te bieden over lopende zaken. Momenteel behandelt de Beveiligingsteam-secretaris geen zaken van het Beveiligingsofficierteam.


Accountsteam <accounts@>

Het Accountsteam is verantwoordelijk voor het aanmaken van accounts voor nieuwe committers binnen het project. Op verzoeken voor nieuwe accounts zal niet worden gereageerd zonder de passende toestemming van de juiste entiteit.

Back-upbeheerders <backups@>

De Back-upbeheerders behandelen alle back-ups op het &os;-cluster.

Bugmeisters & GNATS Beheerders <bugmeister@FreeBSD.org>

De Bugmeisters en GNATS Beheerders zijn zorgen ervoor dat er met de beheer-database gewerkt kan worden, dat de aanmeldingen juist zijn gecategoriseerd en dat er geen ongeldige aanmeldingen zijn. Ze zijn ook verantwoordelijk voor de probleemrapportagegroep.

Clusterbeheerders <clusteradm@>

De Clusterbeheerders zijn de mensen die verantwoordelijk zijn voor het beheren van de machines waarvan het project afhankelijk is voor het gesynchroniseerd zijn van haar gedistribueerde werk en communicatie. Het zijn vooral de mensen die fysieke toegang tot de servers hebben. Zaken aangaande de infrastructuur van het project of het installeren van nieuwe machines dienen aan de clusterbeheerders te worden gericht.

CVS ports Reservoir Beheerders <pcvs@FreeBSD.org>

De CVS ports Reservoir Beheerders mogen direct het reservoir wijzigen zonder het CVS-gereedschap te gebruiken. Het is hun verantwoordelijkheid om technische problemen die in het reservoir opduiken snel op te lossen. De CVS ports Reservoir Beheerders hebben de machtiging om commits ongedaan te maken als dit nodig is om een technisch probleem met CVS op te lossen. Verzoeken voor repo-kopiën dienen aan de Reservoir Beheerders gericht te worden.

CVS src Resrevoir Beheerders <ncvs@FreeBSD.org>

De CVS src Reservoir Beheerders mogen direct het reservoir wijzigen zonder het CVS-gereedschap te gebruiken. Het is hun verantwoordelijkheid om technische problemen die in het reservoir opduiken snel op te lossen. De CVS src Reservoir Beheerders hebben de machtiging om commits ongedaan te maken als dit nodig is om een technisch probleem met CVS op te lossen. Verzoeken voor repo-kopiën dienen aan de Reservoir Beheerders gericht te worden.

CVSup Mirror Site Coördinatoren <cvsup-master@FreeBSD.org>

De CVSup Mirror Site Coördinatoren werken samen met alle beheerders van de CVSup Mirror Sites om ervoor te zorgen dat ze actuele versies van de software distribueren en dat ze de capaciteit hebben om zichzelf bij te werken wanneer er grote updates gaande zijn, en om het gemakkelijk te maken voor het grote publiek om hun dichtstbijzijnde CVSup-spiegel te vinden.

DNS Beheerders <dnsadm@>

De DNS Beheerders zijn verantwoordelijk voor het beheren van DNS en aanverwante diensten.

FTP/WWW Mirror Site Coördinatoren <mirror-admin@FreeBSD.org>

De FTP/WWW Mirror Site Coördinatoren werken samen met alle beheerders van de FTP/WWW Mirror Sites om ervoor te zorgen dat ze actuele versies van de software distribueren en dat ze de capaciteit hebben om zichzelf bij te werken wanneer er grote updates gaande zijn, en om het gemakkelijk te maken voor het grote publiek om hun dichtstbijzijnde FTP/WWW-spiegel te vinden.

Perforce Reservoir Beheerders <perforce-admin@FreeBSD.org>

De Perforce Reservoir Beheerders zijn verantwoordelijk voor het beheer van het &os; Perforce broncodereservoir en voor het aanmaken van nieuwe perforce-accounts. Alle verzoeken aangaande nieuwe perforce-accounts voor niet-committers dienen aan de perforce-beheerders gericht te worden.

Postmeesterteam <postmaster@FreeBSD.org>

Het Postmeesterteam is ervoor verantwoordelijk dat mail correct wordt afgeleverd aan het emailadres van de committer, te zorgen dat de mailinglijsten werken, en ze dienen maatregelen te nemen tegen mogelijke verstoringen van de maildiensten van het project, zoals het hebben van trol-, spam- en virusfilters.

Webmasterteam <webmaster@FreeBSD.org>

Het Webmasterteam van &os; is verantwoordelijk voor het in de lucht houden van de hoofdwebsites van &os;. Dit omvat webserverconfiguratie, CGI-scripts, zoeken in volledige teksten en mailinglijsten. Alle technische dingen die met het web te maken hebben vallen binnen het gebied van het Webmasterteam, behalve fouten in de documentatie.

Index: translations/nl_NL.ISO8859-1/htdocs/art.xml =================================================================== --- translations/nl_NL.ISO8859-1/htdocs/art.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/htdocs/art.xml (revision 40367) @@ -1,140 +1,140 @@ ]> &title; $FreeBSD$

Deze pagina bevat verschillende &os; illustraties. Suggesties voor toevoegingen kunnen gemaild worden aan www@FreeBSD.org. Neem notitie van het gebruiksbeleid voor deze illustraties.

BSD Daemon

-
BSD
 	      Daemon 
Gemaakt door by &a.phk;
Bron: - /usr/share/examples/BSD_daemon/ +
Gemaakt door &a.phk;
Bron: + /usr/share/examples/BSD_daemon/ op &os; systemen.
BSD Daemon met een hamer BSD Daemon als ober
BSD Daemon als nieuwsredacteur BSD Daemon leest documentatie BSD Daemon levert de nieuwste uitgave

Powered by &os; Logo's

Powered
 	      by &os; Logo Powered by &os; Logo
Powered by &os; Logo Powered by &os; Logo &os; Hardware Partner Logo

&os; The
 	Power To Serve Logo

&os; The
 	Power To Serve Logo

&os; The
 	Power To Serve Logo

&os; The
 	Power To Serve Logo

Oude advertentiebanners

Adv
 	    Banner1 Adv
 	    Banner2

Grafisch gebruik

De bovenstaande Powered by &os; logo's kunnen gedownload worden en mogen worden weergegeven op persoonlijke en zakelijke webpagina's die worden geserveerd door &os; machines. Voor het gebruik van dit logo of de verschijning van de BSD Daemons met winstoogmerk is toestemming nodig van Brian Tao (maker van het power logo) en Marshall Kirk McKusick (houder van het copyright voor de afbeelding van de BSD Daemon).

&a.phk;'s afbeelding van de BSD Daemon is uitgebracht onder THE BEER-WARE LICENSE. Zie de README + href="http://svnweb.freebsd.org/base/head/share/examples/BSD_daemon/README?view=markup">README voor meer informatie.

Handelsmerken

De &os; Foundation houdt verschillende handelsmerken gerelateerd aan &os; (waaronder het handelsmerk voor de term &os; zelf). Lees voor meer informatie over deze handelsmerken de &os; Trademark Usage Terms and Conditions.

Index: translations/nl_NL.ISO8859-1/htdocs/index.xsl =================================================================== --- translations/nl_NL.ISO8859-1/htdocs/index.xsl (revision 40366) +++ translations/nl_NL.ISO8859-1/htdocs/index.xsl (revision 40367) @@ -1,313 +1,337 @@ ]>

Gebaseerd op BSD &unix;

&os;® is een geavanceerd besturingssystem voor moderne platforms voor servers, desktop, en embedded computers. De broncode van &os; heeft meer dan dertig jaar van continue ontwikkeling, verbetering en optimalisatie doorgemaakt. Het wordt ontwikkeld en onderhouden door een groot team van individuen. &os; biedt geavanceerd netwerken, indrukwekkende beveiligingsmogelijkheden en topprestaties en wordt door sommige van 's werelds drukste websites en de meest voorkomende embedded netwerk- en opslagapparaten gebruikt.

+ +
+

Beveiligingsmelding

+ +

Op zondag 11 september is + er een inbraak gedetecteerd op twee machines + binnen het FreeBSD.org-cluster. We hebben + geen bewijs gevonden van wijzigingen die een + risico vormen voor eindgebruikers. Lees + alstublieft het + verslag voor meer details.

+

LAATSTE NIEUWS

.

EVENEMENTEN

.

IN DE MEDIA

.

BEVEILIGING


ERRATA


+
+ + + ©right; + + Het merk &os; is een geregistreerd handelsmerk van de &os; Foundation + en wordt gebruikt door The &os; Project met toestemming van The + &os; Foundation. + &header2.word.contact;
Index: translations/nl_NL.ISO8859-1/htdocs/where.xml =================================================================== --- translations/nl_NL.ISO8859-1/htdocs/where.xml (revision 40366) +++ translations/nl_NL.ISO8859-1/htdocs/where.xml (revision 40367) @@ -1,250 +1,246 @@ ]> &title; $FreeBSD$

Uitgave-informatie

Gedetailleerde beschrijvingen van uitgaven uit het verleden, heden en de toekomst. Kijk eerst hier om te bepalen wat de meest recente versie van &os; is.

&os; installeren

Er zijn vele opties voor het installeren van &os;, waaronder installatie van CD-ROM, DVD, floppy disk, een MS-DOS® partitie, magnetische tape, anonieme FTP en NFS. Lees de installatiegids alvorens de hele &os;-distributie te downloaden.

&os; kopen

&os; is op een CD-ROM of DVD te koop bij &os; Mall of een van de andere CD-ROM en DVD verkopers.

&os; downloaden

Als u &os; via FTP of HTTP wilt downloaden, bekijk dan de lijst met spiegelsites - in het handboek om te zien of er een site is die dichterbij u is. Als - alternatief kunt u &os; via het BitTorrent-protocol downloaden. De - .torrent-bestanden kunnen van de &os; BitTorrent Tracker - gedownload worden.

+ in het handboek om te zien of er een site is die dichterbij u is.

Versie & platform Distributie ISO Uitgave
notities
Hardware
notities
Installatie
notities
Errata
&os; &rel.current;-RELEASE [Bekijk] [Bekijk] [Bekijk] [Bekijk]
amd64 [Distributie] [ISO]
i386 [Distributie] [ISO]
ia64 [Distributie] [ISO]
powerpc [Distributie] [ISO]
powerpc64 [Distributie] [ISO]
sparc64 [Distributie] [ISO]
&os; &rel2.current;-RELEASE [Bekijk] [Bekijk] [Bekijk] [Bekijk]
amd64 [Distributie] [ISO]
i386 [Distributie] [ISO]
pc98 [Distributie] [ISO]
sparc64 [Distributie] [ISO]
&os; &rel3.current;-RELEASE [Bekijk] [Bekijk] [Bekijk] [Bekijk]
amd64 [ISO]
i386 [ISO]
pc98 [ISO]
sparc64 [ISO]

Opmerking: Bij twijfel over welk platform of welke architectuur te gebruiken, is waarschijnlijk i386 van toepassing voor oudere computers en amd64 van toepassing voor nieuwere computers.

&beta.desc;

Als u geïnteresseerd bent in een volledig experimentele snapshot uitgave van &os;-CURRENT (alias &rel.head;-CURRENT), alleen gericht op ontwikkelaars en testers met een sterk hart, kijk dan op de pagina &os; Snapshot-uitgaven. Kijk voor meer informatie over vroegere, huidige en toekomstige uitgaven in het algemeen op de uitgave-informatiepagina.

Distributies van &os;-afgeleide besturingssystemen

&os; wordt wijdverbreid gebruikt als een bouwsteen voor andere commerciële en open-source besturingssystemen. De onderstaande projecten worden wijdverbreid gebruikt en zijn van bijzondere interesse voor &os;-gebruikers.

Applicaties en hulpsoftware

De Portscollectie

De &os; Portscollectie is een diverse collectie met hulpprogramma's en applicaties die zijn geport naar &os;.

Voor informatie over hoe u uw favoriete stuk software kunt bijdragen aan de Portscollectie, zie het Handboek voor ontwikkelaars en het artikel Bijdragen aan &os;.

Index: translations/nl_NL.ISO8859-1/share/xml/header.l10n.ent =================================================================== --- translations/nl_NL.ISO8859-1/share/xml/header.l10n.ent (revision 40366) +++ translations/nl_NL.ISO8859-1/share/xml/header.l10n.ent (revision 40367) @@ -1,111 +1,123 @@ '> '> Sitemap | Wettelijke mededelingen | © 1995–2012 Het FreeBSD Project. Alle rechten voorbehouden.'> beginpagina   |   contact   |   legaal   |   ©right;'> &os; homepage'> + +
.
+
+ Doneer aan &os; +
+
.
+ +'> + '> Dit document beschrijft hoe de &os; webpagina&qout;s met de hand vanuit het CVS reservoir te bouwen en actueel te houden.

'> Index: translations/nl_NL.ISO8859-1/share/xml/mailing-lists.ent =================================================================== --- translations/nl_NL.ISO8859-1/share/xml/mailing-lists.ent (revision 40366) +++ translations/nl_NL.ISO8859-1/share/xml/mailing-lists.ent (revision 40367) @@ -1,596 +1,604 @@ &os; nlijstserver"> &a.mailman.listinfo;"> &os; ACPI mailinglijst"> freebsd-acpi"> &os; steun mailinglijst"> freebsd-advocacy"> &os; AFS porting mailinglijst"> freebsd-afs"> &os; Adaptec AIC7xxx discussies mailinglijst"> freebsd-aic7xxx"> &os; porten naar AMD64 systemen"> freebsd-amd64"> &os; aankondigingen mailinglijst"> freebsd-announce"> &os; Apache mailinglijst"> freebsd-apache"> &os; architectuur en ontwerp mailinglijst"> freebsd-arch"> &os; ARM porting mailinglijst"> freebsd-arm"> &os; ATM netwerken mailinglijst"> freebsd-atm"> &os; Bluetooth mailinglijst"> freebsd-bluetooth"> &os; bugbusters mailinglijst"> freebsd-bugbusters"> &os; problem reports mailinglijst"> freebsd-bugs"> &os; babbel mailinglijst"> freebsd-chat"> &os; specifieke Chromium problemen>"> freebsd-chromium"> &os; clustering mailinglijst"> freebsd-cluster"> &os.current; mailinglijst"> freebsd-current"> CTM aankondigingen"> ctm-announce"> CTM distributie van CVS bestanden"> ctm-cvs-cur"> CTM 4-STABLE src tak distributie mailinglijst"> ctm-src-4"> CTM 5-STABLE src tak distributie mailinglijst"> ctm-src-5"> CTM 6-STABLE src tak distributie mailinglist"> ctm-src-6"> CTM 7-STABLE src tak distributie mailinglist"> ctm-src-7"> CTM 8-STABLE src tak distributie mailinglist"> ctm-src-8"> CTM 9-STABLE src tak distributie mailinglist"> ctm-src-9"> CTM -CURRENT src tak distributie mailinglijst"> ctm-src-cur"> CTM gebruikersdiscussie mailinglijst"> ctm-users"> &os; CVS commitberichten mailinglijst"> cvs-all"> &os; CVS doc commitlijst"> cvs-doc"> &os; CVS ports commitlijst"> cvs-ports"> &os; CVS projecten commitlijst"> cvs-projects"> &os; CVS src commitlijst"> cvs-src"> &os; CVSweb beheer mailinglijst"> freebsd-cvsweb"> &os; gebaseerde Databases mailinglijst"> freebsd-database"> &os; gebruiken op en verbeteren voor bureaubladen"> freebsd-desktop"> &os; documentatieproject mailinglijst"> freebsd-doc"> Apparaatstuurprogramma's schrijven voor &os;"> freebsd-drivers"> &os; gebruikers van Eclipse IDE, hulpprogramma's, clientapplicaties en ports"> freebsd-eclipse"> &os;-embedded mailinglijst"> freebsd-embedded"> &os;-emulatie mailinglijst"> freebsd-emulation"> &os;-eol mailinglijst"> freebsd-eol"> &os; FireWire (IEEE 1394) discussion mailinglijst"> freebsd-firewire"> &os; bestandssysteem project mailinglijst"> freebsd-fs"> &os; gecko mailinglijst"> freebsd-gecko"> &os; GEOM mailinglijst"> freebsd-geom"> &os; GNOME and GNOME applications mailinglijst"> freebsd-gnome"> &os; technische discussie mailinglijst"> freebsd-hackers"> &os; hardware and apparatuur mailinglijst"> freebsd-hardware"> &os; mirror sites mailinglijsts"> freebsd-hubs"> &os; internationalisatie mailinglijst"> freebsd-i18n"> &os; i386-specifieke onderwerpen mailinglijst"> freebsd-i386"> &os; IA32 porting mailinglijst"> freebsd-ia32"> &os; IA64 porting mailinglijst"> freebsd-ia64"> + +Infiniband op &os;"> +freebsd-infiniband"> + &os; IPFW code mailinglijst"> freebsd-ipfw"> &os; ISDN mailinglijst"> freebsd-isdn"> &os; Internet service provider mailinglijst"> freebsd-isp"> &os; jails mailinglijst"> freebsd-jail"> &os; Java Language mailinglijst"> freebsd-java"> &os; gerelateerd werk mailinglijst"> freebsd-jobs"> &os; KDE/Qt en KDE applicaties mailinglijst"> freebsd-kde"> &os; LFS porting mailinglijst"> freebsd-lfs"> &os; MIPS porting mailinglijst"> freebsd-mips"> &os; mirrorsite beheerders"> mirror-announce"> &os; laptop computer mailinglijst"> freebsd-mobile"> Mono en C# applicaties op &os;"> freebsd-mono"> &os; port van de Mozilla browser mailinglijst"> freebsd-mozilla"> &os; multimedia mailinglijst"> freebsd-multimedia"> &os; netwerken mailinglijst"> freebsd-net"> &os; nieuwe gebruikers mailinglijst"> freebsd-newbies"> &os; new-bus mailinglijst"> freebsd-new-bus"> Discussies over implementaties van hoge kwaliteit van functies in libm"> freebsd-numerics"> Kantoortoepassingen op &os;"> freebsd-office"> &os; prestaties mailinglijst"> freebsd-performance"> &os; Perl mailinglijst"> freebsd-perl"> &os; pakketfilter mailinglijst"> freebsd-pf"> &os; niet-Intel platformen porting mailinglijst"> freebsd-platforms"> &os; ports mailinglijst"> freebsd-ports"> &os; ports announce mailinglijst"> freebsd-ports-announce"> &os; ports bugs mailinglijst"> freebsd-ports-bugs"> &os; PowerPC porting mailinglijst"> freebsd-ppc"> Technische discussie over &os; op HP ProLiant serverplatforms"> freebsd-proliant"> &os; Python mailinglijst"> freebsd-python"> &os; algemene vragen mailinglijst"> freebsd-questions"> &os; boot script system mailinglijst"> freebsd-rc"> &os; realtime extensions mailinglijst"> freebsd-realtime"> &os; Ruby mailinglijst"> freebsd-ruby"> &os; SCSI subsysteem mailinglijst"> freebsd-scsi"> &os; beveiliging mailinglijst"> freebsd-security"> &os; beveiligingswaarschuwingen mailinglijst"> freebsd-security-notifications"> &os;-small mailinglijst"> freebsd-small"> &os; SPARC porting mailinglijst"> freebsd-sparc64"> &os.stable; mailinglijst"> freebsd-stable"> &os; C99 en POSIX compliance mailinglijst"> freebsd-standards"> &os; sun4v porting mailinglijst"> freebsd-sun4v"> SVN-commitberichten voor de gehele doc-structuur (behalve voor user, projects en translations)"> svn-doc-all"> SVN-commitberichten voor de doc-structuur voor head"> svn-doc-head"> SVN-commitberichten voor de doc-projects-structuur"> svn-doc-projects"> SVN-commitberichten voor de administratie/configuratie van de doc-structuur"> svn-doc-svnadmin"> SVN-commitberichten voor de gehele ports-structuur"> svn-ports-all"> SVN-commitberichten voor de ports-structuur voor head"> svn-ports-head"> SVN-commitberichten voor de administratie/configuratie van de ports-structuur"> svn-ports-svnadmin"> SVN-commitberichten voor de gehele src-structuur (behalve voor user en projects)"> svn-src-all"> SVN-commitberichten voor de src-structuur voor head/-current"> svn-src-head"> SVN-commitberichten voor de src-projects-structuur"> svn-src-projects"> SVN-commitberichten voor de uitgaven in de src-structuur"> svn-src-release"> SVN-commitberichten voor de uitgave- / beveiligingscommits naar de src-structuur"> svn-src-releng"> SVN-commitberichten voor alle -stable-takken van de src-structuur"> svn-src-stable"> SVN-commitberichten voor alleen de 6-stable-src-structuur"> svn-src-stable-6"> SVN-commitberichten voor alleen de 7-stable-src-structuur"> svn-src-stable-7"> SVN-commitberichten voor alleen de 8-stable-src-structuur"> svn-src-stable-8"> SVN-commitberichten voor alleen de 9-stable-src-structuur"> svn-src-stable-9"> SVN-commitberichten van de oude stable-src-structuren"> svn-src-stable-other"> SVN-commitberichten voor de administratie/configuratie van de src-structuur"> svn-src-svnadmin"> SVN-commitberichten voor de experimentele user-src-structuur"> svn-src-user"> SVN-commitberichten voor de structuur van het verkoperswerkgebied"> svn-src-vendor"> Sysinstall-ontwikkeling mailinglijst"> freebsd-sysinstall"> + + +&os;-specifieke discussies over Tcl/Tk"> +freebsd-tcltk"> &os; test mailinglijst"> freebsd-test"> &os; threads mailinglijst"> freebsd-threads"> Mailinglijst over het porteren van &os; naar de Tilera CPU-familie"> freebsd-tilera"> &os; tokenring mailinglijst"> freebsd-tokenring"> &os; geïntegreerde toolchain mailinglijst"> freebsd-toolchain"> &os; USB mailinglijst"> freebsd-usb"> &os; gebruikersgroep coördinatie mailinglijst"> freebsd-user-groups"> &os; wederverkopers pre-release coördinatie mailinglijst"> freebsd-vendors"> Discussies over verscheidene virtualizatietechnieken ondersteund door &os;"> freebsd-virtualization"> Discussies over de VuXML infrastructuur"> freebsd-vuxml"> &os; Werk-In-Uitvoering Status"> freebsd-wip-status"> Discussies over de ontwikkeling van de 802.11-stack, gereedschappen en stuurprogramma's"> freebsd-wireless"> &os; Webmaster mailinglijst"> freebsd-www"> &os; X11 mailinglijst"> freebsd-x11"> &os; port naar Xen mailinglijst"> freebsd-xen"> XFCE voor &os; mailinglijst"> freebsd-xfce"> Zope voor &os; mailinglijst"> freebsd-zope"> bug-followup@FreeBSD.org"> majordomo@FreeBSD.org"> &os; Alpha porting mailinglijst"> freebsd-alpha"> &os; Quality Assurance mailinglijst"> freebsd-qa"> &os; symmetric multiprocessing mailinglijst"> freebsd-smp"> Index: translations/nl_NL.ISO8859-1 =================================================================== --- translations/nl_NL.ISO8859-1 (revision 40366) +++ translations/nl_NL.ISO8859-1 (revision 40367) Property changes on: translations/nl_NL.ISO8859-1 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head/nl_NL.ISO8859-1:r39942-40365