Linux services
Zadání:
- DHCP server,
- TFTP server,
- boot server,
- adresní rozsah: 172.16.0.0/13
- na eth1 T1000 SunFire serveru.
Tým:
- Michal Puhlovský,
- Martin Šmejda
Obsah
DHCP server
Co je DHCP
DHCP (anglicky Dynamic Host Configuration Protocol) je aplikační protokol z rodiny TCP/IP. Používá se pro automatické přidělování IP adres jednotlivým osobním počítačům v počítačových sítích, čímž zjednodušuje jejich správu.
DHCP protokol umožňuje prostřednictvím jediného DHCP serveru nastavit všem stanicím sadu parametrů nutných pro komunikaci v sítích používajících rodinu protokolů TCP/IP včetně parametrů doplňujících a uživatelsky definovaných. Významným způsobem tak zjednodušuje a centralizuje správu počítačové sítě (například při přidávání nových stanic, hromadné změně parametrů nebo pro skrytí technických detailů před uživateli). DHCP servery mohou být sdruženy do skupin, aby bylo přidělování adres odolné vůči výpadkům. Pokud klient některým parametrům nerozumí, ignoruje je.
Rozbor samotného DHCP protokolu je popsán v tomto článku DHCPd.
Konfigurace DHCP serveru
Toto je příklad konfigurace DHCP serveru na Debianu "Lenny"
Instalace balíčku
Nejdříve si stáhneme balíček s dhcp serverem, v debianu můžeme použít například balíček dhcp3-server.
debian2010:~# apt-get install dhcp3-server Reading package lists... Done Building dependency tree Reading state information... Done Suggested packages: dhcp3-server-ldap The following NEW packages will be installed: dhcp3-server 0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. Need to get 325kB of archives. After this operation, 750kB of additional disk space will be used. Get:1 http://debian.sh.cvut.cz lenny/main dhcp3-server 3.1.1-6+lenny4 [325kB] Fetched 325kB in 0s (1786kB/s) Preconfiguring packages ... Selecting previously deselected package dhcp3-server. (Reading database ... 54101 files and directories currently installed.) Unpacking dhcp3-server (from .../dhcp3-server_3.1.1-6+lenny4_sparc.deb) ... Processing triggers for man-db ... Setting up dhcp3-server (3.1.1-6+lenny4) ... Generating /etc/default/dhcp3-server... Starting DHCP server: dhcpd3check syslog for diagnostics. failed! failed! invoke-rc.d: initscript dhcp3-server, action "start" failed. debian2010:~#
Jak vidíme, start se nepodařil, serveru je nejdříve nutno poeditovat konfigurační soubor.
Během instalace vám ještě balíček v grafickém režimu oznámí, že v základu je dhcp server v neautoritativním režimu.
Konfigurační soubor, základy
Základními položkami konfiguračního souboru /etc/dhcp3/dhcpd.conf jsou doménové jméno, DNS, doba přidělení adresy, podsíť, adresy, které se budou přidělovat a síťová brána:
debian2010:~# cat /etc/dhcp3/dhcpd.conf option domain-name "debian2010.upceucebny.cz"; option domain-name-servers 10.0.3.34,10.0.3.70; default-lease-time 600; max-lease-time 7200; subnet 172.16.0.0 netmask 255.248.0.0 { range 172.16.0.100 172.16.0.200; option routers 172.16.0.1; }
Rozšíření o položky podsítě
Pokud chceme obhospodařovat více rozsahů, můžeme definovat kolik subnetů chceme Dhcp server může obslohovat více podsítí na více rozhraních. Jednotlivé podsítě se mohou lišit v dříve globálně definovaných položkách. Pokud chceme informace definovat přesněji můžeme přidat několik dalších položek, jako např. broadcast adresu, DNS apod. Pokud nějakou zásadní položku v konfiguraci podsítě vynecháme, bude použita položka globální.
debian2010:~# cat /etc/dhcp3/dhcpd.conf option domain-name "upceucebny.cz"; option domain-name-servers 10.0.3.34; default-lease-time 600; max-lease-time 7200; subnet 172.16.0.0 netmask 255.248.0.0 { range 172.16.0.100 172.16.0.200; option domain-name-servers 10.0.3.34,10.0.3.70; option domain-name "debian2010.upceucebny.cz"; option routers 172.16.0.1; option broadcast-address 172.23.255.255; default-lease-time 600; max-lease-time 36000; }
Statické přidělení adresy
Pokud chceme jednomu počítači přidělovat stále jednu a tutéž adresu, např. pokud tato adresa je svázána s přístupem k určitým jinak omezeným službám můžeme využít přidělení adresy podle MAC adresy počítače. Do /etc/dhcp3/dhcpd.conf stačí přidat:
subnet 172.16.0.0 netmask 255.248.0.0 { option routers 172.16.0.1; option broadcast-address 172.23.255.255; group { host locutus { hardware ethernet 00:26:2D:51:9C:F8; fixed-address 172.16.1.100; } } }
Běh serveru na eth1
Aby DHCP server běžel jen na eth1 je třeba editovat soubor /etc/default/dhcp3-server a do položky "INTERFACES" zapsat "eth1".
debian2010:~# cat /etc/default/dhcp3-server # Defaults for dhcp initscript # sourced by /etc/init.d/dhcp # installed at /etc/default/dhcp3-server by the maintainer scripts # This is a POSIX shell fragment # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACES="eth1" debian2010:~#
Popis položek konfiguračního souboru
option domain-name "doménové jméno"; option domain-name-servers DNS servery, více položek se odděluje čárkou; default-lease-time doba přiřazení IP, pokud si klient neřekne o konkrtétní dobu sám [s]; max-lease-time doba přiřazení IP, pokud si klient řekne o konkrtétní dobu sám, hodnota nepřesáhne toto nastavení [s]; range rozsah přiřazovaných adres, začátek rozsahu a konec rozsahu, oddělují se mezerou; option routers IP adresa routeru v dané sítí; option broadcast-address IP broadcast sítě; subnet adresa podsítě netmask maska podsítě { pokud chmeme definovat různé parametry pro různé podsítě } group pro zjednodušení a přehlednost zle definovat skupiny uživatelů { host název klienta s síti { hardware ethernet MAC adresa klienta v klasickém zápisu hexadecimální dvojčíslí oddělené dvojtečkou; fixed-address statická IP adresa klienta; } }
Nastavení ethernetu
Náš DHCP server má bežet na eth1, rozhraní bylo třeba nastavit IP, masku, bránu atd. V debianu se toto nastavení provádí v souboru /etc/network/interfaces.
debian2010:~# cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 10.94.2.85 netmask 255.255.0.0 network 10.94.0.0 broadcast 10.94.255.255 metric 0 gateway 10.94.0.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 10.0.3.34 dns-search upceldap.cz, upceucebny.cz # The secondary network interface for dhcp tests allow-hotplug eth1 iface eth1 inet static address 172.16.0.1 netmask 255.248.0.0 network 172.16.0.0 broadcast 172.23.255.255 metric 10 gateway 172.16.0.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 10.0.3.34 dns-search upceldap.cz, upceucebny.cz debian2010:~#
Bylo třeba také nastavit metriku, protože jinak celý server vzal jako default gateway sám sebe a protože není router, byl by odříznut od zbytku sítě.
Spuštění serveru
Při runlevelu 5 se server spouští při startu o to se již postaral instálator:
debian2010:~# ls -l /etc/rc5.d/ |grep dhcp lrwxrwxrwx 1 root root 22 Mar 23 12:13 S40dhcp3-server -> ../init.d/dhcp3-server debian2010:~#
Ruční spuštění můžeme provést:
/etc/init.d/dhcp3-server start
Případně další operace (start|stop|restart|force-reload|status)
Testování funkčnosti
Princip činnosti
Klient komunikuje na UDP portu 68, server naslouchá na UDP portu 67.
Po připojení do sítě klient vyšle broadcastem DHCPDISCOVER paket. Na ten odpoví DHCP server paketem DHCPOFFER s nabídkou IP adresy. Klient si z (teoreticky několika) nabídek vybere jednu IP adresu a o tu požádá paketem DHCPREQUEST. Server mu ji vzápětí potvrdí odpovědí DHCPACK.
Jakmile klient obdrží DHCPACK, může už IP adresu a ostatní nastavení používat.
Testování funkčnosti probíhalo formou připojení na eth1 serveru a zachytávání paketů pomocí aplikace Wireshark.
Test přidělení IP komukoli
No. Time Source Destination Prot. Info 4 4.005524 0.0.0.0 255.255.255.255 DHCP DHCP Discover - Transaction ID 0xad6c92eb 6 4.023803 172.16.0.1 172.16.0.100 DHCP DHCP Offer - Transaction ID 0xad6c92eb 7 4.024390 0.0.0.0 255.255.255.255 DHCP DHCP Request - Transaction ID 0xad6c92eb 8 4.027774 172.16.0.1 172.16.0.100 DHCP DHCP ACK - Transaction ID 0xad6c92eb 9 4.039043 Usi_e2:76:c4 Broadcast ARP Gratuitous ARP for 172.16.0.100 (Request) 29 11.641996 Usi_e2:76:c4 Broadcast ARP Who has 172.16.0.1? Tell 172.16.0.100 30 11.643579 SunMicro_6f:64:d1 Usi_e2:76:c4 ARP 172.16.0.1 is at 00:14:4f:6f:64:d1
Další zájemce:
No. Time Source Destination Prot. Info 3 2.245830 0.0.0.0 255.255.255.255 DHCP DHCP Discover - Transaction ID 0x17b646e9 5 2.956266 172.16.0.1 172.16.0.101 DHCP DHCP Offer - Transaction ID 0x17b646e9 6 2.956642 0.0.0.0 255.255.255.255 DHCP DHCP Request - Transaction ID 0x17b646e9 7 2.967902 172.16.0.1 172.16.0.101 DHCP DHCP ACK - Transaction ID 0x17b646e9 8 2.967902 00:00:00_aa:bb:cc Broadcast ARP Gratuitous ARP for 172.16.0.100 (Request) 10 2.968311 00:00:00_aa:bb:cc Broadcast ARP Who has 172.16.0.1? Tell 172.16.0.101 11 2.968479 SunMicro_6f:64:d1 00:00:00_aa:bb:cc ARP 172.16.0.1 is at 00:14:4f:6f:64:d1
atd...
Test přidělení IP staticky
No. Time Source Destination Prot. Info TADY NÁM CHYBÍ KUS MĚŘENÍ :((
TFTP server
Co je TFTP
Trivial File Transfer Protocol (TFTP) je velice jednoduchý protokol pro přenos souborů, obsahující jen základní funkce protokolu FTP. Jeho specifikace byla poprvé uveřejněna v roce 1980.
TFTP je určen pro přenos souborů v případech, kdy je běžný protokol FTP nevhodný pro svou komplikovanost. Typickým případem je bootování bezdiskových počítačů ze sítě (BOOTP), kdy se celý přenosový protokol musí vejít do omezeného množství paměti, která je k dispozici na bezdiskovém stroji.
Konfigurace TFTP serveru
Toto je příklad konfigurace DHCP serveru na Debianu "Lenny"
Instalace balíčku
Pro TFTP server sme si vybrali balíček atftpd. Tento TFTP server má jednu zvláštnost, neběží totiž nad inetd superdaemonem (v debianu se používá openbsd-inetd), ale samostatně, narozdíl od jiných TFTP serverů jako např. tftpd.
debian2010:/tftpboot# apt-get install atftpd Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: atftpd 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 58.7kB of archives. After this operation, 229kB of additional disk space will be used. Get:1 http://debian.sh.cvut.cz lenny/main atftpd 0.7.dfsg-6 [58.7kB] Fetched 58.7kB in 0s (792kB/s) Preconfiguring packages ... Selecting previously deselected package atftpd. (Reading database ... 59420 files and directories currently installed.) Unpacking atftpd (from .../atftpd_0.7.dfsg-6_sparc.deb) ... Processing triggers for man-db ... Setting up atftpd (0.7.dfsg-6) ... Starting Advanced TFTP server: atftpd. debian2010:/tftpboot#
Instalace je grafická, tam jen stačí odklikat ok.
Konfigurační soubor
O nastavení se postaráme v konfiguračním souboru /etc/default/atftpd.
debian2010:~# cat /etc/default/atftpd USE_INETD=false OPTIONS=" --daemon --port 69 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=7 --logfile /var/log/atftpd.log /tftpboot" debian2010:~#
Pro nás je hlavně důležité umístění logfile /var/log/atftpd.log a kořen FTFP serveru nastavený na /tftpboot. Pro prvotní debug se ještě může nastavit vyšší uroveň ukecanosti logu (verbose) hodnoty 0 až 7.
Testování TFTP serveru
Boot server
Co je Boot server
Boot server poskytuje možnost zavedení operačního systému ze sítě (Network booting). tato metoda zavádění systému se používá většinou pro routry a bezdiskové stanice a počítače spravované centrálně, jako např. v knihovnách či ve školách. Síťové zavádění je vhodné pro centralizovanou správu diskového prostoru, což může vést k velkému snížení nákladů na údržbu.
Používaný software se nahrává ze serveru po místní síti. U TCP/IP sítí se to děje většinou pomocí TFTP protokolu. Server, ze kterého se má software nahrát se většinou najde pomocí broadcastu nebo multicastu Bootstrap protokolu nebo pomocí DHCP requestu. Prvotní software většinou není celý obraz operačního systému, ale jen jeho část, dost schopná na to, aby mohla nastartovat operační systém, převzít kontrolu a pokračovat v bootování.
Konfigurace boot serveru
Instalace balíčku
Pro náš boot server jsme použili gPXE (Preboot Execution Environment), který se v debianu skrývá v balíčku s názvem syslinux-common.
debian2010:/# apt-get install syslinux-common Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: nscd Use 'apt-get autoremove' to remove them. The following NEW packages will be installed: syslinux-common 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 461kB of archives. After this operation, 926kB of additional disk space will be used. Get:1 http://debian.sh.cvut.cz lenny/main syslinux-common 2:3.71+dfsg-5 [461kB] Fetched 461kB in 0s (3350kB/s) Selecting previously deselected package syslinux-common. (Reading database ... 59494 files and directories currently installed.) Unpacking syslinux-common (from .../syslinux-common_2%3a3.71+dfsg-5_all.deb) ... Processing triggers for man-db ... Setting up syslinux-common (2:3.71+dfsg-5) ... debian2010:/#
Příprava souborů
Nejprve si vytvoříme adresáře /tftpboot/boot a tftpboot/pxelinux.cfg
mkdir -p /tftpboot/boot tftpboot/pxelinux.cfg
Adresáři /tftpboot, který je kořenem pro náš tftp server dáme plná práva
chmod 777 /tftpboot
Nyní zkopírujeme soubory z instalace syslinux do kořenového adresáře TFTP
cp -p /usr/lib/syslinux/pxelinux.0 /tftpboot cp -p /usr/lib/syslinux/menu.c32 /tftpboot cp -p /usr/lib/syslinux/memdisk /tftpboot/boot
Konfigurace DHCP pro boot server
Zavádění po síti je spojeno také s DHPC serverem, kterému musíme říct, že má přidělovat IP i stanici, která chce zavádět ze sítě, to provedeme přidáním následujících řádků do konfiguračního souboru DHCP serveru /etc/dhcp3/dhcpd.conf
allow booting; allow bootp; filename "/tftpboot/pxelinux.0"; next-server 172.16.0.1;
Testování boot serveru
Obrázek 1. Výběr bootovacího zařízení
Použité zdroje
[1] JAN ANDRÝSEK. DHCP a BOOTP [online]. [cit. 2010-04-13]. Dostupný z WWW: http://www.fi.muni.cz/~kas/p090/referaty/2001-podzim/dhcp.2.html
[2] WIKIPEDIE. Trivial File Transfer Protocol [online]. 2010 [cit. 2010-04-13]. Dostupný z WWW:http://cs.wikipedia.org/wiki/Trivial_File_Transfer_Protocol
[3] PAVEL JAROŠ. BOOTP (BOOTstrap Protocol) [online]. 2005 [cit. 2010-04-13]. Dostupný z WWW: http://www.kiv.zcu.cz/~ledvina/vyuka/PSI/Presentace/bootp-jaros.pdf
[4] LADISLAV TKÁČ. Bezdiskové stanice (BOOTP, DHCP, TFTP) [online]. [cit. 2010-04-13]. Dostupný z WWW: http://www.fi.muni.cz/~kas/p090/referaty/2009-jaro/st/dhcp.html
[5] CHRIS TILLMAN. Debian GNU/Linux — instalační příručka [online]. [cit. 2010-04-13]. Dostupný z WWW: http://ftp.cica.es/Guadalinex/mirror/debian/dists/testing/main/installer-sparc/20040801/doc/manual/cs/index.html