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 ec361dce9b..4960156fb7 100644
--- a/nl_NL.ISO8859-1/books/handbook/advanced-networking/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/advanced-networking/chapter.xml
@@ -1,6535 +1,6492 @@
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 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 ath
- Beide van de volgende regels zijn nodig voor
- &os; 7.X, voor andere versies van &os; zijn ze niet
- nodig:
-
- device wlan_scan_ap # 802.11 AP mode scanning
-device wlan_scan_sta # 802.11 STA mode scanning
-
Met deze informatie in het kernelinstellingenbestand kan
de kernel opnieuw gecompileerd en de &os;-computer opnieuw
opgestart worden.Wanneer het systeem draait, is het mogelijk om enige
informatie over de draadloze apparaten in de
opstartboodschappen te vinden, zoals:ath0: <Atheros 5212> mem 0x88000000-0x8800ffff irq 11 at device 0.0 on cardbus1
ath0: [ITHREAD]
ath0: AR2413 mac 7.9 RF2413 phy 4.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 scan
-
- In de rest van dit document dienen gebruikers van
- &os; 7.X de opdracht- en instellingregels volgens dat schema
- aan te passen.
-
-
De uitvoer van een scanverzoek vermeld elk gevonden
BSS/IBSS-netwerk. Naast de naam van het netwerk,
SSID, staat het BSSID,
wat het MAC-adres van het toegangspunt is. Het veld
CAPS identificeert het type van elk
netwerk en de mogelijkheden van de stations die daar
werkzaam zijn:
Station Capability 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; 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; service 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:&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; 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; 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; 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.
+ 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&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; 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; 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
+ 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
+ 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
+ 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
+ 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.
+ 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; service inetd restart
- De map tftpboot kan overal op de
- server geplaatst worden. De plaats dient zowel in
+ De map tftpboot kan overal
+ op de server geplaatst worden. De plaats dient zowel in
inetd.conf als in
dhcpd.conf ingesteld te worden.In alle gevallen dient er ook voor gezorgd te worden dat
NFS aanstaat en dat het juiste
bestandssysteem op de NFS-server
geëxporteerd wordt.Voeg het volgende toe aan
/etc/rc.conf:nfs_server_enable="YES"Exporteer het bestandssysteem waar de schijfloze
root-map zich bevindt door het volgende aan
/etc/exports toe te voegen (pas het
aankoppelpunt van het volume aan en vervang
margaux corbieres door de namen
van de schijfloze werkstations):/data/misc -alldirs -ro margaux 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; 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
- /usr
+ /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
+ 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
+ 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.
+ 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; 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; 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
+ /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.
+ 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.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/audit/chapter.xml b/nl_NL.ISO8859-1/books/handbook/audit/chapter.xml
index 882b711720..b3904836ac 100644
--- a/nl_NL.ISO8859-1/books/handbook/audit/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/audit/chapter.xml
@@ -1,790 +1,790 @@
TomRhodesGeschreven door RobertWatsonRemkoLodderVertaald door Security Event AuditingOverzichtAUDITSecurity Event AuditingMACHet besturingssysteem &os; heeft ondersteuning voor diepgaande
beveiligingsauditing van evenementen. Evenement auditing maakt
het mogelijk dat er diepgaande en configureerbare logging van
een variateit aan beveiligings-gerelateerde systeem evenementen,
waaronder logins, configuratie wijzigingen, bestands- en
netwerk toegang. Deze log regels kunnen erg belangrijk
zijn voor live systeem monitoring, intrusion detection en
postmortem analyse. &os; implementeert &sun;'s gepubliceerde
BSM API en bestandsformaat en is uitwisselbaar
met zowel &sun;'s &solaris; als &apple;'s &macos; X audit
implementaties.Dit hoofdstuk richt zich op de installatie en configuratie van
evenement auditing. Het legt audit policies uit en geeft
voorbeelden van audit configuraties.Na het lezen van dit hoofdstuk weet de lezer:Wat evenement auditing is en hoe het werkt.Hoe evenement auditing geconfigureerd kan worden voor
&os; voor gebruikers en processen.Hoe de audittrail bekeken kan worden door gebruik te maken
van de audit reduction en onderzoek programma's.Voordat verder gegaan wordt moet het volgende bekend
zijn:&unix; en &os; basishandelingen begrijpen
().Bekend zijn met de basishandelingen van kernel
configuratie/compilatie
().Bekend zijn met beveiliging en hoe dat relateert aan
&os; ().De audit-faciliteiten hebben enkele bekende beperkingen
waaronder dat niet alle beveiligings-relevante systeemevenementen
geaudit kunnen worden en dat sommige login-mechanismes, zoals
X11-gebaseerde display managers en programma's van erde partijen
geen (goede) ondersteuning bieden voor het auditen van login-sessies
van gebruikers.De beveiligings evenement auditing faciliteit is in staat om
erg gedetailleerde logs van systeem activiteiten op een druk
systeem te genereren, trail bestands data kan erg groot worden
wanneer er erg precieze details worden gevraagd, wat enkele
gigabytes per week kan behalen in sommige configuraties.
- Beheerders moeten rekening houden met voldoende schijfruimte
- voor grote audit configuraties. Bijvoorbeeld het kan gewenst
- zijn om eigen bestandsysteem aan /var/audit
+ Beheerders moeten rekening houden met voldoende schijfruimte voor
+ grote audit configuraties. Bijvoorbeeld het kan gewenst zijn om eigen
+ bestandsysteem aan /var/audit
toe te wijzen zo dat andere bestandssystemen geen hinder
ondervinden als het audit bestandssysteem onverhoopt vol
raakt.Sleutelwoorden in dit hoofdstukVoordat dit hoofdstuk gelezen kan worden, moeten er een
aantal audit gerelateerde termen uitgelegd worden:evenement: Een auditbaar evenement is
elk evenement dat gelogged kan worden door het audit
subsysteem. Voorbeelden van beveiligings gerelateerde
evenementen zijn het creëeren van een bestand, het
opzetten van een netwerk verbinding, of van een gebruiker die
aanlogt. Evenementen zijn ofwel attributable
wat betekend dat ze getraceerd kunnen worden naar een
geauthoriseerde gebruiker, of non-attributable
voor situaties waarin dat niet mogelijk is. Voorbeelden van
non-attributable evenementen zijn elk evenement dat gebeurd
voordat authorisatie plaatsvind in het login proces, zoals bij
foutieve inlog pogingen.class: Evenement klassen zijn benoemde
sets van gerelateerde evenementen en worden gebruikt in
selectie expressies. Veel gebruikte klassen van evenementen
zijn bestands creatie (fc), exec
(ex) en login_logout (lo).record: Een record is een audit log
regel die het beveiligings evenement beschrijft. Records
bevatten een record evenement type, informatie over het
onderwerp (de gebruiker) welke de actie uitvoerd, de datum en
de tijd, informatie over de objecten of argumenten, en een
conditie die aangeeft of de actie geslaagd of mislukt is.trail: Een audit trail, of log
bestand bestaat uit een serie van audit records welke
beveiligings evenementen beschrijft. Meestal lopen deze
trails in chronologische orde, gebaseerd op de tijd dat
het evenement optrad. Alleen geauthoriseerde processen
mogen records toevoegen aan de audit trail.selection expression: Een selectie
expressie is een string welke een lijst bevat van prefixes
en audit evenement klasse namen die overeenkomen met
evenementen.preselection: Het proces waarbij het
systeem bepaald welke evenementen interessant zijn voor de
beheerder, zodat wordt voorkomen dat er audit records
worden gegenereerd voor evenementen die niet interessant zijn.
De preselection configuratie gebruikt een serie
van selectie expressies om te identificeren welke klassen van
evenementen van toepassing zijn op gebruikers en globale
instellingen voor zowel geauthoriseerde als ongeauthoriseerde
processen.reduction: Het proces waarbij records
van bestaande audit trails worden geselecteerd voor bewaring,
uitprinten of analyse. Ook is dit het proces waarbij ongewenste
audit records worden verwijderd uit het audit trail. Door
gebruik te maken van reduction kunnen beheerders policies
implementeren die het bewaren van audit data verzorgen.
Bijvoorbeeld gedetailleerde audit trails kunnen één
maand bewaard worden maar erna worden trails gereduceerd zodat
alleen login informatie bewaard worden voor archiverings
redenen.Installeren van audit ondersteuning.Ondersteuning in de gebruikersomgeving voor evenement auditing wordt
geïnstalleerd als onderdeel van het basis &os; besturingssysteem.
Kernel-ondersteuning voor evenement-auditing wordt standaard meegenomen
tijdens compilatie, maar moet expliciet in de kernel gecompileerd worden
door de volgende regel toe te voegen aan het configuratiebestand van de
kernel:options AUDITBouw en herinstalleer de kernel volgens het normale
proces zoals beschreven in .Zodra een audit ondersteunende kernel is gebouwd en
geïnstalleerd en deze is opgestart kan de audit daemon
aangezet worden door de volgende regel aan &man.rc.conf.5; toe te
voegen:auditd_enable="YES"Audit ondersteuning moet daarna aangezet worden door een
herstart van het systeem of door het handmatig starten van de audit
daemon:service auditd startAudit ConfiguratieAlle configuratie bestanden voor beveiligings audit kunnen
worden gevonden in
/etc/security. De volgende
bestanden moeten aanwezig zijn voor de audit daemon wordt
gestart:audit_class - Bevat de definities
van de audit klasses.audit_control - Controleert aspecten
van het audit subsysteem, zoals de standaard audit klassen,
minimale hoeveelheid diskruimte die moet overblijven op de
audit log schijf, de maximale audit trail grootte, etc.audit_event - Tekst namen en
beschrijvingen van systeem audit evenementen, evenals een
lijst van klassen waarin elk evenement zich bevind.audit_user - Gebruiker specifieke
audit benodigdheden welke gecombineerd worden met de globale
standaarden tijdens het inloggen.audit_warn - Een bewerkbaar shell
script gebruikt door de auditd
applicatie welke waarschuwings berichten genereert in
bijzondere situaties zoals wanneer de ruimte voor audit
records te laagis of wanneer het audit trail bestand is
geroteerd.Audit configuratie bestanden moeten voorzichtig worden
bewerkt en onderhouden, omdat fouten in de configuratie kunnen
resulteren in het verkeerd loggen van evenementen.Evenement selectie expressiesSelectie expressies worden gebruikt op een aantal plaatsen
in de audit configuratie om te bepalen welke evenementen er
geaudit moeten worden. Expressies bevatten een lijst van
evenement klassen welke gelijk zijn aan een prefix welke
aangeeft of gelijke records geaccepteerd moeten worden of
genegeerd en optioneel om aan te geven of de regel is bedoeld
om succesvolle of mislukte operaties te matchen. Selectie
expressies worden geevalueerd van links naar rechts en twee
expressies worden gecombineerd door de één aan de
ander toe te voegen.De volgende lijst bevat de standaard audit evenement klassen
welke aanwezig zijn in het audit_class
bestand:all - all -
Matched alle evenement klasses.ad -
administrative - Administratieve acties
welke uitgevoerd worden op het gehele systeem.ap - application -
Applicatie gedefinieerde acties.cl - file close -
Audit aanroepen naar de close systeem
aanroep.ex - exec - Audit
programma uitvoer. Het auditen van command line argumenten
en omgevings variabelen wordt gecontroleerd via
&man.audit.control.5; door gebruik te maken van de
argv en envv parameters
in de policy setting.fa -
file attribute access - Audit de
toevoeging van object attributen zoals &man.stat.1;,
&man.pathconf.2; en gelijkwaardige evenementen.fc - file create
- Audit evenementen waar een bestand wordt gecreëerd als
resultaat.fd - file delete
- Audit evenementen waarbij bestanden verwijderd
worden.fm -
file attribute modify - Audit
evenementen waarbij bestandsattribuut wijzigingen
plaatsvinden zoals bij &man.chown.8;, &man.chflags.1;,
&man.flock.2;, etc.fr - file read
- Audit evenementen waarbij data wordt gelezen, bestanden
worden geopend voor lezen etc.fw - file write
- Audit evenementen waarbij data wordt geschreven, bestanden
worden geschreven of gewijzigd, etc.io - ioctl -
Audit het gebruik van de &man.ioctl.2; systeem aanroep.ip - ipc - Audit
verschillende vormen van Inter-Process Communication, zoals
POSIX pipes en System V IPC operaties.lo - login_logout -
Audit &man.login.1; en &man.logout.1; evenementen die
plaatsvinden op het systeem.na -
non attributable - Audit
non-attributable evenementen.no -
invalid class - Matched geen enkel
audit evenement.nt - network -
Audit evenementen die gerelateerd zijn aan netwerk acties
zoals &man.connect.2; en &man.accept.2;.ot - other -
Audit diverse evenementen.pc - process -
Audit process operaties zoals &man.exec.3; en
&man.exit.3;Deze audit evenement klassen kunnen veranderd worden door
het wijzigingen van de audit_class en
audit_event configuratie bestanden.Elke audit klasse in de lijst wordt gecombineerd met een
voorzetsel welke aangeeft of er succesvolle of mislukte
operaties hebben plaatsgevonden en of de regel wordt toegevoegd
of verwijderd van het matchen van de klasse en het type.(none) Audit zowel succesvolle als mislukte informatie
van het evenement.+ Audit succesvolle evenementen in
deze klasse.- Audit mislukte evenementen in deze
klasse.^ Audit geen enkele succesvolle of
mislukte evenementen in deze klasse.^+ Audit geen succesvolle evenementen
in deze klasse.^- Audit geen mislukte evenementen
in deze klasse.De volgende voorbeeld selectie strings selecteren zowel
succesvolle als mislukte login/logout evenementen, maar alleen
succesvolle uitvoer evenementen:lo,+exConfiguratie bestandenIn de meeste gevallen moet een beheerder twee bestanden
wijzigingen wanneer het audit systeem wordt geconfigureerd:
audit_control en
audit_user. Het eerste controleert systeem
brede audit eigenschappen en policies, het tweede kan gebruikt
worden om diepgaande auditing per gebruiker uit te voeren.Het audit_control bestandHet audit_control bestand specificeert
een aantal standaarden van het audit subsysteem. Als de inhoud
bekeken wordt van dit bestand is het volgende te zien:dir:/var/audit
flags:lo
minfree:20
naflags:lo
policy:cnt
filesz:0De optie wordt gebruikt om
één of meerdere directories te specificeren die
gebruikt worden voor de opslag van audit logs. Als er meer
dan één directory wordt gespecificeerd, worden ze
op volgorde gebruikt naarmate ze gevuld worden. Het is
standaard dat audit geconfigureerd wordt dat audit logs
worden bewaard op een eigen bestandssysteem, om te
voorkomen dat het audit subsysteem en andere subsystemen met
elkaar botsen als het bestandssysteem volraakt.Het veld stelt de systeem brede
standaard preselection maskers voor attributable evenementen
in. In het voorbeeld boven worden succesvolle en mislukte
login en logout evenementen geaudit voor alle gebruikers.De optie definieerd het minimale
percentage aan vrije ruimte voor dit bestandssysteem waar de
audit trails worden opgeslagen. Wanneer deze limiet wordt
overschreven wordt er een waarschuwing gegenereerd. In het
bovenstaande voorbeeld wordt de minimale vrije ruimte ingesteld
op 20 procent.De optie specificeerd audit klasses
welke geaudit moeten worden voor non-attributed evenementen
zoals het login proces en voor systeem daemons.De optie specificeert een komma
gescheiden lijst van policy vlaggen welke diverse aspecten
van het audit proces beheren. De standaard
cnt vlag geeft aan dat het systeem moet
blijven draaien ook al treden er audit fouten op (deze vlag
wordt sterk aangeraden). Een andere veel gebruikte vlag is
argv, wat het mogelijk maakt om command
line argumenten aan de &man.execve.2; systeem aanroep te
auditen als onderdeel van het uitvoeren van commando's.De optie specificeert de maximale
grootte in bytes hoeveel een audit trail bestand mag groeien
voordat het automatisch getermineerd en geroteerd wordt. De
standaard, 0, schakelt automatische log rotatie uit. Als de
gevraagde bestands grootte niet nul is en onder de minimale
512k zit, wordt de optie genegeerd en wordt er een log bericht
gegenereerd.Het audit_user bestandHet audit_user bestand staat de
beheerder toe om verdere audit benodigdheden te
specificeren voor gebruikers. Elke regel configureert
auditing voor een gebruiker via twee velden, het eerste is het
alwaysaudit veld, welke een set van
evenementen specificeert welke altijd moet worden geaudit voor
de gebruiker, en de tweede is het neveraudit
veld, welke een set van evenementen specificeerd die nooit
geaudit moeten worden voor de gebruiker.Het volgende voorbeeld audit_user
bestand audit login/logout evenementen en succesvolle commando
uitvoer voor de root gebruiker, en audit
bestands creatie en succesvolle commando uitvoer voor de
www gebruiker. Als dit gebruikt wordt
in combinatie met het voorbeeld
audit_control bestand hierboven, is de
root regel dubbelop en zullen login/logout
evenementen ook worden geaudit voor de
www gebruiker.root:lo,+ex:no
www:fc,+ex:noHet audit subsysteem beheren.Audit trails inzienAudit trails worden opgeslagen in het BSM binaire formaat,
dus ondersteunende programma's moeten worden gebruikt om de
informatie te wijzigen of converteren naar tekst. Het
&man.praudit.1; commando converteert trail bestanden naar een
simpel tekst formaat; het &man.auditreduce.1; commando kan
gebruikt worden om de audit trail te reduceren voor analyse,
archivering of voor het uitprinten van de data.
auditreduce ondersteund een variateit aan
selectie parameters, zoals evenement type, evenement klasse,
gebruiker, datum of tijd van het evenement en het bestandspad
of object dat gebruikt wordt.Bijvoorbeeld, het praudit programma zal
een dump maken van de volledige inhoud van een gespecificeerd
audit log bestand in normale tekst:&prompt.root; praudit /var/audit/AUDITFILEWaar
AUDITFILE het
audit bestand is dat ingelezen moet worden.Audit trails bestaan uit een serie van audit records die
gevormd worden door tokens, welke praudit
sequentieel print één per regel. Elke token is van
een specifiek type, zoals een header welke
de audit record header bevat, of path welke
het bestandspad bevat van een lookup. Het volgende is een
voorbeeld van een execve evenement:header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec
exec arg,finger,doug
path,/usr/bin/finger
attribute,555,root,wheel,90,24918,104944
subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100
return,success,0
trailer,133Deze audit representeert een succesvolle
execve aanroep, waarbij het commando
finger doug is aangeroepen. Het argument
token bevat beide commando's gerepresenteerd door de shell aan
de kernel. Het path token bevat het pad
naar het uitvoerbare bestand zoals opgezocht door de kernel.
Het attribute token beschrijft de binary en
om precies te zijn bevat het de bestands mode welke gebruikt
kan worden om te zien of het bestand setuid was. Het
subject token beschrijft het onderwerp
proces en bevat sequentieel het audit gebruikers ID, effectieve
gebruikers ID en groep ID, echte gebruikers ID, groep ID,
proces ID, sessie ID, port ID en login adres. Let op dat het
audit gebruikers ID en het echte gebruikers ID van elkaar
verschillen omdat de gebruiker robert
veranderd is naar de root gebruiker voordat
het commando werd uitgevoerd, maar welke geaudit wordt als de
originele geauthoriseerde gebruiker. Als laatste wordt de
return token gebruikt om aan te geven dat er
een succesvolle uitvoer is geweest en trailer
geeft het einde aan van het record.praudit ook een XML output formaat,
welke geselecteerd kan worden door gebruik te maken van het
argument.Het reduceren van audit trailsOmdat audit logs erg groot kunnen worden, zal de beheerder
waarschijnlijk een subset van records willen selecteren om te
gebruiken, zoals records die gekoppeld zijn aan een specifieke
gebruiker:&prompt.root; auditreduce -u trhodes /var/audit/AUDITFILE | prauditDit selecteert alle audit records die geproduceert zijn
voor de gebruiker trhodes die opgeslagen
is in het AUDITFILE
bestand.Delegeren van audit onderzoek rechtenLeden van de audit groep krijgen
permissie om de audit trails te lezen in
- /var/audit; standaard is deze groep leeg en
- kan alleen de root gebruiker deze
+ /var/audit; standaard is deze
+ groep leeg en kan alleen de root gebruiker deze
audit trails lezen. Gebruikers kunnen toegevoegd worden aan de
audit groep zodat onderzoek rechten kunnen
worden gedelegeerd aan de geruiker. Omdat de mogelijkheid van
het inzien van audit log inhoud significante inzicht kan geven
in het gedrag van gebruikers en processen, wordt het aangeraden
dat de delagatie van onderzoek rechten eerst goed overdacht
wordt.Live monitoren door gebruik van audit pipesAudit pipes zijn gecloonde pseudo-devices in het device
bestands systeem, welke applicaties toestaat om een tap te
plaatsen in de live audit record stream. Dit is primair
interessant voor schrijvers van intrusion detection en systeem
monitoring applicaties. Echter, voor een beheerder is het
audit pipe device een makkelijke manier om live monitoring toe
te staan zonder dat er problemen kunnen ontstaan met het
eigenaarschap van het audit trail bestand, of dat een log
rotatie de evenementen stroom in de weg zit. Om de live audit
evenementen stroom te kunnen inzien is het volgende commando
benodigd:&prompt.root; praudit /dev/auditpipeStandaard zijn de audit pipe device nodes alleen toegankelijk
voor de root gebruiker. Om deze
toegankelijk te maken voor leden van de
audit groep, moet een
devfs regel toegevoegd worden aan het
devfs.rules bestand:add path 'auditpipe*' mode 0440 group auditZie &man.devfs.rules.5; voor meer informatie over het
configureren van het devfs bestands systeem.Het is makkelijk om audit evenement terugkoppeling
cyclussen te creëeren, waarbij het tonen van elk audit
evenement resulteert in het genereren van nog meer audit
evenementen. Bijvoorbeeld, als alle netwerk I/O wordt geaudit
en &man.praudit.1; wordt gestart vanuit een SSH sessie, wordt
er een grote continue stroom aan audit evenementen gegenereert
doordat elk getoond evenement een nieuw evenement genereert.
Het is verstandig om praudit te draaien op
een audit pipe device voor sessies zonder diepgaande I/O
auditing om te voorkomen dat dit gebeurd.Het roteren van audit trail bestandenAudit trails worden alleen beschreven door de kernel en
alleen beheerd worden door de audit daemon,
auditd. Beheerders mogen geen
gebruik maken van &man.newsyslog.conf.5; of soortgelijke
programma's om de audit files te roteren. In plaats daarvan kan
het audit management programma gebruikt worden
om auditing te stoppen, het audit systeem te herconfigureren en
log rotatie uit te voeren. Het volgende commando zorgt ervoor
dat de audit daemon een nieuwe audit log maakt, en vervolgens
de kernel een signaal stuurt om het nieuwe logbestand te gaan
gebruiken. Het oude logbestand wordt getermineerd en hernoemd,
waarna het bestand gemanipuleerd kan worden door de beheerder.&prompt.root; audit -nAls de auditd daemon op dit
moment niet actief is, zal het commando falen en
zal er een error bericht worden geproduceerd.Als de volgende regel wordt toegevoegd aan het
/etc/crontab bestand, zal er
elke twaalf uur een rotatie plaatsvinden door middel
van &man.cron.8;:0 */12 * * * root /usr/sbin/audit -nDeze wijziging wordt van kracht op het moment dat het
nieuwe /etc/crontab bestand wordt
opgeslagen.Automatische rotatie van het audit trail bestand gebaseerd
op de bestand grootte is mogelijk via de
optie in &man.audit.control.5; en wordt beschreven in de
configuratie bestanden sectie van dit hoofdstuk.Audit trails comprimerenOmdat audit trail bestanden erg groot kunnen worden, is het
meestal gewenst om de trails te comprimeren of op een andere
manier te archiveren zodra ze afgesloten zijn door de audit
daemon. Het audit_warn script kan gebruikt
worden om bewerkte operaties te doen voor een variateit aan
audit gerelateerde evenementen inclusief een nette terminatie
van audit trails wanneer deze geroteerd worden. Bijvoorbeeld
het volgende kan worden toegevoegd aan het
audit_warn script, dat de audit trails
comprimeert zodra ze afgesloten worden:#
# Compress audit trail files on close.
#
if [ "$1" = closefile ]; then
gzip -9 $2
fiAndere archiverings activiteiten kunnen zijn het kopieren van
trail bestanden naar een gecentraliseerde server, het verwijderen
van oude trail bestanden of het reduceren van de audit trail om
onnodige records te verwijderen. Het script zal alleen draaien
als audit trail bestanden netjes worden afgesloten, wat betekend
dat het script niet uitgevoerd wordt op trails die niet netjes
afgesloten zijn, waardoor bestanden corrupt kunnen raken.
diff --git a/nl_NL.ISO8859-1/books/handbook/book.xml b/nl_NL.ISO8859-1/books/handbook/book.xml
index 48e18254d6..8620151c40 100644
--- a/nl_NL.ISO8859-1/books/handbook/book.xml
+++ b/nl_NL.ISO8859-1/books/handbook/book.xml
@@ -1,359 +1,358 @@
%entities;
%chapters;
%txtfiles;
%pgpkeys;
]>
&os; handboekThe &os; Dutch Documentation ProjectJuni 2004$FreeBSD$1995199619971998199920002001200220032004200520062007200820092010201120122013The &os; Dutch Documentation Project
&legalnotice;
&tm-attrib.freebsd;
&tm-attrib.3com;
&tm-attrib.3ware;
&tm-attrib.arm;
&tm-attrib.adaptec;
&tm-attrib.adobe;
&tm-attrib.apple;
- &tm-attrib.corel;
&tm-attrib.creative;
&tm-attrib.cvsup;
&tm-attrib.heidelberger;
&tm-attrib.ibm;
&tm-attrib.ieee;
&tm-attrib.intel;
&tm-attrib.intuit;
&tm-attrib.linux;
&tm-attrib.lsilogic;
&tm-attrib.m-systems;
&tm-attrib.macromedia;
&tm-attrib.microsoft;
&tm-attrib.netscape;
&tm-attrib.nexthop;
&tm-attrib.opengroup;
&tm-attrib.oracle;
&tm-attrib.powerquest;
&tm-attrib.realnetworks;
&tm-attrib.redhat;
&tm-attrib.sap;
&tm-attrib.sun;
&tm-attrib.symantec;
&tm-attrib.themathworks;
&tm-attrib.thomson;
&tm-attrib.usrobotics;
&tm-attrib.vmware;
&tm-attrib.waterloomaple;
&tm-attrib.wolframresearch;
&tm-attrib.xfree86;
&tm-attrib.xiph;
&tm-attrib.general;
Welkom bij &os;! Dit handboek behandelt de installatie en
het dagelijks gebruik van
&os; &rel2.current;-RELEASE en
&os; &rel.current;-RELEASE. Aan deze
handleiding wordt nog gewerkt, en is het resultaat van het werk
van veel mensen. Veel hoofdstukken of paragrafen bestaan nog
niet en wat bestaat dient soms nog bijgewerkt te worden. Als
de lezer mee wil helpen aan dit project kan een mail gestuurd
worden naar de &a.doc;. De meest recente versie van dit
document is te vinden op de &os; website. Eerdere
versies van dit handboek zijn te vinden op . Het
kan ook gedownload worden in veel verschillende formaten en
compressiewijzen van de &os; FTP
server of een van de vele mirrorsites. Een gedrukt
exemplaar van het handboek is te koop bij de &os; Mall (Engels).
Het handboek kan ook doorzocht worden.
&chap.preface;
BeginnenDit deel van het &os; handboek is voor gebruikers en
beheerders die net beginnen met &os;. Deze
hoofdstukken:Geven een inleiding in &os;;Lichten het installatieproces toe;Bespreken de &unix; basisbegrippen en grondslag;Tonen hoe de vele aanvullende applicaties
voor &os; geïnstalleerd kunnen worden;Introduceren X, het venstersysteem van &unix;
en gaan uitvoerig in op hoe een bureaubladomgeving wordt
ingesteld die een gebruiker helpt productiever te
zijn.Er is geprobeerd het aantal vooruitwijzingen tot een
minimum te beperken zodat het handboek van begin tot einde
gelezen kan worden zonder bladeren.Algemene takenNa de inleiding gaat dit deel van het &os; handboek over
een aantal vaak gebruikte mogelijkheden van &os;. De volgende
hoofdstukken:Geven een inleiding in populaire en handige desktop
toepassingen: browsers, productieviteitsgereedschappen,
documentviewers, etc;Geven een inleiding in een aantal
multimediatoepassingen die in &os; beschikbaar zijn;Geven uitleg over het proces waarmee een aangepaste
kernel voor &os; kan worden gemaakt om extra
functionaliteit aan een systeen toe te voegen;Beschrijven gedetailleerd het afdruksysteem, zowel voor
met een desktop verbonden als met het netwerk verbinden
printers;Beschrijven hoe applicaties voor &linux; op &os; kunnen
draaien.In een aantal van de hoofdstukken wordt voorkennis
aangeraden. Dit staat vermeld in de inleiding van ieder
hoofdstuk.
&chap.desktop;
&chap.multimedia;
&chap.kernelconfig;
&chap.printing;
&chap.linuxemu;
SysteembeheerDe verdere hoofdstukken van het &os; handboek beslaan alle
aspecten van het &os; systeembeheer. Ieder hoofdstuk begint
met een omschrijving van wat de leerstof in een hoofdstuk is en
wat de verwachte voorkennis is.De hoofdstukken zijn ook ontworpen om gelezen te worden als
de specifieke informatie nodig is. Ze hoeven niet in een
bepaalde volgorde gelezen te worden en ze hoeven ook niet
gelezen te zijn voordat een gebruiker met &os; aan de slag
kan.
&chap.config;
&chap.boot;
&chap.users;
&chap.security;
&chap.jails;
&chap.mac;
&chap.audit;
&chap.disks;
&chap.geom;
&chap.filesystems;
&chap.vinum;
&chap.virtualization;
&chap.l10n;
&chap.cutting-edge;
&chap.dtrace;
NetwerkcommunicatieAls het om servers gaat die hoge prestaties moeten leveren,
wordt wereldwijd vaak &os; toegepast. De hoofdstukken in dit
deel behandelen:Seriëe communicatie;PPP en PPP over Ethernet;E-mail;Netwerkdiensten;Firewalls;Overig gevorderd netwerken.Deze hoofdstukken zijn geschreven om gelezen te worden als
de informatie nodig is. Ze hoeven niet allemaal in een
bepaalde volgorde gelezen te worden. Ze hoeven ook niet
allemaal gelezen te worden om &os; in een netwerkomgeving in te
zetten.
&chap.serialcomms;
&chap.ppp-and-slip;
&chap.mail;
&chap.network-servers;
&chap.firewalls;
&chap.advanced-networking;
Appendix
&chap.mirrors;
&chap.bibliography;
&chap.eresources;
&chap.pgpkeys;
&freebsd-glossary;
&chap.index;
&chap.colophon;
diff --git a/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.xml b/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.xml
index 8b60b6526a..b480136833 100644
--- a/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.xml
@@ -1,414 +1,414 @@
TomRhodesGeschreven door RenéLadanVertaald door &dtrace;Overzicht&dtrace;&dtrace;-ondersteuning&dtrace;&dtrace;, ook bekend als Dynamic Tracing, was ontwikkeld door
&sun; als een gereedschap om prestatie-bottlenecks in productie-
en preproductiesystemen op te sporen. Het is in geen enkel opzicht
een debug-gereedschap, maar een gereedschap voor real-time analyse
om prestatie- en andere zaken op te sporen.&dtrace; is een opmerkelijk profileringsgereedschap, met een
indrukwekkende verzameling mogelijkheden om systeemzaken te
diagnosticeren. Het kan ook worden gebruikt om vooraf geschreven
scripts te draaien om zo voordeel te halen uit de mogelijkheden.
Gebruikers kunnen zelfs hun eigen middelen schrijven door gebruik
te maken van de &dtrace; D Language, wat ze in staat stelt om hun
profilering aan te passen aan hun specifieke behoeften.Na het lezen van dit hoofdstuk weet u:Wat &dtrace; is en welke mogelijkheden het biedt.De verschillen tussen de &dtrace;-implementatie van
&solaris; en degene die door &os; wordt aangeboden.Hoe &dtrace; op &os; aan te zetten en te gebruiken.Voordat u dit hoofdstuk leest, dient u:De beginselen van &unix; en &os; te begrijpen
().Bekend te zijn met de beginselen van kernelconfiguratie en
-compilatie ().Wat bekendheid te hebben met beveiliging en hoe het zich
verhoudt tot &os; ().Te begrijpen hoe de broncode van &os; te verkrijgen en te
herbouwen ().Deze mogelijkheid wordt als experimenteel beschouwd. Van
sommige opties kan er functionaliteit ontbreken, andere delen
kunnen in het geheel niet werken. In de loop der tijd zal deze
mogelijkheid als productierijp worden beschouwd en zal deze
documentatie worden aangepast om die situatie te
representeren.ImplementatieverschillenHoewel &dtrace; in &os; erg lijkt op degene die in &solaris;
zit, zijn er verschillen die uitgelegd moeten worden voordat er
verder wordt gegaan. Het primaire verschil dat gebruikers zullen
zien is dat &dtrace; specifiek moet worden aangezet op &os;. Er
zijn kernelopties en modulen die aangezet moeten worden om
&dtrace; juist te laten werken. Deze zullen later worden
uitgelegd.Er is een kerneloptie DDB_CTF die gebruikt
wordt om ondersteuning voor het laden van
CTF-gegevens van kernelmodulen en de kernel
zelf. CTF is het Compact C Type Format van
&solaris; welke een beperkte vorm van debuginformatie bevat
die vergelijkbaar is met DWARF en de befaamde
stabs. Deze CTF-gegevens worden door de
bouwmiddelen ctfconvert en
ctfmerge aan de binairen toegevoegd. Het
hulpmiddel ctfconvert parseert
DWARF ELF-debug-secties die
door de compiler zijn aangemaakt en ctfmerge
voegt CTF ELF-secties van
objecten samen in hun executables of gedeelde bibliotheken. Meer
informatie over hoe dit voor de bouw van de kernel en &os; aan te
zetten komt eraan.Sommige aanbieders voor &os; verschillen van die voor
&solaris;. De meest opmerkelijke is de aanbieder
dtmalloc, welke het volgen van
malloc() op soort in de &os;-kernel
toestaat.Alleen root mag &dtrace; op &os;
gebruiken. Dit heeft te maken met beveiligingsverschillen,
&solaris; heeft enkele beveiligingscontroles op laag niveau die
nog niet bestaan in &os;. Hierom is
/dev/dtrace/dtrace strikt beperkt tot
root.Tenslotte valt de &dtrace;-software onder de
CDDL-licentie van &sun;. De Common
Development and Distribution License wordt bij &os;
geleverd, zie
/usr/src/cddl/contrib/opensolaris/OPENSOLARIS.LICENSE
of bekijk het online op
.Deze licentie houdt in dat een &os;-kernel met de
&dtrace;-opties nog steeds onder de
BSD-licentie valt; de CDDL
komt echter op de proppen wanneer de modulen in binaire vorm
worden verspreid, of wanneer de binairen zijn geladen.Ondersteuning voor &dtrace; aanzettenVoeg de volgende regels toe aan het kernelinstellingenbestand
om ondersteuning voor &dtrace; aan te zetten:options KDTRACE_HOOKS
options DDB_CTFGebruikers van de AMD64-architectuur zullen de volgende
regel aan hun kernelinstellingenbestand willen toevoegen:options KDTRACE_FRAMEDeze optie biedt ondersteuning voor de mogelijkheid
FBT. &dtrace; zal zonder deze optie werken;
er zal echter beperkte ondersteuning zijn voor het volgen van
functiegrenzen.Alle broncode moet herbouwd en geherinstalleerd worden met de
CTF-opties. Om deze taak te volbrengen, wordt
de &os;-broncode herbouwd met:&prompt.root; cd /usr/src
&prompt.root; make WITH_CTF=1 kernelHet systeem moet opnieuw gestart worden.Nadat opnieuw is opgestart en de nieuwe kernel in het geheugen
is geladen, dient ondersteuning voor de Korn-shell te worden
toegevoegd. Dit is nodig omdat de verschillende hulpmiddelen van
&dtrace;Toolkit in ksh zijn geschreven. Installeer
shells/ksh93. Het is ook
mogelijk om deze hulpmiddelen in shells/pdksh of shells/mksh te draaien.Als laatste dient de huidige &dtrace;Toolkit verkregen te worden.
Indien u &os; 10 draait, vindt u de &dtrace;Toolkit in
/usr/share/dtrace. In andere gevallen kunt u de
&dtrace;Toolkit installeren via de port sysutils/DTraceToolkit.&dtrace; gebruikenVoordat er gebruik wordt gemaakt van de functionaliteit van
&dtrace;, moet het &dtrace;-apparaat bestaan. Geef het volgende
commando om het apparaat te laten:&prompt.root; kldload dtraceallOndersteuning van &dtrace; zou nu beschikbaar moeten zijn. De
beheerder kan het volgende commando uitvoeren om alle sondes te
bekijken:&prompt.root; dtrace -l | moreAlle uitvoer wordt aan het hulpmiddel more
doorgegeven omdat het snel de schermbuffer zal laten overstromen.
&dtrace; kan nu als werkend worden beschouwd. Het is nu tijd om
de gereedschapskist te bekijken.De gereedschapskist is een verzameling van kant-en-klare
scripts die met &dtrace; gedraaid kunnen worden om informatie over
het systeem te verzamelen. Er zijn scripts om open bestanden,
geheugen, CPU-gebruik, en nog veel meer te
controleren. Pak de scripts uit met het volgende commando:&prompt.root; gunzip -c DTraceToolkit* | tar xvf -Ga naar die map met cd en zet de
uitvoerpermissies voor alle bestanden waarvan de naam uit kleine
letters bestaat, op 755.De inhoud van al deze scripts moet veranderd worden. Degenen
die naar /usr/bin/ksh verwijzen dienen naar
/usr/local/bin/ksh te verwijzen, de anderen
die /usr/bin/sh gebruiken dienen gewijzigd te
worden om /bin/sh te gebruiken, en tenslotte
dienen degenen die /usr/bin/perl gebruiken
veranderd te worden om /usr/local/bin/perl te
gebruiken.Op dit moment is het voorzichtig om de lezer eraan te
herinneren dat de ondersteuning voor &dtrace; in &os;
niet compleet en
experimenteel is. Veel van deze scripts
zullen niet werken omdat ze of te &solaris;-specifiek zijn of
omdat ze sondes gebruiken die momenteel niet ondersteund
worden.Op het moment van schrijven worden slechts twee scripts van de
&dtrace; Toolkit volledig ondersteund in &os;: de scripts
hotkernel en
procsystime. Dit zijn de twee die we in de
volgende gedeelten van deze sectie zullen bekijken.De hotkernel is ontworpen om te
identificeren welke functie de meeste kerneltijd gebruikt. Als
het normaal gedraaid wordt, zal het uitvoer die op de volgende
lijkt produceren:&prompt.root; cd /usr/share/dtrace/toolkit
&prompt.root; ./hotkernel
Sampling... Hit Ctrl-C to end.De systeembeheerder moet de toetsencombinatie CtrlC
gebruiken om het proces te stoppen. Nadat het gestopt is, zal het
script een lijst van kernelfuncties en timinginformatie weergeven,
waarbij de uitvoer in volgorde van toenemende tijd is
gesorteerd:kernel`_thread_lock_flags 2 0.0%
0xc1097063 2 0.0%
kernel`sched_userret 2 0.0%
kernel`kern_select 2 0.0%
kernel`generic_copyin 3 0.0%
kernel`_mtx_assert 3 0.0%
kernel`vm_fault 3 0.0%
kernel`sopoll_generic 3 0.0%
kernel`fixup_filename 4 0.0%
kernel`_isitmyx 4 0.0%
kernel`find_instance 4 0.0%
kernel`_mtx_unlock_flags 5 0.0%
kernel`syscall 5 0.0%
kernel`DELAY 5 0.0%
0xc108a253 6 0.0%
kernel`witness_lock 7 0.0%
kernel`read_aux_data_no_wait 7 0.0%
kernel`Xint0x80_syscall 7 0.0%
kernel`witness_checkorder 7 0.0%
kernel`sse2_pagezero 8 0.0%
kernel`strncmp 9 0.0%
kernel`spinlock_exit 10 0.0%
kernel`_mtx_lock_flags 11 0.0%
kernel`witness_unlock 15 0.0%
kernel`sched_idletd 137 0.3%
0xc10981a5 42139 99.3%Het script werkt ook met kernelmodules. Draai het script met
de vlag om deze mogelijkheid te
gebruiken:&prompt.root; ./hotkernel -m
Sampling... Hit Ctrl-C to end.
^C
MODULE COUNT PCNT
0xc107882e 1 0.0%
0xc10e6aa4 1 0.0%
0xc1076983 1 0.0%
0xc109708a 1 0.0%
0xc1075a5d 1 0.0%
0xc1077325 1 0.0%
0xc108a245 1 0.0%
0xc107730d 1 0.0%
0xc1097063 2 0.0%
0xc108a253 73 0.0%
kernel 874 0.4%
0xc10981a5 213781 99.6%Het script procsystime vangt en beeldt
het tijdsgebruik van systeemaanroepen af voor een gegeven
PID of procesnaam. In het volgende voorbeeld
wordt er een nieuwe instantie van /bin/csh
gedraaid. Het procsystime werd uitgevoerd en
bleef wachten terwijl er enkele commando's op de andere instantie
van csh werden getypt. Dit zijn de resultaten
van deze test:&prompt.root; ./procsystime -n csh
Tracing... Hit Ctrl-C to end...
^C
Elapsed Times for processes csh,
SYSCALL TIME (ns)
getpid 6131
sigreturn 8121
close 19127
fcntl 19959
dup 26955
setpgid 28070
stat 31899
setitimer 40938
wait4 62717
sigaction 67372
sigprocmask 119091
gettimeofday 183710
write 263242
execve 492547
ioctl 770073
vfork 3258923
sigsuspend 6985124
read 3988049784Zoals te zien is, lijkt de systeemaanroep
read() de meeste tijd in nanoseconden te
gebruiken en gebruikte de systeemaanroep
getpid() de minste hoeveelheid tijd.De taal DDe &dtrace;-gereedschapskist bevat vele scripts in de speciale
taal van &dtrace;. Deze taal wordt de taal D
genoemd door de documentatie van &sun;, en lijkt sterk op C++.
Een diepgaande discussie over de taal valt buiten het bereik van
dit document. Het wordt uitgebreid behandeld op .
+ url="http://wikis.oracle.com/display/DTrace/Documentation">.
diff --git a/nl_NL.ISO8859-1/books/handbook/eresources/chapter.xml b/nl_NL.ISO8859-1/books/handbook/eresources/chapter.xml
index 8c8bd7b2a3..0f940acc85 100644
--- a/nl_NL.ISO8859-1/books/handbook/eresources/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/eresources/chapter.xml
@@ -1,2430 +1,2406 @@
Bronnen op InternetDoor de snelle ontwikkeling van &os; zijn gedrukte media niet zo
praktisch om de laatste ontwikkelingen te volgen. Elektronische
bronnen zijn de beste, en vaak de enige, om op de hoogte te blijven
van de laatste ontwikkelingen. Omdat &os; draait op de inzet van
vrijwilligers, is de gebruikersgemeenschap vaak een soort
technische ondersteuningsgroep, die heeft ontdekt dat
email, webfora, en USENET de meeste effectieve manieren zijn om de
gebruikersgemeenschap te bereiken.Hieronder staan de meest belangrijke contactmogelijkheden met de
&os; gebruikersgemeenschap beschreven. Mochten er andere bronnen
zijn die hier niet beschreven zijn, laat die dan weten aan de
&a.doc;, zodat ze hier ook beschreven kunnen worden.MailinglijstenDe mailinglijsten zijn de meest directe manier om vragen te
stellen aan of een technische discussie te beginnen met een
geconcentreerd &os;-publiek. Er is een grote verscheidenheid aan
lijsten met betrekking tot verschillende &os;-onderwerpen. Door
uw vragen aan de meest geschikte mailinglijst te stellen bent u
ongetwijfeld verzekerd van een sneller en accurater
antwoord.De doelstellingen van de verschillende lijsten staan onderaan
dit document. Lees alstublieft de doelstellingen
alvorens lid te worden of mail te sturen. De meeste
leden ontvangen tegenwoordig vaak honderden &os;-gerelateerde
berichten per dag, en door de doelstellingen en gebruiksregels op
te stellen wordt gestreefd om zo min mogelijk ruis op de lijn te
krijgen. Door de voorgaande adviezen te negeren zouden de
mailinglijsten op termijn falen als een effectief
communicatiemedium over het project.Als u wilt testen of u naar de &os; lijsten email
kunt versturen, stuur dan een bericht naar
&a.test.name;. Stuur alstublieft geen testberichten
naar andere lijsten.Bij twijfel over naar welke lijst te posten, kan de pagina
Hoe de beste
resultaten uit de &os;-vragen mailinglijst te halen
wellicht helpen.Alvorens naar enige lijst te posten, is het verstandig te
leren hoe de mailinglijsten het beste gebruikt kunnen worden. Hoe
bijvoorbeeld zich vaak herhalende discussies voorkomen kunnen
worden door het document Veel Gestelde
Mailinglijstvragen (FAQ) te lezen.Voor alle mailinglijsten worden archieven bijgehouden die
doorzocht kunnen worden op de &os; World Wide Web
server. De met sleutelwoorden te doorzoeken archieven
bieden een voortreffelijke methode om antwoorden te vinden op vaak
gestelde vragen en horen geraadpleegd te worden voordat er vragen
op een lijst worden gesteld. Merk op dat dit ook betekent dat
berichten die naar de mailinglijsten van &os; worden verzonden tot
in de oneindigheid worden gearchiveerd. Overweeg, wanneer het
beschermen van privacy belangrijk is, om een tweede emailadres dat
weggegooid kan worden te gebruiken en om alleen publieke
informatie te posten.LijstsamenvattingAlgemene lijsten: De volgende zijn
algemene lijsten waarop vrijelijk (en aangemoedigd) geabonneerd
kan worden:LijstDoel&a.advocacy.name;&os; Evangelisatie&a.announce.name;
- Belangrijke gebeurtenissen en projectdoelen
+ Belangrijke gebeurtenissen en projectdoelen
+ (gemodereerd)&a.arch.name;Architectuur en ontwerp discussies&a.bugbusters.name;Discussie over het onderhoud van de &os;
probleemrapportendatabase en aanverwante zaken&a.bugs.name;Bugbeschrijvingen&a.chat.name;Niet-technische onderwerpen met betrekking tot de
&os;-gemeenschap&a.chromium.name;&os; specifieke Chromium problemen&a.current.name;Discussie over het gebruik van &os.current;&a.isp.name;Zaken voor Internet Service Providers die &os;
gebruiken&a.jobs.name;Werk en mogelijkheden voor het geven van advies met
betrekking tot &os;&a.questions.name;Gebruikersvragen en technische ondersteuning&a.security-notifications.name;
- Beveiligingswaarschuwingen
+ Beveiligingswaarschuwingen (gemodereerd)&a.stable.name;Discussies over het gebruik van &os.stable;&a.test.name;Hier kunnen testberichten heengestuurd worden in
plaats van naar de eigenlijke lijstenTechnische lijsten: De volgende lijsten
zijn voor technische discussie. Het is van belang de
doelstellingen te lezen alvorens lid te worden of mail te sturen
omdat de richlijnen voor het gebruik en de inhoud erg strikt
zijn.LijstDoel&a.acpi.name;Ontwikkeling van ACPI en energiebeheer&a.afs.name;Porten van AFS naar &os;&a.aic7xxx.name;Ontwikkeling van stuurprogramma's voor de &adaptec;
AIC 7xxx&a.amd64.name;
- Porten van &os; naar AMD64-systemen
+ Porten van &os; naar AMD64-systemen (gemodereerd)&a.apache.name;Discussie over ports met betrekking tot
Apache&a.arm.name;Porten van &os; naar &arm;-processors&a.atm.name;Het gebruik van ATM-netwerken met &os;&a.bluetooth.name;&bluetooth; technologie gebruiken in &os;&a.cluster.name;&os; gebruiken in een geclusterde omgeving&a.cvsweb.name;CVSweb onderhoud&a.database.name;Discussie over het gebruik en de ontwikkeling van
databases met &os;&a.desktop.name;&os; gebruiken op en verbeteren voor bureaubladen&a.doc.name;Het maken van &os;-gerelateerde documenten&a.drivers.name;Apparaatstuurprogramma's schrijven voor &os;&a.eclipse.name;Gebruikers van Eclipse IDE, hulpprogramma's,
cliëntapplicaties en ports&a.eol.name;Ondersteuning voor &os;-gerelateerde software welke
niet langer ondersteund worden door het &os;-project.&a.embedded.name;&os; gebruiken in embedded applicaties.&a.emulation.name;Emulatie van andere systemen zoals &linux;,
&ms-dos;, en &windows;&a.firewire.name;&os; &firewire; (iLink, IEEE 1394) technische
discussie&a.fs.name;Bestandssystemen&a.gecko.name;Discussies over de Gecko Rendering
Engine&a.geom.name;GEOM-specifieke discussies en implementaties&a.gnome.name;Porten van GNOME en
GNOME applicaties&a.hackers.name;Algemene technische discussies&a.hardware.name;Algemene discussies over hardware voor het draaien
van &os;&a.i18n.name;&os; Internationalisatie&a.ia32.name;&os; op het IA-32 (&intel; x86) platform&a.ia64.name;Porten van &os; naar &intel;'s IA64 systemen&a.infiniband.name;Infiniband op &os;&a.ipfw.name;Technische discussie over het herontwerp van de
IP-firewallcode&a.isdn.name;ISDN-ontwikkelaars&a.jail.name;Discussies over de &man.jail.8;-faciliteiten.&a.java.name;&java; ontwikkelaars en mensen die &jdk;s porten
naar &os;&a.kde.name;Porten van KDE en
KDE applicaties&a.lfs.name;Porten van LFS naar &os;&a.mips.name;Porten van &os; naar &mips;&a.mobile.name;Discussie over mobiel computeren&a.mono.name;Mono en C# applicaties op &os;&a.mozilla.name;Porten van Mozilla naar
&os;&a.multimedia.name;Multimedia-applicaties&a.newbus.name;Technische discussies over busarchitecturen&a.net.name;Discussies over netwerken en TCP/IP-broncode&a.numerics.name;Discussies over implementaties van hoge kwaliteit van
functies in libm&a.office.name;Kantoortoepassingen op &os;&a.performance.name;Optimalisatie van prestaties voor installaties met
hoge prestaties en/of load&a.perl.name;Onderhoud van een aantal ports met betrekking tot
Perl&a.pf.name;Discussies en vragen voor het pakketfilter
firewallsysteem&a.platforms.name;Ports naar niet &intel;-architectuurplatformen&a.ports.name;Discussie over de Portscollectie&a.ports-announce.name;Belangrijk nieuws en belangrijke instructies over de
- Portscollectie
+ Portscollectie (gemodereerd)
&a.ports-bugs.name;Discussie over bugs in ports en PR's&a.ppc.name;Porten van &os; naar de &powerpc;&a.proliant.name;Technische discussie over &os; op HP Proliant
serverplatforms&a.python.name;&os;-specifieke zaken over Python&a.realtime.name;Ontwikkeling van realtime-uitbreidingen voor
&os;&a.rc.name;Discussie over het
rc.d-systeem en de ontwikkeling
daarvan&a.ruby.name;&os;-specifieke discussies over Ruby&a.scsi.name;Het SCSI-subsysteem&a.security.name;Beveiligingsonderwerpen betreffende &os;&a.small.name;&os; gebruiken in embedded toepassingen, verouderd,
gebruik in plaats hiervan &a.embedded.name;&a.snapshots.name;Aankondigingen van ontwikkel-snapshots van &os;&a.sparc.name;Porten van &os; naar op &sparc; gebaseerde
systemen&a.standards.name;Volgen van de C99- en de &posix; standaarden door
&os;&a.sysinstall.name;Ontwikkeling van &man.sysinstall.8;&a.tcltk.name;&os;-specifieke discussies over Tcl/Tk&a.threads.name;Threading in &os;&a.tilera.name;&os; porteren naar de Tilera CPU-familie&a.tokenring.name;Ondersteuning voor Token Ring in &os;&a.toolchain.name;Onderhoud van de ingebouwde toolchain van &os;&a.usb.name;Discussie over &os;-ondersteuning voor USB&a.virtualization.name;Discussies over verscheidene
virtualisatietechnieken ondersteund door &os;&a.vuxml.name;Discussie over VuXML-infrastructuur&a.x11.name;Onderhoud en ondersteuning voor X11 op &os;&a.xen.name;Discussies over het overbrengen van &os; naar &xen;
— implementatie en gebruik&a.xfce.name;Overbrengen en onderhouden van
XFCE voor &os;&a.zope.name;Zope voor &os; —
overbrengen en onderhoudenBeperkte lijsten: De volgende lijsten
zijn voor meer gespecialiseerd publiek en algemene gebruikers
hebben er waarschijnlijk niets aan. Het is verstandig om eerst
naam te maken in de technische lijsten alvorens lid te worden
van een van de onderstaande beperkte lijsten, zodat de gebruiken
op die lijst bekend zijn.LijstDoel&a.hubs.name;Mensen die mirrorsites draaien (infrastructurele
ondersteuning)&a.usergroups.name;Gebruikersgroepcoördinatie
-
- &a.vendors.name;
-
- Coördinatie van vooruitgaven met
- wederverkopers
-
-
&a.wip-status.name;&os; Werk-In-Uitvoering status&a.wireless.name;Discussies over de ontwikkeling van de 802.11-stack,
gereedschappen en stuurprogramma's.
-
-
- &a.www.name;
-
- Beheerders van www.FreeBSD.org
- Verkorte versie van lijsten (digest):
Alle hierboven beschreven lijsten zijn beschikbaar in verkorte
vorm. Na het lid worden van een lijst zijn de digest opties te
wijzigen bij de accountopties.SVN-lijsten: De volgende
lijsten zijn voor mensen met interesse in het zien van
logboekberichten voor wijzigingen in verschillende onderdelen
van de broncodeboom. Het zijn
Alleen-lezen-lijsten waar geen email heen
gezonden hoort te worden.LijstBroncodegebiedBroncodebeschrijving&a.svn-doc-all.name;/usr/docAlle wijzigingen aan het doc-Subversion-reservoir (behalve
user, projects en
translations)&a.svn-doc-head.name;/usr/docAlle wijzigingen aan de tak head van het
doc-Subversion-reservoir&a.svn-doc-projects.name;/usr/doc/projectsAlle wijzigingen in het projects-gebied van het
doc-Subversion-reservoir&a.svn-doc-svnadmin.name;/usr/docAlle wijzigingen aan de administratieve scripts, haken en
andere configuratiegegevens van het
doc-Subversion-reservoir&a.svn-ports-all.name;/usr/portsAlle wijzigingen aan het ports-Subversion-reservoir&a.svn-ports-head.name;/usr/portsAlle wijzigingen aan de tak head van het
ports-Subversion-reservoir&a.svn-ports-svnadmin.name;/usr/portsAlle wijzigingen aan de administratieve scripts, haken en
andere configuratiegegevens van het
ports-Subversion-reservoir&a.svn-src-all.name;/usr/srcAlle wijzigingen in het src-Subversion-repository
(behalve user en
projects)&a.svn-src-head.name;/usr/srcAlle wijzigingen aan de head-tak van
het src-Subversion-repository (de tak &os;-CURRENT)&a.svn-src-projects.name;/usr/projectsAlle wijzigingen aan het gebied
projects van het
src-Subversion-repository&a.svn-src-release.name;/usr/srcAlle veranderingen aan het gebied
releases van het
src-Subversion-repository&a.svn-src-releng.name;/usr/srcAlle veranderingen aan de takken
releng van het
src-Subversion-repository (de beveiligings- /
uitgavetakken)&a.svn-src-stable.name;/usr/srcAlle veranderingen aan alle stable-takken van het
src-Subversion-repository&a.svn-src-stable-6.name;/usr/srcAlle veranderingen aan de
stable/6-tak van het
src-Subversion-repository&a.svn-src-stable-7.name;/usr/srcAlle veranderingen aan de
stable/7-tak van het
src-Subversion-repository&a.svn-src-stable-8.name;/usr/srcAlle veranderingen aan de
stable/8-tak van het
src-Subversion-repository&a.svn-src-stable-9.name;/usr/srcAlle veranderingen aan de
stable/9-tak van het
src-Subversion-repository&a.svn-src-stable-other.name;/usr/srcAlle veranderingen aan de oudere
stable-takken van het
src-Subversion-repository&a.svn-src-svnadmin.name;/usr/srcAlle veranderingen aan de administratieve scripts,
haken, en andere configuratiegegevens van het
src-Subversion-repository&a.svn-src-user.name;/usr/srcAlle veranderingen aan het experimentele gebied
user van het
src-Subversion-repository&a.svn-src-vendor.name;/usr/srcAlle wijzigingen aan het verkoperswerkgebied van
het src-Subversion-repositoryHoe abonnerenOm te abonneren op een lijst kan geklikt worden op de naam
van de lijst hierboven of kan op &a.mailman.lists.link; geklikt
worden op de lijst waarin interesse bestaat. De pagina waarop
de lijsten staan beschreven bevat alle informatie die nodig is
om te abonneren.Om te posten op een lijst kan een email gestuurd worden naar
lijstnaam@FreeBSD.org.
Daarna wordt die doorgestuurd aan leden van de lijst in de hele
wereld.Om het abonnement op een lijst op te zeggen kan op de URL
die onderaan iedere email van een lijst staat geklikt worden.
Het is ook mogelijk om een email te sturen naar
lijstnaam-unsubscribe@FreeBSD.org
om een abonnement op te zeggen.Hierbij nogmaals het advies om discussies op de technische
mailinglijsten technisch te houden. Als er alleen interesse
bestaat in belangrijke mededelingen dan wordt aangeraden te
abonnneren op &a.announce;, waarop zelden verkeer
voorkomt.LijstdoelstellingenAlle &os;-mailinglijsten hebben eigen
regels waaraan voldaan dient te worden bij gebruik. Als daaraan
niet wordt voldaan, resulteert dat in maximaal twee (2)
schriftelijke waarschuwingen van de &os; Postmaster
postmaster@FreeBSD.org, waarna na de derde
overtreding de poster verwijderd wordt van alle
&os;-mailinglijsten en alle toekomstige mail van het adres van
de verzender wordt uitgefilterd. Helaas zijn deze regels nodig,
omdat het Internet van vandaag de dag een onvriendelijke
omgeving is en slechts weinigen zich bewust zijn van hoe fragiel
sommige mechanismen zijn.Standaardregels:Het onderwerp van iedere mail dient te voldoen aan de
basisdoelstellingen van de lijst waarnaar wordt gepost. Als
de lijst bijvoorbeeld over technische onderwerpen gaat, dan
hoort een post ook over iets technisch te gaan. Ruis en
flaming doen alleen af aan de waarde van een mailinglijst
voor alle leden en dat wordt niet getolereerd. Voor vrije
discussie dient de &a.chat; gebruikt te worden die daar
speciaal voor is ingesteld.Bijdragen horen niet naar meer dan twee mailinglijsten
verzonden te worden en alleen dan naar twee als het helder
en duidelijk is dat daarvoor de noodzaak bestaat. Voor de
meeste lijsten bestaat er al veel overlap in de leden en
met uitzondering van de meer esoterische lijsten, zoals
bijvoorbeeld -stable & -scsi, is er
eigenlijk slechts zelden aanleiding om naar meer dan een
lijst te posten. Als een bericht zo is verzonden dat er
meerdere mailinglijsten op de regel Cc
staan, dan hoort de regel Cc weer
ingekort te worden in een eventueel antwoord. De
verzender is verantwoordelijk voor zijn eigen kruisposten,
wie ook een eerdere zender was.Persoonlijke aanvallen en profane taal (in de context
van een geschil) zijn niet toegestaan. Dit geldt zowel voor
gebruikers als ontwikkelaars. Grove schending van de
netiquette, zoals kopiëren uit of het volledig
doorsturen van persoonlijke email zonder dat daarvoor
toestemming is gegeven, wordt niet op prijs gesteld. Er
zijn hoe dan ook zeer weinig gevallen waarin zoiets
dergelijks wel binnen de doelstelling van een lijst valt,
waardoor dat soort emails op grond van de inhoud alleen al
vaak reden zijn voor een waarschuwing (of ban).Adverteren voor niet-&os;-gerelateerde producten is
streng verboden en heeft direct een ban tot gevolg als
helder is dat de overtreder adverteert door middel van
spam.Individuele lijstdoelstellingen:&a.acpi.name;ACPI en
energiebeheerontwikkeling&a.afs.name;Andrew Bestandssysteem (Andrew File
System)Deze lijst is voor onderwerpen over het porten en
gebruik van AFS van CMU/Transarc&a.announce.name;Belangrijke gebeurtenissen en
projectdoelenDit is de mailinglijst voor hen die alleen interesse
hebben in gelegenheidsmededelingen of belangrijke
&os;-gebeurtenissen. Hieronder vallen aankondigingen over
snapshots en andere uitgaven. De lijst omvat ook
aankondigingen over nieuwe mogelijkheden binnen &os;. Er
kunnen ook oproepen gedaan worden voor vrijwilligers,
enzovoort. Deze lijst kent een laag volume en is volledig
gemodereerd.&a.arch.name;Discussie van architectuur en
ontwerpDeze lijst is bedoeld voor het bespreken van de
&os;-architectuur. Berichten zijn in het algemeen strikt
technisch van aard. Voorbeelden van geschikte onderwerpen
zijn:Hoe het buildsysteem bijgewerkt kan worden zodat
meerdere aanpaste builds tegelijkertijd kunnen
lopen.Wat moet er aan VPS aangepast worden om
Heidemann-lagen te laten werken.Hoe kan de apparataatstuurprogramma interface
aangepast worden zodat dezelfde stuurprogramma's
netjes op vele bussen en architecturen gebruikt kunnen
worden.Hoe een netwerkstuurprogramma geschreven kan
worden.&a.bluetooth.name;&bluetooth; in &os;Dit is het forum waar gebruikers van &bluetooth; op
&os; samenkomen. Gespreksstof op het gebied van ontwerp,
implementatiedetails, patches, probleemrapportages,
statusrapportages, verzoeken voor nieuwe mogelijkheden en
al het andere dat met &bluetooth; te maken heeft is
geschikt materiaal.&a.bugbusters.name;Coördinatie afhandeling Problem
ReportsHet doel van deze lijst is een platform zijn voor de
coördinatie en discussie voor de Bugmeister, zijn
Bugbusters en anderen die interesse hebben in de
PR-database. Deze lijst is niet bedoeld voor discussies
over specifieke bugs, patches of PR's.&a.bugs.name;Bug reportsDit is de mailinglijst voor het rapporteren van bugs
in &os;. Waar mogelijk dienen bugs ingezonden te worden
via &man.send-pr.1; of via de Webinterface
daarvan.&a.chat.name;Niet-technische onderwerpen met betrekking
tot de &os;-gemeenschapDeze lijst bevat alle onderwerpen waar op andere
lijsten geen ruimte voor is wat betreft niet-technische en
sociale informatie. Er wordt gesproken over de moord op
Van Gogh, of er in onderkast of kapitalen geschreven dient
te worden, wie er te veel koffie drinkt, waar het beste
bier vandaan komt, enzovoort. Belangrijke gebeurtenissen
(zoals feestjes, bruiloften, geboorten, nieuwe banen,
enzovoort) kunnen op de technische lijsten aangekondigd
worden, maar antwoorden dienen naar deze -chat lijst te
gaan.&a.chromium.name;&os; specifieke Chromium problemenDit is een lijst voor het bespreken van Chromium
ondersteuning voor &os;. Dit is een technische lijst om de
ontwikkelingen en installatie van Chromium te bespreken.&a.core.name;&os; KernteamDit is een interne mailinglijst die wordt gebruikt
door de kernleden. Er kunnen berichten naar gestuurd
worden als een belangrijke &os;-gerelateerde zaak
arbitrage nodig heeft of een onderzoekende blik op hoog
niveau nodig is.&a.current.name;Discussie over het gebruikt van
&os.current;Dit is de mailinglijst voor gebruikers van
&os.current;. Er staan waarschuwingen op over nieuwe
mogelijkheden in -CURRENT die impact hebben op gebruikers
en instructies over de te nemen stappen om -CURRENT te
blijven. Iedereen die CURRENT draait, zou
zich moeten abonneren. Dit is een technische mailinglijst
waarop strikt technische berichten worden verwacht.&a.cvsweb.name;&os; CVSweb ProjectTechnische discussie over het gebruik, de ontwikkeling
en het beheer van &os;-CVSweb.&a.desktop.name;&os; gebruiken op en verbeteren voor
bureaubladenDit is een forum voor het bespreken van &os; op desktops. Het
is vooral een plaats voor porters en gebruikers van
bureaubladomgevingen om zaken te bespreken en de ondersteuning van
&os; op het bureaublad te verbeteren.&a.doc.name;DocumentatieprojectDit is de mailinglijst voor het bespreken van
onderwerpen en projecten die te maken hebben met het maken
van documentatie voor &os;. De leden van deze
mailinglijst worden samen The &os; Documentation
Project genoemd. Het is een open lijst waarop
zonder problemen een abonnement genomen kan worden en
bijdragen zeer op prijs worden gesteld!&a.drivers.name;Apparaatstuurprogramma's schrijven voor
&os;Dit is een forum voor technische discussie met
betrekking tot apparaatstuurprogramma's op &os;. Het is
vooral een plaats voor schrijvers van
apparaatstuurprogramma's om vragen te stellen over hoe
apparaatstuurprogramma's te schrijven met de API's in de
kernel van &os;.&a.eclipse.name;Gebruikers van Eclipse IDE, hulpprogramma's,
cliëntapplicaties en portsDe doelstelling van deze lijst is wederzijdse
ondersteuning bieden voor alles dat te maken heeft met het
kiezen, installeren, gebruiken, ontwikkelen, en
onderhouden van Eclipse IDE, hulpprogramma's en
cliëntapplicaties op het &os;-platform en te
ondersteunen bij het porten van Eclipse IDE en plugins
naar de &os;-omgeving.Het is ook de bedoeling om het uitwisselen van
informatie tussen de Eclipse gemeenschap en de
&os;-gemeenschap te bevorderen zodat beiden ervan kunnen
profiteren.Hoewel deze lijst voornamelijk is gericht op de
behoeften van gebruikers van Eclipse, wordt ook een forum
geboden voor hen die &os;-specifieke applicaties willen
ontwikkelen met het Eclipse raamwerk.&a.eol.name;Ondersteuning van &os; gerelateerde software
welke niet meer ondersteund wordt door het
&os;-project.Deze lijst is voor degenen die geïnteresseerd zijn in
het leveren of gebruiken van ondersteuning voor
&os;-gerelateerde software voor welke het &os;-project
geen ondersteuning meer biedt (in de vorm van
beveiligingsadviezen en patches).&a.embedded.name;&os; gebruiken in embedded
applicatiesDeze lijst heeft tot doel om te discussieren over &os;
in embedded systemen. Dit is een technische mailinglijst
waarbij men alleen technische inhoud verwacht. Voor het
belang van deze lijst definiëren we embedded systemen
als computersystemen die geen desktop-systemen zijn en
meestal slechts één doel hebben ten opzichte
van gewone systemen. Voorbeelden bevatten onder andere:
diverse soorten telefoonsets, netwerkapparatuur zoals
routers, switches en PBX'en, op afstand bestuurbare
meetapparatuur, PDA's, Point of Sale systemen etc.&a.emulation.name;Emulatie van andere systemen zoals &linux;,
&ms-dos; en &windows;Dit is een forum voor technische discussie met
betrekking tot het draaien van programma's op &os; die
zijn geschreven voor andere besturingssystemen.&a.firewire.name;&firewire; (iLink, IEEE 1394)Dit is de mailinglijst voor het bespreken van het
ontwerp en de implementatie van een &firewire; (ook wel
IEEE 1394 of iLink) subsysteem voor &os;. Relevante
onderwerpen omvatten de standaarden, busapparaten en hun
protocollen, adapter boards/kaarten/chipssets en de
architectuur en implementatie van code voor een juiste
ondersteuning.&a.fs.name;BestandssystemenDiscussie over &os;-bestandssystemen. Dit is een
technische mailinglijst waarop slechts strikt technische
bijdragen worden verwacht.&a.gecko.name;Gecko Rendering EngineDit is een forum over Gecko
applicaties die &os; gebruiken.De discussie concentreert zich op toepassingen van
Gecko Ports, hun installatie, hun ontwikkeling en hun
ondersteuning binnen &os;.&a.geom.name;GEOMDiscussie specifiek over GEOM en gerelateerde
implementaties. Dit is een technische mailinglijst waarop
slechts strikt technische bijdragen worden verwacht.&a.gnome.name;GNOMEDiscussie over de bureaubladomgeving
GNOME voor &os;. Dit is een
technische mailinglijst waarop slechts strikt technische
bijdragen worden verwacht.&a.infiniband.name;Infiniband op &os;Technische mailinglijst over Infiniband, OFED en OpenSM op
&os;.&a.ipfw.name;IP FirewallDit is het forum voor technische bespreking van het
herontwerp van de IP-firewallcode in &os;. Dit is een
technische mailinglijst waarop slechts strikt technische
bijdragen worden verwacht.&a.ia64.name;Porten van &os; naar IA64Dit is een technische mailinglijst voor individuen die
actief werken aan het porten van &os; naar het platform
IA-64 van &intel;, om problemen op tafel te leggen of
alternatieve oplossingen te bespreken.
Geïnteresseerden die alleen de technische bespreking
willen volgen zijn ook welkom.&a.isdn.name;ISDN-communicatieDit is de mailinglijst voor discussie over de
ontwikkeling van ISDN-ondersteuning voor &os;.&a.java.name;&java; OntwikkelingDit is de mailinglijst voor het bespreken van de
ontwikkeling van significante &java; applicaties voor &os;
en het porten en het beheer van &jdk;'s.&a.jobs.name;Banen in de aanbieding en
gezochtDit is een forum voor vacatures en CV's specifiek
gerelateerd aan &os;, bijvoorbeeld als er
&os;-gerelateerd werk wordt gezocht of in de aanbieding
is. Dit is geen mailinglijst voor
algemene werkonderwerpen omdat daarvoor al elders ruimte
staat.Ook deze lijst wordt net als alle andere FreeBSD.org mailinglijsten
wereldwijd verspreid. Daarom dient duidelijk vermeld te
worden om welke locatie het gaat en onder welke
voorwaarden telewerken of bijdragen in huisvesting
mogelijk zijn.Email dient alleen open formaten te bevatten. Bij
voorkeur platte tekst, maar standaard Portable Document
Format (PDF), HTML, en een aantal
andere, zijn acceptabel voor lezers. Gesloten formaten,
zoals µsoft; Word (.doc), worden
door de mailinglijstserver geweigerd.&a.kde.name;KDEDiscussie over KDE op
&os;-systemen. Dit is een technische mailinglijst waarop
slechts strikt technische bijdragen worden verwacht.&a.hackers.name;Technische discussiesDit is een forum voor technische discussie met
betrekking tot &os;. Dit is de leidende technische
mailinglijst die is bestemd voor mensen die actief aan
&os; werken om problemen aan het voetlicht te brengen of
alternatieve oplossingen te bespreken.
Geïnteresseerden die alleen de technische bespreking
willen volgen zijn ook welkom. Dit is een technische
mailinglijst waarop slechts strikt technische bijdragen
worden verwacht.&a.hardware.name;Algemene discussie over
&os;-hardwareAlgemene discussie over de typen hardware waar &os; op
draait en problemen en oplossingen over wat te kopen en
wat vooral niet.&a.hubs.name;MirrorsitesAankondigingen en discussie voor beheerders van
&os;-mirrorsites.&a.isp.name;Onderwerpen voor Internet Service
ProvidersDeze mailinglijst is voor het bespreken van relevante
onderwerpen voor Internet Service Providers (ISP's) die
&os; gebruiken. Dit is een technische mailinglijst waarop
slechts strikt technische bijdragen worden verwacht.&a.mono.name;Mono en C# applicaties op
&os;Dit is een lijst voor discussies met betrekking tot
het Mono-ontwikkelraamwerk op &os;. Dit is een technische
mailinglijst. Het is bedoeld voor individuen die actief
werken aan het overbrengen van Mono of C# applicaties naar
&os;, om problemen naar voren te brengen of alternatieve
oplossingen te bespreken. Individuen die
geïnteresseerd zijn in het volgen van de technische
discussie zijn ook welkom.&a.office.name;Kantoortoepassingen op &os;De discussie richt zich op kantoortoepassingen, hun
installatie, hun ontwikkeling en hun ondersteuning binnen
&os;.&a.ops-announce.name;Aankondigingen over de
projectinfrastructuurDeze mailinglijst is bedoeld voor mensen die geïnteresseerd
zijn in veranderingen en zaken die te maken hebben met de
infrastructuur van het FreeBSD.org project.
- Deze lijst is strict voor aankondigingen: geen antwoorden,
- verzoeken, discussies of meningen.
+ Deze gemodereerde lijst is strict voor aankondigingen: geen
+ antwoorden, verzoeken, discussies of meningen.&a.performance.name;Discussie over het optimaliseren of
versnellen van &os;Deze mailinglijst is een platform voor hackers,
beheerders en/of andere belanghebbenden om &os;- en
prestatiegerelateerde onderwerpen te bespreken. De
onderwerpen die besproken kunnen worden omvatten
&os;-installaties met een hoge load, systemen met
prestatieproblemen of systemen die tegen de limieten van
&os; aan zitten. Zij die willen meewerken om de
prestaties van &os; te verbeteren worden sterk
aangemoedigd zich op deze lijst te abonneren. Deze lijst
is bijzonder technisch en bijzonder geschikt voor ervaren
&os;-gebruikers, hackers en beheerders die &os; snel,
robuust, en schaalbaar willen houden. Deze lijst is geen
vraag-en-antwoord lijst die dient als vervanging voor het
lezen van documentatie, maar hier worden bijdragen
geleverd of vragen gesteld over nog niet eerder beschreven
prestatiegerelateerde onderwerpen.&a.pf.name;Discussie en vragen over het pakketfilter
firewallsysteemDiscussie over het pakketfilter (pf) firewallsysteem
met betrekking tot &os;. Technische discussie en
gebruikersvragen zijn beiden welkom. Deze lijst is ook de
plaats om het raamwerk ALTQ QoS te bespreken.&a.pkg.name;Discussies over binair pakketbeheer en
pakketgereedschappenDiscussies over alle aspecten over het beheren van
&os;-systemen door middel van het gebruik van binaire pakketten
om software te installeren, inclusief de gereedschappen en
formaten van binaire pakketten, hun ontwikkeling en ondersteuning
binnen &os;, het beheer van pakketreservoirs en pakketten van
derde partijen.Merk op dat discussies over poorten die onjuiste pakketten
genereren over het algemeen als problemen met poorten moet worden
gezien en dus ongeschikt zijn voor deze lijst.&a.platforms.name;Porten van niet-&intel;
platformsCross-platform &os;-zaken, algemene discussie en
voorstellen voor niet-&intel; &os; ports. Dit is een
technische mailinglijst waarop slechts strikt technische
bijdragen worden verwacht.&a.ports.name;Discussie over
portsDiscussie over de Portscollectie
(/usr/ports) van &os;, de Ports
infrastructuur en algemene coördinatie aangaande
ports. Dit is een technische mailinglijst waarop slechts
strikt technische bijdragen worden verwacht.&a.ports-announce.name;Belangrijk nieuws en belangrijke instructies over
&os; PortscollectieBelangrijk nieuws voor ontwikkelaars, porters en gebruikers
van de Portscollectie (/usr/ports), waaronder veranderingen
aan de architectuur/infrastructuur, nieuwe mogelijkheden,
kritische opwaardeerinstructies, en uitgave-informatie. Dit is
een mailinglijst met een laag volume, bedoeld voor
aankondigingen.&a.ports-bugs.name;Discussie over ports
bugsDiscussie over probleemrapportages voor de &os;
Portscollectie
(/usr/ports), voorgestelde ports of
aanpassingen aan ports. Dit is een technische
mailinglijst waarop slechts strikt technische bijdragen
worden verwacht.&a.proliant.name;Technische discussie over &os; op HP
Proliant serverplatformsDeze mailinglijst wordt gebruikt voor technische
discussie over het gebruik van &os; op HP ProLiant
servers, inclusief het bespreken van ProLiant-specifieke
stuurprogramma's, beheersoftware, gereedschappen voor
instellingen en BIOS-updates. Dit is daaarom ook de
uitgesproken plaats voor het bespreken van de modules
hpasmd, hpasmcli, en hpacucli.&a.python.name;Python op &os;Dit is een lijst voor discussie gerelateerd aan het
verbeteren van ondersteuning voor Python op &os;. Dit is
een technische mailinglijst voor mensen die aan het porten
van Python, aanverwante modules en
Zope-dingen naar &os;
werken.&a.questions.name;GebruikersvragenDit is de mailinglijst voor vragen over &os;. Er
horen geen how to vragen op de technische
mailinglijsten thuis, tenzij een vraag erg technisch van
aard is.&a.ruby.name;&os;-specifieke discussies over
RubyDit is een lijst voor discussies gerelateerd aan de
Ruby-ondersteuning op &os;. Dit is een technische
mailinglijst. Het is bedoeld voor individuen die aan
Ruby-ports, bibliotheken van derde partijen, en raamwerken
werken.Individuen die geïnteresseerd zijn in de
technische discussie zijn ook welkom.&a.scsi.name;SCSI-subsysteemDit is de mailinglijst voor mensen die aan het
SCSI-subsysteem voor &os; werken. Dit is een technische
mailinglijst waarop slechts strikt technische bijdragen
worden verwacht.&a.security.name;Beveiligingsonderwerpen&os;-computerbeveiligingsonderwerpen (DES, Kerberos,
bekende beveiligingsgaten, oplossingen, enzovoort). Dit
is een technische mailinglijst waarop slechts strikt
technische bijdragen worden verwacht. Dit is zeker geen
vraag-en-antwoord lijst, maar bijdragen voor de FAQ (zowel
vraag als
antwoord) zijn welkom.&a.security-notifications.name;BeveiligingswaarschuwingenWaarschuwingen voor &os; beveiligingsproblemen en
oplossingen. Dit is geen discussielijst. De
discussielijst is &a.security.name;.&a.small.name;&os; gebruiken in embedded
toepassingenOp deze lijst worden onderwerpen gerelateerd aan
ongebruikelijk kleine en embedded &os;-installaties
besproken. Dit is een technische mailinglijst waarop
slechts strikt technische bijdragen worden verwacht.Deze lijst is vervangen door &a.embedded.name;&a.snapshots.name;Aankondigingen van ontwikkel-snapshots van
&os;Deze lijst houdt u op de hoogte over de beschikbaarheid van
nieuwe ontwikkel-snapshots voor de takken head/ en stable/ van
&os;.&a.stable.name;Discussie over het gebruik van
&os.stable;Dit is de mailinglijst voor gebruikers van
&os.stable;. Er worden ook waarschuwingen op gepost over
nieuwe opties in -STABLE die invloed op de systemen van
gebruikers kunnen hebben en instructies over de te nemen
stappen om -STABLE te blijven. Iedereen die
STABLE draait hoort zich op deze lijst
te abonneren. Dit is een technische mailinglijst waarop
slechts strikt technische bijdragen worden verwacht.&a.standards.name;Conformeren C99 &
POSIXDit is een forum voor technische bespreking
gerelateerd aan het conformeren van &os; aan de C99- en de
POSIX-standaarden.&a.toolchain.name;Onderhoud van de ingebouwde toolchain van
&os;Dit is de mailinglijst bedoeld voor discussies over het
onderhoud van de toolchain die met &os; wordt geleverd. Dit zou
de toestand van Clang en GCC kunnen omvatten, maar ook software
als assemblers, linkers en debuggers.&a.usb.name;Discussie over &os; ondersteuning voor
USBDit is de mailinglijst voor technische bespreking van
onderwerpen gerelateerd aan &os; ondersteuning voor
USB.&a.usergroups.name;Gebruikersgroep Coördinatie
LijstDit is de mailinglijst voor coördinatoren voor
alle lokale gebruikersgroepen, zodat ze met elkaar en een
lid van het Kernteam zaken kunnen bespreken. Deze lijst
hoort beperkt te blijven tot een overzicht van overleggen
en de coördinatie van projecten waarbij meerdere
gebruikersgroepen betrokken zijn.
-
- &a.vendors.name;
-
-
- Verkopers
-
- Coördinatie en discussie tussen het &os;-project
- en verkopers van software en hardware voor &os;.
-
-
-
&a.virtualization.name;Discussies over verscheidene
virtualisatietechnieken ondersteund door &os;Een lijst om de verscheidene virtualisatietechnieken
die door &os; worden ondersteund te bespreken. Aan de ene
kant zal de nadruk liggen op de implementatie van de
basale functionaliteit alsook op het toevoegen van nieuwe
mogelijkheden. Aan de andere kant zullen gebruikers een
forum hebben om om hulp te vragen bij problemen of om hun
usecases te bespreken.&a.wip-status.name;&os; Werk-In-Uitvoering statusDeze mailinglijst kan gebruikt worden om de schepping
en voortgang van uw &os;-gerelateerd werk aan te kondigen.
Berichten zullen gemodereerd worden. Het wordt
gesuggereerd om het bericht "Aan:" een &os;-mailinglijst
dat het onderwerp beter dekt te sturen en deze lijst
alleen te "BCC:"-en. Op deze manier kan uw
werk-in-uitvoering ook op de onderwerpslijst worden
bediscussieerd, aangezien discussies op deze lijst niet
zijn toegestaan.Kijk in de archieven voor voorbeelden van geschikte
berichten.Een redactioneel overzicht van de berichten aan deze lijst
kan om de paar maanden naar de &os;-website gezonden worden als
deel van de Status Reports .
Meer voorbeelden en oude rapportages zijn daar ook te
vinden.&a.wireless.name;Discussies over de 802.11-stack, de ontwikkeling
van gereedschappen voor stuurprogramma'sDe &os;-wireless lijst richt zich op de 802.11-stack
(sys/net80211) en de ontwikkeling van stuurprogramma's en
gereedschappen. Dit omvat bugs, nieuwe eigenschappen en
onderhoud.&a.xen.name;Discussies over het porteren van &os; naar
&xen; — implementatie en gebruikEen lijst die zich richt op de &os; &xen; port. De
verwachte hoeveelheid verkeer is laag genoeg zodat het
voor zowel technische discussies over de implementatie- en
ontwerpdetails als voor zaken over administratief gebruik
bedoeld is.&a.xfce.name;XFCEDit is een forum voor discussies gerelateerd aan de
XFCE-omgeving voor &os;. Dit is een
technische mailinglijst. Het is bedoeld voor degenen die actief
werken aan het porten van XFCE naar
&os;, om problemen naar voren te brengen of alternatieve
oplossingen te bespreken. Personen die geïnteresseerd zijn
in het volgen van de technische discussie zijn ook welkom.&a.zope.name;ZopeDit is een forum voor discussies die verwant zijn aan het
brengen van de Zope-omgeving naar &os;.
Dit is een technische mailinglijst. Het is bedoeld voor
individuen die actief werken aan het overbrengen van
Zope naar &os;, om problemen aan te
dragen of alternatieve oplossingen te bespreken. Individuen die
geïnteresseerd zijn in het volgen van de technische discussie
zijn ook welkom.Filters op de mailinglijstenDe &os;-mailinglijsten worden op verschillende manieren
gefilterd om het doorsturen van spam, virussen, en andere
ongewenste email te beperken. De hieronder beschreven
filteracties bevatten niet alle genomen acties voor de
beveiliging van de mailinglijsten.Er is een beperkt aantal typen bijlagen toegestaan op de
mailinglijsten. Alle bijlagen met een MIME-inhoudtype dat
niet in de onderstaande lijst staat worden verwijderd voordat
de mail wordt doorgestuurd naar de mailinglijsten.application/octet-streamapplication/pdfapplication/pgp-signatureapplication/x-pkcs7-signaturemessage/rfc822multipart/alternativemultipart/relatedmultipart/signedtext/htmltext/plaintext/x-difftext/x-patchSommige mailinglijsten staan wellicht bijlagen toe met
andere MIME-inhoudtypen, maar de bovenstaande lijst zal gelden
voor de meeste mailinglijsten.Als een email zowel een HTML- als een platte tekstversie
bevat, dan wordt de HTML-versie verwijderd. Als een mail alleen
een HTML-versie bevat, dan wordt die omgezet naar platte
tekst.Usenet-nieuwsgroepenNaast de twee specifieke &os;-nieuwsgroepen zijn er nog vele
andere waarin &os; wordt besproken of die anderszins relevant zijn
voor gebruikers van &os;.Specifieke BSD nieuwsgroepencomp.unix.bsd.freebsd.announcecomp.unix.bsd.freebsd.miscde.comp.os.unix.bsd
(Duits)fr.comp.os.bsd
(Frans)it.comp.os.freebsd
(Italiaans)Overige interessante &unix;-nieuwsgroepencomp.unixcomp.unix.questionscomp.unix.admincomp.unix.programmercomp.unix.shellcomp.unix.user-friendlycomp.security.unixcomp.sources.unixcomp.unix.advocacycomp.unix.misccomp.unix.bsdX Window systeemcomp.windows.x.i386unixcomp.windows.xcomp.windows.x.appscomp.windows.x.announcecomp.windows.x.intrinsicscomp.windows.x.motifcomp.windows.x.pexcomp.emulators.ms-windows.wineWorld wide webserversFora, blogs, en sociale netwerkenThe &os;
Forums bieden een webgebaseerd discussieforum voor
vragen en technische discussies over &os;.Planet
&os; biedt een samengestelde feed van tientallen
blogs geschreven door &os;-ontwikkelaars. Vele
ontwikkelaars gebruiken dit om korte notities te posten over
waaraan ze werken, nieuwe patches, en ander werk in
uitvoering.Het BSDConferences
YouTube Channel biedt een verzameling van video's
van hoge kwaliteit van wereldwijde BSD-conferenties. Dit is
een prima manier om presentaties van hoofdontwikkelaars over
nieuw werk in &os; te zien.Officiële spiegels
&chap.eresources.www.inc;
Email-adressenDe onderstaande gebruikersgroepen bieden &os;-gerelateerde
email-adressen aan voor hun leden. De aangegeven beheerders
behouden zich het recht voor om een account te verwijderen als die
op enigerlei wijze wordt misbruikt.DomeinFaciliteitenGebruikersgroepBeheerderukug.uk.FreeBSD.orgAlleen forwardenukfreebsd@uk.FreeBSD.orgLee Johnston
lee@uk.FreeBSD.org
diff --git a/nl_NL.ISO8859-1/books/handbook/jails/chapter.xml b/nl_NL.ISO8859-1/books/handbook/jails/chapter.xml
index c929bc31a4..eccecab9e8 100644
--- a/nl_NL.ISO8859-1/books/handbook/jails/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/jails/chapter.xml
@@ -1,1070 +1,1071 @@
MatteoRiondatoBijgedragen door RemkoLodderVertaald door JailsjailsOverzichtDit hoofdstuk levert een uitleg van wat &os; jails zijn en
hoe ze gebruikt kunnen worden. Jails, soms ook wel bekend als
een verbeterde vervanging van
chroot omgevingen, zijn een erg krachtige
tool voor systeem beheerders, maar het standaard gedrag kan ook
interessant zijn voor gevorderde gebruikers.Jails zijn een krachtig gereedschap, maar zijn geen zilveren kogel
qua beveiliging. Hoewel het belangrijk is om op te merken dat het
onmogelijk is voor een gevangen proces om zelf te ontsnappen, zijn er
verschillende manieren waarop een ongeprivilegieerde gebruiker buiten
een jail kan samenwerken met een geprivilegieerde gebruiker binnen de
jail en daarmee verhoogde privileges kan krijgen in de
gastheeromgeving.De meeste van deze aanvallen kunnen worden voorkomen door ervoor te
zorgen dat de jail-root niet beschikbaar is voor ongeprivilegieerde
gebruikers binnen de gastheeromgeving. Buiten dat geldt als algemene
regel dat onvertrouwde gebruikers met geprivilegieerde toegang tot een
jail geen toegang tot de gastheeromgeving moet worden gegeven.Na het lezen van dit hoofdstuk weet de lezer:Wat een jail is, en welk doel het kan dienen in een
&os; installatie.Hoe men een jail opbouwt, start en stopt.De basis over jail beheer, zowel van binnen in de
jail, als van buitenaf.Andere bronnen met nuttige informatie over jails zijn:De &man.jail.8; handleiding. Hier kan de volledige
referentie gevonden worden van het jail
commando — de administratieve tool die in &os; gebruikt
kan worden om &os; jails mee te beheren, te starten en te
stoppen.De mailinglijsten en de archieven hiervan. De archieven
van de &a.questions; en andere mailing lijsten die gehost
worden door de &a.mailman.lists; bevatten reeds een rijke
bron van informatie over jails. Het zou altijd aantrekkelijk
moeten zijn om informatie in de archieven te zoeken, of een
nieuwe vraag stellen aan de &a.questions.name;
mailinglijst.Termen en begrippen van jailsOm een beter begrip te geven over de onderdelen van &os; die
gerelateerd zijn aan jails, de werking ervan, en hoe ze omgaan
met de rest van &os; worden de volgende termen gebruikt in het
hoofdstuk:&man.chroot.8; (commando)Hulpmiddel dat de systeemaanroep &man.chroot.2; van &os;
gebruikt om de rootmap van een proces en alle afstammelingen te
veranderen.&man.chroot.2; (omgeving)Een omgeving van processen die draaien in een
chroot. Dit is inclusief bronnen die
gebruikt worden, zoals bijvoorbeeld het gedeelte van
het bestandssysteem dat zichtbaar is, de gebruiker en
groep ID's welke beschikbaar zijn, netwerkkaarten
en andere IPC-mechanismes, etcetera.&man.jail.8; (commando)De systeem utility die het mogelijk maakt om processen
binnenin een jail te starten.host (systeem, processen, gebruiker, etc.)Het controlerende systeem van een jail omgeving. Het
host systeem heeft toegang tot alle beschikbare hardware
bronnen en kan processen controleren zowel buiten als
binnenin een jail. Één van de belangrijkste
verschillen van het host systeem met een jail zijn de
limitaties die van toepassing zijn op super-gebruiker
processen binnenin een jail, niet geforceerd worden voor
processen in het host systeem.hosted (systeem, processen, gebruiker, etc.)Een proces, gebruiker, of andere entiteit wiens toegang
tot bronnen is gelimiteerd door een &os; jail.IntroductieOmdat systeem beheer een complexe en enorme taak is, zijn er
vele sterke tools ontwikkeld om het leven van een systeem beheerder
makkelijker te maken. Deze tools leveren meestal verbeteringen op
de manier waarop systemen worden geïnstalleerd, geconfigureerd
en onderhouden. Een deel van de taken waarvan verwacht wordt dat
die uitgevoerd wordt door de systeem beheerder is het goed
configureren van de beveiliging van een systeem, zodat het kan
blijven doorgaan met het serveren van de taak, zonder dat er
beveiligingsproblemen optreden.Één van de tools welke gebruikt kan worden om
de beveiliging van een &os; systeem te verbeteren zijn
jails. Jails zijn geïntroduceerd in
&os; 4.X door &a.phk;, maar zijn grotendeels verbeterd in
&os; 5.X om ze nog sterker en krachtiger te maken. De
ontwikkeling gaat nog steeds door met verbeteringen voor het
gebruik, performance, betrouwbaarheid en beveiliging.Wat is een jailBSD achtige systemen hebben sinds 4.2-BSD ondersteuning
voor &man.chroot.2;. De &man.chroot.8; utility kan gebruikt
worden om de root directory van een set processen te wijzigen
waardoor een veilige omgeving wordt gecreeërd voor de
rest van het systeem. Processen die gemaakt worden in een
chroot omgeving kunnen bestanden en bronnen daarbuiten niet
benaderen. Daardoor zou een compromitering van een dienst die
in een chroot omgeving draait niet direct betekenen dat het hele
systeem gecompromiteerd is. De &man.chroot.8; utility is goed
genoeg voor simpele taken, waarbij flexibiliteit en geavanceerde
en complexe opties niet nodig zijn. Sinds het uitvinden van het
chroot concept, zijn er vele mogelijkheden gevonden om hieruit
te kunnen komen en alhoewel ze verbeterd zijn in moderne versies
van &os;, werd het duidelijk dat &man.chroot.2; niet de meest
ideale oplossing was voor het beveiligen van diensten. Er moest
een nieuw subsysteem ontwikkeld worden.Dit is één van de redenen waarom jails zijn
ontwikkeld.Jails zijn een verbeterd concept van de &man.chroot.2;
omgeving, in verschillende opzichten. In een traditionele
&man.chroot.2; omgeving worden processen alleen gelimiteerd
in het deel van het bestandssysteem die ze kunnen benaderen.
De rest van de systeem bronnen (zoals de set van systeem
gebruikers, de draaiende processen of het netwerk subsysteem)
worden gedeeld door het chrooted proces en de processen op het
host systeem. Jails breiden dit model uit door het niet
alleen virtualizeren van de toegang tot het bestandssysteem maar
ook tot de set van gebruikers, het netwerk subsysteem van de
&os; kernel en een aantal andere delen. Een meer complete set
van gespecificeerde controle mogelijkheden die beschikbaar zijn
voor het personaliseren van de toegang tot een jail omgeving
wordt beschreven in .Een jail heeft vier kenmerken:Een eigen directory structuur — het startpunt
van waaruit een jail benaderd wordt. Zodra men in de jail
zit, mogen processen niet buiten deze directory structuur
komen. Traditionele problemen die &man.chroot.2;'s ontwerp
getart hebben, hebben geen invloed op &os; jails.Een hostname — de hostnaam die gebruikt wordt in
de jail. Jails worden met name gebruikt voor het hosten van
netwerk diensten, daardoor kan het de systeembeheerder heel
erg helpen als er beschrijvende hostnames worden
gekozen.Een IP adres — deze wordt
gekoppeld aan de jail en kan op geen enkele manier worden
gewijzigd tijdens het leven van de jail. Het IP adres van
een jail is meestal een alias op een reeds bestaande
netwerk interface, maar dit is niet noodzakelijk.Een commando — het padnaam van een uitvoerbaar
bestand in de jail. Deze is relatief aan de rootdirectory
van de jail omgeving en verschilt per situatie, afhankelijk
van het type van de specifieke jail omgeving.Buiten deze kenmerken, kunnen jails hun eigen set aan
gebruikers en root gebruiker hebben.
Uiteraard zijn de mogelijkheden van de root
gebruiker beperkt tot de jail omgeving en, vanuit het host
systeem gezien, is de root gebruiker geen
super-gebruiker. Daarnaast is het de root
gebruiker in een jail omgeving niet toegestaan om kritieke
operaties uit te voeren op het systeem buiten de gedefinieerde
jail omgeving. Meer informatie over de mogelijkheden en
beperkingen van de root gebruiker kan
gevonden worden in
hieronder.Creeëren en controleren van jailsSommige beheerders kiezen ervoor om jails op te delen in
de volgende twee types: complete jails, welke
een volledig &os; systeem emuleert en service
jails, gericht op één applicatie of dienst,
mogelijkerwijs draaiende met privileges. Dit is alleen een
conceptuele splitsing, de manier van het opbouwen van een jail
wordt hierdoor niet veranderd. De &man.jail.8; handleiding
is heel duidelijk over de procedure voor het maken van een
jail:&prompt.root; setenv D /here/is/the/jail
&prompt.root; mkdir -p $D
&prompt.root; cd /usr/src
&prompt.root; make buildworld
&prompt.root; make installworld DESTDIR=$D
&prompt.root; make distribution DESTDIR=$D
&prompt.root; mount -t devfs devfs $D/devHet selecteren van een locatie voor een jail is het beste
beginpunt. Hier zal de jail fysiek te vinden zijn binnen
het bestandssysteem van het host systeem. Een goede keuze
kan /usr/jailjailnaam
zijn, waar jailnaam de naam is van de
jail. Het /usr
bestandssysteem heeft meestal genoeg ruimte voor het jail
bestandssysteem, wat voor een complete jail
betekend dat het eigenlijk een replica is van elk bestand
dat standaard aanwezig is binnen het &os; basissysteem.Als u uw userland al heeft herbouwd met
make world of make buildworld,
dan kunt u deze stap overslaan en uw bestaande userland in de nieuwe
jail installeren.Dit commando zal de gekozen fysieke directory vullen
met de benodigde binaire bestanden, bibliotheken,
handleidingen, etc.Het distribution doel voor
make installeert elk benodigd
configuratie bestand. In simpelere termen, het installeert
alle installeerbare bestanden in
/usr/src/etc naar de
/etc directory van
de jail omgeving:
$D/etc.Het koppelen van het &man.devfs.8; bestandssysteem
is niet vereist in een jail. Aan de andere kant, vrijwel
elke applicatie heeft toegang nodig tot minstens
één apparaat, afhankelijk van het doel van
het programma. Het is erg belangrijk om toegang tot
apparaten te controleren binnenin een jail, omdat incorrecte
instellingen een aanvaller de mogelijkheid kunnen geven om
vervelende dingen in de jail te doen. De controle over
&man.devfs.8; wordt gedaan door middel van rulesets, welke
beschreven worden in de &man.devfs.8; en &man.devfs.conf.5;
handleidingen.Zodra een jail is geïnstalleerd, kan het opgestart worden
door de &man.jail.8; applicatie. De &man.jail.8; applicatie
heeft vier benodigde argumenten welke beschreven worden in
. Er kunnen ook andere argumenten
gebruikt worden, om bijvoorbeeld de jail te starten met de
instellingen van een specifieke gebruiker. Het
argument
hangt af van het type jail, voor een
virtueel systeem is
/etc/rc een goede keuze, omdat het de
reguliere opstart procedure nabootst van een &os; systeem.
Voor een dienst jail is het geheel afhankelijk
van de dienst of applicatie die in de jail gaat draaien.Jails worden over het algemeen gestart tegelijkertijd met
de rest van het systeem. Het &os; rc
mechanisme levert een makkelijke manier om dat te doen:Een lijst van jails die opgestart moeten worden tijdens
het opstarten van het systeem, moeten worden toegevoegd aan
het &man.rc.conf.5; bestand:jail_enable="YES" # Stel dit in op NO om te voorkomen dat er jails gestart worden
jail_list="www" # Door spaties gescheiden lijst van jailsDe jail namen in jail_list mogen alleen
alfanumerieke karakters bevatten.Voor elke jail die gespecificeerd is in
jail_list moet een groep van &man.rc.conf.5;
instellingen worden toegevoegd:jail_www_rootdir="/usr/jail/www" # de hoofd directory van de jail
jail_www_hostname="www.example.org" # de hostnaam van de jail
jail_www_ip="192.168.0.10" # het IP adres van de jail
jail_www_devfs_enable="YES" # moet devfs wel of niet gekoppeld worden in de jail
jail_www_devfs_ruleset="www_ruleset" # welke devfs ruleset gebruikt moet worden voor de jailDe standaard opstart variabelen in &man.rc.conf.5;
gebruiken het /etc/rc bestand om de jail
op te starten, wat er vanuit gaat dat de jail een compleet
virtueel systeem is. Voor service jails moet het standaard
opstart commando worden gewijzigd door het aanpassen van de
jail_jailname_exec_start
optie.Voor een complete lijst van beschikbare opties, zie de
&man.rc.conf.5; handleiding.&man.service.8; kan worden gebruikt om jails handmatig te starten en
te stoppen, mits er een overeenkomstige verzameling regels bestaat in
/etc/rc.conf.&prompt.root; service jail start www
&prompt.root; service jail stop wwwEr is op dit moment geen nette methode om een jail te
stoppen. Dit komt omdat de benodigde applicaties die een
nette afsluiting verzorgen, niet beschikbaar zijn in een
jail. De beste manier om een jail af te sluiten is door
het volgende commando van binnenin de jail uit te voeren
of door middel van het &man.jexec.8; commando:&prompt.root; sh /etc/rc.shutdownMeer informatie hierover kan gevonden worden in de
&man.jail.8; handleiding.Optimaliseren en administratieEr zijn meerdere opties beschikbaar die ingesteld kunnen
worden voor elke jail, en er zijn meerdere mogelijkheden om een
&os; host systeem te combineren met jails om een betere scheiding
tussen systeem en applicaties te verkrijgen. Deze sectie
leert:Een aantal opties zijn beschikbaar voor het optimaliseren
van het gedrag en beveiligings beperkingen die
geïmplementeerd worden in een jail.Een aantal high-level applicaties die
gebruikt worden voor het beheren van jails, welke beschikbaar
zijn via de &os; Ports Collectie en kunnen gebruikt worden
om een complete jail-gebaseerde oplossing te
creeëren.Systeem applicaties voor het optimaliseren van jails onder
&os;Het goed kunnen optimaliseren van een jail configuratie wordt
veelal gedaan door het instellen van &man.sysctl.8; variabelen.
Er bestaat een speciale subtak van sysctl voor het organiseren
van alle relevante opties: de security.jail.*
hierarchie binnen de &os; kernel. Hieronder staat een
lijst van de belangrijkste jail-gerelateerde sysctl variabelen,
met informatie over de standaard waarden. De benaming zou
zelf beschrijvend moeten zijn, maar voor meer informatie
kunnen de &man.jail.8; en &man.sysctl.8; handleidingen
geraadpleegd worden.security.jail.set_hostname_allowed:
1security.jail.socket_unixiproute_only:
1security.jail.sysvipc_allowed:
1security.jail.enforce_statfs:
2security.jail.allow_raw_sockets:
0security.jail.chflags_allowed:
0security.jail.jailed: 0Deze variabelen kunnen door de systeem beheerder gebruikt
worden op het host systeem om limitaties
toe te voegen of te verwijderen, welke standaard opgedwongen
worden aan de root gebruiker. Let op,
een aantal beperkingen kan niet worden aangepast. De
root gebruiker mag geen bestandssystemen
koppelen of ontkoppelen binnenin een &man.jail.8;. De
root gebruiker mag ook geen &man.devfs.8;
rulesets laden of ontladen, firewall rules plaatsen of andere
taken uitvoeren die vereisen dat de in-kernel data wordt
aangepast, zoals het aanpassen van de
securelevel variabele in de kernel.Het basis systeem van &os; bevat een basis set van
applicaties voor het inzien van de actieve jails, en voor
het uitvoeren van administratieve commando's in een jail.
De &man.jls.8; en &man.jexec.8; commando's zijn onderdeel van
het basis systeem en kunnen gebruikt worden voor het
uitvoeren van de volgende simpele taken:Het printen van een lijst van actieve jails met het
corresponderende jail ID (JID),
IP adres, de hostnaam en het pad.Het koppelen met een actieve jail vanuit het host
systeem, en voor het uitvoeren van administratieve taken
in de jail zelf. Dit is bijzonder handig wanneer de
root gebruiker een jail netjes
wilt afsluiten. Het &man.jexec.8; commando kan ook
gebruikt worden om een shell te starten in een jail
om daarmee administratieve taken uit te voeren;
bijvoorbeeld met:&prompt.root; jexec 1 tcshAdministratieve applicaties op hoog niveau in de &os;
Ports Collection.Tussen de vele software van derde partijen voor jail
beheer, is één van de meest complete en
bruikbare paketten:
sysutils/jailutils.
Dit is een set van kleine applicaties, die bijdragen aan
&man.jail.8; beheer. Kijk op de web pagina voor meer
informatie.Toepassing van jailsDanielGerzoBijgedragen door Dienst jailsDeze sectie is gebaseerd op een idee van &a.simon;
op ,
en een geupdate artikel door Ken Tom
locals@gmail.com. Deze sectie illusteert hoe een
&os; systeem opgezet kan worden met een extra laag beveiliging
door gebruik te maken van &man.jail.8;. Er wordt vanuit gegaan
dat het betrokken systeem minstens RELENG_6_0 draait en dat de
informatie eerder in dit hoofdstuk goed begrepen is.OntwerpÉén van de grootste problemen met jails is het
beheer van het upgrade proces. Dit is meestal een probleem
omdat elke jail vanaf het begin af aan moet worden opgebouwd
wanneer er geupdate wordt. Meestal is dit voor een enkele jail
geen probleem, omdat het update proces redelijk simpel is, maar
het kan een vervelende tijdrovende klus zijn als er meerdere
jails zijn.Deze opstelling vereist uitgebreide kennis en ervaring
van &os; en zijn mogelijkheden. Als onderstaande stappen
te lastig lijken te zijn, wordt aangeraden om een simpeler
- systeem te bekijken zoals
+ systeem te bekijken zoals sysutils/qjail of
sysutils/ezjail, welke
een simpele manier geeft voor het beheren van &os; jails
en niet zo complex is als deze opstelling.Het idee werd geopperd om zulke problemen zoveel als
mogelijk te voorkomen door zoveel als mogelijk te delen
tussen de verschillende jails op een zo veilig mogelijke
manier — door gebruik te maken van alleen-lezen
&man.mount.nullfs.8; koppelingen, zodat het upgraden simpeler
wordt en het inzetten van jails voor enkele diensten
interessanter wordt. Daarnaast geeft het een simpele manier
om nieuwe jails toe te voegen of te verwijderen en om deze te
upgraden.Voorbeelden binnen deze context zijn: een
HTTP server, een DNS
server, een SMTP server
enzovoorts.De doelen van de opstelling zoals beschreven in dit
hoofdstuk zijn:Het creeëren van een simpele en makkelijk te
begrijpen jail structuur. Dit impliceert dat er
niet elke keer een volledige
installworld gedraaid hoeft te worden voor elke
jail.Het makkelijk maken van het aanmaken en verwijderen
van jails.Het makkelijk maken van het updaten en upgraden van
bestaande jails.Het mogelijk maken van het draaien van een eigen
gemaakte &os; tak.Paranoia zijn over beveiliging, zoveel mogelijk
beperken, om de kans op inbraak zo klein mogelijk te
maken.Het zoveel mogelijk besparen van ruimte en inodes.Zoals reeds besproken is dit ontwerp sterk afhankelijk van
het hebben van een master-template, welke
alleen-lezen (beter bekend als
nullfs) gekoppeld is binnen elke
jail, en een beschrijfbaar apparaat per jail. Een apparaat
kan hierin zijn een aparte fysieke schijf, een partitie, of
een door vnodes ondersteunde &man.md.4; apparaat. In dit
voorbeeld wordt gebruik gemaakt van lezen-schrijven
nullfs koppelpunten.Het gebruikte bestandssysteem wordt beschreven door de
volgende lijst:Elke jail zal gekopeld worden onder de /home/j directory./home/j/mroot is
de template voor elke jail en tevens de alleen-lezen
partitie voor elke jail.Voor elke jail zal een lege directory structuur
gemaakt worden, welke valt onder de /home/j directory.Elke jail heeft een /s directory, welke
gekoppeld zal worden aan het beschrijfbare gedeelte van
het systeem.Elke jail zal zijn eigen beschrijfbaar systeem hebben
welke gebaseerd is op /home/j/skel.Elke jail ruimte (het beschrijfbare gedeelte van de
jail), wordt gecreeërd in de /home/js directory.De voorbeelden gaan er vanuit dat de jails geplaatst
worden in /home partitie. Dit kan
uiteraard aangepast worden, maar dan moeten de
voorbeelden hieronder ook worden aangepast naar de plek
die gebruikt zal worden.De template creeërenDeze sectie leert welke stappen er genomen moeten worden
om de master-template te maken. Deze zal het alleen-lezen
gedeelte vormen van de jails.Het is altijd een goed idee om ervoor te zorgen dat het
&os; systeem de laatst beschikbare -RELEASE versie draait.
Zie het corresponderende hoofdstuk in het
Handboek
om te lezen hoe dit gedaan wordt. In het geval dat het de
moeite niet is om te updaten, zal een buildworld nodig zijn
voordat er verder gegaan kan worden. Daarnaast is het
sysutils/cpdup pakket
benodigd. Er wordt gebruik gemaakt van de&man.portsnap.8;
applicatie om de &os; Ports Collectie te downloaden.
Het handbook met het hoofdstuk
over Portsnap, is een aanrader voor nieuwe gebruikers.Als eerste moet er een directory structuur
gecreeërd worden voor het alleen-lezen
bestandssysteem, welke de &os; binaries zal bevatten
voor de jails. Daarna wordt het alleen-lezen
bestandssysteem geïnstalleerd vanuit de
&os; broncode directory in de jail template:&prompt.root; mkdir /home/j /home/j/mroot
&prompt.root; cd /usr/src
&prompt.root; make installworld DESTDIR=/home/j/mrootHierna moet de &os; Ports Collectie worden voorbereid,
evenals de &os; broncode directory, wat voor
mergemaster vereist is:&prompt.root; cd /home/j/mroot
&prompt.root; mkdir usr/ports
&prompt.root; portsnap -p /home/j/mroot/usr/ports fetch extract
&prompt.root; cpdup /usr/src /home/j/mroot/usr/srcNu moet er een skelet gecreeërd
worden voor het bechrijfbare gedeelte van het
systeem:&prompt.root; mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles
&prompt.root; mv etc /home/j/skel
&prompt.root; mv usr/local /home/j/skel/usr-local
&prompt.root; mv tmp /home/j/skel
&prompt.root; mv var /home/j/skel
&prompt.root; mv root /home/j/skelDe mergemaster applictie
moet gebruikt worden om de ontbrekende configuratie
bestanden te installeren. Erna moeten alle overtollige
directories die gecreeërd zijn door
mergemaster verwijderd
worden:&prompt.root; mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i
&prompt.root; cd /home/j/skel
&prompt.root; rm -R bin boot lib libexec mnt proc rescue sbin sys usr devNu moet er een symbolische link gemaakt worden tussen
het beschrijfbare bestandssysteem en het alleen-lezen
bestandssysteem, zorg ervoor dat de links gemaakt worden
in de juiste /s
directory. Als hier echte directories worden gemaakt
of de directories worden op de verkeerde plak aangemaakt
zal dit resulteren in een mislukte installatie:&prompt.root; cd /home/j/mroot
&prompt.root; mkdir s
&prompt.root; ln -s s/etc etc
&prompt.root; ln -s s/home home
&prompt.root; ln -s s/root root
&prompt.root; ln -s ../s/usr-local usr/local
&prompt.root; ln -s ../s/usr-X11R6 usr/X11R6
&prompt.root; ln -s ../../s/distfiles usr/ports/distfiles
&prompt.root; ln -s s/tmp tmp
&prompt.root; ln -s s/var varAls laatste stap moet er een generieke
/home/j/skel/etc/make.conf gemaakt
worden met de volgende inhoud:WRKDIRPREFIX?= /s/portbuildDoor het gebruik van WRKDIRPREFIX
op deze manier, is het mogelijk om per jail &os; ports
te compileren. Onthoud dat de ports directory onderdeel
is van het alleen-lezen bestandssysteem. Het eigen pad
voor WRKDIRPREFIX maakt het mogelijk
dat port builds gedaan worden op het beschrijfbare
gedeelte van elke jail.Jails creeërenNu we een complete &os; template hebben, kunnen we de
jails opzetten en configureren in
/etc/rc.conf. Dit voorbeeld demonstreert
het creeëren van drie jails: NS,
MAIL en WWW.Zet het volgende in /etc/fstab
zodat de alleen-lezen template voor de jails en de
beschrijfbare partititie beschikbaar zijn in de
respectievelijke jails:/home/j/mroot /home/j/ns nullfs ro 0 0
/home/j/mroot /home/j/mail nullfs ro 0 0
/home/j/mroot /home/j/www nullfs ro 0 0
/home/js/ns /home/j/ns/s nullfs rw 0 0
/home/js/mail /home/j/mail/s nullfs rw 0 0
/home/js/www /home/j/www/s nullfs rw 0 0Partities die gemarkeerd zijn met een 0 als
passnummer worden niet gecontroleerd
door &man.fsck.8; tijdens het opstarten, en partities
met een dumpnummer van 0 worden niet
geback-upped door &man.dump.8;. Het is niet gewenst dat
fsck de
nullfs koppelingen controleert
of dat dump een back-up maakt
van de alleen-lezen nullfs koppelingen van de jails.
Daarom worden ze gemarkeerd met 0 0
in de laatste twee kolommen van elke
fstab regel hierboven.Configureer de jails in
/etc/rc.conf:jail_enable="YES"
jail_set_hostname_allow="NO"
jail_list="ns mail www"
jail_ns_hostname="ns.example.org"
jail_ns_ip="192.168.3.17"
jail_ns_rootdir="/usr/home/j/ns"
jail_ns_devfs_enable="YES"
jail_mail_hostname="mail.example.org"
jail_mail_ip="192.168.3.18"
jail_mail_rootdir="/usr/home/j/mail"
jail_mail_devfs_enable="YES"
jail_www_hostname="www.example.org"
jail_www_ip="62.123.43.14"
jail_www_rootdir="/usr/home/j/www"
jail_www_devfs_enable="YES"De reden dat de
jail_name_rootdir
variabele verwijst naar de /usr/home directory in
plaats van naar /home komt doordat het
fysieke pad van de /home directory op een
standaard &os; installatie verwijst naar /usr/home. De
jail_name_rootdir
variabele mag niet ingesteld
worden op een symbolische link, omdat dan de jail
weigert te starten. Gebruik het &man.realpath.1;
programma om te zien welke waarde ingesteld moet worden
voor deze variabele. Zie de &os;-SA-07:11.jail
waarschuwing voor meer informatie.Creeër de benodigde koppelpunten voor het
alleen-lezen bestandssysteem van elke jail:&prompt.root; mkdir /home/j/ns /home/j/mail /home/j/wwwInstalleer de beschrijfbare template in elke jail.
Let op het gebruik van sysutils/cpdup, wat helpt
om een goede kopie te maken in elke directory:&prompt.root; mkdir /home/js
&prompt.root; cpdup /home/j/skel /home/js/ns
&prompt.root; cpdup /home/j/skel /home/js/mail
&prompt.root; cpdup /home/j/skel /home/js/wwwIn deze fase zijn de jails gebouwd en voorbereid om
op te starten. Koppel eerst de benodigde bestandssystemen
voor elke jail, en start ze vervolgens door gebruik te
maken van het rc-bestand voor de jail:&prompt.root; mount -a
&prompt.root; service jail startDe jails zouden nu gestart moeten zijn. Om te zien of ze
correct gestart zijn, wordt het &man.jls.8; programma
gebruikt. Het resultaat hiervan ziet er ongeveer als volgend
uit:&prompt.root; jls
JID IP Address Hostname Path
3 192.168.3.17 ns.example.org /home/j/ns
2 192.168.3.18 mail.example.org /home/j/mail
1 62.123.43.14 www.example.org /home/j/wwwOp dit moment, zou het mogelijk moeten zijn om op elke
jail aan te loggen, nieuwe gebruikers toe te voegen en het
configureren van daemons. De JID kolom
geeft het identificatie nummer voor elke gestarte jail.
Gebruik het volgende commando om administratieve commando's
uit te voeren in de jail met het JID
3:&prompt.root; jexec 3 tcshUpgradenNaarmate de tijd verstrijkt komt de noodzaak om het
systeem te updaten naar een nieuwere versie van &os;,
danwel vanwege een veiligheids waarschuwing danwel vanwege
nieuwe mogelijkheden die geïmplementeerd zijn en nuttig
zijn voor de jails. Het ontwerp van deze opzet levert een
makkelijke manier voor het upgraden van jails. Daarnaast
minimaliseert het de down-time, omdat de jails
alleen in de allerlaatste minuut uitgeschakeld worden. Het
geeft ook de mogelijkheid om terug te keren naar een oudere
versie, voor het geval er problemen ontstaan.De eerste stap is het upgraden van het host systeem
zelf, waarna een nieuwe alleen-lezen template gemaakt
wordt in /home/j/mroot2.&prompt.root; mkdir /home/j/mroot2
&prompt.root; cd /usr/src
&prompt.root; make installworld DESTDIR=/home/j/mroot2
&prompt.root; cd /home/j/mroot2
&prompt.root; cpdup /usr/src usr/src
&prompt.root; mkdir sHet installworld doel
creeërt een aantal onnodige directories, welke
verwijderd moeten worden:&prompt.root; chflags -R 0 var
&prompt.root; rm -R etc var root usr/local tmpMaak opnieuw de beschrijfbare symbolische linken voor
het hoofd bestandssysteem:&prompt.root; ln -s s/etc etc
&prompt.root; ln -s s/root root
&prompt.root; ln -s s/home home
&prompt.root; ln -s ../s/usr-local usr/local
&prompt.root; ln -s ../s/usr-X11R6 usr/X11R6
&prompt.root; ln -s s/tmp tmp
&prompt.root; ln -s s/var varDit is het juiste moment om de jails te stoppen:&prompt.root; service jail stopOntkoppel de originele bestandssystemen:&prompt.root; umount /home/j/ns/s
&prompt.root; umount /home/j/ns
&prompt.root; umount /home/j/mail/s
&prompt.root; umount /home/j/mail
&prompt.root; umount /home/j/www/s
&prompt.root; umount /home/j/wwwHet beschrijfbare gedeelte van de jail is
gekoppeld aan het alleen-lezen gedeelte
(/s) en moet
derhalve eerst ontkoppeld worden.Verplaatst het oude alleen-lezen systeem en vervang
het door de nieuwe systeem. Het oude systeem dient als
reservekopie voor het geval er iets misgaat. De
naam moet het zelfde zijn als bij de installatie van het
nieuwe systeem. Verplaats de &os; Ports Collectie naar
het nieuwe bestandssysteem om ruimte en inodes te
besparen:&prompt.root; cd /home/j
&prompt.root; mv mroot mroot.20060601
&prompt.root; mv mroot2 mroot
&prompt.root; mv mroot.20060601/usr/ports mroot/usrOp dit moment is het alleen-lezen gedeelte klaar,
de enig overgebleven taak is nu om alle bestandssystemen
opnieuw te koppelen en om de jails weer op te starten:&prompt.root; mount -a
&prompt.root; service jail startGebruik het &man.jls.8; programma om te zien of de jails
correct zijn opgestart. Vergeet niet om in elke jail het
mergemaster programma te starten. Ook moeten de configuratie
bestanden en de rc.d scripts geupdate worden.
diff --git a/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.xml b/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.xml
index e2eb8a2ec7..710f197f43 100644
--- a/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.xml
@@ -1,2110 +1,2077 @@
RossLippertAangepast door SiebrandMazelandVertaald door RenéLadanMultimediaOverzicht&os; ondersteunt een breed bereik aan geluidskaarten,
waardoor het mogelijk is van geluid van hoge kwaliteit op een
computer te genieten. Hieronder vallen mogelijkheden om geluid
op te nemen en af te spelen in de MPEG Audio Layer 3 (MP3), WAV
en Ogg Vorbis formaten en vele andere formaten. De &os;
Portscollectie bevat ook programma's waarmee opgenomen audio
bewerkt kan worden, waarmee geluidseffecten toegevoegd kunnen
worden en aangesloten MIDI apparaten bestuurd kunnen
worden.Met wat experimenteren kunnen met &os; videobestanden en DVD's
afgespeeld worden. Er zijn minder programma's om video te
encoderen, te converteren en af te spelen dan er zijn voor audio.
Op het moment van schrijven is er bijvoorbeeld geen goed
hercoderingsprogramma in de &os; Portscollectie beschikbaar wat
gebruikt kan worden om tussen formaten onderling te converteren,
zoals mogelijk is met audio/sox. De software in dit
landschap is echter sterk aan verandering onderhevig.In dit hoofdstuk worden de stappen beschreven die uitgevoerd
moeten worden om een geluidskaart in te stellen. Bij de
installatie en instelling van X11 () is al
beschreven hoe videokaarten ingesteld kunnen worden, hoewel er
nog wel een aantal mogelijkheden zijn om het afspelen te
verbeteren.Na het lezen van dit hoofdstuk weet de lezer:Hoe een systeem zo in te stellen dat een geluidskaart
wordt herkend;Hoe getest kan worden of een kaart werkt;Hoe problemen op te lossen met betrekking tot
geluidsinstellingen;Hoe MP3's en andere audio af te spelen en te
maken;Hoe video wordt ondersteund door de X server;Welke video speler/encoderports goede resultaten
geven;Hoe DVD's, .mpg en
.avi bestanden af te spelen;Hoe de inhoud van CD's en DVD's naar bestanden geript kan
worden;Hoe een TV-kaart in te stellen;Hoe een scanner in te stellen.Er wordt aangenomen dat de lezer van dit hoofdstuk:Weet hoe een nieuwe kernel in te stellen en te
installeren ().Het proberen aan te koppelen van audio-CD's met
&man.mount.8; resulteert in ieder geval in een foutmelding en in
het ergste geval tot een kernel panic. Dat
type media heeft een formaat dat afwijkt van het gebruikelijke
ISO-bestandssysteem.MosesMooreGeschreven door MarcFonvieilleAangepast door Geluidskaart installerenSysteem instellenPCIISAgeluidskaartenAlvorens te beginnen is het van belang te weten welk model
een geluidskaart is, welke chip erop wordt gebruikt en of het
een PCI of ISA kaart is. &os; ondersteunt vele PCI en ISA
kaarten. De ondersteunde audio-apparaten staan in een lijst in
de Hardware Notes.
In de Hardware Notes staat ook beschreven welk stuurprogramma
uw kaart ondersteunt.kernelinstellenOm een geluidsapparaat te gebruiken dient het juiste
apparaatstuurprogramma geladen te worden. Dit kan op twee
manieren. De meest eenvoudige manier is simpelweg een
kernelmodule te laden voor de gewenste geluidskaart met
&man.kldload.8;. Dit kan vanaf de commandoregel:&prompt.root; kldload snd_emu10k1Of door als volgt de juiste regel toe te voegen aan
/boot/loader.conf:snd_emu10k1_load="YES"De bovenstaande voorbeelden zijn voor een Creative
&soundblaster; Live! geluidskaart. De overige beschikbare
laadbare geluidsmodules staan beschreven in
/boot/defaults/loader.conf. Als niet
compleet duidelijk is welk stuurprogramma gebruikt dient te
worden, dan kan het met de module
snd_driver geprobeerd worden:&prompt.root; kldload snd_driverDit is een metastuurprogramma, dat in één
keer de meest voorkomende apparaatstuurprogramma's laadt.
Hiermee kan het zoeken naar het juiste stuurprogramma versneld
worden. Het is ook mogelijk om alle geluidsstuurprogramma's te
laden via de optie
/boot/loader.conf.Om uit te vinden welk stuurprogramma na het laden van het
metastuurprogramma snd_driver wordt
geladen kan de inhoud van het bestand
/dev/sndstat nagekeken worden met
cat /dev/sndstat.Een tweede mogelijkheid is ondersteuning voor een
geluidskaart statisch in de kernel te compileren. In de
onderstaande paragrafen staat meer informatie over hoe op die
manier ondersteuning voor hardware toegevoegd kan worden. Meer
informatie over het hercompileren van een kernel staat in .Aangepaste kernel maken met geluidsondersteuningEerst moet het stuurprogramma voor het audioraamwerk
&man.sound.4; aan de kernel toegevoegd worden. Daarvoor
dient het volgende te worden opgenomen in het bestand met
kernelinstellingen:device soundDaarna kan ondersteuning voor de specifieke geluidskaart
toegevoegd worden. Daarvoor moet bekend zijn welk
stuurprogramma de kaart ondersteunt. Dit kan opgezocht
worden in de lijst met ondersteunde audio-apparaten in de
Hardware Notes,
waar de correcte stuurprogramma's voor geluidskaarten
beschreven staan. Zo wordt een Creative &soundblaster; Live!
geluidskaart bijvoorbeeld ondersteund door het stuurprogramma
&man.snd.emu10k1.4;. Ondersteuning voor deze kaart kan als
volgt worden toegevoegd:device snd_emu10k1In de hulppagina voor een stuurprogramma staat welke
syntaxis gebruikt kan worden. De expliciete syntaxis voor de
kernelinstellingen voor elk ondersteund geluidsstuurprogramma
staat ook in /usr/src/sys/conf/NOTES.Voor niet-PnP ISA-geluidskaarten kan het nodig zijn dat de
kernel informatie gegeven moet worden over de instellingen
van de kaart (IRQ, I/O poort, enzovoort), zoals dat geldt voor
alle niet-PnP ISA-kaarten. Dit kan via het bestand
/boot/device.hints. Bij het starten van
een systeem leest de &man.loader.8; dat bestand uit en geeft
de instellingen door aan de kernel. Zo gebruikt een oude
Creative &soundblaster; 16 ISA niet-PnP-kaart het
stuurprogramma &man.snd.sbc.4; samen met
snd_sb16 en dient de volgende regel
toegevoegd te worden aan het kernelinstellingenbestand:device snd_sbc
device snd_sb16Daarnaast moet het volgende worden toegevoegd aan
/boot/device.hints:hint.sbc.0.at="isa"
hint.sbc.0.port="0x220"
hint.sbc.0.irq="5"
hint.sbc.0.drq="1"
hint.sbc.0.flags="0x15"In dit geval gebruikt de kaart I/O poort
0x220 en IRQ 5.De gebruikte syntaxis voor
/boot/device.hints staat beschreven in
de hulppagina &man.sound.4; en de hulppagina voor het
gevraagde stuurprogramma.De bovenstaande instellingen zijn de
standaardinstellingen. In sommige gevallen moeten IRQ of
andere instellingen gewijzigd worden om een apparaat juist te
laten werken. In &man.snd.sbc.4; staat meer informatie over
deze kaart.Geluidskaart testenNa het herstarten met de aangepaste kernel of na het laden
van de benodigde module, hoort de geluidskaart ongeveer als
volgt te verschijnen in de systeemberichtbuffer
(&man.dmesg.8;):pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>De status van de geluidskaart kan gecontroleerd worden via
het bestand /dev/sndstat:&prompt.root; cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
kld snd_ich (1p/2r/0v channels duplex default)De uitvoer kan per systeem wat verschillen. Als er geen
apparaten pcm genoemd worden, dienen
eerdere stappen herzien te worden. Bekijk nogmaals de
instellingen van de kernel en bevestig dat het juiste
apparaatstuurprogramma was gekozen. Veel voorkomende problemen
staan beschreven in .Als het goed is werkt de geluidskaart nu. Als pinnen voor
audio-out van de CD-ROM- of DVD-ROM-drive juist zijn aangesloten
op de geluidskaart, dan kan er een CD in de drive gestopt worden
en kan deze met &man.cdcontrol.1; afgespeeld worden:&prompt.user; cdcontrol -f /dev/acd0 play 1Applicaties als audio/workman kunnen een
vriendelijker interface bieden. Wellicht is het handig om een
applicatie als audio/mpg123
te installeren om naar MP3 audiobestanden te luisteren.Een snelle manier om de kaart te testen is het als volgt
sturen van gegevens naar /dev/dsp:&prompt.user; cat bestandsnaam > /dev/dspbestandsnaam
kan ieder bestand zijn. Deze commandoregel hoort wat ruis te
maken, waardoor wordt bevestigd dat de geluidskaart echt werkt.De appparaat nodes /dev/dsp* worden
automatisch aangemaakt wanneer dat nodig is. Als deze niet
worden gebruikt, bestaan ze niet en zullen ze niet terugkomen
in de terugkoppeling van &man.ls.1;.Niveaus voor de geluidskaartmixer kunnen aangepast worden
met het commando &man.mixer.8;. Er staan meer details in
&man.mixer.8;.Bekende problemenapparaatknooppuntenI/O poortIRQDSPFoutOplossingsb_dspwr(XX) timed
outDe I/O poort is niet correct ingesteld.bad irq XXHet IRQ is niet correct ingesteld. Zorg dat het
ingestelde IRQ en het IRQ voor het geluid hetzelfde
zijn.xxx: gus pcm not attached, out of
memoryEr is niet genoeg geheugen beschikbaar om het
apparaat te gebruiken.xxx: can't open
/dev/dsp!Controleer fstat | grep dsp
of een ander programma het apparaat geopend heeft.
Bekende probleemgevallen zijn
esound en
KDE's
geluidsondersteuning.Een ander euvel is dat moderne grafische kaarten voor het gebruik
van HDMI en dergelijken vaak zijn uitgerust met hun
eigen geluidsstuurprogramma. Dit geluidsapparaat wordt soms opgesomd
voor het eigenlijke geluidskaart en daardoor wordt deze niet gebruikt
als het standaard afspeelapparaat. Om te zien of dit het geval is,
kan dmesg worden gedraaid en gezocht worden
naar pcm. De uitvoer ziet er ongeveer als volgt
uit:...
hdac0: HDA Driver Revision: 20100226_0142
hdac1: HDA Driver Revision: 20100226_0142
hdac0: HDA Codec #0: NVidia (Unknown)
hdac0: HDA Codec #1: NVidia (Unknown)
hdac0: HDA Codec #2: NVidia (Unknown)
hdac0: HDA Codec #3: NVidia (Unknown)
pcm0: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 0 nid 1 on hdac0
pcm1: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 1 nid 1 on hdac0
pcm2: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 2 nid 1 on hdac0
pcm3: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 3 nid 1 on hdac0
hdac1: HDA Codec #2: Realtek ALC889
pcm4: <HDA Realtek ALC889 PCM #0 Analog> at cad 2 nid 1 on hdac1
pcm5: <HDA Realtek ALC889 PCM #1 Analog> at cad 2 nid 1 on hdac1
pcm6: <HDA Realtek ALC889 PCM #2 Digital> at cad 2 nid 1 on hdac1
pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1
...Hier is de grafische kaart (NVidia) opgesomd
voor de geluidskaart (Realtek ALC889). Om de
geluidskaart als standaard afspeelapparaat te gebruiken, dient
hw.snd.default_unit veranderd te worden in de
eenheid dat voor afspelen gebruikt moet worden:&prompt.root; sysctl hw.snd.default_unit=nHier is n het nummer van het geluidsapparaat
wat gebruikt dient te worden, in dit voorbeeld 4.
U kunt deze verandering permanent maken door de volgende regel aan
/etc/sysctl.conf toe te voegen:hw.snd.default_unit=4MunishChopraGeschreven door Meerdere geluidsbronnen gebruikenHet is vaak wenselijk om meerdere geluidsbronnen
tegelijkertijd af te kunnen spelen, zoals wanneer
esound of
artsd het delen van een
geluidsapparaat met een andere applicatie niet
ondersteunen.Met &os; kan dit met Virtuele
Geluidskanalen, die aangezet kunnen worden met de
faciliteit &man.sysctl.8;. Met virtuele kanalen kunnen het
afspelen van een geluidskaart gemultiplext worden door het
geluid in de kernel te mixen.Het aantal virtuele kanalen kan met drie sysctl knoppen
als root als volgt ingesteld
worden:&prompt.root; sysctl dev.pcm.0.play.vchans=4
&prompt.root; sysctl dev.pcm.0.rec.vchans=4
&prompt.root; sysctl hw.snd.maxautovchans=4In het bovenstaande voorbeeld worden vier virtuele kanalen
toegewezen, wat in het dagelijks gebruik voldoende is. Zowel
dev.pcm.0.play.vchans=4 als
dev.pcm.0.rec.vchans=4 zijn het aantal
virtuele kanalen dat pcm0 heeft voor
afspelen en opnemen, en zijn instelbaar als een apparaat is aangesloten.
In hw.snd.maxautovchans staat het aantal
virtuele kanalen dat aan een nieuw audio-apparaat wordt gegeven
als het wordt aangesloten met &man.kldload.8;. Omdat de module
pcm onafhankelijk van de hardware
stuurprogramma's geladen kan worden, kan in
hw.snd.maxautovchans opgeslagen worden
hoeveel virtuele kanalen apparaten die later worden aangesloten
krijgen. Voor meer informatie wordt naar &man.pcm.4; verwezen.Het aantal virtuele kanalen voor een apparaat kan niet
gewijzigd worden als het in gebruik is. Sluit eerst alle
programma's die het apparaat gebruiken, zoals muziekspelers
of geluidsdaemons.Het juiste pcm apparaat zal
automatisch en transparant gealloceerd worden voor
programma's die /dev/dsp0 aanroepen.JosefEl-RayesGeschreven door Standaardwaarden voor mixerkanalen instellenDe standaardwaarden voor de mixerkanalen zijn ingesteld in
de broncode van het stuurprogramma &man.pcm.4;. Er zijn vele
applicaties en daemons waarmee waarden voor de mixer ingesteld
en onthouden kunnen worden en iedere keer bij het starten
weer kunnen worden ingesteld, maar dit is geen nette
oplossing. Het is mogelijk om de standaardwaarden in te
stellen op het niveau van het stuurprogramma — dit wordt
bereikt door de gewenste waarden in te stellen in
/boot/device.hints, bijvoorbeeld:hint.pcm.0.vol="50"Met de bovenstaande instelling wordt het volume van een
kanaal standaard op 50 ingesteld bij het laden van de module
&man.pcm.4;.ChernLeeGeschreven door MP3 audioMet MP3 (MPEG Layer 3 Audio) kan geluid bijna in CD-kwaliteit
weergegeven worden en dus is er een goede reden om dit vooral
niet na te laten op een &os; werkstation.MP3 spelersVerreweg de meest populaire X11 MP3 speler is
XMMS (X Multimedia Systeem).
In XMMS kunnen
Winamp skins gebruikt worden, omdat
de GUI vrijwel gelijk is aan die van Nullsoft's
Winamp.
XMMS heeft ook een eigen plug-in
ondersteuning.XMMS kan geïnstalleerd
worden via de multimedia/xmms port of
pakket.De interface van XMMS is
intuïtief met een afspeellijst, grafische equalizer en
meer. Gebruikers die bekend zijn met
Winamp vinden
XMMS vast eenvoudig te
gebruiken.De port audio/mpg123 is
een alternatieve MP3-speler die gebruik maakt van de
commandoregel.mpg123 werkt door het
geluidsapparaat en het MP3-bestand aan te geven op de
commandoregel. Aangenomen dat uw audio-apparaat
/dev/dsp1.0 is en u het MP3-bestand
Foobar-GreatestHits.mp3 wilt afspelen,
zou u het volgende opgeven:&prompt.root; mpg123 -a /dev/dsp1.0Foobar-GreatestHits.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
Playing MPEG stream from Foobar-GreatestHits.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereoCD audio tracks rippenVoordat een CD of een CD track naar MP3 ge-encodeerd kan
worden moeten de audiogegevens naar de harde schijf geript
worden. Dit gaat door de ruwe CDDA (CD Digital Audio) gegevens
naar WAV-bestanden te kopiëren.Het hulpprogramma cdda2wav, dat
onderdeel is van de suite sysutils/cdrtools, kan gebruikt
worden om audio-informatie en de daarbij behorende informatie
van CD's te rippen.Als de audio CD in de drive zit, kan het volgende commando
als root uitgevoerd worden om een hele CD
naar individuele (per track) WAV-bestanden te rippen:&prompt.root; cdda2wav -D 0,1,0 -Bcdda2wav ondersteunt ATAPI (IDE)
CD-ROM-drives. Om van een IDE drive te rippen, dient de
apparaatnaam aangegeven te worden in plaats van de SCSI
eenheidsnummers. Om bijvoorbeeld track 7 van een IDE drive te
rippen:&prompt.root; cdda2wav -D /dev/acd0 -t 7De optie
geeft het
SCSI apparaat 0,1,0 aan, dat
overeenkomt met de uitvoer van cdrecord
-scanbus.Om individuele tracks te rippen kan gebruik gemaakt worden
van de optie :&prompt.root; cdda2wav -D 0,1,0 -t 7In het bovenstaande voorbeeld wordt track 7 van de audio
CD geript. Om een reeks tracks te rippen, bijvoorbeeld van
1 tot 7, kan een reeks opgegeven worden:&prompt.root; cdda2wav -D 0,1,0 -t 1+7Ook het hulpprogramma &man.dd.1; kan gebruikt worden om
audio tracks van ATAPI drives af te halen. Deze mogelijkheid
wordt beschreven in .MP3's encoderenTegenwoordig is de MP3 encoder
lame.
Lame staat in
audio/lame in de
portsstructuur.Met de geripte WAV-bestanden converteert het volgende
commando
audio01.wav naar
audio01.mp3:&prompt.root; lame -h -b 192 \
--tt "Foo Titel" \
--ta "FooBar Artiest" \
--tl "FooBar Album" \
--ty "2005" \
--tc "Geript en encoded door Foo" \
--tg "Genre" \
audio01.wav audio01.mp3192 kbits lijkt de standaard bitrate voor MP3 te zijn.
Het is ook mogelijk 128 of 160 of andere bitrates te gebruiken.
Hoe hoger de bitrate, hoe meer schijfruimte de uiteindelijke
MP3-bestanden gebruiken, maar ook de kwaliteit wordt dan hoger.
Met de optie wordt de modus hogere
kwaliteit, maar iets langzamer ingeschakeld. Met de
opties vanaf worden de ID3 tags ingegeven,
die meestal informatie over een nummer bevatten en onderdeel
uitmaken van het MP3-bestand. In de hulppagina voor
lame staan nog meer opties die
gebruikt kunnen worden bij het encoderen beschreven.MP3's decoderenOm een CD te kunnen branden van MP3's, moeten ze omgezet
worden naar een niet gecomprimeerd WAV-formaat. Zowel
XMMS als
mpg123 ondersteunen de uitvoer van
MP3 naar een niet gecomprimeerd bestandsformaat.Naar schijf schrijven met
XMMS:Start XMMS;Klik rechts op het venster om het
XMMS menu te zien;Selecteer Preference onder
Options;Wijzig de Output Plugin naar Disk Writer
Plugin;Klik Configure;Voer een map in (of kies browse) waar de
ongecomprimeerde bestanden naar toe geschreven moeten
worden;Laad de MP3-bestanden zoals gewoonlijk in
XMMS, met het volume op 100% en
de EQ instellingen uitgeschakeld;Klik Play.
XMMS lijkt nu de MP3 af te
spelen, maar er is geen muziek te horen. Nu wordt
feitelijk de MP3 afgespeeld naar een bestand;Zorg ervoor dat de standaard Output Plugin wordt
teruggezet naar hoe de instellingen waren om weer naar
MP3's te kunnen luisteren.Schrijven naar stdout vanuit
mpg123:Voer mpg123 -s audio01.mp3
> audio01.pcm uit.XMMS schrijft een bestand in het
WAV-formaat, terwijl mpg123 de MP3
converteert naar ruwe PCM audio data. Beide formaten kunnen
gebruikt worden met cdrecord om
audio CD's te maken. Met &man.burncd.8; moeten ruwe
PCM-bestanden gebruikt worden. Als er WAV-bestanden worden
gebruikt, is er een tikgeluid te horen bij het begin van
iedere track. Dit is het geluid van de kop van ieder
WAV-bestand. Met het hulpprogramma
SoX kan de kop van WAV-bestanden
verwijderd worden. Dit programma kan geïnstalleerd worden
met de port of pakket audio/sox&prompt.user; sox -t wav -r 44100 -s -w -c 2 track.wav track.rawIn staat meer informatie over
het gebruiken van een CD-brander in &os;.RossLippertGeschreven door Video afspelenVideo afspelen is een relatief nieuwe en zich snel
ontwikkelende richting voor applicaties. In tegenstelling tot
voor audio werkt alles hier niet zo soepel.Voor er wordt begonnen is het van belang te weten welk model
videokaart zich in een systeem bevindt en welke chip die gebruikt.
Hoewel &xorg; vele videokaarten ondersteunt,
zijn er veel minder geschikt om goed video mee af te spelen. Er kan een
lijst met ondersteunde extensies getoond worden voor X server met de
gebruikte videokaart door het commando &man.xdpyinfo.1; uit te voeren
terwijl X11 draait.Het is verstandig een kort MPEG-bestand beschikbaar te
hebben dat gebruikt kan worden als testbestand voor het
evalueren van de spelers en hun opties. Omdat sommige
DVD-spelers standaard zoeken naar DVD media in
/dev/dvd of deze apparaatnaam standaard in
de broncode hebben staan, is het wellicht verstandig om een
symbolische link te maken naar de juiste apparaten:&prompt.root; ln -sf /dev/acd0 /dev/dvd
&prompt.root; ln -sf /dev/acd0 /dev/rdvdVanwege de werking van &man.devfs.5;, blijven handmatig
aangemaakte links niet bestaan als een systeem wordt herstart.
Om automatisch symbolische links aan te laten maken als een
systeem start, kunnen de volgende regels toegevoegd worden aan
/etc/devfs.conf:link acd0 dvd
link acd0 rdvdDaarnaast zijn voor het decoderen van DVD, waarvoor
bijzondere DVD-ROM functies aangeroepen worden, schrijfrechten
op de DVD-apparaten nodig.Om de gedeeld-geheugeninterface van X11 te verbeteren,
wordt aangeraden dat een aantal variabelen van &man.sysctl.8;
worden verhoogd:kern.ipc.shmmax=67108864
kern.ipc.shmall=32768Videomogelijkheden vaststellenXVideoSDLDGAEr zijn een aantal methoden om video weer te geven onder
X11. Welke echt werkt, is voornamelijk afhankelijk van de
gebruikte hardware. Iedere hieronder beschreven methode geeft
andere resultaten op andere hardware. De laatste tijd krijgt
het renderen van video in X11 veel aandacht en bij iedere
versie van &xorg;
kan er een aanzienlijke verbetering zijn.Een lijst van veel gebruikte video-interfaces:X11: normale X11 uitvoer met gebruikmaking van gedeeld
geheugen;XVideo: een uitbreiding op de X11 interface die video
in een door X11 getekend object ondersteunt;SDL: de Simple Directmedia Layer;DGA: de Direct Graphics Access;SVGAlib: low level console grafische laag.XVideo&xorg; kent een
uitbreiding XVideo, ook bekend als
Xvideo, Xv of xv, waarmee video direct weergegeven kan worden
in getekende objecten door een speciale versneller. Deze
uitbreiding geeft een goede afspeelkwaliteit, zelfs op
machines met mindere specificaties.Of de uitbreiding actief is, kan gecontroleerd worden met
het commando xvinfo:&prompt.user; xvinfoXVideo wordt ondersteund als de uitvoer er ongeveer als
volgt uitziet:X-Video Extension version 2.2
screen #0
Adaptor #0: "Savage Streams Engine"
number of ports: 1
port base: 43
operations supported: PutImage
supported visuals:
depth 16, visualID 0x22
depth 16, visualID 0x23
number of attributes: 5
"XV_COLORKEY" (range 0 to 16777215)
client settable attribute
client gettable attribute (current value is 2110)
"XV_BRIGHTNESS" (range -128 to 127)
client settable attribute
client gettable attribute (current value is 0)
"XV_CONTRAST" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_SATURATION" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_HUE" (range -180 to 180)
client settable attribute
client gettable attribute (current value is 0)
maximum XvImage size: 1024 x 1024
Number of image formats: 7
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x36315652 (RV16)
guid: 52563135-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x3e0, 0x7c00
id: 0x35315652 (RV15)
guid: 52563136-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x7e0, 0xf800
id: 0x31313259 (Y211)
guid: 59323131-0000-0010-8000-00aa00389b71
bits per pixel: 6
number of planes: 3
type: YUV (packed)
id: 0x0
guid: 00000000-0000-0000-0000-000000000000
bits per pixel: 0
number of planes: 0
type: RGB (packed)
depth: 1
red, green, blue masks: 0x0, 0x0, 0x0Sommige van de weergegeven formaten (YUV2, YUV12,
enzovoort) zijn niet in iedere implementaties van XVideo
beschikbaar en hun afwezigheid kan sommige spelers
hinderen.Als het resultaat er als hieronder uitziet, is er geen
ondersteuning voor XVideo aanwezig op de videokaart in een
systeem:X-Video Extension version 2.2
screen #0
no adaptors presentAls XVideo voor een kaart niet wordt ondersteund, dan
betekent dat alleen dat het lastiger wordt om op een
beeldscherm aan de vereisten voor het renderen van video te
voldoen. Afhankelijk van de videokaart en de processor kan
het toch nog mogelijk zijn om acceptabele prestaties neer te
zetten. In staan
verwijzingen naar leesvoer over mogelijkheden voor het
verbeteren van prestaties.Eenvoudige Directmedia LaagDe Eenvoudige Directmedia Laag (Simple Directmedia
Layer), SDL, was bedoeld als een porting-laag tussen
µsoft.windows;, BeOS en &unix;, waardoor cross-platform
toepassingen konden worden ontwikkeld die efficiënt
gebruik maken van geluid en beelden. De SDL laag biedt een
abstractie op laag niveau naar de hardware die soms
efficiënter kan zijn dan de X11 interface.De SDL staat in devel/sdl12.Directe Grafische ToegangDirecte Grafische Toegang (Direct Graphics Access) is een
X11 uitbreiding die een programma in staat stelt voorbij te
gaan aan de X server en de framebuffer direct kan wijzigen.
Omdat hij afhankelijk is van geheugenmapping op een laag
niveau om dit delen uit te voeren, moeten programma's die er
gebruik van maken als root
draaien.De DGA uitbreiding kan getest en gebenchmarkt worden met
&man.dga.1;. Als dga draait, verandert
het de kleuren op een scherm als er een toets wordt
ingedrukt. Om te stoppen kan de toets q
gebruikt worden.Ports en pakketten met videovideopoortenvideopakkettenIn dit onderdeel wordt de software die vanuit de &os;
Portscollectie beschikbaar is voor het afspelen van video
beschreven. Het afspelen van video is een tak van
softwareontwikkeling die erg in beweging is en de mogelijkheden
van de verschillende applicaties verschillen zeer
waarschijnlijk van wat hier is beschreven.Als eerste is het belangrijk om te weten dat veel
applicaties die met video te maken hebben en op &os; draaien
ontwikkeld zijn als &linux; applicaties. Veel van die
applicaties zijn op het moment van schrijven van
beta-kwaliteit. Problemen die te verwachten zijn bij het
gebruik van de beschreven videopakketten op &os; zijn:Een applicatie kan geen bestanden afspelen die zijn
gemaakt met een andere applicatie;Een applicatie kan geen bestanden afspelen die met de
applicatie zelf zijn gemaakt;Dezelfde applicatie, op twee verschillende machines
gebouwd, speelt hetzelfde bestand op twee machines anders
af;Een ogenschijnlijk triviale filter, zoals het herschalen
van beeldgrootte, kan resulteren in vreselijk vervelende
artefacten door fouten in de routine voor het
herschalen;Een applicatie dumpt zijn core regelmatig;Documentatie wordt niet geïnstalleerd bij de port
en staat op het web of in de map work van de port.Veel van deze applicaties kunnen ook
Linux-ismes vertonen. Zo kunnen er bijvoorbeeld
problemen ontstaan door de wijze waarop standaard bibliotheken
zijn geïmplementeerd in de &linux; distributies of een
aantal van de mogelijkheden van de &linux;-kernel, waarvan
door de makers van de applicatie wordt aangenomen dat ze
aanwezig zijn. Dit soort problemen zijn niet altijd zichtbaar
en er wordt ook omheen gewerkt door de beheerders van ports,
wat tot de volgende mogelijke problemen kan leiden:Het gebruik van /proc/cpuinfo om
processorkarakteristieken uit te lezen;Het verkeerd gebruiken van threads, waardoor een
programma hangt als het klaar is, in plaats van dat het
echt eindigt;Software die nog niet in de &os; Portscollectie zit en
vaak gebruikt wordt samen met een applicatie die daar wel
onderdeel van uitmaakt.Tot nu toe is gebleken dat de ontwikkelaars van applicaties
wel coöperatief waren met de beheerders van ports om zo
het aantal work-arounds dat nodig was voor het overzetten tot
een minimum te beperken.MPlayerMPlayer is een zich snel
ontwikkelende videospeler. De doelen van het
MPlayer-team zijn snelheid en
flexibiliteit onder &linux; en andere Unices. Het project is
gestart toen de oprichter van het team genoeg had van de
slechte afspeelprestaties van de destijds beschikbare
spelers. Er zijn mensen die zeggen dat het grafische ontwerp
is opgeofferd voor het stroomlijnen van het ontwerp, maar het
blijkt dat, als een gebruiker gewend is aan de
commandoregelopties en de toetsencommando's, de applicatie
erg goed werkt.MPlayer bouwenMPlayermakenMPlayer staat in multimedia/mplayer.
MPlayer voert een aantal
hardwarecontroles uit tijdens het bouwen, wat resulteert in
een binair bestand dat niet van het ene naar het andere
systeem verplaatst kan worden. Daarom is het van belang
dat het uit de ports wordt gebouwd en niet als binair
pakket wordt geïnstalleerd. Daarnaast staan er ook
nog opties die vanaf de make
commandoregel meegegeven kunnen worden beschreven in de
Makefile en aan het begin van de
build:&prompt.root; cd /usr/ports/multimedia/mplayer
&prompt.root; make
N - O - T - E
Take a careful look into the Makefile in order
to learn how to tune mplayer towards you personal preferences!
For example,
make WITH_GTK1
builds MPlayer with GTK1-GUI support.
If you want to use the GUI, you can either install
/usr/ports/multimedia/mplayer-skins
or download official skin collections from
http://www.mplayerhq.hu/homepage/dload.htmlDe standaard portopties zijn voor de meeste gebruikers
voldoende. Maar als bijvoorbeeld de XviD codec nodig is,
dan moet de optie WITH_XVID op de
commandoregel meegegeven worden. Het standaard
DVD-apparaat kan ook gedefinieerd worden met de optie
WITH_DVD_DEVICE, waarbij standaard
/dev/acd0 wordt gebruikt.Op het moment van schrijven wordt de
MPlayer port gebouwd met de HTML
documentatie en twee uitvoerbare bestanden,
mplayer en mencoder,
wat een hulpmiddel is voor het opnieuw encoderen van
video.De HTML documentatie voor
MPlayer is erg informatief. Als
de lezer vindt dat er informatie over videohardware en
interfaces in dit hoofdstuk mist, dan is de documentatie
van MPlayer een zeer grondige
aanvulling. Het is de moeite waard de tijd te nemen om de
documentatie van MPlayer te
lezen, als meer informatie over de ondersteuning van video
in &unix; welkom is.MPlayer gebruikenMPlayergebruikenIedere gebruiker van MPlayer
dient een submap .mplayer in zijn
thuismap te hebben. Die kan als volgt gemaakt
worden:&prompt.user; cd /usr/ports/multimedia/mplayer
&prompt.user; make install-userDe commando-opties voor mplayer
staan in de hulppagina. Nog meer details staan in de HTML
documentatie. In dit onderdeel worden slechts een aantal
gebruiksmogelijkheden beschreven.Om een bestand als
testbestand.avi
af te spelen met een van de beschikbare video-interfaces,
kan de optie gebruikt worden:&prompt.user; mplayer -vo xv testbestand.avi&prompt.user; mplayer -vo sdl testbestand.avi&prompt.user; mplayer -vo x11 testbestand.avi&prompt.root; mplayer -vo dga testbestand.avi&prompt.root; mplayer -vo 'sdl:dga' testbestand.aviHet is de moeite waard alle bovenstaande opties uit te
proberen omdat hun relatieve prestatie afhangt van vele
factoren die aanzienlijk verschillen tussen
hardware.Om een DVD af te spelen dient
testbestand.avi
vervangen te worden door
waar
N het titelnummer is dat
afgespeeld moeten worden en
APPARAAT het
apparaatknooppunt is voor de DVD-ROM. Om bijvoorbeeld titel
3 van /dev/dvd af te spelen:&prompt.root; mplayer -vo xv dvd://3 -dvd-device /dev/dvdHet standaard DVD-apparaat kan ingesteld worden bij
het bouwen van de MPlayer port
met de optie WITH_DVD_DEVICE.
Standaard is dit apparaat /dev/acd0.
Meer details staan in de Makefile
van de port.Om te stoppen, pauzeren, verder te spoelen, enzovoort,
kunnen de toetsendefinities gebruikt worden, die in te zien
zijn door mplayer -h uit te voeren of
de hulppagina te lezen.Overige belangrijke opties voor het afspelen zijn:
, waarmee het volledige scherm
wordt gebruikt, en , die
prestatieverhogend werkt.Om ervoor te zorgen dat de commandoregels niet te lang
worden, kan het bestand
.mplayer/config met
voorkeursinstellingen gemaakt worden:vo=xv
fs=yes
zoom=yesTenslotte kan mplayer gebruikt
worden om een DVD naar een bestand van het type
.vob te rippen. Om de tweede titel
van een DVD de dumpen kan het volgende commando gebruikt
worden:&prompt.root; mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvdHet uitvoerbestand out.vob, is
van het type MPEG en kan bewerkt worden met andere in dit
onderdeel besproken programma's.mencodermencoderVoordat mencoder wordt gebruikt, is
het verstandig de opties uit de HTML-documentatie te
bekijken. Er is een hulppagina, maar die is niet echt
bruikbaar zonder de HTML-documentatie. Er zijn ontelbare
mogelijkheden om de kwaliteit te verhogen, de bitrate te
verlagen en formaten te wijzigen en een aantal van die
truuks maken het verschil tussen goede en slechte
prestaties. Hieronder staan een aantal voorbeelden
beschreven. Eerst een eenvoudige kopie:&prompt.user; mencoder invoer.avi -oac copy -ovc copy -o uitvoer.aviVerkeerde combinaties van commandoregelopties kunnen
resulteren in uitvoerbestanden die zelfs niet af te spelen
zijn door mplayer. Daarom wordt
aangeraden om het bij de optie
in
mplayer te houden als het alleen maar
nodig is een bestand te rippen.Om invoer.avi
te converteren naar de MPEG4-codec met MPEG3-audio
encodering (audio/lame
is verplicht):&prompt.user; mencoder invoer.avi -oac mp3lame -lameopts br=192 \
-ovc lavc -lavcopts vcodec=mpeg4:vhq -o utvoer.aviHiermee wordt uitvoer gemaakt die af te spelen is met
mplayer en
xine.invoer.avi
kan worden vervangen door en als root
gedraaid worden om een DVD-titel direct te hercoderen.
Omdat het waarschijnlijk is dat de eerste experimenten niet
direct tevredenstellend zijn, wordt aangeraden een titel
eerst naar een bestand te dumpen en dat als werkbestand te
gebruiken.xine videospelerDe xine videospeler is een
project met een brede scope, dat niet alleen tracht een
allesomvattende video-oplossing te bieden, maar ook probeert
een herbruikbare basisbibliotheek en een modulair uitvoerbaar
bestand te maken dat uitgebreid kan worden met plug-ins. Het
kan als pakket en port geïnstalleerd worden uit
multimedia/xine.De xine speler heeft nog wat
ruwe randjes, maar is zeker goed van start gegaan. In de
praktijk heeft xine een snelle CPU
met een snelle videokaart of ondersteuning voor de XVideo
extensie nodig. De GUI is bruikbaar, maar wat
onhandig.Op het moment van schrijven wordt er geen invoermodule
bij xine geleverd waarmee CSS
gecodeerde DVD's afgespeeld kunnen worden. Er zijn er die
door andere partijen zijn gebouwd die dat type modules wel
hebben, maar die zijn niet beschikbaar in de &os;
Portscollectie.Vergeleken met MPlayer, doet
xine meer voor de gebruiker, maar
tegelijkertijd neemt het wat van de
fijnafstellingsmogelijkheden weg. De videospeler
xine werkt het beste op
XVideo-interfaces.Standaard start de xine speler
op in een grafische gebruikersinterface. Via het menu kan
een specifiek bestand geopend worden:&prompt.user; xineHet is ook mogelijk om zonder de GUI direct een bestand
af te laten spelen:&prompt.user; xine -g -p mijnfilm.avitranscode
hulpprogramma'sDe software transcode is geen
speler, maar een verzameling hulpprogramma's voor het
hercoderen van video- en audiobestanden. Met
transcode wordt het mogelijk om
videobestanden samen te voegen, kapotte bestanden te
repareren en commandoregelprogramma's te gebruiken met
stdin/stdout stream interfaces.Tijdens het bouwen van de port multimedia/transcode kan een
groot aantal opties opgegeven worden en de volgende
commandoregel wordt geadviseerd om
transcode te bouwen:&prompt.root; make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \
WITH_MJPEG=yes -DWITH_XVID=yesDe geadviseerde instellingen zijn toereikend voor de
meeste gebruikers.Om de mogelijkheden van transcode te
illustreren volgt nu een voorbeeld van hoe een DivX-bestand
om te zetten in een PAL MPEG-1-bestand (PAL VCD):&prompt.user; transcode -i invoer.avi -V --export_prof vcd-pal -o uitvoer_vcd
&prompt.user; mplex -f 1 -o uitvoer_vcd.mpg uitvoer_vcd.m1v uitvoer_vcd.mpaHet resulterende MPEG-bestand,
uitvoer_vcd.mpg,
is klaar om afgespeeld te worden met
MPlayer. Het kan ook op een CD-R
gebrand worden om er een Video-CD mee te maken. In dat geval
is het nodig om de programma's multimedia/vcdimager en sysutils/cdrdao te
installeren.Er is een hulppagina voor transcode,
maar kijk ook op transcode
wiki voor meer informatie en voorbeelden.Als de twee vergeleken worden, draait
transcode aanzienlijk langzamer dan
mencoder, maar is de kans wel groter dat
er een bestand uit komt dat op de meeste spelers afgespeeld
kan worden. MPEG-bestanden die met
transcode zijn gemaakt, zijn bijvoorbeeld
al afgespeeld op &windows.media;
Player en Apple's
&quicktime;.Verder lezenDe beschikbare videosoftware pakketten voor &os; zijn fors
in ontwikkeling. Het is goed mogelijk dat in de nabije
toekomst de meeste problemen die hier aan de kaak zijn gesteld,
zijn opgelost. Intussen kunnen zij die het hoogst haalbare uit
de A/V mogelijkheden voor &os; willen halen, dat het beste
doen door wat beschikbaar is bij elkaar te scharrelen uit de
beschikbare FAQ's and tutorials en meerdere programma's
gebruiken. Het doel van deze paragraaf is de lezer wat
richting te geven op dat vlak.De MPlayer
documentatie is technisch erg informatief. Deze
documenten kunnen het beste bekeken worden door iemand die veel
kennis wil opdoen over video in &unix;. Op de
MPlayer mailinglijst wordt het niet
op prijs gesteld als iemand de documentatie niet heeft gelezen,
dus het is verstandig RTFM in gedachten te houden alvorens
bug rapportages naar ze te mailen.De xine
HOWTO bevat een hoofdstuk over het verbeteren van
prestaties, dat op alle spelers van toepassing is.Tenslotte zijn er nog een aantal veelbelovende applicaties
die het proberen waard zijn:Avifile
bestaat ook als port: multimedia/avifile;Ogle
is er ook als port: multimedia/ogle;Xtheater;multimedia/dvdauthor, een open
source pakket voor authoring van DVD content.JosefEl-RayesOorspronkelijk geschreven door MarcFonvieilleVerbeterd en aangepast door TV-kaarten installerenTV-kaartenInleidingMet TV-kaarten is het mogelijk om naar (kabel)uitzendingen
te kijken op een computer. Op de meeste kaarten kan composiet
video aangeleverd worden via een RCA of S-video input en
sommige kaarten hebben ook een FM tuner.&os; biedt ondersteuning voor PCI-gebaseerde TV-kaarten met
een Brooktree Bt848/849/878/879 of een Conexant CN-878/Fusion
878a Video Capture Chip met het stuurprogramma &man.bktr.4;.
Het is van belang dat er op de kaart ook een ondersteunde
tuner zit. Hiervoor kan &man.bktr.4; geraadpleegd worden,
waarin een lijst met ondersteunde tuners staat.Stuurprogramma toevoegenVoordat de kaart gebruikt kan worden, dient het
stuurprogramma &man.bktr.4; geladen te worden. Dit kan door
de volgende regel aan /boot/loader.conf
toe te voegen:bktr_load="YES"Daarnaast is het ook mogelijk om statisch ondersteuning
voor de TV-kaart in de kernel te compileren. Dan dient de
volgende regel toegevoegd te worden aan de
kernelinstellingen:device bktr
device iicbus
device iicbb
device smbusDe extra stuurprogramma's zijn nodig omdat de
kaartcomponenten verbonden zijn via een I2C bus. Met deze
instellingen kan een nieuwe kernel gebouwd en
geïnstalleerd worden.Als een systeem eenmaal ondersteuning biedt, hoort de
TV-kaart ongeveer als volgt bij een herstart getoond te
worden:bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
iicbb0: <I2C bit-banging driver> on bti2c0
iicbus0: <Philips I2C bus> on iicbb0 master-only
iicbus1: <Philips I2C bus> on iicbb0 master-only
smbus0: <System Management Bus> on bti2c0
bktr0: Pinnacle/Miro TV, Philips SECAM tuner.Deze berichten kunnen afwijken, afhankelijk van de
gebruikte hardware. Het is van belang te controleren of de
tuner juist herkend wordt; er kunnen nog een aantal
instellingen gemaakt worden voor parameters met &man.sysctl.8;
MIB's en in het kernelinstellingenbestand. Om bijvoorbeeld het
gebruik van een Philips SECAM tuner te forceren, kan de
volgende regel aan het bestand met kernelinstellingen worden
toegevoegd:options OVERRIDE_TUNER=6Dit kan ook via een instelling van &man.sysctl.8;:&prompt.root; sysctl hw.bt848.tuner=6In de hulppagina voor &man.bktr.4; en
/usr/src/sys/conf/NOTES staan meer details
over de beschikbare opties.Handige programma'sOm een TV-kaart te gebruiken, dient een van de volgende
applicaties geïnstalleerd te worden:multimedia/fxtv
biedt TV-in-een-window en beeld/audio/videocapture
mogelijkheden;multimedia/xawtv
is ook een TV applicatie met dezelfde mogelijkheden als
fxtv;misc/alevt
decodeert Videotext/Teletext en kan deze weergeven;audio/xmradio, een
applicatie om de FM-tuner die bij sommige TV-kaarten zit te
gebruiken;audio/wmtune, een
handige bureaubladapplicatie voor radiotuners.Er zijn nog meer applicaties beschikbaar in de
Portscollectie.Problemen oplossenBij problemen met een TV-kaart dient eerst gecontroleerd te
worden of de videocapture chip en de tuner echt ondersteund
worden door het stuurprogramma &man.bktr.4; en of de juiste
instellingen worden gebruikt. Voor meer ondersteuning en
vragen over een specifieke TV-kaart is het aan te raden de
archieven van de &a.multimedia.name; mailinglijst te
raadplegen of er contact mee op te nemen.MythTVMythTV is een open-source PVR software project.Het staat in de &linux;-wereld bekend als een complexe toepassing met
veel afhankelijkheden, en daarom moeilijk om te installeren. De
Portscollectie van &os; versimpelt veel van het proces, maar sommige
componenten moeten handmatig worden geïnstalleerd. Deze sectie is
bedoeld om te helpen en te begeleiden in het installeren van
MythTV.HardwareMythTV is ontworpen om V4L
te gebruiken om invoerapparatuur voor video zoals encoders en tuners te
benaderen. Momenteel werkt MythTV het beste met USB DVB-S/C/T kaarten die
ondersteund worden door multimedia/webcamd omdat
webcamd een gebruikerstoepassing levert voor
V4L. Elke DVB-kaart die ondersteund
wordt door webcamd zou met MythTV moeten
werken, een lijst van kaarten waarvan hun werking bekend is kan hier gevonden
worden. Er zijn ook stuurprogramma's bekend voor Hauppauge-kaarten in
de pakketten multimedia/pvr250 en
multimedia/pvrxxx, maar deze leveren
een niet-standaard interface met hun stuurprogramma dat niet werkt met
versies van MythTV nieuwer dan 0.23.HTPC bevat een
lijst van alle beschikbare stuurprogramma's voor DVB.AfhankelijkhedenDoordat MythTV flexibel en modulair is, staat het de gebruiker toe
om de voorkant en de achterkant op verschillende machines te
hebben.Voor de voorkant is multimedia/mythtv-frontend nodig, alsook een
X-server welke in x11/xorg
beschikbaar is. Idealiter beschikt de voorkant-computer ook over een
videokaart die XvMC ondersteunt en
optioneel over een afstandsbediening die compatibel is met LIRC.Voor de achterkant is multimedia/mythtv nodig, alsook een &mysql;
database en optioneel een tuner en opslag voor opnames. Het &mysql;
pakket zou automatisch als een afhankelijkheid geïnstalleerd moeten
worden tijdens de installatie van multimedia/mythtv.MythTV installerenGebruik de volgende stappen om MythTV te installeren. Installeer
als eerste MythTV van de &os; Portscollectie:&prompt.root; cd /usr/ports/multimedia/mythtv
&prompt.root; make installInstalleer de database voor MythTV:&prompt.root; mysql -uroot -p < /usr/local/share/mythtv/database/mc.sqlConfigureer de achterkant:&prompt.root; mythtv-setupStart de achterkant:&prompt.root; echo 'mythbackend_enable="YES"' >> /etc/rc.conf
&prompt.root; service mythbackend startMarcFonvieilleGeschreven door ScannersscannersInleidingIn &os; is toegang tot scanners mogelijk met
SANE (Scanner Access Now
Easy) API uit de &os; Portscollectie.
SANE gebruikt ook een aantal &os;
apparaatstuurprogramma's om toegang te krijgen tot de hardware
van de scanner.&os; ondersteunt SCSI en USB scanners. Het is van belang te
controleren of een scanner door SANE
wordt ondersteund voordat er instellingen worden gemaakt.
SANE heeft een lijst met ondersteunde
apparaten waarin gekeken kan worden of een scanner
- wordt ondersteund en wat de status voor ondersteuning is. Op systemen
- van vóór &os; 8.X staat in de handleidingpagina van
- &man.uscanner.4; een lijst met ondersteunde USB-scanners.
+ wordt ondersteund en wat de status voor ondersteuning is.
Kernel instellenZoals hierboven al is aangegeven, worden zowel SCSI als
USB-scanners ondersteund. Afhankelijk van de gebruikte
scannerinterface zijn verschillende apparaatstuurprogramma's
nodig.USB-interfaceIn de GENERIC kernel zitten
standaard de apparaatstuurprogramma's die nodig zijn voor
ondersteuning van USB-scanners. In het geval wordt besloten
tot het maken van een aangepaste kernel, dan dienen de
volgende regels in het kernelinstellingenbestand te worden
opgenomen:device usb
device uhci
device ohci
device uscanner
device ehci
- Op systemen van vóór &os; 8.X is de volgende
- regel ook nodig:
-
- device uscanner
-
- Op deze versies van &os; biedt het apparaat &man.uscanner.4;
- ondersteuning voor de USB-scanners. Sinds &os; 8.0 ondersteunt
- de bibliotheek &man.libusb.3; dit direct.
-
Na een herstart met de juiste kernel kan de USB-scanner
aangesloten worden. Een regel die de detectie van uw scanner
aangeeft zou in de berichtenbuffer van het systeem
(&man.dmesg.8;) moeten verschijnen:ugen0.2: <EPSON> at usbus0
- Of op een &os; 7.X systeem:
-
- uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2
-
- Deze berichten geven aan dat de scanner òfwel
- /dev/ugen0.2 òf
- /dev/uscanner0 als apparaatknooppunt
- gebruikt afhankelijk van de versie van &os; die we draaien. Voor dit
- voorbeeld was een &epson.perfection; 1650 USB-scanner
+ Deze berichten geven aan dat de scanner
+ /dev/ugen0.2 als apparaatknooppunt gebruikt.
+ Voor dit voorbeeld was een &epson.perfection; 1650 USB-scanner
gebruikt.SCSI interfaceAls een scanner een SCSI interface heeft, is het
belangrijk te weten welk SCSI controllerbord gebruikt gaat
worden. Afhankelijk van de gebruikte SCSI chipset, dient het
bestand met kernelinstellingen aangepast te worden. De
GENERIC kernel ondersteunt de meest
voorkomende SCSI controllers. In het bestand
NOTES is de juiste instelling te vinden
die toegevoegd moet worden aan het bestand met
kernelinstellingen. Naast het toevoegen van het juiste
SCSI-adapter stuurprogramma, dienen ook de volgende regels
opgenomen te worden in het kernelinstellingenbestand:device scbus
device passAls de kernel juist gecompileerd en geïnstalleerd is,
horen de apparaten tijdens het opstarten zichtbaar te zijn in
de systeemberichtbuffer:pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfersAls een scanner niet aan staat tijdens het opstarten, is
het nog mogelijk handmatig detectie te forceren door de
SCSI-bus te laten scannen met &man.camcontrol.8;:&prompt.root; camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successfulIn het bovenstaande geval zal de scanner ongeveer als
volgt verschijnen in de lijst met SCSI-apparaten:&prompt.root; camcontrol devlist
<IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)Meer details over SCSI-apparaten staan in de hulppagina's
voor &man.scsi.4; en &man.camcontrol.8;.SANE instellenHet SANE systeem is opgesplitst
in twee delen: de backends (graphics/sane-backends) en de
frontends (graphics/sane-frontends). Het deel
met de backends zorgt voor de toegang tot de scanner zelf. In
de lijst met door SANEondersteunde
apparaten staat welk backend welke scanner(s)
ondersteunt. Het is echt nodig het juiste backend vast te
stellen, omdat het anders bijzonder lastig wordt een scanner
aan de praat te krijgen. Het deel met frontends levert een
grafische scaninterface
(xscanimage).De eerste stap is om de port of het pakket graphics/sane-backends te
installeren. Daarna kan met het commando
sane-find-scanner gecontroleerd worden welke
scanner er door het SANE systeem is
gedetecteerd:&prompt.root; sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3In de uitvoer is te lezen welk type interface en welk
apparaatknooppunt worden gebruikt om de scanner met een systeem
te verbinden. Het merk en het model worden wellicht niet
getoond, maar dat is ook niet echt van belang.Sommige USB-scanners verlangen dat er firmware wordt
geladen. Dit wordt uitgelegd in de hulppagina van het
backend. Het is ook van belang &man.sane-find-scanner.1; en
&man.sane.7; te lezen.Hierna kan gecontroleerd worden of de scanner ook te zien
is voor een scanner-frontend. Er zit bij de
SANE backends een standaard
hulpprogramma &man.scanimage.1;. Met dit commando kunnen de
apparaten zichtbaar gemaakt worden en kan vanaf de
commandoregel gescand worden. Met de optie
kunnen de scannerapparaten getoond worden:&prompt.root; scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scannerOf, met bijvoorbeeld de USB-scanner die in wordt gebruikt:&prompt.root; scanimage -L
device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scannerDeze uitvoer komt van een &os; 8.X systeem, het item
'epson2:libusb:/dev/usb:/dev/ugen0.2' geeft de naam
van het backend (epson2) en het apparaatknooppunt
(/dev/ugen0.2) dat door onze scanner wordt
gebruikt.De afwezigheid van uitvoer of een bericht dat aangeeft dat
er geen scanners zijn aangetroffen, betekent dat
&man.scanimage.1; niet in staat is een scanner te
identificeren. Als dit gebeurt, dient het instellingenbestand
voor het backend aangepast te worden en dient daar de juiste
instelling gemaakt te worden. De map /usr/local/etc/sane.d/ bevat
alle bestanden met instellingen voor de backends. Het is
bekend dat dit identificatieprobleem optreedt bij bepaalde
USB-scanners.De USB-scanner die in
wordt gebruikt, wordt in &os; 8.X prima gedetecteerd en werkt
daar, maar in eerdere versies van &os; (waar &man.uscanner.4; wordt
gebruikt) toont het de volgende informatie met
sane-find-scanner:&prompt.root; sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0De bovenstaande uitvoer geeft aan dat de scanner juist is
gedetecteerd, dat het de USB-interface gebruikt en is
aangesloten op het apparaatknooppunt
/dev/uscanner0. Nu kan gecontroleerd
worden of de scanner juist wordt geïdentificeerd:&prompt.root; scanimage -L
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).Omdat in het bovenstaande voorbeeld de scanner niet wordt
geïdentificeerd, dient het bestand
/usr/local/etc/sane.d/epson2.conf
gewijzigd te worden. De gebruikte scanner is een
&epson.perfection; 1650, dus in dit geval dient voor de scanner
het backend epson2 gebruikt te worden. Het
is van belang om het commentaar in de instellingenbestanden van
de backends te lezen. Het aanpassen van regels is eenvoudig:
plaats een commentaarkarakter voor alle regels voor andere
interfaces dan die nodig zijn weg (in dit geval worden alle
regels die beginnen met het woord scsi
uitgeschakeld, omdat er een USB-interface wordt gebruiken), en
dan kan onderaan het bestand een regel met de gebruikte
interface en apparaatknooppunt geplaatst worden:usb /dev/uscanner0Het is aan te raden de opmerkingen te lezen in het bestand
met instellingen voor het backend en ook de hulppagina, omdat
daarin meer details en de correcte syntaxis te vinden zijn. Nu
kan gecontroleerd worden of de scanner wèl juist wordt
geïdentificeerd:&prompt.root; scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scannerDe USB-scanner is geïdentificeerd. Het is niet
belangrijk dat het merk en model niet overeenkomen met de
scanner. Het belangrijkste is het veld
`epson:/dev/uscanner0', dat de
juiste benamingen voor het backend en het apparaatknooppunt
aangeeft.Als scanimage -L in staat is een scanner
goed te zien, dan zijn de instellingen compleet. Er kan nu met
het apparaat gescand worden.Hoewel &man.scanimage.1; in staat is om vanaf de
commandoregel te scannen, is het aan te raden beelden te
scannen vanuit de grafische gebruikersinterface.
SANE heeft een eenvoudige, maar
efficiënte grafische interface:
xscanimage (graphics/sane-frontends).Xsane (graphics/xsane) is een ander
populair grafisch scanfrontend, dat geavanceerde
mogelijkheden biedt, zoals meerdere scanmodi (fotokopie, fax,
enzovoort), kleurcorrectie, batchscannen, enzovoort. Beide
applicaties zijn als plug-in voor
GIMP te gebruiken.Andere gebruikers toegang tot de scanner gevenAlle voorgaande taken zijn uitgevoerd met
root rechten, maar het is wellicht ook
nodig dat andere gebruikers de scanner kunnen gebruiken. Dan
heeft een gebruiker lees- en schrijfrechten nodig op de
apparaatknooppunt voor een scanner. Onze USB-scanner gebruikt
bijvoorbeeld apparaatknooppunt /dev/ugen0.2 wat in
feite slechts een symbolische koppeling is naar het echte
apparaatknooppunt genaamd /dev/usb/0.2.0 (een blik
op de inhoud van de map /dev
bevestigt dit). Zowel de symbolische koppeling als het
apparaatknooppunt zijn van respectievelijk de groepen
wheel en
operator. Door de gebruiker
joe aan deze groepen toe
te voegen kan hij de scanner zien, maar vanwege duidelijke
veiligheidsredenen dient het toevoegen van een gebruiker aan elke groep
met zorg te gebeuren, vooral aan de groep wheel.
Een betere oplossing is om een specifieke groep aan te maken voor het
gebruik van USB-apparaten en de scanner toegankelijk te maken voor leden
van deze groep.We zullen dus bijvoorbeeld een groep genaamd
usb gebruiken. De
eerste stap is het aanmaken van deze groep met behulp van het commando
&man.pw.8;:&prompt.root; pw groupadd usbHierna moeten we de symbolische koppeling
/dev/ugen0.2 aanmaken en het apparaatknooppunt
/dev/usb/0.2.0 met de juiste schrijfpermissies
toegankelijk maken voor de groep usb
(0660 of 0664), omdat standaard
alleen de eigenaar van deze bestanden (root)
ernaar kan schrijven. Dit alles wordt gedaan door de volgende regels
aan /etc/devfs.rules toe te voegen:[system=5]
add path ugen0.2 mode 0660 group usb
add path usb/0.2.0 mode 0666 group usb
- Gebruikers van &os; 7.X hebben waarschijnlijk de volgende
- regels met het juiste apparaatknooppunt,
- /dev/uscanner0, nodig:
-
- [system=5]
-add path uscanner0 mode 0660 group usb
-
- Daarna kan de volgende regel aan
- /etc/rc.conf toegevoegd worden en dient
- een machine herstart te worden:
-
- devfs_system_ruleset="system"
-
- Meer informatie over de bovenstaande instellingen staan in
- de hulppagina voor &man.devfs.8;.
-
Nu dienen er alleen nog gebruikers aan de groep
usb toegevoegd te
worden om toegang tot de scanner toe te staan:&prompt.root; pw groupmod usb -m joeLees voor meer details de handleidingpagina van &man.pw.8;.
diff --git a/nl_NL.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml b/nl_NL.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml
index 118a6568c5..a8bb8090b7 100644
--- a/nl_NL.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml
@@ -1,3469 +1,3446 @@
JimMockGeherstructureerd, gereorganiseerd en geupdate
door RemkoLodderVertaald door PPP en SLIPOverzichtPPPSLIP&os; heeft een aantal manieren om de ene computer met de
andere te verbinden. Om een netwerk of internet verbinding
op te zetten door een inbelmodem, of om anderen toe te
staan dit te doen door de machine heen vereist het gebruik
van PPP en SLIP. Dit hoofdstuk beschrijft het opzetten van
op modems gebaseerde diensten in meer detail.Na het lezen van dit hoofdstuk weet u:Hoe gebruikers PPP opgezet kan worden.Hoe kernel-PPP opgezet kan worden (alleen voor
&os; 7.X).Hoe PPPoE opgezet kan worden (PPP
over Ethernet).Hoe PPPoA opgezet kan worden (PPP
over ATM).Hoe een SLIP-server en cliënt opgezet kan worden en
hoe dat geconfigureerd wordt (alleen voor &os; 7.X).PPPgebruiker-PPPPPPkernel-PPPPPPover EthernetVoordat dit hoofdstuk gelezen wordt, moet u:Bekend zijn met basis netwerk terminologie.De basis en doeleinden van een inbel verbinding
en van PPP en/of SLIP.U kunt zich afvragen wat het verschil is tussen gebruiker-PPP
en kernel-PPP. Het antwoord is simpel: gebruiker-PPP verwerkt
inkomend en uitgaande data in het gebruikersland in plaats van
in de kernel. Dit is duur in de zin van het kopiëren van de
data tussen de kernel en het gebruikersland, maar levert meer
mogelijkheden voor de PPP implementatie. Gebruikers PPP gebruikt
het tun apparaat om te communiceren met
de buitenwereld. Kernel-PPP maakt gebruik van het
ppp apparaat.Voor de rest van dit hoofdstuk, zal gebruiker-PPP gebruikt
worden als ppp tenzij er onderscheid
gemaakt moet worden met andere PPP software zoals
pppd. Tenzij anders vermeld moeten
alle uitgelegde commando's in dit hoofdstuk gestart worden als
de root gebruiker.TomRhodesBijgewerkt en uitgebreid door BrianSomersOrigineel bijgedragen door NikClaytonMet input van DirkFrömbergPeterChildsGebruikmaken van gebruiker-PPP
-
- Met ingang van &os; 8.0 zijn apparaatknooppunten voor
- seriële poorten hernoemd van
- /dev/cuadN naar
- /dev/cuauN en van
- /dev/ttydN naar
- /dev/ttyuN.
- Gebruikers van &os; 7.X dienen de volgende documentatie met deze
- wijzigingen te lezen.
-
-
Gebruiker-PPPVereistenDit document gaat er vanuit dat u de volgende punten
beschikbaar heeft:ISPPPPEen account bij een Internet Service Provider (ISP)
waarmee verbinding gemaakt wordt door middel van
PPP.Een modem of een ander apparaat verbonden met uw PC en
correct geconfigureerd zodat u verbinding kan maken met uw
ISP.De inbelnummers van uw ISP.PAPCHAPUNIXloginnaamwachtwoordUw loginnaam en wachtwoord (danwel een combinatie van een
standaard &unix;-stijl login en wachtwoord of een PAP of CHAP
login en wachtwoordcombinatie).naamserverHet IP-adres van één of meerdere
naamservers. Normaal gesproken krijgt u twee IP
adressen van uw ISP om te gebruiken. Als u er echter geen
één gekregen heeft, kunt u het commando
enable dns gebruiken in
ppp.conf en
ppp zal de naamservers voor
u configureren. Deze optie is afhankelijk van de PPP
implementatie van de ISP, welke DNS onderhandeling
moet ondersteunen.De volgende informatie kan aangeleverd worden door uw
ISP maar is niet echt noodzakelijk:Het IP-adres van de router van uw ISP. De router is
de machine waarmee u verbinding maakt en welke ingesteld
wordt als de standaard route. Als
u deze informatie niet heeft, kunt u een willekeurig
adres verzinnen waarna de PPP server van de ISP het juiste
adres vertelt zodra u verbinding maakt.Dit IP-adres wordt door pppHISADDR genoemd.Het netwerkmasker wat gebruikt moet worden. Als uw ISP
deze niet heeft opgegeven, kan 255.255.255.255 gebruikt
worden.statisch IP-adresAls uw ISP u een vast IP-adres en hostnaam levert,
kunt u deze invoeren. In andere gevallen bepaalt de
andere kant welk adres er uitgegeven wordt.Als u niet in bezit bent van de vereiste informatie, moet
u contact opnemen met uw ISP.Door de rest van dit hoofdstuk worden in veel van de
voorbeelden configuratie bestanden genummerd per
regel. Deze nummers dienen alleen als hulp voor de
presentatie en discussie en zijn verder niet bedoeld om
daadwerkelijk geïmplementeerd te worden. Een juiste
inspringing met tabs en spaties zijn daarbij ook
belangrijk.Automatische configuratie van
PPPPPPconfiguratieZowel ppp als pppd
(de implementatie van PPP op kernel niveau) gebruiken de
configuratie bestanden die zich in de map /etc/ppp bevinden. Voorbeelden
configuraties voor gebruiker-PPP kunnen gevonden worden in
/usr/share/examples/ppp/.Het configureren van ppp vereist
dat u een aantal bestanden bewerkt, afhankelijk van uw
eisen. Wat u moet invoeren is deels afhankelijk van wat
uw ISP u aanbied met oog op statische IP-adressen (lees u
krijgt een statisch adres welke u altijd gebruikt) of
dynamisch (lees: uw IP-adres veranderd elke keer als
u verbinding maakt met uw ISP).PPP en statische IP-adressenPPPmet statische IP-adressenU moet het /etc/ppp/ppp.conf
bewerken. Het zou dan als volgend eruit moeten zien:Regels die eindigen met een :
starten in de eerste kolom (het begin van de regel)
— alle andere regels moeten inspringen zoals
getoond door middel van spaties of tabs.1 default:
2 set log Phase Chat LCP IPCP CCP tun command
3 ident user-ppp VERSION (built COMPILATIONDATE)
4 set device /dev/cuau0
5 set speed 115200
6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
8 set timeout 180
9 enable dns
10
11 provider:
12 set phone "(123) 456 7890"
13 set authname foo
14 set authkey bar
15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"
16 set timeout 300
17 set ifaddr x.x.x.xy.y.y.y 255.255.255.255 0.0.0.0
18 add default HISADDRRegel 1:Deze regel identificeert de standaard regel.
Commando's in deze regel worden automatisch gestart
zodra ppp gestart wordt.Regel 2:Zet de log paramaters aan. Zodra de configuratie
naar verwachting werkt, moet deze regel aangepast
worden naar:set log phase tunom te voorkomen dat er extreem grote log files
gemaakt worden.Regel 3:Vertelt PPP hoe het zich moet identificeren
aan de router aan de andere kant, als deze
problemen heeft met het onderhandelen en het
opzetten van de link en het leveren van informatie
die de beheerders van de andere kant nuttig kunnen
vinden om zulke problemen te onderzoeken.Regel 4:Identificeert het apparaat waarmee het modem
verbonden is. COM1 is
/dev/cuau0
en
COM2 is
/dev/cuau1.Regel 5:Stelt de snelheid in waarmee verbinding gemaakt
wordt. Als 115200 niet werkt (wat wel zou moeten
kunnen met elk nieuw modem), probeert u dan de
instelling van 38400.Regels 6 & 7:PPPgebruiker-PPPDe inbelregel. Gebruiker-PPP gebruikt een
expect-send syntax wat vergelijkbaar is
met het &man.chat.8; programma. Bekijk de handleiding
voor meer informatie over de mogelijkheden van deze
taal.Let op dat dit commando doorgaat op de volgende
regel zodat deze leesbaar blijft. Elk commando in
ppp.conf kan dit doen als het
laatste karakter op een regel, het \ karakter is.Regel 8:Stelt de idle timeout in voor een link. 180
seconden is standaard, dus deze regel is puur
cosmetisch.Regel 9:Vertelt PPP om de andere kant te vragen om een
bevestiging van de lokale naamserver instellingen. Als
u een lokale naamserver draait moet deze regel
uitgecommentarieërd of verwijderd worden.Regel 10:Een blanco regel voor de leesbaarheid. Blanco
regels worden door PPP genegeerd.Regel 11:Identificeert een sectie voor de provider die
provider genoemd wordt. Dit kan
gewijzigd worden in de naam van uw provider zodat er
later gebruik gemaakt van worden bij de optie
om een verbinding op te zetten.Regel 12:Stelt het telefoonnummer in voor deze provider.
Meerdere telefoonnummers kunnen gespecificeerd worden
door gebruik te maken van de dubbele punt
(:) of het pipe karakter
(|) als scheidingsteken. Het
verschil tussen de twee scheidingstekens wordt
beschreven in de &man.ppp.8; handleiding.
Om samen te vatten, als u wilt rouleren tussen de
nummers gebruikt u dan een dubbelepunt. Als u altijd
het eerste nummer als eerste wilt draaien en alleen de
andere nummers wilt draaien als het eerste nummer
niet werkt, gebruik dan het pipe karakter. Quote altijd
de hele set van telefoonnummers zoals getoond.U moet het telefoonnummer citeren met dubbele quotes
(") als er enige intentie is in het
gebruik van spaties in het telefoonummer. Dit kan een
simpele, maar subtiele fout creeëren.Regels 13 & 14:Identificeert de gebruikersnaam en het
wachtwoord. Wanneer gebruik gemaakt wordt van een
&unix; stijl login worden deze waarden verwezen
door het set login commando door
gebruik te maken van de \U en \P variabelen.
Wanneer er verbinding gemaakt wordt door PPP en CHAP
worden deze waardes gebruikt tijdens het
authenticeren.Regels 15:PAPCHAPAls u gebruik maakt van PPP en CHAP, zal er geen
login op dit moment zijn, en moet deze regel
uitgecommentarieërd of verwijderd worden. Zie het
PAP en CHAP
authenticatie hoofdstuk voor meer details.De login regel is hetzelfde als de chat-achtige
syntax van de inbelregel. In dit voorbeeld werkt
de reegl voor een dienst wiens login sessie als
volgt eruit ziet:J. Random Provider
login: foo
password: bar
protocol: pppU moet dit script aanpassen om aan uw behoeften
te voldoen. Wanneer u dit script voor het eerst
schrijft, moet u ervoor zorgen dat u de
chat log optie heeft aangezet zodat u
kunt bepalen of de communicatie gaat zoals
verwacht.Regel 16:timeoutSelt de standaard idle timeout in (in seconden)
voor de connectie. Hier wordt de connectie
automatisch afgesloten na 300 seconden van
inactiviteit. Als u nooit een timeout wilt krijgen,
kunt u de waarde op nul zetten of gebruik maken van
de optie op de commando
regel.Regel 17:ISPStelt het interface adres in. De regel
x.x.x.x moet vervangen
worden door het IP-adres dat uw provider aan u heeft
uitgegeven. De regel
y.y.y.y moet vervangen
worden door het IP-adres dat uw provider aan u
heeft gegeven voor de router (de machine waarmee
u verbinding maakt). Als uw ISP u geen router
adres heeft gegeven, gebruik dan 10.0.0.2/0. Als u gebruik
moet maken van een gegokt, zorg ervoor
dat er een regel staat in
/etc/ppp/ppp.linkup zoals
beschreven in de instructies voor PPP en dynamische IP
adressen. Als deze regel weggelaten wordt
kan ppp niet in
mode starten.Regel 18:Voegt een standaard routering toe naar uw providers
router. Het speciale HISADDR
woord, wordt vervangen door het router adres zoals
gespecificeerd op regel 17. Het is belangrijk dat
deze regel na regel 17 komt, anders is
HISADDR nog niet
geïnitialiseerd.Als u ppp niet in
mode wilt draaien, moet deze regel verplaatst
worden naar het ppp.linkup
bestand.Het is niet nodig om een regel toe te voegen aan
ppp.linkup wanneer u een statisch
IP-adres krijgt en ppp met de mode
gestart is omdat uw routerings tabel al correcte regels
heeft voordat u verbinding maakt. U kunt echter een regel
aanmaken om programma's te starten nadat de verbinding
opgezet is. Dit wordt later uitgelegd met een voorbeeld
over sendmail.Voorbeeld van configuratiebestanden kunnen gevonden
worden in de map usr/share/examples/ppp.PPP en dynamische IP-adressenPPPmet dynamische IP-adressenIPCPAls uw provider geen statisch IP-adres aanlevert kan
ppp geconfigureerd worden om het lokale
en het remote adres te onderhandelen. Dit wordt gedaan door
het gokken van een IP-adres en PPP toestaan
dit adres te corrigeren door gebruik te maken van het
IP Configuration Protocol (IPCP) nadat er een verbinding
opgezet is. De ppp.conf configuratie
is verders hetzelfde als voor de
PPP en statische IP
adressen, met de volgende wijziging:17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 0.0.0.0Nogmaals, het regelnummer hoeft niet te worden
toegevoegd, deze dient puur ter referentie. Indentatie
van minstens één spatie is vereist.Regel 17:Het nummer achter het / karakter
is het aantal netwerk master bits van het adres die ppp
eist. Het is mogelijk dat u IP-adressen wilt gebruiken
die meer van toepassing zijn op uw situatie, maar
bovenstaand voorbeeld zal altijd werken.Het laatste argument (0.0.0.0)
vertelt PPP om te onderhandelen met het adres 0.0.0.0 in plaats van met
10.0.0.1 en is benodigd
voor sommige ISPs. Gebruik 0.0.0.0
niet als eerste argument voor het commando
set ifaddr, omdat dit ervoor zorgt
dat PPP geen initiële route kan opzetten in
mode.Als u niet draait in mode, moet
u een nieuwe regel toevoegen aan
/etc/ppp/ppp.linkup.
ppp.linkup wordt uitgevoerd nadat een
connectie is opgezet. Op dit moment krijgt
ppp het interface adres en is het mogelijk
om regels toe te voegen aan de route tabel:1 provider:
2 add default HISADDRRegel 1:Bij het tot stand brengen van een verbinding
zal ppp kijken voor een
corresponderende regel in
ppp.linkup volgens de volgende
criteria: Als eerste, probeert het hetzelfde label te
vinden zoals gebruikt in ppp.conf.
Als dat mislukt, zoek dan een regel waarin het IP-adres
van onze router in voorkomt. Deze regel bevat een IP
stijl van 4 octetten. Als nu nog steeds geen
corresponderende regel gevonden is wordt er gezocht
naar de HISADDR regel.Regel 2:Deze regel verteld ppp om
een standaard routering toe te voegen die wijst
richting HISADDR.
HISADDR wordt vervangen door
het IP-adres van de router zoals onderhandeld door
IPCP.Zie de pmdemand regel in de bestanden
/usr/share/examples/ppp/ppp.conf.sample
en
/usr/share/examples/ppp/ppp.linkup.sample
voor een gedetailleerd voorbeeld.Het ontvangen van binnenkomende gesprekkenPPPontvangen van inkomende gesprekkenWanneer ppp geconfigureerd
is om inkomende gesprekken te ontvangen op een machine die
verbonden is met een LAN, moet u beslissen of er pakketten
worden doorgestuurd naar het LAN. Als u dat doet, moet
u de andere kant een IP-adres geven uit het subnet van uw
LAN, en zult u gebruik moeten maken van het command
enable proxy in het
/etc/ppp/ppp.conf bestand. U zult ook
moeten controleren of het /etc/rc.conf
bestand het volgende bevat:gateway_enable="YES"Welke getty?Het configureren van &os; voor
inbel diensten levert een goede beschrijving van
het inschakelen van inbeldiensten door gebruik te maken
van &man.getty.8;.Een alternatief voor getty is mgetty (van de port
comms/mgetty+sendfax),
een betere versie van getty ontworpen
voor onder andere inbellijnen.De voordelen van het gebruik van
mgetty is dat het actief
communiceert met modems, wat betekent
dat als de port uitgeschakeld is in
/etc/ttys, het modem de telefoon niet
zal beantwoorden.Latere versies van mgetty (vanaf
0.99beta en later) ondersteunen ook het automatisch
detecteren van PPP stromen waardoor cliënten
zonder extra scripting toegang kunnen krijgen tot uw
server.Raadpleeg naar Mgetty en
AutoPPP voor meer informatie over
mgetty.PPP PermissiesHet ppp commando moet normaal
gesproken gestart worden door de root
gebruiker. Als u echter wilt toestaan dat
ppp in server mode gestart wordt door
een normale gebruiker door het uitvoeren van
ppp, zoals beschreven hieronder, moet
deze gebruiker permissie krijgen om
ppp te starten. Dit kan gedaam worden
door de gebruiker toe te voegen aan de
network groep van het
/etc/group bestand.U moet de gebruiker ook toegang geven tot
één of meerdere secties van het configuratie
bestand door gebruik te maken van het allow
commando:allow users fred maryAls dit commando wordt gebruikt in de
default sectie, geeft ppp alle
opgegeevn gebruikers toegang tot alle opties.PPP shells voor dynamische IP-gebruikersPPP shellsCreeër een bestand genaamd
/etc/ppp/ppp-shell welke de volgende
gegevens bevat:#!/bin/sh
IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`
CALLEDAS="$IDENT"
TTY=`tty`
if [ x$IDENT = xdialup ]; then
IDENT=`basename $TTY`
fi
echo "PPP voor $CALLEDAS op $TTY"
echo "Starten van PPP voor $IDENT"
exec /usr/sbin/ppp -direct $IDENTDit script moet uitvoerbaar zijn. Ook moet er een
symbolische link gemaakt worden naar dit script met de naam
ppp-dialup door gebruik te maken van
de volgende commando's:&prompt.root; ln -s ppp-shell /etc/ppp/ppp-dialupU moet dit script gebruiken als de
shell voor al uw inbel gebruikers.
Dit is een voorbeeld uit /etc/passwd
voor een PPP inbelgebruiker met de gebruikersnaam
pchilds (Let op, u mag niet direct het
wachtwoord bestand bewerken, gebruik daarom het programma
&man.vipw.8;).pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialupCreeër vervolgens een map /home/ppp die door iedereen
gelezen en beschreven kan worden en zet daar de volgende 0
byte grote bestanden in:-r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin
-r--r--r-- 1 root wheel 0 May 27 02:22 .rhostswelke voorkomen dat /etc/motd
getoond wordt.PPP shells voor statische IP-gebruikersPPP shellsCreeër het ppp-shell bestand
zoals hierboven, en voor elk account met een statisch
toegewezen IP-adres creeërt u een symbolische link naar
ppp-shell.Als u bijvoorbeeld drie inbel gebruikers hebt genaamd
fred, sam en
mary waar u een /24 CIDR netwerk voor
routeert, moet u het volgende typen:&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-maryElk van deze inbelgebruikers moet de shell ingesteld
hebben op de symbolische link die hierboven is gecreeërd
(bijvoorbeeld mary's shell moet zijn
/etc/ppp/ppp-mary).Het instellen van ppp.conf voor
dynamische IP-gebruikersHet /etc/ppp/ppp.conf bestand moet
iets zoals hieronder bevatten:default:
set debug phase lcp chat
set timeout 0
ttyu0:
set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
enable proxy
ttyu1:
set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
enable proxyHet inspringen is belangrijk.De default: sectie wordt altijd
geladen. Voor elke inbellijn die ingeschakeld is in
/etc/ttys moet een soortgelijke
regel worden gemaakt als die voor ttyu0:
hierboven. Elke regel moet een uniek IP-adres krijgen van
uw pool van IP-adressen voor dynamische gebruikers.Het instellen van ppp.conf voor
statische IP-gebruikers.Samen met de inhoud van het voorbeeld
/usr/share/examples/ppp/ppp.conf
bestand hierboven moet een sectie aangemaakt worden voor
elke van de statisch ingestelde inbelgebruikers. We
gaan door met ons fred,
sam en mary
voorbeeld.fred:
set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255
sam:
set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255
mary:
set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255Het /etc/ppp/ppp.linkup bestand
moet ook informatie over routeringen bevatten voor elke
statische IP-gebruiker waar nodig. De regel hieronder
voegt een routering toe voor het
203.14.201.0/24 netwerk
via de ppp link van de gebruiker.fred:
add 203.14.101.0 netmask 255.255.255.0 HISADDR
sam:
add 203.14.102.0 netmask 255.255.255.0 HISADDR
mary:
add 203.14.103.0 netmask 255.255.255.0 HISADDRmgetty en AutoPPPmgettyAutoPPPLCPStandaard staat de optie AUTO_PPP in de port
comms/mgetty+sendfax welke
mgetty in staat stelt
om de LCP fase van PPP connecties te detecteren en aan de
hand daarvan automatisch een ppp shell te creeëren.
Echter, de standaard login procedure vindt in deze mode
niet plaats, waardoor het nodig is om de gebruikers te
authenticeren door middel van PAP of CHAP.De volgende sectie gaat er vanuit dat u succesvol
de port comms/mgetty+sendfax
op uw systeem heeft gecompileerd en geïnstalleerd.Zorg ervoor dat uw
/usr/local/etc/mgetty+sendfax/login.config
bestand de volgende inhoud heeft:/AutoPPP/ - - /etc/ppp/ppp-pap-dialupDit verteld mgetty om het
ppp-pap-dialup script te starten
wanneer er een PPP connectie gedetecteerd wordt.Creeër een bestand genaamd
/etc/ppp/ppp-pap-dialup met de volgende
inhoud (het bestand moet uitvoerbaar zijn):#!/bin/sh
exec /usr/sbin/ppp -direct pap$IDENTVoor elke inbelregel die ingeschakeld is in
/etc/ttys, creeër een
corresponderende regel in
/etc/ppp/ppp.conf. Dit gaat goed
samen met de definities die hierboven gedaan zijn.pap:
enable pap
set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
enable proxyElke gebruiker die op deze manier inlogt moet een
gebruikersnaam en wachtwoord hebben in het
/etc/ppp/ppp.secret bestand of de
volgende optie moet worden toegevoegd om gebruikers te
authenticeren via PAP vanuit het
/etc/passwd bestand.enable passwdauthAls u een aantal gebruikers een statisch IP-adres wilt
geven, kan dat gespecificeerd worden als het derde argument
in /etc/ppp/ppp.secret. Zie
/usr/share/examples/ppp/ppp.secret.sample
voor een voorbeeld.µsoft; ExtensiesDNSNetBIOSPPPµsoft; extensiesHet is mogelijk om PPP dusdanig te configuren dat deze
DNS en NetBIOS naamserver adressen meegeeft.Om deze extensies in te schakelen met PPP versie 1.x
kunnen de volgende regels toegevoegd worden aan de relevante
sectie in /etc/ppp/ppp.conf:enable msext
set ns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5en voor PPP versie 2 en hoger:accept dns
set dns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5Dit verteld de cliënt het primaire en secundaire
naamserver adres, en geeft een NetBIOS naamserver
adres.In versie 2 en hoger zal PPP gebruik maken van de
instellingen in /etc/resolv.conf
als de regel set dns niet wordt
gevonden.PAP en CHAP authenticatiePAPCHAPSommige providers stellen hun systemen dusdanig in dat
het authenticatie gedeelte van uw verbinding wordt
afgehandeld door het PAP of CHAP authenticatie mechanisme.
Als dit het geval is zal uw provider u niet voorzien van een
login: prompt wanneer u verbinding maakt
maar zal deze meteen gaan communiceren over het PPP
protocol.PAP is minder veilig dan CHAP, maar beveiliging is meestal
geen probleem omdat wachtwoorden, ook al worden deze in platte
tekst verstuurd met PAP, alleen worden verstuurd via een
seriële lijn. Hier is maar weinig ruimte voor crackers
om stiekem mee te luisteren.Terug verwijzende naar de PPP en statische IP-adressen
of PPP en dynamische IP-adressen
secties moeten de volgende aanpassingen gedaan worden:13 set authname Mijngebruikersnaam
14 set authkey Mijnwachtwoord
15 set loginRegel 13:Deze regel geeft uw PPP/CHAP gebruikersnaam aan.
U moet de juiste waardes invullen voor
Mijngebruikersnaam.Regel 14:passwordDeze regel geeft uw PPP/CHAP wachtwoord aan.
U moet de juiste waarde invullen voor
Mijnwachtwoord. Misschien
wilt u een extra regel toevoegen als:16 accept PAPof16 accept CHAPom duidelijk te maken op welke manier u wilt
authenticeren, standaard worden zowel PAP als CHAP
geaccepteerd.Regel 15:Uw ISP zal normaal gesprokken niet eisen dat u
op de server aanlogt als u gebruik maakt van PAP of
CHAP. Daarom moet u de set login regel
uitschakelen.Het aanpassen van uw ppp configuratie
terwijl deze in gebruik isHet is mogelijk om tegen met het ppp
programma te communiceren terwijl deze in gebruik is op de
achtergrond, maar dat kan alleen als er een geschikte
diagnostische poort ingesteld is. Om dit te kunnen doen
moet de volgende regel worden toegevoegd aan de
configuratie:set server /var/run/ppp-tun%d DiagnosticPassword 0177Dit vertelt PPP om te luisteren naar het gespecificeerde
&unix; domein socket, waarbij de cliënten gevraagd
worden om het opgegeven wachtwoord voordat toegang
verleend kan worden. Het %d in de
naam wordt vervangen door het tun
apparaat dat gebruikt wordt voor de verbinding.Zodra een socket ingesteld is kan het &man.pppctl.8;
programma gebruikt worden in scripts die het draaiende
programma willen bewerken.De vertaalmogelijkheden van PPP voor netwerkadressen
gebruikenPPPNATPPP heeft de mogelijkheid om interne NAT te gebruiken zonder
dat de kernel hiervoor iets hoeft te doen. Deze functionaliteit
kan worden ingeschakeld door de volgende regel in
/etc/ppp/ppp.conf:nat enable yesOok kan PPP NAT ingeschakeld worden door de optie
-nat. Er is ook een
/etc/rc.conf optie genaamd
ppp_nat welke standaard ingeschakeld
is.Als u gebruik wilt maken van deze optie, kunt u de
volgende /etc/ppp/ppp.conf opties ook
nuttig vinden om binnenkomende connecties door te sturen:nat port tcp 10.0.0.2:ftp ftp
nat port tcp 10.0.0.2:http httpof als u niets vertrouwd vanaf buitenaf:nat deny_incoming yesLaatste systeemconfiguratiePPPconfiguratieU heeft nu ppp geconfigurerd, maar er
moeten nog een aantal dingen gedaan worden voordat deze klaar
is om te kunnen werken. Hiervoor moeten een aantal
aanpassingen gedaan worden in het bestand
/etc/rc.conf.Van boven naar beneden kijkende zorgen we er als eerste
voor dat de hostname= regel ingesteld
is met bijvoorbeeld:hostname="foo.example.com"Als uw provider u een statisch adres en een naam heeft
gegeven is het waarschijnlijk handig dat u deze naam gebruikt
als uw hostnaam.Zoek naar de network_interfaces
variabele. Als u uw systeem wilt configuren om in te bellen
bij uw provider wanneer nodig, zorg er dan voor dat het
tun0 apparaat is toegevoegd aan deze
lijst. Haal deze anders weg.network_interfaces="lo0 tun0"
ifconfig_tun0=De ifconfig_tun0 variabele moet
leeg zijn, en een bestand genaamd
/etc/start_if.tun0 moet aangemaakt
worden met de volgende inhoud:ppp -auto mysystemDit script wordt uitgevoerd tijdens de netwerk
configuratie, waarbij uw ppp daemon wordt gestart in
automatische mode. Als u een LAN heeft waarvoor deze
machine een router is wilt u wellicht ook de
meegeven. Bekijk de handleiding
voor verdere details.Zorg ervoor dat het router programma is ingesteld op
NO door middel van de volgende regel in
uw /etc/rc.conf bestand:router_enable="NO"routedHet is belangrijk dat de routed daemon
niet gestart wordt, omdat routed de neiging
heeft om de standaard routeringtabel regels die gemaakt
worden door ppp te verwijderen.Het is waarschijnlijk een goed idee om te zorgen dat de
sendmail_flags regel de
optie niet wordt meegenomen, anders zal
sendmail periodiek een zoek actie
verrichten op het netwerk, wat ervoor zorgt dat uw machine
gaat uitbellen. U kunt het volgende instellen:sendmail_flags="-bd"sendmailHet nadeel hiervan is dat u sendmail
moet forceren om de mailqueue periodiek te bekijken zodra
de ppp link op is door het typen van:&prompt.root; /usr/sbin/sendmail -qU wilt wellicht gebruik maken van het
!bg commando in
ppp.linkup om dit automatisch te
doen:1 provider:
2 delete ALL
3 add 0 0 HISADDR
4 !bg sendmail -bd -q30mSMTPAls u dit niet wilt doen, is het mogelijk om een
dfiler in te stellen welke SMTP verkeer
blokkeert. Raadpleeg naar de voorbeeld bestanden voor
verdere details.Alles wat nu nog nodig is, is het herstarten van de
machine. Na het herstarten kunt het volgende typen:&prompt.root; pppen daarna dial provider om de PPP
sessie te starten, of u indien u dat wilt kan
ppp automatisch sessies opzetten wanneer
er uitgaand verkeer is (en wanneer u geen
start_if.tun0 script heeft aangemaakt),
typt u:&prompt.root; ppp -auto providerSamenvattingOm samen te vatten zijn de volgende stappen benodigd om PPP
voor de eerste keer in te stellen:Aan de cliënt zijde:Zorg ervoor dat het tun
apparaat is ingeschakeld in uw kernel.Zorg ervoor dat het apparaatbestand tunN
beschikbaar is in de map /dev.Creeër een regel in
/etc/ppp/ppp.conf. Het
pmdemand voorbeeld zou moeten
volstaand voor de meeste providers.Als u dynamische IP-adressen heeft, creeër een
regel in /etc/ppp/ppp.linkup.Update uw /etc/rc.conf
bestand.Creeër een start_if.tun0
script als u op verzoek wilt inbellen.Aan de server zijde:Zorg ervoor dat het tun
apparaat is ingeschakeld in uw kernel.Zorg ervoor dat het apparaatbestand
tunN
beschikbaar is in de map /dev.Creeër een regel in
/etc/passwd (door gebruik te maken
van het &man.vipw.8; programma).Creeër een profiel in deze gebruikers home
directory die
ppp -direct direct-server start of
iets in die trant.Creeër een regel in
/etc/ppp/ppp.conf. Het
direct-server voorbeeld zou moeten
volstaan.Creeër een regel in
/etc/ppp/ppp.linkup.Update uw /etc/rc.conf
bestand.Gennady B.SorokopudDelen origineel bijgedragen door RobertHuffKernel-PPP gebruikenHet opzetten van kernel-PPPDeze sectie geldt en is alleen geldig voor &os; 7.X.PPPkernel-PPPVoordat u begint met het opzetten van PPP op uw machine,
zorg ervoor dat het pppd commando zich
bevindt in de map /usr/sbin
en dat de map /etc/ppp
bestaat.pppd kan in twee verschillende modes
werken:Als een cliënt — u wilt uw
machine verbinden met de buitenwereld via een seriële
PPP-verbinding of een modemlijn.PPPserverAls een server — uw machine bevind
zich in het netwerk en wordt gebruikt om andere computers
te verbinden door middel van PPP.In beide gevallen moet u een bestand met opties instellen
(/etc/ppp/options of
~/.ppprc als er meer dan één
gebruiker is op uw machine die gebruik maakt van PPP).U heeft ook enige modem/seriële software nodig
(comms/kermit wordt
aanbevolen), zodat u de andere kant kunt bellen en een
verbinding kunt opzetten.TrevRoydhouseGebaseerd op informatie geleverd door Gebruik maken van pppd als
cliëntPPPcliëntCiscoDe volgende /etc/ppp/options kan
gebruikt worden om met een Cisco terminal server PPP lijn
verbinding te maken.crtscts # Schakel hardware flow controle in
modem # modem controle lijn
noipdefault # De PPP-server aan de andere kant moet uw IP-adres
# opgeven, als de machine aan de andere kant uw IP
# adres niet meegeeft tijdens de IPCP onderhandeling
# moet deze optie worden verwijderd
passive # Wacht op LCP pakketten
domain ppp.foo.com # Vul uw domein naam hier in
:remote_ip # Vul het IP-adres van de PPP
# server in deze wordt gebruikt om pakketten te
# routeren via de PPP link. Als u de noipdefault optie
# niet heeft aangegeven verander dan deze regel in
# local_ip:remote_ip
defaultroute # Vul dit in als u wilt dat de PPP server de standaard
# router wordtOm verbinding te maken:KermitmodemBel naar de machine aan de andere kant door middel van
Kermit (of een ander modem
programma), en vul uw gebruikersnaam en wachtwoord in (of
wat er ook nodig is om de verbinding op te brengen met de
machine aan de andere kant).Stop Kermit (zonder de lijn
op te hangen).Type het volgende:&prompt.root; /usr/sbin/pppd /dev/tty0119200Wees er zeker van dat de juiste snelheid en het juiste
apparaat wordt aangesproken.Uw computer is nu verbonden met PPP. Als de connectie
faalt, kan de optie worden meegegeven
in het /etc/ppp/options bestand waarna op
de console berichten kunnen worden geraadpleegd om het probleem
te achterhalen.Het volgende /etc/ppp/pppup script
zal alle drie de stappen automatisch doen:#!/bin/sh
pgrep -l pppd
pid=`pgrep pppd`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.dial
pppd /dev/tty01 19200Kermit/etc/ppp/kermit.dial is een
Kermit script dat belt en alle
benodigde authorisaties doet op de machine aan de andere
kant (een voorbeeld van zo'n script is bijgevoegd aan het
einde van dit document).Gebruik het volgende /etc/ppp/pppdown
script om de PPP lijn af te breken:#!/bin/sh
pid=`pgrep pppd`
if [ X${pid} != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill -TERM ${pid}
fi
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
/sbin/ifconfig ppp0 down
/sbin/ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.hup
/etc/ppp/ppptestControleer of pppd nog steeds draait door
het uitvoeren van /usr/etc/ppp/ppptest,
welke er als volgend uitziet:#!/bin/sh
pid=`pgrep pppd`
if [ X${pid} != "X" ] ; then
echo 'pppd running: PID=' ${pid-NONE}
else
echo 'No pppd running.'
fi
set -x
netstat -n -I ppp0
ifconfig ppp0Om het modem op te hangen, voer het
/etc/ppp/kermit.hup script uit
welke het volgende bevat:set line /dev/tty01 ; vul hier uw modem in
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
echo \13
exitHier is een alternatieve methode welke gebruik maakt
van chat in plaats van
kermit:De volgende twee regels zijn voldoende om een
pppd verbinding op te zetten./etc/ppp/options:/dev/cuad1 115200
crtscts # Schakel hardware flow controle in
modem # modem controle lijn
connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
noipdefault # De PPP server aan de andere kant moet uw IP-adres
# opgeven, als de machine aan de andere kant uw IP
# adres niet meegeeft tijdens de IPCP onderhandeling
# moet deze optie worden verwijderd
passive # Wacht op LCP pakketten
domain your.domain # Vul uw domein naam hier in
:remote_ip # Vul het IP-adres van de PPP
# server in deze wordt gebruikt om pakketten te
# routeren via de PPP link. Als u de noipdefault optie
# niet heeft aangegeven verander dan deze regel in
# local_ip:remote_ip
defaultroute # Vul dit in als u wilt dat de PPP server de standaard
# router wordt/etc/ppp/login.chat.script:Het volgende moet op één regel.ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTtelefoon.nummer
CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: login-id
TIMEOUT 5 sword: passwordZodra deze zijn geïnstalleerd en correct aangepast is
het enige dat gedaan moet worden, het starten van
pppd zoals volgt:&prompt.root; pppdGebruik maken van pppd als
server/etc/ppp/options moet ongeveer het
volgende bevatten:crtscts # Hardware flow controle
netmask 255.255.255.0 # netmask (niet vereist)
192.114.208.20:192.114.208.165 # IP's van lokale en niet lokale hosten
# het lokale IP moet anders zijn dan
# degeen die is toegewezen aan de
# Ethernet (of andere) interface op uw
# machine. remote IP is het IP-adres
# dat wordt toegewezen aan de machine
# aan de andere kant
domain ppp.foo.com # uw domein
passive # Wacht op LCP
modem # modem lijnHet volgende /etc/ppp/pppserv script
zal pppd vertellen zich te gedragen
als server:#!/bin/sh
pgrep -l pppd
pid=`pgrep pppd`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
# reset ppp interface
ifconfig ppp0 down
ifconfig ppp0 delete
# enable autoanswer mode
kermit -y /etc/ppp/kermit.ans
# run ppp
pppd /dev/tty01 19200Gebruik dit /etc/ppp/pppservdown script
om de server te stoppen:#!/bin/sh
pgrep -l pppd
pid=`pgrep pppd`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.noansHet volgende Kermit script
(/etc/ppp/kermit.ans) zal het automatisch
beantwoorden van uw modem in of uitschakelen. Het moet eruit
zien als volgend:set line /dev/tty01
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
inp 5 OK
echo \13
out ATS0=1\13 ; Verander dit in out ATS0=0\13 als u automatisch
; beantwoorden wilt uitschakelen
inp 5 OK
echo \13
exitEen script genaamd /etc/ppp/kermit.dial
wordt gebruikt voor het bellen en authenticeren van de machine
aan de andere kant. U moet deze aanpassen aan uw wensen. Vul in
dit script uw inlognaam en wachtwoord in, u moet ook het input
statement aanpassen afhankelijk hoe uw modem antwoordt en de
communicatie van de machine aan de andere kant.;
; Vul de seriële lijn in welke verbonden is met het modem
;
set line /dev/tty01
;
; Stel het modem snelheid in:
;
set speed 19200
set file type binary ; volledige 8 bit bestands xfer
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
set modem hayes
set dial hangup off
set carrier auto ; Daarna stel SET CARRIER in indien nodig
set dial display on ; Stel daarna SET DIAL in indien nodig
set input echo on
set input timeout proceed
set input case ignore
def \%x 0 ; login prompt teller
goto slhup
:slcmd ; stel het modem in op commandomodus
echo Stel het modem in op commandomodus.
clear ; Verwijder ongelezen karakters uit de input buffer
pause 1
output +++ ; hayes escape sequence
input 1 OK\13\10 ; wacht op OK
if success goto slhup
output \13
pause 1
output at\13
input 1 OK\13\10
if fail goto slcmd ; Als het modem niet antwoordt met OK, probeer het opnieuw
:slhup ; hang de telefoon op
clear ; Verwijder ongelezen karakters uit de input buffer
pause 1
echo De telefoon wordt opgehangen.
output ath0\13 ; hayes command voo on hook
input 2 OK\13\10
if fail goto slcmd ; Als er geen OK antwoord is, stel het modem in op commandomodus
:sldial ; Draai het nummer
pause 1
echo Bellen.
output atdt9,550311\13\10 ; put phone number here
assign \%x 0 ; zero the time counter
:look
clear ; Verwijder ongelezen karakters uit de input buffer
increment \%x ; Tel de seconden
input 1 {CONNECT }
if success goto sllogin
reinput 1 {NO CARRIER\13\10}
if success goto sldial
reinput 1 {NO DIALTONE\13\10}
if success goto slnodial
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 60 goto look
else goto slhup
:sllogin ; login
assign \%x 0 ; Stel de tijd teller in op nul
pause 1
echo Zoeken naar de login prompt
:slloop
increment \%x ; Tel de seconden
clear ; Verwijder ongelezen karakters uit de input buffer
output \13
;
; Stel hier de verwachte login prompt in:
;
input 1 {Username: }
if success goto sluid
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 10 goto slloop ; Probeer 10 x om een login prompt te krijgen
else goto slhup ; Hang op en probeer het nogmaals als er 10 mislukte pogingen zijn
:sluid
;
; Vul hier uw gebruikersnaam in:
;
output ppp-login\13
input 1 {Password: }
;
; Vul hier uw wachtwoord in:
;
output ppp-password\13
input 1 {Entering SLIP mode.}
echo
quit
:slnodial
echo \7Er is geen kiestoon, controleer de telefoon lijn!\7
exit 1
; local variables:
; mode: csh
; comment-start: "; "
; comment-start-skip: "; "
; end:TomRhodesBijgedragen door Het problemen oplossen van
PPP-verbindingenPPPtroubleshooten
-
- Met ingang van &os; 8.0 vervangt het stuurprogramma
- &man.uart.4; het stuurprogramma &man.sio.4;. Apparaatknooppunten voor
- seriële poorten zijn hernoemd van
- /dev/cuadN naar
- /dev/cuauN en van
- /dev/ttydN naar
- /dev/ttyuN.
- Gebruikers van &os; 7.X zullen de documentatie met deze
- veranderingen moeten lezen.
-
-
Deze sectie behandelt een paar problemen die kunnen
optreden wanneer PPP wordt gebruikt over een modemverbinding.
Bijvoorbeeld, misschien moet u exact weten wat de prompt is
die het systeem waarop u inbelt presenteert. Sommige
providers presenteren de ssword
prompt terwijl anderen password tonen
als het ppp script niet goed geschreven is
en de inlogin poging faalt. De meest standaard manier om
ppp verbindingen te onderzoeken op problemen
is door handmatig een connectie op te zetten. De volgende
informatie helpt u om stap voor stap een handmatige connectie op
te zetten.Controleer de apparaatknooppuntenAls er een eigen kernel gebruikt wordt, vergeet dan niet om
de volgende regel in uw kernelinstellingenbestand op te
nemen:device uartHet apparaat uart is al in de kernel
GENERIC opgenomen, dus zijn er in dit geval
geen extra stappen nodig. Controleer de resultaten van het
commando dmesg voor het modemapparaat door
middel van:&prompt.root; dmesg | grep uartU zou enige informatie moeten ontvangen over de
uart apparaten. Deze bevinden zich op
de COM-poorten die we nodig hebben. Als uw modem zich gedraagt
als een standaard seriële poort zou u deze moeten vinden
als zijnde uart1 of
COM2. Als dat klopt hoeft u de kernel
niet opnieuw te bouwen. Wanneer u de sio-apparaten controleert
en het modem is op uart1 te vinden of als
COM2 als u zich onder &ms-dos; bevindt,
dan is uw modemapparaat
/dev/cuau1.Handmatig verbinding makenVerbinding maken met het internet door handmatig controle
te hebben over ppp is snel, makkelijk en een
geweldige manier om problemen te vinden bij een verbinding
of zelfs voor alleen het verkrijgen van inforamtie over hoe uw
provider de ppp cliënt verbindingen
behandelt. Laten we starten met PPP
vanaf de commando regel. Let op dat in al onze voorbeelden we
gebruik maken van example als hostnaam
van de machine die PPP draait. U
start ppp door enkel het commando
ppp te typen:&prompt.root; pppWe hebben nu ppp gestart.ppp ON example> set device /dev/cuau1We stellen ons modem in, in dit geval is dat
cuau1.ppp ON example> set speed 115200We stellen de verbindings snelheid in, in dit geval
gebruiken we 115,200 kbps.ppp ON example> enable dnsVertel ppp om onze naam vertaler te
configuren, en de juiste naamserver regels toe te voegen aan
/etc/resolv.conf. Als ppp
onze hostnaam niet kan bepalen, kunnen we deze later
instellen.ppp ON example> termWissel naar terminal mode zodat we handmatig
het modem kunnen bedienen.deflink: Entering terminal mode on /dev/cuau1
type '~h' for helpat
OK
atdt123456789Gebruik at om het modem te initialiseren,
en daarna atdt en het nummer voor uw provider
om het inbel proces te beginnen.CONNECTBevestiging van de verbinding, als we tegen problemen
aanlopen met de verbinding, welke niet gerelateerd zijn aan de
hardware, is dit de plek om te beginnen om de problemen op te
lossen.provider login:myusernameHier wordt u gevraagd om een gebruikersnaam. Geef de
gebruikersnaam op welke aangeleverd is door de provider.provider pass:mypasswordDeze keer worden we gevraagd voor een wachtwoord.
Vul uw wachtwoord in welke u is aangeleverd door de provider.
Net zoals het aanloggen op &os; zal het wachtwoord niet
getoond worden.Shell or PPP:pppAfhankelijk van uw provider wordt deze prompt wellicht
nooit getoond. Hier wordt ons gevraagd of we een shell willen
starten op de host van de provider, of dat we
ppp willen starten. In dit geval is er
gekozen voor ppp omdat we een internet
verbinding willen.Ppp ON example>Let op dat in dit voorbeeld de eerste
een hoofdletter geworden is. Dit geeft aan dat we succesvol
verbonden zijn met de provider.PPp ON example>We hebben ons succesvol geauthenticeerd bij onze
provider en we wachten op een IP-adres dat ons wordt
toegewezen.PPP ON example>We hebben een IP adres verkregen en
hebben succesvol een verbinding opgebouwd.PPP ON example>add default HISADDRHier wordt een standaard route toegevoegd. Deze moet worden
toegevoegd voordat we kunnen communiceren met de buitenwereld
aangezien de enige verbinding op dit moment met de andere machine
is. Als dit niet lukt omdat er al een route bestaat, kan er een
bang karakter (!) geplaatst
worden voor de optie. Als alternatief kan
dit ook gedaan worden voordat de verbinding opgezet wordt,
waarna een nieuwe route onderhandeld wordt.Als alles goed gegaan is, zou er nu een actieve
verbinding moeten zijn met het internet, welke in de
achtergrond gezet kan worden door CTRLz
te gebruiken. Als u ziet dat het commando PPP
terugkeert naar ppp is de verbinding afgebroken.
Dit is goed om te weten, aangezien dit de status van de verbinding
toont. Hoofdletter P's betekenen dat er een verbinding is met
de provider, en kleine letters betekend dat de verbinding
verloren is gegaan om welke reden dan ook.
ppp kent alleen deze twee statussen.DebuggenAls u een directe lijn heeft en geen verbinding kan
maken, zet dan hardware flow CTS/RTS uit
met de optie. Dit is meestal
het geval voor een PPP terminal
server waar PPP hangt wanneer deze
probeert te schrijven naar uw communicatie link, dus moet deze
wachten op een CTS of een Clear To Send
signaal welke misschien nooit komt. Als u deze optie gebruikt,
moet u ook de optie gebruiken
welke benodigd kan zijn om hardware afhankelijkheden te
omzeilen door bepaalde karakters over en weer te sturen,
meestal XON/XOFF. Zie de &man.ppp.8; handleiding voor meer
informatie over deze optie en hoe deze gebruikt kan worden.Als u een ouder modem heeft, kan het voorkomen dat u ook
de optie moet gebruiken.
De parity is standaard ingesteld op none maar wordt gebruikt
voor fout controle (met als gevolg een grote verhoging van
de hoeveelheid data) bij oudere modems en sommige
providers. Dit is bijvoorbeeld een benodigde optie bij de
Compuserve provider.Het kan voorkomen dat PPP niet
terugkeert naar de commando mode, wat meestal betekent dat er
een onderhandelings fout is waarbij de provider wacht op uw
kant om de onderhandeling te kunnen beginnen. Op dit
moment kunt u gebruik maken van het ~p
commando om ppp te forceren om de configuratie informatie
te versturen.Als u nooit een inlogin prompt krijgt is het zeer
waarschijnlijk dat u PAP of
CHAP authenticatie moet gebruiken in plaats
van de &unix; stijl in het voorbeeld hierboven. Om gebruik te
maken van PAP of CHAP
voegt u het volgende opties toe aan
PPP voordat u de terminal mode
ingaat:ppp ON example> set authname mijngebruikersnaamWaarbij mijngebruikersnaam moet
worden vervangen met de gebruikersnaam die wordt toegewezen
door de provider.ppp ON example> set authkey mijnwachtwoordWaarbij mijnwachtwoord moet
worden vervangen door het wachtwoord wat u is toegewezen door
de provider.Als u een goed werkende verbinding kunt maken maar het
onmogelijk lijkt om een domeinnaam te vinden, probeert u
dan &man.ping.8; te gebruiken met een IP
adres en kijk of er enige informatie terugkomt. Als u 100
procent (100%) packet loss ziet is het zeer waarschijnlijk
dat u geen default route heeft gekregen. Controleer nogmaals
of de optie
ingesteld is tijdens de connectie. Als u verbinding kunt
maken met een extern IP adres is het
mogelijk dat een naamserver niet is toegevoegd aan het
/etc/resolv.conf bestand. Dit bestand
moet er uitzien als volgend:domain example.com
nameserver x.x.x.x
nameserver y.y.y.yWaar x.x.x.x en
y.y.y.y moet worden vervangen door
het IP adres van uw providers
naamservers. Deze informatie kan mogelijk wel of niet
geleverd zijn toen u zich inschreef, maar een snel telefoontje
naar uw provider zou hierin uitkomst kunnen bieden.U kunt ook &man.syslog.3; gebruiken om een log functie
voor PPP aan te maken. Voeg het
volgende toe aan /etc/syslog.conf:!ppp
*.* /var/log/ppp.logDeze functionaliteit bestaat in de meeste gevallen al.JimMockBijgedragen
(vanaf http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html)
door PPP gebruiken over Ethernet (PPPoE)PPPover EthernetPPPoEPPP, over EthernetDeze sectie beschrijft hoe PPP over Ethernet opgezet kan worden
(PPPoE).Het configureren van de kernelInmiddels is het niet langer benodigd om de kernel
configuratie aan te passen voor PPPoE. Als de benodigde
netgraph ondersteuning niet in de kernel aanwezig is zal deze
dynamisch geladen worden door
ppp.Het instellen van ppp.confHieronder volgt een voorbeeld van een werkende
ppp.conf:default:
set log Phase tun command # Er kan meer gedetailleerde logging ingeschakeld worden indien gewenst
set ifaddr 10.0.0.1/0 10.0.0.2/0
name_of_service_provider:
set device PPPoE:xl1 # Vervang x11 met uw ethernet apparaat
set authname UWLOGINNAAM
set authkey UWWACHTWOORD
set dial
set login
add default HISADDRHet draaien van pppAls de root gebruiker kunt u het
volgende draaien:&prompt.root; ppp -ddial name_of_service_providerHet pstarten van ppp tijdens het
opstartenVoeg het volgende toe aan uw
/etc/rc.conf bestand:ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES" # Indien u nat wilt inschakelen voor het lokale netwerk, gebruik anders NO
ppp_profile="naam_van_service_provider"Gebruik maken van een PPPoE service labelSoms is het nodig om een service tag te gebruiken om
verbinding te kunnen maken. Service tags worden gebruikt om
onderscheid te maken tussen de verschillende PPPoE servers
die verbonden zijn met een netwerk.Uw provider zou u de juiste service tag gegevens verstrekt
moeten hebben in de documentatie die opgeleverd is. Als u deze
niet kunt vinden in de documentatie moet u deze opvragen bij uw
technische support afdeling van uw provider.Als allerlaatste optie kunt u de aangerade methode gebruiken
van het
Roaring Penguin
PPPoE programma welke gevonden kan worden in de Ports Collectie. Houd u echter in uw
achterhoofd dat dit uw modem ernstige schade kan toebrengen,
dus denkt u er goed over na voordat u het uitprobeert.
Installeer simpelweg het programma dat is meegeleverd bij het
modem door uw provider. Open hierna het
System menu vanuit het programma. De naam van
uw profiel moet hier te vinden zijn. Meestal is deze
ISP.De naam van het profiel (servicetag) zal worden gebruikt in
de PPPoE configuratie regel van ppp.conf
in het provider gedeelte van het set device
commando (zie de &man.ppp.8; handleiding voor meer informatie
hierover). Dit zou er als volgend uit moeten zien:set device PPPoE:xl1:ISPVergeet u niet om xl1 te
vervangen door het juiste apparaat voor uw Ethernet
kaart.Vergeet u niet om ISP te
vergangen door het profiel wat hierboven ingesteld is.Voor meer informatie zie:Cheaper
Broadband with FreeBSD on DSL door Renaud
Waldura.PPPoE met een &tm.3com;
HomeConnect ADSL Modem Dual
LinkDit modem volgt RFC 2516
niet (Een methode voor het versturen van PPP over
Ethernet (PPPoE) geschreven door by L. Mamakos,
K. Lidl, J. Evarts, D. Carrel, D. Simone, and R. Wheeler).
Daarentegen is een ander type pakket code gebruikt voor de
Ethernet frames. Klaagt u alstublift bij
3Com als u vind dat
ze zich aan de PPPoE specificatie moeten houden.Om &os; in staat te stellen om te communiceren met dit
apparaat, moet er een sysctl ingesteld worden. Dit kan
automatisch tijdens het opstarten gedaan worden door het
bewerken van /etc/sysctl.conf:net.graph.nonstandard_pppoe=1Dit kan ook direct gedaan worden met het commando:&prompt.root; sysctl net.graph.nonstandard_pppoe=1Helaas is het, doordat dit een systeem brede instelling is,
niet mogelijk om tegelijkertijd met een normale PPPoE
cliënt of server en een
&tm.3com; HomeConnect
ADSL-modem te communiceren.Gebruik maken van PPP over ATM
(PPPoA)PPPover ATMPPPoAPPP, over ATMHet volgende beschrijft hoe PPP over ATM (PPPoA) opgezet kan
worden. PPPoA is een populaire keuze binnen Europese DSL
providers.Gebruik maken van PPPoA met de Alcatel &speedtouch; USBPPPoA ondersteuning voor dit apparaat wordt geleverd door
middel van een port in &os; omdat de firmware wordt
gedistribueerd onder Alcatel's
licentie overeenkomst en mag derhalve niet vrijelijk
verspreid worden met het basis systeem van &os;.Om de software te installeren, wordt simpelweg de Ports Collectie gebruikt. Installeer de
net/pppoa port en volg de
instructies die meegeleverd worden.Zoals de meeste USB apparaten moet de Alcatel &speedtouch;
USB zijn firmware downloaden van de host computer om correct
te kunnen werken. Het is mogelijk om dit proces te automatiseren
binnen &os; zodat deze overdracht elke keer gebeurd als het
apparaat in een USB poort wordt gestoken. De volgende informatie
kan worden toegevoegd aan het /etc/usbd.conf
bestand om deze automatische overdracht in te schakelen. Dit
bestand moet bewerkt worden door de root
gebruiker.device "Alcatel SpeedTouch USB"
devname "ugen[0-9]+"
vendor 0x06b9
product 0x4061
attach "/usr/local/sbin/modem_run -f /usr/local/libdata/mgmt.o"Om de USB daemon, usbd, te starten
moet de volgende regel toegevoegd worden aan
/etc/rc.conf:usbd_enable="YES"Het is ook mogelijk om ppp op te
zetten om in te bellen tijdens het opstarten. Om dit te doen
moet de volgende regel worden toegevoegd aan
/etc/rc.conf. Voor deze procedure moet
er ook aangelogt zijn als de root
gebruiker.ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="adsl"Om dit correct te laten werken moet het voorbeeld
ppp.conf bestand gebruikt worden welke
geleverd wordt door de
net/pppoa port.Gebruik maken van mpdU kunt mpd gebruiken om met een
variateit aan diensten verbinding te maken, in het bijzonder
PPTP diensten. U kunt mpd vinden in
de Ports Collectie, net/mpd.
Veel ADSL-modems vereisen dat er een PPTP tunnel wordt
gecreeërd tussen het modem en de computer, een voorbeeld
van zo'n modem is de Alcatel &speedtouch; Home.Eerst moet u de port installeren waarna
mpd geconfigureerd kan worden om
uw eisen en provider instellingen op te geven. De port
plaatst een verzameling voorbeeldconfiguratiebestanden welke
goed gedocumenteerd zijn in PREFIX/etc/mpd/.
Let op dat PREFIX betekend dat dit de
directory is waar uw ports in worden geïnstalleerd.
Standaard is dit /usr/local/. Een complete
handleiding om mpd te configureren is
beschikbaar in HTML formaat zodra de port geïnstalleerd is.
Deze wordt geplaatst in PREFIX/share/doc/mpd/.
Hieronder staat een voorbeeld configuratie om verbinding te
maken met een ADSL dienstverlener door het gebruik van
mpd. De configuratie is verspreid
over twee bestanden, allereerst het mpd.conf
bestand:Dit voorbeeld van het bestand mpd.conf werkt
alleen met mpd 4.X.default:
load adsl
adsl:
new -i ng0 adsl adsl
set bundle authname gebruikersnaam
set bundle password wachtwoord
set bundle disable multilink
set link no pap acfcomp protocomp
set link disable chap
set link accept chap
set link keep-alive 30 10
set ipcp no vjcomp
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
set iface route default
set iface disable on-demand
set iface enable proxy-arp
set iface idle 0
openDe gebruikersnaam die gebruikt wordt om uzelf te
authenticeren aan uw provider.Het wachtwoord wat gebruikt wordt om uzelf te
authenticeren aan uw provider.Het mpd.links bestand bevat informatie
over de link, of linken waarmee u verbinding wilt maken. Een
voorbeeld mpd.links wat bij bovenstaand
voorbeeld hoort is hieronder gegeven:adsl:
set link type pptp
set pptp mode active
set pptp enable originate outcall
set pptp self 10.0.0.1
set pptp peer 10.0.0.138Het IP-adres van uw &os; computer waar vanaf
mpd gebruikt wordt.Het IP-adres van uw ADSL-modem. Voor de Alcatel
&speedtouch; Home is dit adres standaard 10.0.0.138.Het is mogelijk om de verbinding makkelijk te initialiseren
door het volgende commando als root uit te
voeren:&prompt.root; mpd -b adslU kunt de status van de verbinding zien met het volgende
commando:&prompt.user; ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffffHet gebruik van mpd is de
aangeraden manier om met een ADSL dienst te verbinden met
&os;.Gebruik maken van pptpclientHet is ook mogelijk om &os; te gebruiken om naar een
andere PPPoA dienstenm verbinding te maken door middel van de
net/pptpclient port.Om gebruik te maken van net/pptpclient om naar een DSL dienst
verbinding te maken, installeert u de port of package en bewerkt
u /etc/ppp/ppp.conf U moet dit onder de
root gebruiker doen, om beide acties uit te
voeren. Een voorbeeld sectie van ppp.conf
is hieronder gegeven. Voor meer informatie over
ppp.conf consulteert u de &man.ppp.8;
handleiding.adsl:
set log phase chat lcp ipcp ccp tun command
set timeout 0
enable dns
set authname gebruikersnaam
set authkey wachtwoord
set ifaddr 0 0
add default HISADDRDe gebruikersnaam van uw account bij uw DSL
provider.Het wachtwoord voor uw account.Omdat u het wachtwoord van uw account in het
ppp.conf bestand in leesbare vorm moet
plaatsen, moet u ervoor zorgen dat niemand anders de inhoud
van dit bestand kan lezen. De volgende serie van commando's
zorgt ervoor dat het bestand alleen leesbaar is door de
root gebruiker. Raadpleeg de
handleidingen van &man.chmod.1; en &man.chown.8; voor verdere
informatie.&prompt.root; chown root:wheel /etc/ppp/ppp.conf
&prompt.root; chmod 600 /etc/ppp/ppp.confDit opent een tunnel voor een PPP sessie naar uw DSL router.
Ethernet DSL-modems hebben een voor geconfigureerd LAN IP
adres waarmee u verbinding maakt. In het geval van de Alcatel
&speedtouch; home is 10.0.0.138
het adres. Uw router documentatie vertelt u welk adres uw
apparaat gebruikt. Om de tunnel te openen en om een PPP sessie
op te zetten, start u het volgende commando:&prompt.root; pptp addressadslHet kan wenselijk zijn om een ampersand
(&) toe te voegen aan het einde van het
vorige commando, omdat pptp
uw prompt niet teruggeeft.Er wordt een tun virtueel tunnel
apparaat gecreeërd voor interactie tussen de
pptp en ppp
processen. Zodra u terugbent op uw prompt, of als
pptp bevestigd dat er een verbinding
is, kunt u de tunnel als volgend inzien:&prompt.user; ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00
Opened by PID 918Als het niet mogelijk is om verbinding te maken, controleert
u de configuratie van uw router, welke meestal bereikbaar is
door middel van telnet of via een
web browser. Als u nog steeds geen verbinding kunt maken moet
u de resultaten van het pptp onderzoeken
en de inhoud van het ppp log
bestand, /var/log/ppp.log voor meer hints
over wat er mis kan zijn.SatoshiAsamiOrigineel bijgedragen door GuyHelmerMet input van PieroSeriniGebruik maken van SLIPSLIPDeze sectie geldt en is alleen geldig voor &os; 7.X.Het opzetten van een SLIP-cliëntSLIPcliëntHet volgende is één manier om een &os; machine
in te stellen voor gebruik met SLIP op een statisch host netwerk.
Voor dynamische hostnaam toewijzing (uw adres veranderd elke keer
als u inbelt), heeft u waarschijnlijk een meer complexe opzet
nodig.Bepaal eerst aan welke seriële poort uw modem verbonden
is. Veel mensen gebruiken hiervoor een symbolische link zoals
/dev/modem welke
verwijst naar de echte naam van het apparaat /dev/cuadN. Dit
geeft de mogelijkheid om naam abstract te houden, voor het geval
het modem ooit verplaatst wordt naar een andere poort. Het kan
best een vervelende klus zijn wanneer er een aantal bestanden in
/etc en
.kermrc bestanden verspreid over het gehele
systeem gerepareerd moeten worden!/dev/cuad0
is COM1, cuad1 is
COM2, etc.Zorg ervoor dat u het volgende in uw kernel configuratie
bestand hebt:device slDeze is standaard opgenomen in de
GENERIC kernel, dus dat zou geen problemen
moeten opleveren tenzij u deze verwijderd heeft.Dingen die u maar eenmalig hoeft uit te voerenVoeg uw machine, de router en de naamservers toe
aan uw /etc/hosts bestand. Ons
bestand ziet er als volgend uit:127.0.0.1 localhost loghost
136.152.64.181 water.CS.Example.EDU water.CS water
136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway
128.32.136.9 ns1.Example.EDU ns1
128.32.136.12 ns2.Example.EDU ns2Zorg ervoor dat u files voor
dns in de hosts:
sectie van uw /etc/nsswitch.conf
bestand. Zonder deze parameters zouden er interessante
dingen kunnen gebeuren.Bewerk het /etc/rc.conf
bestand.Stel uw hostnaam in door de regel te bewerken die
aangeeft:hostname="myname.my.domain"De volledig gekwalificeerde internet hostnaam
moet hier geplaatst worden.standaard routeringStel de standaard router in door het aanpassen
van de volgende regel van:defaultrouter="NO"naar:defaultrouter="slip-gateway"Creeër en bestand genaamd
/etc/resolv.conf welke het volgende
bevat:domain CS.Example.EDU
nameserver 128.32.136.9
nameserver 128.32.136.12naamserverdomeinnaamZoals u kunt zien, stellen deze de naamserver hosten
in. Uiteraard is het echte domein en adres afhankelijk
van uw omgeving.Stel het wachtwoord in voor de
root en de toor
gebruikers (en elke andere gebruiker die geen wachtwoord
heeft).Herstart de machine en controleeer of deze opkomt
met de correcte hostnaam.Het opzetten van een SLIP-verbindingSLIPverbinding maken metBel in, type slip op de prompt
en voer uw machine naam en wachtwoord in. Wat is
vereist, is afhankelijk van uw omgeving. Als u gebruik
maakt van Kermit kan een
script als de volgende gebruikt worden:# kermit setup
set modem hayes
set line /dev/modem
set speed 115200
set parity none
set flow rts/cts
set terminal bytesize 8
set file type binary
# De volgende macro zal inbellen en ons inloggen.
define slip dial 643-9600, input 10 =>, if failure stop, -
output slip\x0d, input 10 Username:, if failure stop, -
output silvia\x0d, input 10 Password:, if failure stop, -
output ***\x0d, echo \x0aCONNECTED\x0aUiteraard moet u uw gebruikersnaam en wachtwoord
wijzigen zodat deze overeenkomen met die van u. Nadat
dit gedaan is kunt u slip invullen op
de Kermit prompt om verbinding
te maken.Het achterlaten van uw wachtwoord in leesbare tekst
waar dan ook op het bestandssysteem is zeker een
slecht idee. Doe dit op eigen
risico.Laat Kermit daar (het
programma kan tijdelijk uitgeschakeld worden door
Ctrlz) en type vervolgens als
root:&prompt.root; slattach -h -c -s 115200 /dev/modemAls u in staat bent om andere hosten met
ping te benaderen aan de andere kant
van de router, bent u verbonden! Als dit niet werkt kunt
u wellicht de gebruiken in plaats van
de als argument voor
slattach.Hoe de verbinding afgebroken moet wordenDoe het volgende::&prompt.root; kill -INT `cat /var/run/slattach.modem.pid`om slattach te stoppen. Houd in uw
achterhoofd dat u dit als root moet
doen. Ga hierna terug naar kermit (door
het intypen van fg als u deze tijdelijk
uitgeschakeld had) en verlaat de applicatie
(q).De &man.slattach.8; handleiding zegt dat
ifconfig sl0 down uitgevoerd moet worden
om de interface uit te schakelen, maar dit lijkt geen verschil
op te leveren. (ifconfig sl0 lijkt
hetzelfde resultaat te geven.)Soms kan het gebeuren dat het modem weigert om de carrier
los te laten. Start in dat geval simpelweg
kermit en stop deze wederom. Meestal stopt
het met de tweede poging.Problemen oplossenAls dit niet werkt, voelt u zich dan vrij om rond te vragen
op de &a.net.name; mailing lijst. De volgende dingen zijn
mensen al eens tegen aangelopen:Het niet gebruiken van de of
optie voor slattach
(Dit zou niet fataal moeten zijn, maar sommige mensen
hebben aangegeven dat het de problemen oplostte.)Het intypen van in plaats van
(het verschil is wellicht lastig te
zien met sommige fonts).Probeer ifconfig sl0 uit te voeren
om de interface status te zien. U kunt bijvoorbeeld
krijgen:&prompt.root; ifconfig sl0
sl0: flags=10<POINTOPOINT>
inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00Als u no route to host krijgt
van het &man.ping.8; commando, is er mogelijk een probleem
met uw route tabel. U kunt het
netstat -r commando uitvoeren om de
huidige routes te zien:&prompt.root; netstat -r
Routing tables
Destination Gateway Flags Refs Use IfaceMTU Rtt Netmasks:
(root node)
(root node)
Route Tree for Protocol Family inet:
(root node) =>
default inr-3.Example.EDU UG 8 224515 sl0 - -
localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438
inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - -
water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438
(root node)Het voorgaand voorbeeld komt van een relatief druk
systeem. De getallen op uw systeem zullen anders zijn
naar gelang de netwerk activiteiten.Het opzetten van een SLIP-serverSLIPserverDit document levert suggesties voor het opzetten van een
SLIP-server op een &os; systeem, welke meestal betekent het
configureren van uw systeem om automatisch verbindingen op te
zetten wanneer er wordt ingelogt met remote SLIP
cliënten.Eisen voorafTCP/IP networkingDeze sectie is vrij technisch van aard, dus achtergrond
informatie is vereist. Er wordt aangenomen dat u bekend bent
met het TCP/IP-netwerk protocol, en in dan in het bijzonder
met netwerk en node adresseringen, netwerk adres maskers,
subnetten, routes en dynamische routering protocollen
zoals RIP. Het configureren van een SLIP-dienst op een inbel
server vereist kennis van deze concepten en als u daarmee niet
bekend bent, leest u dan aub een versie van of
Craig Hunt's TCP/IP Network Administration
gepubliceerd door O'Reilly & Associates, Inc. (ISBN Number
0-937175-82-X), of Douglas Comer's boeken over het TCP/IP
protocol.modemDaarnaast wordt er vanuit gegaan dat u reeds uw modem(s)
heeft geconfigureerd en dat u de juiste systeem bestanden
heeft aangepast zodat er logins mogelijk zijn door uw modem(s)
heen. Als u dat nog niet heeft gedaan, zie dan voor details over het opzetten van
inbel diensten. Wellicht wilt u ook de handleiding bekijken
voor &man.sio.4; voor meer informatie over de seriële
port device driver en de &man.ttys.5;, &man.gettytab.5;,
&man.getty.8;, & &man.init.8; handleidingen voor
informatie die relevant zijn voor het configureren van het
systeem zodat logins mogelijk worden op modems, en wellicht
&man.stty.1; voor informatie over het instellen van de
seriële poort (zoals clocal voor
direct verbonden seriële interfaces).Snel overzichtIn een typische configuratie, werkt het gebruik van &os;
als een SLIP-server als volgend: een SLIP-gebruiker belt in
op uw &os; SLIP-server systeem en logt in met een speciaal
SLIP-login ID dat gebruik maakt van
/usr/sbin/sliplogin. Het
sliplogin programma leest door het
/etc/sliphome/slip.hosts bestand om een
corresponderende regel te vinden voor de speciale gebruiker en
als deze een match vindt verbind het de seriële lijn met
een beschikbare SLIP-interface waarna het shellscript
/etc/sliphome/slip.login wordt uitgevoerd
om de SLIP-interface te configureren.Een voorbeeld van SLIP-server loginBijvoorbeeld, als een SLIP-user-ID
Shelmergis, kan
Shelmerg's regel in
/etc/master.passwd er als volgt
uitzien:Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliploginWanneer Shelmerg inlogt, zoekt het
sliplogin programma in het
/etc/sliphome/slip.hosts bestand voor
een regel dat een corresponderende user ID heeft, er kan
bijvoorbeeld een regel staan in
/etc/sliphome/slip.hosts dat eruit
ziet als volgend:Shelmerg dc-slip sl-helmer 0xfffffc00 autocompsliplogin zal de corresponderende
regel vinden en de seriële lijn koppelen aan de eerste
beschikbare SLIP-interface, waarna
/etc/sliphome/slip.login wordt
uitgevoerd zoals volgend:/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocompAls alles goed gaat, zal
/etc/sliphome/slip.login een
ifconfig commando uitvoeren voor de SLIP
interface waaraan sliplogin zichzelf
koppelt (SLIP-interface 0 zoals in bovenstaand voorbeeld
was de eerste parameter in de lijst welke gegeven is aan
slip.login) om een lokaal IP-adres
in te stellen (dc-slip), een remote IP
adres (sl-helmer), een netwerk master voor
de SLIP-interface
(0xfffffc00), en enkele
additionele vlaggen (autocomp). Als
er iets misgaat zal sliplogin meestal
voldoende goede informatie loggen via de
syslogd daemon faciliteiten,
welke meestal logt naar
/var/log/messages (zie de handleidingen
van &man.syslogd.8; en &man.syslog.conf.5; en controleer het
/etc/syslog.conf bestand om te zien wat
syslogd logt en waar dit naartoe
gelogt wordt).Kernel-configuratiekernelconfigurationSLIP&os;'s standaard kernel (GENERIC)
heeft reeds ondersteuning voor SLIP (&man.sl.4;), in het
geval van een custom kernel moet de volgende regel worden
toegevoegd aan de kernel configuratie:device slStandaard zal uw &os; machine geen pakketten doorsturen.
Als u wilt dat uw &os; SLIP-server zich gedraagt als router
zult u het bestand /etc/rc.conf moeten
bewerken en de instelling van de
gateway_enable variabele moeten aanpassen
naar . Dit zorgt ervoor dat de machine
na een herstart zich zal blijven gedragen als router.Om de instellingen meteen actief te maken kunt u het
volgende commando als root
uitvoeren:&prompt.root; service routing startRaadpleeg aub over
het configureren van de &os; kernel voor meer hulp over het
herconfigureren van uw kernel.Sliplogin-configuratieZoals eerder vermeld, zijn er drie bestanden in de map
/etc/sliphome die
onderdeel zijn van de configuratie voor
/usr/sbin/sliplogin (zie
&man.sliplogin.8; voor de actuele handleiding voor
sliplogin): slip.hosts,
welke de SLIP-gebruikers definieert en de gekoppelde IP
adressen; slip.login, welke meestal de
SLIP-interface configureert en (optioneel)
slip.logout, welke de effecten van
slip.login ongedaan maakt wanneer de
seriële verbinding verbroken wordt.slip.hosts configuratie/etc/sliphome/slip.hosts bevat
regels welke minstens vier onderdelen heeft die
gescheiden worden door een spatie:SLIP-gebruikers login IDLokale adres (lokaal voor de SLIP-server) van de
SLIP-linkRemote adres van de SLIP-linkNetwerk maskerDe lokale en remote adressen mogen host namen zijn
(Welke naar IP-adressen vertaald kunnen worden door
/etc/hosts of door de
DNS diensten, afhankelijk van uw
specificaties in het /etc/nsswitch.conf,
het netwerk masker mag een naam zijn dat vertaald kan worden
door een zoek opdracht in /etc/networks.
Op een voorbeeld systeem ziet het
/etc/sliphome/slip.hosts bestand er als
volgt uit:#
# login local-addr remote-addr mask opt1 opt2
# (normal,compress,noicmp)
#
Shelmerg dc-slip sl-helmerg 0xfffffc00 autocompAan het einde van deze regel staan één of
meerdere opties: — geen compressie
van de header — comprimeer
headers — comprimeer de
headers als de remote kant dit accepteert — schakelt ICMP
pakketten uit (dus alle ping pakketten
worden geweigerd in plaats van dat deze bandbreedte
verbruiken)SLIPTCP/IP networkingUw keuze van een lokaal en remote adres voor uw SLIP
verbindingen is afhankelijk van of u een speciaal toegewezen
TCP/IP-subnet gebruikt, of dat u gebruik gaat maken van
proxy ARP op uw SLIP-server (het is geen
echte proxy ARP, maar het is de terminologie
welke in deze sectie gebruikt wordt om het te beschrijven).
Als u niet zeker bent welke methode u moet kiezen, of hoe u
IP-adressen moet toewijzen, raadpleegt u dan de TCP/IP
boeken die vermeld worden in de SLIP vereisten
() en/of vraag uw IP-netwerk
manager om hulp.Als u gebruik gaat maken van een separaat subnet voor
uw SLIP-cliënten, moet u een subnet alloceren uit de
voor u toegewezen IP-ruimte, en elke SLIP-cliënt een
IP-adres geven uit dat subnet. Daarna moet u waarschijnlijk
een statische route configureren voor uw SLIP-subnet via
uw SLIP-server naar de dichtsbijzijnde IP-router.EthernetIn het andere geval moet u gebruik maken van de
proxy ARP methode, u moet elke SLIP
cliënt een IP-adres geven uit het Ethernet-subnet van
uw SLIP-server, daarnaast moet u het
/etc/sliphome/slip.login en het
/etc/sliphome/slip.logout script
aanpassen om gebruik te maken van &man.arp.8; om de
proxy ARP regels te beheren in de SLIP
servers ARP tabel.slip.login configuratieEen typisch /etc/sliphome/slip.login
bestand ziet er als volgend uit:#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generiek loginbestand voor een SLIP-lijn. sliplogin voert deze uit
# met de volgende parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6Dit slip.login bestand start
alleen het ifconfig commando voor de
betreffende SLIP-interace met het lokale en remote adres
met het netwerkmasker van de SLIP-interface.Als u besloten heeft om gebruik te maken van de
proxy ARP methode (in plaats van het
gebruiken van een apart subnet voor uw SLIP-cliënten)
moet u het /etc/sliphome/slip.login
bestand aanpassen zodat deze er ongeveer als volgend
uitziet:#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generiek loginbestand voor een SLIP-lijn. sliplogin voert deze uit
# met de volgende parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
# Beantwoord ARP Verzoeken voor de SLIP-cliënt met ons Ethernet
# adres
/usr/sbin/arp -s $5 00:11:22:33:44:55 pubDe extra regel in het slip.login
bestand,
arp -s $5 00:11:22:33:44:55 pub,
creeërt een ARP-regel in de ARP-tabel van de SLIP-server.
Deze ARP regel zorgt ervoor dat de SLIP-server antwoord
geeft met het Ethernet MAC adres van de SLIP-server wanneer
een andere IP-node op het Ethernet vraagt om te communiceren
met het IP-adres van de SLIP-cliënt.EthernetMAC addressWanneer u gebruik maakt van het voorbeeld hierboven,
wees u er dan zeker van dat u het Ethernet MAC adres
(00:11:22:33:44:55) veranderd
in het MAC adres van uw systeem's Ethernet kaart, anders
werkt uw proxy ARP zeker niet! U kunt het
Ethernet MAC adres van uw SLIP-server achterhalen door het
bekijken van het resultaat van netstat -i;
de tweede regel met resultaten moet er ongeveer als volgend
uitzien:ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116Dit geeft aan dat het specifieke Ethernet MAC adres van
het systeem is 00:02:c1:28:5f:4a
— de punten in het Ethernet MAC adres welke gegeven
wordt door netstat -i moet worden veranderd
in dubbele punten (:) en voorloop nullen
moeten worden toegevoegd aan elk enkel hexadecimaal getal
om het adres te converteren naar de vorm die &man.arp.8;
wenst; zie de handleiding van &man.arp.8; voor een compleet
overzicht van het gebruik hiervan.Wanneer u
/etc/sliphome/slip.login en
/etc/sliphome/slip.logout, aanmaakt
moet het uitvoerbare bitje gezet zijn
(bijvoorbeeld chmod 755
/etc/sliphome/slip.login /etc/sliphome/slip.logout)
anders is sliplogin niet in staat om
deze uit te voeren.slip.logout configuratie/etc/sliphome/slip.logout is niet
strict noodzakelijk (tenzij u proxy ARP
implementeert), maar als beslist om deze aan te maken is
dit een voorbeeld basis slip.logout
script:#!/bin/sh -
#
# slip.logout
#
# uitlogbestand voor een SLIP-regel. sliplogin voert deze uit met de
# parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 downAls u gebruik maakt van proxy ARP wilt u
waarschijnlijk dat het
/etc/sliphome/slip.logout bestand de
ARP regel weghaalt voor de SLIP-cliënt:#!/bin/sh -
#
# @(#)slip.logout
#
# uitlogbestand voor een SLIP-regel. sliplogin voert deze uit met de
# parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
# Stop met het beantwoorden van ARP verzoeken voor de SLIP-cliënt
/usr/sbin/arp -d $5Het arp -d $5 verwijderd de ARP
regel, die proxy ARP heeft toegevoegd toen
de SLIP-cliënt inlogde.Het is belangrijk om dit te herhalen: zorg ervoor
/etc/sliphome/slip.logout het
uitvoerbare bitje heeft gezet nadat deze gecreeërd
is (b.v.
chmod 755 /etc/sliphome/slip.logout).Routering-overwegingenSLIProuteringAls u geen gebruik maakt van de proxy ARP
voor het routeren van pakketten tussen uw SLIP-cliënten
en de rest van uw netwerk (en wellicht het internet), moeten
er misschien een aantal statische routeringen naar de best
bereikbare standaard router ingesteld worden om uw SLIP
cliënts te routeren via uw SLIP0server.Statische routeringenstatische routeringenHet toevoegen van statische routeringen naar de dichts
bijzijnde router kan problematisch zijn (of zelfs onmogelijk
als u niet de bevoegdheden heft om dit te doen). Als u een
netwerk heeft met meerdere routers binnen uw organisatie
kan het zijn dat sommige routers, zoals die van Cisco en
Proteon , niet alleen geconfigureerd moeten worden met de
statische route naar het SLIP-subnet, maar deze moeten dan
ook geconfigureerd worden over welke statische routes aan
andere routers verteld moeten worden. Enige expertise en
fine tunen kan nodig zijn om statische routing te laten
werken.
diff --git a/nl_NL.ISO8859-1/books/handbook/printing/chapter.xml b/nl_NL.ISO8859-1/books/handbook/printing/chapter.xml
index 8fff06eb01..41d3eeac89 100644
--- a/nl_NL.ISO8859-1/books/handbook/printing/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/printing/chapter.xml
@@ -1,5405 +1,5383 @@
SeanKellyBijdrage van JimMockGeherstructureerd en bijgewerkt door LodewijkKoopmanVertaald door AfdrukkenOverzichtwachtrijsysteem LPDafdrukken&os; kan gebruikt worden om op een scala aan printers af te
drukken, van de oudste matrixprinter tot de nieuwste laserprinters
en alles er tussenin, waardoor op hoge kwaliteit afgedrukt kan
worden vanuit de gebruikte programma's.&os; kan ook ingesteld worden als printserver in een netwerk.
Dan kan &os; afdrukopdrachten ontvangen van uiteenlopende
computers, waaronder &os; computers, &windows; en &macos; hosts.
&os; zorgt ervoor dat er één afdrukopdracht per keer
wordt afgedrukt, houdt statistieken bij van gebruikers en
computers die de meeste afdrukken maken, drukt
voorbladen af, zodat duidelijk is van wie de afdruk
is en nog veel meer.Na het lezen van dit hoofdstuk weet de lezer:Hoe het &os; afdrukwachtrijsysteem moet worden
ingesteld;Hoe afdrukfilters kunnen worden geïnstalleerd, om
bepaalde afdrukopdrachten op een andere manier af te handelen,
zoals het omzetten van documenten naar formaten die een
printer begrijpt;Hoe voorbladen kunnen worden afgedrukt;Hoe er op printers die op andere computers zijn
aangesloten kan worden afgedrukt;Hoe er op printers die direct op het netwerk zijn
aangesloten kan worden afgedrukt;Hoe afdrukbeperkingen kunnen worden opgelegd, zoals het
beperken van de grootte van de afdrukopdracht, en bepaalde
gebruikers verbieden af te drukken;Hoe afdrukstatistieken kunnen worden bijgehouden en het
printergebruik in de gaten kan worden gehouden;Hoe problemen met afdrukken kunnen worden opgelost.Aangeraden voorkennis:Hoe een nieuwe kernel wordt ingesteld, gebouwd en
geïnstalleerd ().InleidingOm printers onder &os; te kunnen gebruiken moeten ze kunnen
werken met het Berkeley lijnafdrukwachtrijsysteem, ook wel bekend
als het wachtrijsysteem LPD of
simpelweg LPD. Dit is het standaard
afdruksysteem onder &os;. Dit hoofdstuk introduceert
LPD en begeleidt bij het
instellen.Als de gebruiker al bekend is met
LPD of een ander
afdrukwachtrijsysteem, dan kan verder worden lezen vanaf Standaardinstallatie.LPD regelt alles met betrekking
tot de printer van een host. Het is verantwoordelijk voor een
aantal zaken:Het regelt de toegang tot aangesloten printers en
printers die op andere hosts op het netwerk zijn
aangesloten;afdrukopdrachtenHet geeft gebruikers de mogelijkheid bestanden aan te
bieden die afgedrukt moeten worden; deze aangeboden bestanden
worden afdrukopdrachten genoemd;Het voorkomt dat gebruikers tegelijkertijd een printer
benaderen door een wachtrij bij te
houden voor elke printer;Het kan voorbladen afdrukken (in het
Engels ook wel bekend als banner, of
burst pagina's) zodat gebruikers hun
afdruk tussen andere afdrukken makkelijk terug kunnen
vinden;Het handelt de communicatie af voor printers die op een
seriële poort zijn aangesloten;Het kan afdrukopdrachten over een netwerk versturen naar
een LPD wachtrij op een andere
host;Het kan speciale filters aanroepen die afdrukopdrachten
converteren voor verschillende printertalen of
afdrukmogelijkheden;Het houdt statistieken bij van het printergebruik.Middels een instellingenbestand
(/etc/printcap) en door speciale filters
beschikbaar te stellen, kan het LPD
systeem alle, of enkele van bovenstaande taken uitvoeren
op een grote verscheidenheid aan afdrukhardware.Waarom het wachtrijsysteem gebruikt zou moeten
worden
- Als er maar één gebruiker is op een systeem,
- staat terecht ter discussie waarom het wachtrijsysteem nodig is
- als toegangscontrole, voorbladen en printerstatistieken niet
- nodig zijn. Hoewel directe toegang tot de printer is in te
- stellen, is het raadzaam het wachtrijsysteem toch te
- gebruiken, omdat:
+ Het wachtrijsysteem biedt nog steeds voordelen op een systeem met
+ een enkele gebruiker en dient gebruikt te worden omdat:LPD afdrukopdrachten in de
achtergrond afhandelt. Dan is het niet nodig te wachten
tot de gegevens naar de printer zijn verzonden;&tex;LPD op eenvoudige wijze een
afdrukopdracht door een filter kan afdrukken om kopteksten
met datum/tijd toe te voegen of een speciaal
bestandsformaat (zoals een &tex; DVI-bestand) om te zetten
naar een formaat dat de printer begrijpt. Deze handelingen
hoeven dan niet handmatig uitgevoerd te worden;Veel gratis en commerciële software met een
afdrukfunctie verwacht dat er een wachtrijsysteem aanwezig
is op een systeem om afdrukopdrachten naar te sturen. Door
een wachtrijsysteem op te zetten, wordt toekomstig te
installeren of reeds geïstalleerde software op
eenvoudige wijze ondersteund.Standaardinstallatie
-
- Vanaf &os; 8.0; zijn de apparaatknooppunten
- voor seriële poorten hernoemd van
- /dev/ttydN naar
- /dev/ttyuN.
- &os; 7.X gebruikers moeten de volgende documentatie aanpassen
- naar aanleiding van deze wijzigingen.
-
-
Om printers met het LPD
wachtrijsysteem te kunnen gebruiken, dienen zowel de
printerhardware als de LPD software
geïnstalleerd te worden. Dit document beschrijft deze
installatie in twee stappen:In het onderdeel Eenvoudige
printerinstallatie staat hoe een printer moet worden
aangesloten, hoe LPD er mee kan
communiceren en hoe tekstbestanden afgedrukt kunnen
worden.In Geavanceerde
printerinstallatie staat beschreven hoe een scala
aan bestandsformaten afgedrukt kan worden, hoe voorbladen
kunnen worden afgedrukt en hoe statistieken van de printer
kunnen worden bijgehouden.Eenvoudige printerinstallatieNu wordt toegelicht hoe de printerhardware en de
LPD software ingesteld moeten worden
om een printer te kunnen gebruiken. Het behandelt de
basis:Hardware-instellingen
geeft een aantal aanwijzingen voor het aansluiten van een
printer op een poort van een computer.Software-instellingen
toont hoe het instellingenbestand
(/etc/printcap) voor het
LPD-systeem moet worden
opgezet.Hoe een printer geïnstalleerd moet worden die via een
netwerkprotocol gegevens ontvangt, in plaats van een
seriële of parallelle poort, staat in Printers met
netwerkinterfaces.Hoewel dit onderdeel Eenvoudige
printerinstallatie heet, is het redelijk complex. De
printer met de computer en het
LPD-systeem laten samenwerken is het
moeilijkste. De geavanceerde opties, zoals voorbladen en
statistieken, zijn relatief makkelijk als de printer eenmaal
werkt.Hardware-instellingenHier worden de verschillende manieren waarop een printer
op een computer kan worden aangesloten beschreven. Het
bespreekt de soorten poorten en kabels en de
kernelinstellingen die nodig kunnen zijn om &os; met een
printer te laten communiceren.Als een printer al is aangesloten en succesvol is
gebruikt onder een ander besturingssysteem, dan kan
waarschijnlijk verder gelezen worden in Software-instellingen.Poorten en kabelsDe printers die tegenwoordig voor PC's verkocht worden
hebben eigenlijk altijd een van de volgende drie
poorten:printersserieelSeriële poort, ook
bekend als RS-232- of COM-poorten, gebruiken een
seriële poort op een computer om gegevens naar een
printer te sturen. Seriële poorten zijn heel
gebruikelijk in de computerindustrie en kabels zijn
eenvoudig verkrijgbaar en makkelijk te maken.
Seriële poorten hebben soms speciale kabels
nodig en vereisen soms het instellen van ingewikkelde
communicatieparameters. De meeste seriële poorten
hebben een maximale doorvoersnelheid van
115.200 bps waardoor het afdrukken van grote
grafische afdrukopdrachten erg onpraktisch
wordt.printersparallelParallelle poorten
gebruiken een parallelle poort op een computer om
gegevens naar een printer te sturen. Parallelle
poorten zijn gebruikelijk in de PC-markt en zijn
sneller dan RS-232 serieel. Kabels zijn goed
verkrijgbaar, maar moeilijker handmatig te
vervaardigen. Meestal zijn er geen
communicatieparameters bij parallelle poorten, wat het
instellen erg eenvoudig maakt.centronicsparallelle printersParallelle poorten staan ook wel bekend als
Centronics poorten, genoemd naar het
soort aansluiting op de printer.printersUSBUSB poorten, genoemd naar de Universal Serial
Bus, kunnen zelfs op nog hogere snelheid werken dan
parallelle of RS-232 seriële poorten. De
kabels zijn eenvoudig en goedkoop. USB is voor
afdrukken superieur aan RS-232 Serieel en Parallel,
maar wordt op &unix;-systemen niet altijd goed
ondersteund. Een van de manieren om dit te omzeilen is
de aanschaf van een printer met zowel een USB als een
parallelle poort, zoals veel printers die
hebben.Over het algemeen kunnen parallelle poorten
meestal in één richting communiceren (van
computer naar printer), terwijl seriële en USB
poorten in twee richtingen kunnen communiceren.
Nieuwere parallelle poorten (EPP en ECP) en printers kunnen
onder &os; in beide richtingen communiceren, mits een
IEEE-1284 gekeurde kabel wordt gebruikt.&postscript;Tweewegcommunicatie met een printer over een
parallelle poort verloopt meestal op een van de volgende
twee manieren. De eerste manier is door gebruik te maken
van een op maat gemaakt stuurprogramma voor &os; dat de
taal spreekt die door de printer wordt gebruikt. Dit geldt
meestal voor inkjet printers en er kan dan gebruikt gemaakt
worden van rapportagemogelijkheden over bijvoorbeeld
inktniveaus en andere statusinformatie. De tweede methode
wordt gebruikt als een printer &postscript;
ondersteunt.&postscript;-taken zijn eigenlijk programma's die
naar de printer worden gestuurd. Het hoeft zelfs niet in
een afdruk te resulteren; het resultaat van de opdracht kan
direct weer naar de computer worden gestuurd. &postscript;
gebruikt ook tweewegcommunicatie om een computer op de
hoogte te stellen van opgetreden fouten, zoals fouten in
het &postscript;-programma of vastgelopen papier.
Gebruikers kunnen dit soort informatie handig vinden. De
beste manier om bij een &postscript;-printer effectief bij
te houden wat het printergebruik is, vraagt om
tweewegcommunicatie: de printer wordt gevraagd om het
totaal aantal afgedrukt pagina's, de afdrukopdracht wordt
verzonden en vervolgens wordt nogmaals om het totaal aantal
afgedrukte pagina's gevraagd. Het verschil van deze
getallen geeft het aantal afgedrukte pagina's van de
afdrukopdracht van de betreffende gebruiker.Parallelle poortenOm een printer met een parallelle poort aan te
sluiten, moet een Centronics kabel de printer met de
computer verbinden. De instructies die geleverd zijn bij
de printer, de computer of beide, moeten voldoende zijn
om dit te verduidelijken.Onthoud op welke parallelle poort de printer is
aangesloten. De eerste parallelle poort heet onder &os;
ppc0, de tweede
ppc1, enzovoort. De
benaming voor de printer gaat analoog: /dev/lpt0 voor de printer op
de eerste parallelle poort enzovoort.Seriële poortenGebruik de juiste seriële kabel om een printer met
een seriële poort op een computer aan te sluiten.
De instructies die geleverd zijn bij de printer, de
computer of beide, moeten voldoende zijn om dit te
verduidelijken.Als onduidelijk is wat de juiste seriële
kabel is, kan een van onderstaande opties geprobeerd
worden:Een modemkabel verbindt elke
pin van de stekker aan het ene eind direct met de
corresponderende pin van de stekker aan het andere
eind. Dit type kabel heet ook wel een
DTE-naar-DCE-kabel.null-modem kabelEen null-modem kabel verbindt
enkele pinnetjes direct, verwisselt andere
(bijvoorbeeld van verstuur gegevens naar ontvang
gegevens) en sluit sommige draden kort in de stekker.
Dit type kabel heet ook wel een
DTE-to-DTE-kabel.Een
seriële printerkabel, nodig
bij sommige ongebruikelijke printers, is als een
null-modem kabel, maar stuurt sommige signalen naar hun
tegenhangers in plaats van ze intern kort te
sluiten.baud ratepariteitflow-control protocolHet is ook nodig de communicatieparameters voor de
printer in te stellen, meestal via het bedieningspaneel of
middels DIP-schakelaars op de printer. Selecteer de
hoogste bps (bits per seconde, soms
baud) die zowel door de computer als
de printer wordt ondersteund. Kies 7 of 8 data bits.
Geen, even of oneven pariteit en 1 of 2 stop bits.
Selecteer ook het flow-control protocol: ofwel geen, ofwel
XON/XOFF (ook bekend als in-band of
software) flow-control. Onthoud deze
instellingen voor de hier op volgende
software-instellingen.Software-instellingenNu wordt beschreven welke software-instellingen nodig
zijn om onder &os; af te drukken met behulp van het
wachtrijsysteem LPD.Een overzicht van de te doorlopen stappen:Maak, indien nodig, de kernel geschikt voor de poort
die door de printer wordt gebruikt. In Kernelinstellingen is
te lezen hoe dit gedaan kan worden.Stel de communicatievorm voor de parallelle poort in,
als gebruik wordt gemaakt van een parallelle printer. In
Communicatietype
instellen voor een parallelle poort staan de
details.Test of het besturingssysteem gegevens naar de
printer kan sturen. In Printercommunicatie
controleren staat een aantal suggesties.Stel LPD in voor de
printer door /etc/printcap aan te
passen. Dat wordt later in het hoofdstuk
beschreven.KernelinstellingenHet besturingssysteem is gecompileerd om met een
beperkte verzameling apparaten te kunnen werken. De
seriële en parallelle poorten zijn onderdeel van
deze verzameling. Daarom kan het nodig zijn om
ondersteuning voor een extra seriële of parallelle
poort toe te voegen als een kernel hier nog niet voor is
ingesteld.Om te achterhalen of de huidige kernel een
seriële poort ondersteunt:&prompt.root; grep sioN/var/run/dmesg.bootHier is N het aantal
seriële poorten, beginnende bij nul. Als de uitvoer
op het volgende lijkt, dan wordt de poort door de kernel
ondersteund:sio2 at port 0x3e8-0x3ef irq 5 on isa
sio2: type 16550AOm te achterhalen of de kernel een parallelle poort
ondersteunt:&prompt.root; grep ppcN/var/run/dmesg.bootHier is N het aantal
parallelle poorten beginnende bij nul. Als de uitvoer er
ongeveer als volgt uit ziet, dan wordt de poort door de
kernel ondersteund:ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/8 bytes thresholdHet kan nodig zijn een kernel aan te passen om het
besturingssysteem in staat te stellen een parallelle of
seriële poort die voor een printer wordt gebruikt te
herkennen en te gebruiken.In het onderdeel over kernelinstellingen staat meer
informatie om ondersteuning voor een seriële poort toe
te voegen. Lees de betreffende en de
volgende sectie om ondersteuning voor een parallelle poort
toe te voegen.Communicatietype instellen voor een parallelle poortWanneer een parallelle poort wordt gebruikt, kan
worden aangegeven of &os; voor de printer
interrupt-gestuurde of polled communicatie
moet gebruiken. Het generieke printerapparaatstuurprogramma
(&man.lpt.4;) onder &os; gebruikt het systeem &man.ppbus.4;.
Dit bestuurt de chipset van de poort met het stuurprogramma
&man.ppc.4;.De interrupt-gestuurde
methode is standaard in de GENERIC kernel. In dit
geval gebruikt het besturingssysteem een IRQ om te
bepalen of de printer klaar is om gegevens te ontvangen.Bij de polled methode vraagt
het besturingssysteem met vaste intervallen aan de
printer of deze klaar is om gegevens te ontvangen. Als
de printer antwoordt met klaar, stuurt
de kernel meer gegevens.De interrupt-gestuurde methode is meestal iets sneller,
maar gebruikt een kostbaar IRQ-nummer. Van sommige HP
printers wordt beweerd dat ze niet goed werken in
interruptmodus, schijnbaar door een (nog niet begrepen)
timing-probleem. Deze printers moeten gebruik maken van de
polled methode. Gebruik de methode die werkt. Sommige
printers werken met beide methodes, maar zijn tergend
langzaam in de interrupt modus.Het communicatietype kan op twee manieren worden
ingesteld: door de kernel in te stellen of door gebruik te
maken van &man.lptcontrol.8;.Het communicatietype instellen door de kernel
aan te passen:Pas het kernelinstellingenbestand aan. Zoek naar
een ppc0 ingang. Gebruik
ppc1 voor het opzetten van een
tweede parallelle poort. Gebruik
ppc2 voor de derde poort,
enzovoort.Als u gebruik wilt maken van de interrupt
gestuurde modus, bewerk dan de regel
hieronder:hint.ppc.0.irq="N"Het kernelinstellingenbestand moet ook het
stuurprogramma &man.ppc.4; bevatten:device ppcOm gebruik te maken van polled modus verwijder
dan het volgende regel uit
/boot/device.hints:hint.ppc.0.irq="N"In sommige gevallen is het onder &os; niet
voldoende om een poort in polled modus te zetten.
In veel gevallen komt dat door het stuurprogramma
&man.acpi.4;. Dit is in staat om apparaten te
testen en aan te sluiten en kan zodoende het
communicatietype van de printer wijzigen. Raadpleeg
de instellingen voor &man.acpi.4; om dit probleem te
verhelpen.Sla het bestand op. Maak en installeer de nieuwe
kernel en herstart de computer. In De &os;-kernel instellen
staan meer details.Communicatietype instellen met
&man.lptcontrol.8;:Typ:&prompt.root; lptcontrol /dev/lptNom lptN op
interrupt-gestuurde modus in te stellen.Typ:&prompt.root; lptcontrol /dev/lptNom lptN op
polled modus in te stellen.&prompt.root; lptcontrol -p -d /dev/lptNZet deze commando's in het bestand
/etc/rc.local zodat het
communicatietype juist wordt ingesteld bij het opstarten.
In &man.lptcontrol.8; staat meer informatie.Printercommunicatie controlerenVoor het instellen van het wachtrijsysteem, is het
verstandig te controleren of het besturingssysteem gegevens
naar een printer kan versturen. Het is een stuk
makkelijker om problemen met printercommunicatie en het
wachtrijsysteem apart op te lossen.De printer wordt getest door er tekst naar toe te
sturen. Voor printers die direct tekens kunnen afdrukken
is het programma &man.lptest.1; handig: het genereert alle
96 afdrukbare ASCII-tekens op 96 regels.&postscript;Voor &postscript; (of andere op taal gebaseerde)
printers, is een meer geavanceerde test nodig. Een
eenvoudig &postscript;-programma zoals het volgende
volstaat:%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Werkt dit?) show
showpageBovenstaande &postscript;-code kan in een bestand
worden opgeslagen en in de voorbeelden in de volgende
paragrafen gebruikt worden.PCLAls in dit document wordt gesproken over een
printertaal, wordt uitgegaan van een taal als
&postscript; en niet PCL van HP. Hoewel PCL zeer
functioneel is, kan het direct platte tekst afdrukken
door gebruik te maken van escape-tekens. &postscript; kan
niet direct platte tekst afdrukken. Voor dat soort
printertalen zijn speciale aanpassingen nodig.Parallelle printer controlerenprintersparallelIn deze sectie wordt beschreven hoe te controleren of
&os; kan communiceren met een printer die op een
parallelle poort is aangesloten.Voer de volgende stappen uit om een printer
op een parallelle poort te testen:&man.su.1; naar root.Stuur gegevens naar de printer.Gebruik &man.lptest.1; als de printer platte
tekst af kan drukken:&prompt.root; lptest > /dev/lptNHier is N het
nummer van de parallelle poort, beginnende bij
nul.Als de printer &postscript; of een andere
printertaal begrijpt, stuur dan een klein
programma naar de printer:&prompt.root; cat > /dev/lptNGeef het programma regel voor regel
heel nauwkeurig in. Een
regel kan niet worden gewijzigd als er op
RETURN of
ENTER is gedrukt. Geef na het
afronden van de invoer voor het programma het
einde-van-invoer-teken. Dit is meestal
CONTROL+D.Het programma kan ook in een bestand worden
opgeslagen:&prompt.root; cat bestand > /dev/lptNHier is bestand de
naam van het bestand waarin het programma is
opgeslagen dat naar een printer gestuurd kan
worden.Nu moet er iets worden afgedrukt. Tekst die er niet
goed uitziet is geen probleem. Dit wordt later
gerepareerd.Seriële printer controlerenprintersserieelIn deze sectie wordt beschreven hoe te controleren of
&os; kan communiceren met een printer die op een
seriële poort is aangesloten.Voer de volgende stappen uit om een printer
op de seriële poort te testen:&man.su.1; naar root.Voeg de volgende regel toe aan
/etc/remote:printer:dv=/dev/poort:br#bps-snelheid:pa=pariteitbits-per-secondeseriële poortpariteitHier is poort de
apparaatingave voor de seriële poort
(ttyu0, ttyu1,
enzovoort), bps-snelheid
is het aantal bits per seconde waarop de printer
communiceert en pariteit
is de pariteit die door de printer wordt vereist
(even, odd,
none of zero).Hier volgt een voorbeeldregel voor een printer
verbonden met een seriële lijn op de derde
seriële poort op 19200 bps, zonder
pariteit:printer:dv=/dev/ttyu2:br#19200:pa=noneMaak verbinding met de printer met &man.tip.1;:&prompt.root; tip printerAls dit niet werkt, pas dan
/etc/remote opnieuw aan en
probeer gebruik te maken van /dev/cuaaN
in plaats van /dev/ttyuN.Stuur gegevens naar de printer.Gebruik &man.lptest.1; als de printer platte
tekst af kan drukken:&prompt.user; $lptestAls de printer &postscript; of een andere
printertaal begrijpt, stuur dan een klein
programma naar de printer. Geef het programma
regel voor regel heel
nauwkeurig in. Backspace of andere
speciale toetsen kunnen een speciale betekenis
hebben voor de printer. Het kan ook nodig zijn
een speciaal einde-van-invoer-teken te geven
zodat de printer weet dat het gehele programma
ontvangen is. Druk voor &postscript;-printers
CONTROL+D.Het programma kan ook in een bestand worden
opgeslagen:&prompt.user; >bestandHier is bestand de
naam van het bestand waarin het programma is
opgeslagen. Nadat &man.tip.1; het bestand heeft
verstuurd kan het juiste einde-van-invoer-teken
ingegeven worden.Nu moet er iets worden afgedrukt. Tekst die er niet
goed uitziet is geen probleem. Dit wordt later
gerepareerd.De wachtrij aanzetten:
/etc/printcapOp dit punt moet de printer zijn aangesloten, de kernel
ingesteld zijn om met de printer te communiceren (indien
nodig) en is het mogelijk eenvoudige gegevens naar de printer
te sturen. Nu kan LPD ingesteld
worden zodat de toegang tot de printer wordt geregeld.LPD wordt ingesteld door het
bestand /etc/printcap aan te passen.
Het wachtrijsysteem LPD leest
dit bestand iedere keer dat het systeem wordt aangeroepen
zodat wijzigingen direct van toepassing zijn.printersmogelijkhedenDe opmaak van het bestand &man.printcap.5; is voor de
hand liggend. Met een willekeurige tekstverwerker kunnen
wijzigen in /etc/printcap aangebracht
worden. De opmaak is identiek aan die van andere bestanden
die voor dergelijke instellingen worden gebruik, zoals
/usr/share/misc/termcap en
/etc/remote. In &man.cgetent.3; staat
een uitgebreid overzicht van dit formaat.De vereenvoudigde instellingen bestaan uit de volgende
stappen:Kies een naam (en een paar handige aliassen) voor de
printer en voeg ze toe aan
/etc/printcap. In Printernaamgeving
staat meer informatie over het toekennen van een naam aan
een printer.voorbladenHet afdrukken van voorbladen (standaard) kan uitgezet
worden met de optie sh. In Voorbladen
onderdrukken staat meer informatie.Maak een wachtrijmap aan en specificeer de locatie
door middel van de optie sd. In
Wachtrijmap
aanmaken staat meer informatie.Bepaal welke ingave in /dev voor de printer wordt
gebruikt en geef dit in /etc/printcap
aan door gebruik te maken van de optie
lp. In Printerapparaat
identificeren staat meer informatie. Als de
printer is aangesloten op een seriële poort moeten
de communicatieparameters worden ingesteld met de optie
ms#. Dit wordt beschreven in Communicatieparameters
voor het wachtrijsysteem instellen.Installeer een filter voor platte tekst. In Tekstfilter
installeren staan details.Test de instellingen door iets met &man.lpr.1; af te
drukken. Details staan in Printer uitproberen en
Problemen
oplossen.Op taal gebaseerde printers, zoals
&postscript;-printers, kunnen niet direct platte tekst
afdrukken. De vereenvoudigde instellingen, zoals hierboven
beschreven en hieronder verder beschreven, gaan er van uit
dat alleen bestanden naar een printer worden gestuurd die
de printer begrijpt.Gebruikers verwachten vaak dat ze platte tekst naar
printers op een systeem kunnen sturen. Programma's die
LPD gebruiken om af te drukken
gaan hier ook vaak van uit. Als een dergelijke printer wordt
geïnstalleerd en het moet mogelijk zijn zowel
afdrukopdrachten in de printertaal als in platte tekst naar
een printer te sturen, dan is het zeer aan te raden een extra
stap in deze vereenvoudigde opzet in te voegen: installeer
een conversieprogramma dat automatisch platte tekst omzet in
&postscript; (of een andere printertaal). In Platte tekst
op &postscript;-printers afdrukken staat hoe dit in
zijn werk gaat.PrinternaamgevingDe eerste (makkelijke) stap is het kiezen van een naam
voor een printer. Het maakt niet uit of een naam
functioneel of grappig is, aangezien ook een aantal
aliassen aan een printer toegekend kunnen worden.Ten minste één van de printers die in
/etc/printcap worden genoemd moet het
alias lp hebben. Dit is de
standaardnaam voor de printer. Als gebruikers de
omgevingsvariabele PRINTER niet ingesteld
hebben en ook geen printernaam specificeren als ze
LPD gebruiken, dan wordt
standaard de printer lp gebruikt.Het is verder gebruikelijk om het laatste alias zo te
kiezen dat het een volledige beschrijving van de printer
is, inclusief merk en model.Als een naam en een aantal aliassen zijn gekozen,
kunnen ze aan /etc/printcap worden
toegevoegd. De naam van een printer wordt in de meest
linker kolom geplaatst. Scheid ieder alias met een
verticale streep en plaats een dubbele punt achter het
laatste alias.In het volgende voorbeeld is de beginsituatie een
uitgekleed /etc/printcap waarin twee
printers worden gedefinieerd (een Diablo 630 lijnprinter
en een Panasonic KX-P4455
&postscript;-laserprinter):#
# /etc/printcap voor host rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:In dit voorbeeld heet de eerste printer
rattan en heeft de volgende aliassen:
line, diablo,
lp en Diablo 630 Line
Printer. Omdat deze printer het alias
lp heeft, is het de standaard printer.
De tweede printer heet bamboo en heeft
de aliassen ps, PS,
S, panasonic en
Panasonic KX-P4455 PostScript v51.4.Voorbladen onderdrukkenafdrukkenvoorbladenHet wachtrijsysteem LPD
drukt standaard een voorblad af voor
elke afdrukopdracht. Het voorblad bevat de gebruikersnaam
van de gebruiker die de afdrukopdracht gaf, de computer
waar de opdracht is gegeven en, in mooie grote letters, de
naam van de afdrukopdracht. Het nadeel hiervan is dat al
deze extra tekst het debuggen van de eenvoudige
printerinstallatie bemoeilijkt. Daarom wordt het afdrukken
van voorbladen onderdrukt.Om voorbladen te onderdrukken, wordt de optie
sh toegevoegd voor de relevante printer
in /etc/printcap. Hieronder staat een
voorbeeld van /etc/printcap met de
optie sh:#
# /etc/printcap voor host rose - nergens worden voorbladen afgedrukt
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:Het juiste formaat is gebruikt: de eerste regel begint
in de meest linker kolom, volgende regels springen in.
Elke regel eindigt met een backslash, behalve de
laatste.Wachtrijmap aanmakenprinter wachtrijafdrukopdrachtenDe volgende stap in deze eenvoudige opzet is het
aanmaken van een wachtrijmap. Dit is
een map waar afdrukopdrachten geplaatst worden totdat ze
worden afgedrukt. Ook wordt er een aantal bestanden
geplaatst die nodig zijn voor het functioneren van het
wachtrijsysteem.Vanwege het veranderlijke karakter van wachtrijmappen
is het gebruikelijk om deze mappen onder
/var/spool te
plaatsen. Het is niet nodig om een reservekopie van de
inhoud van deze mappen te maken. Ze kunnen eenvoudigweg
opnieuw worden aangemaakt met &man.mkdir.1;.Het is ook gebruikelijk om de naam van de map overeen te
laten komen met die van de printer, zoals onder is
weergegeven:&prompt.root; mkdir /var/spool/printernaamAls er veel printers zijn aangesloten op een netwerk,
is het beter de wachtrijmappen aan te maken in een enkele
map die speciaal wordt gebruikt voor afdrukken met
LPD. In dit voorbeeld wordt dat
gedaan voor de printers rattan en
bamboo:&prompt.root; mkdir /var/spool/lpd
&prompt.root; mkdir /var/spool/lpd/rattan
&prompt.root; mkdir /var/spool/lpd/bambooAls de afdrukopdrachten privé moeten blijven,
dan is het belangrijk de wachtrijmap niet algemeen
toegankelijk te maken. Wachtrijmappen moeten eigendom
zijn van gebruiker daemon en groep
daemon. Uitsluitend deze gebruiker
en groep moeten de map kunnen lezen, schrijven en
doorzoeken. We doen dit voor onze voorbeeldprinters:&prompt.root; chown daemon:daemon /var/spool/lpd/rattan
&prompt.root; chown daemon:daemon /var/spool/lpd/bamboo
&prompt.root; chmod 770 /var/spool/lpd/rattan
&prompt.root; chmod 770 /var/spool/lpd/bambooTenslotte moet LPD verteld
worden dat deze mappen bestaan. Dit kan met het bestand
/etc/printcap. De locatie van de
wachtrijmap wordt opgegeven met de optie
sd:#
# /etc/printcap voor host rose - wachtrijmappen toegevoegd
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:De naam van de printer staat in de eerste kolom, maar
alle andere regels die de printer beschrijven worden
ingesprongen en elke regel eindigt met een
backslash.Als geen wachtrijmap wordt opgegeven met
sd, dan wordt standaard
/var/spool/lpd
gebruikt.Printerapparaat identificerenIn de sectie Hardware-instellingen
is bepaald welke poort en ingang in de map /dev
door &os; worden gebruikt om met een printer te
communiceren. Nu moet LPD dit
ook weten. Als het wachtrijsysteem een afdrukopdracht
krijgt, opent het het relevante apparaat namens het
filterprogramma (dat verantwoordelijk is voor het sturen van
gegevens naar een printer).Geef de locatie van de ingang in
/dev op in
/etc/printcap door gebruik te maken
van de optie lp.In het huidige voorbeeld wordt aangenomen dat
rattan op de eerste parallelle poort is
aangesloten en bamboo op de zesde
seriële poort. Hier volgen de toevoegingen voor
/etc/printcap:#
# /etc/printcap voor host rose - bepaald welke apparaten te gebruiken
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyu5:Als voor een printer de optie lp
niet wordt gebruikt in /etc/printcap,
dan gebruikt LPD standaard
/dev/lp. Momenteel
bestaat /dev/lp niet
in &os;.Als de te installeren printer is aangesloten op een
parallelle poort, dan staan verdere instructies in Tekstfilter
installeren. In andere gevallen kunnen de
instructies in de volgende paragraaf gevold worden.Communicatieparameters voor het wachtrijsysteem
instellenprintersserieelVoor printers die zijn aangesloten op een seriële
poort kan LPD de bps-snelheid,
pariteit en andere seriële communicatie parameters
instellen voor het filterprogramma dat gegevens naar een
printer stuurt. Dit is gunstig omdat:De verschillende communicatieparameters
uitgeprobeerd kunnen worden door
/etc/printcap aan te passen. Het
is niet nodig het filterprogramma opnieuw te
compileren;Het wachtrijsysteem kan hetzelfde filter gebruiken
voor verschillende printers die mogelijk verschillende
seriële communicatie-instellingen hebben.Met de volgende opties in
/etc/printcap kunnen seriële
communicatieparameters worden ingesteld voor het apparaat
waar lp naar verwijst:br#bps-snelheidStelt de communicatiesnelheid van het apparaat in
op bps-snelheid, waarbij
bps-snelheid de waarde
50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800,
2400, 4800, 9600, 19200, 38400, 57600 of 115200
bits-per-seconde kan aannemen.ms#stty-modusBepaalt de opties voor het geval het
printerapparaat een terminal is. In &man.stty.1;
staat uitleg over de beschikbare opties.Als LPD het apparaat opent
dat met lp is opgegeven, worden de
eigenschappen van het apparaat bepaald door de optie
ms#. Met name van belang zijn de modi
parenb, parodd,
cs5, cs6,
cs7, cs8,
cstopb, crtscts en
ixon. Deze worden uitgelegd in
&man.stty.1;.Nu wordt de voorbeeldprinter op de zesde seriële
poort aangepast. De bps-snelheid wordt ingesteld op 38400.
Als modus wordt gekozen: geen pariteit met
-parenb, 8-bit tekens met
cs8, geen modemcontrole met
clocal en hardware flow-control met
crtscts:bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:Tekstfilter installerenafdrukkenfiltersNu kan LPD verteld worden
welke tekstfilters gebruikt moeten worden bij het versturen
van afdrukopdrachten. Een tekstfilter
is een programma dat LPD
aanroept als het een afdrukopdracht krijgt. Wanneer
LPD het tekstfilter aanroept,
wordt de standaard invoer van het filter gekoppeld aan de
afdrukopdracht en de standaard uitvoer aan het
printerapparaat dat door de optie lp
is opgegeven. Er wordt aangenomen dat het filter van
standaard invoer leest, vervolgens de nodige handelingen
uitvoert en het resultaat naar de standaard uitvoer
schrijft, zodat het afgedrukt wordt. In Filters staat
meer informatie over het tekstfilter.Voor deze eenvoudige printerinstallatie kan het
tekstfilter een klein shellscript zijn dat
/bin/cat aanroept om de afdrukopdracht
naar de printer te sturen. &os; wordt geleverd met een
ander filter, lpf, dat backspaces en
onderlijnde tekst afhandelt voor printers die hier niet mee
overweg kunnen. Natuurlijk kan elk filter gebruikt worden
dat gewenst is. Het filter lpf wordt
uitgebreid beschreven in lpf: een
tekstfilter.Nu wordt eerst het shellscript
/usr/local/libexec/if-simple gemaakt
dat als simpel tekstfilter dient. Plaats de volgende tekst
in het bestand met een tekstverwerker naar keuze:#!/bin/sh
#
# if-simple - Eenvoudig tekstfilter voor lpd
# Geïnstalleerd in /usr/local/libexec/if-simple
#
# Kopieert eenvoudigweg stdin naar stdout.
# Filterargumenten worden genegeerd.
/bin/cat && exit 0
exit 2Zorg dat het bestand uitvoerbaar is:&prompt.root; chmod 555 /usr/local/libexec/if-simpleZorg dat LPD het filter
gebruikt door dit aan te geven met de optie
if in
/etc/printcap. Nu volgt hoe dit te
doen voor de twee printers uit het voorbeeld:#
# /etc/printcap voor host rose - met tekstfilter
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:\
:if=/usr/local/libexec/if-simple:Een kopie van het script
if-simple staat in de map /usr/share/examples/printing.LPD aanzetten&man.lpd.8; wordt gestart vanuit
/etc/rc door de variabele
lpd_enable. Standaard staat deze
variabele op NO. Als dit nog niet is
gedaan, voeg dan de volgende regel toe aan
/etc/rc.conf en herstart de
computer:lpd_enable="YES"Of voer het commando &man.lpd.8; uit:&prompt.root; lpdPrinter uitproberenNu volgt het laatste onderdeel van de eenvoudige
LPD installatie. Helaas zijn
felicitaties nog niet gepast. De printer moet worden
getest en eventuele problemen moeten worden opgelost. Om
de installatie te testen kan iets afgedrukt worden.
Afdrukken gaat met het commando &man.lpr.1;. Dit stuurt
een opdracht naar een printer.Het programma &man.lpr.1; is te combineren met het
programma &man.lptest.1; uit Printercommunicatie
controleren om tekst te genereren.Om de eenvoudige installatie van
LPD te testen:&prompt.root; lptest 20 5 | lpr printernaamHier is printernaam de naam
van een printer (of een alias) die in
/etc/printcap wordt genoemd. De
standaard printer kan worden getest door bij het aanroepen
van &man.lpr.1; de optie weg te laten.
Nogmaals: test een &postscript;-printer door een
&postscript;-programma naar een printer te sturen en maak
geen gebruik van &man.lptest.1;. Dit kan door het
programma in een bestand op te slaan en de volgende
commandoregel uit te voeren: lpr
bestand.Voor een &postscript;-printer moet het resultaat van
het programma verschijnen. Als gebruik wordt gemaakt van
&man.lptest.1; ziet het resultaat er ongeveer zo uit:!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678Om de printer uitvoeriger te testen kunnen grotere
programma's geprobeerd worden (voor taalgebaseerde
printers) of kan &man.lptest.1; aangeroepen worden met
andere argumenten. Bijvoorbeeld: lptest 80
60, drukt 60 regels af met elk 80 karakters.Als de printer niet werkt, lees dan verder in Problemen
oplossen.Geavanceerde printerinstallatie
-
- Vanaf &os; 8.0; zijn de apparaatknooppunten
- voor seriële poorten hernoemd van
- /dev/ttydN naar
- /dev/ttyuN.
- &os; 7.X gebruikers moeten de volgende documentatie aanpassen
- naar aanleiding van deze wijzigingen.
-
-
Deze sectie behandelt het gebruik van filters om speciaal
opgemaakte tekst en voorbladen af te drukken, via het netwerk af
te drukken en printergebruik te beperken en statistieken bij te
houden.FiltersafdrukkenfiltersHoewel LPD veel van het
afdrukwerk afhandelt (netwerkverkeer, wachtrijafhandeling,
toegangscontrole, enzovoort), wordt het
echte werk door de filters gedaan.
Filters zijn programma's die met een printer communiceren en
inspelen op printerspecifieke eigenschappen. In de eenvoudige
printeropzet is een filter geïnstalleerd voor platte
tekst, een zeer eenvoudig filter dat met de meeste printers zou
moeten werken (Tekstfilter
installeren).Om echter gebruik te maken van formaatomzetting,
printeradministratie, printerspecifieke aanpassingen,
enzovoort, is het nodig te weten hoe filters werken.
Uiteindelijk is het de verantwoordelijkheid van het filter om
deze zaken af te handelen. Het slechte nieuws is dat
de beheerder in het merendeel van de
gevallen het filter moet aanleveren. Het goede nieuws is dat
veel filters algemeen beschikbaar zijn en als ze dat niet zijn,
zijn ze vaak makkelijk te schrijven.&os; heeft een ingebouwd filter,
/usr/libexec/lpr/lpf, die met veel
printers werkt die platte tekst kunnen afdrukken. Het filter
regelt backspace en tabs in bestanden en administreert
printergebruik, maar dat is zo'n beetje alles wat dit filter
doet. Er zijn ook diverse filters en filtercomponenten in de
&os; Portscollectie.Hieronder wordt het volgende beschreven:In Hoe
filters werken staat een overzicht van de rol die
een filter speelt in het afdrukproces. Lees dat onderdeel
om een indruk te krijgen wat er onder de
motorkap gebeurt als LPD
filters gebruikt. Deze kennis helpt mogelijke problemen te
voorkomen of op te lossen als meerdere filters worden
geïnstalleerd voor printers.LPD gaat er van uit dat elke
printer standaard platte tekst af kan drukken. Dit geeft
problemen voor &postscript; (of andere op taal gebaseerde)
printers die niet in staat zijn direct platte tekst af te
drukken. In Platte tekst
op &postscript;-printers afdrukken staat wat er kan
worden gedaan om dit probleem te verhelpen. Lees verder in
dit onderdeel als het om &postscript;-printers gaat.Voor veel programma's is &postscript; een populair
uitvoerformaat. Sommige mensen schrijven &postscript; code
zelfs direct. &postscript;-printers zijn echter kostbaar.
In &postscript;
simuleren op niet-&postscript;-printers staat hoe
de tekstfilter van een printer aangepast moet worden zodat
die &postscript; accepteert en afdrukt op een
niet-&postscript;-printer. Dit
onderdeel is van toepassing voor
niet-&postscript;-printers.In Conversiefilters
wordt een methode beschreven om de conversie van bepaalde
bestandsformaten te automatiseren, zoals van grafische of
tekstopmaakprogramma's, naar formaten die een printer kan
begrijpen. Na het lezen van dit onderdeel is een beheerder
in staat om een printer zodanig in te stellen dat
gebruikers lpr kunnen
invoeren om troff-gegevens af te drukken, lpr
om &tex; DVI-gegevens af te
drukken of lpr om
rasterplaatjes af te drukken, enzovoorts. Het wordt
aangeraden deze sectie te lezen.In Uitvoerfilters
wordt een niet vaak gebruikte functionaliteit van
LPD behandeld: uitvoerfilters.
Tenzij voorbladen worden afgedrukt (Voorbladen),
kan deze sectie waarschijnlijk overgeslagen worden.lpf: een
tekstfilter beschrijft lpf, een
redelijk complete, eenvoudige tekstfilter voor lijnprinters
(en laserprinters die zich als lijnprinters voordoen) dat
wordt geleverd bij &os;. Voor een snelle manier om
printeradministratie aan de praat te krijgen voor platte
tekst of voor printers waar rook uit komt bij het zien van
backspace karakters, is het serieus te overwegen gebruik te
maken van lpf.Een kopie van de scripts die hieronder worden beschreven,
staan in de map /usr/share/examples/printing.Hoe filters werkenZoals eerder genoemd, is een filter een programma dat
wordt uitgevoerd door LPD voor het
afhandelen van het apparaatafhankelijke deel van de
communicatie met een printer.Als LPD een bestand wil
afdrukken uit een afdrukopdracht, start het een
filterprogramma. Het koppelt de standaard invoer van de
filter aan het af te drukken bestand, de standaard uitvoer
aan de printer en de standaard foutmelding aan het
logboekbestand voor foutmeldingen (zoals opgegeven via de
optie lf in
/etc/printcap of standaard
/dev/console).troffWelk filter LPD start en de
argumenten van het filter hangen af van wat er in het bestand
/etc/printcap wordt opgegeven en de
argumenten die de gebruiker geeft op de commandoregel van
&man.lpr.1;. Als een gebruiker bijvoorbeeld
lpr ingeeft, start
LPD het filter troff, zoals wordt
opgegeven via de optie tf voor de
betreffende printer. Als een gebruiker platte tekst wilt
afdrukken, dan wordt het filter if gestart
(dit klopt bijna: zie Uitvoerfilters voor
de details).Er zijn drie soorten filters die in
/etc/printcap kunnen worden
opgegeven:Het tekstfilter, dat in de
LPD documentatie verwarrend
genoeg input filter wordt genoemd,
verwerkt het afdrukken van gewone tekst. Beschouw het
als het standaardfilter. LPD
verwacht dat elke printer standaard platte tekst kan
afdrukken en het is de taak van het tekstfilter om er voor
te zorgen dat backspaces, tabs en andere speciale
karakters de printer niet in de war sturen. In een
omgeving waar moet worden bijgehouden hoeveel er wordt
afgedrukt, moet het tekstfilter ook administreren hoeveel
pagina's er zijn afgedrukt. Dit gaat meestal door het
aantal afgedrukte regels te tellen en dit te vergelijken
met het aantal regels per pagina dat door de printer
wordt ondersteund. Het tekstfilter wordt aangeroepen met
de volgende lijst argumenten:filter-name-c-w width-l length-i indent-n login-h hostacct-filemetwordt gebruikt als de afdrukopdracht is gegeven
met lpr widthis de waarde van de optie pw
(page width: paginabreedte),
zoals opgegeven
in /etc/printcap, standaard
132lengthis de waarde van de optie pl
(page length: paginalengte),
standaard 66indentgeeft aan hoeveel wordt ingesprongen door
lpr ,
standaard 0loginde gebruikersnaam van de gebruiker die de
afdrukopdracht gafhostde hostnaam waar de afdrukopdracht gegeven isacct-filede naam van het administratiebestand zoals
opgegeven via de optie af.afdrukkenfiltersEen conversiefilter converteert
een specifiek bestandsformaat naar een formaat dat een
printer begrijpt. Bijvoorbeeld: ditroff
typesettinggegevens kunnen niet direct worden afgedrukt,
maar er bestaat wel een conversiefilter om
ditroff-gegevens te converteren naar een formaat dat een
printer kan verteren en afdrukken. Dit wordt in Conversiefilters
beschreven. Conversiefilters zijn ook nodig om
printergebruik te administreren, mocht dat nodig zijn.
Conversiefilters worden met de volgende argumenten
aangeroepen:filter-name-x
pixel-width-y
pixel-height-n login-h hostacct-fileHier is pixel-width de
waarde van de optie px (standaard 0)
en pixel-height is de waarde
van de optie py (standaard 0).Het uitvoerfilter wordt alleen
gebruikt als er geen tekstfilter is of als er voorbladen
worden afgedrukt. De ervaring leert dat uitvoerfilters
zelden worden gebruikt. In sectie Uitvoerfilters
worden ze beschreven. Er zijn slechts twee argumenten die
aan een uitvoerfilter worden meegegeven:filter-name-w width-l lengthDeze zijn identiek aan de argumenten
en van het
tekstfilter.Filters moeten afsluiten met de
volgende waarde:exit 0Als het filter een bestand succesvol heeft
afgedrukt.exit 1Als het filter niet geslaagd is om een bestand af
te drukken, maar wil dat LPD
het nogmaals probeert. LPD
herstart het filter als die afsluit met deze
status.exit 2Als het filter niet geslaagd is om een bestand af
te drukken, maar niet wil dat
LPD het nogmaals probeert.
LPD verwijdert het bestand
uit de wachtrij.Het tekstfilter dat bij &os; wordt geleverd,
/usr/libexec/lpr/lpf, benut de
argumenten voor paginabreedte en -lengte om te bepalen
wanneer een nieuwe pagina moet worden begonnen en om het
printergebruik bij te houden. Het gebruikt de argumenten
voor login, host en administratiebestand om accountingregels
aan te maken.Controleer bij het zoeken naar filters of ze
LPD-compatibel zijn. Zo ja, dan ondersteunen ze de
argumenten zoals hierboven beschreven. Zorg bij het zelf
schrijven van filters voor algemeen gebruik dat ze dezelfde
argumenten en exitcodes ondersteunen.Platte tekst op &postscript;-printers afdrukkenafdrukopdrachtenAls een computer en &postscript; (of andere op taal
gebaseerde) printer maar één gebruiker hebben
die belooft nooit platte tekst naar de printer te sturen of
programma's te gebruiken die dat doen, dan is dit onderdeel
overbodig.Als gebruikers zowel &postscript; als platte tekst
naar een printer willen sturen, dan is het aan te raden de
printerinstellingen hierop aan te passen. Hiervoor moet het
tekstfilter bij elke nieuwe opdracht bepalen of het om platte
tekst of &postscript; gaat. Alle &postscript;-opdrachten
beginnen met %! (raadpleeg de
printerhandleiding voor andere printertalen). Als dit de
eerste twee karakters zijn van een opdracht is het
&postscript; en kan de rest van een opdracht direct
doorgestuurd worden. Is dit niet het geval, dan moet de
filter de tekst omzetten in &postscript; en het resultaat
afdrukken.Hoe gaat dat werken?printersserieelVoor seriële printers kan het meest eenvoudig
lprps geïnstalleerd worden.
lprps is een &postscript;-afdrukfilter
die tweewegcommunicatie met een printer heeft. Het werkt
het statusbestand van een printer bij met uitgebreide
informatie afkomstig van een printer, zodat gebruikers en
beheerders precies kunnen zien wat de status van een printer
is (zoals: toner bijna op of
papier vastgelopen). Maar
belangrijker, het omvat het programma psif
dat bepaalt of een binnenkomende opdracht platte tekst is en
textps (dat ook geleverd wordt met
lprps) om opdrachten om te zetten naar
&postscript;. Vervolgens wordt een opdracht met
lprps naar een printer gestuurd.lprps is onderdeel van de &os;
Portscollectie (zie De
Portscollectie). U kunt één van de
ports print/lprps-a4 of
print-lprps-letter
installeren afhankelijk van de gebruikte papiermaat. Nadat
lprps is geïnstalleerd moet de
installatielocatie ervan aan psif worden
doorgeven dat onderdeel is van lprps. Als
lprps is geïnstalleerd via de
Portscollectie, gebruik dan het volgende voor de seriële
&postscript;-printer in /etc/printcap::if=/usr/local/libexec/psif:Ook moet de optie rw worden opgeven,
die LPD vertelt om een printer in
lezen/schrijvenmodus te openen.Als een parallelle &postscript;-printer wordt ingesteld
(en dus geen tweewegcommunicatie toegepast kan worden met de
printer, zoals vereist door lprps), dan
kan het volgende shellscript gebruikt worden als
tekstfilter:#!/bin/sh
#
# psif - Druk &postscript; of platte tekst af op een &postscript;
# printer. Script versie; NIET de versie die wordt geleverd bij lprps
# Geïnstalleerd in /usr/local/libexec/psif
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
if [ "$first_two_chars" = "%!" ]; then
#
# &postscript; opdracht, afdrukken.
#
echo "$first_line" && cat && printf "\004" && exit 0
exit 2
else
#
# Platte tekst, converteren en dan afdrukken.
#
( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
exit 2
fiIn bovenstaand script is textps een
programma dat geïnstalleerd is om platte tekst om te
zetten naar &postscript;. Elk tekst-naar-&postscript;
programma volstaat. De &os; Portscollectie (zie De Portscollectie) bevat een
uitgebreid tekst-naar-&postscript;-programma,
a2ps, dat wellicht handig is om te
gebruiken.&postscript; simuleren op
niet-&postscript;-printers&postscript;emulerenGhostscript&postscript; is de facto de
standaard voor op hoge kwaliteit typesetten en afdrukken.
&postscript; is echter een dure
standaard. Gelukkig heeft Aladdin Enterprises een gratis
&postscript;-kloon, Ghostscript,
die werkt onder &os;. Ghostscript
kan de meeste &postscript;-bestanden lezen en de pagina's op
verschillende soorten apparaten weergeven, waaronder veel
niet-&postscript;-printers. Door
Ghostscript te installeren en een
printer gebruik te laten maken van een speciaal tekstfilter
voor uw printer, kan uw niet-&postscript;-printer zich
gedragen als een echte &postscript;-printer.Ghostscript is beschikbaar via de &os; Portscollectie,
vele versies zijn beschikbaar, de meest gebruikte versie is
print/ghostscript-gpl.Om &postscript; te simuleren moet een tekstfilter
detecteren of het een &postscript;-bestand aan het afdrukken
is. Zo niet, dan stuurt het filter het bestand direct naar
een printer, anders gebruikt het filter
Ghostscript om het bestand om te
zetten naar een formaat dat door een printer wordt begrepen.Een voorbeeld: het volgende script is een tekstfilter
voor Hewlett Packard DeskJet 500 printers. Voor andere
printers moet het argument voor het
commando gs
(Ghostscript) vervangen worden.
(Met gs -h wordt een lijst met apparaten
getoond worden die de huidige installatie van
Ghostscript ondersteunt.)#!/bin/sh
#
# ifhp - Druk Ghostscript-gesimuleerd &postscript; af op een DeskJet
# 500. Geïnstalleerd in /usr/local/libexec/ifhp
#
# Behandel LF als CR+LF (om een "trapeffect" op HP/PCL
# printer te voorkomen):
#
printf "\033&k2G" || exit 2
#
# Lees de eerste twee karakters van het bestand
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
if [ "$first_two_chars" = "%!" ]; then
#
# Het is &postscript;. Gebruik Ghostscript om te converteren
# en druk het af.
#
/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
-sOutputFile=- - && exit 0
else
#
# Platte tekst of HP/PCL, dus direct afdrukken; druk een
# pagina-einde af om de laatste pagina te ejecteren.
#
echo "$first_line" && cat && printf "\033&l0H" &&
exit 0
fi
exit 2Tot slot moet LPD op de hoogte
gebracht worden van het filter via de optie
if::if=/usr/local/libexec/ifhp:Dat is alles. Nu kan lpr
platte.tekst
en lpr
watdanook.ps
ingevoerd worden en beiden worden juist afgedrukt.ConversiefiltersNa de eenvoudige installatie, zoals beschreven in Eenvoudige printerinstallatie,
te hebben voltooid, is het
waarschijnlijk wenselijk om conversiefilters te installeren
voor favoriete bestandsformaten (naast platte
ASCII-tekst).Waarom conversiefilters installeren?&tex;DVI-bestanden afdrukkenConversiefilters maken het afdrukken van verschillende
bestanden eenvoudig. Stel dat veel gebruik gemaakt wordt
van het tekstverwerkingsprogramma &tex; en een &postscript;
printer. Elke keer als door &tex; een DVI-bestand wordt
gegenereerd, kan dat niet direct afgedrukt worden. Het
DVI-bestand moet omgezet worden naar &postscript;. De te
geven opdrachten zijn de volgende:&prompt.user; dvips zeewieranalyse.dvi
&prompt.user; lpr zeewieranalyse.psNa installatie van een conversiefilter voor
DVI-bestanden kan deze handmatige conversie overgeslagen
worden door LPD de conversie te
laten uitvoeren. Elke keer als een DVI-bestand wordt
afgedrukt, hoeft alleen de volgende opdracht gegeven te
worden:&prompt.user; lpr zeewieranalyse.dviLPD voert de
DVI-bestandsconversie uit door te
geven. In Opties voor opmaak
en conversie staat een lijst van
conversie-opties.Voor elke conversie-optie moet een
conversiefilter geïnstalleerd
worden en moet in /etc/printcap de
locatie worden opgegeven. Een conversiefilter is als het
tekstfilter voor de eenvoudige printerinstallatie (Tekstfilter
installeren), behalve dat in plaats van platte
tekst af te drukken, het conversiefilter het bestand
converteert naar een formaat dat een printer
begrijpt.Welke conversiefilters installeren?Installeer de conversiefilters die nodig zijn. Als
veel DVI-bestanden worden afgedrukt, dan is het handig een
DVI-filter te installeren. Als veel troff wordt afgedrukt,
dan is het waarschijnlijk handig een troff-filter te
installeren.De volgende tabel geeft een samenvatting van filters
waarmee LPD kan werken, hoe ze
in /etc/printcap kunnen worden
aangeroepen en hoe ze met lpr kunnen
worden aangeroepen:Bestandsformaat/etc/printcap
optielpr optiecifplotcfDVIdfplotgfditroffnfFORTRAN-tekstrftrofftfrastervfplatte tekstifgeen, , of
In het voorbeeld waarbij lpr
wordt gebruikt, moet voor de
printer een optie df gedefinieerd staan
in /etc/printcap.FORTRANOndanks wat anderen mogelijk beweren, zijn formaten als
FORTRAN-tekst en plot waarschijnlijk verouderd. Dit biedt
de mogelijkheid een nieuwe betekenis te geven aan deze
opties door zelf een filter te installeren. Stel dat direct
Printerleaf-bestanden afgedrukt moeten worden (bestanden van
het bureaubladpublicatieprogramma Interleaf), maar nooit
plotbestanden worden afgedrukt. Dan kan een
Printerleaf-conversiefilter geïnstalleerd worden onder
de optie gf en gebruikers kunnen
geïnstrueerd worden om lpr
te gebruiken om Printerleaf-bestanden af te
drukken.Conversiefilters installerenAangezien conversiefilters programma's zijn die niet
onder de &os;-basisinstallatie vallen, kunnen ze het best
onder /usr/local
geplaatst worden. De map /usr/local/libexec is een
veelgebruikte locatie, omdat hier programma's te vinden zijn
die alleen door LPD gebruikt
worden. Gewone gebruikers hoeven ze nooit te gebruiken.Om een conversiefilter te activeren, moet de
bestandslocatie onder de juiste optie voor de betreffende
printer in /etc/printcap opgegeven
worden.In het onderstaande voorbeeld wordt het
DVI-conversiefilter toegevoegd onder de sectie van de
printer bamboo. Hieronder staat opnieuw
het voorbeeldbestand /etc/printcap, nu
met de nieuwe optie df voor de printer
bamboo:#
# /etc/printcap voor host rose - df-filter voor bamboo toegevoegd
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Het DVI-filter is een shellscript met de naam
/usr/local/libexec/psdf. Het script
ziet er als volgt uit:#!/bin/sh
#
# psdf - DVI naar PostScript afdrukfilter
# Geïnstalleerd in /usr/local/libexec/psdf
#
# Aangeroepen door lpd wanneer een gebruiker lpr -d uitvoert
#
exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"Dit script roept dvips in
filtermodus aan (het argument) op de
standaard uitvoer, de af te drukken opdracht. Vervolgens
start het &postscript; afdrukfilter
lprps (zie Platte tekst op
&postscript;-printers afdrukken) met de argumenten
die LPD aan het script
doorgeeft. lprps gebruikt deze
argumenten om de afgedrukte pagina's te
administreren.Meer voorbeelden van conversiefiltersEr is geen vaste procedure om conversiefilters te
installeren, er worden in deze sectie wat werkende
voorbeelden gegeven. Gebruik deze als hulp bij het zelf
maken van filters. Gebruik ze zonder aanpassingen indien
mogelijk.Dit voorbeeldscript is een raster (eigenlijk een
GIF-bestand) conversiefilter voor een HP LaserJet III-Si
printer:#!/bin/sh
#
# hpvf - Converteer GIF-bestanden naar HP/PCL, druk vervolgens af
# Geïnstalleerd in /usr/local/libexec/hpvf
PATH=/usr/X11R6/bin:$PATH; export PATH
giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
&& exit 0 \
|| exit 2Het script converteert achtereenvolgens het GIF-bestand
naar een PNM-bestand (portable anymap), een PGM-bestand
(portable graymap), een PBM-bestand (portable bitmap) en
tenslotte naar LaserJet/PCL formaat.Een /etc/printcap bestand dat
bovenstaand filter gebruikt ziet er als volgt uit:#
# /etc/printcap voor host orchid
#
teak|hp|laserjet|HP LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:Het volgende script is een conversiefilter voor
troff-gegevens afkomstig van het groff-typesettingsysteem
voor de &postscript;-printer bamboo:#!/bin/sh
#
# pstf - Converteert groff's troffgegevens naar PS, drukt vervolgens af.
# Geïnstalleerd in /usr/local/libexec/pstf
#
exec grops | /usr/local/libexec/lprps "$@"Bovenstaande script maakt eveneens gebruik van
lprps om de communicatie met een printer
af te handelen. Als een printer op een parallelle poort
is aangesloten, ziet het er als volgt uit:#!/bin/sh
#
# pstf - Converteert groff's troff naar PS, drukt vervolgens af.
# Geïnstalleerd in /usr/local/libexec/pstf
#
exec gropsDat is alles. In /etc/printcap
moet het volgende toegevoegd worden om het filter
beschikbaar te maken::tf=/usr/local/libexec/pstf:Hieronder een voorbeeld waarvan FORTRAN-programmeurs
waarschijnlijk tranen in hun ogen krijgen: een
FORTRAN-tekstfilter voor een willekeurige printer die in
staat is platte tekst af te drukken. Het filter wordt
actief gemaakt voor teak:#!/bin/sh
#
# hprf - FORTRAN tekstfilter voor LaserJet 3si:
# Geïnstalleerd in /usr/local/libexec/hprf
#
printf "\033&k2G" && fpr && printf "\033&l0H" &&
exit 0
exit 2De onderstaande regel wordt toegevoegd aan
/etc/printcap voor de printer
teak om het filter beschikbaar te
maken::rf=/usr/local/libexec/hprf:Het laatste voorbeeld is wellicht complexer. Er
wordt een DVI-filter toegevoegd voor de eerder genoemde
LaserJet printer teak. Eerst het
makkelijke gedeelte: in /etc/printcap
wordt de locatie van het DVI-filter opgegeven::df=/usr/local/libexec/hpdf:Nu het moeilijke gedeelte: het schrijven van het filter.
Daarvoor is een DVI-naar-LaserJet/PCL conversieprogramma
nodig. De &os; Portscollectie (zie Portscollectie) heeft er een:
print/dvi2xx. Door deze
port te installeren komt het programma dat nodig is
beschikbaar, dvilj2p, waarmee DVI
geconverteerd kan worden naar LaserJet IIp-, LaserJet III-
en LaserJet 2000-formaten.Het hulpprogramma dvilj2p maakt het
filter hpdf redelijk complex, omdat
dvilj2p niet van de standaard invoer kan
lezen. Het wil werken met een bestandsnaam. Nog lastiger
is dat de bestandsnaam moet eindigen op
.dvi, zodat moeilijk gebruik
gemaakt kan worden van /dev/fd/0 als standaard.
Dit probleem kan omzeild worden door een (symbolische)
koppeling aan te maken van een tijdelijk bestand (eindigend
op .dvi) naar /dev/fd/0. Hiermee wordt
dvilj2p gedwongen van de standaard
invoer te lezen.De enige andere hobbel die genomen moet worden, is dat
/tmp niet gebruikt
kan worden als tijdelijke koppeling. Symbolische
koppelingen zijn eigendom van de gebruiker en groep
bin. Het filter wordt uitgevoerd door
de gebruiker daemon. De map
/tmp heeft het
sticky-bit aan staan. Het filter kan de koppeling wel
aanmaken, maar het is niet mogelijk de koppeling te
verwijderen als de opdracht is uitgevoerd, omdat de
koppeling eigendom is van een andere gebruiker.In plaats hiervan maakt het filter een symbolische
koppeling aan in de huidige werkmap, de wachtrijmap (zoals
opgegeven in de optie sd in
/etc/printcap). Dit is een perfecte
plaats voor filters om hun werk te doen, zeker gezien er
(soms) meer vrije schijfruimte is in de wachtrijmap dan
onder /tmp.Dit is het uiteindelijke filter:#!/bin/sh
#
# hpdf - Druk DVI-gegevens af op een HP/PCL printer
# Geïnstalleerd in /usr/local/libexec/hpdf
PATH=/usr/local/bin:$PATH; export PATH
#
# Definieer een functie om tijdelijke bestanden op te ruimen. Deze
# staan in de huidige map; de wachtrijmap voor de printer.
#
cleanup() {
rm -f hpdf$$.dvi
}
#
# Definieer een functie om fatale fouten te verwerken: geef de
# opgegeven boodschap weer en sluit af met 2. Afsluiten met 2 vertelt
# LPD niet nog eens te proberen de afdrukopdracht af te drukken.
#
fatal() {
echo "$@" 1>&2
cleanup
exit 2
}
#
# Als de gebruiker de opdracht annuleert, stuurt LPD een SIGINT, dus
# ondervang SIGINT (en enkele andere signalen) om onze rommel op te
# ruimen.
#
trap cleanup 1 2 15
#
# Voor de zekerheid bestaande tijdelijke bestanden opruimen
#
cleanup
#
# Koppel het DVI-invoerbestand aan de standaard invoer (het af te
# drukken bestand).
#
ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
#
# Maak LF = CR+LF
#
printf "\033&k2G" || fatal "Cannot initialize printer"
#
# Converteer en druk af. De retourneerwaarde van dvilj2p lijkt niet
# betrouwbaar, dus negeren we het.
#
dvilj2p -M1 -q -e- dfhp$$.dvi
#
# Opruimen en afsluiten
#
cleanup
exit 0Automatische conversie: een alternatief voor
conversiefiltersAl deze conversiefilters bieden vele mogelijkheden voor
afdrukomgevingen, maar dwingen de gebruiker aan te geven
(op de &man.lpr.1; commandoregel) welk filter gebruikt
moet worden. Als gebruikers niet zo vaardig zijn in het
gebruik van computers, wordt het al snel vervelend steeds
aan te moeten geven welk filter gebruikt moet worden.
Vervelender is echter wanneer een gebruiker een verkeerd
filter gebruikt voor een bepaald bestandsformaat. Het
resultaat kan zijn dat een printer honderden pagina's
papier uitspuugt.In plaats van het installeren van conversiefilters, is
het te proberen om het (standaard) tekstfilter het
bestandstype van het af te drukken bestand te laten
detecteren en dan automatisch het juiste conversiefilter
aan te laten roepen. Programma's als
file kunnen hierbij handig zijn. Voor
sommige bestandsformaten kan het
moeilijk zijn de verschillen te ontdekken en voor deze
bestanden kan alsnog een conversiefilter beschikbaar worden
gesteld.apsfilterafdrukkenfiltersapsfilterDe &os; Portscollectie heeft een tekstfilter dat
automatisch converteert genaamd apsfilter
(print/apsfilter). Het
detecteert platte tekst, &postscript; en DVI-bestanden,
voert de juiste conversie uit en druk de bestanden af.UitvoerfiltersHet wachtrijsysteem LPD
ondersteunt een ander type filter waar nog geen aandacht aan
is besteed: een uitvoerfilter. Een uitvoerfilter is bedoeld
om alleen platte tekst af te drukken, net als een
tekstfilter, maar met veel vereenvoudigingen. Wanneer een
uitvoerfilter wordt gebruikt, maar geen tekstfilter,
dan:start LPD een
uitvoerfilter voor de gehele opdracht, in plaats van voor
elk bestand in de opdracht;biedt LPD het uitvoerfilter
niet de voorziening van het identificeren van het begin
of eind van de bestanden in de afdrukopdracht;stuurt LPD de
gebruikersnaam en de hostnaam niet door aan het filter.
Het is dus niet bedoeld om een afdrukadministratie bij
te houden. In feite zijn er maar twee argumenten:filter-name-wwidth-llengthHierbij is width afkomstig
van de optie pw en
length afkomstig van de optie
pl voor de betreffende printer.De eenvoud van een uitvoerfilter is verleidelijk. Als
elk bestand in een afdrukopdracht op een nieuwe pagina moet
beginnen, is een uitvoerfilter niet
geschikt. In dat geval dient een tekstfilter
(ook wel invoerfilter) gebruikt te worden (zie Tekstfilter
installeren. Verder is een uitvoerfilter eigenlijk
veel ingewikkelder, omdat de te
verwerken bytestroom gecontroleerd moet worden op speciale
tekens en steeds signalen naar zichzelf moet sturen in
opdracht van LPD.Een uitvoerfilter is noodzakelijk als
voorbladen gewenst zijn en het nodig is om escape-reeksen of
andere initialisatietekens te sturen voor het afdrukken van
het voorblad. Maar het is tevens
nutteloos als het voorblad voor rekening
van de afkomstige gebruiker moet komen, aangezien
LPD geen gebruiker of
hostinformatie naar het uitvoerfilter stuurt.Op een enkele printer staat
LPD het gebruik van zowel een
uitvoerfilter als van een tekst of andere filter toe. In
deze gevallen start LPD het
uitvoerfilter alleen voor het afdrukken van het voorblad (zie
Voorbladen).
LPD verwacht vervolgens van het
uitvoerfilter dat deze zichzelf stopt
door twee bytes naar het filter te sturen: ASCII 031 gevolgd
door ASCII 001. Als een uitvoerfilter deze twee bytes ziet
(031, 001), moet die stoppen door een
SIGSTOP naar zichzelf te sturen. Als
LPD klaar is met het uitvoeren van
alle andere filters, dan herstart deze het uitvoerfilter door
er een SIGCONT naar toe te sturen.Als er wel een uitvoerfilter, maar
geen tekstfilter is en
LPD is niet bezig met het
verwerken van een opdracht met platte tekst, dan gebruikt
LPD het uitvoerfilter voor het
afdrukken van de opdracht. Zoals eerder vermeld, drukt het
uitvoerfilter elk bestand van de opdracht achter elkaar
af zonder pagina-einden of andere signalen voor
paginavoortgang. Dit is waarschijnlijk
niet gewenst. In bijna alle gevallen is
een tekstfilter nodig.Het programma lpf, dat eerder
geïntoduceerd is als tekstfilter, kan ook worden
uitgevoerd als uitvoerfilter. Als een ad-hoc uitvoerfilter
nodig is, maar het schrijven van de bytedetectie en
signaalverzending code niet wenselijk is, dan is
lpf het proberen waard.
lpf kan ook opgenomen worden in een
shellscript om initialisatiecode af te handelen die eventueel
nodig is voor een printer.lpf: een tekstfilterHet programma /usr/libexec/lpr/lpf
uit de gecompileerde &os;-distributie is een tekstfilter
(invoerfilter) die uitvoer kan inspringen (een opdracht
gegeven met lpr ),
karakters onveranderd kan doorlaten (een opdracht gegeven met
lpr ), de printpositie
voor backspaces en tabs in de opdracht kan aanpassen en
afgedrukte pagina's kan administreren. Het kan ook
functioneren als uitvoerfilter.Het filter lpf is geschikt voor vele
afdrukomgevingen. Hoewel het zelf niet in staat is
initialisatiesequenties naar een printer te sturen, is het
vrij eenvoudig om een shellscript te schrijven dat de
initialisatie doet en vervolgens lpf
aanroept.pagina-administratieadministrerenprinterAls lpf afgedrukte pagina's moet
administreren, is het nodig om de juiste waarden in te vullen
voor de opties pw en
pl in het bestand
/etc/printcap. Deze waarden worden
gebruikt om te bepalen hoeveel tekst er op een pagina past en
hoeveel pagina's er in een afdrukopdracht zijn afgedrukt.
Zie Printergebruik
administreren voor meer informatie.VoorbladenAls er veel gebruikers zijn die
allemaal verschillende printers gebruiken, dan is het te
overwegen gebruik te maken van voorbladen
als noodzakelijk kwaad.bannerpagina'svoorbladenvoorbladenVoorbladen, in het Engels ook wel bekend als
banner of burst
pagina's, identificeren wie een bepaalde opdracht heeft
afgedrukt. Ze worden meestal bedrukt met grote, dikgedrukte
letters, eventueel met een decoratieve rand, zodat ze in een
stapel afdrukken opvallen tussen de afgedrukte documenten. Ze
maken het gebruikers mogelijk hun afdrukopdracht snel te
vinden. Het nadeel van het gebruik van voorbladen is dat er
een extra blad moet worden afgedrukt voor elke opdracht,
waarmee hun nut niet langer duurt dan een paar minuten.
Uiteindelijk belanden ze in een papierbak of afvalberg.
Voorbladen gaan vooraf aan elke opdracht, niet aan elk bestand
in een opdracht, waardoor de verspilling beperkt blijft.Het LPD-systeem kan automatisch
voorbladen afdrukken als een printer
direct platte tekst kan afdrukken. In geval van een
&postscript;-printer, is het nodig een extern programma aan te
roepen om een voorblad te genereren (zie Voorbladen op
&postscript;-printers.Voorbladen afdrukkenIn de sectie Eenvoudige
printerinstallatie is het afdrukken van
voorbladen uitgeschakeld door de optie sh
(suppress header) in het bestand
/etc/printcap op te geven. Om wel
voorbladen af te drukken, hoeft alleen de optie
sh verwijderd te worden.Dit klinkt wat al te makkelijk, of niet?Dat klopt. Het kan nodig zijn een
uitvoerfilter op te geven die initialisatiestrings naar een
printer stuurt. Hier is een voorbeeld uitvoerfilter voor
HP PCL-compatible printers:#!/bin/sh
#
# hpof - Uitvoerfilter voor HP PCL-compatible printers
# Geïnstalleerd in /usr/local/libexec/hpof
printf "\033&k2G" || exit 2
exec /usr/libexec/lpr/lpfGeef de locatie van het uitvoerfilter op met de optie
of. Zie Uitvoerfilters voor
meer informatie.Hier is een voorbeeldbestand
/etc/printcap voor de printer
teak die eerder is geïntroduceerd;.
Het afdrukken van voorbladen is geactiveerd en bovenstaande
uitvoerfilter is toegevoegd:#
# /etc/printcap voor host orchid
#
teak|hp|laserjet|HP LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:\
:of=/usr/local/libexec/hpof:Als gebruikers nu een opdracht sturen naar
teak, wordt er bij elke opdracht een
voorblad afgedrukt. Als gebruikers liever willen zoeken naar
hun afdrukken, dan kunnen ze de voorbladen onderdrukken door
de opdracht te geven met het commando
lpr . Zie Voorbladopties
voor meer opties voor &man.lpr.1;.LPD drukt een karakter voor
pagina-einde af na elk voorblad. Als een printer een ander
teken of sequentie gebruikt voor het beëindigen van
een pagina, dan kan dit opgeven worden met de optie
ff in
/etc/printcap.Voorbladen beherenDoor het afdrukken van voorbladen aan te zetten,
produceert LPD een lang
voorblad waarop in grote letters de gebruiker,
host en opdracht te lezen zijn. Hier volgt een voorbeeld
(kelly heeft de opdracht
outline afgedrukt vanaf host
rose): k ll ll
k l l
k l l
k k eeee l l y y
k k e e l l y y
k k eeeeee l l y y
kk k e l l y y
k k e e l l y yy
k k eeee lll lll yyy y
y
y y
yyyy
ll
t l i
t l
oooo u u ttttt l ii n nnn eeee
o o u u t l i nn n e e
o o u u t l i n n eeeeee
o o u u t l i n n e
o o u uu t t l i n n e e
oooo uuu u tt lll iii n n eeee
r rrr oooo ssss eeee
rr r o o s s e e
r o o ss eeeeee
r o o ss e
r o o s s e e
r oooo ssss eeee
Job: outline
Date: Sun Sep 17 11:04:58 1995LPD geeft een paginabegin na
deze tekst, zodat de opdracht op een nieuwe pagina begint
(tenzij de optie sf (suppress
form feeds, onderdruk paginabegin)
is toegevoegd bij de desbetreffende printer in
/etc/printcap).Als dit wenselijk is, kan LPD
ook een korte tekst op het voorblad
afdrukken; geef hiervoor de optie sb
(short banner, kort
voorblad) op in het bestand
/etc/printcap. Het voorblad
ziet er dan als volgt uit:rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995Standaard drukt LPD het
voorblad als eerste af en vervolgens de opdracht. Om dat om
te keren, moet de optie hl
(header last, voorblad
laatst) in /etc/printcap worden
opgeven.Voorbladen administrerenHet gebruik van LPD's
ingebouwde voorbladen dwingt een bepaald paradigma af wat
betreft het administreren van printergebruik: voorbladen
moeten gratis zijn.Waarom?Omdat het uitvoerfilter het enige externe programma is
dat controle heeft als het voorblad afgedrukt wordt dat het
gebruik zou kunnen administreren. Het heeft echter geen
beschikking over informatie over gebruiker of
host of een administratiebestand. Het heeft dus
geen idee wie voor het gebruik moet worden belast. Het
volstaat ook niet om gewoon het aantal pagina's met
één op te hogen door het tekstfilter of
een van de conversiefilters (dat wel beschikt over
gebruiker- en hostinformatie) te veranderen, omdat gebruikers
het afdrukken van een voorblad kunnen onderdrukken met
lpr . Ze worden dan
aangeslagen voor voorbladen die niet zijn afgedrukt.
Milieubewuste gebruikers gebruiken vast
lpr , maar dit kan niet
worden afgedwongen.Het is ook niet voldoende om elk
filter zijn eigen voorblad te laten genereren (om zo het
gebruik te kunnen administreren). Als gebruikers het
afdrukken van voorbladen willen onderdrukken met
lpr , krijgen ze toch
een voorblad en worden er ook voor belast, aangezien
LPD geen kennis over de optie
doorgeeft aan de filters.Wat zijn dan de mogelijkheden?Accepteer het paradigma van
LPD en maak voorbladen
gratis;Installeer een alternatief voor
LPD, zoals
LPRng. In Alternatieven voor
het standaard wachtrijsysteem staat meer over
andere afdruksoftware die in plaats van
LPD geïnstalleerd kan
worden;Schrijf een slim
uitvoerfilter. Gewoonlijk is een uitvoerfilter bedoeld
om niet meer te doen dan het initialiseren van een
printer of wat eenvoudige karakterconversie. Het is
geschikt voor voorbladen en opdrachten met platte tekst
(als er een tekstfilter is). Maar als er een tekstfilter
is voor opdrachten met platte tekst, dan start
LPD het uitvoerfilter alleen
voor voorbladen. Het uitvoerfilter kan dan het
voorblad dat LPD genereert
analyseren om te bepalen welke gebruiker en host belast
moeten worden voor het afdrukken van het voorblad. Het
enige probleem is dat het uitvoerfilter nog steeds niet
weet in welk bestand het gebruik moet worden bijgehouden
(de naam van het bestand opgegeven in de
af wordt niet meegegeven), maar als
een bekend bestand gebruikt wordt, kan dit in het
uitvoerfilter worden opgeven. Om het parsen af te
handelen kan gebruik gemaakt worden van de optie
sh (short header,
kort voorblad) in
/etc/printcap. Dit kan echter wat
omslachtig zijn en gebruikers waarderen zeker de meer
gulle systeembeheerder die voorbladen gratis
maakt.Voorbladen op &postscript;-printersZoals hierboven beschreven, kan
LPD een voorblad in platte tekst
genereren, dat geschikt is voor de meeste printers.
Natuurlijk kan &postscript; platte tekst niet direct
afdrukken, zodat de voorbladfunctie van
LPD nutteloos is.Een voor de hand liggende manier om voorbladen te
krijgen, is elk conversiefilter en tekstfilter zijn eigen
voorblad te laten genereren. De filters moeten gebruik maken
van de argumenten gebruiker en host om een geschikt voorblad
te genereren. Het nadeel van deze methode is dat gebruikers
altijd een voorblad krijgen, ook wanneer zij een opdracht
geven met lpr .Deze methode wordt nader beschreven. Het volgende script
heeft drie argumenten (gebruikersnaam, hostnaam en de naam van
de opdracht) en maakt een eenvoudig &postscript;-voorblad:#!/bin/sh
#
# make-ps-header - genereer een PostScript-voorblad op stdout
# Geïnstalleerd in /usr/local/libexec/make-ps-header
#
#
# Dit zijn PostScript-eenheden (72 in een inch). Pas dit aan voor A4
# of het gebruikte formaat:
#
page_width=612
page_height=792
border=72
#
# Controleer argumenten
#
if [ $# -ne 3 ]; then
echo "Usage: `basename $0` <user> <host> <job>" 1>&2
exit 1
fi
#
# Bewaar deze, voornamelijk voor de leesbaarheid in de &postscript;-code.
#
user=$1
host=$2
job=$3
date=`date`
#
# Stuur de &postscript;-code naar stdout.
#
exec cat <<EOF
%!PS
%
% Vermijd conflicten met de opdracht van de gebruiker die volgt.
%
save
%
% Maak een dikke, onaangename border in de marge van het papier.
%
$border $border moveto
$page_width $border 2 mul sub 0 rlineto
0 $page_height $border 2 mul sub rlineto
currentscreen 3 -1 roll pop 100 3 1 roll setscreen
$border 2 mul $page_width sub 0 rlineto closepath
0.8 setgray 10 setlinewidth stroke 0 setgray
%
% Toon de gebruikersnaam duidelijk, groot en prominent
%
/Helvetica-Bold findfont 64 scalefont setfont
$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
($user) show
%
% Nu volgen de saaie bijzonderheden
%
/Helvetica findfont 14 scalefont setfont
/y 200 def
[ (Job:) (Host:) (Date:) ] {
200 y moveto show /y y 18 sub def }
forall
/Helvetica-Bold findfont 14 scalefont setfont
/y 200 def
[ ($job) ($host) ($date) ] {
270 y moveto show /y y 18 sub def
} forall
%
% Dat is alles
%
restore
showpage
EOFNu kan zowel het conversiefilter als het tekstfilter dit
script aanroepen om eerst een voorblad te genereren en
vervolgens de opdracht van de gebruiker af te drukken. Hier
volgt het eerder gebruikte DVI-conversieprogramma, aangepast
om een voorblad te maken:#!/bin/sh
#
# psdf - DVI naar PostScript printfilter
# Geïnstalleerd in /usr/local/libexec/psdf
#
# Aangeroepen door lpd, wanneer de gebruiker lpr -d uitvoert
#
orig_args="$@"
fail() {
echo "$@" 1>&2
exit 2
}
while getopts "x:y:n:h:" option; do
case $option in
x|y) ;; # Ignore
n) login=$OPTARG ;;
h) host=$OPTARG ;;
*) echo "LPD started `basename $0` wrong." 1>&2
exit 2
;;
esac
done
[ "$login" ] || fail "No login name"
[ "$host" ] || fail "No host name"
( /usr/local/libexec/make-ps-header $login $host "DVI File"
/usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_argsMerk op hoe het filter eerst de argumentenlijst moet
nagaan om te bepalen wat de gebruikers- en hostnaam zijn.
Dit is gelijk voor de andere conversiefilters. Het
tekstfilter heeft echter een andere verzameling argumenten
(zie Hoe filters
werken).Zoals eerder is beschreven, is het in bovenstaande opzet,
hoewel deze simpel is, niet mogelijk voorbladen
te onderdrukken (de optie in
lpr). Als gebruikers een boom willen
sparen (of een paar centen bij betaalde voorbladen) dan is
dit dus niet mogelijk, aangezien elk filter een voorblad
afdrukt voor iedere opdracht.Om gebruikers in staat te stellen per opdracht voorbladen
te onderdrukken, moet gebruik gemaakt worden van de truc
uit Voorbladen
administreren: schrijf een uitvoerfilter dat het door
LPD gegenereerde voorblad inleest en een &postscript;-versie
genereert. Als de gebruiker de opdracht geeft met
lpr , dan genereert
LPD geen voorblad en het
uitvoerfilter ook niet. Anders leest het uitvoerfilter de
tekst van LPD in en stuurt een
geschikt voorblad in &postscript; naar de printer.Voor een &postscript;-printer op een seriële lijn
kan gebruik gemaakt worden van lprps,
dat met een uitvoerfilter wordt geleverd en het bovenstaande
kan doen. Voorbladen worden door psof
niet geteld.Afdrukken via het netwerkprintersnetwerkafdrukken via netwerk&os; ondersteunt afdrukken via het netwerk: het sturen van
opdrachten naar printers op afstand. Afdrukken via een netwerk
betekent over het algemeen twee verschillende dingen:Het benaderen van een printer aangesloten op een andere
computer. Een printer met een conventionele
seriële of parallelle verbinding wordt op een bepaalde
computer geïnstalleerd. Vervolgens wordt
LPD zodanig ingesteld dat
afdrukken vanaf andere computers in het netwerk mogelijk
is. In Printers
geïnstalleerd op andere hosts staat hoe dit
te doen.Het benaderen van een printer die direct is aangesloten
op een netwerk. Een printer heeft een netwerkinterface
naast (of in plaats van) een gewone seriële of
parallelle poort. Zo een printer kan als volgt
werken:Het begrijpt het LPD
protocol en kan zelfs opdrachten van andere hosts in
de wachtrij plaatsen. In dit geval werkt een printer
als een gewone host die LPD
heeft draaien. Volg de procedure in Printers
geïnstalleerd op andere hosts om een
dergelijke printer te installerenHet kan zijn dat een printer een netwerkverbinding
ondersteunt. In dit geval kan een printer worden
aangesloten op een bepaalde host op het
netwerk door deze host verantwoordelijk te maken voor
het plaatsen van opdrachten in een wachtrij en het
versturen van opdrachten naar de printer. In Printers
met netwerkinterfaces staan enkele suggesties
om zulke printers te installeren.Printers geïnstalleerd op andere hostsHet wachtrijsysteem LPD heeft
een ingebouwde mogelijkheid om opdrachten naar andere hosts
te sturen die ook LPD draaien (of
een systeem dat compatibel is met
LPD). Deze eigenschap maakt het
mogelijk om een printer op een host te installeren en deze
toegankelijk te maken voor andere hosts. Het werkt ook met
printers die over een netwerkinterface beschikken en het
LPD-protocol begrijpen.Om dit soort afdrukken op afstand mogelijk te maken, moet
een printer eerst op een host geïnstalleerd worden, de
printerhost, door de printerinstallatie
te volgen als beschreven in Eenvoudige
printerinstallatie. Stel desgewenst de printer in
voor geavanceerde taken volgens Geavanceerde
printerinstallatie. Test de printer en controleer
of deze werkt met eventueel speciaal ingestelde opties voor
LPD. De lokale
host moet geautoriseerd zijn om de
LPD-dienst op de
verre host te gebruiken (zie Opdrachten
van hosts op afstand beperken).printersnetwerkafdrukken via netwerkAls een printer een netwerkinterface heeft die compatibel
is met LPD, dan is de
printerhost in onderstaande beschrijving
de printer zelf en de printernaam is de
naam die voor de printer is ingesteld. Meer informatie staat
in de documentatie bij de printer en/of de
printernetwerkinterface.Bij een HP LaserJet voert de printernaam
text automatisch de CRLF-conversie uit.
Het is dan niet nodig het script hpif
te gebruiken.Op hosts die toegang moeten krijgen tot de printer, moet
in /etc/printcap een regel worden
toegevoegd met het volgende:Geef de regel een willekeurige naam. Om het
eenvoudig te houden kunnen wellicht het beste dezelfde
namen en aliassen worden gebruikt als op de
printerhost;Laat de optie lp expliciet leeg
(:lp=:);Maak een wachtrijmap aan en geef de locatie op met de
optie sd.
LPD slaat hier
afdrukopdrachten op alvorens ze naar de printerhost
te sturen;Geef de naam van de printerhost op met de optie
rm;Geef de naam van de printer op de
printerhost op met de optie
rp.Dit is het. Conversiefilters, paginadimensies,
enzovoort, hoeven niet in /etc/printcap
opgegeven te worden.Hier volgt een voorbeeld. De host rose
heeft twee printers: bamboo en
rattan. Gebruikers op de host
orchid krijgen toegang tot deze printers.
Hier volgt /etc/printcap voor
orchid (uit Voorbladen
afdrukken). Er stond in het bestand al een regel voor
de printer teak. Voor de twee printers op
de host rose zijn twee regels
toegevoegd:#
# /etc/printcap voor host orchid - printers (op afstand) op rose toegevoegd
#
#
# teak is lokaal; het is direct aangesloten op orchid:
#
teak|hp|laserjet|HP LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
#
# rattan is aangesloten op rose; stuur opdrachten voor rattan naar rose:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
#
# bamboo is ook aangesloten op rose:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:Op orchid moeten wachtrijmappen worden
aangemaakt:&prompt.root; mkdir /var/spool/lpd/rattan/var/spool/lpd/bamboo
&prompt.root; chmod 770 /var/spool/lpd/rattan/var/spool/lpd/bamboo
&prompt.root; chown daemon:daemon /var/spool/lpd/rattan/var/spool/lpd/bambooNu kunnen gebruikers op orchid afdrukken
op rattan en bamboo.
Een gebruiker op orchid geeft bijvoorbeeld
de volgende invoer:&prompt.user; lpr bamboo sushi-review.dviDan kopieert LPD op
orchid de opdracht naar de wachtrijmap
/var/spool/lpd/bamboo
en ziet dat het een DVI-opdracht is. Zodra de host
rose ruimte heeft in zijn wachtrijmap
bamboo, sturen de twee
LPD's het bestand naar
rose. Het bestand wacht in de wachtrij van
rose totdat het succesvol is afgedrukt. Het
wordt geconverteerd naar &postscript; (aangezien
bamboo een &postscript;-printer is) op
rose.Printers met netwerkinterfacesNetwerkkaarten voor printers zijn er in twee versies:
een versie die een wachtrij nabootst (de duurdere versies),
of versies die alleen de mogelijkheid geven om er informatie
naar te sturen alsof het een seriële of parallelle poort
is (de goedkopere versies). In Printers
geïnstalleerd op andere hosts wordt het voor
de duurdere beschreven.Het formaat van /etc/printcap maakt
het mogelijk om op te geven welke seriële, of parallelle
poort gebruikt moet worden en (in geval van een seriële
poort) de baud-snelheid, of er communicatie moet worden
toegepast, vertragingen voor tabs, conversies voor nieuwe
regelkarakters en meer. Er is geen mogelijkheid om een
verbinding met een printer op te geven die op een TCP/IP of
andere netwerkpoort luistert.Om informatie naar een netwerkprinter te sturen, is het
nodig een programma te ontwikkelen dat door tekst- en
conversiefilters kan worden aangeroepen. Hier volgt een
voorbeeld: het script netprint stuurt alle
informatie van de standaard invoer naar een netwerkprinter.
Als eerste argument wordt de hostnaam van de printer
opgegeven en als tweede argument het poortnummer waarmee de
verbinding moet worden opgezet. Er wordt alleen
eenrichtingcommunicatie ondersteund (&os; naar printer).
Veel netwerkprinters ondersteunen tweewegcommunicatie. Het
kan wenselijk zijn hiervan gebruik te maken (om printerstatus
op te vragen, statistieken bij te houden, enzovoort).#!/usr/bin/perl
#
# netprint - Tekstfilter voor printer aangesloten op het netwerk
# Geïnstalleerd in /usr/local/libexec/netprint
#
$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";
$printer_host = $ARGV[0];
$printer_port = $ARGV[1];
require 'sys/socket.ph';
($ignore, $ignore, $protocol) = getprotobyname('tcp');
($ignore, $ignore, $ignore, $ignore, $address)
= gethostbyname($printer_host);
$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);
socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
|| die "Can't create TCP/IP stream socket: $!";
connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
while (<STDIN>) { print PRINTER; }
exit 0;Dit script kan vervolgens in verschillende filters
gebruikt worden. Stel dat een Diablo 750-N matrixprinter op
het netwerk is aangesloten. Op poort 5100 accepteert de
printer informatie om af te drukken. De hostnaam van de
printer is scrivener. Hier volgt het
tekstfilter voor de printer:#!/bin/sh
#
# diablo-if-net - Tekstfilter voor Diablo printer 'scrivener' luistert
# op poort 5100. Geïnstalleerd in /usr/local/libexec/diablo-if-net
#
exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100Printergebruik beperkenprinterstoegang beperkenNu volgt informatie over het beperken van printergebruik.
Het LPD-systeem maakt het mogelijk
te bepalen wie er toegang heeft tot een printer, zowel lokaal
als op afstand, of meerdere kopieën afgedrukt mogen
worden, hoe lang opdrachten mogen zijn en hoe lang wachtrijen
mogen worden.Meerdere kopieën beperkenHet LPD systeem maakt het heel
makkelijk voor gebruikers om meerdere afdrukken van een
bestand te maken. Gebruikers kunnen opdrachten afdrukken met
bijvoorbeeld lpr en
krijgen dan vijf kopieën van elk bestand in de opdracht.
De systeembeheerder kan beslissen of dit wenselijk is.Wanneer meerdere kopieën onwenselijk zijn, kan de
optie van &man.lpr.1; worden
uitgeschakeld door de optie sc in
/etc/printcap op te nemen. Als
gebruikers opdrachten versturen met de optie
, zien ze het volgende:lpr: multiple copies are not allowedAls het mogelijk is van andere hosts af te drukken (zie
Printers
geïnstalleerd op andere hosts), moet de optie
sc ook in
/etc/printcap van de andere hosts
aanwezig zijn. Anders kunnen gebruikers nog steeds
multi-kopie opdrachten van andere hosts sturen.Hier volgt een voorbeeld. Hieronder staat
/etc/printcap voor de host
rose. De printer rattan
is redelijk krachtig, dus meerdere kopieën zijn
toegestaan. De laserprinter bamboo is wat
gevoeliger, dus meerdere kopieë zijn uitgeschakeld door
de optie sc toe te voegen:#
# /etc/printcap voor host rose - beperk meerdere kopieën op bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:\
:lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Nu moet ook de optie sc worden
toegevoegd in /etc/printcap van host
orchid (tegelijk worden meerdere
kopieën voor de printer teak
uitgeschakeld):#
# /etc/printcap voor host orchid - geen meerdere kopieën voor lokale
# printer teak of printer op afstand bamboo
teak|hp|laserjet|HP LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:Door de optie sc te gebruiken, wordt
het gebruik van lpr
voorkomen, maar dat weerhoudt gebruikers er nog steeds niet
van om &man.lpr.1; meerdere keren te aanroepen of meerdere
keren hetzelfde bestand te versturen in een opdracht:&prompt.user; lpr voorverkoop.teken voorverkoop.teken voorverkoop.teken voorverkoop.teken voorverkoop.tekenEr zijn vele manieren om dit misbruik te voorkomen (onder
andere door het te negeren), welke vrij zijn om te
verkennen.Printertoegang beperkenDoor gebruik te maken van het &unix; groepmechanisme en
de optie rg in
/etc/printcap kan geregeld worden wie er
op welke printer kan afdrukken. De gebruikers die toegang
hebben tot een printer moeten in een groep worden geplaatst
en deze groep moet in de optie rg worden
genoemd.Als gebruikers buiten de groep (inclusief
root) naar de beheerde printer proberen
te printen, worden ze begroet met het volgende bericht:lpr: Not a member of the restricted groupNet als met de optie sc
(suppress multiple copies: onderdruk
meerdere kopieën) moet rg, indien
wenselijk, ook op andere hosts worden opgegeven die ook
toegang hebben tot printers (zie Printers
geïnstalleerd op andere hosts).In het volgende voorbeeld heeft iedereen toegang tot de
printer rattan, maar alleen gebruikers in
de groep artists kunnen gebruik maken
van bamboo. Hier volgt het bekende
/etc/printcap voor de host
rose:#
# /etc/printcap voor host rose - beperkte toegang voor groep bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\
:lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:De andere voorbeeldbestanden
/etc/printcap (voor de host
orchid) worden niet aangepast. Natuurlijk
kan iedereen op orchid afdrukken op
bamboo. Het kan zijn dat er sowieso alleen
bepaalde gebruikers op orchid zijn
toegestaan en dat deze gebruikers toegang mogen hebben tot de
printer. Of wellicht niet.Er kan per printer slechts één groep
worden opgegeven.Grootte van afdrukopdrachten bepalenafdrukopdrachtenAls veel gebruikers toegang hebben tot printers kan het
nodig zijn een limiet op te geven voor de grootte van de
bestanden die gebruikers naar een printer kunnen sturen. Er
is immers slechts beperkte ruimte op het bestandssysteem en
er moet ook voldoende ruimte zijn voor opdrachten van andere
gebruikers.afdrukopdrachtenbeherenLPD heeft de mogelijkheid om
met de optie mx een limiet op te geven
voor het maximum aantal bytes van een bestand in een
afdrukopdracht. De eenheden worden opgegeven in
BUFSIZ blokken, die 1024 bytes groot zijn.
Een nul voor deze optie betekent geen limiet aan de
bestandsgrootte. Als de optie wordt weggelaten, wordt een
standaardlimiet van 1000 blokken gebruikt.De limiet heeft betrekking op de
bestanden in een opdracht,
niet op de totale grootte van een
opdracht.LPD weigert een bestand dat
groter is dan de opgegeven limiet niet. In plaats daarvan
plaatst het zo veel mogelijk van het bestand op de wachtrij,
om dit vervolgens af te drukken. De rest wordt genegeerd.
Of dit gedrag wenselijk is, is onderwerp van debat.Nu worden limieten voor de voorbeeldprinters
rattan en bamboo
opgegeven. Aangezien de &postscript;-bestanden van die
artists nogal groot kunnen worden,
krijgen ze een limiet van vijf megabyte opgelegd. Er wordt
geen limiet opgelegd voor de platte tekst printer:#
# /etc/printcap voor host rose
#
#
# Geen limiet op opdrachtgrootte:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:mx#0:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
#
# Limiet van vijf megabyte:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Ook hier zijn de limieten alleen van toepassing op lokale
gebruikers. Als toegang tot deze printers van andere hosts
mogelijk is, worden deze gebruikers niet beperkt. Het is
daarom nodig de optie mx ook in de
/etc/printcap van de betreffende hosts
op te geven. In Printers
geïnstalleerd op andere hosts staat meer
informatie over afdrukken op andere hosts.Er is een andere gespecialiseerde manier om
opdrachtgrootte voor printers op afstand te beperken (zie
Opdrachten
van hosts op afstand beperken.Opdrachten van hosts op afstand beperkenHet wachtrijsysteem LPD
beschikt over verschillende methoden om afdrukopdrachten van
hosts op afstand te beperken:HostbeperkingenMet de bestanden
/etc/hosts.equiv en
/etc/hosts.lpd kan worden
ingesteld van welke hosts op afstand een lokale
LPD-opdracht wordt
geaccepteerd. LPD
controleert of een inkomend verzoek afkomstig is van
een host die wordt genoemd in een van deze bestanden.
Zo niet, dan weigert LPD het
verzoek.Het formaat van deze bestanden is eenvoudig:
één host per regel.
/etc/hosts.equiv wordt ook
gebruikt door het protocol &man.ruserok.3; en heeft
invloed op programma's als &man.rsh.1; en &man.rcp.1;.
Voorzichtigheid is dus geboden.Als voorbeeld volgt hier
/etc/hosts.lpd voor de host
rose:orchid
violet
madrigal.fishbaum.deDit betekent dat rose verzoeken
accepteert van de hosts orchid,
violet en
madrigal.fishbaum.de.
Voor iedere andere host die verbinding probeert te
maken met LPD op
rose, wordt de opdracht
geweigerd.OmvangbeperkingenDe hoeveelheid vrije ruimte die over moet blijven
op een bestandssysteem waar een wachtrij zich bevindt
kan ook worden ingesteld. Hiervoor moet een bestand
met de naam minfree in de
wachtrijmap worden aangemaakt. In dit bestand kan
een getal worden gezet dat het aantal schijfblokken
(512 bytes) aan vrije ruimte aangeeft dat beschikbaar
moet blijven wil een opdracht worden
geaccepteerd.Hiermee kan worden gegarandeerd dat gebruikers op
afstand een bestandssysteem niet vol kunnen schrijven.
Ook kan hierdoor een soort voorrang worden gegeven aan
lokale gebruikers: zij kunnen nog opdrachten plaatsen
als de vrije schijfruimte al lang beneden de opgegeven
limiet uit minfree is
gekomen.Als voorbeeld wordt een bestand
minfree voor de printer
bamboo toegevoegd. In
/etc/printcap staat de juiste
wachtrijmap:bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:De wachtrijmap wordt opgegeven met de optie
sd. Er wordt een limiet van drie
megabyte ingesteld (wat gelijk staat aan 6144
schijfblokken) voor de hoeveelheid vrije schijfruimte
die op het bestandssysteem beschikbaar moet zijn
voordat LPD een opdracht op
afstand accepteert:&prompt.root; echo 6144 > /var/spool/lpd/bamboo/minfreeGebruikersbeperkingenMet de optie rs in
/etc/printcap kan worden geregeld
welke gebruikers op afstand kunnen afdrukken op lokale
printers. Als rs voorkomt voor
een lokale printer accepteert
LPD opdrachten van hosts op
afstand als de gebruiker die de
opdracht wil plaatsen ook een account heeft met
dezelfde gebruikersnaam op de lokale host. Anders
weigert LPD de
opdracht.Deze optie is met name nuttig in een omgeving waar
(bijvoorbeeld) verschillende afdelingen een netwerk
delen en gebruikers de grenzen van de afdeling
overschrijden. Door ze een account te geven op een
systeem kunnen ze de aangesloten printers gebruiken
vanaf het systeem van hun eigen afdeling. Wanneer ze
alleen gebruik mogen maken van de
printers en niet van overige diensten op de computer,
kunnen tokenaccounts worden aangemaakt,
zonder thuismap en met een nutteloze shell als
/usr/bin/false.Printergebruik administrerenadministratieprinterHet kan nodig zijn om afdrukken te doorbelasten. Inkt en
papier kosten geld en er zijn onderhoudskosten. Printers
zitten vol met bewegende delen en hebben de neiging kapot te
gaan. Nu is er gekeken naar de printers, het gebruikerspatroon
en de onderhoudskosten en op basis hiervan is een prijs
vastgesteld per pagina (of per centimeter, per meter, of per
wat dan ook). Hoe wordt nu een administratie bijgehouden van
gemaakte afdrukken?Het slechte nieuws is dat het wachtrijsysteem
LPD hierbij niet echt helpt. Het
administreren van afdrukken is erg afhankelijk van het type
printer, het afdrukformaat en de wensen die een
systeembeheerder heeft ten aanzien van het doorbelasten van
printergebruik.Om het administreren te implementeren, is het nodig om
aanpassingen te maken in de tekstfilter (om platte tekst
opdrachten te belasten) en de conversiefilters (om opdrachten
in andere bestandsformaten te belasten), om pagina's te tellen,
of de printer te vragen hoeveel pagina's er zijn afgedrukt.
Het volstaat niet om het eenvoudige uitvoerfilter te gebruiken,
aangezien dit niet in staat is het gebruik te administreren.
Zie Filters.In het algemeen zijn er twee manieren om gebruik te
administreren:Periodiek administreren is de meer
gebruikelijke manier, omdat het waarschijnlijk makkelijker
is. Als iemand een opdracht afdrukt, schrijft het filter
de gebruiker, host en het aantal pagina's in een
administratiebestand. Elke maand, semester, jaar, of
een andere gewenste periode kunnen de
administratiebestanden verzameld worden om het aantal
afgedrukte pagina's op te tellen en het gebruik in rekening
te brengen. De logboekbestanden kunnen vervolgens
geschoond worden, zodat met een schone lei de volgende
periode begonnen kan worden.Directe administratie is minder
gebruikelijk, waarschijnlijk omdat het moeilijker is. Met
deze methode zorgen de filters ervoor dat gebruikers voor
hun printergebruik worden afgerekend op het moment dat ze er
gebruik van maken. Net als schijfquota is de administratie
onmiddellijk. Hiermee wordt voorkomen dat gebruikers kunnen
afdrukken wanneer ze over hun limiet zijn gegaan. Ook
biedt dit de mogelijkheid voor gebruikers om hun
afdrukquotum te controleren, of aan te passen. Deze
methode vereist databasecode om gebruikers en hun quota bij
te houden.Het wachtrijsysteem LPD
ondersteunt beide methoden op eenvoudige wijze. Aangezien de
filters (meestal) moeten worden aangeleverd, moet ook de code
voor de administratie worden geleverd. Er is echter een
voordeel: er is grote flexibiliteit in de administratiemethode.
Zo kan bijvoorbeeld gekozen worden tussen periodieke of directe
administratie. Er kan gekozen worden welke informatie
opgeslagen wordt: gebruikersnamen, hostnamen, type opdracht,
aantal afgedrukte pagina's, hoe lang het afdrukken duurde,
enzovoort. Dit alles kan worden gedaan door de filters aan te
passen.Kort door de bocht printeradministratie&os; wordt met twee programma's geleverd waarmee
periodieke administratie direct kan worden opgezet. Het zijn
het tekstfilter lpf, beschreven in lpf: een
tekstfilter en &man.pac.8;, een programma dat posten
uit administratiebestanden verzamelt en optelt.Zoals beschreven in de sectie over filters (Filters), roept
LPD de tekst- en conversiefilters
aan met de naam van het administratiebestand als argument.
De filters kunnen dit argument gebruiken om te bepalen in
welk bestand de gegevens voor de administratie moeten worden
weggeschreven. De naam van dit bestand is afkomstig van de
optie af uit
/etc/printcap. Als er geen absoluut pad
wordt opgegeven, dan is de locatie relatief aan de
wachtrijmap.LPD start
lpf met paginabreedte en -lengte
argumenten (afkomstig uit de opties pw en
pl). Het filter lpf
gebruikt deze argumenten om te bepalen hoeveel papier er
gebruikt zal worden. Nadat het bestand naar de printer is
gestuurd, schrijft het een post in het administratiebestand.
De posten zien er als volgt uit:2.00 rose:andy
3.00 rose:kelly
3.00 orchid:mary
5.00 orchid:mary
2.00 orchid:zhangAangezien lpf geen ingebouwde logica
voor bestandslocking kent, moet voor elke printer een apart
administratiebestand gebruikt worden. Twee
lpfs kunnen elkaars posten corrumperen als
ze tegelijk in hetzelfde bestand schrijven. De optie
af=acct in
/etc/printcap biedt een makkelijke
manier om er zeker van te zijn dat aparte bestanden worden
gebruikt. Dan bevindt elk administratiebestand zich in de
wachtrijmap van de betreffende printer en krijgt de naam
acct krijgenWanneer het tijd is om met gebruikers af te rekenen voor
hun afdrukken, kan het programma &man.pac.8; gedraaid worden.
Ga naar de wachtrijmap van de printer waarvoor betaald moet
worden en typ pac. Er verschijnt een
dollar-centrische samenvatting zoals het volgende: Login pages/feet runs price
orchid:kelly 5.00 1 $ 0.10
orchid:mary 31.00 3 $ 0.62
orchid:zhang 9.00 1 $ 0.18
rose:andy 2.00 1 $ 0.04
rose:kelly 177.00 104 $ 3.54
rose:mary 87.00 32 $ 1.74
rose:root 26.00 12 $ 0.52
total 337.00 154 $ 6.74Dit zijn de argumenten die &man.pac.8; verwacht:De printer waarvoor een
samenvatting moet worden gegenereerd. Deze optie werkt
alleen als er een absoluut pad is gegeven in de optie
af in
/etc/printcap.Sorteer de uitvoer op kosten, in plaats van
alfabetisch op gebruikersnaam.Negeer de hostnamen in het administratiebestand.
Met deze optie is de gebruiker
smith op host
alpha dezelfde gebruiker als
smith op host
gamma. Zonder deze optie zijn het
verschillende gebruikers.Bereken de prijs met
prijs dollar per pagina of
per voet, in plaats van de prijs uit de optie
pc in
/etc/printcap of twee cent (de
standaard). De prijs kan
worden opgegeven als een decimaal getal.Keer de sorteervolgorde om.Maak een bestand met een samenvatting van de
administratie en leeg het administratiebestand.namen…Druk de administratiegegevens alleen af voor
gebruikersnamen namen.In de standaard samenvatting die &man.pac.8; genereert,
is het aantal pagina's te zien dat iedere gebruiker vanaf een
bepaalde host heeft afgedrukt. Wanneer de hostnaam niet
van belang is (bijvoorbeeld omdat gebruikers iedere host
kunnen gebruiken), gebruik dan pac
om de volgende samenvatting te
genereren: Login pages/feet runs price
andy 2.00 1 $ 0.04
kelly 182.00 105 $ 3.64
mary 118.00 35 $ 2.36
root 26.00 12 $ 0.52
zhang 9.00 1 $ 0.18
total 337.00 154 $ 6.74Om het verschuldigde bedrag te berekenen gebruikt
&man.pac.8; de optie pc uit
/etc/printcap (standaard aantal van 200
of 2 cent per pagina). Specificeer, in honderden
centen, de prijs per pagina of per voet die berekent moet
worden. Deze waarde kan worden aangepast door &man.pac.8;
aan te roepen met de optie . De eenheden
van de optie zijn echter in dollars, niet
in honderden centen. Bijvoorbeeld,&prompt.root; pac zorgt ervoor dat elke pagina 1,50 dollar kost. U kunt
echt grote winsten maken met deze optie.Tenslotte kan met pac
de samenvatting worden
opgeslagen in een bestand dat dezelfde naam krijgt als het
administratiebestand van de printer, maar dan met
_sum toegevoegd aan de naam. Vervolgens
wordt het administratiebestand geleegd. Als &man.pac.8;
opnieuw wordt aangeroepen, herleest &man.pac.8; het
samenvattingsbestand om de startwaarden te bepalen en telt
daar de informatie bij op van het standaard
administratiebestand.Hoe kan het aantal afgedrukte pagina's worden
geteld?Om ook maar de minste nauwkeurigheid bij het
administreren te verkrijgen, is het nodig te weten hoeveel
papier een afdrukopdracht gebruikt. Dit is het centrale
probleem van het bijhouden van printerstatistieken.Voor opdrachten met platte tekst is het probleem niet zo
moeilijk op te lossen: het aantal regels in een opdracht
wordt geteld en vergeleken met het aantal regels per pagina
dat door een printer wordt ondersteund. Hierbij moet niet
worden vergeten dat backspaces in het bestand regels
overschrijven en dat lange logische regels worden afgedrukt
als meerdere fysieke regels.Het tekstfilter lpf
(geïntroduceerd in lpf: een
tekstfilter) houdt met deze zaken rekening bij het
administreren. Als het nodig is een tekstfilter te schrijven
dat ook het printergebruik moet bijhouden, dan is het nuttig
de broncode van lpf te bestuderen.Hoe worden andere bestandsformaten dan verwerkt?Voor een DVI-naar-LaserJet, of DVI-naar-&postscript;
conversie kan het filter de diagnostische uitvoer van
dvilj of dvips bekijken
om te bepalen hoeveel pagina's er zijn geconverteerd. Voor
andere formaten kan hetzelfde worden gedaan met behulp van de
betreffende conversieprogramma's.Deze methoden hebben echter als nadeel dat een printer
eventueel niet alle pagina's ook daadwerkelijk afdrukt. Zo
kan het papier vast komen te zitten, de toner opraken of de
printer ontploffen, terwijl de gebruiker toch moet
betalen.Dus, wat kan hieraan worden gedaan?Er is slechts één
betrouwbare manier om
nauwkeurig te administreren. Dat is
met behulp van een printer die kan vertellen hoeveel papier
er is gebruikt. Deze moet vervolgens worden aangesloten
met een seriële lijn, of een netwerkverbinding. Bijna
alle &postscript;-printers hebben deze mogelijkheid, andere
modellen en merken mogelijk ook (bijvoorbeeld Imagen
netwerklaserprinters). De filters dienen voor deze printers
aangepast te worden om het papierverbruik na elke opdracht te
achterhalen en de administratieve informatie
alleen op deze waarde te baseren. Er is
geen noodzaak om foutgevoelig regels te tellen of bestanden
te analyseren.Natuurlijk kan een beheerder ook vrijgevig zijn en alle
afdrukken gratis maken.Printers gebruikenprintersgebruikHieronder wordt beschreven hoe printers die onder &os;
geïnstalleerd zijn gebruikt moeten worden. Nu volgt een
overzicht van de commando's op gebruikersniveau:&man.lpr.1;Druk opdrachten af&man.lpq.1;Controleer printerwachtrijen&man.lprm.1;Verwijder opdrachten uit de wachtrij van een
printerEr is ook een administratief commando, &man.lpc.8;,
beschreven in Printers
beheren, dat gebruikt wordt om printers en hun
wachtrijen in te stellen.Alledrie de commando's &man.lpr.1;, &man.lprm.1; en
&man.lpq.1; accepteren een optie
om aan
te geven op welke printer uit /etc/printcap
een opdracht van toepassing is. Dit biedt de mogelijkheid
opdrachten te versturen, verwijderen en controleren voor
verschillende printers. Als niet wordt
gebruikt, werken deze commando's op de printer gedefinieerd in de
omgevingsvariabele PRINTER. Tot slot, wanneer
de omgevingsvariabele PRINTER niet is
gedefinieerd, wordt standaard verwezen naar de printer met de
naam lp.Opdrachten afdrukkenOm bestanden af te drukken:&prompt.user; lpr bestandsnaam...afdrukkenDit drukt elk van de opgegeven bestanden af op de standaard
printer. Als geen bestanden worden opgegeven, drukt
&man.lpr.1; de standaard invoer af. De volgende opdracht drukt
bijvoorbeeld een paar belangrijke systeembestanden af:&prompt.user; lpr /etc/host.conf/etc/hosts.equivOm een specifieke printer te selecteren:&prompt.user; lpr printernaambestandsnaam...Dit voorbeeld drukt een lange opgave van de huidige map af
op de printer rattan:&prompt.user; ls | lpr rattanOmdat er geen bestanden worden meegegeven aan het commando
&man.lpr.1;, drukt lpr de gegevens af
die het van de standaard invoer leest: de uitvoer van het
commando ls .&man.lpr.1; accepteert ook een breed scala aan opties
om de vorm aan te passen, bestandsconversies toe te passen,
meerdere kopieën af te drukken, enzovoort. Meer
informatie staat in Afdrukopties.Opdrachten controlerenafdrukopdrachtenAls &man.lpr.1; wordt gebruikt om af te drukken, dan
worden de gegevens die afdrukt moet worden in een pakketje
samengevoegd dat een afdrukopdracht wordt
genoemd en naar het wachtrijsysteem
LPD gestuurd. Elke printer heeft
een wachtrij met opdrachten van alle gebruikers. Een printer
drukt deze opdrachten op volgorde van binnenkomst af.De wachtrij voor de standaardprinter kan worden weergegeven
met &man.lpq.1;. Voor een specifieke printer moet de optie
meegegeven worden. Het volgende commando
toont de wachtrij van printer bamboo:&prompt.user; lpq bambooHieronder volgt een voorbeeld van de uitvoer van het
commando lpq:bamboo is ready and printing
Rank Owner Job Files Total Size
active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
2nd kelly 10 (standard input) 1635 bytes
3rd mary 11 ... 78519 bytesDit laat drie opdrachten zien in de wachtrij voor
bamboo. De eerste opdracht, gegeven door
gebruiker kelly, heeft opdrachtnummer 9
gekregen. Elke opdracht voor een printer krijgt een uniek
opdrachtnummer. Dit nummer kan in de meeste gevallen genegeerd
worden, maar is nodig om een opdracht te annuleren. In Opdrachten verwijderen staan
meer details.Opdrachtnummer negen bestaat uit twee bestanden; meerdere
bestanden opgegeven naar &man.lpr.1;, worden als
één enkele opdracht behandeld. Het is de actieve
opdracht (active onder de kolom
Rank), wat betekent dat de printer deze opdracht
momenteel aan het afdrukken is. De tweede opdracht bestaat uit
gegevens doorgegeven aan &man.lpr.1; als standaard invoer. De
derde opdracht is afkomstig van gebruiker
mary. Het is een veel grotere opdracht.
De bestandsnaam van het bestand dat ze probeert af te drukken
is te lang voor het overzicht, daarom toont &man.lpq.1; drie
puntjes.De allereerste regel uitvoer van &man.lpq.1; is ook handig:
die vertelt wat de printer momenteel aan het doen is; dat wil
zeggen, wat LPD denkt dat de printer
aan het doen is.Het commando &man.lpq.1; ondersteunt ook een optie
om een gedetailleerd, lang overzicht te
geven. Hieronder volgt voorbeelduitvoer van
lpq :waiting for bamboo to become ready (offline ?)
kelly: 1st [job 009rose]
/etc/host.conf 73 bytes
/etc/hosts.equiv 15 bytes
kelly: 2nd [job 010rose]
(standard input) 1635 bytes
mary: 3rd [job 011rose]
/home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytesOpdrachten verwijderenEen gebruiker die van gedachten verandert over een af te
drukken opdracht, kan een opdracht uit een wachtrij halen met
het commando &man.lprm.1;. Vaak kan met &man.lprm.1; zelfs een
actieve opdracht worden verwijderd, maar een deel of alles van
de opdracht kan desondanks toch worden afgedrukt.Om een opdracht van de standaardprinter te verwijderen
dient eerst met &man.lpq.1; het opdrachtnummer gevonden te
worden. Typ vervolgens:&prompt.user; lprm opdrachtnummerOm een opdracht van een specifieke printer te verwijderen,
moet de optie worden toegevoegd. Het
volgende commando verwijdert opdrachtnummer 10 uit de wachtrij
van printer bamboo:&prompt.user; lprm bamboo 10Het commando &man.lprm.1; heeft een aantal
snelkoppelingen:lprm -Verwijder alle opdrachten (voor de standaardprinter)
van de huidige gebruiker.lprm gebruikerVerwijder alle opdrachten (voor de standaardprinter)
die van gebruiker zijn. De
supergebruiker kan opdrachten van andere gebruikers
verwijderen. Andere gebruikers kunnen alleen hun eigen
opdrachten verwijderen.lprmZonder een opdrachtnummer, gebruikersnaam of
op de opdrachtregel, verwijdert
&man.lprm.1; de huidige actieve opdracht van de huidige
gebruiker op de standaard printer. Alleen de
supergebruiker kan iedere actieve opdracht verwijderen.Gebruik de optie met bovenstaande
snelkoppelingen om een specifieke printer in plaats van de
standaard printer te selecteren. Het volgende voorbeeld
verwijdert alle opdrachten van de huidige gebruiker uit de
wachtrij van printer rattan:&prompt.user; lprm rattan -Als in een netwerkomgeving wordt gewerkt, staat
&man.lprm.1; alleen toe opdrachten te verwijderen vanaf
hosts waarvan de afdrukopdrachten zijn gegeven, ook als
dezelfde printer vanaf andere hosts bereikbaar is. Het
volgende voorbeeld demonstreert dit:&prompt.user; lpr rattan mijnbestand
&prompt.user; rlogin orchid
&prompt.user; lpq rattan
Rank Owner Job Files Total Size
active seeyan 12 ... 49123 bytes
2nd kelly 13 myfile 12 bytes
&prompt.user; lprm rattan 13
rose: Permission denied
&prompt.user; logout
&prompt.user; lprm rattan 13
dfA013rose dequeued
cfA013rose dequeuedMeer dan platte tekst: afdrukoptiesHet commando &man.lpr.1; ondersteunt een aantal opties voor
de opmaak van platte tekst, het converteren van grafische en
andere bestandsformaten, het afdrukken van meerdere
kopieën, afwikkeling van een opdracht en meer. In deze
sectie worden die opties beschreven.Opties voor opmaak en conversieDe volgende opties voor &man.lpr.1; zorgen voor de opmaak
van de bestanden in de opdracht. Gebruik deze opties als de
opdracht geen platte tekst bevat of als platte tekst
opgemaakt dient te worden met behulp van &man.pr.1;.&tex;Het volgende commando drukt bijvoorbeeld een DVI-bestand
af (van het &tex; typesettingsysteem) met de naam
visrapport.dvi
op de printer bamboo:&prompt.user; lpr bamboo -d visrapport.dviDeze opties zijn van toepassing op alle bestanden in de
opdracht. Het is dus niet mogelijk om bijvoorbeeld DVI- en
ditroff-bestanden in een opdracht samen te voegen. In plaats
hiervan moeten deze bestanden als aparte opdrachten worden
gegeven, elk met een andere conversie-optie.Al deze opties, behalve en
, vereisen dat er conversiefilters zijn
geïnstalleerd voor een printer. De optie
vereist bijvoorbeeld het
DVI-conversiefilter. In Conversiefilters
staan de details beschreven.Afdrukken van cifplot-bestanden.Afdrukken van DVI-bestanden.Afdrukken van FORTRAN tekstbestanden.Afdrukken van plotgegevens.De uitvoer wordt aantal
kolommen ingesprongen. Als
nummer wordt weggelaten,
wordt acht kolommen ingesprongen. Deze optie werkt
alleen met bepaalde conversiefilters.Plaats geen spatie tussen de
en het nummer.Drukt letterlijke tekstgegevens af, inclusief
controlekarakters.Afdrukken van ditroff (apparaatonafhankelijke troff)
gegevens.-pOpmaak van platte tekst met &man.pr.1; alvorens af
te drukken. Zie &man.pr.1; voor meer informatie.Gebruik titel op de
&man.pr.1; koptekst in plaats van de bestandsnaam.
Deze optie heeft alleen effect in combinatie met de
optie .Afdrukken van troffgegevens.Afdrukken van rastergegevens.In het volgende voorbeeld wordt een mooi opgemaakte
versie van de handleiding &man.ls.1; afgedrukt op de
standaardprinter:&prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -man | lpr Het commando &man.zcat.1; pakt de broncode van de
&man.ls.1; handleiding uit en geeft het door aan het commando
&man.troff.1;, dat de broncode opmaakt, er GNU troff van
maakt en dit doorstuurt naar &man.lpr.1;, dat de opdracht
naar de LPD wachtrij stuurt.
Omdat de optie meegeven wordt aan
&man.lpr.1;, converteert het wachtrijsysteem de GNU troff
uitvoer naar een formaat dat de standaardprinter begrijpt als
de opdracht wordt afgedrukt.Opties voor opdrachtafhandelingDe volgende opties voor &man.lpr.1; geven
LPD aan de opdracht speciaal te
behandelen:-# kopieënProduceer een aantal van
kopieën kopieën
van elk bestand in de opdracht, in plaats van
één kopie. Een beheerder kan deze optie
uitschakelen om slijtage van de printer te voorkomen en
gebruik van een kopieerapparaat aan te moedigen. Zie
Meerdere
kopieën beperken.Dit voorbeeld drukt drie kopieën af van
parser.c
gevolgd door drie kopieën van
parser.h
op de standaardprinter:&prompt.user; lpr parser.c parser.h-mStuur een email na voltooiing van de afdrukopdracht.
Met deze optie stuurt het
LPD-systeem een email als
een opdracht is afgehandeld. In dit bericht vertelt
het of de opdracht succesvol is uitgevoerd of dat er
een fout was met (vaak) de aard van de fout.-sKopieer de bestanden niet naar de wachtrijmap,
maar maak in plaats hiervan een symbolische
link.Bij het afdrukken van een grote opdracht is het
handig van deze optie gebruik te maken. Het spaart
ruimte in de wachtrijmap (het kan zijn dat de opdracht
de vrije ruimte verbruikt in het bestandssysteem waarin
de wachtrijmap zich bevindt). Het bespaart ook tijd,
omdat LPD niet elke byte van
de opdracht naar de wachtrijmap hoeft te
kopieëren.Er is echter een nadeel: aangezien
LPD het originele bestand
nodig heeft, is het niet mogelijk dit te wijzigen, of
te verwijderen totdat het is afgedrukt.Bij het afdrukken op een printer in een netwerk,
moet LPD een bestand
uiteindelijk toch kopieëren van een lokale host
naar een netwerkhost. De optie
bespaart dus ruimte in een lokale wachtrijmap, niet
in die van een host in een netwerk. Het blijft
echter nuttig.-rVerwijder bestanden in een opdracht na ze naar een
wachtrij gekopieerd te hebben of na ze te hebben
afgedrukt als de optie is gebruikt.
Wees voorzichtig met deze optie!VoorbladoptiesDeze opties voor &man.lpr.1; passen de tekst aan die
gewoonlijk op het voorblad van een opdracht verschijnt. Deze
opties hebben geen effect als het afdrukken van voorbladen
wordt onderdrukt op een gebruikte printer. Zie Voorbladen
voor meer informatie over het opzetten van voorbladen.-C tekstVervang de hostnaam op het voorblad door
tekst. De hostnaam is
gewoonlijk de naam van de host waarvan de opdracht is
verstuurd.-J tekstVervang de naam van de opdracht op het voorblad
door tekst. De naam van de
opdracht is standaard de naam van het eerste bestand in
de opdracht of stdin als de
standaard uitvoer wordt afgedrukt.-hDruk geen voorblad af.Bij sommige installaties kan het zijn dat deze
optie geen effect heeft door de manier waarop de
voorbladen worden gegenereerd. Zie Voorbladen
voor de details.Printers beherenDe beheerder van de printers in een netwerk heeft deze
moeten installeren, opzetten en testen. Met het commando
&man.lpc.8; kan een beheerder op nog meer manieren communiceren
met printers. Met &man.lpc.8; is het mogelijk om:Printers te starten en te stoppen;Wachtrijen aan en uit te zetten;De volgorde van opdrachten in elke wachtrij
aan te passen.Ten eerste een opmerking over terminologie: als een
printer is gestopt, drukt die niets uit
een wachtrij af. Gebruikers kunnen nog steeds opdrachten
geven, maar opdrachten wachten in een wachtrij totdat de
bijbehorende printer is gestart of als de
wachtrij vrij is.Als een wachtrij is uitgeschakeld,
kan geen enkele gebruiker (behalve root)
opdrachten naar een printer versturen. Een
ingeschakelde wachtrij accepteert
opdrachten. Een printer met een uitgeschakelde wachtrij kan
worden gestart en drukt dan alle
afdrukopdrachten in de wachtrij af tot deze leeg is.In het algemeen is het nodig
root-rechten te hebben om het commando
&man.lpc.8; te gebruiken. Gewone gebruikers kunnen het
commando &man.lpc.8; gebruiken om een printerstatus op te
vragen en om een vastgelopen printer te herstarten.Nu volgt een samenvatting van de &man.lpc.8; commando's.
De meeste commando's accepteren een argument
printernaam, om aan te geven op
welke printer te werken. Om op alle printers te werken die in
/etc/printcap genoemd worden, kan
all worden gebruikt als
printernaam.abort
printernaamAnnuleer de huidige opdracht en stop de printer.
Gebruikers kunnen nog steeds opdrachten versturen als
de wachtrij is ingeschakeld.clean
printernaamVerwijder oude bestanden uit de wachtrijmap van
de betreffende printer. Het kan wel eens gebeuren dat de
bestanden waaruit een opdracht bestaat niet juist worden
verwijderd door LPD. Dit
gebeurt bijvoorbeeld wanneer er fouten zijn opgetreden
tijdens het afdrukken of tijdens grote administratieve
activiteit. Dit commando vindt en verwijdert bestanden
die niet in de wachtrijmap thuishoren.disable
printernaamNieuwe opdrachten kunnen niet meer in de wachtrij
worden geplaatst. Als de printer nog draait, drukt die
de opdrachten die zich nog in de wachtrij bevinden
af. De supergebruiker (root) kan
altijd opdrachten versturen, ook naar een uitgeschakelde
wachtrij.Dit commando is handig bij het testen van een nieuwe
printer of een filterinstallatie: schakel de wachtrij uit
en verstuur als root opdrachten.
Andere gebruikers kunnen geen opdrachten versturen totdat
het testen is voltooid en de wachtrij weer is
ingeschakeld met het commando
enable.down printernaamboodschapSchakel een printer uit. Equivalent aan
disable gevolgd door
stop. De
boodschap verschijnt als de
status van de printer als een gebruiker de wachtrij van
de printer controleert met &man.lpq.1; of de status
met lpc status.enable
printernaamSchakel de wachtrij van een printer in. Gebruikers
kunnen opdrachten versturen, maar de printer drukt ze pas
af als deze is gestart.help
commandonaamGeef hulp over het commando
commandonaam. Zonder
commandonaam, wordt een
samenvatting van de beschikbare commando's
getoond.restart
printernaamStart de printer. Gewone gebruikers kunnen dit
commando gebruiken als door een uitzonderlijke
omstandigheid LPD hangt, maar
ze kunnen een printer niet starten die gestopt is met
een van de commando's stop of
down. Het commando
restart is equivalent aan
abort gevolgd door
start.start
printernaamStart de printer. De printer drukt opdrachten in
zijn wachtrij af.stop
printernaamStop de printer. De printer maakt de huidige
opdracht af en drukt opdrachten in de wachtrij niet af.
Gebruikers kunnen nog steeds opdrachten versturen naar
een ingeschakelde wachtrij, ook al is de printer
gestopt.topq printernaamopdracht-of-gebruikersnaamHerschik de wachtrij voor
printernaam door de opdrachten
met de opgegeven opdracht
nummers of opdrachten van
gebruikersnaam bovenaan de
wachtrij te plaatsen. Voor dit commando is het niet
mogelijk all te gebruiken als
printernaam.up
printernaamSchakel een printer in. Het omgekeerde van het
commando down. Equivalent aan
start gevolgd door
enable.&man.lpc.8; accepteert bovenstaande commando's op de
opdrachtregel. Als er geen commando's worden gegeven,
schakelt &man.lpc.8; over op een interactieve modus, waar
opdrachten gegeven kunnen worden totdat het commando
exit, quit of
einde-van-bestand wordt gegeven.Alternatieven voor het standaard wachtrijsysteemNa het lezen van deze handleiding, heeft de lezer zo'n beetje
alles gelezen wat er te leren valt over het wachtrijsysteem
LPD zoals het te vinden
is in &os;. Er zijn veel tekortkomingen te onderkennen, wat
vanzelf leidt tot de vraag: Welke andere wachtrijsystemen
zijn er beschikbaar (en werken onder &os;)?LPRngLPRngLPRng, dat LPR: the
Next Generation betekent, is een compleet
herschreven PLP. Patrick Powell en Justin Mason (de
voornaamste beheerder van PLP) hebben samengewerkt om
LPRng te maken. De thuispagina
voor LPRng is .CUPSCUPSCUPS, het Common UNIX
Printing System, voorziet in een overzetbare printlaag voor
&unix;-achtige besturingssystemen. Het is ontwikkeld door
Easy Software Product, om een standaard afdrukoplossing
voor alle &unix;-producenten en gebruikers te
promoten.CUPS gebruikt het Internet
Printing Protocol (IPP) als basis voor
het beheren van afdrukopdrachten en wachtrijen. De
protocollen Line Printer Daemon (LPD),
Server Message Block (SMB) en AppSocket
(ook bekend als JetDirect) worden ook ondersteund met
minder functionaliteit. CUPS biedt bladeren naar
netwerkprinters en &postscript; Printer Description
(PPD) gebaseerde afdrukopties om
echt printen onder &unix; te ondersteunen.De thuispagina voor CUPS is
.HPLIPHPLIPHPLIP, het HP &linux; Imaging and
Printing systeem, is een suite van programma's ontwikkeld door HP
dat printen, scannen en faxen voor toepassingen van HP ondersteunt.
Deze suite van programma's maakt gebruikt van het printsysteem
CUPS als een backend voor sommige van
de printmogelijkheden.De thuispagina voor HPLIP is .Problemen oplossenNa het uitvoeren van een simpele test met &man.lptest.1; is
mogelijk een van onderstaande resultaten verkregen, in plaats
van de juiste uitvoer:Het werkte na enige tijd of er kwam geen volle
pagina.De printer drukte bovenstaande af, maar wachtte enige
tijd zonder iets te doen. Het was zelfs nodig om een
PRINT REMAINING, of FORM FEED-knop op te printer in te
drukken om enig resultaat te krijgen.Als dit het geval is, dan stond de printer
waarschijnlijk te wachten of er nog meer gegevens van de
opdracht zouden komen, alvorens iets af te drukken. Om dit
probleem op te lossen, kan het tekstfilter worden aangepast
zodat deze een FORM FEED-karakter (of wat er ook nodig is)
naar de printer stuurt. Dit is meestal voldoende om een
printer zover te krijgen om tekst af te drukken die zich
nog in de interne buffer bevindt. Het is ook nuttig om er
zeker van te zijn dat elke afdrukopdracht eindigt op een
hele pagina, zodat de volgende opdracht niet ergens midden
op de laatste pagina van de vorige opdracht begint.De volgende vervanging voor het shellscript
/usr/local/libexec/if-simple drukt een
form feed af nadat de opdracht naar een printer is
gestuurd:#!/bin/sh
#
# if-simple - Eenvoudige tekst invoerfilter voor lpd
# Geïinstalleerd in /usr/local/libexec/if-simple
#
# Kopieert eenvoudig stdin naar stdout. Negeer alle filterargumenten.
# Schrijft een form feed karakter (\f) na het afdrukken van de opdracht.
/bin/cat && printf "\f" && exit 0
exit 2De opdracht produceerde een getrapt effect.Het resultaat ziet er als volgt uit:!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456MS-DOSOS/2ASCIIDit krijgen slachtoffers van het
trapeffect te zien. Het wordt
veroorzaakt door conflicterende interpretaties van de
karakters die een regeleinde aangeven. &unix;-achtige
besturingssystemen gebruiken een enkel karakter: ASCII-code
10, de line feed (LF). &ms-dos;, &os2; en andere
besturingssystemen gebruiken twee karakters: ASCII-code 10
en ASCII-code 13 (de carriage return,
CR). Veel printers gebruiken de &ms-dos;-conventie voor
het representeren van regeleinden.Als onder &os; wordt afgedrukt, bevat de tekst alleen
het line feed-karakter. Na het zien van een line
feed-karakter vervolgt de printer zijn werk op de volgende
regel, maar behoudt dezelfde horizontale positie op de
pagina voor het afdrukken van het volgende teken. Hier is
de carriage return voor bedoeld: om het volgende karakter
af te drukken aan de linkerkant van de pagina.Dit is wat &os; wil dat de printer doet:Printer ontvangt CRPrinter drukt CR afPrinter ontvangt LFPrinter drukt CR + LF afHier volgen een aantal manieren om dit te
bereiken:Gebruik de instellingentoetsen of het
bedieningspaneel van de printer om de interpretatie van
deze karakters aan te passen. Controleer de
handleiding van de printer om uit te vinden hoe dit
moet.Als een systeem in een ander besturingssysteem
dan &os; wordt opgestart, kan het nodig zijn een
printer opnieuw in te stellen,
zodat die een interpretatie voor CR- en LF-karakters
gebruikt die bij dat andere besturingssysteem horen.
Het kan de voorkeur genieten een van onderstaande
oplossingen te gebruiken.Zorg dat het seriële lijnstuurprogramma van
&os; automatisch LF naar CR+LF converteert. Dit werkt
natuurlijk alleen voor printers op
een seriële poort. Gebruik de optie
ms# en zet de modus
onlcr in het bestand
/etc/printcap voor de printer om
deze functionaliteit in te schakelen.Stuur een escape-code naar een
printer om tijdelijk LF-karakters anders te behandelen.
Raadpleeg hiervoor de handleiding van de printer om
escape-codes te achterhalen die de printer ondersteunt.
Als de juiste escape-code is gevonden, moet de
tekstfilter worden aangepast zodat deze eerst de code
stuurt en vervolgens de afdrukopdracht.PCLHier volgt een eenvoudig tekstfilter voor printers
die HP PCL-escape-codes begrijpen. Dit filter zorgt dat
een printer LF-karakters behandelt als LF en CR,
vervolgens verstuurt het de opdracht en tot slot een
form feed om de laatste pagina in de opdracht uit te
voeren. Het zou met alle HP printers moeten
werken.#!/bin/sh
#
# hpif - Eenvoudig tekst invoerfilter voor lpd voor HP PCL-printers
# Geïnstalleerd in /usr/local/libexec/hpif
#
# Kopieert eenvoudig stdin naar stdout. Negeert alle filterargumenten.
# Vertelt de printer om LF te zien als CR+LF.
# Werpt de pagina uit na voltooiing.
printf "\033&k2G" && cat && printf "\033&l0H" && exit 0
exit 2Nu volgt een voorbeeldbestand
/etc/printcap voor host
orchid. Er is een printer aangesloten
op de eerste parallelle poort; een HP LaserJet 3Si,
genaamd teak. Die gebruikt
bovenstaand script als tekstfilter:#
# /etc/printcap voor host orchid
#
teak|hp|laserjet|HP LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:De regels zijn over elkaar afgedrukt.De printer is nooit een regel opgeschoven. Alle regels
tekst lopen over elkaar en zijn op dezelfde regel
afgedrukt.Dit probleem is het omgekeerde van het
trapeffect, zoals boven beschreven, en is veel zeldzamer.
Ergens worden de LF-karakters die &os; gebruikt om een
regel te eindigen gezien als CR-karakters om de
afdruklocatie te verplaatsen naar de linkerkant van het
papier, zonder óók een regel naar beneden te
gaan.Gebruik de instellingentoetsen, of het bedieningspaneel
van de printer om de volgende interpretatie van LF en CR af
te dwingen:Printer ontvangtPrinter drukt afCRCRLFCR + LFDe printer is karakters kwijt.Tijdens het afdrukken heeft de printer een paar
karakters per regel niet afgedrukt. Het kan zijn dat het
probleem erger werd naarmate de printer zijn werk deed,
steeds meer karakters verliezend.Het probleem is dat de printer de snelheid waarmee de
computer gegevens over een seriële lijn stuurt niet
bij kan houden (dit probleem zou zich niet voor moeten doen
met printers op een parallelle poort). Er zijn twee
manieren om dit probleem te verhelpen:Als de printer XON/XOFF flow-control ondersteunt,
zorg dan dat &os; dit gebruikt door de modus
ixon in de optie
ms# te specificeren.Als de printer de Request to Send / Clear to Send
hardware-handshake ondersteunt, (ook bekend als
RTS/CTS), specificeer dan de modus
crtscts in de optie
ms#. Zorg dat de bedrading
van de kabel die printer met de computer verbindt juist
is voor hardware flow-control.Er werd onzin afgedrukt.Het lijkt alsof de printer willekeurige onzin afdrukte
en niet de gewenste tekst.Dit is meestal een ander symptoom van verkeerde
communicatieparameters voor een seriële printer.
Controleer de bps-snelheid in de optie
br en de instelling voor pariteit in de
optie ms#. Wees er zeker van dat de
printer dezelfde instellingen gebruikt als in het bestand
/etc/printcap worden opgegeven.Er gebeurde niets.Als er niets gebeurde, ligt het probleem waarschijnlijk
bij &os; en niet bij de hardware. Voeg de optie
logboekbestand (lf) toe in
/etc/printcap voor de betreffende
printer. Hier is bijvoorbeeld de definitie voor
rattan met de optie
lf:rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:\
:lf=/var/log/rattan.logProbeer vervolgens nogmaals af te drukken. Controleer
het logboekbestand (in dit voorbeeld
/var/log/rattan.log) op mogelijke
foutmeldingen. Probeer op basis van deze melding het
probleem te verhelpen.Als er geen optie lf is opgegeven,
gebruikt LPD/dev/console als
standaard.
diff --git a/nl_NL.ISO8859-1/books/handbook/security/chapter.xml b/nl_NL.ISO8859-1/books/handbook/security/chapter.xml
index 498ae0dd24..d82c00785f 100644
--- a/nl_NL.ISO8859-1/books/handbook/security/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/security/chapter.xml
@@ -1,4307 +1,4305 @@
MatthewDillonVeel uit dit hoofdstuk is overgenomen uit de
security(7) handleiding van SiebrandMazelandVertaald door BeveiligingbeveiligingOverzichtDit hoofdstuk biedt een basisinleiding in
systeembeveiligingsconcepten, een aantal goede basisregels en
een paar gevorderde onderwerpen binnen &os;. Veel van de
onderwerpen die worden behandeld kunnen ook worden toegepast op
systemen en Internet in het algemeen. Het Internet is niet
langer een vriendelijke omgeving waar iedereen
een goede buur wil zijn. Het beveiligen van een systeem is
onontbeerlijk als gegevens, intellectueel eigendom, tijd en wat
dan ook uit de handen van hackers en dergelijke gehouden moeten
worden.&os; biedt veel hulpmiddelen en mechanismen om te zorgen
voor de integriteit en veiligheid van een systeem en
netwerk.Na het lezen van dit hoofdstuk weet de lezer:Van basis systeembeveiligingsconcepten in relatie tot
&os;.Meer over verschillende versleutelingsmechanismen die
beschikbaar zijn in &os; zoals DES en
MD5.Hoe eenmalige wachtwoordautenticatie opgezet kan
worden.Hoe TCP Wrappers in te stellen voor
gebruik met inetd.Hoe Kerberos5 op &os; opgezet
kan worden.Hoe IPsec wordt ingesteld en hoe een
VPN op te zetten tussen &os; en
µsoft.windows; machines.Hoe OpenSSH, &os;'s
SSH implementatie, in te stellen en te
gebruiken.Wat bestandssysteem-ACLs zijn en hoe
die te gebruiken;Hoe het hulpprogramma
Portaudit gebruikt kan worden om
softwarepakketten uit de Portscollectie te auditen.Hoe om te gaan met publicaties van &os;
beveiligingswaarschuwingen.Iets van procesaccounting en hoe dat is in te schakelen
in &os;.Er wordt aangenomen dat de lezer van dit hoofdstuk:Basisbegrip heeft van &os; en Internetconcepten.In dit boek worden nog meer onderwerpen met betrekking tot
beveiliging beschreven. Zo wordt bijvoorbeeld Verplichte
Toegangscontrole (Mandatory Access Control) besproken in en Internet Firewalls in .IntroductieBeveiliging is een taak die begint en eindigt bij de
systeembeheerder. Hoewel alle BSD &unix; meergebruikerssystemen
enige inherente beveiliging kennen, is het bouwen en onderhouden
van additionele beveiligingsmechanismen om de gebruikers
eerlijk te houden waarschijnlijk een van de
zwaarste taken voor de systeembeheerder. Machines zijn zo veilig
als ze gemaakt worden en beveiligingsoverwegingen staan altijd op
gespannen voet met de wens om gebruiksvriendelijkheid. &unix;
systemen zijn in het algemeen in staat tot het tegelijkertijd
uitvoeren van een enorm aantal processen en veel van die
processen acteren als server - daarmee wordt bedoeld dat externe
entiteiten er verbindingen mee kunnen maken en ertegen kunnen
praten. Nu de minicomputers en mainframes van gisteren de
desktops van vandaag zijn en computers onderdeel zijn van
netwerken en internetwerken, wordt beveiliging nog
belangrijker.Systeembeveiliging heeft ook te maken met het omgaan met
verschillende vormen van aanvallen, zoals een poging om een
systeem te crashen of op een andere manier onstabiel te maken,
zonder te proberen de root account aan te
vallen (break root). Aandachtspunten voor
beveiliging kunnen opgesplitst worden in categorieën:Ontzeggen van dienst aanvallen (Denial of
Service).Gebruikersaccounts compromitteren.root compromitteren via
toegankelijke servers.root compromitteren via
gebruikersaccounts.Achterdeur creëren (Backdoor).DoS aanvallenOntzegging van Dienst (DoS)beveiligingOntzegging van Dienst DoS aanvallen(DoS)Ontzegging van Dienst (DoS)Een ontzegging van dienst (DoS) aanval is een techniek die
de machine middelen ontneemt. In het algemeen zijn DoS aanvallen
brute kracht mechanismen die proberen de machine te crashen of op
een andere manier onbruikbaar te maken door de machine of de
netwerkcode te overvragen. Sommige DoS aanvallen proberen
misbruik te maken van bugs in de netwerkcode om een machine met
een enkel pakket te crashen. Zoiets kan alleen gerepareerd
worden door een aanpassing aan de kernel te maken. Aanvallen op
servers kunnen vaak hersteld worden door op de juiste wijze
opties in stellen om de belasting van servers te limiteren in
ongunstige omstandigheden. Omgaan met brute kracht aanvallen is
lastiger. Zo is een aanval met gefingeerde pakketten
(spoofed-packet) vrijwel niet te stoppen, behalve
dan door het systeem van Internet los te koppelen. Misschien
gaat de machine er niet door plat, maar het kan wel een volledige
Internetverbinding verzadigen.beveiligingaccount compromitterenEen gecompromitteerde gebruikersaccount komt nog veel vaker
voor dan een DoS aanval. Veel systeembeheerders draaien nog
steeds standaard telnetd,
rlogind,
rshd en
ftpd servers op hun machines. Deze
servers communiceren standaard niet over beveiligde verbindingen.
Het resultaat is dat als er een redelijk grote gebruikersgroep
is, er altijd wel van een of meer van de gebruikers die van
afstand op dat systeem aanmelden (wat toch de meest normale en
makkelijke manier is om op een systeem aan te melden) het
wachtwoord is afgeluisterd (sniffed). Een
oplettende systeembeheerder analyseert zijn logboekbestanden om
te zoeken naar verdachte bronadressen, zelfs als het om
succesvolle aanmeldpogingen gaat.Uitgangspunt moet altijd zijn dat als een aanvaller toegang
heeft tot een gebruikersaccount, de aanvaller de
root account kan compromitteren. In
werkelijkheid is het wel zo dat voor een systeem dat goed
beveiligd is en goed wordt onderhouden, toegang tot een
gebruikersaccount niet automatisch betekent dat de aanvaller ook
root privileges kan krijgen. Het is van
belang dit onderscheid te maken, omdat een aanvaller zonder
toegang tot root in het algemeen zijn sporen
niet kan wissen en op z'n best wat kan rommelen met bestanden van
de gebruiker of de machine kan crashen. Gecompromitteerde
gebruikersaccounts zijn vrij normaal omdat gebruikers normaliter
niet de voorzorgsmaatregelen nemen die systeembeheerders
nemen.beveiligingachterdeurenSysteembeheerders moeten onthouden dat er in potentie heel
veel manieren zijn om toegang tot root te
krijgen. Een aanvaller zou het
root wachtwoord kunnen kennen, een bug kunnen
ontdekken in een dienst die onder root
draait en daar via een netwerkverbinding op in kunnen breken of
een aanvaller zou een probleem kennen met een suid-root programma
dat de aanvaller in staat stelt root te
worden als hij eenmaal toegang heeft tot een gebruikersaccount.
Als een aanvaller een manier heeft gevonden om
root te worden op een machine, dan hoeft
hij misschien geen achterdeur (backdoor) te
installeren. Veel bekende manieren die zijn gevonden om
root te worden, en weer zijn afgesloten,
vereisen veel werk van de aanvaller om zijn rommel achter zich op
te ruimen, dus de meeste aanvallers installeren een achterdeur.
Een achterdeur biedt de aanvaller een manier om makkelijk opnieuw
root toegang tot het systeem te krijgen, maar
dit geeft de slimme systeembeheerder ook een makkelijke manier om
de inbraak te ontdekken. Het onmogelijk maken een achterdeur te
installeren zou best wel eens nadelig kunnen zijn voor
beveiliging, omdat hiermee nog niet het gat gedicht is waardoor
er in eerste instantie is ingebroken.Beveiligingsmaatregelen moeten altijd geïmplementeerd
worden in een meerlagenmodel en worden als volgt
gecategoriseerd:Beveiligen van root en
medewerkersaccounts.Beveiligen van root – servers
onder root en suid-/sgid-binaire
bestanden.Beveiligen van gebruikersaccounts.Beveiligen van het wachtwoordbestand.Beveiligen van de kern van de kernel, ruwe apparaten
en bestandssystemen.Snel detecteren van ongeoorloofde wijzigingen aan het
systeem.Paranoia.In het volgende onderdeel van dit hoofdstuk gaan we dieper in
op de bovenstaande punten.&os; beveiligenbeveiliging&os; beveiligenCommando versus protocolIn dit hele document gebruiken we
vette tekst om te verwijzen naar een
commando of applicatie en een monospaced
lettertype om te verwijzen naar specifieke commando's.
Protocollen staan vermeld in een normaal lettertype. Dit
typografische onderscheid is zinvol omdat bijvoorbeeld ssh
zowel een protocol als een commando is.In de volgende onderdelen behandelen we de methodes uit de
vorige paragraaf om een
&os;-systeem te beveiligen.Beveiligen van root en
medewerkersaccounts.suOm te beginnen: doe geen moeite om medewerkersaccounts
te beveiligen als de root account niet
beveiligd is. Op de meeste systemen heeft de
root account een wachtwoord. Als eerste
moet aangenomen worden dat dit wachtwoord
altijd gecompromitteerd is. Dit betekent
niet dat het wachtwoord verwijderd moet worden. Het wachtwoord
is namelijk bijna altijd nodig voor toegang via het console van
de machine. Het betekent wel dat het niet mogelijk gemaakt
moet worden om het wachtwoord te gebruiken buiten het console
om en mogelijk zelfs niet via het &man.su.1; commando. Pty's
moeten bijvoorbeeld gemarkeerd staan als onveilig
(insecure) in het bestand
/etc/ttys zodat direct aanmelden met
root via telnet
of rlogin niet wordt toegestaan. Als andere
aanmelddiensten zoals sshd gebruikt
worden, dan hoort direct aanmelden via
root uitgeschakeld staat. Dit kan door
het bestand /etc/ssh/sshd_config te
bewerken en ervoor te zorgen dat
PermitRootLogin op no
staat. Dit moet gebeuren voor iedere methode van toegang
– diensten zoals FTP worden vaak over het hoofd gezien.
Het direct aanmelden van root hoort alleen
te mogen via het systeemconsole.wheelNatuurlijk moet een systeembeheerder de mogelijkheid hebben
om root te worden. Daarvoor kunnen een
paar gaatjes geprikt worden. Maar dan moet ervoor gezorgd
worden dat er voor deze gaatjes extra aanmelden met een
wachtwoord nodig is. Eén manier om
root toegankelijk te maken is door het
toevoegen van de juiste medewerkersaccounts aan de
wheel groep (in
/etc/group). De medewerkers die lid zijn
van de groep wheel mogen
su–en naar root.
Maak medewerkers nooit native lid van de groep
wheel door ze in de groep
wheel te plaatsen in
/etc/group. Medewerkersaccounts horen lid
te zijn van de groep staff en horen dan
pas toegevoegd te worden aan de groep
wheel in het bestand
/etc/group. Alleen medewerkers die ook
echt toegang tot root nodig hebben horen
in de groep wheel geplaatst te worden.
Het is ook mogelijk, door een autenticatiemethode als Kerberos
te gebruiken, om het bestand .k5login van
Kerberos in de root account te gebruiken
om een &man.ksu.1; naar root toe te staan
zonder ook maar iemand lid te maken van de groep
wheel. Dit is misschien wel een
betere oplossing, omdat het
wheel-mechanisme het nog steeds mogelijk
maakt voor een inbreker root te breken als
de inbreker een wachtwoordbestand te pakken heeft gekregen en
toegang kan krijgen tot één van de
medewerkersaccounts. Hoewel het instellen van het
wheel-mechanisme beter is dan niets, is
het niet per se de meest veilige optie.Om een account volledig op slot te zetten, dient het
commando &man.pw.8; gebruikt te worden:&prompt.root; pw lock staffDit voorkomt dat de gebruiker zich aanmeldt via enig
mechanisme, inclusief &man.ssh.1;.Een andere manier om toegang tot accounts te blokkeren is om
het versleutelde wachtwoord door een enkel
*-karakter te vervangen. Dit
karakter zal nooit overeenkomen met het versleutelde wachtwoord
en dus gebruikerstoegang blokkeren. Het volgende
medewerkersaccount bijvoorbeeld:foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcshzou veranderd moeten worden in:foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcshDit voorkomt dat de gebruiker foobar
zich aanmeldt met conventionele methoden. Deze methode om
toegang te beperken werkt niet op sites die
Kerberos gebruiken of in situaties
waarin de gebruiker met &man.ssh.1; sleutels heeft
geïnstalleerd.Deze beveiligingsmechanismen hebben ook als uitgangspunt dat
vanaf een zwaarder beveiligde machine wordt aangemeld op een
minder beveiligd systeem. Als een hoofdserver bijvoorbeeld
allerlei servers draait, zou het werkstation er geen moeten
draaien. Om een werkstation redelijk veilig te laten zijn,
dienen er zo min mogelijk servers op te draaien, bij voorkeur
zelfs geen en er zou een schermbeveiliging met
wachtwoordbeveiliging op moeten draaien. Maar als een aanvaller
fysieke toegang heeft tot een werkstation, dan kan hij elke
beveiliging die erop is aangebracht omzeilen. Dit probleem
dient echt overwogen te worden, net als het feit dat de meeste
aanvallen van een afstand plaatsvinden, via het netwerk, door
mensen die geen fysieke toegang hebben tot werkstations of
servers.Het gebruik van iets als Kerberos geeft de mogelijkheid
om het wachtwoord van de account van een medewerker buiten
gebruik te stellen of te wijzigen op één plaats,
waarbij het meteen actief is op alle machines waarop die
medewerker een account heeft. Als de account van een
medewerker gecompromitteerd raakt, moet vooral de mogelijkheid
om per direct het wachtwoord voor machines te kunnen aanpassen
niet onderschat worden. Met afzonderlijke wachtwoorden kan het
veranderen van wachtwoorden op N systemen een puinhoop worden.
Met Kerberos kunnen ook wachtwoordrestricties opgelegd worden:
het is niet alleen mogelijk om een Kerberos
ticket na een bepaalde tijd te laten verlopen,
maar het Kerberos systeem kan afdwingen dat de gebruiker na een
bepaalde tijd een nieuw wachtwoord kiest (na bijvoorbeeld een
maand).Beveiligen van root – servers
onder root en suid-/sgid-binaire
bestandenntalkcomsatfingerzandbakkensshdtelnetdrshdrlogindEen voorzichtige systeembeheerder draait alleen die servers
die nodig zijn, niets meer, niets minder. Bedenk dat
servers van derde partijen vaak de meeste neiging hebben tot
het vertonen van bugs. Zo staat bijvoorbeeld het draaien van
een oude versie van imapd of
popper gelijk aan het weggeven van
de root account aan de hele wereld. Draai
nooit een server die niet zorgvuldig is onderzocht. Veel
servers hoeven niet te draaien als root.
Zo kunnen de ntalk,
comsat en
finger daemons bijvoorbeeld draaien
in speciale gebruikerszandbakken
(sandboxes). Een zandbak
is niet perfect, tenzij er heel veel moeite gedaan wordt, maar
de meerlagenbenadering blijft bestaan: als iemand via een
server die in een zandbak draait weet in te breken, dan moeten
ze eerst nog uit de zandbak komen. Hoe groter het aantal lagen
is waar een inbreker doorheen moet, hoe kleiner de kans op
succes is. root gaten zijn historisch
gezien aanwezig geweest in vrijwel iedere server die ooit als
root gedraaid heeft, inclusief de
basisservers van een systeem. Op een machine waarop mensen
alleen aanmelden via sshd en nooit
via telnetd of
rshd of
rlogind dienen die servers
uitgeschakeld te worden!&os; draait ntalkd,
comsat en
finger tegenwoordig standaard in een
zandbak. Een ander programma dat misschien beter in een
zandbak kan draaien is &man.named.8;. In
/etc/defaults/rc.conf staat als commentaar
welke parameters er nodig zijn om
named in een zandbak te draaien.
Afhankelijk van of het een nieuwe systeeminstallatie of het
bijwerken van een bestaand systeem betreft, worden de speciale
gebruikersaccounts die bij die zandbakken horen misschien niet
geïnstalleerd. Een voorzichtige systeembeheerder
onderzoekt en implementeert zandbakken voor servers waar dat
ook maar mogelijk is.sendmailEr zijn een aantal diensten die vooral niet in een zandbak
draaien: sendmail,
popper,
imapd,
ftpd en andere. Voor sommige
servers zijn alternatieven, maar dat kost misschien meer tijd
dan er te besteden is (gemak dient de mens). Het kan voorkomen
dat deze servers als root moeten draaien
en dat er vertrouwd moet worden op andere mechanismen om een
inbraak via die servers te detecteren.De andere grote mogelijkheid voor root
gaten in een systeem zijn de suid-root en sgid-binaire
bestanden die geïnstalleerd zijn op een systeem. Veel van
die bestanden, zoals rlogin, staan in
/bin,
/sbin,
/usr/bin of
/usr/sbin. Hoewel het niet 100%
veilig is, mag aangenomen worden dat de suid- en sgid-binaire bestanden
van een standaardsysteem redelijk veilig zijn. Toch worden er
nog wel eens root gaten gevonden in deze
bestanden. Zo is er in 1998 een root gat
gevonden in Xlib waardoor
xterm (die normaliter suid is)
kwetsbaar bleek. Een voorzichtige systeembeheerder kiest voor
better to be safe than sorry door de
suid-bestanden die alleen medewerkers hoeven uit te voeren aan
een speciale groep toe te wijzen en de suid-bestanden die
niemand gebruikt te lozen (chmod 000). Een
server zonder monitor heeft normaal gezien
xterm niet nodig. Sgid-bestanden
kunnen bijna net zo gevaarlijk zijn. Als een inbreker een
sgid-kmem stuk kan krijgen, dan kan hij wellicht
/dev/kmem lezen en dus het gecodeerde
wachtwoordbestand, waardoor mogelijk ieder account met
een wachtwoord besmet is. Een inbreker toegang tot de groep
kmem kan krijgen, zou bijvoorbeeld mee
kunnen kijken met de toetsaanslagen die ingegeven worden via de
pty's, inclusief die pty's die gebruikt worden door gebruikers
die via beveiligde methodes aanmelden. Een inbreker die
toegang krijgt tot de groep tty kan naar
bijna alle tty's van gebruikers schrijven. Als een gebruiker
een terminalprogramma of een terminalemulator met een
toetsenbordsimulatieoptie draait, dan kan de inbreker in
potentie een gegevensstroom genereren die ervoor zorgt dat de
terminal van de gebruiker een commando echot, dat dan wordt
uitgevoerd door die gebruiker.Beveiligen van gebruikersaccountsGebruikersaccounts zijn gewoonlijk het meest lastig om te
beveiligen. Hoewel er allerlei draconische maatregelen genomen
kunnen worden met betrekking tot de medewerkers en hun
wachtwoorden weggesterd kunnen worden, gaat dat
waarschijnlijk niet lukken met de gewone gebruikersaccounts.
Als er toch voldoende vrijheid is, dan prijst de beheerder zich
gelukkig en is het misschien toch mogelijk de accounts
voldoende te beveiligen. Als die vrijheid er niet is, dan
moeten die accounts gewoon netter gemonitord worden. Het
gebruik van ssh en
Kerberos voor gebruikersaccounts is
problematischer vanwege het extra beheer en de ondersteuning,
maar nog steeds een prima oplossing in vergelijking met een
versleuteld wachtwoordbestand.Beveiligen van het wachtwoordbestandDe enige echte oplossing is zoveel mogelijk wachtwoorden
wegsterren en ssh
of Kerberos gebruiken voor toegang
tot die accounts. Hoewel een gecodeerd wachtwoordbestand
(/etc/spwd.db) alleen gelezen kan worden
door root, is het wel mogelijk dat een
inbreker leestoegang krijgt tot dat bestand zonder dat de
aanvaller root-schrijftoegang krijgt.Beveiligingsscripts moeten altijd controleren op en
rapporteren over wijzigingen in het wachtwoordbestand (zie ook
Bestandsintegriteit
Controleren hieronder).Beveiligen van de kern van de kernel, ruwe apparaten en
bestandssystemenAls een aanvaller toegang krijgt tot
root dan kan hij ongeveer alles, maar er
zijn een paar slimmigheidjes. Zo hebben bijvoorbeeld de meeste
moderne kernels een ingebouwd pakketsnuffelstuurprogramma
(packet sniffing). Bij &os; is dat het
bpf apparaat. Een inbreker zal in het
algemeen proberen een pakketsnuffelaar te draaien op een
gecompromitteerde machine. De inbreker hoeft deze mogelijkheid
niet te hebben en bij de meeste systemen is het niet verplicht
het bpf apparaat mee te
compileren.sysctlMaar zelfs als het bpf
apparaat is uitgeschakeld, dan zijn er nog
/dev/mem en
/dev/kmem. De inbreker kan namelijk nog
schrijven naar ruwe schrijfapparaten. En er is ook nog een
optie in de kernel die modulelader (module
loader) heet, &man.kldload.8;. Een ondernemende
inbreker kan een KLD-module gebruiken om zijn eigen
bpf-apparaat of een ander
snuffelapparaat te installeren in een draaiende kernel. Om
deze problemen te voorkomen, moet de kernel op een hoger
veiligheidsniveau draaien, ten minste securelevel 1.Het veiligheidsniveau van de kernel kan op een aantal
manieren worden ingesteld. De eenvoudigste manier om het
veiligheidsniveau van een draaiende kernel te verhogen is met
sysctl op de kernelvariabele
kern.securelevel:&prompt.root; sysctl kern.securelevel=1Standaard start de kernel van &os; op met een
veiligheidsniveau van -1. Het veiligheidsniveau blijft -1
tenzij het is veranderd, òfwel door de beheerder
òfwel door &man.init.8; vanwege een instelling in de
opstartscripts. Het veiligheidsniveau kan tijdens het opstarten
van het systeem verhoogd worden door de variabele
kern_securelevel_enable op
YES te zetten in het bestand
/etc/rc.conf, en de waarde van de variabele
kern_securelevel op het gewenste
veiligheidsniveau in te stellen.Het standaard veiligheidsniveau van een &os;-systeem direct
nadat de opstartscripts zijn uitgevoerd is -1. Dit wordt
onveilige modus genoemd omdat de onveranderlijke
bestandsvlag uitgezet kan worden, er van/naar alle apparaten mag
worden gelezen en geschreven, enzovoorts.Als eenmaal het veiligheidsniveau op 1 of een hogere waarde
is ingesteld, worden de alleen-toevoegen en onveranderlijke
bestanden gehonoreerd, deze kunnen niet worden uitgezet, en
wordt toegang tot rauwe apparaten ontzegd. Hogere niveaus
beperken nog meer bewerkingen. Lees, voor een volledige
beschrijving van het effect van de verschillende
- veiligheidsniveaus, de handleidingpagina &man.security.7; (of de
- handleidingpagina van &man.init.8; voor uitgaven ouder dan &os;
- 7.0).
+ veiligheidsniveaus, de handleidingpagina &man.security.7;.
Het ophogen van het veiligheidsniveau naar 1 of hoger kan
enkele problemen met X11 (toegang tot
/dev/io zal worden geblokkeerd), of met
de installatie van &os; wanneer die vanaf de broncode is
gebouwd (het gedeelte installword van
het proces moet tijdelijk de alleen-toevoegen en
onveranderlijke vlaggen van sommige bestanden uitzetten), en
met enkele andere gevallen veroorzaken. Soms, zoals het geval
is met X11, is het mogelijk om dit te omzeilen door
&man.xdm.1; behoorlijk vroeg in het opstartproces te starten,
wanneer het veiligheidsniveau nog laag genoeg is.
Omzeilmethoden zoals deze zijn misschien niet voor alle
veiligheidsniveaus of voor alle beperkingen die ze opleggen
mogelijk. Wat vooruit plannen is een goed idee. Het is
belangrijk om de beperkingen die door elk veiligheidsniveau
worden opgelegd te begrijpen omdat ze het gebruiksgemak van
het systeem sterk verminderen. Het vergemakkelijkt ook het
kiezen van eens standaardinstelling en voorkomt allerlei
verassingen.Als het veiligheidsniveau van de kernel naar 1 of hoger
wordt verhoogd, kan het nuttig zijn om de vlag
schg aan te zetten voor kritieke
opstartprogramma's, mappen, en scriptbestanden (i.e., alles dat
gedraaid wordt tot het punt waar het veiligheidsniveau wordt
ingesteld). Dit kan overdreven zijn, en het bijwerken van het
systeem is veel moeilijker wanneer het op een hoog
veiligheidsniveau werkt. Een minder beperkend compromis is om
het systeem op een hoger veiligheidsniveau te draaien maar het
aanzetten van de vlag schg voor elk
systeembestand en -map onder de zon over te slaan. Een andere
mogelijkheid is om / en
/usr simpelweg als alleen-lezen
aan te koppelen. Het dient opgemerkt te worden dat het te draconisch
zijn over wat is toegestaan het belangrijke detecteren van een
inbraak kan verhinderen.Bestandsintegriteit controleren: binaire bestanden,
instellingenbestanden, enzovoortAls puntje bij paaltje komt kan de kern van een systeem
maar tot een bepaald punt beveiligd worden zonder dat het
minder prettig werken wordt. Zo werk het zetten van de
schg bit met chflags op
de meeste bestanden in / en
/usr waarschijnlijk averechts,
omdat, hoewel de bestanden beschermd zijn, ook het venster waarin
detectie plaats kan vinden is gesloten. De laatste laag van
beveiliging is waarschijnlijk de meest belangrijke: detectie.
Alle overige beveiliging is vrijwel waardeloos (of nog erger:
geeft een vals gevoel van beveiliging) als een mogelijke inbraak
niet gedetecteerd kan worden. Een belangrijk doel van het
meerlagenmodel is het vertragen van een aanvaller, nog meer dan
hem te stoppen, om hem op heterdaad te kunnen betrappen.De beste manier om te zoeken naar een inbraak is zoeken
naar gewijzigde, ontbrekende of onverwachte bestanden. De beste
manier om te zoeken naar gewijzigde bestanden is vanaf een
ander (vaak gecentraliseerd) systeem met beperkte toegang.
Met zelfgeschreven scripts op dat extra beveiligde systeem met
beperkte toegang is een beheerder vrijwel onzichtbaar voor
mogelijke aanvallers en dat is belangrijk. Om het nut te
maximaliseren moeten in het algemeen dat systeem met beperkte
toegang best veel rechten gegeven worden op de andere machines
in het netwerk, vaak via een alleen-lezen NFS-export van de
andere machines naar het systeem met beperkte toegang of door
ssh sleutelparen in te stellen om
het systeem met beperkte toegang een
ssh verbinding te laten maken met de
andere machines. Buiten het netwerkverkeer, is NFS de minst
zichtbare methode. Hierdoor kunnen de bestandssystemen
op alle cliëntmachines vrijwel ongezien gemonitord worden.
Als de server met beperkte toegang verbonden is met de
cliëntmachines via een switch, dan is de NFS-methode vaak
de beste keus. Als de server met beperkte toegang met de andere
machines is verbonden via een hub of door meerdere routers, dan
is de NFS-methode wellicht niet veilig genoeg (vanuit een
netwerk standpunt) en kan beter ssh
gebruikt worden, ondanks de audit-sporen die
ssh achterlaat.Als de machine met beperkte toegang eenmaal minstens
leestoegang heeft tot een cliëntsysteem dat het moet gaan
monitoren, dan moeten scripts gemaakt worden om dat monitoren
ook echt uit te voeren. Uitgaande van een NFS-koppeling, kunnen
de scripts gebruik maken van eenvoudige systeem hulpprogramma's
als &man.find.1; en &man.md5.1;. We adviseren minstens
één keer per dag een md5 te maken van alle
bestanden op de cliëntmachine en van instellingenbestanden
als in /etc en
/usr/local/etc zelfs vaker.
Als er verschillen worden aangetroffen ten opzichte van de basis md5
informatie op het systeem met beperkte toegang, dan hoort het
script te gillen om een beheerder die het moet gaan uitzoeken.
Een goed beveiligingsscript controleert ook op onverwachte
suid-bestanden en op nieuwe en verwijderde bestanden op
systeempartities als / en
/usr.Als ssh in plaats van NFS wordt
gebruikt, dan is het schrijven van het script lastiger. Dan
moeten de scripts met scp naar de cliënt
verplaatst worden om ze uit te voeren, waardoor ze zichtbaar
worden. Voor de veiligheid dienen ook de binaire bestanden die
het script gebruikt, zoals &man.find.1;, gekopieerd te
worden. De ssh-cliënt op de
cliënt zou al gecompromitteerd kunnen zijn. Het is
misschien noodzakelijk ssh te gebruiken over onveilige
verbindingen, maar dat maakt alles een stuk lastiger.Een goed beveiligingsscript voert ook controles uit op de
instellingenbestanden van gebruikers en medewerkers:
.rhosts, .shosts,
.ssh/authorized_keys, enzovoort.
Dat zijn bestanden die buiten het bereik van de
MD5-controle vallen.Als gebruikers veel schijfruimte hebben, dan kan het te lang
duren om alle bestanden op deze partitie te controleren. In dat
geval is het verstandig de koppelvlaggen zo in te stellen dat
suid-binaire bestanden op die partities niet zijn toegestaan.
Zie daarvoor de optie nosuid (zie
&man.mount.8;). Die partities moeten wel toch nog minstens eens
per week doorzocht worden, omdat het doel van deze
beveiligingslaag het ontdekken van een inbraakpoging is, of die
nu succesvol is of niet.Procesverantwoording (zie &man.accton.8;) kost relatief
gezien weinig en kan bijdragen aan een evaluatie mechanisme
voor na inbraken. Het is erg handig om uit te zoeken hoe
iemand precies heeft ingebroken op het systeem, mits het
bestand nog onbeschadigd is na de inbraak.Tenslotte horen beveiligingsscripts de logboekbestanden te
verwerken en de logboekbestanden zelf horen zo veilig mogelijk
tot stand te komen. remote syslog kan erg
zinvol zijn. Een aanvaller zal proberen zijn sporen uit te
wissen en logboekbestanden zijn van groot belang voor een
systeembeheerder als het gaat om uitzoeken wanneer en hoe er is
ingebroken. Een manier om logboekbestanden veilig te stellen
is door het systeemconsole via een seriële poort aan te
sluiten op een veilige machine en zo informatie te
verzamelen.ParanoiaEen beetje paranoia is niet verkeerd. Eigenlijk kan de
systeembeheerder zoveel beveiligingsopties inschakelen als hij
wil, als deze maar geen impact hebben op het gebruiksgemak en
de beveiligingsopties die wel impact
hebben op het gebruiksgemak kunnen ingeschakeld worden als daar
zorgvuldig mee wordt omgegaan. Nog belangrijker is misschien
dat er een juiste combinatie wordt gevonden. Als de
aanbevelingen uit dit document woord voor woord worden
opgevolgd, dan worden daarmee de methodes aan een toekomstige
aanvaller verraden, die ook toegang heeft tot dit
document.Ontzeggen van Dienst aanvallenOntzegging van Dienst (DoS)In deze paragraaf worden Ontzeggen van Dienst aanvallen
(Denial of Service of DoS) behandeld. Een
DoS-aanval wordt meestal uitgevoerd als pakketaanval. Hoewel er
weinig gedaan kan worden tegen de huidige aanvallen met
gefingeerde pakketten die een netwerk kunnen verzadigen, kan
de schade geminimaliseerd worden door ervoor te zorgen dat
servers er niet door plat gaan door:Limiteren van server forks.Limiteren van springplank (springboard)
aanvallen (ICMP response aanvallen, ping broadcast, etc.).De Kernel Route Cache overloaden.Een veelvoorkomende DoS-aanval is om een server aan te
vallen door het zoveel kindprocessen aan te laten maken dat het
hostsysteem uiteindelijk geen bestandsdescriptors, geheugen
enzovoort meer heeft en het dan opgeeft.
inetd (zie &man.inetd.8;) kent een
aantal instellingen om dit type aanval af te zwakken. Hoewel
het mogelijk is ervoor te zorgen dat een machine niet plat
gaat, is het in het algemeen niet mogelijk te voorkomen dat de
dienstverlening door de aanval wordt verstoord. Meer is te
lezen in de handleiding van inetd
en het advies is in het bijzonder aandacht aan de
, en
opties te besteden. Aanvallen met gefingeerde
IP adressen omzeilen de
optie naar inetd, dus in het
algemeen moet een combinatie van opties gebruikt worden.
Sommige op zichzelf staande servers hebben parameters waarmee
het aantal forks gelimiteerd kan worden.Sendmail heeft de optie
die veel beter blijkt te
werken dan het gebruik van de opties van
Sendmail waarmee de werklast
gelimiteerd kan worden. De parameter
MaxDaemonChildren moet zodanig ingesteld
worden dat als sendmail start; deze
hoog genoeg is om de te verwachten belasting aan te kunnen,
maar niet zo hoog is dat de computer het aantal instanties van
Sendmails niet aankan zonder plat te
gaan. Het is ook verstandig om
Sendmail in de wachtrijmodus
() te draaien en de
daemon (sendmail -bd) los te koppelen van de
verwerking van de wachtrij (sendmail -q15m).
Als de verwerking van wachtrij real-time moet, kunnen de
tussenpozen voor verwerking verkort worden door deze
bijvoorbeeld op in te stellen, maar dan
is een redelijke instelling van
MaxDaemonChildren van belang om
dieSendmail te
beschermen tegen trapsgewijze fouten.Syslogd kan direct aangevallen
worden en het is sterk aan te raden de
optie te gebruiken waar dat ook maar mogelijk is en anders de
optie.Er dient voorzichtig omgesprongen te worden met diensten
die terugverbinden zoals
TCP Wrapper's reverse-identd die
direct aangevallen kan worden. In het algemeen is het hierom
onverstandig gebruik te maken van de reverse-ident optie van
TCP Wrapper.Het is een goed idee om interne diensten af te schermen
voor toegang van buitenaf door ze te firewallen op de routers
aan de rand van een netwerk (border routers).
Dit heeft als achtergrond dat verzadigingsaanvallen voorkomen
van buiten het LAN voorkomen kunnen worden. Daarmee wordt geen
aanval op root via het netwerk en die
diensten daaraan voorkomen. Er dient altijd een exclusieve
firewall te zijn, dat wil zeggen firewall alles
behalve poorten A, B, C, D en M-Z.
Zo worden alle lage poorten gefirewalled behalve die voor
specifieke diensten als named (als
er een primary is voor een zone),
ntalkd,
sendmail en andere diensten die
vanaf Internet toegankelijk moeten zijn. Als de firewall
andersom wordt ingesteld, als een inclusieve of tolerante
firewall, dan is de kans groot dat er wordt vergeten een aantal
diensten af te sluiten of dat er een nieuwe
interne dienst wordt toegevoegd en de firewall niet wordt
bijgewerkt. Er kan nog steeds voor gekozen worden de hoge
poorten open te zetten, zodat een tolerante situatie ontstaat,
zonder de lage poorten open te stellen. &os; biedt ook de
mogelijkheid een reeks poortnummers die gebruikt worden voor
dynamische verbindingen in te stellen via de verscheidene
net.inet.ip.portrangesysctls (sysctl -a | fgrep
portrange), waardoor ook de complexiteit van de
firewall instellingen kan vereenvoudigen. Zo kan bijvoorbeeld
een normaal begin tot eindbereik ingesteld worden van 4000 tot
5000 en een hoog poortbereik van 49152 tot 65535. Daarna kan
alles onder 4000 op de firewall geblokkeerd worden (met
uitzondering van bepaalde poorten die vanaf Internet bereikbaar
moeten zijn natuurlijk).Een andere veelvoorkomende DoS-aanval is de
springplankaanval: een server zo aanvallen dat de respons van
die server de server zelf, het lokale netwerk of een andere
machine overbelast. De meest voorkomende aanval van dit type is
de ICMP ping broadcast aanval. De
aanvaller fingeert ping-pakketten die naar het broadcast-adres
van het LAN worden gezonden met als bron het
IP-adres van de machine die hij eigenlijk aan
wil vallen. Als de routers aan de rand van het netwerk niet
zijn ingesteld om een ping-pakketten aan een broadcast-adres te
blokkeren, dan kan het LAN genoeg antwoorden produceren om de
verbinding van het slachtoffer (het gefingeerde bronadres) te
verzadigen, zeker als de aanvaller hetzelfde doet met tientallen
andere netwerken. Broadcastaanvallen met een volume van meer
dan 120 megabit zijn al voorgekomen. Een tweede
springplankaanval is er een tegen het ICMP-foutmeldingssysteem.
Door een pakket te maken waarop een ICMP-foutmelding komt, kan
een aanvaller de inkomende verbinding van een server verzadigen
en de uitgaande verbinding laten verzadigen met
ICMP-foutmeldingen. Dit type aanval kan een server ook laten
crashen door te zorgen dat het geheugen ervan vol zit, zeker als
de server de ICMP-antwoorden niet zo snel kwijt kan als dat het
ze genereert. Gebruik de
sysctl-variabele
net.inet.icmp.icmplim om deze aanvallen te
beperken. De laatste belangrijke klasse springplankaanvallen
hangt samen met een aantal interne diensten van
inetd zoals de UDP-echodienst. Een
aanvaller fingeert eenvoudigweg een UDP-pakket met als
bronadres de echopoort van Server A en als bestemming de
echopoort van Server B, waar Server A en B allebei op een LAN
staan. Die twee servers gaan dat pakket dan heen en weer
kaatsen. Een aanvaller kan beide servers overbelasten door een
aantal van deze pakketten te injecteren. Soortgelijke problemen
kunnen ontstaan met de poort chargen.
Een competente systeembeheerder zal al deze interne
inetd testdiensten
uitschakelen.Gefingeerde pakketten kunnen ook gebruikt worden om de
kernel route cache te overbelasten. Raadpleeg daarvoor de
net.inet.ip.rtexpire,
rtminexpire en rtmaxcachesysctl parameters. Een aanval met
gefingeerde pakketten met een willekeurig bron-IP zorgt ervoor
dat de kernel een tijdelijke gecachede route maakt in de
routetabel, die uitgelezen kan worden met netstat -rna
| fgrep W3. Deze routes hebben een levensduur van
ongeveer 1600 seconden. Als de kernel merkt dat de gecachede
routetabel te groot is geworden, dan wordt
rtexpire dynamisch verkleind, maar deze
waarde wordt nooit lager dan rtminexpire.
Er zijn twee problemen:De kernel reageert niet snel genoeg als een laag
belaste server wordt aangevallen.rtminexpire is niet laag genoeg om
de kernel de aanval te laten overleven.Als servers verbonden zijn met het Internet via een E3
of sneller, dan is het verstandig om handmatig
rtexpire en rtminexpire
aan te passen via &man.sysctl.8;. Als de een van de parameters
op nul wordt gezet, dan crasht de machine. Het instellen van
beide waarden op 2 seconden is voldoende om de routetabel
tegen een aanval te beschermen.Aandachtspunten voor toegang met
Kerberos en
SSHsshEr zijn een aantal aandachtspunten die in acht genomen
moeten worden als Kerberos of ssh gebruikt worden. Kerberos 5
is een prima autenticatieprotocol, maar er zitten bugs in de
Kerberos-versies van telnet en
rlogin waardoor ze niet geschikt
zijn voor binair verkeer. Kerberos codeert standaard de sessie
niet, tenzij de optie wordt gebruikt.
ssh codeert standaard wel
alles.Ssh werkt prima, maar het stuurt coderingssleutels
standaard door. Dit betekent dat als gegeven een veilig
werkstation met sleutels die toegang geven tot de rest van het
systeem en ssh wordt gebruikt om verbinding te maken met een
onveilige machine, die sleutels gebruikt kunnen worden. De
sleutels zelf zijn niet bekend, maar ssh stelt een
doorstuurpoort in zolang als een gebruikers aangemeld blijft.
Als de aanvaller roottoegang heeft op de
onveilige machine, dan kan hij die poort gebruiken om toegang
te krijgen tot alle machines waar de sleutels van de gebruiker
toegang toe geven.Het advies is ssh in combinatie met Kerberos te gebruiken
voor het aanmelden door medewerkers wanneer dat ook maar
mogelijk is. Ssh kan gecompileerd
worden met Kerberos-ondersteuning. Dit vermindert de kans op
blootstelling van ssh-sleutels en beschermt tegelijkertijd
de wachtwoorden met Kerberos. Ssh-sleutels zouden alleen
gebruikt moeten worden voor geautomatiseerde taken vanaf
veilige machines (iets waar Kerberos ongeschikt voor is). Het
advies is om het doorsturen van sleutels uit te schakelen in de
ssh-instellingen of om de from=IP/DOMAIN
optie te gebruiken die ssh in staat stelt het bestand
authorized_keys te gebruiken om de
sleutel alleen bruikbaar te maken voor entiteiten die zich
aanmelden vanaf vooraf aangewezen machines.BillSwingleDelen geschreven en herschreven door DES, Blowfish, MD5, SHA256, SHA512 en cryptbeveiligingcryptcryptBlowfishDESMD5SHA256SHA512Iedere gebruiker op een &unix; systeem heeft een wachtwoord
bij zijn account. Het lijkt voor de hand liggend dat deze
wachtwoorden alleen bekend horen te zijn bij de gebruiker en het
eigenlijke besturingssysteem. Om deze wachtwoorden geheim te
houden, zijn ze gecodeerd in een eenweg hash
(one-way hash), wat betekent dat ze eenvoudig
gecodeerd kunnen worden maar niet gedecodeerd. Met andere
woorden, wat net gesteld werd is helemaal niet waar: het
besturingssysteem kent het echte wachtwoord
niet. De enige manier om een wachtwoord in platte
tekst te verkrijgen, is door er met brute kracht naar
te zoeken in alle mogelijke wachtwoorden.Helaas was DES, de Data Encryption Standard, de enige
manier om wachtwoorden veilig te coderen toen &unix; ontstond.
Dit was geen probleem voor gebruikers in de VS, maar omdat
de broncode van DES niet geëxporteerd mocht worden moest
&os; een manier vinden om zowel te gehoorzamen aan de wetten van
de Verenigde Staten als aansluiting te houden bij alle andere varianten
van &unix; die nog steeds DES gebruikten.De oplossing werd gevonden in het splitsen van de
coderingsbibliotheken zodat gebruikers in de Verenigde Staten de
DES-bibliotheken konden installeren en gebruiken en internationale
gebruikers een coderingsmethode konden gebruiken die
geëxporteerd mocht worden. Zo is het gekomen dat &os; MD5
is gaan gebruiken als coderingsmethode. Van MD5 wordt aangenomen
dat het veiliger is dan DES, dus de mogelijkheid om DES te
installeren is vooral beschikbaar om aansluiting te kunnen
houden.Het crypt-mechanisme herkennenOp dit moment ondersteunt de bibliotheek DES, MD5, Blowfish,
SHA256 en SHA512 hashfuncties. Standaard gebruikt &os; MD5 om
wachtwoorden te coderen.Het is vrij makkelijk om uit te vinden welke
coderingsmethode &os; op een bepaald moment gebruikt. De
gecodeerde wachtwoorden in
/etc/master.passwd bekijken is een manier.
Wachtwoorden die gecodeerd zijn met MD5 zijn langer dan wanneer
ze gecodeerd zijn met DES-hash. Daarnaast beginnen ze met de
karakters $1$. Wachtwoorden
die beginnen met $2a$ zijn
gecodeerd met de Blowfish hashfunctie. DES-wachtwoordstrings
hebben geen bijzondere kenmerken, maar ze zijn korter dan MD5
wachtwoorden en gecodeerd in een 64-karakter alfabet waar geen
$ karakter in zit. Een relatief korte
string die niet begint met een dollar teken is dus
waarschijnlijk een DES-wachtwoord. Zowel SHA256 als SHA512 beginnen
met de tekens $6$.Het wachtwoordformaat voor nieuwe wachtwoorden wordt
ingesteld met de passwd_format
aanmeldinstelling in /etc/login.conf waar
des, md5,
blf, sha256 of
sha512 in mag staan. Zie de &man.login.conf.5;
handleiding voor meer informatie over
aanmeldinstellingen.Eenmalige wachtwoordeneenmalige wachtwoordenbeveiligingeenmalige wachtwoordenStandaard biedt &os; ondersteuning voor OPIE (Eenmalige
Wachtwoorden in Alles - One-time Passwords In
Everything), wat standaard een MD5-hash gebruikt.Hier worden drie verschillende soorten wachtwoorden
besproken. De eerste is het normale &unix; of Kerberos
wachtwoord. Dit heet het &unix; wachtwoord. Het
tweede type is een eenmalig wachtwoord dat wordt gemaakt met het
OPIE-programma &man.opiekey.1; en dat wordt geaccepteerd door
&man.opiepasswd.1; en de aanmeldprocedure. Dit heet het
eenmalige wachtwoord. Het laatste type wachtwoord
is het wachtwoord dat wordt opgegeven aan het programma
opiekey (en soms aan het programma
opiepasswd) dat gebruikt wordt om eenmalige
wachtwoorden te maken. Dit type heet geheim
wachtwoord of gewoon een wachtwoord zonder
toevoeging.Het geheime wachtwoord heeft niets te maken met het &unix;
wachtwoord; ze kunnen hetzelfde zijn, dat wordt afgeraden.
OPIE geheime wachtwoorden kennen niet de beperking van 8
karakters zoals de oude &unix; wachtwoorden.
Bij &os; mag het wachtwoord voor aanmelden tot 128
karakters lang zijn.
Ze mogen onbeperkt lang zijn. Wachtwoorden van een zes of zeven
woorden lange zin zijn niet ongewoon. Voor het overgrote deel
werkt het OPIE-systeem volledig onafhankelijk van het &unix;
wachtwoordsysteem.Buiten het wachtwoord zijn er nog twee stukjes gegevens die
van belang zijn voor OPIE. Het eerste wordt zaad
(seed) of sleutel
(key) genoemd en bestaat uit twee letters en vijf
cijfers. Het tweede stukje gegevens heet de
iteratieteller, een nummer tussen 1 en 100. OPIE
maakt een eenmalig wachtwoord door het zaad en het geheime
wachtwoord aaneen te schakelen en daarop het door de
iteratieteller aangegeven keren MD5-hash toe te passen. Daarna
wordt het resultaat omgezet in zes korte Engelse woorden. Deze
zes woorden zijn een eenmalige wachtwoord. Het
autenticatiesysteem (hoofdzakelijk PAM) houdt bij welk
eenmalig wachtwoord het laatst is gebruikt en de gebruiker wordt
geautenticeerd als de hash van het door de gebruiker ingegeven
wachtwoord gelijk is aan het vorige wachtwoord. Omdat er een
eenweg hash wordt gebruikt, is het onmogelijk om toekomstige
eenmalige wachtwoorden te maken als iemand toch een eenmalig
wachtwoord heeft afgevangen. De iteratieteller wordt verlaagd na
iedere succesvolle aanmelding om de gebruiker en het
aanmeldprogramma synchroon te houden. Als de iteratieteller op 1
staat, moet OPIE opnieuw ingesteld worden.Er zijn enkele programma's bij ieder systeem betrokken die
hieronder worden besproken. Het programma
opiekey heeft een iteratieteller,
zaad en een geheim wachtwoord nodig en maakt dan een eenmalig
wachtwoord of een lijst van opeenvolgende eenmalige wachtwoorden.
Het programma opiepasswd wordt gebruikt om OPIE
te initialiseren en om wachtwoorden, iteratietellers en zaad te
wijzigen. Het accepteert zowel wachtwoordzinnen als een
iteratieteller, zaad en een eenmalig wachtwoord. Het programma
opieinfo bekijkt de relevante bestanden waarin
de eigenschappen staan (/etc/opiekeys) en
toont de huidige iteratieteller en zaad van de gebruiker die het
commando uitvoert.Nu worden vier verschillende acties besproken. Bij de eerste
wordt opiepasswd gebruikt in een beveiligde
verbinding om voor het eerst eenmalige wachtwoorden in te stellen
of om een wachtwoord of zaad aan te passen. Bij de tweede wordt
opiepasswd gebruikt over een onbeveiligde
verbinding samen met opiekey over een
beveiligde verbinding om hetzelfde te bereiken. In een derde
scenario wordt opiekey gebruikt om aan te
melden over een onveilige verbinding. Het vierde
scenario behandelt het gebruik van opiekey om
een aantal sleutels aan te maken die opgeschreven of afgedrukt
kunnen worden, zodat ze meegenomen kunnen worden naar een plaats
van waar geen enkele veilige verbinding opgezet kan worden.Veilige verbinding initialiserenGebruik het commando opiepasswd om OPIE
voor de eerste keer te initialiseren:&prompt.user; opiepasswd -c
[grimreaper] ~ $ opiepasswd -f -c
Adding unfurl:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:
ID unfurl OTP key is 499 to4268
MOS MALL GOAT ARM AVID COEDAls Enter new secret pass phrase: of
Enter secret password: op het scherm
verschijnt, dient een wachtwoord of wachtwoordzin ingevoerd te
worden. Dit is dus niet het aanmeldwachtwoord is, maar dit
wordt gebruikt om eenmalige wachtwoorden te maken. De
ID regel geeft de parameters van het verzoek
weer: de aanmeldnaam, de iteratieteller en zaad. Bij het
aanmelden kent het systeem deze parameters en worden deze
weergegeven zodat ze niet onthouden hoeven te worden. Op de
laatste regel staat het eenmalige wachtwoord dat overeenkomt met
die parameters en het geheime wachtwoord. Als de gebruiker
direct opnieuw zou aanmelden, zou hij dat eenmalige wachtwoord
moeten gebruiken.Onveilige verbinding initialiserenOm een wachtwoord te initialiseren of te wijzigen over een
onveilige verbinding, moet er al ergens een veilige verbinding
bestaan waar de gebruiker opiekey kan
uitvoeren. Dit kan een shellprompt zijn op een machine die
vertrouwd wordt. De gebruiker moet ook een iteratieteller
verzinnen (100 is wellicht een prima getal) en een eigen zaad
bedenken of er een laten fabriceren. Over de onveilige
verbinding (naar de machine die de gebruiker wil initialiseren)
wordt het commando opiepasswd gebruikt:&prompt.user; opiepasswd
Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
otp-md5 498 to4268 ext
Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
otp-md5 499 to4269
Response: LINE PAP MILK NELL BUOY TROY
ID mark OTP key is 499 gr4269
LINE PAP MILK NELL BUOY TROYDruk op Return om het standaardzaad te
accepteren. Voor een toegangswachtwoord wordt ingevoerd, dient
eerst gewisseld te worden naar de veilige verbinding en dienen
dezelfde parameters ingegeven te worden:&prompt.user; opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHATIn de onveilige verbinding wordt nu het eenmalige wachtwoord
in het relevante programma gekopieerd.Een enkel eenmalig wachtwoord makenAls OPIE eenmaal is ingesteld staat er bij het
aanmelden iets als het volgende:&prompt.user; telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.
FreeBSD/i386 (example.com) (ttypa)
login: <gebruikersnaam>
otp-md5 498 gr4269 ext
Password: NB: de OPIE-prompt heeft een handige optie (die hier niet te
zien is): als er op Return wordt gedrukt bij de
wachtwoordregel, wordt de echo aangezet, zodat de invoer
zichtbaar is. Dit is erg handig als er met de hand een
wachtwoord wordt ingegeven, zoals wanneer het wordt ingevoerd
vanaf een afdruk.MS-DOSWindowsMacOSNu moet het eenmalige wachtwoord gemaakt worden om het
aanmeldprompt mee te antwoorden. Dit moet gedaan worden op een
vertrouwd systeem waarop opiekey beschikbaar
is. Er zijn ook versies voor &ms-dos;, &windows; en &macos;.
Voor het commando moet zowel de iteratieteller als het zaad
ingeven worden op de commandoregel. Deze kan zo overgenomen
worden vanaf het aanmeldprompt op de machine waarop de gebruiker
zich wil aanmelden.Op het vertrouwde systeem:&prompt.user; opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHATNu het eenmalige wachtwoord er is, kan het aanmelden
doorgang vinden.Meerdere eenmalige wachtwoorden makenSoms moet een gebruiker ergens naar toe gaan waar er geen
toegang is tot een vertrouwde machine of een beveiligde
verbinding. In dat geval is het mogelijk om met het commando
opiekey een aantal eenmalige wachtwoorden te
maken om uit te printen en mee te nemen:&prompt.user; opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <geheim wachtwoord>
26: JOAN BORE FOSS DES NAY QUIT
27: LATE BIAS SLAY FOLK MUCH TRIG
28: SALT TIN ANTI LOON NEAL USE
29: RIO ODIN GO BYE FURY TIC
30: GREW JIVE SAN GIRD BOIL PHIMet worden vijf opeenvolgende
sleutels aangevraagd, geeft aan wat het
laatste iteratiegetal moet zijn. Deze wachtwoorden worden
weergegeven in omgekeerde volgorde voor
gebruik. Als de gebruiker echt paranoïde bent kan hij ze
opschrijven of hij kan er ook voor kiezen ze af te drukken met
lpr. Op iedere regel staat dus de
iteratieteller en het eenmalige wachtwoord, maar misschien is
het toch handig om ze na gebruik af te strepen.Gebruik van &unix; wachtwoorden beperkenMet OPIE kan paal en perk gesteld worden aan het gebruik van
&unix; wachtwoorden op basis van het IP-adres
van een aanmeldsessie. Dat kan met het bestand
/etc/opieaccess dat standaard aanwezig is.
Bij &man.opieaccess.5; staat meer informatie over dit bestand en
welke beveiligingsoverwegingen bestaan bij het gebruik.Hieronder een voorbeeld voor een
opieaccess bestand:permit 192.168.0.0 255.255.0.0In deze regel (permit Internet) staat
dat gebruikers met een bron IP adres (wat
gefingeerd kan worden) dat past binnen de aangegeven waarde en
masker altijd &unix; wachtwoorden mogen gebruiken.Als geen van de regels uit opieaccess
van toepassing is, worden standaard pogingen zonder OPIE
geweigerd.TomRhodesGeschreven door TCP WrappersTCP WrapperIedereen die bekend is met &man.inetd.8; heeft waarschijnlijk
wel eens van TCP Wrappers gehoord. Maar
slechts weinigen lijken volledig te begrijpen hoe ze in een
netwerkomgeving toegepast kunnen worden. Het schijnt dat
iedereen een firewall wil hebben om netwerkverbindingen af te
handelen. Ondanks dat een firewall veel kan, zijn er toch dingen
die het niet kan, zoals tekst terugsturen naar de bron van een
verbinding. De TCP Wrappers software kan dat
en nog veel meer. In dit onderdeel worden de mogelijkheden van
TCP Wrappers besproken en, waar dat van
toepassing is, worden ook voorbeelden voor implementatie
gegeven.De TCP Wrappers software vergroot de
mogelijkheden van inetd door de
mogelijkheid al zijn serverdaemons te controleren. Met deze
methode is het mogelijk om te loggen, berichten te zenden naar
verbindingen, een daemon toe te staan alleen interne verbindingen
te accepteren, etc. Hoewel een aantal van deze mogelijkheden ook
ingesteld kunnen worden met een firewall, geeft deze manier niet
alleen een extra laag beveiliging, maar gaat dit ook verder dan
wat een firewall kan bieden.De toegevoegde waarde van TCP Wrappers
is niet dat het een goede firewall vervangt.
TCP Wrappers kunnen samen met een firewall en
andere beveiligingsinstellingen gebruikt worden om een extra laag
van beveiliging voor het systeem te bieden.Omdat dit een uitbreiding is op de instellingen van
inetd, wordt aangenomen dat de lezer
het onderdeel inetd configuratie heeft
gelezen.Hoewel programma's die onder &man.inetd.8; draaien niet
echt daemons zijn, heten ze traditioneel wel zo.
Deze term wordt hier dus ook gebruikt.Voor het eerst instellenDe enige voorwaarde voor het gebruiken van
TCP Wrappers in &os; is ervoor te zorgen
dat de server inetd gestart wordt
vanuit rc.conf met de optie
; dit is de standaardinstelling. Er wordt
vanuit gegaan dat /etc/hosts.allow juist is
ingesteld, maar als dat niet zo is, dan zal &man.syslogd.8; dat
melden.In tegenstelling tot bij andere implementaties van
TCP Wrappers is het gebruik van
hosts.deny niet langer mogelijk. Alle
instellingen moeten in /etc/hosts.allow
staan.In de meest eenvoudige instelling worden verbindingen naar
daemons toegestaan of geweigerd afhankelijk van de opties in
/etc/hosts.allow. De standaardinstelling
in &os; is verbindingen toe te staan naar iedere daemon die met
inetd is gestart. Na de
basisinstelling wordt aangegeven hoe dit gewijzigd kan worden.De basisinstelling heeft meestal de vorm
daemon : adres : actie.
daemon is de daemonnaam die
inetd heeft gestart. Het
adres kan een geldige hostnaam, een
IP-adres of een IPv6-adres tussen
blokhaken ([ ]) zijn. Het veld actie
kan allow of deny zijn,
afhankelijk van of toegang toegestaan of geweigerd moet worden.
De instellingen werken zo dat ze worden doorlopen van onder naar
boven om te kijken welke regel als eerste van toepassing is.
Als een regel van toepassing is gevonden, dan stop het
zoekproces.Er zijn nog andere mogelijkheden, maar die worden elders
toegelicht. Een eenvoudige instelling kan al van met deze
informatie worden gemaakt. Om bijvoorbeeld
POP3 verbindingen toe te staan via de
mail/qpopper daemon,
zouden de volgende instellingen moeten worden toegevoegd aan
hosts.allow:# Deze regel is nodig voor POP3-verbindingen
qpopper : ALL : allowNadat deze regel is toegevoegd moet
inetd herstart worden door gebruik te maken
van &man.service.8;:&prompt.root; service inetd restartGevorderde instellingenTCP Wrappers hebben ook gevorderde
instellingen. Daarmee komt meer controle over de wijze waarop
er met verbindingen wordt omgegaan. Soms is het een goed idee
om commentaar te sturen naar bepaalde hosts of
daemonverbindingen. In andere gevallen moet misschien iets
in een logboekbestand geschreven worden of een email naar de
beheerder gestuurd worden. Dit kan allemaal met instellingen
die wildcards, uitbreidingskarakters
(expansion characters) en het uitvoeren van externe commando's
heten. De volgende twee paragrafen beschrijven deze
mogelijkheden.Externe commando'sStel dat zich de situatie voordoet waar een verbinding
geweigerd moet worden, maar er een reden gestuurd moet
worden naar het individu dat die verbinding probeerde op te
zetten. Hoe gaat dat? Dat is mogelijk door gebruik te
maken van de optie . Als er een
poging tot verbinding wordt gedaan, wordt er met
een shellcommando of script
uitgevoerd. Er staat al een voorbeeld in
hosts.allow:# De andere daemons zijn beschermd.
ALL : ALL \
: severity auth.info \
: twist /bin/echo "You are not welcome to use %d from %h."Dit voorbeeld geeft aan dat het bericht You are
not allowed to use daemon from
hostname. wordt teruggestuurd
voor iedere daemon die niet al is ingesteld in het
toegangsbestand. Het is erg handig om een antwoord terug
te sturen naar degene die een verbinding op heeft willen
zetten meteen nadat een tot stand gekomen verbinding is
verbroken. Let wel dat alle berichten die gezonden worden
moeten staan tussen "
karakters. Hier zijn geen uitzonderingen op. Het is mogelijk een ontzegging van dienst aanval uit
te voeren op de server als een aanvaller, of een groep
aanvallers, deze daemons kan overstromen met verzoeken om
verbindingen te maken.Het is ook mogelijk hier de optie
te gebruiken. Net als weigert
de optie impliciet de verbinding en kan
het gebruikt worden om shellcommando's of scripts uit te
voeren. Anders dan bij stuurt
geen bericht aan degene die de
verbinding wilde maken. Zie bijvoorbeeld de volgende
instelling:# Geen verbindingen van example.com:
ALL : .example.com \
: spawn (/bin/echo %a from %h attempted to access %d >> \
/var/log/connections.log) \
: denyHiermee worden alle verbindingen van het domein
*.example.com geweigerd.
Tegelijkertijd worden ook hostnaam, IP
adres en de daemon waarmee verbinding werd gemaakt naar
/var/log/connections.log
geschreven.Naast de vervangingskarakters die al zijn toegelicht,
zoals %a, bestaan er nog een paar andere.
In de handleiding van &man.hosts.access.5; staat een volledige
lijst.WildcardoptiesTot nu toe is in ieder voorbeeld ALL
gebruikt. Er bestaan nog andere opties waarmee de
mogelijkheden nog verder gaan. Zo kan ALL
gebruikt worden om van toepassing te zijn op iedere instantie
van een daemon, domein of een IP adres.
Een andere wildcard die gebruikt kan worden is
PARANOID. Daarmee wordt iedere host die
een IP-adres geeft dat gefingeerd kan zijn
aangeduid. Met andere woorden: PARANOID
kan gebruikt worden om een actie aan te geven als er een
IP-adres gebruikt wordt dat verschilt van
de hostnaam. Het volgende voorbeeld kan wat verheldering
brengen:# Weiger mogelijke gespoofte verzoeken aan sendmail:
sendmail : PARANOID : denyIn het voorgaande voorbeeld worden alle
verbindingsverzoeken aan sendmail met een
IP-adres dat verschilt van de hostnaam
geweigerd.Het gebruik van de wildcard PARANOID
kan nogal wat schade aanrichten als de cliënt of de
server kapotte DNS-instellingen heeft.
Voorzichtigheid van de beheerder is geboden.De handleiding van &man.hosts.access.5; geeft meer
uitleg over wildcards en de mogelijkheden die ze
bieden.Voordat de bovenstaande instellingen werken, dient de
eerste regels in hosts.allow als
commentaar gemarkeerd te worden.TillmanHodgsonBijgedragen door MarkMurrayGebaseerd op een bijdrage van Kerberos5Kerberos is een netwerkdienst,
protocol en systeem waarmee gebruikers zich kunnen aanmelden
met behulp van een dienst op een veilige server. Diensten als
op een andere server aanmelden, op afstand kopiëren, veilig
tussen systemen kopiëren en andere taken met een hoog risico
worden aanmerkelijk veiliger en beter controleerbaar.Kerberos kan omschrijven worden
als identiteitbevestigend proxy systeem. Het kan ook
omschreven worden als een vertrouwd autenticatiesysteem van een
derde partij. Kerberos vervult maar
één taak: het veilig autenticeren van gebruikers
op het netwerk. Het vervult geen autorisatietaken (wat
gebruikers mogen) en controleert ook niets (wat gebruikers hebben
gedaan). Nadat een cliënt en server
Kerberos hebben gebruikt om hun
identiteit vast te stellen kunnen ze ook al hun communicatie
coderen om hun privacy en gegevensintegriteit te garanderen.Daarom wordt het sterk aangeraden om
Kerberos samen met andere
beveiligingsmechanismen te gebruiken die autorisatie en
controlemogelijkheden bieden.De aanwijzingen die nu volgen kunnen gebruikt worden als
werkinstructie om Kerberos in te
stellen zoals dat wordt meegeleverd met &os;. Een complete
beschrijving staat in de handleiding.Voor demonstratie van de installatie van
Kerberos wordt gebruik gemaakt van de
volgende naamgeving:Het DNS domein (zone)
is example.org.De Kerberos wereld is
EXAMPLE.ORG.Het advies is voor installaties van
Kerberos echte domeinnamen te
gebruiken, zelfs als het alleen intern wordt gebruikt. Hiermee
worden DNS problemen voorkomen is een
goede samenwerking met andere
Kerberos werelden verzekerd.GeschiedenisKerberos5geschiedenisKerberos is ontworpen door
MIT als oplossing voor
netwerkbeveiligingsproblemen. Het
Kerberos protocol gebruikt sterke
codering zodat een cliënt zijn identiteit kan bewijzen aan
een server (en andersom) over een onveilige
netwerkverbinding.Kerberos is zowel de naam van
een netwerkautorisatieprotocol als een bijvoeglijk naamwoord om
de programma's te beschrijven die gebruik maken van het
programma (zoals Kerberos telnet).
De huidige versie van het protocol is versie 5 en is beschreven
in RFC 1510.Er zijn een aantal vrij beschikbare implementaties van dit
protocol beschikbaar voor veel systemen. Het Massachusetts
Institute of Technology (MIT), waar
Kerberos ooit is ontwikkeld,
ontwikkelt nog steeds door aan hun
Kerberos pakket. Het wordt in de
VS veel gebruikt als coderingspakket en
daarom wordt het ook geraakt door de exportwetgeving van de
VS. Kerberos
van MIT is beschikbaar als port
(security/krb5). Heimdal
Kerberos is een andere implementatie
van versie 5 die expliciet buiten de VS is
ontwikkeld om de exportwetgeving de omzeilen (en wordt daarom
vaak gebruikt in niet-commerciële &unix; varianten). De
Heimdal Kerberos distributie is
beschikbaar als port (security/heimdal) en er zit een
minimale installatie in de basisinstallatie van &os;.Om het grootst mogelijke publiek te bereiken gaan deze
instructies ervan uit dat de Heimdal distributie die bij &os;
zit wordt gebruikt.Opzetten van een Heimdal KDCKerberos5sleutel distributie centrum instellingenHet Sleutel Distributie Centrum (KDC,
voluit Key Distribution Center) is de
gecentraliseerde autenticatiedienst die
Kerberos levert. Het is de computer
die Kerberos tickets uitgeeft. Het
KDC wordt vertrouwd door
alle andere computer in de Kerberos
wereld en daarom dient er een strenger beveiligingsregime op
van kracht te zijn.Hoewel het draaien van de
Kerberos dienst erg weinig van een
systeem vraagt, wordt het wel aangeraden om een machine in te
richten exclusief voor het KDC om
beveiligingsredenen.Het opzetten van een KDC begint met de
controle of de instellingen in
/etc/rc.conf juist zijn om te functioneren
als KDC (misschien moeten paden veranderd
worden voor een eigen systeem):kerberos5_server_enable="YES"
kadmind5_server_enable="YES"Daarna wordt het
Kerberos-instellingenbestand
/etc/krb5.conf aangemaakt:[libdefaults]
default_realm = EXAMPLE.ORG
[realms]
EXAMPLE.ORG = {
kdc = kerberos.example.org
admin_server = kerberos.example.org
}
[domain_realm]
.example.org = EXAMPLE.ORG/etc/krb5.conf gaat ervan uit dat de
KDC de volledig gekwalificeerde hostnaam kerberos.example.org heeft. Als de
KDC een andere hostnaam heeft, moet er nog
een CNAME (alias) toegevoegd aan de zonefile.Voor grotere netwerken met een juist ingestelde
BIND DNS server kan
het bovenstaande voorbeeld ingekort worden tot:[libdefaults]
default_realm = EXAMPLE.ORGDoor de volgende regels toe te voegen aan het
zonebestand voor example.org:_kerberos._udp IN SRV 01 00 88 kerberos.example.org.
_kerberos._tcp IN SRV 01 00 88 kerberos.example.org.
_kpasswd._udp IN SRV 01 00 464 kerberos.example.org.
_kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org.
_kerberos IN TXT EXAMPLE.ORGOm cliënten de
Kerberos-diensten te kunnen laten
vinden, moet er een volledig ingestelde
/etc/krb5.conf zijn of een minimaal
ingestelde /etc/krb5.confen een correct ingestelde DNS-server.Nu wordt de Kerberos
database aangemaakt. Deze database bevat de sleutels voor
alle principals en zijn versleuteld met een hoofdwachtwoord.
Dit wachtwoord hoeft niet onthouden te worden omdat het wordt
opgeslagen in (/var/heimdal/m-key). De
hoofdsleutel wordt aangemaakt door kstash
te starten en een wachtwoord in te voeren.Als de hoofdsleutel is gemaakt, kan de database
ingeschakeld worden met kadmin
met de optie -l (die staat voor
local). Deze optie geeft
kadmin de opdracht om de databasebestanden
direct te wijzigingen in plaats van via de
kadmind netwerkdienst. Hiermee wordt het
kip-ei-probleem opgelost waarbij een verbinding wordt gemaakt
met de database voordat hij bestaat. Op het prompt van
kadmin kan met init
de database met de werelden aangemaakt worden.Tenslotte, nog steeds in kadmin, kan
de eerste principal gemaakt worden met
add. De standaardopties voor de principal
worden nu aangehouden. Deze kunnen later altijd
nog gewijzigd worden met modify. Met
het commando ? kunnen alle beschikbare
mogelijkheden getoond worden.Hieronder een sessie waarin een voorbeelddatabase wordt
aangemaakt:&prompt.root; kstash
Master key: xxxxxxxx
Verifying password - Master key: xxxxxxxx
&prompt.root; kadmin -l
kadmin> init EXAMPLE.ORG
Realm max ticket life [unlimited]:
kadmin> add tillman
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
Password: xxxxxxxx
Verifying password - Password: xxxxxxxxNu kan de KDC dienst gestart worden
met service kerberos start en
service kadmind start. Op dit moment
draait er nog geen enkele daemon die gebruik maakt van
Kerberos. Bevestiging dat
KDC draait is te krijgen door een ticket te
vragen en dat uit te lezen voor de principal (gebruiker)
die zojuist is aangemaakt vanaf de commandoregel van het
KDC zelf:&prompt.user; kinit tillman
tillman@EXAMPLE.ORG's Password:
&prompt.user; klist
Credentials cache: FILE:/tmp/krb5cc_500
Principal: tillman@EXAMPLE.ORG
Issued Expires Principal
Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORGHet ticket kan worden ingenomen wanneer u klaar bent:&prompt.user; kdestroyKerberos inschakelen op een
server met Heimdal dienstenKerberos5diensten inschakelenAls eerste is een kopie van het instellingenbestand van
Kerberos nodig,
/etc/krb5.conf. Dit bestand kan
eenvoudigweg op een veilige manier (met netwerkprogramma's
als &man.scp.1;, of fysiek via een floppy) naar de
cliëntcomputer gekopieerd worden vanaf de
KDC.Hierna is het /etc/krb5.keytab
nodig. Dit is het belangrijkste verschil tussen een server
die een daemons met Kerberos
aanbiedt en een werkstation: de server heeft het bestand
keytab nodig. Dit bestand bevat de
hostsleutel van de server waardoor het werkstation en de
KDC elkaars identiteit kunnen bevestigen.
Dit bestand dient veilig overgebracht te worden omdat de
beveiliging van de server doorbroken kan worden als de
sleutel openbaar wordt gemaakt. Dit betekent expliciet dat
overdracht via een protocol dat platte tekst gebruikt,
bijvoorbeeld FTP, een slecht idee is.Meestal wordt keytab naar de
server gebracht met kadmin. Dat
werkt handig omdat ook de host principal (het
KDC onderdeel van
krb5.keytab) aangemaakt moet
worden met kadmin.Let wel op dat er al een ticket moet zijn en dat dit
ticket de kadmin interface moet mogen
gebruiken in kadmind.acl. Zie
Beheer op Afstand in de Heimdal
informatiepagina's (info heimdal) voor
details over het ontwerpen van toegangscontrole. Als
kadmin via het netwerk geen toegang mag
hebben, dan kan ook op een veilige verbinding gemaakt worden
met de KDC (via het lokale console,
&man.ssh.1; of Kerberos
&man.telnet.1;) zodat alles lokaal uitgevoerd kan worden met
kadmin -l.Na het installeren van
/etc/krb5.conf kan
kadmin van de
Kerberos server gebruikt worden.
Met add --random-key kan de host
principal toegevoegd worden en met ext kan
de host principal van de server naar zijn eigen keytab
getrokken worden. Bijvoorbeeld:&prompt.root; kadmin
kadmin> add --random-key host/myserver.example.org
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
kadmin> ext host/myserver.example.org
kadmin> exitLet op: ext slaat de sleutel standaard
op in /etc/krb5.keytab.Als kadmind niet beschikbaar is op de
KDC (wellicht om beveiligingsredenen) en
er via het netwerk dus geen toegang is tot
kadmin, dan kan de host principal
(host/myserver.EXAMPLE.ORG) ook direct
aan de KDC toegevoegd worden en daarna in
een tijdelijk bestand gezet worden. Het volgende kan
gebruikt worden om te voorkomen dat
/etc/krb5.keytab op de
KDC) wordt overschreven:&prompt.root; kadmin
kadmin> ext --keytab=/tmp/example.keytab host/myserver.example.org
kadmin> exitHierna kan de keytab veilig gekopieerd worden naar de
server (met scp of een floppy). Geef
een niet-standaard naam op voor de keytab om te voorkomen
dat de keytab op de KDC wordt
overschreven.Nu kan de server communiceren met de
KDC (vanweg
krb5.conf) en zijn identiteit bewijzen
(vanwege krb5.keytab). Nu is de server
klaar om er een aantal Kerberos
diensten op te activeren. In dit voorbeeld wordt de dienst
telnet geactiveerd door de volgende regel
in /etc/inetd.conf te zetten en dan
&man.inetd.8; te herstarten met
service inetd restart:telnet stream tcp nowait root /usr/libexec/telnetd telnetd -a userHet belangrijkste is dat de typering
-a (van autenticatie) op user staat. Meer
details zijn in &man.telnetd.8; te vinden.Kerberos activeren op een
cliënt met HeimdalKerberos5cliëntinstellingenHet opzetten van een cliëntcomputer is eigenlijk
kinderlijk eenvoudig. Wat betreft de
Kerberos instelling is alleen het
Kerberos instellingenbestand
(/etc/krb5.conf) nodig. Dat kan
eenvoudigweg naar de cliëntcomputer gekopieerd worden
vanaf de KDC.Test de cliënt met kinit,
klist en kdestroy
vanaf de cliënt om een ticket te krijgen, te bekijken en
daarna te verwijderen voor de principal die hierboven is
aangemaakt. Nu moeten ook
Kerberos applicaties gebruikt
kunnen worden om verbindingen te maken met servers waarop
Kerberos is geactiveerd. Als dat
niet lukt en het verkrijgen van een ticket is wel mogelijk,
dan ligt dat hoogstwaarschijnlijk aan de server en niet aan
de cliënt of de KDC.Bij het testen van een applicatie als
telnet kan het beste een pakketsnuffelaar
(bijvoorbeeld &man.tcpdump.1;) gebruikt worden om te bevestigen dat
een wachtwoord niet als tekst wordt verzonden. Gebruik
telnet met de optie -x.
Dan wordt de complete gegevensstroom versleuteld (vergelijkbaar
met ssh).Er worden standaard ook andere
Kerberos applicaties op de
cliënt geïnstalleerd. Hier komt de
minimalistische natuur van de basisinstallatie
van Heimdal boven drijven: telnet is
de enige dienst waarvoor Kerberos
geactiveerd is.De port Heimdal voegt een aantal ontbrekende
cliëntapplicaties toe: versies met ondersteuning voor
Kerberos van
ftp, rsh,
rcp, rlogin en een paar
minder gebruikelijke programma's. De MIT
port bevat ook een volledig gamma aan
Kerberos cliëntapplicaties.Instellingenbestanden voor gebruikers:
.k5login en
.k5users.k5login.k5usersVoor gebruikers binnen een wereld wijst hun
Kerberos principal (bv.
tillman@EXAMPLE.ORG) gewoonlijk naar
een lokale gebruikersaccount (bijvoorbeeld een lokale account
met de naam tillman). Voor
cliëntapplicaties als telnet is
gewoonlijk geen gebruikersnaam of principal nodig.Soms moet iemand zonder bijpassende
Kerberos principal toch toegang
hebben tot een lokale gebruikersaccount.
tillman@EXAMPLE.ORG zou bijvoorbeeld
toegang nodig kunnen hebben tot de lokale gebruikersaccount
webdevelopers. Andere principals zouden
die toegang wellicht ook nodig kunnen hebben.De bestanden .k5login en
.k5users uit de gebruikersmap kunnen op
eenzelfde manier gebruikt worden als
.hosts en .rhosts.
Zo wordt het voorgaande probleem opgelost. Als bijvoorbeeld
een .k5login met de volgende
inhoud:tillman@example.org
jdoe@example.orgin de thuismap van de lokale gebruiker
webdevelopers gezet wordt dan zouden
beide principals toegang hebben tot die account zonder dat
ze een wachtwoord hoeven te delen.We raden aan de handleidingen voor deze commando's
te lezen. Let op dat de ksu handleiding
.k5users behandelt.Kerberos tips, trucs en
problemen oplossenKerberos5problemen oplossenAls de Heimdal of MIT
Kerberos port wordt gebruikt
dan dient de PATH omgevingsvariabele
de Kerberos versies van de
cliëntapplicaties te tonen voor de systeemversies.Hebben alle computers in de wereld hun tijd
gesynchroniseerd? Als dat niet zo is, dan slaagt de
autenticatie wellicht niet.
beschrijft hoe klokken
met NTP gesynchroniseerd kunnen
worden.MIT en Heimdal werken prima samen.
Dit geldt niet voor kadmin omdat
daarvoor geen protocolstandaard is.Als een hostnaam wordt gewijzigd, dan moet ook de
host/ principal aangepast en de
keytab. Dit geldt ook voor bijzondere instellingen
in de keytab zoals de www/ principal
voor www/mod_auth_kerb van
Apache.Alle hosts in een wereld moeten oplosbaar
(resolvable) zijn (zowel vooruit als achteruit) in de
DNS (of tenminste in
/etc/hosts). CNAMEs werken wel,
maar de A en PTR records moeten juist en actief zijn. De
foutmelding is niet erg duidelijk: Kerberos5
refuses authentication because Read req failed: Key table
entry not found.Sommige besturingssystemen van cliënten voor een
KDC zetten wellicht geen setuid
root voor ksu.
Dit betekent dat ksu niet werkt. Dat
is vanuit beveiligingsoogpunt een prima idee, maar wel
lastig. Dit is dus geen KDC-fout.Als met MIT
Kerberos een principal een
ticket moet krijgen dat langer geldig is dan de standaard
van tien uur, dan moet
modify_principal in
kadmin gebruikt worden om de maximale
geldigheidsduur (maxlife) van zowel de principal waar het
om gaat als de krbtgt principal aan
te passen. Dan kan de principal kinit-l gebruiken om een ticket met een
langere levensduur aan te vragen.Als een pakketsnuffelaar op de
KDC draait bij om te helpen bij het
oplossen van problemen en dan kinit
vanaf een werkstation wordt gestart, dan wordt zichtbaar
dat de TGT meteen wordt verstuurd als
kinit start, zelfs nog voor het
wachtwoord! De reden hiervoor is dat de
Kerberos server vrijelijk een
TGT (Ticket Granting
Ticket) verstuurt op iedere niet geautoriseerd verzoek.
Maar iedere TGT is versleuteld met een
sleutel die is afgeleid van het wachtwoord van de
gebruiker. Als een gebruiker zijn wachtwoord ingeeft,
wordt dat dus niet naar de KDC
gezonden, maar ontcijfert het de TGT
die kinit al heeft ontvangen. Als de
ontcijfering resulteert in een geldige ticket met een
geldige tijdstempel, dan heeft de gebruiker geldige
Kerberos rechten. Deze
rechten bevatten ook een sessiesleutel voor het opzetten
van beveiligde communicatie met de
Kerberos server in de toekomst
en de eigenlijke ticket-granting ticket, die is
versleuteld met de sleutel van de
Kerberos server zelf. Deze
tweede laag van versleuteling is niet bekend voor de
gebruiker, maar het stelt de
Kerberos server in staat om de
juistheid van iedere TGT te
bevestigen.Als tickets worden gebruik die lang geldig zijn (bv.
een week) en OpenSSH wordt
gebruikt om een verbinding te maken met de machine waarop
het ticket staat, zorg er dan voor dat de
Kerberos optie
op no
staat in sshd_config want anders
worden tickets verwijderd bij afmelden.Hostprincipals kunnen ook een langere levensduur
hebben. Als een gebruikers principal een levensduur van
een week heeft, maar de host waar de verbinding mee
gemaakt wordt heeft een levensduur van negen uur,
dan heb staat er een verlopen host principal in de cache
en dan werkt een en ander niet zoals verwacht.Een krb5.dict bestand om het
gebruik van bepaalde slechte wachtwoorden te voorkomen
(dit wordt kort behandeld in de handleiding voor
kadmind) heeft alleen betrekking op
principals waar een wachtwoordbeleid voor geldt. De
opmaak van krb5.dict is eenvoudig:
een rij tekens per regel. Een symbolische link maken naar
/usr/share/dict/words is misschien
handig.Verschillen met de MIT portHet belangrijkste verschil tussen de
MIT en Heimdal installatie heeft
betrekking op kadmin, dat een andere (maar
gelijkwaardige) set commando's kent en een andere protocol
gebruikt. Dit betekent nogal wat als een
KDC MIT is, omdat
dan de kadmin van Heimdal niet gebruikt
kan worden om de KDC vanaf afstand te
beheren (dat geldt trouwens ook vice versa).De cliëntapplicaties kunnen ook commandoregelopties
gebruiken die een beetje verschillen, maar waarmee wel
hetzelfde wordt bereikt. We raden aan de instructies op de
MIT Kerberos
website () te volgen.
Wees voorzichtig met paden: de MIT-port
installeert standaard in
/usr/local/ en dus kunnen de
normale systeemapplicaties gestart worden in
plaats van die van MIT als de
PATH omgevingsvariabele de systeemmappen als
eerste weergeeft.Als de MIT
security/krb5 port die
bij &os; zit wordt gebruikt, dan zorgt het lezen van
/usr/local/share/doc/krb5/README.FreeBSD
dat bij de port wordt geïnstalleerd voor een beter
begrip over waarom het aanmelden via
telnetd en klogind
soms wat vreemd verloopt. Als belangrijkste wijzen we erop
dat het bij het corrigeren van
onjuiste rechten op het cachebestand
noodzakelijk is dat het binaire bestand
login.krb5 wordt gebruikt voor
autenticatie zodat het op de juiste wijze eigenaarschap kan
wijzigen voor de doorgegeven rechten.Het bestand rc.conf moet ook gewijzigd
worden zodat het de volgende configuratie bevat:kerberos5_server="/usr/local/sbin/krb5kdc"
kadmind5_server="/usr/local/sbin/kadmind"
kerberos5_server_enable="YES"
kadmind5_server_enable="YES"Dit is gedaan omdat de applicaties voor
MIT-Kerberos binairen in de hiërarchie
/usr/local installeren.Beperkingen in
KerberosKerberos5beperkingen en tekortkomingenKerberos is een alles of
niets aanpakIedere ingeschakelde dienst op het netwerk moet
aangepast worden om met Kerberos
te werken (of op een andere manier beschermd zijn tegen
netwerkaanvallen), want anders kunnen gebruikersrechten
worden gestolen en herbruikt. Een voorbeeld hier van is
het inschakelen van Kerberos
voor alle shells op afstand (via rsh en
telnet bijvoorbeeld), maar de
POP3 mailserver die wachtwoorden als
platte tekst verzend ongemoeid laten.Kerberos is bedoeld voor
werkstations met een gebruikerIn een meergebruikersomgeving is
Kerberos minder veilig. Dit
komt doordat de tickets worden opgeslagen in de map
/tmp, waar gelezen kan worden
door alle gebruikers. Als een gebruiker een computer deelt met
andere gebruikers op hetzelfde moment (dus multi-user), dan
is het mogelijk dat een ticket van een gebruiker wordt
gestolen (gekopieerd) door een andere gebruiker.Dit kan voorkomen worden met de commandoregeloptie
-c bestandsnaam of (bij
voorkeur) de omgevingsvariabele KRB5CCNAME,
maar dat wordt zelden gedaan. In principe kan het opslaan
van een ticket in de thuismap van een gebruiker in
combinatie met eenvoudige bestandsrechten dit probleem
verhelpen.De KDC is een single point of failureZoals het is ontworpen, moet de KDC
zo goed mogelijk beveiligd zijn, omdat de
hoofdwachtwoorddatabase erop staat. De KDC
hoort geen enkele andere dienst aan te bieden en moet ook
fysiek afgeschermd worden. Het gevaar is groot, omdat
Kerberos alle wachtwoorden
versleutelt met dezelfde sleutel (de master
sleutel) die als een bestand op de KDC
staat.Toch is een gecompromitteerde mastersleutel niet zo'n
groot probleem als wellicht wordt verondersteld. De
mastersleutel wordt alleen gebruikt om de
Kerberos database te
versleutelen en als zaad voor de generator van willekeurige
nummers. Zo lang als de toegang tot de
KDC is beveiligd, kan een aanvaller niet
echt iets doen met de mastersleutel.Als de KDC niet beschikbaar is
(misschien door een ontzeggen van dienst aanval of
netwerkproblemen) kunnen de netwerkdiensten niet gebruikt
worden omdat er geen autenticatie uitgevoerd kan worden;
een recept voor een ontzeggen van dienst aanval. Dit
risico kan omzeild worden door meerdere
KDC's (één master en
één of meer slaven) en een zorgvuldige
implementatie van secundaire of fall-back autenticatie.
PAM is hier uitermate geschikt
voor.Tekortkomingen van
KerberosKerberos stelt gebruikers,
hosts en diensten in staat om elkaar te autenticeren.
Maar het heeft geen mechanisme om de KDC
te autenticeren aan de gebruikers, hosts of diensten. Dit
betekent dat bijvoorbeeld een vervalste
kinit alle gebruikersnamen en
wachtwoorden zou kunnen afluisteren. Iets als
security/tripwire of
andere controle-instrumenten voor de integriteit van
bestandssystemen kunnen hier verlichting brengen.Bronnen en verdere informatieKerberos5externe bronnen
De Kerberos FAQ (Engels)Een
Autenticatiesysteem Ontwerpen: een Dialoog in Vier Scenes
(Engels)
RFC 1510, De Kerberos Netwerk
Authenticatie Dienst (V5) (Engels)MIT
Kerberos homepageHeimdal
Kerberos homepageTomRhodesGeschreven door OpenSSLbeveiligingOpenSSLOpenSSLEen toepassing die bij &os; zit die veel gebruikers over het
hoofd zien is OpenSSL.
OpenSSL biedt een versleutelde
transportlaag bovenop de normale communicatielaag. Daardoor
biedt het de mogelijkheid met veel netwerktoepassingen en
diensten verweven te raken.Een aantal toepassingen van
OpenSSL zijn versleutelde
autenticatie van mailcliënten, webgebaseerde transacties als
creditcardbetalingen en nog veel meer. Veel ports zoals
www/apache22 en
mail/claws-mail
bieden tijdens het compileren ondersteuning om
OpenSSL in te bouwen.In de meeste gevallen zal de Portscollectie proberen de
port security/openssl te
bouwen, tenzij de make variabele
WITH_OPENSSL_BASE expliciet naar
yes is gezet.De versie van OpenSSL die bij &os;
zit ondersteunt Secure Sockets Layer v2/v3 (SSLv2/SSLv3),
Transport Layer Security v1 (TLSv1) netwerkbeveiligingsprotocollen
en kan gebruikt worden als generieke versleutelingsbibliotheek.Hoewel OpenSSL ondersteuning
biedt voor het IDEA algoritme, is dat
standaard uitgeschakeld in verband met patenten in de Verenigde Staten.
Om het te gebruiken dient de licentie gelezen te worden en, als
de restricties aanvaardbaar zijn, dient de make-variabele
MAKE_IDEA ingesteld te worden in
make.conf.Een van de meest gebruikte toepassingen van
OpenSSL is het leveren van
certificaten voor gebruik met softwaretoepassingen. Deze
certificaten verzekeren dat de eigenschappen van een bedrijf
of individu geldig zijn en niet vervalst. Als het certificaat
in kwestie niet geldig verklaard is door een van de
Certificate Authorities of
CA's, dan komt er een waarschuwing. Een
Certificate Authority is een bedrijf, zoals VeriSign, dat
certificaten ondertekent zodat de eigenschappen van een bedrijf
of individu geldig verklaard kunnen worden. Dit proces kost geld
en het is zeker geen voorwaarde voor het gebruik van
certificaten. Het stelt wel de meer paranoïde gebruikers
gerust.Certificaten makenOpenSSLcertificaten makenVoor het maken van certificaten is het volgende commando
beschikbaar:&prompt.root; openssl req -new -nodes -out req.pem -keyout cert.pem
Generating a 1024 bit RSA private key
................
.......................................
writing new private key to 'cert.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:PA
Locality Name (eg, city) []:Pittsburgh
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:Systems Administrator
Common Name (eg, YOUR name) []:localhost.example.org
Email Address []:trhodes@FreeBSD.org
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:SOME PASSWORD
An optional company name []:Another NameLet op dat het antwoord direct na Common
Name een domeinnaam weergeeft. De prompt wil
dat er een servernaam wordt ingegeven voor het
verificatieproces. Het plaatsen van iets anders dan een
domeinnaam zorgt ervoor dat het certificaat waardeloos wordt.
Er zijn ook andere opties als verloopdatum, andere
versleutelingsalgoritmes, etc, beschikbaar. Een volledige
lijst is na te lezen in de handleiding van
&man.openssl.1;.Er horen nu twee bestanden te staan in de map waarin het
voorgaande commando is uitgevoerd. Het certificaatverzoek,
req.pem, kan naar een certificaat
autoriteit gestuurd worden die de bijgevoegde gegevens kan
valideren, het verzoek kan tekenen en het certificaat kan
retourneren. Het tweede bestand heet
cert.pem en is de geheime sleutel voor het
certificaat. Deze dient zorgvuldig beschermd te worden. Als
de geheime sleutel in de handen van anderen valt kan die
gebruikt worden om de identiteit van de eigenaar (of server)
aan te nemen.In gevallen waar ondertekening door een
CA niet vereist is, kan een zelfondertekend
certificaat gemaakt worden. Maak als eerste de
RSA sleutel:&prompt.root; openssl dsaparam -rand -genkey -out myRSA.key 1024Hierna kan de CA sleutel gemaakt
worden:&prompt.root; openssl gendsa -des3 -out myca.keymyRSA.keyDeze sleutel kan gebruikt worden om een certificaat te
maken:&prompt.root; openssl req -new -x509 -days 365 -key myca.key -out new.crtEr zouden nu twee bestanden bijgekomen moeten zijn in de
map: een certificaatautoriteit ondertekeningsbestand
myca.key en new.crt,
het certificaat zelf. Deze moeten in een map geplaatst worden,
bij voorkeur onder /etc
waar alleen root kan lezen. De rechten
0700 zijn hier prima en die kunnen ingesteld worden met
chmod.Certificaten gebruiken: een voorbeeldEn wat kunnen deze bestanden? Een prima toepassing zou
het versleutelen van verbindingen naar de
Sendmail MTA
kunnen zijn. Daardoor zouden gebruikers niet langer platte
tekst hoeven te autenticeren om mail te sturen via de lokale
MTA.Dit is niet de best denkbare toepassing omdat sommige
MUA's de gebruiker een foutmelding geven
als ze het certificaat niet lokaal geïnstalleerd hebben.
De documentatie bij de software geeft meer informatie over
het installeren van certificaten.De volgende regels moeten opgenomen worden in het lokale
.mc bestand:dnl SSL Options
define(`confCACERT_PATH',`/etc/certs')dnl
define(`confCACERT',`/etc/certs/new.crt')dnl
define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
define(`confTLS_SRV_OPTIONS', `V')dnl/etc/certs/ is de
map die gebruikt wordt voor het lokaal opslaan van certificaten
en sleutels. De laatste voorwaarde het is opnieuw aanmaken van
het lokale .cf bestand. Dit gaat door
eenvoudigweg make
install te typen in de map
/etc/mail. Laat dat
volgen door make
install waardoor de daemon
Sendmail herstart zou moeten
worden.Als alles goed is gegaan, dan staan er geen foutmeldingen
/var/log/maillog en is
Sendmail zichtbaar in de
proceslijst.Maak als eenvoudige test een verbinding met de mailserver
met &man.telnet.1;:&prompt.root; telnet example.com 25
Trying 192.0.34.166...
Connected to example.com.
Escape character is '^]'.
220 example.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
ehlo example.com
250-example.com Hello example.com [192.0.34.166], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-STARTTLS
250-DELIVERBY
250 HELP
quit
221 2.0.0 example.com closing connection
Connection closed by foreign host.Als de regel STARTTLS verschijnt in de
uitvoer dan werkt alles correct.NikClaytonnik@FreeBSD.orgGeschreven door VPN via IPsecIPsecEen VPN opzetten met &os; gateways tussen twee netwerken die
gescheiden zijn door Internet.Hiten M.Pandyahmp@FreeBSD.orgGeschreven door IPsec begrijpenDeze paragraaf is een gids in het proces van het opzetten
van IPsec. Voordat IPsec opgezet kan worden dient de lezer
bekend te zijn met de concepten die nodig zijn om een aangepaste
kernel te bouwen (zie ).IPsec is een protocol dat bovenop de
Internet Protocol (IP) laag ligt. Hiermee kunnen twee of meer
host op een veilige manier communiceren (vandaar de naam). De
&os; IPsec netwerk wachtrij (stack) is gebaseerd
op de
KAME-implementatie,
die zowel de protocolfamilies IPv4 als de IPv6 ondersteunt.IPsecESPIPsecAHIPsec bestaat uit twee subprotocollen:Encapsulated Security Payload
(ESP) beschermt de IP-pakketdata tegen
inmenging door een derde partij door de inhoud te
versleutelen met symmetrische
versleutelingsalgoritmes (zoals Blowfish en 3DES).Authentication Header (AH)
beschermt de IP-pakketkop tegen inmenging door een derde
partij en spoofing door een cryptografische checksum te
berekenen en de IP-pakketkopvelden te hashen met een
veilige hashfunctie. Hierna wordt een extra kop ingevoegd
die de hash bevat zodat de informatie in het pakket
geautenticeerd kan worden.ESP en AH kunnen
samen of apart gebruikt worden, afhankelijk van de
omgeving.VPNvirtual private networkVPNvirtueel privaat netwerkVPNIPsec kan gebruikt worden om het verkeer tussen twee hosts
direct te versleutelen (dat heet Transport
Mode) of door virtuele tunnels te
bouwen tussen twee subnetten die gebruikt kunnen worden voor
veilige communicatie tussen twee bedrijfsnetwerken (dat heet
Tunnel Mode). De laatste versie staat
beter bekend als Virtual Private Network
(VPN). In &man.ipsec.4; staat gedetailleerde
informatie over het IPsec subsysteem in &os;.Voor ondersteuning voor IPsec in de kernel zijn de
volgende opties nodig in het
kernelinstellingenbestand:kerneloptiesIPSECoptions IPSEC #IP-beveiliging
device cryptokerneloptiesIPSEC_DEBUGAls er ook fouten in IPsec (debugging) verwijderd moeten
kunnen worden, dan is de volgende optie ook nodig:options IPSEC_DEBUG #debug voor IP-beveiligingHet probleemEr bestaat geen standaard voor wat een VPN is. VPN's
kunnen opgezet worden met behulp van een aantal verschillende
technologieën die allemaal hun eigen voor- en nadelen
hebben. Dit onderdeel bevat een scenario en de
strategieën die gebruikt kunnen worden voor het
implementeren van een VPN in iedere situatie.Het scenario: twee netwerken, de ene thuisgebaseerd en de
andere bedrijfgebaseerd. Beide zijn verbonden met het Internet,
en er wordt van verwacht dat ze zich via dit
VPN als één gedragen.VPNmakenDit is het uitgangspunt:Er zijn tenminste twee locatiesBeide locaties gebruiken IPBeide locaties hebben een Internetverbinding via een
gateway waarop &os; draait.De gateway op ieder netwerk heeft tenminste
één publiek IP-adres.De interne adressen van de twee netwerken mogen
publieke of private IP-adressen zijn,
dat maakt niet uit. Ze mogen alleen niet botsen;
bijvoorbeeld: ze mogen niet beide 192.168.1.x gebruiken.TomRhodestrhodes@FreeBSD.orgGeschreven door IPsec configureren op &os;Om te beginnen moet de port security/ipsec-tools
geïnstalleerd zijn vanuit de Portscollectie. Dit
softwarepakket van een derde partij biedt een aantal applicaties
die helpen de configuratie te ondersteunen.De volgende benodigdheid is om twee &man.gif.4;
pseudo-apparaten aan te maken om de pakketten te tunnelen en
beide netwerken in staat stellen om op een juiste wijze te
communiceren. Draai als root de volgende
commando's, waarbij de items intern
en extern met de echte interne en
externe gateways:&prompt.root; ifconfig gif0 create&prompt.root; ifconfig gif0 intern1 intern2&prompt.root; ifconfig gif0 tunnel extern1 extern2Het publieke IP van het
LAN van de onderneming is bijvoorbeeld
172.16.5.4 en het heeft een
privaat IP 10.246.38.1. Het publieke
IP van het LAN van huis is
192.168.1.12 met een intern
privaat IP 10.0.0.5.Dit kan verwarrend lijken, dus bekijk de volgende
voorbeeld van het commando &man.ifconfig.8;:Gateway 1:
gif0: flags=8051 mtu 1280
tunnel inet 172.16.5.4 --> 192.168.1.12
inet6 fe80::2e0:81ff:fe02:5881%gif0 prefixlen 64 scopeid 0x6
inet 10.246.38.1 --> 10.0.0.5 netmask 0xffffff00
Gateway 2:
gif0: flags=8051 mtu 1280
tunnel inet 192.168.1.12 --> 172.16.5.4
inet 10.0.0.5 --> 10.246.38.1 netmask 0xffffff00
inet6 fe80::250:bfff:fe3a:c1f%gif0 prefixlen 64 scopeid 0x4Eenmaal compleet zouden beide private
IP's bereikbaar moeten zijn met het commando
&man.ping.8; zoals de volgende uitvoer suggereert:priv-net# ping 10.0.0.5
PING 10.0.0.5 (10.0.0.5): 56 data bytes
64 bytes from 10.0.0.5: icmp_seq=0 ttl=64 time=42.786 ms
64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=19.255 ms
64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=20.440 ms
64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=21.036 ms
--- 10.0.0.5 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 19.255/25.879/42.786/9.782 ms
corp-net# ping 10.246.38.1
PING 10.246.38.1 (10.246.38.1): 56 data bytes
64 bytes from 10.246.38.1: icmp_seq=0 ttl=64 time=28.106 ms
64 bytes from 10.246.38.1: icmp_seq=1 ttl=64 time=42.917 ms
64 bytes from 10.246.38.1: icmp_seq=2 ttl=64 time=127.525 ms
64 bytes from 10.246.38.1: icmp_seq=3 ttl=64 time=119.896 ms
64 bytes from 10.246.38.1: icmp_seq=4 ttl=64 time=154.524 ms
--- 10.246.38.1 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 28.106/94.594/154.524/49.814 msZoals verwacht hebben beide kanten de mogelijkheid om
ICMP-pakketten te verzenden en te ontvangen
van de privaat geconfigureerde adressen. Vervolgens dient aan
beide gateways verteld te worden hoe pakketten te routeren om op
de juiste wijze verkeer van een van de netwerken te versturen.
Het volgende commando doet dit:&prompt.root; corp-net# route add 10.0.0.0 10.0.0.5 255.255.255.0&prompt.root; corp-net# route add net 10.0.0.0: gateway 10.0.0.5&prompt.root; priv-net# route add 10.246.38.0 10.246.38.1 255.255.255.0&prompt.root; priv-net# route add host 10.246.38.0: gateway 10.246.38.1Op dit moment dienen interne machines bereikbaar te zijn
vanuit elke gateway alsook als vanuit machines achter de
gateways. Dit is eenvoudig te zien aan het volgende
voorbeeld:corp-net# ping 10.0.0.8
PING 10.0.0.8 (10.0.0.8): 56 data bytes
64 bytes from 10.0.0.8: icmp_seq=0 ttl=63 time=92.391 ms
64 bytes from 10.0.0.8: icmp_seq=1 ttl=63 time=21.870 ms
64 bytes from 10.0.0.8: icmp_seq=2 ttl=63 time=198.022 ms
64 bytes from 10.0.0.8: icmp_seq=3 ttl=63 time=22.241 ms
64 bytes from 10.0.0.8: icmp_seq=4 ttl=63 time=174.705 ms
--- 10.0.0.8 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 21.870/101.846/198.022/74.001 ms
priv-net# ping 10.246.38.107
PING 10.246.38.1 (10.246.38.107): 56 data bytes
64 bytes from 10.246.38.107: icmp_seq=0 ttl=64 time=53.491 ms
64 bytes from 10.246.38.107: icmp_seq=1 ttl=64 time=23.395 ms
64 bytes from 10.246.38.107: icmp_seq=2 ttl=64 time=23.865 ms
64 bytes from 10.246.38.107: icmp_seq=3 ttl=64 time=21.145 ms
64 bytes from 10.246.38.107: icmp_seq=4 ttl=64 time=36.708 ms
--- 10.246.38.107 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 21.145/31.721/53.491/12.179 msDe tunnels opzetten is het eenvoudige deel. Het
configureren van een veilige verbinding is een veel diepgaander
proces. De volgende configuratie gebruikt vooraf gedeelde
(PSK) RSA-sleutels.
Afgezien van de IP-adressen zijn beide
bestanden /usr/local/etc/racoon/racoon.conf
identiek en zien ze er ongeveer als volgt uit:path pre_shared_key "/usr/lcoal/etc/racoon/psk.txt"; # plaats van bestand vooraf gedeelde sleutels
log debug; # verbositeitsinstelling van loggen: op 'notify' zetten als testen en debuggen klaar is
padding # opties moeten niet veranderd worden
{
maximum_length 20;
randomize off;
strict_check off;
exclusive_tail off;
}
timer # timingopties, veranderen indien nodig
{
counter 5;
interval 20 sec;
persend 1;
# natt_keepalive 15 sec;
phase1 30 sec;
phase2 15 sec;
}
listen # adres [poort] waarop racoon luistert
{
isakmp 172.16.5.4 [500];
isakmp_natt 172.16.5.4 [4500];
}
remote 192.168.1.12 [500]
{
exchange_mode main,aggressive;
doi ipsec_doi;
situation identity_only;
my_identifier address 172.16.5.4;
peers_identifier address 192.168.1.12;
lifetime time 8 hour;
passive off;
proposal_check obey;
# nat_traversal off;
generate_policy off;
proposal {
encryption_algorithm blowfish;
hash_algorithm md5;
authentication_method pre_shared_key;
lifetime time 30 sec;
dh_group 1;
}
}
sainfo (address 10.246.38.0/24 any address 10.0.0.0/24 any) # adres $netwerk/$netmasker $type adres $netwerk/$netmasker $type ( $type is any of esp)
{
pfs_group 1;
lifetime time 3600 sec;
encryption_algorithm blowfish,3des,des;
authentication_algorithm hmac_md5,hmac_sha1;
compression_algorithm deflate;
}Het uitleggen van elke beschikbare optie, samen met diegenen
in deze voorbeelden valt buiten het bereik van dit document.
De configuratiehandleiding van racoon
staat vol relevante informatie.De SPD-beleiden moeten geconfigureerd
worden zodat &os; en racoon in staat
zijn om netwerkverkeer tussen hosts te versleutelen en te
ontsleutelen.Deze taak kan met een eenvoudig shellscript zoals het
volgende dat op de gateway van de onderneming staat worden
uitgevoerd. Dit bestand wordt gebruikt tijdens de
systeeminitialisatie en dient bewaard te worden als
/usr/local/etc/racoon/setkey.conf.flush;
spdflush;
# Naar het thuisnetwerk
spdadd 10.246.38.0/24 10.0.0.0/24 any -P out ipsec esp/tunnel/172.16.5.4-192.168.1.12/use;
spdadd 10.0.0.0/24 10.246.38.0/24 any -P in esp/tunnel/192.168.1.12-172.16.5.4/use;Eenmaal aanwezig kan racoon op
beide gateways gestart worden met het volgende commando:&prompt.root; /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.logDe uitvoer moet ongeveer gelijk zijn aan de volgende:corp-net# /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf
Foreground mode.
2006-01-30 01:35:47: INFO: begin Identity Protection mode.
2006-01-30 01:35:48: INFO: received Vendor ID: KAME/racoon
2006-01-30 01:35:55: INFO: received Vendor ID: KAME/racoon
2006-01-30 01:36:04: INFO: ISAKMP-SA established 172.16.5.4[500]-192.168.1.12[500] spi:623b9b3bd2492452:7deab82d54ff704a
2006-01-30 01:36:05: INFO: initiate new phase 2 negotiation: 172.16.5.4[0]192.168.1.12[0]
2006-01-30 01:36:09: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.12[0]->172.16.5.4[0] spi=28496098(0x1b2d0e2)
2006-01-30 01:36:09: INFO: IPsec-SA established: ESP/Tunnel 172.16.5.4[0]->192.168.1.2[0] spi=47784998(0x2d92426)
2006-01-30 01:36:13: INFO: respond new phase 2 negotiation: 172.16.5.4[0]192.168.1.12[0]
2006-01-30 01:36:18: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.12[0]->172.16.5.4[0] spi=124397467(0x76a279b)
2006-01-30 01:36:18: INFO: IPsec-SA established: ESP/Tunnel 172.16.5.4[0]->192.168.1.12[0] spi=175852902(0xa7b4d66)Om er zeker van te zijn dat de tunnel correct werkt, dient
naar een ander console geschakeld te worden en &man.tcpdump.1;
gebruikt te worden om hiermee het netwerkverkeer te bekijken.
Vervang em0 door de netwerkinterfacekaart
indien nodig.&prompt.root; tcpdump -i em0 host 172.16.5.4 and dst 192.168.1.12Gegevens lijkend op de volgende zouden op het console moeten
verschijnen. Indien niet, dan is er iets aan de hand, en is het
nodig om de teruggegeven gegevens te debuggen.01:47:32.021683 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xa)
01:47:33.022442 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xb)
01:47:34.024218 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xc)Op dit punt zouden beide netwerken beschikbaar moeten zijn en
deel lijken van hetzelfde netwerk. Waarschijnlijk zijn beide
netwerken beschermt door een firewall, zoals het hoort. Om
verkeer tussen hen toe te staan, moeten er regels worden
toegevoegd om pakketten heen en terug door te laten. Voeg voor
de firewall &man.ipfw.8; de volgende regels toe aan het
instellingenbestand van de firewall:ipfw add 00201 allow log esp from any to any
ipfw add 00202 allow log ah from any to any
ipfw add 00203 allow log ipencap from any to any
ipfw add 00204 allow log udp from any 500 to anyAfhankelijk van de huidige hostconfiguratie dienen de
regelnummers gewijzigd te worden.Voor gebruikers van &man.pf.4; of &man.ipf.8; zouden de
volgende regels moeten volstaan:pass in quick proto esp form any to any
pass in quick proto ah from any to any
pass in quick proto ipencap from any to any
pass in quick proto udp form any port = 500 to any port = 500
pass in quick on gif0 from any to any
pass out quick proto esp from any to any
pass out quick proto ah from any to any
pass out quick ptoto ipencap from any to any
pass out quick proto udp from any port = 500 to any port = 500
pass out quick on gif0 from any to anyTer afsluiting, voeg de volgende regels toe aan
/etc/rc.conf om de machine toe te staan om
ondersteuning voor het VPN te starten tijdens
de systeeminitialisatie:ipsec_enable="YES"
ipsec_program="/usr/local/sbin/setkey"
ipsec_file="/usr/local/etc/racoon/setkey.conf" # staat toe om spd-beleiden tijdens het opstarten op te zetten
racoon_enable="yes"ChernLeeBijgedragen door OpenSSHOpenSSHbeveiligingOpenSSHOpenSSH is een groep
netwerkverbindingsprogramma's waarmee computers via het netwerk
veilig benaderd kunnen worden. Het kan ingezet worden als een
directe vervanger van rlogin,
rsh, rcp en
telnet. Daarnaast kunnen
TCP/IP-verbindingen veilig
getunneld of geforward worden door SSH.
OpenSSH versleutelt al het verkeer om
afluisteren, het stelen van een verbinding en andere
netwerkaanvallen effectief te voorkomen.OpenSSH wordt onderhouden door het
OpenBSD project en is gebaseerd op SSH v1.2.12 met alle recente
bugfixes en updates. Het is compatibel met beide protocollen SSH
1 en 2.Voordelen van gebruik van OpenSSHAls gewoonlijk &man.telnet.1; of &man.rlogin.1; wordt
gebruikt, wordt de data in platte tekst en niet versleuteld
verzonden. Netwerksnuffelaars die ergens tussen de cliënt
en de server meeluisteren, kunnen een gebruikersnaam en
wachtwoord stelen en zien welke gegevens er worden overgezonden
tijdens een sessie. OpenSSH biedt
een verscheidenheid aan autenticatie en versleutelingsmethoden
die het voorgaande voorkomen.sshd inschakelenOpenSSHinschakelenDe sshd is een optie die wordt
aangeboden tijdens een Standard-installatie
van &os;. sshd is ingeschakeld als
de volgende regel voorkomt in rc.conf:sshd_enable="YES"Hierdoor wordt &man.sshd.8; geladen, het daemonprogramma
voor OpenSSH, als het systeem de
volgende keer opstart. Als alternatief is het mogelijk om
&man.rc.8; te
gebruiken om OpenSSH te starten:&prompt.root; service sshd startSSH-cliëntOpenSSHcliënt&man.ssh.1; werkt net zoals &man.rlogin.1;.&prompt.root; ssh user@example.com
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)? yes
Host 'example.com' added to the list of known hosts.
user@example.com's password: *******Het aanmelden gaat nu net zoals het zou gaan als wanneer
er een sessie gestart zou worden met rlogin
of telnet. SSH maakt gebruik van een
systeem met vingerafdrukken als sleutels voor het vaststellen
met welke server verbinding wordt gemaakt op het moment
dat de cliënt verbinding zoekt. De gebruiker krijgt alleen
de eerste keer dat verbinding wordt gezocht met de server een
vraag waarop yes geantwoord dient te worden.
Bij volgende pogingen om aan te melden wordt de
vingerafdruksleutel vergeleken met de sleutel die is
opgeslagen. De SSH-cliënt alarmeert de gebruiker als de
opgeslagen vingerafdruk sleutel anders is dan de sleutel die
de server meldt. De vingerafdrukken worden opgeslagen in
~/.ssh/known_hosts of in
~/.ssh/known_hosts2 voor SSH v2
vingerafdrukken.Recente OpenSSH servers staan
standaard ingesteld om alleen SSH v2 connecties toe te staan.
De cliënt gebruikt versie 2 als dat mogelijk is en valt
anders terug op versie 1. De cliënt kan ook gedwongen
worden om een van de twee protocollen te gebruiken door de optie
of voor respectievelijk
versie 1 en versie 2 aan te geven. De mogelijkheid versie 1 te
gebruiken blijft in de cliënt bestaan om compatibiliteit
met oudere versies te behouden.Veilig kopiërenOpenSSHveilig kopiërenscpHet commando &man.scp.1; (secure copy) werkt gelijk aan
&man.rcp.1;. Het kopieert een bestand van of naar een andere
machine, maar doet dat veilig.&prompt.root; scp user@example.com:/COPYRIGHT COPYRIGHT
user@example.com's password: *******
COPYRIGHT 100% |*****************************| 4735
00:00
&prompt.root;Omdat de vingerafdruk al is opgeslagen voor deze host in
het vorige voorbeeld, is die al geverifieerd als &man.scp.1;
gebruik wordt.De argumenten die aan &man.scp.1; gegeven worden zijn
vrijwel gelijk aan die voor &man.cp.1; met het bestand of
de bestanden als het eerste argument en de bestemming als het
tweede. Omdat het bestand over het netwerk gaat, door SSH,
hebben een of meer van de bestandsargumenten de vorm
.InstellenOpenSSHinstellenHet instellingenbestand dat voor het hele systeem geldt
voor zowel de OpenSSH daemon als
cliënt staat in de map /etc/ssh.ssh_config bevat de instellingen voor
de cliënt en sshd_config bevat ze voor
de daemon.Daarnaast bieden het
(standaard /usr/sbin/sshd) en
rc.conf
opties nog meer mogelijkheden voor instellingen.ssh-keygenIn plaats van het gebruik van wachtwoorden kan
&man.ssh-keygen.1; gebruikt worden om DSA en RSA sleutels te
maken om een gebruiker te autenticeren:&prompt.user; ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 user@host.example.com&man.ssh-keygen.1; maakt een publiek en privaat sleutelpaar
aan dat gebruikt kan worden voor autenticatie. De private
sleutel staat opgeslagen in
~/.ssh/id_dsa of
~/.ssh/id_rsa en de publieke sleutel
staat in ~/.ssh/id_dsa.pub of
~/.ssh/id_rsa.pub voor respectievelijk
sleuteltypen DSA en RSA.
De publieke sleutel moet voor beide RSA- of
DSA-sleutels in het bestand
~/.ssh/authorized_keys van de andere
machine staan om dit te laten werken.Nu is het mogelijk een verbinding te maken met een andere
machine die gebaseerd is op SSH sleutels in plaats van op
wachtwoorden.Als er een wachtwoordzin is gebruikt bij &man.ssh-keygen.1;
dan wordt de gebruiker iedere keer dat de private sleutel wordt
gebruikt een wachtwoord gevraagd. &man.ssh-agent.1; kan het
ongemak van steeds opnieuw een lange wachtwoordzin moeten
ingeven verlichten en wordt beschreven in het onderdeel .Afhankelijk van de gebruikte versie van
OpenSSH kunnen opties en bestanden
verschillen. Het is verstandig de handleiding
&man.ssh-keygen.1; te raadplegen.ssh-agent en
ssh-addDe hulpprogramma's &man.ssh-agent.1; en &man.ssh-add.1;
bieden de mogelijkheid om SSH
in het geheugen te laden zodat niet iedere keer de
wachtwoordzin ingegeven hoeft te worden.Het hulpprogramma &man.ssh-agent.1; handelt de
autenticatie af voor de geheime sleutels die erin geladen
zijn. &man.ssh-agent.1; wordt gebruikt om andere programma's
te starten. Bij eenvoudig gebruik kan er een shell mee
gestart worden of meer complex een schermbeheerprogramma.Voordat &man.ssh-agent.1; in een shell gebruikt kan worden
dient het eerst gestart te worden met een shell als argument.
Daarna kan de identiteit toegevoegd worden daar &man.ssh-add.1;
aan te roepen en de wachtwoordzin voor de geheime sleutel op te
geven. Als deze stappen zijn voltooid kan een gebruiker met
&man.ssh.1; naar iedere host waar de corresponderende publieke
sleutel is geïnstalleerd:&prompt.user; ssh-agent csh
&prompt.user; ssh-add
Enter passphrase for /home/user/.ssh/id_dsa:
Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
&prompt.user;Om &man.ssh-agent.1; te gebruiken in X11 dient er een
verwijzing naar &man.ssh-agent.1; in
~/.xinitrc te staan. Dan zijn de diensten
van &man.ssh-agent.1; beschikbaar voor alle programma's die in
X11 gestart worden. Een ~/.xinitrc zou er
als volgt uit kunnen zien:exec ssh-agent startxfce4Hiermee wordt &man.ssh-agent.1; gestart die op zijn beurt
XFCE start, iedere keer dat X11
start. Als dat is gebeurd en X11 is herstart zodat de
wijzigingen actief zijn, dan kan eenvoudigweg &man.ssh-add.1;
gestart worden om alle beschikbare SSH sleutels te
laden.SSH tunnelsOpenSSHtunnelsOpenSSH kan een tunnel maken
waarin een ander protocol ingepakt kan worden zodat er een
versleutelde sessie ontstaat.Het volgende commando geeft &man.ssh.1; aan dat er een
tunnel voor telnet gemaakt moet
worden:&prompt.user; ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com
&prompt.user;Aan het ssh commando worden de volgende
opties meegegeven:Dit dwingt ssh om versie 2 van het
protocol te gebruiken. Gebruik van deze optie wordt
afgeraden als er verbinding wordt gemaakt met oudere SSH
servers.Dit geeft aan dat er geen commando volgt, maar dat er
een tunnel opgezet moet worden. Als deze optie niet
aanwezig was, zou ssh een normale
sessie starten.Dit dwingt ssh om in de
achtergrond te draaien.Dit geeft aan dat de lokaal een tunnel wordt gemaakt
in de vorm
lokale_poort:netwerk_host:netwerk_poort.Wijst naar een gebruiker op de SSH server op het
netwerk.Een SSH tunnel werkt doordat een luistersocket wordt
gemaakt op localhost op de aangegeven poort.
Die stuurt dan iedere ontvangen verbinding op de lokale
host/poort via de SSH verbinding door naar de aangegeven host
en poort op het netwerk.In het voorbeeld wordt poort
5023 op localhost
doorgestuurd naar poort 23 op
localhost van de machine op het netwerk.
Omdat 23telnet is, zou dit een veilige
telnet verbinding opleveren door
een SSH tunnel.Dit kan gebruikt worden om ieder willekeurig onveilig
TCP protocol in te pakken als SMTP,
POP3, FTP, etc.SSH gebruiken om een veilige tunnel te maken voor
SMTP&prompt.user; ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com
user@mailserver.example.com's password: *****
&prompt.user; telnet localhost 5025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.example.com ESMTPDit kan samen met een &man.ssh-keygen.1; en extra
gebruikersaccounts gebruikt worden om een min of meer
naadloze en eenvoudige SSH tunnelomgeving te maken. In
plaats van wachtwoorden kunnen sleutels gebruikt worden en de
tunnels kunnen in de omgeving van een aparte gebruiker
draaien.Praktische voorbeelden van een SSH tunnelVeilige toegang tot een POP3 serverOp het werk staat een SSH server die verbindingen van
buitenaf toestaat. Op hetzelfde netwerk op kantoor staat
een mailserver waarop POP3 draait. Het netwerk of het
netwerkpad tussen de locatie op Internet en kantoor is
wellicht niet helemaal te vertrouwen. Om deze reden dient
de mailserver op een veilige manier benaderd te worden. De
oplossing is een SSH verbinding opzetten naar de SSH server
op kantoor en dan door de tunnel heen een verbinding
opzetten met de mailserver.&prompt.user; ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com
user@ssh-server.example.com's password: ******Als de tunnel eenmaal draait, dan kan de mailcliënt
naar localhost poort 2110 gewezen worden.
Alle verbinding naar die poort worden veilig doorgestuurd
door de tunnel naar
mail.example.com.Een draconische firewall omzeilenSommige netwerkbeheerders stellen draconische
firewallregels op en filteren niet alleen inkomende
verbindingen, maar ook uitgaande. Meestal mag dan alleen
maar verbinding gemaakt worden met andere machines op
poorten 22 en 80 voor SSH en websurfen.Soms wil een gebruiker dan toch toegang krijgen tot
andere (wellicht niet netwerkgerelateerde) diensten, zoals
een Ogg Vorbis server om muziek te streamen. Als die Ogg
Vorbis server streamt op een andere poort dan 22 of 80, dan
kan deze niet bereikt worden.De oplossing ligt in het opzetten van een SSH
verbinding naar een machine buiten de firewall en die
tunnel te gebruiken om bij de Ogg Vorbis server te
komen.&prompt.user; ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org
user@unfirewalled-system.example.org's password: *******De streamingcliënt kan nu gewezen worden naar
localhost poort 8888 vanwaar er wordt
doorverwezen naar music.example.com poort
8000 en zo wordt de firewall succesvol ontwerken.De optie AllowUsersVaak is het verstandig om beperkingen aan te brengen op het
gebied van welke gebruikers kunnen aanmelden en van waar. De
optie AllowUsers biedt deze mogelijkheid.
Om bijvoorbeeld alleen root toe te staan
zich aan te melden van 192.168.1.32, kan iets als de volgende
regel worden opgenomen in het bestand
/etc/ssh/sshd_config:AllowUsers root@192.168.1.32Om de gebruiker admin het recht te
geven zich van overal aan te melden hoeft alleen de
gebruikersnaam vermeld te worden:AllowUsers adminMeerdere gebruikers met rechten of beperkingen horen op
dezelfde regel te staan:AllowUsers root@192.168.1.32 adminHet is van belang dat iedere gebruiker die zich moet
kunnen aanmelden wordt genoemd. De overige gebruikers
worden buitengesloten.Nadat er wijzigingen zijn gemaakt aan
/etc/ssh/sshd_config dienen de bestanden
in &man.sshd.8; geladen te worden:&prompt.root; service sshd reloadMeer informatieOpenSSH&man.ssh.1; &man.scp.1; &man.ssh-keygen.1;
&man.ssh-agent.1; &man.ssh-add.1; &man.ssh.config.5;&man.sshd.8; &man.sftp-server.8; &man.sshd.config.5;TomRhodesBijgedragen door Bestandssysteem toegangscontrolelijsten
(ACLs)ACLIn combinatie met verbeteringen als snapshots, biedt
&os; de veiligheid van
Toegangscontrolelijsten voor Bestandssystemen (Access Control
Lists, ACLs).Met toegangscontrolelijsten wordt het standaard &unix;
rechtenmodel uitgebreid op een zeer verenigbare (&posix;.1e)
manier. Deze methodes stellen een beheerder in staat om gebruik
te maken en voordeel te halen uit een geraffineerder
beveiligingsmodel.Om ondersteuning voor ACLs voor
bestandssystemen in te schakelen dient het volgende in de kernel
gecompileerd te worden:options UFS_ACLAls deze optie niet aanwezig is, dan wordt er een
waarschuwing weergegeven als er wordt geprobeerd een
bestandssysteem aan te koppelen dat gebruik maakt van
ACLs. Deze optie is al geactiveerd in de
GENERIC kernel. ACLs
zijn afhankelijk van uitgebreide attributen die zijn ingeschakeld
op het bestandssysteem. Uitgebreide attributen worden standaard
ondersteund in het volgende generatie &unix; bestandssysteem
UFS2.Er is meer administratieve rompslomp nodig om uitgebreide
attributen in te stellen op UFS1 dan op
UFS2. De prestaties van uitgebreide
attributen zijn op UFS2 ook veel beter.
Daarom wordt UFS2 ook meestal aangeraden
boven UFS1 bij het gebruik van
toegangscontrolelijsten.ACLs worden ingeschakeld door de
beheersvlag op het moment van aankoppelen.
Dit kan ook in /etc/fstab staan. De vlag op
het moment van aankoppelen kan ook automatisch gezet worden op een
persistente wijze met &man.tunefs.8; door een superblok in de
bestandssysteemkop te wijzigen. In het algemeen wordt de
voorkeur gegeven aan de vlag in het superblok om een aantal
redenen:De ACLs vlag op het moment van
aankoppelen kan niet gewijzigd worden bij opnieuw aankoppelen
(&man.mount.8; ), maar alleen door een
volledige &man.umount.8; en een verse &man.mount.8;. Dit
betekent dat ACLs niet ingeschakeld kunnen
worden op root-bestandssysteem na het opstarten. Het betekent
ook dat de aard van een bestandssysteem niet veranderd kan
worden als het eenmaal in gebruik is.Het inschakelen van de superblokvlag zorgt ervoor dat
het bestandssysteem altijd wordt aangekoppeld met de
ACLs ingeschakeld, zelfs als het niet in
fstab staat of als de apparaten van
plaats veranderen. Hiermee wordt voorkomen dat het
bestandssysteem wordt gebruikt zonder dat
ACLs ingeschakeld zijn, wat ervoor zou
kunnen zorgen dat ACLs onjuist worden
toegepast wat weer kan zorgen voor
beveiligingsproblemen.Wellicht wordt het mogelijk om de
ACLs via de vlag in te schakelen zonder een
compleet verse &man.mount.8;, maar de ontwikkelaars vinden het
wenselijk om het per ongeluk zonder ACLs
aankoppelen te ontmoedigen, omdat er bijzonder vervelende
gevolgen kunnen zijn als ACLs worden
ingeschakeld,
daarna worden uitgezet en weer worden ingeschakeld zonder dat
de uitgebreide attributen worden geschoond. In het algemeen
geldt dat als ACLs eenmaal zijn ingeschakeld
voor een bestandssysteem, ze niet meer uitgeschakeld moeten
worden, omdat de resulterende bestandsbescherming wellicht niet
compatibel is met dat wat gebruikers van het systeem nodig
hebben en het opnieuw aanzetten van ACLs kan
leiden tot het opnieuw koppelen van voorheen bestaande
ACLs aan bestanden waarvoor de
toegangsrechten sindsdien zijn aangepast, wat kan leiden tot
onverwachte situaties.Bestandssystemen waarvoor ACLs zijn
ingeschakeld worden weergegeven met een +
(plus) teken als de toegangsrechten worden bekeken:drwx------ 2 robert robert 512 Dec 27 11:54 private
drwxrwx---+ 2 robert robert 512 Dec 23 10:57 directory1
drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3
drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_htmlHierboven is te zien dat mappen
directory1,
directory2 en
directory3 allemaal gebruik maken
van ACLs. De map
public_html doet dat niet.Gebruik maken van ACLsDe ACLs van het bestandssysteem kunnen
bekeken worden met het hulpprogramma &man.getfacl.1;. Om de
ACL op het bestand test
te bekijken zou het volgende commando nodig zijn:&prompt.user; getfacl test
#file:test
#owner:1001
#group:1001
user::rw-
group::r--
other::r--Om de ACL op dit bestand te wijzigen
wordt het hulpprogramma &man.setfacl.1; als volgt
gebruikt:&prompt.user; setfacl -k testDe vlag verwijdert alle bestaande
ACLs van een bestand of bestandssysteem. De
methode die de voorkeur geniet is gebruiken
omdat die optie de basisvelden die nodig zijn voor het laten
werken van de ACLs laat staan.&prompt.user; setfacl -m u:trhodes:rwx,group:web:r--,o::--- testBij het commando hierboven, werd de optie
gebruikt om de standaard
ACL aan te passen. Omdat er geen
voorgedefinieerde instellingen waren, die waren verwijderd door
het commando daarvoor, werden nu de standaardinstellingen
hersteld en de rechten die werden aangegeven toegevoegd. Let
op dat bij het toevoegen van een gebruiker of een groep die
niet bekend is op het systeem een foutmelding
Invalid argument wordt geschreven naar
stdout.TomRhodesGeschreven door Monitoren van beveiligingsproblemen met andere
softwarePortauditIn de afgelopen jaren zijn er in de beveiligingswereld veel
vorderingen gemaakt op het gebied van inzicht in kwetsbaarheden.
Als er software naast het besturingssysteem wordt
geïnstalleerd en ingesteld neemt op vrijwel ieder
besturingssysteem het risico op inbraak toe.Inzicht in kwetsbaarheid is een vitale factor in beveiliging
en hoewel &os; waarschuwingen publiceert voor het basissysteem,
gaat het publiceren van waarschuwingen voor alle overige software
de scope van het &os; Project te buiten. Er is een manier om
inzicht te krijgen in de kwetsbaarheden voor additionele software
en als beheerder gewaarschuwd te worden. Voor dit doel bestaat
het &os; hulpprogramma
Portaudit.De port ports-mgmt/portaudit zoekt naar
bekende beveiligingsproblemen in een database die wordt bijgewerkt
en onderhouden door het &os; Security Team en
portontwikkelaars.Voordat Portaudit gebruikt kan
worden dient het geïnstalleerd te worden uit de
Portscollectie:&prompt.root; cd /usr/ports/ports-mgmt/portaudit && make install cleanTijdens het installatieproces worden de instellingenbestanden
voor &man.periodic.8; bijgewerkt, waardoor
Portaudit uitvoer in de dagelijkse
security runs meekomt. Het is van belang dat de emails die
aan de emailaccount van root worden
gezonden en uit de dagelijkse beveiligingsronde komen ook echt
worden gelezen. Er zijn geen verdere instellingen nodig.Na de installatie kan de beheerder de database bijwerken en
bekende kwetsbaarheden in geïnstalleerde pakketten bekijken
met het volgende commando:&prompt.root; portaudit -FdaDe database wordt automatisch bijgewerkt tijdens de
&man.periodic.8; run; dus het voorgaande commando is volledig
optioneel. Het is alleen nodig om de volgende voorbeelden na
te kunnen doen.De software de uit de Portscollectie is geïnstalleerd
kan op elk moment door een beheerder ge-audit worden met:&prompt.root; portaudit -aPortaudit zal iets als het volgende
produceren voor kwetsbare pakketten:Affected package: cups-base-1.1.22.0_1
Type of problem: cups-base -- HPGL buffer overflow vulnerability.
Reference: <http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html>
1 problem(s) in your installed packages found.
You are advised to update or deinstall the affected package(s) immediately.Door met een webbrowser naar de aangegeven
URL te gaan kan een beheerder meer informatie
over de bewust kwetsbaarheid krijgen, waaronder de versies die
het betreft, volgens de &os; Port versie en andere websites
waarop beveiligingswaarschuwingen te lezen zijn.In het kort is Portaudit een
krachtig hulpprogramma dat bijzonder handig is als het wordt
gekoppeld aan het gebruik van de port
Portupgrade.TomRhodesBijgedragen door &os; beveiligingswaarschuwingen&os; BeveiligingswaarschuwingenNet als veel andere kwalitatief goede
productiebesturingssystemen publiceert &os;
Beveiligingswaarschuwingen. Deze waarschuwingen
worden meestal pas naar de beveiligingslijst gemaild en
gedocumenteerd in de Errata als de van toepassing zijnde
uitgaven gepatcht zijn. In deze paragraaf wordt toegelicht wat
een waarschuwing is, hoe die te begrijpen en welke maatregelen
er genomen moeten worden om een systeem bij te werken.Hoe ziet een waarschuwing eruit?De &os; beveiligingswaarschuwingen zien er ongeveer uit als
die hieronder die van de &a.security-notifications.name;
mailinglijst komt.=============================================================================
FreeBSD-SA-XX:XX.UTIL Security Advisory
The FreeBSD Project
Topic: denial of service due to some problem
Category: core
Module: sys
Announced: 2003-09-23
Credits: Person
Affects: All releases of &os;
&os; 4-STABLE prior to the correction date
Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15)
2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8)
2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18)
2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)
CVE Name: CVE-XXXX-XXXX
For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
http://www.FreeBSD.org/security/.
I. Background
II. Problem Description
III. Impact
IV. Workaround
V. Solution
VI. Correction details
VII. References Het veld Topic geeft aan wat precies
het probleem is. Het is eigenlijk een inleiding op de
beveiligingswaarschuwing en geeft aan welke programma
kwetsbaar is.Het veld Category geeft aan welk
onderdeel van het systeem kwetsbaar is. Dat kan een van de
onderdelen core,
contrib of ports
zijn. De categorie core betekent dat
de een kerncomponent van het &os; besturingssysteem
kwetsbaar is. De categorie contrib
betekent dat software die toegevoegd is aan het &os;
Project kwetsbaar is, zoals
sendmail. Tenslotte geeft de
categorie ports aan dat een optionele
component uit de Portscollectie kwetsbaar is.Het veld Module geeft aan waar de
component zich bevindt, bijvoorbeeld
sys. In dit voorbeeld wordt het
duidelijk dat de module sys kwetsbaar
is. Hier gaat het dus om een kwetsbaar component die
gebruikt wordt in de kernel.Het veld Announced geeft aan wanneer
de beveiligingswaarschuwing gepubliceerd of aangekondigd
is. Dit betekent dat het beveiligingsteam heeft bevestigd
dat het probleem bestaat en dat er een patch is gecommit in
het depot met de broncode van &os;.In het veld Credits wordt iemand of
een organisatie bedankt die de kwetsbaarheid heeft ontdekt
en gerapporteerd.Het veld Affects geeft aan welke
uitgaven van &os; door deze kwetsbaarheid worden getroffen.
Voor de kernel kan snel gekeken worden naar de uitvoer van
ident voor de betreffende bestanden om
te bepalen welke revisie ze hebben. Voor ports is het versienummer
te zien in /var/db/pkg.
Als het systeem niet gelijk op loopt met het &os;
Subversion-depot en dagelijks herbouwd wordt,
dan is de kans groot dat het systeem kwetsbaar is.Het veld Corrected geeft de datum,
tijd en tijdzone aan en de uitgave die is aangepast.Gereserveerd voor de identificatie-informatie die
gebruikt wordt om kwetsbaarheden in het Common
Vulnerabilities Database System op te zoeken.Het veld Background geeft meer
informatie over wat er precies aan de hand is. Meestal
staat hier waarom het programma aanwezig is in &os;, waar
het voor gebruikt wordt en hoe het programma is
ontstaan.Het veld Problem Description geeft
gedetailleerde toelichting op het beveiligingsprobleem.
Hier kan informatie bij staat over programmacode die
fouten bevat of zelfs hoe het programma gebruikt kan worden
om een beveiligingsgat te openen.Het veld Impact beschrijft welke
invloed het probleem kan hebben op het systeem. Dit kan
bijvoorbeeld een ontzegging van dienst aanval zijn,
gebruikers extra rechten geven of het verkrijgen van
supergebruiker toegang voor de aanvaller zijn.Het veld Workaround geeft aan hoe
het mogelijk is het probleem te omzeilen (workaround) in
het geval systeembeheerders niet in staat zijn om het
systeem bij te werken. Dit zou te maken kunnen hebben
met de tijd, beschikbaarheid van het netwerk en een hele
lijst met andere redenen. Hoe dan ook, beveiliging
dient serieus genomen te worden en een systeem dat
kwetsbaar is moet bijgewerkt worden of het gat in de
beveiliging moet gedicht worden met de alternatieve
oplossing.Het veld Solution geeft instructies
over hoe een systeem aangepast kan worden. Dit is een
werkinstructie die getest en gecontroleerd is om een
systeem aan te passen en weer veilig werkend te
krijgen.In het veld Correction Details staan
de Subversion-takken of uitgavenamen, met de
punten veranderd in een liggend streepje. Er staat ook
welke revisienummer de aangetaste bestanden binnen een tak
hebben.In het veld References wordt
gewoonlijk verwezen naar andere bronnen. Dit kunnen
web-URLs, boeken, mailinglijsten en
nieuwsgroepen zijn.TomRhodesGeschreven door ProcesaccountingProcesaccountingProcesaccounting is een beveiligingsmethode die een beheerder
in staat stelt om in de gaten te houden welke systeembronnen
worden gebruikt, hoe ze over gebruikers verdeeld zijn,
systeemmonitoring biedt en op minimalistische wijze het gebruik
van commando's door gebruikers volgt.Deze methode heeft voordelen en nadelen. Eén van de
positieve punten is dat een inbraak gevolgd kan worden tot het
moment waarop die zich voordeed. Nadelen zijn de grootte van de
logboeken die door procesaccounting worden gegenereerd en de
schijfruimte die dat kost. In dit onderdeel wordt een beheerder
de basis van procesaccounting getoond.Procesaccounting inschakelen en gebruikenVoordat procesaccounting gebruikt kan worden dient het te
worden ingeschakeld met de volgende commando's:&prompt.root; touch /var/account/acct
&prompt.root; accton /var/account/acct
&prompt.root; echo 'accounting_enable="YES"' >> /etc/rc.confEenmaal ingeschakeld begint accounting met het bijhouden
van CPU statistieken, commando's, enzovoort.
Alle accounting logboeken worden in een niet leesbaar formaat
bijgehouden en zijn uit te lezen met &man.sa.8;. Bij het
uitvoeren zonder opties, toont sa informatie
gerelateerd aan het aantal aanroepen per gebruiker, de totale
tijd in minuten die is verstreken, de totale
CPU- en gebruikerstijd in minuten, gemiddeld
aantal I/O operaties, enzovoort.Informatie over uitgevoerde commando's kan bekeken worden
met &man.lastcomm.1;. Zo kan met lastcomm
bijvoorbeeld weergegeven worden welke commando's door
gebruikers op een specifieke &man.ttys.5; zijn
uitgevoerd:&prompt.root; lastcomm ls trhodes ttyp1Het bovenstaande commando toont ieder bekend gebruikt van
ls door de gebruiker
trhodes op terminal
ttyp1.Veel andere handige opties staan beschreven in
&man.lastcomm.1;, &man.acct.5; en &man.sa.8;.
diff --git a/nl_NL.ISO8859-1/books/handbook/x11/chapter.xml b/nl_NL.ISO8859-1/books/handbook/x11/chapter.xml
index f05ad93fc2..d449eec5bb 100644
--- a/nl_NL.ISO8859-1/books/handbook/x11/chapter.xml
+++ b/nl_NL.ISO8859-1/books/handbook/x11/chapter.xml
@@ -1,1849 +1,1833 @@
KenTomBijgewerkt voor X.Org's X11 server door MarcFonvieilleErikRadderVertaald door RenéLadanHet X Window systeemOverzicht&os; gebruikt X11 om gebruikers een krachtige grafische
gebruikersschil te bieden. X11 is een vrij beschikbare versie van
het X Window System dat geïmplementeerd is in
&xorg;&xfree86; (en andere softwarepakketten
die hier niet worden besproken).
De standaard en officiele smaak van X11 in &os; is
&xorg;, de X11-server
die is ontwikkeld door de X.Org Foundation onder een licentie die
- veel lijkt op degene die door &os; wordt gebruikt. Er zijn ook
- commerciële X-servers voor &os; beschikbaar.
+ veel lijkt op degene die door &os; wordt gebruikt.
Meer informatie over de videohardware die X11 ondersteunt
kan gevonden worden op de &xorg; website.Na het lezen van dit hoofdstuk weet de lezer:Wat de componenten van het X Window systeem zijn en hoe
zij samenwerken.Hoe X11 geïnstalleerd en ingesteld kan
worden.Hoe verschillende window managers geïnstalleerd en
gebruikt kunnen worden.Hoe &truetype; lettertypen in X11 te gebruiken.Hoe het systeem ingesteld moet worden voor grafisch
aanmelden (XDM).Aangeraden voorkennis:Hoe extra software van derden te installeren
().X begrijpenX voor de eerste keer gebruiken kan een hele schok zijn voor
mensen die gewend zijn aan andere grafische omgevingen, zoals
µsoft.windows; of &macos;.Het is niet noodzakelijk om alle details te kennen over de
X componenten en hoe zij samenwerken, maar enige basiskennis
draagt wel bij aan krachtiger gebruik kunnen maken van
X.Waarom X?X is niet het eerste windows systeem dat geschreven is voor
&unix;, maar wel het meest populaire. Het oorspronkelijke X
ontwikkelteam werkte eerst aan een ander window systeem. De
naam van dat systeem was W (van
Window). X was gewoon de volgende letter in het
alfabet.X kan gewoon X,
X Window systeem, X11 of nog
anders genoemd worden. X11 X Windows noemen kan
door sommigen als een belediging opgevat worden. &man.X.7; kan
hierover wat licht laten schijnen.Het X client/server modelX is vanaf het begin aan ontworpen om netwerk-centraal te
zijn en gebruikt een client-server model.In het X model draait de X server op de
computer waar het toetsenbord, beeldscherm en muis aan vast
zit. De server is verantwoordelijk voor het regelen van
beeldinformatie, verwerken van invoer van toetsenbord en muis,
en andere invoer- of uitvoerapparaten (i.e., een
tablet kan als invoerapparaat worden gebruikt, en
een videoprojector kan een alternatief uitvoerapparaat zijn).
- Iedere X applicatie (zoals XTerm, of
- &netscape;) is een
+ Iedere X applicatie (zoals XTerm of
+ Firefox) is een
cliënt. Een cliënt stuurt berichten
naar de server zoals teken een venster op deze
coördinaten en de server stuurt berichten terug
zoals de gebruiker heeft op de OK knop gedrukt.Thuis of in kleine bedrijven draaien zowel de X server als
de X clients op dezelfde machine. Het is heel goed mogelijk
dat de X server op een minder krachtige desktop computer draait
en de X applicaties (de clients) op een, zeg maar, dure
krachtige machine van het bedrijf. Hier vindt de communicatie
tussen de X client en server plaats over het netwerk.Dit verwart sommige mensen, omdat de X terminologie geheel
omgekeerd is aan wat ze verwachten. Dat is namelijk dat de
X server de grote krachtige machine aan het eind
van de gang is en de X client de machine op hun
bureau is.De X server is de machine met het beeldscherm en het
toetsenbord en de X clients zijn de programma's die de
vensters tonen.Het protocol vereist niet dat de clients en servers
hetzelfde besturingssysteem moeten draaien of hetzelfde soort
computer moeten zijn. Het is heel goed mogelijk om X server op
een µsoft.windows; of Apple's &macos; te draaien en er
zijn verschillende gratis en commerciële applicaties die
dat doen.De window managerDe filosofie van het X ontwerp lijkt veel op die van
&unix;: gereedschappen, geen beleid. Dit houdt
in dat X niet bepaalt hoe een taak volbracht moet worden. In
plaats daarvan worden gereedschappen geleverd aan de gebruiker
die verantwoordelijk is voor het juiste gebruik hiervan.Deze filosofie verbreedt zich door X niet te laten bepalen
hoe vensters er moeten uitzien op het scherm, hoe ze verplaatst
moeten worden met de muis, welke toetsaanslagen gebruikt moeten
worden om te schakelen tussen vensters (bijvoorbeeld AltTab
in het geval van µsoft.windows;), hoe de
titelbalken eruit moeten zien, of ze wel of niet sluitknoppen
moeten hebben, enzovoort.In plaats daarvan delegeert X deze verantwoordelijkheid aan
een applicatie die Window Manager heet. Er zijn
- tientallen window managers voor X:
- AfterStep,
- Blackbox,
- ctwm,
- Enlightenment,
- fvwm,
- Sawfish,
- twm,
- Window Maker en vele anderen. Elk
+ tientallen window managers
+ beschikbaar voor X. Elk
van deze window managers heeft een eigen voorkomen en werking.
Er zijn window managers met virtual desktops of
met eigen toetscombinaties om de desktop te beheren; of hebben
een Start knop of iets gelijksoortig. Sommige
gebruiken thema's die uiterlijk en beleving
compleet veranderen door een nieuw thema te kiezen. Window
managers zijn te vinden in de categorie
x11-wm van de Portscollectie.De KDE en
GNOME desktop omgevingen hebben hun
eigen window managers die in het bureaublad zijn
geïntegreerd.Iedere windows manager heeft zijn eigen manier van
instellen. Sommige werken met handgetypte bestanden, anderen
beschikken over grafische gereedschappen voor de meeste
instellingen. Er is er minstens één
(Sawfish) waarvan het
instellingenbestand is geschreven in een dialect van de taal
Lisp.FocusbeleidDe window manager is ook verantwoordelijk voor het
focusbeleid van de muis. Ieder window
geörienteerd systeem heeft een manier nodig om te
bepalen welk venster actief is, toetsaanslagen ontvangt en
daarbij zichtbaar aangeeft welk venster actief is.Een bekend focus beleid heet
click-to-focus. Dit model wordt gebruikt door
µsoft.windows;, waarbij een venster actief wordt door er
met de muis op te klikken.X ondersteunt geen specifiek focusbeleid. In plaats
daarvan bepaalt de window manager op welk venster, op welk
moment, de focus ligt. Een aantal window managers
ondersteunen verschillende focusmethoden. Ze ondersteunen
allemaal click to focus en de meerderheid
ondersteunt ook nog andere.De meest populaire zijn:focus-volgt-muis (focus-follows-mouse)Het venster dat onder de muis zit is het venster
waarop de focus ligt. Dit hoeft niet het venster te
zijn dat bovenop alle andere vensters ligt. De focus
verandert door te wijzen naar een ander venster. Het
is niet nodig om er ook nog eens op te klikken.slordige-focus (sloppy-focus)Dit beleid is een kleine uitbreiding op
focus-follows-mouse. Indien bij focus-follows-mouse de
muis over het root venster (of de achtergrond) gaat,
ligt op geen enkel venster de focus en gaan alle
toetsaanslagen verloren. Bij sloppy-focus, verandert
de focus alleen als de muis in een nieuw venster komt
en niet als het huidige venster wordt verlaten.klik-voor-focus (click-to-focus)Het actieve venster wordt geselecteerd door erop
te klikken. Het venster wordt dan
opgetild en verschijnt dan voor alle
andere vensters. Alle toetsaanslagen worden nu naar
dit venster gestuurd, zelfs als de cursor naar een
ander scherm wordt verplaatst.Veel window managers ondersteunen andere soorten of
variaties op de bovenstaande typen muisbeleid. Hierover
staat meestal meer in de documentatie van de betreffende
window manager.WidgetsDe X aanpak door gereedschappen te leveren en niets af te
dwingen breidt zich uit naar de widgets die in elk
applicatievenster te zien zijn.Widget is een term voor alle dingen van de
gebruikersinterface waarop geklikt kan worden of een andere
actie mee uitgevoerd kan worden: knoppen, vinkvakjes, iconen,
lijsten en ga zo maar door. µsoft.windows; noemt ze
controls.µsoft.windows; en Apple's &macos; hebben beide een erg
strikt widgetbeleid. Van de applicatieontwikkelaars wordt
verwacht dat hun applicaties eenduidig zijn wat betreft
uiterlijk en beleving. Bij X is ervoor gekozen geen grafische
stijl of widgets te verplichten.X applicaties hebben dus niet allemaal hetzelfde uiterlijk.
- Er zijn populaire widgetsets en variaties, inclusief de
- originele Athena widgetset van MIT,
- &motif; (waarvan de widgetset van
- µsoft.windows; is afgeleid: schuine randen en drie
- gradaties grijs), OpenLook en
- anderen.
-
- De meeste nieuwe X applicaties gebruiken een modern
- uitziende widgetset: Qt, gebruikt door
+ Er zijn populaire widgetsets en variaties, inclusief Qt, gebruikt door
KDE, of GTK+ van het
GNOME project. Vanuit dit oogpunt
lijkt het enigszins op de &unix; desktop, wat het makkelijker
maakt voor de beginnende gebruiker.X11 installeren
- &xorg; is de standaard X11
- implementatie voor &os;. &xorg; is
+ &xorg; is de X11-implementatie voor
+ &os;. &xorg; is
de X11 server van de open source implementatie die is uitgebracht
door de X.Org Foundation. &xorg; is
gebaseerd op de code van
&xfree86 4.4RC2 en X11R6.6.
De versie van &xorg; die momenteel
beschikbaar is in de &os; Portscollectie is &xorg.version;.Om &xorg; vanuit de
Portscollectie te bouwen en te installeren:&prompt.root; cd /usr/ports/x11/xorg
&prompt.root; make install cleanOm &xorg; compleet te
bouwen is tenminste 4 GB vrije schijfruimte nodig.X11 kan ook als pakket geïnstalleerd worden doordat er
binaire pakketten beschikbaar zijn voor &man.pkg.add.1;. Als
hiervoor de optie remote fetching van
&man.pkg.add.1; wordt gebruikt, dan moet het versienummer
verwijderd worden. &man.pkg.add.1; haalt automatisch de laatste
versie van het programma op.Om het pakket voor &xorg; op te
halen en te installeren:&prompt.root; pkg_add -r xorgHet voorbeeld hierboven installeert de complete X11
distributie inclusief de servers, clients, lettertypen enz. Er
zijn ook afzonderlijke pakketten en ports beschikbaar voor
verschillende delen van X11.Om een minimale X11-distributie te installeren kunt u als
alternatief x11/xorg-minimal
installeren.De rest van dit hoofdstuk licht toe hoe X11 wordt ingesteld
en hoe een productieve desktopomgeving gebouwd kan worden.ChristopherShumwayGeschreven door X11 instellen&xorg;X11VoorbereidingIn de meeste gevallen configureert X11 zichzelf. Voor degenen met
oudere of ongebruikelijke apparatuur kan het nuttig zijn om informatie
over de hardware te verzamelen voordat er met de configuratie wordt
begonnen.Monitor synchronisatiefrequentiesChipset van de videokaartGeheugen van de videokaarthorizontale synchronisatiefrequentiehorizontale scansnelheidhorizontale synchronisatiefrequentieververssnelheidverticale synchronisatiefrequentieververssnelheidverticale scansnelheidververssnelheidDe schermresolutie en ververssnelheid worden bepaald door de
horizontale en verticale synchronisatiefrequenties. Bijna alle
monitoren ondersteunen het automatisch elektronisch detecteren van deze
waardes. Sommige monitoren geven deze waardes niet, dus moeten de
specificaties worden bepaald uit de geprinte handleiding of van de
website van de fabrikant.De chipset van de videokaart wordt ook automatisch gedetecteerd en
gebruikt om het juiste videostuurprogramma te selecteren. Het kan
handig voor de gebruiker zijn om te weten welke chipset is
geïnstalleerd wanneer de automatische detectie niet het gewenste
resultaat geeft.Het geheugen van de videokaart bepaalt de maximale resolutie en de
kleurdiepte die afgebeeld kunnen worden.X11 instellen&xorg; gebruikt HAL
om toetsenborden en muizen automatisch te detecteren. De ports
sysutils/hal en devel/dbus worden als
afhankelijkheden van x11/xorg
geïnstalleerd, maar moeten met de volgende regels in het
bestand /etc/rc.conf worden aangezet:hald_enable="YES"
dbus_enable="YES"Deze diensten dienen gestart te worden (ofwel handmatig of
door opnieuw op te starten) voordat er verder wordt gegaan met
de configuratie of gebruik van &xorg;.&xorg; werkt vaak zonder enige verdere
configuratie door het volgende op de prompt te typen:&prompt.user; startxDe automatische configuratie kan met sommige hardware
mislukken, of het kan dingen anders instellen dan gewenst is.
In deze gevallen is handmatige configuratie nodig.Bureaubladomgevingen als GNOME,
KDE, of
Xfce hebben gereedschappen waarmee
de gebruiker eenvoudig de schermparameters zoals de resolutie
kan instellen. Dus als de standaardconfiguratie niet
acceptabel is en u van plan bent om een bureaubladomgeving te
installeren kunt u gewoon doorgaan met de installatie van de
bureaubladomgeving en het juiste scherminstelgereedschap
gebruiken.Het instellen van X11 bestaat uit meerdere stappen. De
eerste stap is het bouwen van een instellingenbestand. Dit kan
als de supergebruiker met:&prompt.root; Xorg -configureDit genereert een kaal X11-instellingenbestand in de map
/root met de naam
xorg.conf.new. Feitelijk wordt bepaald
waar de map staat door hoe er superuser rechten zijn verkregen.
$HOME is anders bij gebruik van &man.su.1; of
bij direct aanmelden. Het X11 programma probeert dan de
grafische hardware te detecteren en schrijft een
instellingenbestand dat de juiste stuurprogramma's laadt voor
de gevonden hardware van het systeem.De volgende stap is het testen van de bestaande
instellingen om te controleren of
&xorg; met de grafische kaart van
het doelsysteem kan werken. Typ:&prompt.root; Xorg -config xorg.conf.new -retroAls er een zwart/grijs rooster en een X muis cursor
verschijnen was de instelling succesvol. Om de test te
stoppen dient naar de virtuele console waarmee de test werd gestart
overgeschakeld te worden door op CtrlAltFn
(F1 voor de eerste virtuele console) en CtrlC
te drukken.De toetsencombinatie CtrlAltBackspace
kan ook gebruikt worden om uit &xorg; te
breken. Om het aan te zetten, kunt u òfwel het volgende
commando uitvoeren vanaf elke X-terminal-emulator:&prompt.user; setxkbmap -option terminate:ctrl_alt_bkspòf een instellingenbestand voor het toetsenbord genaamd
x11-input.fdi voor
hald aanmaken en het in de map /usr/local/etc/hal/fdi/policy opslaan.
Dit bestand dient het volgende te bevatten:<?xml version="1.0" encoding="iso-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp</merge>
</match>
</device>
</deviceinfo>U moet uw machine opnieuw opstarten om
hald te forceren om dit bestand te
lezen.De volgende regel dient ook aan de sectie
ServerLayout of ServerFlags van
xorg.conf.new te worden toegevoegd:Option "DontZap" "off"Als de muis niet werkt, dan moet deze eerst ingesteld
worden. Zie in het &os;
installatiehoofdstuk. In recente versies van
Xorg worden de secties
InputDevice in xorg.conf
genegeerd ten voorkeur van de automatisch gedetecteerde apparaten.
Voeg de volgende regel aan de sectie ServerLayout
of ServerFlags van dit bestand toe om het oude
gedrag te herstellen:Option "AutoAddDevices" "false"Invoerapparaten kunnen dan zoals in vorige versies worden
geconfigureerd, tezamen met eventuele andere benodigde opties
(bijvoorbeeld omschakelen van toetsenbordindeling).Zoals al eerder is uitgelegd zal de daemon
hald standaard automatisch uw toetsenbord
detecteren. Het kan zijn dat de indeling of het model van uw
toetsenbord niet juist zijn. Bureaubladomgevingen zoals
GNOME, KDE of
Xfce bieden gereedschappen om het
toetsenbord in te stellen. Het is echter mogelijk om de eigenschappen
direct in te stellen met behulp van het gereedschap &man.setxkbmap.1;
of met een configuratieregel van
hald.Als men bijvoorbeeld een PC-toetsenbord met 102 toetsen met een
Franse indeling wilt gebruiken, dienen we een instellingenbestand voor
het toestenbord voor hald aan te maken
genaamd x11-input.fdi en het op te slaan in de
map /usr/local/etc/hal/fdi/policy. Het
dient de volgende regels te bevatten:<?xml version="1.0" encoding="iso-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.x11_options.XkbModel" type="string">pc102</merge>
<merge key="input.x11_options.XkbLayout" type="string">fr</merge>
</match>
</device>
<deviceinfo>Als dit bestand al bestaat, kunt u de regels betreffende de
configuratie van het toetsenbord kopiëren en aan uw bestand
toevoegen.U dient uw machine opnieuw op te starten om
hald te forceren om dit bestand te
lezen.Het is mogelijk om hetzelfde te bereiken vanaf een X-terminal of
een script met dit commando:&prompt.user; setxkbmap -model pc102 -layout frHet bestand
/usr/local/share/X11/xkb/rules/base.lst noemt de
beschikbare toetsenborden, indelingen en opties.X11 optimaliserenHet bestand xorg.conf.new kan nu naar wens
worden aangepast. Open het bestand in een tesktverwerker zoals
&man.emacs.1; of &man.ee.1;. Indien de monitor een ouder of
ongebruikelijk model is dat geen automatische detectie van de
synchronisatiefrequenties ondersteunt, dan kunnen deze instellingen
worden toegevoegd aan xorg.conf.new in de sectie
"Monitor":Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30-107
VertRefresh 48-120
EndSectionDe meeste monitoren ondersteunen de automatische detectie van de
synchronisatiefrequentie, wat het handmatig invoeren van deze waardes
overbodig maakt. Voor de enkele monitoren die geen automatische
detectie ondersteunen, dienen om mogelijke schade te voorkomen alleen
waardes die door de fabrikant zijn opgegeven te worden ingevoerd.X kan DPMS (Energy Star) eigenschappen gebruiken bij
monitoren die dit ondersteunen. &man.xset.1; regelt de
timeouts en kan de statussen standby, suspend of uit forceren.
Om DPMS eigenschappen voor een monitor te activeren, moet de
volgende regel toegevoegd worden aan de monitor sectie:Option "DPMS"xorg.confAls het instellingenbestand
xorg.conf.new toch open staat in de editor
dan kan ook meteen de gewenste standaardresolutie en
kleurdiepte gekozen worden. Dit staat in het onderdeel
"Screen":Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSectionHet sleutelwoord DefaultDepth beschrijft
de kleurdiepte die standaard wordt gebruikt. Met de
commandoregeloptie van &man.Xorg.1; kan
dit overschreven worden. Het sleutelwoord
Modes beschrijft de resolutie waarmee
gewerkt wordt bij de opgegeven kleurdiepte. Alleen VESA
standaarden die door de grafische kaart van het systeem worden
gedefinieerd worden ondersteund. In het voorbeeld hierboven is
de standaard kleurdiepte 24 bits per pixel. Bij deze
kleurdiepte is de toegestane resolutie 1024 bij 768
pixels.Bij het oplossen van problemen zijn de logboekbestanden
van X11 vaak een goede hulp. Ze bevatten informatie voor
ieder apparaat waar de X11 server verbinding mee maakt.
Namen van &xorg; logboekbestanden
hebben de vorm /var/log/Xorg.0.log. De
precieze naam van een logboekbestand van variëren van
Xorg.0.log tot
Xorg.8.log enzovoort.Als alles is ingesteld, moet het instellingenbestand op een
plaats gezet worden waar &man.Xorg.1; het kan vinden. Dit is
meestal /etc/X11/xorg.conf of
/usr/local/etc/X11/xorg.conf:&prompt.root; cp xorg.conf.new /etc/X11/xorg.confHet instellen van X11 is nu gereed.
&xorg; gestart worden met
&man.startx.1;. De X11-server kan ook gestart worden met behulp
van &man.xdm.1;.Bijzondere instellingenInstellen met de &intel; i810 grafische
chipsetIntel i810 grafische chipsetInstellen met &intel; i810 geïntegreerde chipsets vereist de
agpgart AGP programmeerinterface
voor X11 om de kaart aan te sturen. Zie de &man.agp.4;
handleiding voor meer informatie.Hierdoor wordt het instellen van de hardware net
als ieder andere grafische kaart. Bij systemen die zonder
&man.agp.4; stuurprogramma gecompileerd zijn slaagt het laden
van module met &man.kldload.8; niet. Het stuurprogramma moet
in de kernel geladen zijn tijdens het opstarten door te
compileren of door /boot/loader.conf te
gebruiken.Een Breedbeeld Flatpanel toevoegenbreedbeeld flatpanelconfiguratieDeze sectie gaat uit van wat diepere configuratiekennis.
Als pogingen om de bovenstaande standaard instelgereedschappen
niet tot een werkende configuratie leidden, dan is er genoeg
informatie in de logbestanden om de opstelling aan de praat te
krijgen. Het gebruik van een tekstverwerker zal nodig zijn.Huidige breedbeeldformaten (zoals WSXGA, WSXGA+, WUXGA, WXGA
en WXGA+) ondersteunen 16:10 en 10:9 formaten of
aspectverhoudingen die problematisch kunnen zijn. Voorbeelden
van enkele veelvoorkomende schermresoluties voor 16:10
aspectverhoudingen zijn:2560x16001920x12001680x10501440x9001280x800Op een gegeven moment zal het toevoegen van een van deze
resoluties net zo eenvoudig zijn als een mogelijke
Mode in het Section
"Screen":Section "Screen"
Identifier "Screen 0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1680x1050"
EndSubSection
EndSection&xorg; is slim genoeg om de
resolutie-informatie via I2C/DDC-informtie uit het flatpanel
te onttrekken zodat het weet wat de monitor aan kan wat betreft
frequenties en resoluties.Als die ModeLines niet bestaan in de
stuurprogramma's, dient men &xorg;
een kleine hint te geven. Met behulp van
/var/log/Xorg.0.log kan men genoeg
informatie onttrekken om handmatig een werkende
ModeLine aan te maken. Kijk naar
informatie die op deze lijkt:(II) MGA(0): Supported additional Video Mode:
(II) MGA(0): clock: 146.2 MHz Image Size: 433 x 271 mm
(II) MGA(0): h_active: 1680 h_sync: 1784 h_sync_end 1960 h_blank_end 2240 h_border: 0
(II) MGA(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1089 v_border: 0
(II) MGA(0): Ranges: V min: 48 V max: 85 Hz, H min: 30 H max: 94 kHz, PixClock max 170 MHzDeze informatie wordt EDID-informatie genoemd. Hiervan een
ModeLine maken is gewoon een kwestie van de
nummers in de juiste volgorde zetten:ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>Dus de ModeLine in Section
"Monitor" zou er voor dit voorbeeld uitzien als:Section "Monitor"
Identifier "Monitor1"
VendorName "GroteNaam"
ModelName "BesteModel"
ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
Option "DPMS"
EndSectionNa het voltooien van deze eenvoudige stappen, zou X moeten
starten op uw nieuwe breedbeeldmonitor.MurrayStokelyBijgedragen door Lettertypen gebruiken in X11Type1 lettertypenDe standaard lettertypen van X11 zijn allerminst ideaal
voor het typische bureaubladprogramma. Grote
presentatielettertypen zien er hoekig en onprofessioneel uit en
kleine lettertypen in &netscape;
zijn bijna onleesbaar. Er zijn diverse gratis, kwalitatief
goede Type1 (&postscript;) lettertypen die meteen gebruikt
kunnen worden met X11. De URW lettertypecollectie (x11-fonts/urwfonts) heeft
bijvoorbeeld hoge kwaliteit versies van standaard Type1
lettertypen (Times Roman, Helvetica, Palatino en anderen). De
Freefonts collectie (x11-fonts/freefonts) heeft nog meer
lettertypen, maar de meesten ervan zijn bedoeld om in grafische
software als Gimp gebruikt te worden
en zijn niet compleet genoeg om als schermlettertypen te
gebruiken. Daarbij kan X11 zonder veel moeite ingesteld worden
om &truetype; lettertypen te gebruiken. Meer informatie
staat in &man.X.7; of de paragraaf over &truetype; Lettertypen.Om de bovenstaande Type1 lettertypecollectie van de
Portscollectie te installeren:&prompt.root; cd /usr/ports/x11-fonts/urwfonts
&prompt.root; make install cleanDat geldt ook voor de freefont en andere collecties. Om de
X server te vertellen dat deze lettertypen bestaan, dient de
volgende regel toegevoegd te worden aan het instellingenbestand
van de X server (/etc/X11/xorg.conf):FontPath "/usr/local/lib/X11/fonts/URW/"Ook kan op de commando regel in de X sessie het volgende
gestart worden:&prompt.user; xset fp+ /usr/local/lib/X11/fonts/URW
&prompt.user; xset fp rehashDit werkt wel, maar zodra de X sessie wordt afgesloten is
het weer verdwenen tenzij het is toegevoegd aan het
opstartbestand (~/.xinitrc voor een
normale startx sessie of
~/.xsession als er wordt aangemeld met een
grafische aanmeldmanager als XDM).
Een derde manier is het gebruik van het nieuwe bestand
/usr/local/etc/fonts/local.conf: zie
hiervoor de paragraaf over Anti-aliasing.&truetype; lettertypenTrueType lettertypenlettertypenTrueType&xorg; heeft ingebouwde
ondersteuning voor het renderen van &truetype; lettertypen. Er
zijn twee verschillende modules die deze functionaliteit
activeren. In dit voorbeeld wordt de freetype module gebruikt
omdat deze beter werkt met de andere lettertypen die back-ends
renderen. Om de freetype module te activeren dient de volgende
regel toegevoegd te worden aan het onderdeel
"Module" van
/etc/X11/xorg.conf.Load "freetype"Hierna dient een map voor de &truetype; lettertypen gemaakt
te worden (bijvoorbeeld
/usr/local/lib/X11/fonts/TrueType) en alle
&truetype; lettertypen moeten naar deze map gekopieerd worden.
&truetype; lettertypen kunnen niet direct van een &macintosh;
gehaald worden. Ze moeten in een &unix;/&ms-dos;/&windows;
formaat zijn voor X11. Zodra de bestanden naar deze map zijn
gekopieerd, kan ttmkfdir gestart
worden om een fonts.dir bestand te maken
zodat de X lettertyperenderer weet waar deze nieuwe bestanden
zijn geïnstalleerd. ttmkfdir zit in de
&os; Portscollectie als x11-fonts/ttmkfdir.&prompt.root; cd /usr/local/lib/X11/fonts/TrueType
&prompt.root; ttmkfdir -o fonts.dirNu moet de &truetype; map toe aan het lettertypepad
toegevoegd worden. Dit gebeurt op dezelfde wijze als boven is
beschreven voor Type1
lettertypen:&prompt.user; xset fp+ /usr/local/lib/X11/fonts/TrueType
&prompt.user; xset fp rehashof door een FontPath regel toe te voegen
aan xorg.conf.Dat is alles. Nu herkennen
&netscape;,
Gimp,
&staroffice; en alle andere X
applicaties de geïnstalleerde &truetype; lettertypen.
Extreem kleine lettertypen (zoals hoge resolutie tekst op een
webpagina) en extreme grote lettertypen (in
&staroffice;) zien er nu veel beter
uit.Joe MarcusClarkeBijgewerkt door Antialias lettertypenantialias lettertypenlettertypenantialiasAlle lettertypen die X11 in de mappen
/usr/local/lib/X11/fonts/ en
~/.fonts/ staan zijn automatisch beschikbaar
voor anti-aliasing in applicaties die Xft ondersteunen. De meeste
recente applicaties ondersteunen Xft, inclusief
KDE, GNOME, en
Firefox.Om te kunnen regelen welke lettertypen gebruik maken van
anti-alias of om de eigenschappen van anti-aliasing in te
stellen kan
/usr/local/etc/fonts/local.conf gemaakt
of gewijzigd worden. In dit bestand kunnen speciale
eigenschappen van het Xft lettertypesysteem aangepast worden.
Deze paragraaf beschrijft wat eenvoudige mogelijkheden.
Meer details staan in &man.fonts-conf.5;.XMLDit bestand moet in het XML formaat opgemaakt worden.
Hoofdletters en kleine letters worden onderscheiden en alle
tags moeten netjes worden afgesloten. Het bestand begint met
de gewone XML header gevolgd door een DOCTYPE definitie en
daarna de <fontconfig> tag:<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>Zoals al eerder is vermeld zijn alle lettertypen in
/usr/local/lib/X11/fonts/ en in
~/.fonts/ al geschikt gemaakt voor
Xft applicaties. Als naast deze twee mappen nog een andere
lettertypen moeten kunnen bevatten, dan dient een soortgelijke
regel als de onderstaande aan
/usr/local/etc/fonts/local.conf toegevoegd
te worden:<dir>/pad/naar/mijn/fonts</dir>Na het toevoegen van nieuwe lettertypen en zeker nieuwe
lettertypemappen dienen de lettertypecaches opnieuw opgebouwd
worden met:&prompt.root; fc-cache -fAnti-aliasing maakt randen een beetje wazig wat kleine
teksten beter leesbaar maakt en voorkomt
trapvorming van grote letters. Maar het kan
oogkramp veroorzaken als het op normale tekst wordt toegepast.
Om lettertypen kleiner dan 14 punten uit te sluiten van
anti-aliasing moeten de volgende regels toegevoegd
worden:<match target="font">
<test name="size" compare="less">
<double>14</double>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test name="pixelsize" compare="less" qual="any">
<double>14</double>
</test>
<edit mode="assign" name="antialias">
<bool>false</bool>
</edit>
</match>lettertypenspacingSpatiëring voor sommige enkel gespatieerde lettertypen
kan ook ongepast zijn bij anti-aliasing. Dit lijkt vooral een
probleem te zijn bij KDE. Een
mogelijke oplossing hiervoor is het vergroten van de
spatiëring van die lettertypen naar 100:<match target="pattern" name="family">
<test qual="any" name="family">
<string>fixed</string>
</test>
<edit name="family" mode="assign">
<string>mono</string>
</edit>
</match>
<match target="pattern" name="family">
<test qual="any" name="family">
<string>console</string>
</test>
<edit name="family" mode="assign">
<string>mono</string>
</edit>
</match>Het bovenstaande hernoemt de standaardnamen van lettertypen
naar "mono"). Voeg daarna het volgende
toe:<match target="pattern" name="family">
<test qual="any" name="family">
<string>mono</string>
</test>
<edit name="spacing" mode="assign">
<int>100</int>
</edit>
</match>Bepaalde lettertypen, zoals Helvetica, kunnen problemen
hebben met anti-aliasing. Dit uit zich meestal in een
lettertype dat verticaal door midden lijkt gesneden. Op zijn
ergst kan het applicaties laten crashen. Om dit te
voorkomen kan overwogen worden om ook de volgende regels toe
te voegen aan local.conf:<match target="pattern" name="family">
<test qual="any" name="family">
<string>Helvetica</string>
</test>
<edit name="family" mode="assign">
<string>sans-serif</string>
</edit>
</match>Als de wijzigingen in local.conf zijn
gemaakt dient niet vergeten te worden het bestand te eindigen
met de tag </fontconfig> tag. Als dit
niet gedaan wordt, dan worden de wijzigingen niet
gezien.Als laatste kunnen gebruikers hun eigen instellingen aan
een persoonlijk .fonts.conf bestand
toevoegen. Om dit te doen moet iedere gebruiker het bestand
~/.fonts.conf maken. Ook dit bestand moet
in het XML formaat zijn.LCD schermlettertypenLCD schermNog een laatste punt: bij een LCD scherm kan sub-pixel
sampling prettig zijn. Eigenlijk zorgt dit er voor dat de
(horizontaal gesplitste) rode, groene en blauwe componenten
gewijzigd worden om de horizontale resolutie te verbeteren.
Het resultaat is geweldig. Voeg hiervoor de volgende regels
ergens aan local.conf toe:<match target="font">
<test qual="all" name="rgba">
<const>unknown</const>
</test>
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
</match>Afhankelijk van het soort beeldscherm kan
rgb veranderd moeten worden in
bgr, vrgb of
vbgr. Experimenteren levert de beste
instelling op.SethKingsleyBijgedragen door De X beeldschermmanagerOverzichtX beeldschermmanagerDe X beeldschermmanager (XDM) is
een optioneel onderdeel van het X Window systeem dat gebruikt
wordt voor beheer van aanmeldsessies. Dit is vaak erg handig
bij bijvoorbeeld X Terminals, desktops en grote
netwerk beeldschermservers. Omdat het X Window systeem
netwerk- en protocolonafhankelijk is, zijn er veel
mogelijkheden om X clients en servers op verschillende machines
in een netwerk te verbinden. XDM
levert een grafische interface waarmee er gekozen kan worden
welke beeldschermserver gebruikt moet worden en handelt
autorisatie informatie (gebruikersnaam en wachtwoord)
af.XDM levert de gebruiker dezelfde
functionaliteit levert als &man.getty.8; (zie
). Dus het regelt de
systeemaanmeldingen voor de schermen waaraan verbonden moet
worden en start dan een sessie manager namens de gebruiker
(meestal een X window manager). XDM
wacht dan tot het programma stopt en geeft aan dat de gebruiker
klaar is en afgemeld kan worden. Hierna kan
XDM het aanmeldscherm weer tonen
zodat de volgende gebruiker kan aanmelden.XDM gebruikenOm XDM te gebruiken moet de port
x11/xdm geïnstalleerd worden
(het wordt in recente versies van &xorg; niet
standaard geïnstalleerd). Het daemon-programma
XDM is daarna beschikbaar in
/usr/local/bin/xdm. Dit programma
kan als root altijd gestart worden en
regelt dan het X weergavegedeelte van de lokale machine. Als
XDM iedere keer bij het opstarten
moet starten is het handig om een regel toe te voegen aan
/etc/ttys. Meer informatie over het
gebruik van dit bestand staat in .
In de standaardversie van /etc/ttys staat
een regel om de applicatie daemon
XDM op een virtuele terminal te
draaien:ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secureStandaard staat deze regel uit. Om hem aan te zetten moet
veld 5 van off naar on
gewijzigd worden en moet met &man.init.8; herstart worden met
gebruikmaking van de aanwijzingen in .
Het eerste veld, de naam van de terminal die het programma
aanstuurt, is ttyv8. Dit houdt in dat
XDM op de negende virtuele terminal
begint te draaien.XDM instellenDe map met instellingen voor XDM
is /usr/local/lib/X11/xdm. In deze map
staan diverse bestanden die gebruikt kunnen worden om het
gedrag en uiterlijk van XDM te
veranderen. Meestal zijn dit de volgende bestanden:BestandOmschrijvingXaccessRegels voor client authorisatie.XresourcesStandaard waarden voor X bronnen.XserversLijst met op afstand en lokaal te beheren schermen.XsessionStandaard sessie script voor logins.Xsetup_*Script die applicaties start voordat de login
interface start.xdm-configAlgehele instellingen voor alle schermen op
deze machine.xdm-errorsFouten die gegenereerd zijn door het
serverprogramma.xdm-pidHet proces ID van de draaiende
XDM.Tevens staan in deze map een aantal scripts en programma's
om het bureaublad in te stellen als
XDM draait. Het doel van elk van
deze bestanden wordt kort omschreven. De juiste syntaxis en
het gebruik van deze bestanden staat in &man.xdm.1;.De standaardinstelling regelt een eenvoudig rechthoekig
aanmeldvenster met bovenin de hostnaam van de machine in een
groot lettertype met een Login: en
Password: prompt eronder. Dit is een goed
beginpunt om het uiterlijk en werking van het
XDM venster te veranderen.XaccessOm een verbinding te maken met
XDM-gestuurde schermen wordt het
protocol X Display Manager Connection Protocol (XDMCP)
gebruikt. Het bestand is een set regels die XDMCP
verbindingen met andere machines bestuurt. Het wordt
genegeerd, tenzij xdm-config is
gewijzigd zodat er wordt geluisterd naar inkomende
verbindingen. Standaard wordt het clients niet toegestaan te
verbinden.XresourcesDit is een bestand met standaarden voor de schermkiezer
en de aanmeldschermen. Hier kan het uiterlijk van het
aanmeldprogramma gewijzigd worden. De indeling is hetzelfde
als bij het app-defaults bestand en is beschreven in de X11
documentatie.XserversDit is een lijst met netwerkschermen waaruit gekozen kan
worden.XsessionDit is het standaard sessiescript voor
XDM dat start nadat de gebruiker
is aangemeld. Normaal heeft iedere gebruiker een eigen
sessiescript in ~/.xsession dat dit
script overheerst.Xsetup_*Deze starten automatisch voordat de kiezers of
aanmeldschermen getoond worden. Er is een script voor ieder
gebruikt scherm met de naam Xsetup_
gevolgd door het lokale schermnummer (bijvoorbeeld
Xsetup_0). Normaal draaien deze scripts
éé of twee programma's in de achtergrond zoals
xconsole.xdm-configDit bevat de instellingen die toegepast worden op ieder
scherm die deze installatie aanstuurt. De indeling is
hetzelfde als van app-defaults.xdm-errorsHierin staan de meldingen die de X servers geven als
XDM ze probeert te starten. Als
een scherm dat gestart is door XDM
om onduidelijke reden hangt, is dit een goede plaats om te
zoeken naar foutmeldingen. Deze meldingen worden ook per
sessie naar het ~/.xsession-errors van
de gebruiker gestuurd.Een netwerk beeldschermserver gebruikenOm gebruikers een verbinding te laten maken met een X
server moeten de toegangsregels gewijzigd worden en de
connectielistener moet aangezet worden. Deze hebben standaard
wat terughoudende waarden. Om XDM
te laten luisteren naar verbindingen moet als eerste een regel
uitgecommentarieerd worden in
xdm-config:! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with XDM
DisplayManager.requestPort: 0Hierna moet XDM herstart worden.
Afwijkend in dit bestand is dat commentaar in app-defaults
bestanden begint met het karakter ! en niet met
het karakter #. Het kan wenselijk zijn om de
toegangscontrole aan te scherpen — hiervoor staan
voorbeeldregels in Xaccess en lees de
hulppagina &man.xdm.1; voor meer informatie.Alternatieven voor XDMEr bestaan diverse alternatieven voor het
XDM programma.
KDM (wordt geleverd bij
KDE) wordt later in dit hoofdstuk
behandeld. De beeldschermmanager KDM
biedt vele grafische verbeteringen en
cosmetische franje en de mogelijkheid om de gebruiker de kans
te geven een window manager te laten kiezen bij het
aanmelden.ValentinoVaschettoBijgedragen door BureaubladomgevingenDeze sectie beschrijft de verschillende
bureaubladomgevingen voor X op &os;. Een
bureaubladomgeving kan van alles inhouden: van
een simpele window manager tot een complete suite van
bureaubladapplicaties zoals KDE of
GNOME.GNOMEOver GNOMEGNOMEGNOME is een
gebruikersvriendelijke bureaubladomgeving die de gebruiker de
mogelijkheid geeft om gemakkelijk de computer te gebruiken en
in te stellen. GNOME heeft een
paneel (voor het starten en tonen van statusinformatie van
applicaties), een bureaublad (waar data en applicaties
geplaatst kunnen worden), een set standaard
bureaubladapplicaties en een regels die het makkelijker maakt
voor applicaties om eenduidig met elkaar samen te werken.
Gebruikers van andere besturingssystemen of omgevingen voelen
zich meestal meteen thuis bij het gebruik van de krachtige
grafisch gestuurde omgeving die
GNOME biedt. Meer informatie over
GNOME op &os; staat op de &os; GNOME
Project website. De website bevat ook redelijk
complete FAQ's over het installeren, instellen en beheren van
GNOME.GNOME installerenDe software kan eenvoudig worden geïnstalleerd vanuit
een pakket of de Portscollectie:Om het GNOME pakket te
installeren:&prompt.root; pkg_add -r gnome2Om GNOME vanuit de
Portscollectie te installeren:&prompt.root; cd /usr/ports/x11/gnome2
&prompt.root; make install cleanVoor een correcte werking, vereist
GNOME dat het
/proc bestandssysteem gekoppeld is.
Voegproc /proc procfs rw 0 0toe aan /etc/fstab om
&man.procfs.5; automatisch te koppelen tijdens het opstarten.Zodra GNOME geïnstalleerd
is, moet de X server verteld worden dat in plaats van de
standaard window manager GNOME
gebruikt moet worden.De meest eenvoudige manier om
GNOME te starten is via
GDM, de GNOME Display Manager.
GDM wordt meegeïnstalleerd
met de GNOME bureaubladomgeving,
maar staat standaard uitgeschakeld. Dit programma kan
ingeschakeld worden door het volgende toe te voegen aan
/etc/rc.conf:gdm_enable="YES"Na een herstart zal GDM
automatisch gestart worden.Meestal is het gewenst om alle
GNOME applicaties tegelijkertijd
met GDM te starten. Om dit te
bereiken moet de volgende regel worden toegevoegd aan
/etc/rc.conf:gnome_enable="YES"GNOME kan ook gestart worden
vanaf de commandoregel door het bestand
.xinitrc juist in te stellen. Als er al
een .xinitrc is, dan hoeft alleen de
regel die de huidige window manager start veranderd te worden
in een regel die
/usr/local/bin/gnome-session
start. Als er niets speciaals met dit instellingenbestand is
gedaan:&prompt.user; echo "/usr/local/bin/gnome-session" > ~/.xinitrcNu kan met startx de
GNOME bureaubladomgeving gestart
worden.Als een beeldschermmanager als
XDM gebruikt wordt werkt het
bovenstaande niet. In plaats daarvan moet een uitvoerbaar
.xsession gemaakt worden met hetzelfde
commando erin. Hiervoor moet het bestand aangepast worden
door het bestaande window manager commando te vervangen door
/usr/local/bin/gnome-session:&prompt.user; echo "#!/bin/sh" > ~/.xsession
&prompt.user; echo "/usr/local/bin/gnome-session" >> ~/.xsession
&prompt.user; chmod +x ~/.xsessionHet is ook mogelijk de beeldschermmanager zo in te stellen
dat de window manager gekozen kan worden tijdens het
aanmelden. In de paragraaf Meer KDE Details wordt
uitgelegd hoe dit gedaan moet worden voor de
KDM beeldschermmanager van
KDE.KDEKDEOver KDEKDE is een bureaubladomgeving
die eigentijds is en makkelijk in gebruik.
KDE biedt de gebruiker:Een schitterende eigentijdse desktop;Een desktop die volledig netwerktransparant
is;Een geïntegreerd hulpsysteem dat eenvoudig
bruikbare informatie geeft over het gebruik van het
KDE bureaublad en de
applicaties;Alle KDE applicaties
werken op dezelfde manier en zien er hetzelfde
uit;Gestandaardiseerde menu's en werkbalken,
keybindings, kleurschema's, enzovoort;Internationalisatie:
KDE is beschikbaar in meer dan
55 talen;Gecentraliseerde, consistente, dialooggedreven
bureaubladinstelling;Een grote hoeveelheid bruikbare
KDE applicaties;KDE wordt geleverd met een
webbrowser genaamd Konqueror die
niet onder doet voor de andere bestaande webbrowsers op
&unix; systemen. Meer informatie over
KDE staat op de KDE website. Voor &os;
specifieke informatie en bronnen over
KDE is er de website KDE/&os; initiatief.Er zijn twee versies van KDE
beschikbaar op &os;. Versie 3 is sinds lange tijd aanwezig en is nog
steeds beschikbaar in de Portscollectie alhoewel het nu onbeheerd en
gedeeltelijk kapot is. Versie 4 wordt punctueel bijgewerkt en is de
standaardkeuze voor gebruikers van KDE.
Ze kunnen zelfs naast elkaar worden geïnstalleerd.KDE installerenNet als bij GNOME of iedere
andere bureaubladomgeving kan de software eenvoudig
geïnstalleerd met een pakket of uit de Portscollectie:Om het KDE 3 pakket van het
netwerk te installeren:&prompt.root; pkg_add -r kdeOm het KDE 4 pakket van het
netwerk te installeren:&prompt.root; pkg_add -r kde4&man.pkg.add.1; haalt automatisch de laatste versie van
de applicatie op.Om KDE 3 vanuit de
Portscollectie te bouwen en te installeren:&prompt.root; cd /usr/ports/x11/kde3
&prompt.root; make install cleanGebruik de Portscollectie om
KDE 4 vanuit de broncode te bouwen:&prompt.root; cd /usr/ports/x11/kde4
&prompt.root; make install cleanNadat KDE geïnstalleerd
is, moet de X server verteld worden dat déze
applicatie gestart moet worden in plaats van de standaard
window manager. Hiervoor kan .xinitrc
aangepast worden:Voor KDE 3:&prompt.user; echo "exec startkde" > ~/.xinitrcVoor KDE 4:&prompt.user; echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrcAls het X Window System wordt gestart met
startx is KDE
het bureaublad.Als er een beeldschermmanager als
XDM gebruikt wordt, is de
instelling anders. Dan moet .xsession
gewijzigd worden. Instructies voor
KDM worden later in dit hoofdstuk
beschreven.Meer KDE detailsNadat KDE
geïnstalleerd is op een systeem, kunnen de meeste dingen
uitgezocht worden via de hulppagina's of door de verschillende
menu's aan te wijzen en erop te klikken. &windows; en &mac;
gebruikers voelen zich meestal helemaal thuis.Het beste naslagwerk voor KDE
is de on-line documentatie. KDE
heeft zijn eigen web browser,
Konqueror, tientallen handige
applicaties en uitgebreide documentatie. De volgende
paragrafen beschrijven de technische zaken die moeilijk
proefondervindelijk te achterhalen zijn.De KDE beeldschermmanagerKDEbeeldschermmanagerEen beheerder van een multi-user systeem die een grafisch
aanmeldscherm willen hebben voor zijn gebruikers kan hiervoor
XDM gebruiken, zoals eerder
beschreven. KDE biedt
KDM als alternatief. Dat is
ontworpen met een beter uiterlijk en heeft meer
aanmeldopties. Gebruikers kunnen via een menu kiezen
welke bureaubladomgeving (KDE,
GNOME of een andere) zij na het
aanmelden willen gebruiken.Om KDM te starten, moeten verschillende
bestanden gewijzigd worden, afhankelijk van de versie van
KDE.Voor KDE 3 dient de regel met
ttyv8 als volgt aangepast te worden:ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secureVoor KDE 4 dient &man.procfs.5; te
worden aangekoppeld en de volgende regel aan
/etc/rc.conf te worden toegevoegd:kdm4_enable="YES"XfceOver XfceXfce is een bureaubladomgeving
die gebaseerd is op de GTK+ toolkit die gebruikt wordt bij
GNOME, maar is eenvoudiger en
bedoeld voor gebruikers die een simpel en efficiënt
bureaublad willen dat toch eenvoudig en makkelijk in te
stellen is. Het ziet er bijna hetzelfde uit als
CDE dat bij commerciële
&unix; systemen zit. Een aantal
Xfce functies zijn:Een eenvoudige, makkelijk te bedienen
desktop;Geheel in te stellen met de muis, met klikken en
slepen, enzovoort;Hoofdpaneel hetzelfde als
CDE met menu's, applets en
applicatiesGeïntegreerde window manager, bestandsmanager,
geluidsmanager, GNOME
compliance module en meer zaken;Thema's (sinds het gebruik van GTK+);Snel, licht en efficiënt: ideaal voor de oudere
of langzamere machines of machines met beperkte
hoeveelheid geheugen;Meer informatie over Xfce
staat op de Xfce
website.Installeren van XfceXfce is met een pakket
te installeren:&prompt.root; pkg_add -r xfce4Of vanuit de Portscollectie:&prompt.root; cd /usr/ports/x11-wm/xfce4
&prompt.root; make install cleanNu moet de X server weten dat
Xfce gestart moet worden als X de
volgende keer start:&prompt.user; echo "/usr/local/bin/startxfce4" > ~/.xinitrcDe volgende keer dat X start is
Xfce het bureaublad. Wederom:
als een beeldschermmanager als XDM
gebruikt wordt, moet .xsession gemaakt
worden zoals beschreven in de paragraaf over GNOME. Nu moet echter het
command /usr/local/bin/startxfce4
gebruikt. Het is ook mogelijk de beeldschermmanager in te
stellen om bureaublad te kiezen bij het aanmelden, zoals is
uitgelegd in de paragraaf over kdm.