diff --git a/nl_NL.ISO8859-1/books/handbook/advanced-networking/chapter.xml b/nl_NL.ISO8859-1/books/handbook/advanced-networking/chapter.xml
index 1ce9aa5e15..ec361dce9b 100644
--- a/nl_NL.ISO8859-1/books/handbook/advanced-networking/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/advanced-networking/chapter.xml
@@ -1,6772 +1,6535 @@
RenéLadanVertaald door Geavanceerde netwerkenSamenvattingDit 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 ().CoranthGryphonBijgedragen door Gateways en routesroutinggatewaysubnetIndien 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 voorbeeldOm 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 0standaardrouteDe eerste twee regels geven de standaardroute (die behandeld
wordt in de volgende
sectie) en de localhost-route aan.teruglusapparaatDe 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.EthernetMAC-adresHet 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:UUp: De route is actief.HHost: De bestemming van de route is een enkele
host.GGateway: Stuur alles voor deze bestemming door naar
dit verre systeem, dat zoekt daar uit waar het verder
naar te sturen.SStatisch: Deze route was handmatig ingesteld, dus
niet automatisch door het systeem aangemaakt.CKloon: 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.WWasGekloond: Geeft aan dat een route automatisch
was ingesteld gebaseerd op een LAN (kloon)-route.LVerbinding: De route maakt gebruik van verwijzingen
naar Ethernet-hardware.StandaardroutesstandaardrouteWanneer 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:HostStandaard gatewayInterfaceLokaal2Lokaal1EthernetLokaal1T1-GWPPPEen 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:HostStandaardrouteLokaal2 (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.1Voor meer informatie over het handmatig manipuleren van
netwerkrouteertabellen kan de hulppagina &man.route.8;
geraadpleegd worden.Dual Homed machinesdual homed hostsEr 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 bouwenrouterEen 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 isDeze 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.BGPRIPOSPFDe 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.AlHoangBijgedragen door Statische routes opzettenHandmatige configuratieEr 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 2In 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 xl1Met 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.2Nu kan RouterA elke host op het netwerk
192.168.2.0/24 bereiken.Persistente configuratieBovenstaand 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.2Dus 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 propagerenroutes propagerenEr 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 oplossentracerouteSoms 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 routenmulticast routenkerneloptiesMROUTING&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 MROUTINGOok 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.LoaderMarcFonvieilleMurrayStokelyDraadloze netwerkendraadloze netwerken802.11draadloze netwerkenDe beginselen van draadloos netwerkenDe 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.BasisinstallatieKernelinstellingenOm 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 athBeide 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 scanningMet 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.5InfrastructuurmodusDe 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ëntenHoe toegangspunten te vindenVoor 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 WPADe 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 scanIn 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 CodesCapability CodeBetekenisEUitgebreide dienstenverzameling (ESS). Geeft aan
dat het station deel uitmaakt van een
infrastructuurnetwerk (in tegenstelling tot een IBSS-/
ad-hoc-netwerk).IIBSS-/ad-hoc-netwerk. Geeft aan dat het station
deel uitmaakt van een ad-hoc-netwerk (in tegenstelling
tot een ESS-netwerk).PPrivacy. 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.SKorte 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).sKorte 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 scanDeze 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.BasisinstellingenDeze 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 kiezenIn 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 DHCPEr 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.AuthenticatieNadat 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 DHCPNadat 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
+ &prompt.root; service netif startWanneer 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 burstHet 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-adresIn 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"WPAWPA (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-PSKWPA-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
+ &prompt.root; service 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 MANUALOok 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 MANUALIndien 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.confWPA met EAP-TLSDe 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:
+ De volgende stap is het activeren van de interface:
- &prompt.root; /etc/rc.d/netif start
+ &prompt.root; service 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 MANUALZoals 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-TTLSBij 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
+ &prompt.root; service 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 MANUALWPA met EAP-PEAPPEAPv0/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
+ &prompt.root; service 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 MANUALWEPWEP (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:0x3456789012De 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:76Ad-hoc-modusIBSS-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 burstDe 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 WMEDe 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 burstZowel 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.BasisinstellingenVoordat 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 destroywaarna 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 1Gebruik 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 -dfsDe 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
versleutelingHoewel 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 WMEDe 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.0ifconfig 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 burstWPA hostgebaseerde toegangspuntDeze 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-PSKWPA-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; service 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 100Het 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 toegangspuntHet 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 11gHet 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 -dfsVanaf 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 EPSDe 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 gebruikenEen 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 verhelpenIndien 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.PavLucistnikGeschreven door pav@FreeBSD.orgBluetoothBluetoothIntroductieBluetooth 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 inprikkenStandaard 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_ubtIndien 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
+ &man.service.8; 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
+ &prompt.root; service 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: 8Host Controller Interface (HCI)HCIHet 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 T39Tijdens 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 OPENEen 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)L2CAPHet 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=0Met 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 OPENEen 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 OPENHet RFCOMM-protocolRFCOMMHet 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 apparatenparenStandaard 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:a4Service Discovery Protocol (SDP)SDPHet 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 OPUSHHet 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
+ &prompt.root; service sdpd startDe 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 browseDial-Up Networking (DUN) en netwerktoegang met PPP (LAN)
profielenHet 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-dialupOm 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-serverHet OBEX Object Push (OPUSH) profielOBEXOBEX 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 10Serial 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 ttyp6Problemen oplossenEen apparaat op afstand kan geen verbinding makenSommige 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 0Er 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.AndrewThompsonGeschreven door BridgingIntroductieIP-subnetbridgeSoms 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 isEr zijn vandaag de dag veel situaties waarin een bridge
gebruikt wordt.Netwerken verbindenHet 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 firewallfirewallNATEen 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.routerDSLISDNEen 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.NetwerktapEen 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 VPNTwee 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 RedundancyEen 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 instellenDeze 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 inschakelenDe 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 0Een 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 upDe 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/24Het is ook mogelijk om een IPv6-adres aan een
bridge-interface toe te kennen.Firewalls gebruikenfirewallWanneer 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 boomHet 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 forwardingDe 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 forwardingDe 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 bridgenVerkeersstromen reconstruerenDe 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 bridge0SPAN poortenVan 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 fxp4Privé-interfacesEen 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 interfacesIndien 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/24Beide 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 vlan101De klanten zijn compleet geïsoleerd van elkaar, het
volledige /24 adresruimte kan
zonder subnetten toegewezen worden.AdresbeperkingenHet 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 10SNMP-monitoringDe 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-MIBOm 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 A9Om 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 bridge2AndrewThompsonGeschreven door Verbindingsaggregatie en failoverlaggfailoverfeclacploadbalanceroundrobinIntroductieDe 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.WerkmodiFailoverZendt 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.LACPHet &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.LoadbalanceDit is een alias van de FEC
modus.Round-RobinDistribueert 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.VoorbeeldenLACP-aggregatie met een &cisco; switchDit 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 lacpMaak 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 fxp110.0.0.3/24Bekijk de interfacestatus van ifconfig:&prompt.root; ifconfig lagg0Poorten 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 0x3DGebruik 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 fxp110.0.0.3/24"Failover-modusFailover-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 fxp110.0.0.15/24De 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 fxp110.0.0.15/24"Failover-modus tussen bekabelde en draadloze interfacesVoor 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: activebge0 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:37Activeer het draadloze interface maar geef er nog geen IP-adres
aan:&prompt.root; ifconfig wlan0 create wlandev iwn0 ssid mijn_router upActiveer 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 wlan0Het 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 lagg0Om 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çoisDockèsBijgewerkt door AlexDupreGereorganiseerd en uitgebreid door Schijfloos werkenschijfloos werkstationschijfloos werkenEen &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.AchtergrondinformatieHet 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-instructiesInstellen met behulp van
ISC DHCPDHCPschijfloos werkenDe 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 BOOTPBOOTPschijfloos werkenHieronder 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=.def100Een opstartprogramma voorbereiden met
EtherbootEtherbootDe 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.fd0apparaatsoort 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 PXEStandaard 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 TFTP en NFS
servers instellenTFTPschijfloos werkenNFSschijfloos werkenIndien 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 /tftpbootHet 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
+ &prompt.root; service inetd restartDe 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 corbieresmountd 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
+ &prompt.root; service mountd restartEen schijfloze kernel bouwenschijfloos werkenkernelinstellingenIndien 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 BOOTPHet 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 voorbereidenroot-bestandssysteemschijfloos werkenEr dient een root-bestandssysteem voor de schijfloze
werkstations op de plaats die als root-path
in dhcpd.conf staat aangegeven aangemaakt
te worden.make world gebruiken om het
root-bestandssysteem te bevolkenDeze 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 distributionNadat dit gedaan is, kunnen
/etc/rc.conf en
/etc/fstab die in
DESTDIR geplaatst zijn naar behoefte worden
aangepast.Swapruimte instellenIndien nodig kan een wisselbestand dat zich op de server
bevindt via NFS worden benaderd.Swapruimte via NFSDe 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=100000Om het aan te zetten dient de volgende regel aan
/etc/rc.conf te worden
toegevoegd:swapfile=/pad/naar/wisselbestandDiverse problemenDraaien met een alleen-lezen
/usrschijfloos werken/usr alleen-lezenIndien 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;-serverIndien 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.CraigRodrigues
rodrigc@FreeBSD.org
Geschreven door Met PXE en een NFS-root-bestandssysteem opstartenHet 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 chroot-omgeving voor het
NFS-root-bestandssysteem instellenKies 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 -alldirsHerstart de NFS-server:
- &prompt.root; /etc/rc.d/nfsd restart
+ &prompt.root; service nfsd restartStel &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/tftpbootHerstart inetd:
- &prompt.root; /etc/rc.d/inetd restart
+ &prompt.root; service inetd restartHerbouw de kernel en userland van
&os;:&prompt.root; cd /usr/src
&prompt.root; make buildworld
&prompt.root; make buildkernelInstalleer &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 secondsVoeg een regel aan ${NFSROOTDIR}/etc/fstab
toe om het root-bestandssysteem over NFS aan te koppelen:# Device Mountpoint FSType Options Dump Pass
mijnhost.example.com:/b/tftpboot/FreeBSD/install / nfs ro 0 0Vervang 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; passwdDit 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 bashGeheugenbestandssystemen die gebruikt worden door
/etc/rc.initdiskless configurerenAls 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 varWanneer 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 preparerenPXE 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.confnext-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 "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
opsporenGa 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-mountClië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 secondsLees &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 /mntLees 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;.ISDNISDNEen 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.HellmuthMichaelisBijgedragen door ISDN-kaartenISDNkaartenDe 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 AdaptersTerminal adapters (TA) zijn voor ISDN wat modems voor gewone
telefoonlijnen zijn.modemDe 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.PPPHet 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 ProAdtranDe 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/routersISDNzelfstandige bridges/routersISDN-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 thuis10 base 2Het 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 lijn10 Base 2 EthernetWanneer 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 LAN10 base THet netwerk gebruikt een stertopologie met 10 base T
Ethernet (Twisted Pair). -------Novell Server
| H |
| ---Sun
| |
| U ---FreeBSD
| |
| ---Windows 95
| B |
|___---Zelfstandige router
|
ISDN BRI lijnISDN NetwerkdiagramEen 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/SPXEen 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.ChernLeeBijgedragen door Network Address TranslationOverzichtnatdHet 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 delenNATNAT wordt het meest gebruikt wat in het algemeen bekend is
als het delen van een Internetverbinding.InstallatieWegens 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 |
|__________|NetwerkschemaDit 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-configuratiebootloaderconfiguratieDe 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.KernelconfiguratiekernelinstellingenWanneer 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 IPDIVERTDe volgende opties kunnen ook van pas komen:options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSESysteeminstellingen voor het opstartenOm 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 80Raadpleeg 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 omleidenHet 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 80Dit 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 omleidenadressen omleidenAdressen 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 publiekIPlokaalIPHet interne IP-adres van de LAN-cliënt.publiekIPHet 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.3Net 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.
-
-
-
-
-
- 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
-
-
-
AaronKaplanOrigineel geschreven door TomRhodesGeherstructureerd en toegevoegd door BradDavisUitgebreid door IPv6IPv6 (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-adressenIPsec (IP security)Versimpelde structuur van de headersMobiele IPOvergangsmechanismen voor IPv6 naar IPv4Bekijk voor meer informatie:IPv6-overzicht op playground.sun.comKAME.netAchtergrond over IPv6 adressenEr 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-adressenIPv6-adresPrefixlengte (bits)BeschrijvingOpmerkingen::128 bitsniet gespecificeerdcf. 0.0.0.0 in IPv4::1128 bitsteruglusadrescf. 127.0.0.1 in
IPv4::00:xx:xx:xx:xx96 bitsingebouwd IPv4De laagste 32 bits zijn het IPv4-adres. Ook
IPv4 compatibel IPv6-adres genoemd.::ff:xx:xx:xx:xx96 bitsIPv4-afgebeeld IPv6-adresDe laagste 32 bits zijn het IPv4-adres. Voor hosts
die geen IPv6 ondersteunen.fe80:: -
feb::10 bitslink-lokaalcf. teruglusadres in IPv4fec0:: -
fef::10 bitssite-lokaalff::8 bitsmulticast001 (base 2)3 bitsglobale unicastAlle globale unicast-adressen worden vanuit deze
pool toegewezen. De eerste 3 bits zijn
001.
IPv6-adressen lezenDe 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:9982Vaak 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; ifconfigrl0: 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: activefe80::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 krijgenEr 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-wereldEr 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 MIJNIPv6ADRESVraag 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
/etc/rc.confIPv6-cliëntinstellingenDeze 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 instellingenDeze 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-tunnelinstellingenIndien 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 hostconfiguratieDeze 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.HartiBrandtBijgedragen 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 configuratiesDe 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:HostIP-adreshostA192.168.173.1hostB192.168.173.2hostC192.168.173.3hostD192.168.173.4Om een volledig geschakeld net te bouwen is er een
ATM-verbinding nodig tussen elk paar machines:MachinesVPI.VCI koppelhostA - hostB0.100hostA - hostC0.101hostA - hostD0.102hostB - hostC0.103hostB - hostD0.104hostC - hostD0.105De 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 upaannemende 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 ubrUiteraard 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 addof 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 showTomRhodesBijgedragen door Common Address Redundancy Protocol (CARP)CARPCommon Address Redundancy ProtocolHet 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 carpAls 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:OIDBeschrijvingnet.inet.carp.allowAccepteer inkomende CARP pakketten.
Staat standaard aan.net.inet.carp.preemptDeze optie zet alle CARP
interfaces down op de host wanneer er een down gaat.
Staat standaard uit.net.inet.carp.logDe 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.arpbalanceBalanceer lokaal netwerkverkeer met
ARP. Staat standaard uit.net.inet.carp.suppress_preemptEen 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 createIn 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 serverbeschikbaarheidEé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 upDit 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;
diff --git a/nl_NL.ISO8859-1/books/handbook/config/chapter.xml b/nl_NL.ISO8859-1/books/handbook/config/chapter.xml
index 2fdb8fb5b5..0561f38579 100644
--- a/nl_NL.ISO8859-1/books/handbook/config/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/config/chapter.xml
@@ -1,3692 +1,3686 @@
ChernLeeGeschreven door MikeSmithNaar een tutorial van MattDillonTevens gebaseerd op tuning(7) door DannyPanstersVertaald door RenéLadanInstellingen en optimalisatieOverzichtsysteeminstellingensysteemoptimalisatieSysteeminstellingen 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 instellingenPartitionerenpartitioneren/etc/var/usrBasispartitiesBij 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 groottewisselpartitiewisselpartitiegrootteDe 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.Hoofdinstellingenrc bestandenrc.confDe 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.example.org"
ifconfig_fxp0="inet 10.1.1.1/8"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 instellenGeï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/etcDeze 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.defaultAan 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.TomRhodesBijgedragen door Diensten startendienstenVeel 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 applicatieinstellingenNu &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 startenAndere 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.TomRhodesGeschreven door cron instellencroninstellenEen 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
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 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 installerenDe 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 crontabbestandIn 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.TomRhodesGeschreven door Gebruik van rc met &os;rc.dSinds 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
+ &prompt.root; service restartDeze 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
+ &prompt.root; service sshd onerestartHet 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
+ &prompt.root; service sshd rcvar
# sshd
$sshd_enable=YESDe 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
+ &prompt.root; service 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.MarcFonvieilleGeschreven door Netwerkkaarten instellennetwerkkaarteninstellenHet 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 vindennetwerkkaartenstuurprogrammaVoor 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'sNDISNDISulator&windows; driversMicrosoft WindowsMicrosoft Windowsdevice driversKLD (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 kernelEen &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.koNaast 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_ndisHet 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 54MbpsVanaf 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 instellennetwerkkaarteninstellenNadat 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: activeOm 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.confTesten en problemen oplossenAls 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
+ &prompt.root; service netif restartAls 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
+ &prompt.root; service routing restartZodra het netwerk systeem is herstart, moeten de netwerk
interfaces opnieuw getest worden.Testen van de netwerkkaartnetwerk kaartentestenOm 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 msNu 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 msDit kan ook worden geprobeerd met de machine naam in plaats
van met 192.168.1.2 als dit
geconfigureerd is in /etc/hosts.Problemen oplossennetwerk kaartenprobleem oplossingHet 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 hostsvirtuele hostsIP-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"NiclasZeisingBijgedragen door De systeemlogger syslogd
configurerensysteemloggingsyslogsyslogdSysteemlogging 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 .syslogd gebruikenIn 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;.syslogd configurerensyslog.confHet 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.logBekijk &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
newsyslognewsyslognewsyslog.conflogrotatielogbeheerLogbestanden 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.newsyslog configurerenOm 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 * JCElke 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/etc layoutInstellingengegevens wordt in een aantal mappen bewaard.
Daar zijn onder andere:/etcGenerieke systeeminstellingenbestanden, specifiek
voor het systeem./etc/defaultsDe standaardversies van
systeeminstellingenbestanden./etc/mailExtra &man.sendmail.8; instellingenbestanden of
instellingenbestanden voor andere MTAs./etc/pppInstellingen voor zowel gebruiker- als kernel-ppp
programma's./etc/namedbStandaardlocatie voor &man.named.8; gegevens.
Normaal gesproken bevinden zich hier
named.conf en zonebestanden./usr/local/etcInstellingenbestanden voor geïnstalleerde
software. Kan submappen hebben waarin bij elkaar
horende instellingengegevens van een applicatie
gegroepeerd zijn./usr/local/etc/rc.dStart- en stopscripts voor geïnstalleerde
diensten./var/dbAutomatisch gemaakte systeemspecifieke
databasebestanden, zoals de pakketdatabase, de
&man.locate.1; database, enzovoort.HostnamenhostnaamDNS/etc/resolv.confresolv.confIn /etc/resolv.conf wordt
voorgeschreven op welke wijze &os; het Domain Name System
(DNS) moet gebruiken.De meest voorkomende termen in
resolv.conf zijn:nameserverHet 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.searchZoeklijst voor het opzoeken van hostnamen.
Meestal wordt deze bepaald door het domein waarop de
lokale hostnaam zich bevindt.domainDe lokale domeinnaam.Een typisch resolv.conf
bestand:search example.com
nameserver 147.11.1.11
nameserver 147.11.100.30search 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./etc/hostshosts/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 foobar2In &man.hosts.5; staat meer informatie.sysctl.confsysctl.confsysctlsysctl.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=0Optimaliseren met sysctlsysctloptimaliseringmet 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 -aOm een bepaalde variabele op te vragen, bijvoorbeeld
kern.maxproc:&prompt.user; sysctl kern.maxproc
kern.maxproc: 1044Om een bepaalde variabele toe te kennen (te wijzigen), is de
syntaxis
variable=value:&prompt.root; sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000Waarden 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 .TomRhodesGeschreven door &man.sysctl.8; alleen-lezenIn 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 12In 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.confhw.pci.allow_unsupported_io_range=1 ingesteld
worden. Dan werkt &man.cardbus.4; wel goed.Harde schijven optimaliserenSysctl-variabelenvfs.vmiodirenablevfs.vmiodirenableDe 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.vfs.write_behindvfs.write_behindDe 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.vfs.hirunningspacevfs.hirunningspaceDe 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.vm.swap_idle_enabledvm.swap_idle_enabledDe 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.hw.ata.wchw.ata.wcTen 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;.SCSI_DELAY
(kern.cam.scsi_delay)kern.cam.scsi.delaykerneloptiesSCSI_DELAYDe 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.SoftupdatesSoftupdatestunefs&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 /filesystemEen 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 softupdatesSoftupdatesdetailsEr 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 kernellimietenfijnafstemmingkernellimietenBestandsproceslimietenkern.maxfileskern.maxfileskern.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.kern.ipc.somaxconnkern.ipc.somaxconnDe 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.NetwerkbeperkingenDe 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.net.inet.ip.portrange.*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 bandbreedtevertragingsproductnet.inet.tcp.inflight.enableDe 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 Geheugenkern.maxvnodesEen 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: 91349Om het maximale aantal vnodes weer te geven:&prompt.root; sysctl kern.maxvnodes
kern.maxvnodes: 100000Als 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 toevoegenHoe 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 schijfEen 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/ada1s1bHet 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 0Raadpleeg &man.fstab.5; voor een uitleg over de regels in
/etc/fstab.Swappen over NFSIn 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.WisselbestandenHet 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 mdKijk 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=64De correcte rechten op /usr/swap0
instellen:&prompt.root; chmod 0600 /usr/swap0Het wisselbestand opnemen in
/etc/rc.conf:swapfile="/usr/swap0" # Instellen op naam van wisselbestand als hulpwisselbestand gewenst isDe 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/md0HitenPandyaGeschreven door TomRhodesEnergie- en bronnenbeheerHet 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?ACPIAPMAdvanced 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 APMMet 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;.ACPI instellenHet 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 -pAndere opties zijn mogelijk via &man.sysctl.8;. Zie de
handleidingen van &man.acpi.4; en &man.acpiconf.8; voor meer
informatie.NateLawsonGeschreven door PeterSchultzMet medewerking van TomRhodes&os; ACPI gebruiken en debuggenACPI 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 aanleverenVoordat 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.AchtergrondACPI 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 problemenWil 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.MuisproblemenSoms 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/resumeACPI 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: 0Dit 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 3Deze 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).interruptstormsInterruptstorms 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 (CTRLALTESC) en
show interrupts uit te voeren.APICuitschakelenDe beste hoop in geval van interruptproblemen is om
APIC-ondersteuning uit te zetten met
hint.apic.0.disabled="1" in
loader.conf.PanicsPanics 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 stophw.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 problemenAls 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.ASL, acpidump en
IASLACPIASLHet 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_FOUNDVaak 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.aslASL reparerenACPIASLOp 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.ACPIfoutmeldingenHieronder staat een lijst algemene foutmeldingen, hun
oorzaken en hoe ze op te lossen:_OS afhankelijkhedenSommige 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-opdrachtenSommige 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 AML aanpassenNadat eigen.asl aangepast is, kan
deze als volgt gecompileerd worden:&prompt.root; iasl eigen.aslMet 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 ACPI verkrijgenACPIproblemenACPIdebuggenHet 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=1acpi.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.VerwijzingenMeer 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).
diff --git a/nl_NL.ISO8859-1/books/handbook/kernelconfig/chapter.xml b/nl_NL.ISO8859-1/books/handbook/kernelconfig/chapter.xml
index 03a81b5927..73cdcb431c 100644
--- a/nl_NL.ISO8859-1/books/handbook/kernelconfig/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/kernelconfig/chapter.xml
@@ -1,1677 +1,1672 @@
JimMockBijgewerkt en opnieuw gestructureerd door JakeHambyOorspronkelijk bijgedragen door RenéLadanVertaald door De &os;-kernel instellenSamenvattingkerneleen aangepaste kernel bouwenDe kernel is de kern van het &os;-besturingssysteem en is
verantwoordelijk voor het geheugenbeheer, het opleggen van
beveiligingsregels, het aansturen van het netwerk, de toegang tot
schijven en nog veel meer. Hoewel steeds meer in &os; dynamisch
instelbaar wordt, is het af en toe nodig om de kernel opnieuw in
te stellen en te compileren.Na het lezen van dit hoofdstuk weet de lezer:Waarom het nodig is om een aangepaste kernel te bouwen;Hoe een nieuw kernelinstellingenbestand te schrijven of
een bestaand kernelinstellingenbestand aan te passen;Hoe het kernelinstellingenbestand te gebruiken om een
nieuwe kernel aan te maken en te bouwen;Hoe een nieuwe kernel te installeren;Hoe problemen op te lossen als er iets verkeerd gaat.Alle opdrachten die in dit hoofdstuk als voorbeeld zijn
gegeven moeten als root uitgevoerd worden om
te slagen.Redenen om een aangepaste kernel te bouwenTraditioneel heeft &os; zoals dat heet een
monolitische kernel gehad. Dit betekent dat de
kernel één groot programma was, een vaste lijst
van apparaten ondersteunde en als het gewenst was om het gedrag
van de kernel te veranderen, moest er een nieuwe kernel
gecompileerd worden en moest daarna de computer opnieuw gestart
worden met de nieuwe kernel.Vandaag de dag beweegt &os; zich snel naar een model waar
veel van de functionaliteit van de kernel in modules zit die
dynamisch in en uit de kernel kunnen worden geladen, naargelang
dat noodzakelijk is. Dit stelt de kernel in staat om zich aan
nieuwe hardware aan te passen die plotseling beschikbaar komt
(zoals PCMCIA-kaarten in een laptop) of om nieuwe functionaliteit
in zich op te nemen die niet noodzakelijk was toen de kernel
oorspronkelijk werd gecompileerd. Dit staat bekend als een
modulaire kernel.Desondanks is het nog steeds nodig om enkele dingen van de
kernel statisch in te stellen. In sommige gevallen komt dit
doordat de functionaliteit zo diep geworteld zit in de kernel dat
het niet dynamisch laadbaar gemaakt kan worden. In andere
gevallen kan het simpelweg komen doordat nog niemand de tijd
heeft genomen om een dynamisch laadbare kernelmodule voor die
functionaliteit te schrijven.Het bouwen van een aangepaste kernel is een van de meest
belangrijke beproevingen die geavanceerde BSD-gebruikers moet
doorstaan. Hoewel dit proces veel tijd in beslag neemt, levert
het veel voordelen op voor een &os; systeem. In tegenstelling
tot de GENERIC-kernel, die vele typen
hardware moet ondersteunen, ondersteunt een aangepaste kernel
alleen de hardware van de computer waar hij voor gemaakt is. Dit
biedt een aantal voordelen, zoals:Een snellere opstarttijd. Aangezien de kernel alleen de
hardware zoekt die zich in het systeem bevindt, kan de tijd
die het systeem nodig heeft om op te starten aanzienlijk
korter worden;Minder geheugengebruik. Een aangepaste kernel gebruikt
vaak minder geheugen dan de
GENERIC-kernel door ongebruikte mogelijkheden
en apparaatstuurprogramma's weg te laten. Dit is van belang
aangezien de kernelcode altijd in het fysieke geheugen aanwezig
blijft, waardoor dit geheugen niet door applicaties gebruikt kan
worden. Om deze reden is een aangepaste kernel geknipt
voor een systeem met een kleine hoeveelheid RAM;Aanvullende hardware-ondersteuning. Een aangepaste
kernel kan ingebouwde ondersteuning bieden voor apparaten die
zich niet in de GENERIC-kernel bevinden,
zoals geluidskaarten.TomRhodesGeschreven door De systeemhardware vindenAlvorens in de kernelconfiguratie te duiken, zou het
verstandig zijn om een inventarisatie van de hardware van de
machine te maken. In het geval dat &os; niet het primaire
besturingssysteem is, kan de inventarisatielijst eenvoudig worden
gemaakt door de configuratie van het huidige besturingssysteem te
bekijken. De Device Manager van
µsoft; bijvoorbeeld bevat normaliter belangrijke informatie
over geïnstalleerde apparaten. De Device
Manager bevindt zich in het controlepaneel.Sommige versies van µsoft.windows; hebben een icoon
System dat een scherm weer zal geven
waarmee Device Manager kan worden
benaderd.Als er geen ander besturingssysteem op de machine staat, moet
de beheerder deze informatie handmatig vinden. Eén manier
is om de gereedschappen &man.dmesg.8; en &man.man.1; te gebruiken.
De meeste apparaatstuurprogramma's van &os; hebben een
handleiding, die de ondersteunde hardware noemen, en tijdens het
opstarten wordt gevonden hardware getoond. De volgende regels
geven bijvoorbeeld aan dat het stuurprogramma voor
psm een muis heeft gevonden:psm: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: [ITHREAD]
psm0: model Generic PS/2 mouse, device ID 0Dit stuurprogramma zal in het eigen kernelinstellingenbestand
opgenomen moeten worden of worden geladen met &man.loader.conf.5;.Soms geven de gegevens van dmesg alleen de
systeemboodschappen weer in plaats van de uitvoer van de
opstartonderzoeken. In deze gevallen kan de uitvoer worden
verkregen door het bestand
/var/run/dmesg.boot te bekijken.Een andere methode om hardware te vinden is door
&man.pciconf.8; te gebruiken welke meer gedetailleerde uitvoer
geeft. Bijvoorbeeld:ath0@pci0:3:0:0: class=0x20000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00
vendor = 'Atheros Communications Inc.'
device = 'AR5212 Atheros AR5212 802.11abg wireless'
class = network
subclass = ethernetDit beetje uitvoer, verkregen met
pciconf geeft aan dat het
stuurprogramma ath een draadloos
Ethernetapparaat heeft gevonden. Het gebruik van
man ath zal de
handleiding voor &man.ath.4; teruggeven.Wanneer de vlag aan &man.man.1; wordt
gegeven kan deze nuttige informatie geven. Met het bovenstaande
kan dit gedaan worden:&prompt.root; man -k Atherosom een lijst handleidingen te krijgen die dat ene woord
bevatten:ath(4) - Atheros IEEE 802.11 wireless network driver
ath_hal(4) - Atheros Hardware Access Layer (HAL)Gewapend met een inventarisatielijst van de hardware zou het
proces van het bouwen van een eigen kernel minder angstaanjagend
moeten lijken.Kernel stuurprogramma's, subsystemen, en moduleskernelstuurprogramma's / modules / subsystemenBekijk, voordat er een eigen kernel gebouwd wordt, de redenen
om dit te doen. Als er de noodzaak is voor specifieke
hardwareondersteuning, kan dit reeds beschikbaar zijn als een
module.Kernelmodules staan in de map /boot/kernel en kunnen dynamisch in
de draaiende kernel worden geladen met &man.kldload.8;. De
meeste, als niet alle, kernelstuurprogramma's hebben een
specifieke module en een handleiding. De laatste sectie merkte
bijvoorbeeld het draadloze Ethernetstuurprogramma
ath op. Van dit stuurprogramma staat de
volgende informatie in de handleiding:Plaats de volgende regel in &man.loader.conf.5; om
het stuurprogramma tijdens het opstarten als een module te laden:
if_ath_load="YES"Zoals aangegeven, zal het toevoegen van de regel
if_ath_load="YES" aan
/boot/loader.conf deze module dynamisch
laden tijdens het opstarten.In sommige gevallen is er geen geassocieerde module. Dit
geldt het vaakst voor bepaalde subsystemen en zeer belangrijke
stuurprogramma's, het fast file system (FFS)
bijvoorbeeld is een verplichte optie in de kernel, net zoals
netwerkondersteuning (INET). Helaas is de enige manier om te zien
of een stuurprogramma nodig is naar de module zelf zoeken.Het is eenvoudig om ondersteuning voor een
apparaat of optie te verwijderen en met een kapotte kernel
opgezadeld te zitten. Als bijvoorbeeld het stuurprogramma
&man.ata.4; uit het kernelinstellingenbestand gehaald wordt,
zal een systeem dat ATA
schijfstuurprogramma's gebruikt niet opstarten zonder de module
aan loader.conf toe te voegen. Kijk bij
twijfel of de module aanwezig is en laat ondersteuning dan
gewoon in de kernel.Bouwen en installeren van een aangepaste kernelkernelbouwen / installerenHet is noodzakelijk om de volledige broncode van &os;
geïnstalleerd te hebben om de kernel te bouwen.Eerst wordt er een overzicht gegeven van de mappen waarin de
kernel gebouwd wordt. Alle genoemde mappen staan onder de map
/usr/src/sys, die ook toegankelijk is via
de padnaam /sys. Er zijn hier een aantal
mappen aanwezig die de verschillende delen van de kernel
representeren, maar de meest belangrijke hiervan zijn
arch/conf, waarin
de kernelinstellingen bewerkt worden en
compile, waarin de aangepaste kernel gebouwd
wordt. arch representeert hier
één van i386,
amd64,
ia64, powerpc,
sparc64 of pc98 (een
alternatieve ontwikkelingstak van PC-hardware die populair is in
Japan). Alles binnen de map van een bepaalde architectuur is er
alleen voor die architectuur. De rest van de code is
machine-onafhankelijk en hetzelfde op alle platformen waarnaar
&os; eventueel overgezet kan worden. De indeling van de
mapstructuur is logisch: alle ondersteunde apparaten,
bestandssystemen en opties staan in een eigen submap.Dit voorbeelden in dit hoofdstuk veronderstellen dat de
i386-architectuur gebruikt wordt. Als dit voor de lezer anders is,
moeten de bijhorende aanpassingen aan de padnamen worden gemaakt.Als de map /usr/src/niet aanwezig is op een systeem (of als het leeg
is), dan is de broncode niet geïnstalleerd. De eenvoudigste
manier om de volledige broncode te installeren is &man.csup.1; te
gebruiken zoals beschreven in . U dient
tevens een symbolische link naar /usr/src/sys/
aan te maken:&prompt.root; ln -s /usr/src/sys /sysDaarna kan vanuit de map
arch/conf het
instellingenbestand GENERIC naar de naam
voor de aangepaste kernel gekopieerd worden. Bijvoorbeeld:&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; cp GENERIC MIJNKERNELTraditioneel bestaat deze naam geheel uit hoofdletters en als
er meerdere &os;-machines worden beheerd met verschillende
hardware is het een goed idee om het te vernoemen naar de
hostnaam van de machine. Omwille van dit voorbeeld wordt het
MIJNKERNEL
genoemd.Het kernelinstellingenbestand direct onder
/usr/src opslaan kan een slecht idee zijn.
In geval van problemen kan het verleidelijk zijn om
/usr/src te verwijderen en opnieuw te
beginnen. Nadat dit gedaan is kost het vaak maar enkele
seconden om te realiseren dat het instellingenbestand voor de
aangepaste kernel verwijderd is. Ook moet
GENERIC niet gewijzigd worden, omdat het
tijdens de volgende keer dat de broncodeboom bijgewerkt
wordt, overschreven kan worden waarbij de wijzigingen
in de kernelinstellingen verloren gaan.Het kan gewenst zijn om het kernelinstellingenbestand
ergens anders op te slaan en een symbolische link naar het
bestand in de map
i386 aan te
maken:&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; mkdir /root/kernels
&prompt.root; cp GENERIC /root/kernels/MIJNKERNEL
&prompt.root; ln -s /root/kernels/MIJNKERNELNu moet
MIJNKERNEL met de
favoriete tekstverwerker bewerkt worden. Voor beginners is
waarschijnlijk alleen de tekstverwerker
vi beschikbaar, die te ingewikkeld is
om hier te beschrijven, maar goed is beschreven in vele boeken in
de bibliografie. &os; biedt
ook de eenvoudigere tekstverwerker ee,
die voor een beginner de keuze bij uitstek is. De
commentaarregels in het begin kunnen gewijzigd worden om de
persoonlijke instellingen of de veranderingen die gemaakt zijn ten
opzichte van GENERIC weer te geven.&sunos;Voor degenen die een kernel op &sunos; of een andere BSD
hebben gebouwd zal veel van dit bestand bekend voorkomen.
Echter, voor degenen die van een ander besturingssysteem zoals
DOS komen, kan het instellingenbestand
GENERIC overdonderend overkomen, dus moeten
de beschrijvingen in de sectie Het Instellingenbestand
zorgvuldig opgevolgd worden.Als de broncodeboom
gesynchroniseerd is met de nieuwste broncode van het
&os;-project, moet altijd
/usr/src/UPDATING gelezen worden voordat
enige bijwerkstappen worden genomen. Dit bestand beschrijft
alle belangrijke zaken en gebieden binnen de broncodestructuur
die speciale aandacht nodig hebben.
/usr/src/UPDATING komt altijd overeen met
de lokale versie van de &os;-broncode en is daarom meer
bijgewerkt met nieuwe informatie dan dit handboek.Nu moet de broncode voor de kernel gecompileerd worden.Een kernel bouwenHet is noodzakelijk om de volledige broncode van &os;
geïnstalleerd te hebben om te kernel te bouwen.Ga naar de map /usr/src:&prompt.root; cd /usr/srcCompileer de kernel:&prompt.root; make buildkernel KERNCONF=MIJNKERNELInstalleer de nieuwe kernel:&prompt.user; make installkernel KERNCONF=MIJNKERNELBij het bouwen van een aangepaste kernel worden standaard
alle kernelmodules ook herbouwd. Om de
kernel sneller bij te werken en alleen de aangepaste modules
te bouwen kan /etc/make.conf aangepast
worden voordat de kernel wordt gebouwd:MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfsMet deze variabele wordt een lijst van te bouwen modules
ingesteld die gebouwd moeten worden in plaats van allen.WITHOUT_MODULES = linux acpi sound ntfsDeze variabele stelt een lijst in van modules op het topniveau
die moeten worden uitgesloten van het bouwproces. Andere variabelen
die mogelijk ook nuttig zijn in het proces van het bouwen van een
kernel staan beschreven in de handleiding voor
&man.make.conf.5;./boot/kernel.oldDe nieuwe kernel wordt naar de map /boot/kernel gekopieerd als
/boot/kernel/kernel en de oude kernel wordt
verplaatst naar /boot/kernel.old/kernel. Nu
moet het systeem afgesloten worden en opnieuw worden opgestart om
gebruik te maken van de nieuwe kernel. Er zijn wat instructies
voor problemen
oplossen aan het einde van dit hoofdstuk, die erg nuttig
kunnen zijn als er iets misgaat. Vergeet niet om het gedeelte te
lezen waarin staat uitgelegd hoe te herstellen als de nieuwe
kernel niet
opstart.Andere bestanden die te maken hebben met het opstartproces,
zoals de boot &man.loader.8; en instellingen worden opgeslagen
in /boot. Modules van derde partijen of
eigen modules kunnen in /boot/kernel opgeslagen worden,
alhoewel gebruikers erop bedacht moeten zijn dat het erg
belangrijk is dat de modules synchroon worden gehouden met de
gecompileerde kernel. Modules die niet bedoeld zijn om met de
gecompileerde kernel te draaien kunnen voor instabiliteit of
onjuistheden zorgen.JoelDahlBijgewerkt door Het instellingenbestandkernelNOTESNOTESkernelinstellingenbestandHet algemene formaat van een instellingenbestand is vrij
eenvoudig. Elke regel bevat een sleutelwoord en
één of meer argumenten. Omwille van de eenvoud
bevatten de meeste regels maar één argument. Alles
wat na een # komt, wordt als commentaar
beschouwd en genegeerd. De volgende gedeelten beschrijven elk
sleutelwoord, in het algemeen in dezelfde volgorde als
GENERIC, alhoewel sommige samenhangende
sleutelwoorden gegroepeerd zijn in een enkel gedeelte (zoals
Netwerken) zelfs al staan ze verspreid in het bestand
GENERIC.
Een uitputtende lijst van architectuurafhankelijke opties en
apparaten staat in het bestand NOTES, dat in
dezelfde map staat als het bestand GENERIC.
Architectuuronafhankelijke opties staan in
/usr/src/sys/conf/NOTES.Een nieuwe directief include is beschikbaar
om te gebruiken in
instellingenbestanden. Hiermee kan een ander instellingenbestand logisch
in het huidige worden opgenomen, waardoor het eenvoudig wordt om kleine
veranderingen relatief aan een bestaand bestand te onderhouden. Als u
bijvoorbeeld een GENERIC kernel nodig heeft met
slechts een klein aantal aanvullende opties of stuurprogramma's, hoeft u
hiermee slechts een delta ten opzichte van GENERIC te onderhouden:include GENERIC
ident MIJNKERNEL
options IPFIREWALL
options DUMMYNET
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPDIVERTVeel beheerders zullen aanzienlijke voordelen in dit model zien
vergeleken met de vroegere gewoonte om instellingenbestanden vanuit het
niets te schrijven: het lokale instellingenbestand zal alleen lokale
verschillen uitdrukken ten opzichte van een GENERIC
kernel en wanneer upgrades worden uitgevoerd zullen nieuwe mogelijkheden
die aan GENERIC zijn toegevoegd ook aan de lokale
kernel worden toegevoegd tenzij dit expliciet verhinderd wordt met
nooptions of nodevice. De rest van
dit hoofdstuk behandelt de inhoud van een typisch instellingenbestand en
de verschillende rollen die opties en apparaten spelen.Draai het volgende commando als root om
een bestand te bouwen dat alle beschikbare opties bevat, wat
normaliter voor testdoeleinden gedaan wordt:&prompt.root; cd /usr/src/sys/i386/conf && make LINTkernelinstellingenbestandHet volgende is een voorbeeld van het
kernelinstellingenbestand GENERIC met
aanvullend commentaar omwille van de helderheid. Dit voorbeeld
is redelijk gelijk aan de versie in
/usr/src/sys/i386/conf/GENERIC.kerneloptiesmachinemachine i386Dit is de architectuur van de machine. Het moet
één van amd64,
i386,
ia64, pc98,
powerpc of sparc64
zijn.kerneloptiescpucpu I486_CPU
cpu I586_CPU
cpu I686_CPUBovenstaande optie geeft het type CPU aan dat in een systeem
zit. De CPU-regel kan meerdere keren voorkomen (als bijvoorbeeld
onbekend is of I586_CPU of
I686_CPU gebruikt moet worden), maar voor een
aangepaste kernel is het beter om alleen de aanwezige CPU aan te
geven. Als er twijfel bestaat over het type CPU, kan het bestand
/var/run/dmesg.boot worden bekeken voor de
opstartberichten.kerneloptiesidentident GENERICDit is de identificatie van de kernel. Dit moet veranderd
worden in de naam van de kernel, dus
MIJNKERNEL als de
instructies van de voorgaande voorbeelden gevolgd zijn. De waarde
in de string ident wordt afgebeeld wanneer de
kernel opstart, dus is het handig om de nieuwe kernel een andere
naam te geven als deze apart moet worden gehouden van de
gebruikelijke kernel (als er bijvoorbeeld een experimentele kernel
gebouwd wordt).#Om apparaatbindingen statisch in te compileren in plaats van via /boot/device.hints.
#hints "GENERIC.hints" # Standaardlocatie voor devices.&man.device.hints.5; wordt gebruikt om opties van de
programma's die de apparaten aansturen in te stellen. De
standaardplaats die &man.loader.8; controleert tijdens het
opstarten is /boot/device.hints. Met de
optie hints is het mogelijk om deze
aanwijzingen statisch in de kernel te compileren, waardoor er
geen noodzaak is om een bestand device.hints
in /boot aan te maken.makeoptions DEBUG=-g # Bouw kernel met gdb(1) debugsymbolen.Het normale bouwproces van &os; voegt debuginformatie toe
wanneer de kernel met de optie gebouwd wordt,
wat debuginformatie doorgeeft aan &man.gcc.1;.options SCHED_ULE # ULE taakplannerDe standaard taakplanner voor &os;. Laat dit staan.options PREEMPTION # Zet kernelthreadpreëmptie aanSta toe dat threads in de kernel worden gepreëmpt door
threads met een hogere prioriteit. Het help bij interactiviteit
en staat toe dat interruptthreads eerder draaien in plaats van te
moeten wachten.options INET # internetwerkenNetwerkondersteuning. Laat dit aanstaan, zelfs als een
verbinding met een netwerk niet gepland is. De meeste
programma's hebben tenminste een teruglusnetwerk nodig (dat wil
zeggen het maken van netwerkverbindingen binnen de PC), dus dit
is eigenlijk verplicht.options INET6 # IPv6 communicatieprotocollenDit zet de IPv6-communicatieprotocollen aan.options FFS # Berkeley Fast BestandssysteemDit is het basisbestandssysteem voor de harde schijf. Laat
dit erin staan als er vanaf de harde schijf wordt
opgestart.options SOFTUPDATES # Schakel FFS Softupdates ondersteuning inDeze optie zet softupdates in de kernel aan en helpt om de
schijftoegang voor schrijven te verhogen. Zelfs als deze
functionaliteit door de kernel geleverd wordt, moet die voor
specifieke schijven worden aangezet. Bekijk de uitvoer van
&man.mount.8; om te zien of softupdates aanstaat voor de
systeemschijven. Als de optie soft-updates
niet zichtbaar is, dient deze geactiveerd te worden met behulp
van &man.tunefs.8; voor bestaande bestandssystemen of
&man.newfs.8; voor nieuwe bestandssystemen.options UFS_ACL # Ondersteuning voor toegangscontrolelijstenMet deze optie wordt de ondersteuning voor
toegangscontrolelijsten aangezet. Hiervoor zijn uitgebreide
attributen en UFS2 nodig. Een en ander wordt
in detail beschreven in .
ACL's staan standaard aan en moeten niet
uitgezet worden in de kernel als ze al eerder op een
bestandssysteem zijn gebruikt, omdat dit de
toegangscontrolelijsten verwijdert en hierdoor de manier waarop
bestanden beschermd worden op onvoorspelbare wijze verandert.options UFS_DIRHASH # Verbeter prestaties in grote mappenDeze optie bevat functionaliteit om schijfoperaties op grote
mappen te versnellen, ten koste van extra geheugen. Deze staat
normaalgesproken, zoals voor een grote server of interactief
werkstation, aan en wordt uitgezet als &os; op een kleiner
systeem wordt gebruikt waar geheugen het belangrijkste en
schijfsnelheid minder belangrijk is, zoals voor een
firewall.options MD_ROOT # MD is een potentieel rootapparaatDeze optie zet ondersteuning aan voor een virtuële
schijf die in het geheugen wordt geïmplementeerd en als
rootapparaat wordt gebruikt.kerneloptiesNFSkerneloptiesNFS_ROOToptions NFSCLIENT # Netwerk Bestandssysteem Client
options NFSSERVER # Netwerk Bestandssysteem Server
options NFS_ROOT # NFS bruikbaar als /, NFSCLIENT nodigHet netwerkbestandssysteem. Dit kan weggelaten worden tenzij
er gepland is om partities te aan te koppelen van een &unix;
bestandsserver over TCP/IP.kerneloptiesMSDOSFSoptions MSDOSFS # MSDOS BestandssysteemHet &ms-dos; bestandssysteem. Dit kan veilig weggelaten
worden, tenzij er gepland is om een DOS-geformatteerde partitie
van de harde schijf tijdens het opstarten aan te koppelen. Het
wordt automatisch geladen als er voor de eerste keer een
DOS-partitie wordt aangekoppeld, zoals boven beschreven.
Bovendien geeft de uitstekende software emulators/mtools toegang tot
DOS-floppies zonder dat ze aangekoppeld en afgekoppeld moeten
worden en heeft het MSDOSFS helemaal niet
nodig.options CD9660 # ISO 9660 BestandssysteemHet ISO 9960-bestandssysteem voor CD-ROMs. Commentarieer dit
uit als er geen CD-ROM drive aanwezig is of als er slechts af en
toe gegevens-CD-ROMs aangekoppeld worden (aangezien het dynamisch
geladen wordt als er voor de eerste keer een gegevens-CD-ROM
aangekoppeld wordt). Audio-CD's hebben dit bestandssysteem niet
nodig.options PROCFS # Procesbestandssysteem (vereist PSEUDOFS)Het procesbestandssysteem. Dit is een als-of
bestandssysteem, aangekoppeld op /proc, dat
programma's als &man.ps.1; in staat stelt om meer informatie over
de draaiende processen te geven. Het is in de meeste
omstandigheden niet nodig om PROCFS te
gebruiken, omdat de meeste debug- en monitorgereedschappen zijn
aangepast om zonder PROCFS te draaien:
installaties koppelen dit bestandssysteem standaard niet aan.options PSEUDOFS # Pseudo-bestandssysteem raamwerkKernels die PROCFS gebruiken moeten ook
ondersteuning voor PSEUDOFS opnemen.options GEOM_PART_GPT # GUID Partitietabellen.Voegt ondersteuning voor GUID
Partitietabellen toe. GPT biedt de mogelijkheid om een groot
aantal partities per schijf te hebben, 128 is de
standaardconfiguratie.options COMPAT_43 # Compatibel met BSD 4.3 [ERIN HOUDEN!]Compatibiliteit met 4.3BSD. Laat dit aanstaan. Sommige
programma's gedragen zich vreemd als dit uitgecommentarieerd
wordt.options COMPAT_FREEBSD4 # Compatibel met &os; 4Deze optie is nodig
om ondersteuning te bieden aan applicaties die gecompileerd zijn
op oudere versies van &os; en gebruik maken van oudere
systeemaanroep-interfaces. Het is aanbevolen dat deze optie
gebruikt wordt op alle &i386; systemen die mogelijk
oudere applicaties draaien. Voor platformen die pas in 5.X
ondersteuning verwierven, zoals ia64 en &sparc64;, is deze optie
niet nodig.options COMPAT_FREEBSD5 # Compatibel met &os;5Deze optie is vereist om ondersteuning te geven aan
applicaties die gecompileerd zijn op &os; 5.X die gebruik
maken van de systeemaanroepinterfaces van &os; 5.X.options COMPAT_FREEBSD6 # Compatibel met &os;5Deze optie is vereist om ondersteuning te geven aan
applicaties die gecompileerd zijn op &os; 6.X die gebruik
maken van de systeemaanroepinterfaces van &os; 6.X.options COMPAT_FREEBSD7 # Compatibel met &os;5Deze optie is vereist om ondersteuning te geven aan
applicaties die gecompileerd zijn op &os; 7.X die gebruik
maken van de systeemaanroepinterfaces van &os; 7.X.options SCSI_DELAY=5000 # Vertraging (in ms) voordat SCSI wordt ondergezocht.Dit zorgt ervoor dat de kernel vijf seconden wacht voordat die
elk SCSI-apparaat in het systeem onderzoekt. Als er alleen
IDE-harde schijven zijn, kan deze optie genegeerd worden, anders
kan geprobeerd worden dit getal te verlagen, om het opstarten te
versnellen. Uiteraard moet deze waarde weer verhoogd worden als
&os; problemen heeft om de SCSI-apparaten te herkennen.options KTRACE # ktrace(1) ondersteuningDit schakelt kernelondersteuning voor het volgen processen
in, wat handig is tijdens debuggen.options SYSVSHM # SYSV-stijl gedeeld geheugenDeze optie biedt System V gedeeld geheugen. Meestal
wordt dit wegens de XSHM-uitbreiding in X gebruikt, waar door
vele grafische programma's automatisch gebruik van wordt gemaakt
voor extra snelheid. Als X gebruik wordt, is het raadzaam om dit
op te nemen.options SYSVMSG # SYSV-stijl berichtwachtrijenDit biedt ondersteuning voor System V berichten. Ook
deze optie voegt slechts een paar honderd bytes aan de kernel
toe.options SYSVSEM # SYSV-stijl semaforenDit biedt ondersteuning voor System V semaforen. Het
wordt minder vaak gebruikt, maar voegt slechts een paar honderd
bytes aan de kernel toe.De optie van het commando &man.ipcs.1;
geeft een lijst van alle processen die een van deze
System V faciliteiten gebruikt.options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensiesDit biedt real-time-uitbreidingen die in de 1993 &posix; zijn
toegevoegd. Bepaalde applicaties in de Portscollectie gebruiken
deze (zoals &staroffice;).options KBD_INSTALL_CDEV # installeer een CDEV-ingang in /devDeze optie is nodig om apparaatknooppunten voor het
toetsenbord aan te maken in /dev.options ADAPTIVE_GIANT # Giant mutex is adaptief.Giant is de naam van een wederzijds uitsluitingsmechanisme
(een sleep mutex) dat een grote verzameling kernelbronnen
beschermt. Vandaag de dag is dit een onacceptabele
prestatie-bottleneck die actief door sloten wordt vervangen die
individuele bronnen beschermen. De optie
ADAPTIVE_GIANT zorgt ervoor dat Giant in de
verzamelingen van mutexen wordt opgenomen waar actief wordt
opgespind. Dit betekent dat wanneer een thread de Giant-mutex
wil nemen, maar die reeds door een thread op een andere CPU
genomen is, de eerste thread blijft draaien en wacht tot er een
slot vrijkomt. Normaalgesproken zou de thread weer gaan slapen
en wachten op de volgende kans om te draaien. Laat dit er in
geval van twijfel instaan.Merk op dat in &os; 8.0-RELEASE en later alle mutexen
standaard adaptief zijn, tenzij ze expliciet op niet-adaptief
zijn gezet door met de optie
NO_ADAPTIVE_MUTEXES te compileren. Een
gevolg is dat Giant nu standaard adaptief is, en dat de optie
ADAPTIVE_GIANT uit de kernelinstellingen is
verwijderd.kerneloptiesSMPdevice apic # I/O APICHet apic-apparaat zet de ondersteuning voor I/O-APIC voor het
afleveren van interrupts aan. Het apic-apparaat kan zowel in UP-
als in SMP-kernels gebruikt worden, maar is noodzakelijk voor
SMP-kernels. Voeg options SMP toe om
ondersteuning voor meerdere processoren op te nemen.Het apic-apparaat bestaat alleen in de i386-architectuur,
deze instelregel dient niet op andere architecturen gebruikt te
worden.device eisaNeem dit op voor een EISA-moederbord. Dit zet ondersteuning
voor zelfdetectie en -instelling aan voor alle apparaten op de
EISA-bus.device pciNeem dit op voor een PCI-moederbord. Dit zet ondersteuning
voor zelfdetectie van PCI-kaarten en gatewaying van
PCI-naar-ISA-bus aan.# Floppy drives
device fdcDit is de controller voor de floppydrive.# ATA- en ATAPI-apparaten
device ataDit stuurprogramma biedt ondersteuning aan alle ATA- en
ATAPI-apparaten. Er is slechts één device
ata-regel nodig om de kernel alle PCI
ATA/ATAPI-apparaten te laten ontdekken op moderne
machines.device atadisk # ATA schijvenDit is samen met device ata nodig voor ATA
schijven.device ataraid # ATA RAID schijvenDit is samen met device ata nodig voor ATA
RAID-schijven.
device atapicd # ATAPI CD-ROM drivesDit is samen met device ata nodig voor
ATAPI CD-ROM drives.device atapifd # ATAPI floppy drivesDit is samen met device ata nodig voor
ATAPI floppydrives.device atapist # ATAPI tape drivesDit is samen met device ata nodig voor
ATAPI tapedrives.options ATA_STATIC_ID # Statische apparaatnummeringDit zorgt ervoor dat de controller statisch nummert. Zonder
deze optie worden nummers dynamisch toegewezen.# SCSI Controllers
device ahb # EISA AHA1742 familie
device ahc # AHA2940 en onboard AIC7xxx apparaten
options AHC_REG_PRETTY_PRINT # Print registerbitvelden in
# debuguitvoer. Voegt ~128k
# aan stuurprogramma toe.
device ahd # AHA39320/29320 en onboard AIC79xx apparaten
options AHD_REG_PRETTY_PRINT # Print registerbitvelden in
# debuguitvoer. Voegt ~215k
# aan stuurprogramma toe.
device amd # AMD 53C974 (Teckram DC-390(T))
device isp # Qlogic familie
#device ispfw # Firmware voor QLogic HBAs- normaliter een module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (nieuwere chipsets + die van `ncr')
device trm # Tekram DC395U/UW/F DC315U adapters
device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aha # Adaptec 154x SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters
device ncv # NCR 53C500
device nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50SCSI controllers. Commentarieer de regels uit voor apparaten
die niet in het systeem aanwezig zijn. Als het een systeem met
alleen IDE apparaten betreft, kunnen ze allemaal weggelaten
worden. De regels met *_REG_PRETTY_PRINT zijn
debugopties voor hun respectievelijke stuurprogramma's.# SCSI randapparaten
device scbus # SCSI bus (nodig voor SCSI)
device ch # SCSI media changers
device da # Direct Access (schijven)
device sa # Sequential Access (tape, enzovoort)
device cd # CD
device pass # Passthrough apparaat (directe SCSI-toegang)
device ses # SCSI Omgevingsdiensten (en SAF-TE)SCSI-aanhangsels. Ook hier geldt dat apparaten die niet
aanwezig zijn uitgecommentarieerd kunnen worden, of als alleen
IDE-hardware aanwezig is, ze allemaal weggelaten kunnen
worden.Het USB-stuurprogramma &man.umass.4; en enkele andere
stuurprogramma's gebruiken het SCSI-subsysteem, alhoewel ze
geen echte SCSI-apparaten zijn. Daarom mag SCSI-ondersteuning
niet verwijderd worden als dit soort stuurprogramma's in de
kernelinstellingen worden opgenomen.# RAID controllers met interfaces naar het SCSI subsysteem
device amr # AMI MegaRAID
device arcmsr # Areca SATA II RAID
device asr # DPT SmartRAID V, VI en Adaptec SCSI RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - Zie NOTES voor opties
device hptmv # Highpoint RocketRAID 182x
device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
device twa # 3ware 9000 series PATA/SATA RAID
# RAID controllers
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough voor aac (heeft CAM nodig)
device ida # Compaq Smart RAID
device mfi # LSI MegaRAID SAS
device mlx # Mylex DAC960 famile
device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAIDOndersteunde RAID-controllers. Als een van deze niet
aanwezig is, kan deze uitgecommentarieerd of verwijderd
worden.# atkbdc0 bestuurt het toetsenbord en de PS/2 muis
device atkbdc # AT toetsenbordcontrollerDe toetsenbordcontroller (atkbdc) biedt
I/O-diensten aan voor het AT-toetsenbord en het PS/2-type van
aanwijsapparaten. Deze controller is noodzakelijk voor het
toetsenbordstuurprogramma (atkbd) en het
PS/2-aanwijsapparaatstuurprogramma
(psm).device atkbd # AT toetsenbordHet stuurprogramma atkbd biedt samen met
de controller atkbdc toegang tot het
AT84-toetsenbord of het uitgebreide AT-toetsenbord dat verbonden
is met de controller voor het AT-toetsenbord.device psm # PS/2 muisDit apparaat kan gebruikt worden als de muis in de
PS/2-muispoort wordt geplugd.device kbdmux # toetsenbordmultiplexerBasisondersteuning voor multiplexing van toetsenborden. Als u
niet van plan bent om meerdere toetsenborden op het systeem te
gebruiken, kunt u deze regel veilig verwijderen.device vga # VGA videokaart stuurprogrammaHet stuurprogramma voor de videokaart.device splash # Splash screen en screensaver ondersteuningEen splash-scherm tijdens het opstarten! Screensavers hebben
deze optie ook nodig.# syscons is het standaard consolestuurprogramma, lijkt op een SCO console
device scsc is het standaard consolestuurprogramma
en lijkt op een SCO-console. Aangezien de meeste programma's die
met een volledig scherm werken de console via een
terminaldatabase zoals termcap benaderen,
moet het niet uitmaken of dit of vt, het
VT220-compatibele consolestuurprogramma,
gebruikt wordt. Wanneer er aangemeld wordt, dient de variabele
TERM op scoansi gezet worden
indien programma's die met een volledig scherm werken problemen
hebben om met dit console te draaien.# Schakel dit in voor het pcvt (VT220 compatibele) consolestuurprogramma
#device vt
#options XSERVER # ondersteuning voor X server op een vt console
#options FAT_CURSOR # begin met een blokcursorDit is een VT220-compatibel consolestuurprogramma,
achterwaarts compatibel met de VT100/102. Het werkt goed op
enkele laptops die hardware-incompatibiliteiten hebben met
sc. Ook dient de variabele
TERM op vt100 of
vt220 gezet te worden bij het aanmelden. Dit
stuurprogramma kan ook nuttig zijn wanneer er verbinding wordt
gemaakt met een groot aantal verschillende machines in een
netwerk, waarbij de ingangen termcap of
terminfo voor het apparaat
sc vaak niet beschikbaar zijn.
vt100 is op bijna elk platform
beschikbaar.device agpNeem dit op als er een AGP-kaart in het systeem aanwezig is.
Dit zet ondersteuning voor AGP aan, en ondersteuning voor AGP
GART voor borden die deze mogelijkheden hebben.APM# Ondersteuning voor energiebeheer (zie NOTES voor meer opties)
#device apmOndersteuning voor geavanceerd energiebeheer (Advanced Power
Management). Dit is nuttig voor laptops, alhoewel dit
standaard uitgeschakeld is in GENERIC.# Schakel suspend/resume ondersteuning voor de i8254 in.
device pmtimerHet stuurprogramma voor het timerapparaat voor
energiebeheergebeurtenissen, zoals APM en ACPI.# PCCARD (PCMCIA) ondersteuning.
# PCMCIA en cardbus bridge ondersteuning.
device cbb # cardbus (yenta) bridge
device pccard # PC Card (16-bit) bus
device cardbus # CardBus (32-bit) busOndersteuning voor PCMCIA. Dit is wenselijk voor
laptopgebruikers.# Serial (COM) poorten
device sio # 8250, 16[45]50-gebaseerde seriële poortenDit zijn de seriële poorten waarnaar in de wereld van
&ms-dos;/&windows; verwezen wordt als
COM-poorten.Als er een intern modem op COM4 en
een seriële poort op COM2
aanwezig is, moet het IRQ van het modem in 2 worden veranderd
(om duistere technische redenen geldt dat IRQ2 = IRQ9) om er
vanuit &os; toegang toe te krijgen. Als er een multipoort
seriële kaart aanwezig is, staat in &man.sio.4; meer
informatie over de juiste waarden die aan
/boot/device.hints toegevoegd moeten
worden. Sommige videokaarten (vaak gebaseerd op S3 chips)
gebruiken IO-adressen van de vorm 0x*2e8, en
omdat vele goedkope serieële kaarten de 16-bits
IO-adresruimte niet volledig decoderen, botsen ze met deze
kaarten waardoor de COM4-poort
praktisch onbruikbaar is.Elke serieële poort moet een uniek IRQ hebben (tenzij
er gebruik wordt gemaakt van een van de multipoortkaarten
waarbij gedeelde interrupts ondersteund worden), dus kunnen de
standaard IRQ's voor COM3 en
COM4 niet gebruikt worden.# Parallelle poort
device ppcDit is de interface voor de parallelle poort op de
ISA-bus.device ppbus # Parallelle poortbus (verplicht)Biedt ondersteuning voor de parallelle poortbus.device lpt # PrinterOndersteuning voor parallelle poort-printers.Alle van de bovenstaande drie zijn noodzakelijk om
ondersteuning voor parallelle printers aan te zetten.
- device plip # TCP/IP over parallel
-
- Dit is het stuurprogramma voor de parallelle
- netwerkinterface.
-
device ppi # Parallelle poort interface apparaatDe algemene I/O (geek-poort) + IEEE1284 I/O.#device vpo # scbus en da verplichtzipdriveDit is voor een Iomega Zipdrive. Hiervoor is ondersteuning
voor scbus en da nodig. De
beste prestaties worden gehaald met poorten in EPP
1.9-modus.#device pucDit dient uitgecommentarieerd te worden indien er een
domme seriële of parallelle PCI-kaart
aanwezig is die ondersteund wordt door het &man.puc.4;
verbindingsstuurprogramma.# PCI Ethernet NIC's.
device de # DEC/Intel DC21x4x (Tulip)
device em # Intel PRO/1000 adapter Gigabit Ethernet Card
device ixgb # Intel PRO/10GbE Ethernet Card
device txp # 3Com 3cR990 (Typhoon)
device vx # 3Com 3c590, 3c595 (Vortex)Verscheidene PCI-netwerkkaartstuurprogramma's. Degenen die
niet in het systeem aanwezig zijn kunnen uitgecommentarieerd of
verwijderd worden.# PCI Ethernet NIC's die de MII bus controller code gebruiken.
# NB: 'device miibus' moet behouden blijven om deze NIC's te kunnen gebruiken!
device miibus # MII bus ondersteuningOndersteuning voor MII-bus is noodzakelijk voor sommige PCI
10/100 Ethernet-NICs, namelijk voor diegenen die MII-geldige
transceivers gebruiken of interfaces voor transceiverbesturing
implementeren die als een MII werken. Door device
miibus aan de kernelinstellingen toe te voegen wordt
de ondersteuning voor de generieke miibus-API en voor alle
PHY-stuurprogramma's opgenomen, waaronder een generieke voor
PHYs die niet specifiek door een individueel stuurprogramma
worden behandeld.device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet
device bfe # Broadcom BCM440x 10/100 Ethernet
device bge # Broadcom BCM570xx Gigabit Ethernet
device dc # DEC/Intel 21143 en verschillende gelijkwerkenden
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device lge # Level 1 LXT1001 gigabit Ethernet
device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet
device nge # NatSemi DP83820 gigabit Ethernet
device nve # nVidia MCP on-board Ethernet Networking
device pcn # AMD Am79C97x PCI 10/100 (voorrang op 'lnc')
device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (Starfire)
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
device ste # Sundance ST201 (D-Link DFE-550TX)
device stge # Sundance/Tamarack TC9021 gigabit Ethernet
device ti # Alteon Networks Tigon I/II gigabit Ethernet
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 EPIC)
device ge # VIA VT612x gigabit Ethernet
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (Boomerang, Cyclone)Stuurprogramma's die gebruik maken van de MII
bus-controllercode.# ISA Ethernet NIC's. Inclusief pccard NIC's.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' heeft 'device miibus' nodig
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 kaarten
device ex # Intel EtherExpress Pro/10 en Pro/10+
device ep # Etherlink III-gebaseerde kaarten
device fe # Fujitsu MB8696x-gebaseerde kaarten
device ie # EtherExpress 8/16, 3C507, StarLAN 10, etc.
device lnc # NE2100, NE32-VL Lance Ethernet kaarten
device sn # SMC's 9000 serie Ethernet chips
device xe # Xircom pccard Ethernet
# ISA apparaten die de oude ISA shims gebruiken
#device leISA Ethernetstuurprogramma's. In
/usr/src/sys/i386/conf/NOTES
staan details over welke kaarten door welk stuurprogramma
ondersteund worden.# Draadloze NIC kaarten
device wlan # 802.11 ondersteuningGenerieke 802.11 ondersteuning. Deze regel is vereist voor
draadloos netwerken.device wlan_wep # 802.11 WEP-ondersteuning
device wlan_ccmp # 802.11 CCMP-ondersteuning
device wlan_tkip # 802.11 TKIP-ondersteuningCrypto-ondersteuning voor 802.11-apparaten. Deze regels zijn
nodig als u van plan bent om versleuteling en
802.11i-beveiligingsprotocollen te gebruiken.device an # Aironet 4500/4800 802.11 draadloze NIC's.
device ath # Atheros PCI/CardBus NICs
device ath_hal # Atheros HAL (Hardware Access Layer)
device ath_rate_sample # SampleRate verzendsnelheidbeheer voor ath
device awi # BayStack 660 en anderen
device ral # Ralink Technologies RT2500 draadloze NICs.
device wi # WaveLAN/Intersil/Symbol 802.11 draadloze NIC's.
#device wl # Oudere niet-802.11 Wavelan draadloze NIC.Ondersteuning voor verscheidene draadloze kaarten.# Pseudo-apparaten
device loop # Netwerk teruglussenDit is het generieke teruglusapparaat voor TCP/IP. Als
telnet of FTP op localhost (ook bekend als
127.0.0.1) gebruikt wordt, loopt
dat via dit apparaat. Dit is verplicht.device random # Entropy apparaatCryptografisch veilige willekeurige getallengenerator.device ether # Ethernet ondersteuningether is allen noodzakelijk als er een
Ethernetkaart aanwezig is. Het bevat code voor het generieke
Ethernetprotocol.device sl # Kernel SLIPsl dient voor SLIP-ondersteuning. Dit is
bijna geheel overgenomen door PPP, wat eenvoudiger is op te
zetten, beter geschikt is voor modem-naar-modem-verbindingen en
krachtiger is.device ppp # Kernel PPPDit dient voor PPP-ondersteuning van inbelverbindingen door
de kernel. Er is ook een versie van PPP als gebruikersapplicatie
geïmplementeerd die tun gebruikt en meer
flexibiliteit en mogelijkheden biedt zoals demand-bellen.device tun # Packet tunnel.Dit wordt gebruikt door de gebruikers-PPP-software. In
PPP staat meer informatie.
device pty # Pseudo-ttys (telnet, etc.)Dit is een pseudo-terminal of gesimuleerde
aanmeldpoort. Die wordt gebruikt door binnenkomende sessies van
telnet en rlogin, door
xterm en voor sommige andere
applicaties zoals Emacs.device md # GeheugenschijvenPseudo-apparaten die een schijf in het geheugen implementeren.device gif # IPv6 en IPv4 tunnelenDit implementeert IPv6-over-IPv4-tunneling,
IPv4-over-IPv6-tunneling, IPv4-over-IPv4-tunneling en
IPv6-over-IPv6-tunneling. Het apparaat gif is
zelfklonend en zal naar behoefte
apparaatknooppunten aanmaken.device faith # IPv6-naar-IPv4-relay (vertaling)Dit pseudo-apparaat onderschept pakketten die ernaar
verzonden worden en leidt ze om naar het IPv4/IPv6-vertaaldaemon.# Het `bpf' apparaat schakelt de Berkeley Pakketfilter in.
# Wees bewust van de administratieve consequenties die dit heeft!
# 'bpf' is nodig bij gebruik van DHCP.
device bpf # Berkeley pakketfilterDit is het Berkeley Pakketfilter. Dit pseudo-apparaat staat
netwerkinterfaces toe om in luistermodus gezet te worden, zodat
elk pakket op een uitzendnetwerk (bijvoorbeeld een Ethernet)
onderschept wordt. Deze pakketten kunnen naar schijf onderschept
en/of onderzocht worden met het programma &man.tcpdump.1;.Het apparaat &man.bpf.4; wordt ook gebruikt door
&man.dhclient.8; om het IP-adres van de standaardrouter
(gateway) te verkrijgen, enzovoorts. Als DHCP gebruikt wordt,
dient dit ingeschakeld te blijven.# USB-ondersteuning
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (verplicht)
#device udbp # USB Double Bulk Pipe apparaten
device ugen # Generic
device uhid # Human Interface Devices
device ukbd # Toetsenbord
device ulpt # Printer
device umass # Schijven/Massaopslag - heeft scbus en da nodig
device ums # Muis
device ural # Ralink Technology RT2500USB draadloze NICs
device urio # Diamond Rio 500 MP3 speler
device uscanner # Scanners
# USB Ethernet, heeft mii nodig
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device cdce # Generic USB over Ethernet
device cue # CATC USB Ethernet
device kue # Kawasaki LSI USB Ethernet
device rue # RealTek RTL8150 USB EthernetOndersteuning voor verscheidene USB-apparaten.# FireWire ondersteuning
device firewire # FireWire bus code
device sbp # SCSI over FireWire (scbus en da nodig)
device fwe # Ethernet over FireWire (niet-standaard!)Ondersteuning voor verscheidene Firewire-apparaten.Meer informatie en aanvullende apparaten die door &os;
ondersteund worden staan in
/usr/src/sys/i386/conf/NOTES.Instellingen bij veel geheugen
(PAE)Physical Address Extensions
(PAE)veel geheugenSommige machines (PAE) hebben meer
geheugen nodig dan limiet van 4 gigabyte op User+Kernel Virtual
Adress (KVA) ruimte. Vanwege deze limiet
voegde Intel ondersteuning toe voor toegang tot 36-bits fysieke
adresruimte in de &pentium; Pro en nieuwere lijn van
CPU's.De Physical Address Extension (PAE)
mogelijkheden van de &intel; &pentium; Pro en nieuwere CPU's
staan geheugenhoeveelheden toe tot 64 gigabyte. &os; biedt
ondersteuning voor deze mogelijkheid via de kernelinsteloptie
, die beschikbaar is in alle recent
uitgegeven versies van &os;. Vanwege de beperkingen van de
geheugenarchitectuur van Intel wordt er geen onderscheid
gemaakt tussen geheugen boven of beneden 4 gigabytes. Geheugen
dat boven de 4 gigabytes is toegewezen wordt gewoon bij het
beschikbare gevoegd.Om ondersteuning voor PAE in de kernel
aan te zetten, dient de volgende regel aan het
kernelinstellingenbestand te worden toegevoegd:options PAEDe ondersteuning voor PAE in &os; is
alleen beschikbaar voor &intel; IA-32-processoren. Ook dient
opgemerkt te worden dat ondersteuning voor
PAE nog niet wijdverbreid getest is en
als betakwaliteit beschouwd dient te worden vergeleken met
andere stabiele kenmerken van &os;.Ondersteuning voor PAE in &os; heeft
enige beperkingen:Een proces kan niet meer dan 4 gigabyte VM-ruimte
krijgen;Apparaatstuurprogramma's die geen gebruik maken van de
&man.bus.dma.9;-interface zullen gegevenscorruptie
veroorzaken in een kernel die PAE aan
heeft staan en hun gebruik wordt afgeraden. Om deze reden
wordt er de kernelinstellingenbestand voor de
PAE-kernel geleverd met &os;, dat alle
stuurprogramma's uitsluit waarvan niet bekend is dat ze
werken in een kernel die PAE aan heeft
staan;Sommige systeeminstellingen bepalen het
geheugenbronverbruik aan de hand van de hoeveelheid
beschikbaar fysiek geheugen. Zulke instellingen kunnen
onnodig veel toewijzen vanwege de grote hoeveelheid
geheugen in een PAE systeem. Een
voorbeeld hiervan is de sysctl
, die het maximum aantal
vnodes dat in de kernel aanwezig mag zijn beheert. Het is
aan te raden om deze en andere van dit soort instellingen
aan te passen aan een redelijke waarde;Het kan nodig zijn om de virtuele kerneladresruimte
(KVA) te vergroten of om het aantal
kernelbronnen dat veel gebruikt wordt (zie boven) te
verminderen om zo uitputting van KVA te
voorkomen. De kerneloptie kan
gebruikt worden om de KVA-ruimte te
vergroten.Om prestatie- en stabiliteitsredenen is het aan te raden om
&man.tuning.7; te raadplegen. &man.pae.4; bevat bijgewerkte
informatie over de ondersteuning voor PAE in
&os;.Problemen oplossenEr zijn vier probleemcategoriën die op kunnen treden
tijdens het bouwen van een aangepaste kernel:config faaltAls het commando &man.config.8; faalt bij het verwerken
van de kernelbeschrijving, is er waarschijnlijk ergens een
eenvoudige fout gemaakt. Gelukkig geeft &man.config.8; het
nummer van de regel weer waarmee het problemen had, dus kan
snel de regel gevonden worden waarin de fout zit.
In het onderstaande voorbeeld dient gecontroleerd te worden
of het sleutelwoord juist is ingevoerd door het met de
kernel GENERIC of een andere
referentie te vergelijken:config: line 17: syntax errormake faaltAls make faalt, duidt dit meestal op
een fout in de kernelbeschrijving die niet erg genoeg is om
door &man.config.8; opgemerkt te worden. De instellingen
dienen nogmaals nagekeken te worden. Als het probleem nog
steeds niet is op te lossen, stuur dan een mail naar de
&a.questions; met de kernelinstellingen. Dat leidt meestal
snel tot een diagnose.De kernel start niet opAls de nieuwe kernel niet opstart of de apparaten
niet herkent is kalmte geboden. &os; heeft een uitstekend
mechanisme om van niet-compatibele kernels te herstellen.
De gewenste kernel om mee op te starten kan vanuit de &os;
boot loader gekozen worden. Als het systeemopstartmenu
verschijnt, kan deze gekozen worden.
Selecteer de optie Escape to a loader prompt,
nummer zes. Typ op de prompt
boot kernel.old
of de naam van een andere kernel die correct
opstart. Als de kernelinstellingen gewijzigd worden, is
het altijd aan te raden om een kernel bij de hand te houden
waarvan bekend is dat die juist werkt.Nadat er met een goede kernel is opgestart, kan het
instellingenbestand gecontroleerd worden en geprobeerd
worden om de kernel nogmaals te bouwen. Een behulpzame
bron is het bestand /var/log/messages,
dat onder andere alle kernelberichten van alle keren dat er
succesvol is opgestart vastlegt. Ook geeft &man.dmesg.8;
alle kernelberichten weer van de huidige
opstartprocedure.Als er problemen zijn met het bouwen van een kernel,
dient een GENERIC, of een andere
kernel waarvan bekend is dat die werkt, bewaard te worden
onder een andere naam die niet verwijderd wordt als de
volgende kernel gebouwd wordt. Er kan niet op
kernel.old vertrouwd worden omdat
bij de installatie van een nieuwe kernel
kernel.old overschreven wordt met de
laatst geïnstalleerde kernel, die niet hoeft te
werken. Ook dient de werkende kernel zo snel mogelijk
naar de juiste plaats /boot/kernel verplaatst te
worden, omdat anders commando's als &man.ps.1; eventueel
onjuist werken. Hiervoor dient simpelweg de map met de
goede kernel hernoemd te worden:&prompt.root; mv /boot/kernel /boot/kernel.slecht
&prompt.root; mv /boot/kernel.goed /boot/kernelDe kernel werkt, maar &man.ps.1; werkt niet meerAls er een andere versie van de kernel is
geïnstalleerd dan degene waarmee de
systeemgereedschappen gebouwd zijn, bijvoorbeeld een kernel
voor -CURRENT op een -RELEASE-systeem, werken vele
systeemstatuscommando's als &man.ps.1; en &man.vmstat.8;
niet langer. De wereld moet opnieuw gecompileerd en
geïnstalleerd worden en met dezelfde broncodestructuur
als de kernel zijn gebouwd. Dit is een van de redenen
waarom het normaliter geen goed idee is om een afwijkende
versie van de kernel ten opzichte van de rest van de wereld
te gebruiken.
diff --git a/nl_NL.ISO8859-1/books/handbook/mac/chapter.xml b/nl_NL.ISO8859-1/books/handbook/mac/chapter.xml
index ab2601a330..5bb5f2511c 100644
--- a/nl_NL.ISO8859-1/books/handbook/mac/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/mac/chapter.xml
@@ -1,2180 +1,2180 @@
TomRhodesGeschreven door SiebrandMazelandVertaald door RenéLadanVertaling voortgezet door Verplichte Toegangscontrole (MAC)OverzichtMACverplichte toegangscontroleMACmandatory access controlIn &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 behandeldIn 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 hoofdstukVoordat 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 MACMet 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 MACHierna 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 begrijpenEen 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.LabelinstellingenVrijwel 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 testAls 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 testPermission denied
&prompt.root; setpmac biba/low setfmac biba/high test
&prompt.root; getfmac test
test: biba/highHierboven 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.LabeltypenMet 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 labelinstellingenDit 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 labelinstellingenGebruikers 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 labelinstellingenLabels 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/equalIn 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 plannenWanneer 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-instellingenIedere 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 seeotheruidsMAC zie andere UID's
beleidsinstellingModulenaam: mac_seeotheruids.koKernelinstelling: options MAC_SEEOTHERUIDSOpstartoptie: 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 bsdextendedMACbestandssysteemfirewall beleidsinstellingModulenaam: mac_bsdextended.koKernelinstelling:
options MAC_BSDEXTENDEDOpstartoptie:
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.VoorbeeldenNadat 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 rulesZoals 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 nDit 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 nHiermee 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 ifoffMAC Interface Silencing
beleidsinstellingModulenaam: mac_ifoff.koKernelinstelling:
options MAC_IFOFFOpstartoptie: 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 portaclMAC poorttoegangscontrolelijst
beleidsinstellingModulenaam: mac_portacl.koKernelinstelling:
MAC_PORTACLOpstartoptie: 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.VoorbeeldenDe 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=0Eerst 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=1De 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:80Sta 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:995Sta 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 partitionMAC procespartitionering
beleidsinstellingModulenaam: mac_partition.koKernelinstelling:
options MAC_PARTITIONOpstartoptie:
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 topDit 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.VoorbeeldenHet volgende commando laat de partitielabel en de
proceslijst zien:&prompt.root; ps ZaxHet 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 trhodesGebruikers 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 SecurityMAC meerlaagse beveiliging
beleidsinstellingModulenaam: mac_mls.koKernelinstelling:
options MAC_MLSOpstartoptie: 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 testGebruik het volgende commando om het
MLS-label voor het bestand
test te verkrijgen:&prompt.root; getfmac testDit 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 plannenMet 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 BibaMAC Biba integriteit
beleidsinstellingModulenaam: mac_biba.koKernelinstelling: options MAC_BIBAOpstartoptie: 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/lowVerplichte Integriteit plannenIntegriteit, 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 LOMACMAC LOMACModulenaam: mac_lomac.koKernelinstelling: options MAC_LOMACOpstartoptie: 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.VoorbeeldenNet 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-jailNagios in een MAC-jailDe 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 insecure makenBegin 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.confOpstartinstellingenStart 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 instellenStel de gebruiker root in op de
standaardklasse met:&prompt.root; pw usermod root -L defaultAlle 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 insecureHet contextbestand aanmakenNu 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/10Dit 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 ?bibaHet netwerk activerenVoeg de volgende regel toe aan
/boot/loader.conf:security.mac.biba.trust_all_interfaces=1En 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/equalDe configuratie testenMAC-configuratie testenControleer 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 forcestartControleer 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 cshOm 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 afsluitenDit 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-raamwerkMAC-problemen oplossenTijdens de ontwikkeling hebben een aantal gebruikers problemen
aangegeven met normale instellingen. Hieronder worden een aantal
van die problemen beschreven:De optie kan niet ingeschakeld
worden op /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 MACNa 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
.login_confBij 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 root 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.