Een statische DHCP server opzetten

ArticleCategory:

System Administration

AuthorImage:

[Eric Seigne]

TranslationInfo:

Original in fr Eric Seigne

fr to en:John Perr

en to nl:Egon Willighagen

AboutTheAuthor:

Eric werkt voor de opensource wereld. Zijn dagelijkse werk is het programmeren van toepassingen die zich richten op het toegang geven tot databases op het internet. Veel gebruikte tools zijn PostGreSQL, MySQL en PHP.



Abstract:

Dit artikel legt uit hoe DHCP eenvoudig ingesteld kan worden.

ArticleIllustration:

[Illustratie]

ArticleBody:

Inleiding

Het doel van dit artikel is:

De in dit artikel gebruikte DHCP server is Paul's Vixie/ISC DHCPd.

Een "open" DHCP server

Onze eerste stap is het opzetten van een DHCP server zonder instellingen, zodat deze in staat is elke client te accepteren.
Ik gebruik hier de netwerk configuratie van de "Slash Party #2" waar ik geprobeerd heb een goede Linux server op te zetten.

<file /etc/dhcpd.conf>
default-lease-time 86400;
max-lease-time 604800;
get-lease-hostnames true;

option subnet-mask 255.255.255.0;
option domain-name "slach2-100.party";
option domain-name-servers 192.168.12.1;
option interface-mtu 1500;

subnet 192.168.12.0 netmask 255.255.255.0 
        # default gateway
        option routers 192.168.12.1;
        option broadcast-address 192.168.12.255;
        range 192.168.12.50 192.168.12.200;

</file>

Zodra de DHCP server draait (gebruik "/etc/init.d/dhcp start" of iets dergelijks, afhankelijk van uw distributie), kunt u de client computers op het netwerk opstarten. Deze moeten zo ingesteld worden dat ze hun IP-adres via DHCP ophalen.
Op het moment dat ze dit doen, komt een blok vergelijkbaar met het volgende in het bestand dhcpd.leases te staan:

<blok toegevoegd voor een DHCP client>
lease 192.168.12.58 
        starts 2 1999/08/24 06:28:48;
        ends 3 1999/08/25 06:28:48;
        hardware ethernet 00:10:5a:2e:56:a7;
        uid 01:00:10:5a:2e:56:a7;
        client-hostname "KLUSTER";

</bloc>

Als alle client computers een IP-adres van de server gekregen hebben, ziet dhcpd.leases er ongeveer zo uit:

<file dhcpd.leases>
lease 192.168.12.58 
        starts 2 1999/08/24 06:28:48;
        ends 3 1999/08/25 06:28:48;
        hardware ethernet 00:10:5a:2e:56:a7;
        uid 01:00:10:5a:2e:56:a7;
        client-hostname "KLUSTER";

lease 192.168.12.53 
        starts 2 1999/08/24 05:42:22;
        ends 3 1999/08/25 05:42:22;
        hardware ethernet 00:80:ad:97:e1:76;
        uid 01:00:80:ad:97:e1:76;
        client-hostname "ceddz";

lease 192.168.12.54 
        starts 2 1999/08/24 03:07:26;
        ends 3 1999/08/25 03:07:26;
        hardware ethernet 00:80:ad:97:e1:7d;
        uid 01:00:80:ad:97:e1:7d;
        client-hostname "SDS";

lease 192.168.12.67 
        starts 2 1999/08/24 02:52:19;
        ends 3 1999/08/25 02:52:19;
        hardware ethernet 00:50:04:45:e1:65;
        uid 01:00:50:04:45:e1:65;
        client-hostname "HOMER";

lease 192.168.12.64 
        starts 2 1999/08/24 01:26:05;
        ends 3 1999/08/25 01:26:05;
        hardware ethernet 00:80:ad:97:e2:1c;
        uid 01:00:80:ad:97:e2:1c;
        client-hostname "chAwArmA";

lease 192.168.12.59 
        starts 2 1999/08/24 01:14:06;
        ends 3 1999/08/25 01:14:06;
        hardware ethernet 00:00:21:2c:30:e7;
        uid 01:00:00:21:2c:30:e7;
        client-hostname "WOOKIE";

</file>

Beveiligen van de DHCP server

De volgende stap is het beveiligen van onze "open" DHCP server tot een statische, maar ook veiliger server. Dit kan gedaan worden nu we een goede dhcp.lease tot onze beschikking hebben.

Wat zijn de verschillen tussen een statische en een open DHCP server? Wat mij betreft, is het vooral belangrijk dat een open DHCP server elke computer dat is aangesloten op het netwerk een IP-adres verschaft. En dit is een groot veiligheidsprobleem, want zodra iemand zich op het netwerk aankoppelt kan hij het netwerk ook volledig gebruiken.

Om zo'n aanval af te slaan, gebruik ik een statische server. Elk IP-adres wordt alleen vergeven aan clients met een bekend MAC adres van de ethernetkaart van die computer. Elke onbekende kaart wordt genegeerd.

<file dhcpd.conf>
default-lease-time 86400;
max-lease-time 604800;
get-lease-hostnames true;
option subnet-mask 255.255.255.0;
option domain-name "slach2-100.party";
option domain-name-servers 192.168.12.1;
option lpr-servers 192.168.12.1;
option interface-mtu 1500;

subnet 192.168.12.0 netmask 255.255.255.0 
        # default gateway
        option routers 192.168.12.1;
        option broadcast-address 192.168.12.255;
	# Diegene die niet in de DHCP staan
	# krijgen IP's tussen .10 en .50
        range 192.168.12.10 192.168.12.50;


host 
        hardware ethernet 00:10:5a:2e:56:a7;
        fixed-address "kluster.slach2-100.party";

host 
        hardware ethernet 00:80:ad:97:e1:76;
        fixed-address "ceddz.slach2-100.party";
host 
        hardware ethernet 00:80:ad:97:e1:7d;
        fixed-address "sds.slach2-100.party";

host 
        hardware ethernet 00:40:95:49:0b:a5;
        fixed-address "saigneur.slach2-100.party";

host 
        hardware ethernet 00:50:04:45:e1:65;
        fixed-address "homer.slach2-100.party";

</file>

WAARSCHUWING: als uw systeem geen DNS server heeft draaien, moet het bestand dhcp.conf IP-adressen gebruiken in plaats van machinenamen. Bijvoorbeeld:

<toevoeging aan dhcpd.conf als er geen DNS server is>
host 
        hardware ethernet 00:40:95:49:0b:a5;
        fixed-address "192.168.12.57";

host 
        hardware ethernet 00:50:04:45:e1:65;
        fixed-address "192.168.12.67";

</extract>

Ik heb een klein Perl script geschreven dat het dhcpd.lease bestand automatisch omzet in een statische DHCP configuratie bestand.

Automatische configuratie van de DNS server

Gelijktijdig kunnen we ook de DNS server configureren. Hetzelfde Perl script, met de optie -dns, kan ook bestanden met als bestandsnaam named.$domain.ajouter (ajouter = toevoegen) aanmaken. Dit bestand kan na controle toegevoegd worden aan de DNS configuratiebestanden.

Bovendien is het nodig om aan het bestand named.conf waarden toe te voegen voor uw domein. Bijvoorbeeld:

<toevoegen aan het bestand named.conf>
zone "slach2-100.party" 
        type master;
        file "named.slach2-100";
;

zone "12.168.192.in-addr.arpa" 
        type master;
        file "named.slach2-100.rev";
;
</add>

Als dit gelukt is, mag u uzelf feliciteren: u heeft nu een werkende DHCP en DNS configuratie.

Windows' Netwerkomgeving

Zonder extra moeite (zeker als het geen moeite kost :), kan de Netwerkomgeving (Network Neighborhood) van Windows computers correct ingesteld worden. Hieronder staat hoe dit moet:

Op Slach Party #2 heb ik twee netwerken geïnstalleerd. De eerste was een 10Mb netwerk en het tweede een 100Mb (voor bevoorrechte gebruikers...). Het grootste probleem dat de twee netwerken elkaar niet konden zien via de Netwerkomgeving van MS-Windows.

De oplossing hiervoor is WINS. Dit maakt het mogelijk om op het gezamenlijke netwerk een server te definiëren die een lijst beheerd van links tussen IPs en "namen van de verschillende domeinen". Het is een soort "master" voor de beide netwerken R1 en R2.

Het is daarom nodig om een WINS server te configureren en clients zo in te stellen dat ze die gebruiken. Uiteraard moet er ook een gateway tussen beide netwerken beschikbaar zijn.

WINS wordt goed ondersteund door Samba :)

Schematisch:

-------------------
|                 |
|   Netwerk R1    |
|                 |
|  192.168.0.0    |
|  255.255.255.0  |
-------+-----------
       |
  -----|-----
 eth0: 192.168.0.1

     Linux
     Server

 eth1: 192.168.100.1
  -----|-----
       |
-------+-----------
|                 |
|   Netwerk R2    |
|                 |
|  192.168.100.0  |
|  255.255.255.0  |
-------------------

Het bestand dhcpd.conf is aangepast zodat de automatisch geconfigureerde client ook direct de WINS server herkennen :). Zonder DHCP zou het nodig zijn om elke client apart en opnieuw in te stellen om toegang te krijgen tot de WINS server!

WAARSCHUWING: Vergeet niet de volgende regels aan uw dhcpd.conf bestand toe te voegen:

<file dhcpd.conf>
[...]
option routers 192.168.0.1;
option netbios-name-servers 192.168.0.1;
option netbios-dd-server 192.168.0.1;
option netbios-node-type 8;
[...]
</file>

Om een werkende WINS server op te zetten, gebruik ik Samba, dat als volgt ingesteld is:

<file smb.conf>
; gecontroleerd met Samba 2.0.5
[global]
   workgroup = rycks.com
   server string = Linux Box
   comment = Linux Box
   netbios name = pantoufle
   volume = pantoufle
   guest only = yes

   guest account = nobody
   log file = /var/log/samba-log.%m
   max log size = 50

   share modes = yes
   security = share
   socket options = TCP_NODELAY 
   os level = 33

   ; Ingesteld als network 'master'
   domain master = yes
   local master = yes
   preferred master = yes

   ; WINS aanzetten
   wins support = yes
   wins proxy = yes

 ; FTP delen
 [ftp]
   path = /home/ftp/pub
   public = yes
   printable = no
   guest ok = yes

</file>

Het is nodig om de DHCP, Samba en DNS services na de aanpassing te herstarten. Ook alle clients moeten opnieuw opgestart worden om de veranderingen te gebruiken. Kijk hierna naar computers op het netwerk "others" in de "Network Neighborhood".
Gegeven de gebruikelijke vertraging die Windows nodig heeft om de nieuwe computers in de Netwerkomgeving op te nemen, stel ik voor een computer via zijn naam op te zoeken. Zoek er eerst een op van uw eigen netwerk, waarna u er een opzoekt van het andere netwerk.

Als u computers van het andere netwerk wel kunt zien, maar niet kunt openen, moet u de instellingen van de gateway aanpassen, zodat deze als een echte gateway dienst doet.
Voor meer informatie over dit onderwerp, kunt u naar de documentatie van ipchains kijken.

Normaal is het mogelijk om iets dergelijks te gebruiken:

#Wis alle oude instellingen
ipchains -F
#Zet 'masquerading' aan
ipchains -A forward -i eth0 -j MASQ

Bugs en beperkingen

Wees voorzichtig, als de DHCP server in twee gebieden tegelijk gebruikt wordt, dan zal er slechts een DNS file aangemaakt worden...

Ik hoop dat dit document bruikbaar is. Vragen en reacties zijn welkom.

Referenties

Voor meer informatie over de verschillende delen, kunt u lezen:

Nederlandstalige versies zijn mogelijk beschikbaar via nl.linux.org/doc/nlhowto.php.

Waar is de meest recente versie van dit document te vinden?

Verbeteringen komen vaak voor. Op het volgende adres is de meest recente, Franse versie te vinden: http://www.rycks.com/erics/linux/