DHCPv6 stateful autoconfiguration

From ICO wiki
Jump to navigationJump to search

Autor

Imre Lebedev

Rühm A22

2013

Sissejuhatus

MAC aadresside meeldejätmisega Dünaamilise hostikonfiguratsiooni protokolli automaatne seadistamine (Inglise k. - DHCPv6 stateful autoconfiguration). DHCPv6 lubab erinevatel seadetel, mis on IPv6 võrgu küljes, ühendada end internetti ilma, et oleks vaja mingisugust vahendaja abi. See referaat siin on sellest, kuidas üles seada DHCP server IPv6'ele nii, et samad staatilised aadressid saaks alati suunata samadele host'idele kasutades DUID(DHCP Unique Identifier)väärtusi.

Stateful auto-konfigureerimise mudelis, saab masin liidese aadressi ja konfiguratsiooni parameetrid serverilt. Stateful mudelit kasutatakse enamasti siis, kui vajatakse tugevamat kontrolli kindlate aadresside ülessannetes.

Stateful auto-autokonfiguratsiooni kasutatakse konfigureerimaks non-link-local aadressisd läbi konfigufratsiooni protokolli milleks on DHCP.

Kuna meie näide on IPv6 kohta, siis stateful DHCPv6 kasutus on tiba teistsugusem kui stateless. DHCPv6 vaadeldavad request/response ajad peaksid olema enamus juhtudel samad, kuid on võimalik, et mällu kirjutamisel ja sealt lugemisel DHCPv6 servers võib viia väikse latency tõusuni.


Selgitus

Selles näites näitan kuidas üles seada paar masinat, mille peal on Debian lenny: serveril holmes.example.com ja kliendil watson.example.com. Mõlemad masinad on jube IPv4 kaudu ühendatud internetti. Watsonil on ainult kasutuses üks liides ning holmes'il kaks: üks väline(eth0), mis on ühendatatud internetiga, ja üks sisesne (eth1), mis on mõeldud kliendi masinatele. Holmes kasutab sammuti BIND9 server, et saada tuge DNS'ile. Selles näites on IPv6 suunatud serverisse IPv4ja kaudu, aga teisalt võib see olla lihtsalt native IPv6 ühendus. Selleks, et saada DHCPv6 ilma Mac aadressite meeldejätmiseta tööle, tuleks järgida järgmisi kümmet punkti, arvesse võttes eelnevat teksti ning ka seda, et näites kasutatud IPv6 prefix, 2001:888:0db8::/48, tuleks asendanda teie enda omaga.

1. Serveri kasutajaliidese konfiguratsioon

Serveris on vaja muuta sisese liidese võrgu ip staatiliseks ipv6 aadressiks. Seda saab teda järgneval asukohas: /etc/network/interfaces. Konfiguratsioon peaks meie näite põhjal välja nägema järgmine:

 auto eth1

iface eth1 inet6 static
	address 2001:888:0db8:1::a
	netmask 64
	pre-up modprobe ipv6
	up echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
	up echo 0 > /proc/sys/net/ipv6/conf/all/autoconf 

Viimased 2 rida lubvad esiteks serveril käituda kui IPv6 ruuter ning teiseks hoida ära selle, et ükski liides ei saaks kogematta hiljem endale teist IPv6 aadress läbi automaatse konfiguratsiooni.

2. Pakettide installimine Serverisse

Serverisse tuleb installeerida DHCPv6 server koos IPv6 route adevertising daemon'iga.

Seda saab teha järgnevalt:

~# apt-get install wide-dhcpv6-server radvd

Pakettide instaleerimisel peaks olema installimisel kokku 3 pakketi:

radvd                1:1.1-3            Router Advertisement Daemon
sharutils            1:4.6.3-1          shar, unshar, uuencode, uudecode
wide-dhcpv6-server   20080615-1lenny2   DHCPv6 server for automatic IPv6 hosts configuration

Installimise jooksul küsitakse kasutajalt üks küsimus, kuhu tuleb vastata millisele liidsele on plaan ühendada DHCPv6 kliendid. Kogu see informatsioon salvestub siia: /etc/default/wide-dhcpv6-server .

Küsimus ise näeb välja järgmine(kuna näites on plaan ühendada kliendi eth1 taha, on vastuseks loomulikult eth1):

Interfaces on which the DHCPv6 server listens to requests: eth1 

3. Serveri DNS kirjed

Serveris, tuleb lisada forward ja reverse kirjeds, nii serverile endale kui ka kliendile DNS serveris. Watsonil jooksva BIND9 zone failile example.com'ile, peaksid kirjed välja nägema järgmised:

holmes   IN   AAAA   2001:888:0db8:1::a

watson   IN   AAAA   2001:888:0db8:1::b

Sarnaselt teise failiga 8.b.d.0.8.8.8.0.1.0.0.2.ip6.arpa 's, peaks reverse fail välja nägema järgmine:

a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0   IN   PTR   holmes.example.com.

b.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0   IN   PTR   watson.example.com.

4. Server route advertising deemon paketi faili seadistamine

Kuna eelnevalt instaleeritum paketil radvd, ei ole konfiguratsiooni faili, siis tuleb see luua. Selle loome asukohta /etc/radvd.conf ning selle sisuks on järgnev;

 interface eth1
{
	AdvSendAdvert on;
	AdvManagedFlag on;
	AdvOtherConfigFlag on;
	prefix 2001:888:0db8:1::/64 {
		AdvAutonomous off;
	};
};

Konfiguartsioonis kasutatud käsud aitavad meil sammuti teavitada Windows 7me ja MAC OS/x (10.7'mest uuemad) kasutajaid, et ühedatavas võrgus on kasutusel MAC aadresside meeldejätmiseta host protokoll (DHCPv6).

Kui fail on salvestatud, tuleb käima panna route advertising deemon:

 ~# /etc/init.d/radvd start 

5. Serveri WIDE-DHCPv6 konfiguratsioon

Nagu ka eelmises punktis, siis ka dhcp6s daemonil puudud konfiguratsiooni fail, mille me loome nime ja asukohaga järgnevalt: /etc/wide-dhcpv6/dhcps.conf. Ning selle faili sisusk on järgnev:

option domain-name-servers	2001:888:0db8:1::a;
option domain-name		"example.com";

interface eth1 {
	address-pool pool1 3600;
};

pool pool1 {
	range 2001:888:0db8:1::1000 to 2001:888:0db8:1::2000;
};

6. Kliendi poolne pakettide installeerimine

Kliendi masinasse tuleb instaleerida paketid järgneva käsuga:

~# apt-get install wide-dhcpv6-client

Sellel puhul on instaleerimise tulemuseks 2 paketti:

sharutils            1:4.6.3-1          shar, unshar, uuencode, uudecode
wide-dhcpv6-client   20080615-1lenny2   DHCPv6 client for automatic IPv6
                                        hosts configuration

Sammuti küsitakse installeerimise käigus ainult üks küsimus, nagu tehti ka serveri pakettide installeerimise käigus, kuid seda puhku on küsimus järgmine:

Interfaces on which the DHCPv6 client sends requests: eth0

Siinkohal tuleb vastata selleks liides, mis on mõeldud ainult klientidele, ehk eth0


7. Kliendi DUID faili asendamine

Iga DHCPv6 klient on unikaalselt teadustatud tema DUID (DHCP Unikaalne väljaselgitaja - inglise k. DHCP Unique Identifier). Sellisel juhul DUID genereeritakse siis, kui klient on instaleerinud ja salvestanud /var/lib/dhcpv6/dhcp6c_duid. Selleks, et DHCPv6 server annaks staatilise IPv6 aadressi kindlale DHCPv6 kliendile, tuleb servelil väljaselgitada selle kliendi DUID, mis on sarnane DHCPv4 serverile, peale kliendi MAC aadressi väljaselgitamist. Siinpuhul on ainukeseks probleemiks see, et me ei tea milline on kliendi DUID kui see on automaatselt genereeritud, mistõttu oleks lihtsaim moodus luua uus DUID mille puhul mea teame milline on DUID väärtus.

Kliendi masinas tuleb kasutada sellist scripti: wide_mkduid.pl, mis on algselt Jeffery F. Blank'i omand, Michigani Tehnoloogia Ülikoolist. Me kasutame seda skripti, et asendada olemasoelv /var/lib/dhcpv6/dhcp6c_duid fail. Ainukeseks nõutavaks sisestuseks skriptis oleks kliendi liidese MAC aadress, mis näite puhul on 08:00:27:0c:5f:2b, aga allpool olevas näites on vajalik anda võrgu liidese nimi (eth0):

~# cd /usr/local/bin
~# wget -q http://www.ipv6.mtu.edu/wide_mkduid.pl
~# chmod 755 wide_mkduid.pl
~# cd /var/lib/dhcpv6
~# wide_mkduid.pl -m `ifconfig eth0 |grep HWaddr |awk '{print $5}'`
successfully created /var/lib/dhcpv6/dhcp6c_duid
DUID is 00:03:00:06:08:00:27:0c:5f:2b
~#

Uus DUID fail on 4 baiti lühem kui originaalne DUID, aga sellest ei ole hullu, sest tähtis on see, et me nüüd teame klienti, millel on teada ka DUID väärtus.

9. Serveri DHCPv6 kliendi teadvustamine

Serveris, tuleb muuta /etc/wide-dhcpv6/dhcp6s.conf, ning lisada selle faili lõppu teadvustus DHCPv6 kliendist, kasutades selleks DUID väärtust eelmisest sammust.

host watson {
	duid 00:03:00:06:08:00:27:0c:5f:2b;
	address 2001:888:0db8:1::b infinity;
};

Aadressi väärtuseks PEAB olema korrektne IPv6 aadress, ning host nime kasutamine on ainule valikuline. Watson selles näites on lisatud vaid selleks, et parandada logi failide lugetavust. Kahjuks peab igat IPv6 aadressi hoidma siin ning ka DNS serveris. Meie näites on lubatud kliendil kasutada seda aadressi määramata ajaks.

Nüüd aga käivitame esimest korda DHCPv6 serveri:

~# /etc/init.d/wide-dhcpv6-server start

= 9. Kliendi WIDE-DHCPv6 konfiguratsioon

Kliendi masinas tuleb muuta dhcpv6 deemoni konfiguratsiooni faili /etc/wide-dhcpv6/dhcp6c.conf ja muutase see selliseks, et see näeks välja sarnaselt järgnevale:

 interface eth0 {
	request domain-name-servers;
	request domain-name;
	send rapid-commit;
	send ia-na 15;
	script "/etc/wide-dhcpv6/dhcp6c-script";
};

id-assoc na 15 { #
};

id-assoc osa võib olla tühi, kuid kahjuks ei tohi seda konfiguratsiooni failist välja jätta.

10. Kliendi liidse konfiguratsioon

Esmalt tuleb välja lülitada kliendi liides.

ifdown eth0

Muuda /etc/network/interfaces ja lisa eth0 sektsiooni lõppu vajalikud käsud. Täpsemalt sellised, mis toetavad DHCPv4'ja, et laadida ipv6 moodul ja käivitada/peatada DHCPv6 klient:

 auto eth0
iface eth0 inet dhcp
	pre-up modprobe ipv6
	post-up /etc/init.d/wide-dhcpv6-client start
	pre-down /etc/init.d/wide-dhcpv6-client stop 

Nüüd tuleb uuesti liides käivitda:

ifup eth0

Nüüd, et kontrollida kas kõik töötab, tuleb teha lihtne katsetus:

~# ifconfig eth0
eth0	  Link encap:Ethernet  HWaddr 08:00:27:0c:5f:2b
	  inet addr:127.0.0.2  Bcast:127.255.255.255  Mask:255.0.0.0
	  inet6 addr: 2001:888:0db8:1::b/128 Scope:Global
	  inet6 addr: fe80::a00:27ff:fe0c:5f2b/64 Scope:Link
	  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
	  RX packets:255 errors:0 dropped:0 overruns:0 frame:0
	  TX packets:258 errors:0 dropped:0 overruns:0 carrier:0
	  collisions:0 txqueuelen:1000
	  RX bytes:30511 (29.7 KiB)  TX bytes:26695 (26.0 KiB)
	  Interrupt:10 Base address:0xd060 

11. Kasutatud materjal

1) http://www.rjsystems.nl/en/2100-dhcpv6-stateful-autocfg.php

2) http://blogs.technet.com/b/teamdhcp/archive/2009/03/03/dhcpv6-understanding-of-address-configuration-in-automatic-mode-and-installation-of-dhcpv6-server.aspx