Linux services: Porovnání verzí

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání
 
(Není zobrazeno 60 mezilehlých verzí od 2 dalších uživatelů.)
Řádek 1: Řádek 1:
'''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'''
 
 
 
 
== DHCP server ==
 
== DHCP server ==
 
=== Co je DHCP ===
 
=== Co je DHCP ===
Řádek 20: Řádek 8:
  
 
=== Konfigurace DHCP serveru ===
 
=== Konfigurace DHCP serveru ===
''Toto je příklad konfigurace DHCP serveru na Debianu "Lenny"''
 
  
 
==== Instalace balíčku ====
 
==== 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.
+
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
 
  debian2010:~# apt-get install dhcp3-server
Řádek 93: Řádek 80:
 
         group {
 
         group {
 
                 host locutus {
 
                 host locutus {
                         hardware ethernet 00:26:2D:51:9C:F8;
+
                         hardware ethernet 00:26:2D:xx:xx:xx;
 
                         fixed-address 172.16.1.100;
 
                         fixed-address 172.16.1.100;
 
                 }
 
                 }
Řádek 116: Řádek 103:
 
  '''option domain-name''' "''doménové jméno''"''';'''
 
  '''option domain-name''' "''doménové jméno''"''';'''
 
  '''option domain-name-servers''' ''DNS servery, více položek se odděluje čárkou''''';'''
 
  '''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]''''';'''
+
  '''default-lease-time''' ''doba přiřazení IP, pokud si klient neřekne o konkré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]''''';'''
+
  '''max-lease-time''' ''doba přiřazení IP, pokud si klient řekne o konkré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''''';'''
 
  '''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 routers''' ''IP adresa routeru v dané sítí''''';'''
 
  '''option broadcast-address''' ''IP broadcast sítě''''';'''
 
  '''option broadcast-address''' ''IP broadcast sítě''''';'''
 
  '''subnet''' ''adresa podsítě'' '''netmask''' ''maska podsítě'' '''{'''
 
  '''subnet''' ''adresa podsítě'' '''netmask''' ''maska podsítě'' '''{'''
    ''pokud chmeme definovat různé parametry pro různé podsítě''
+
        ''pokud chceme definovat různé parametry pro různé podsítě''
 
  '''}'''
 
  '''}'''
  '''group''' ''pro zjednodušení a přehlednost zle definovat skupiny uživatelů'' '''{'''  
+
  '''group''' ''pro zjednodušení a přehlednost lze definovat skupiny uživatelů'' '''{'''  
     '''host''' ''název klienta s síti'' '''{'''
+
     '''host''' ''název klienta v síti'' '''{'''
         '''hardware ethernet''' ''MAC adresa klienta v klasickém zápisu hexadecimální dvojčíslí oddělené dvojtečkou''''';'''
+
         '''hardware ethernet''' ''MAC adresa klienta v klasickém zápisu hexadecimální dvojčíslí  
 +
                          oddělené dvojtečkou''''';'''
 
         '''fixed-address''' ''statická IP adresa klienta''''';'''
 
         '''fixed-address''' ''statická IP adresa klienta''''';'''
 
     '''}'''
 
     '''}'''
 
  '''}'''
 
  '''}'''
 +
 
==== Nastavení ethernetu ====
 
==== 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'''.
+
Náš DHCP server má bežet na eth1, rozhraní bylo třeba nastavit IP, masku, bránu atd. Rozhraní eth0 je systémové, nastavené již při instalaci OS. V Debianu se toto nastavení provádí v souboru '''/etc/network/interfaces'''.
  
 
  debian2010:~# cat /etc/network/interfaces
 
  debian2010:~# cat /etc/network/interfaces
Řádek 168: Řádek 158:
  
 
=== Spuštění serveru ===
 
=== Spuštění serveru ===
Při runlevelu 5 se server spouští při startu o to se již postaral instálator:
+
Při spuštění systému se server spustí automaticky o to se již postaral instálator:
  
  debian2010:~# ls -l /etc/rc5.d/ |grep dhcp
+
  debian2010:~# ls -l /etc/rc2.d/ |grep dhcp
 
  lrwxrwxrwx 1 root root  22 Mar 23 12:13 S40dhcp3-server -> ../init.d/dhcp3-server
 
  lrwxrwxrwx 1 root root  22 Mar 23 12:13 S40dhcp3-server -> ../init.d/dhcp3-server
 
  debian2010:~#
 
  debian2010:~#
Řádek 218: Řádek 208:
  
 
  No. Time      Source              Destination      Prot. Info
 
  No. Time      Source              Destination      Prot. Info
  TADY NÁM CHYBÍ KUS MĚŘENÍ :((
+
  3  1.760509  0.0.0.0            255.255.255.255  DHCP  DHCP Discover - Transaction ID 0x32003b9d
 +
4  1.761440  172.16.0.1          172.16.1.100    DHCP  DHCP Offer    - Transaction ID 0x32003b9d
 +
5  1.761750  0.0.0.0            255.255.255.255  DHCP  DHCP Request  - Transaction ID 0x32003b9d
 +
6  1.762533  172.16.0.1          172.16.1.100    DHCP  DHCP ACK      - Transaction ID 0x32003b9d
 +
7  1.810393  Wistron_51:9c:f8    Broadcast        ARP  Gratuitous ARP for 172.16.1.100 (Request)
  
 
== TFTP server ==
 
== TFTP server ==
Řádek 227: Řádek 221:
  
 
=== Konfigurace TFTP serveru ===
 
=== Konfigurace TFTP serveru ===
''Toto je příklad konfigurace DHCP serveru na Debianu "Lenny"''
+
 
 
==== Instalace balíčku ====
 
==== 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.
+
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
 
  debian2010:/tftpboot# apt-get install atftpd
Řádek 274: Řádek 268:
  
 
=== Testování TFTP serveru ===
 
=== Testování TFTP serveru ===
 +
==== Stažení souboru ====
 +
V kořenu tftp serveru vytvoříme testovací soubor, dáme mu plná práva a naplníme ho náhodnými daty.
 +
touch /tftpboot/soubor_pro_cteni
 +
chmod 777 /tftpboot/soubor_pro_cteni
 +
cat /dev/random > /tftpboot/soubor_pro_cteni
 +
 +
Poté testovací soubor stačí stáhnout, pomocí příkazového řádku a tftp klienta ve win XP.
 +
C:\>tftp 172.16.0.1 GET soubor_pro_cteni
 +
Transfering file soubor_pro_cteni from server in ascii mode...
 +
Using blocksize = 512
 +
Using TFTP timeout = 10s
 +
Transfer size = 0 bytes
 +
File soubor_pro_cteni was transferred successfully.
 +
535 bytes transfered for 1 seconds, 535 bytes/second
 +
C:\>
 +
 +
==== Nahrání souboru ====
 +
Když chceme nějaký soubor na tftp nahrát soubor se stejným jménem musí už v kořenu serveru existovat a mít práva pro zápis. Vytvoříme tedy testovací soubor pro zápis.
 +
touch /tftpboot/soubor_pro_zapis
 +
chmod 777 /tftpboot/soubor_pro_zapis
 +
 +
Poté testovací soubor stačí vytvořit a nahrát na server, pomocí příkazového řádku a tftp klienta ve win XP.
 +
 +
C:\>echo test > soubor_pro_cteni
 +
C:\>tftp 172.16.0.1 GET soubor_pro_cteni
 +
Transfering file soubor_pro_cteni from server in ascii mode...
 +
Using blocksize = 512
 +
Using TFTP timeout = 10s
 +
Transfer size = 0 bytes
 +
File soubor_pro_cteni was transferred successfully.
 +
535 bytes transfered for 1 seconds, 535 bytes/second
 +
C:\>
  
 
== Boot server ==
 
== Boot server ==
 
=== Co je 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.
+
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í.
 
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í.
Řádek 284: Řádek 310:
  
 
==== Instalace balíčku ====
 
==== Instalace balíčku ====
Pro náš boot server jsme použili [http://en.wikipedia.org/wiki/GPXE gPXE] (Preboot Execution Environment), který se v debianu skrývá v balíčku s názvem '''syslinux-common'''.
+
Pro první test funkčnosti boot serveru jsme použili syslinux bootloader neboli zavaděč, který obsahuje každá bootovatelné floppy, CD nebo flash zařízení. V Debianu se syslinux skrývá v balíčku '''syslinux-common'''.
  
 
  debian2010:/# apt-get install syslinux-common
 
  debian2010:/# apt-get install syslinux-common
Řádek 307: Řádek 333:
 
  debian2010:/#
 
  debian2010:/#
  
==== Příprava souborů ====
+
==== Příprava souborů balíček syslinux ====
  
Nejprve si vytvoříme adresáře '''/tftpboot/boot''' a '''tftpboot/pxelinux.cfg'''
+
Nejprve si vytvoříme adresáře '''/tftpboot/boot''' a '''tftpboot/pxelinux.cfg'''.
 
  mkdir -p /tftpboot/boot 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
+
Adresáři '''/tftpboot''', který je kořenem pro náš tftp server dáme plná práva.
 
  chmod 777 /tftpboot
 
  chmod 777 /tftpboot
Nyní zkopírujeme soubory z instalace syslinux do kořenového adresáře TFTP  
+
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/pxelinux.0 /tftpboot
 
  cp -p /usr/lib/syslinux/menu.c32  /tftpboot
 
  cp -p /usr/lib/syslinux/menu.c32  /tftpboot
 
  cp -p /usr/lib/syslinux/memdisk    /tftpboot/boot
 
  cp -p /usr/lib/syslinux/memdisk    /tftpboot/boot
 +
 +
==== Příprava souborů  Slax liveCD ====
 +
Aby náš boot server skutečně něco uměl a mohlo se v něm něco užitečného spustit, vybrali jsme si liveCD distribuce Slax:
 +
 +
Stáhneme si Slax liveCD.
 +
debian2010:/tmp# wget http://nimue.fit.vutbr.cz/slax/SLAX-6.x/slax-6.1.2.iso
 +
--2010-04-19 21:26:38--  http://nimue.fit.vutbr.cz/slax/SLAX-6.x/slax-6.1.2.iso
 +
Resolving nimue.fit.vutbr.cz... 147.229.176.9
 +
Connecting to nimue.fit.vutbr.cz|147.229.176.9|:80... connected.
 +
HTTP request sent, awaiting response... 200 OK
 +
Length: 209762304 (200M) [application/octet-stream]
 +
Saving to: `slax-6.1.2.iso'
 +
100%[==============================================================================================================================>]
 +
209,762,304 8.87M/s  in 22s
 +
2010-04-19 21:27:01 (9.04 MB/s) - `slax-6.1.2.iso' saved [209762304/209762304]
 +
debian2010:/tmp#
 +
Vytvoříme složku do které připojíme obraz cd.
 +
debian2010:/tmp# mkdir /tmp/slaxlivecd
 +
Připojíme obraz cd.
 +
debian2010:/tmp# mount /tmp/slax-6.1.2.iso /tmp/slaxlivecd/ -v -o loop -t iso9660
 +
mount: going to use the loop device /dev/loop0
 +
/tmp/slax-6.1.2.iso on /tmp/slaxlivecd type iso9660 (rw,loop=/dev/loop0)
 +
debian2010:/tmp#
 +
Veškerý obsah liveCD zkopírujeme do kořenového adresáře tftp.
 +
debian2010:/tmp# cp -r /tmp/slaxlivecd/* /tftpboot/
 +
Soubor default pro tftpboot si půjčíme přímo ze Slax distribuce.
 +
debian2010:/tmp# cp -r /tmp/slaxlivecd/boot/pxelinux.cfg/default /tftpboot/pxelinux.cfg/
  
 
==== Konfigurace DHCP pro boot server ====
 
==== Konfigurace DHCP pro boot server ====
Zavádění po síti je spojeno také s DHPC serverem, kterému musíme říct, že 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'''
+
Zavádění po síti je spojeno také s DHPC serverem, kterému musíme říct, kde stanice, která chce zavádět ze sítě zvít zavaděč, to provedeme přidáním následujících řádků do konfiguračního souboru DHCP serveru '''/etc/dhcp3/dhcpd.conf'''.
  allow booting;
+
  filename "/tftpboot/pxelinux.0";   #cesta k souboru, který se má zavést
allow bootp;
+
 
  filename "/tftpboot/pxelinux.0";
+
==== Konfigurační soubor ====
  next-server 172.16.0.1;
+
Pro operační systém v našem boot serveru jsme zvolili Slax liveCD distribuci a použili jsme vestavěný konfigurační soubor z této distribuce.
 +
 
 +
  debian2010:~# cat /tftpboot/pxelinux.cfg/default
 +
PROMPT 0
 +
TIMEOUT 90
 +
DEFAULT /boot/vesamenu.c32
 +
LABEL xconf
 +
 
 +
MENU LABEL Slax Graphics mode (KDE)
 +
KERNEL /boot/vmlinuz
 +
APPEND initrd=/boot/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 changes=/slax/
 +
 
 +
LABEL memtest86
 +
MENU LABEL Run Memtest utility
 +
  KERNEL /boot/mt86p
 +
 
 +
Toto je jen ukázka, konfigurační soubor obsahuje mnoho položek , toto je jen příklad těch nejdůležitějších. Celý soubor: [http://asuei01.upceucebny.cz/~st11265/SlaxDefaultBoot.txt SlaxDefaultBoot].
 +
 
 +
Popis nejdůležitějších položek konfiguračního souboru:
 +
 
 +
'''DEFAULT''' Definuje soubor, který se má spustit jako první. V tomto případě tedy program,
 +
        který vygeneruje boot menu.
 +
'''MENU LABEL'''  Zde se vyplňuje název položky seznamu.
 +
'''KERNEL''' Zde se vkládá cesta k souboru, který se zavede při výběru položky menu.
 +
'''APPEND''' Zde se vkládá cesta k image souboru operačního systému: initrd=''cesta'',
 +
        může obsahovat další parametry jako nastavení ramdisku, cestu ke kořenu,
 +
        mod čtení nebo zápisu disku apod.
  
 
=== Testování boot serveru ===
 
=== Testování boot serveru ===
 +
Pro otestování boot serveru je možné použít jakékoliv PC, které má podporu bootování po síti.
 +
 +
Při spuštění klienského PC nabootujeme do boot menu, kde si vybereme bootovací zařízení (viz.Obrázek 1). 
 +
 +
[[Soubor:boot1.jpg]]
 +
 +
Obrázek 1. Výběr bootovacího zařízení
 +
 +
 +
Dále čekáme na přidělení IP adresy od serveru (viz.Obrázek 2).
 +
 +
[[Soubor:boot2a.jpg]]
 +
 +
Obrázek 2. Client čeká na přidělení IP adresy
 +
 +
 +
Po přidělení IP adresy nám naběhne bootovací Slax menu, které bylo na serveru nastaveno (viz.Obrázek 3).
 +
 +
[[Soubor:boot3a.png]]
 +
 +
Obrázek 3. Slax menu
 +
 +
==Seznam obrázků==
 +
Obrázek 1. Výběr bootovacího zařízení http://wiki.hkfree.org/Soubor:Boot1.jpg
 +
 +
Obrázek 2. Client čeká na přidělení IP adresy http://wiki.hkfree.org/Soubor:Boot2a.jpg
 +
 +
Obrázek 3. Slax menu http://wiki.hkfree.org/Soubor:Boot3a.png
  
 
==Použité zdroje==
 
==Použité zdroje==
Řádek 337: Řádek 444:
  
 
[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
 
[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
 +
 +
[6] WIKI.HKREE. ''DHCPd'' [online]. 2008 [cit. 2010-04-13]. Dostupný z WWW: http://wiki.hkfree.org/DHCPd
 +
 +
[7] WIKIPEDIA. ''Dynamic Host Configuration Protocol'' [online]. 2008 [cit. 2010-04-13]. Dostupný z WWW: http://cs.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol
 +
 +
[8] WIKIPEDIA. ''Network booting'' [online]. 2010 [cit. 2010-04-13]. Dostupný z WWW: http://en.wikipedia.org/wiki/Network_booting
 +
 +
[9] TERRY GLIEDT. ''PXE Boot - Boot Your Machine Over the Net'' [online]. 2009 [cit. 2010-04-13]. Dostupný z WWW: http://www.hps.com/~tpg/notebook/pxe.php
 +
 +
credits: Martin "Locutus" Šmejda, Michal Puhlovský

Aktuální verze z 4. 7. 2010, 21:01

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

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:xx:xx:xx;
                       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 konkrétní dobu sám [s];
max-lease-time doba přiřazení IP, pokud si klient řekne o konkré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 chceme definovat různé parametry pro různé podsítě
}
group pro zjednodušení a přehlednost lze definovat skupiny uživatelů { 
    host název klienta v 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. Rozhraní eth0 je systémové, nastavené již při instalaci OS. 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 spuštění systému se server spustí automaticky o to se již postaral instálator:

debian2010:~# ls -l /etc/rc2.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
3   1.760509   0.0.0.0             255.255.255.255  DHCP  DHCP Discover - Transaction ID 0x32003b9d
4   1.761440   172.16.0.1          172.16.1.100     DHCP  DHCP Offer    - Transaction ID 0x32003b9d
5   1.761750   0.0.0.0             255.255.255.255  DHCP  DHCP Request  - Transaction ID 0x32003b9d
6   1.762533   172.16.0.1          172.16.1.100     DHCP  DHCP ACK      - Transaction ID 0x32003b9d
7   1.810393   Wistron_51:9c:f8    Broadcast        ARP   Gratuitous ARP for 172.16.1.100 (Request)

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

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

Stažení souboru

V kořenu tftp serveru vytvoříme testovací soubor, dáme mu plná práva a naplníme ho náhodnými daty.

touch /tftpboot/soubor_pro_cteni
chmod 777 /tftpboot/soubor_pro_cteni
cat /dev/random > /tftpboot/soubor_pro_cteni

Poté testovací soubor stačí stáhnout, pomocí příkazového řádku a tftp klienta ve win XP.

C:\>tftp 172.16.0.1 GET soubor_pro_cteni
Transfering file soubor_pro_cteni from server in ascii mode...
Using blocksize = 512
Using TFTP timeout = 10s
Transfer size = 0 bytes
File soubor_pro_cteni was transferred successfully.
535 bytes transfered for 1 seconds, 535 bytes/second
C:\>

Nahrání souboru

Když chceme nějaký soubor na tftp nahrát soubor se stejným jménem musí už v kořenu serveru existovat a mít práva pro zápis. Vytvoříme tedy testovací soubor pro zápis.

touch /tftpboot/soubor_pro_zapis
chmod 777 /tftpboot/soubor_pro_zapis

Poté testovací soubor stačí vytvořit a nahrát na server, pomocí příkazového řádku a tftp klienta ve win XP.

C:\>echo test > soubor_pro_cteni
C:\>tftp 172.16.0.1 GET soubor_pro_cteni
Transfering file soubor_pro_cteni from server in ascii mode...
Using blocksize = 512
Using TFTP timeout = 10s
Transfer size = 0 bytes
File soubor_pro_cteni was transferred successfully.
535 bytes transfered for 1 seconds, 535 bytes/second
C:\>

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 první test funkčnosti boot serveru jsme použili syslinux bootloader neboli zavaděč, který obsahuje každá bootovatelné floppy, CD nebo flash zařízení. V Debianu se syslinux skrývá v balíčku 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ů balíček syslinux

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

Příprava souborů Slax liveCD

Aby náš boot server skutečně něco uměl a mohlo se v něm něco užitečného spustit, vybrali jsme si liveCD distribuce Slax:

Stáhneme si Slax liveCD.

debian2010:/tmp# wget http://nimue.fit.vutbr.cz/slax/SLAX-6.x/slax-6.1.2.iso
--2010-04-19 21:26:38--  http://nimue.fit.vutbr.cz/slax/SLAX-6.x/slax-6.1.2.iso
Resolving nimue.fit.vutbr.cz... 147.229.176.9
Connecting to nimue.fit.vutbr.cz|147.229.176.9|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 209762304 (200M) [application/octet-stream]
Saving to: `slax-6.1.2.iso'
100%[==============================================================================================================================>] 
209,762,304 8.87M/s   in 22s
2010-04-19 21:27:01 (9.04 MB/s) - `slax-6.1.2.iso' saved [209762304/209762304]
debian2010:/tmp#

Vytvoříme složku do které připojíme obraz cd.

debian2010:/tmp# mkdir /tmp/slaxlivecd

Připojíme obraz cd.

debian2010:/tmp# mount /tmp/slax-6.1.2.iso /tmp/slaxlivecd/ -v -o loop -t iso9660
mount: going to use the loop device /dev/loop0
/tmp/slax-6.1.2.iso on /tmp/slaxlivecd type iso9660 (rw,loop=/dev/loop0)
debian2010:/tmp#

Veškerý obsah liveCD zkopírujeme do kořenového adresáře tftp.

debian2010:/tmp# cp -r /tmp/slaxlivecd/* /tftpboot/

Soubor default pro tftpboot si půjčíme přímo ze Slax distribuce.

debian2010:/tmp# cp -r /tmp/slaxlivecd/boot/pxelinux.cfg/default /tftpboot/pxelinux.cfg/

Konfigurace DHCP pro boot server

Zavádění po síti je spojeno také s DHPC serverem, kterému musíme říct, kde má stanice, která chce zavádět ze sítě zvít zavaděč, to provedeme přidáním následujících řádků do konfiguračního souboru DHCP serveru /etc/dhcp3/dhcpd.conf.

filename "/tftpboot/pxelinux.0";   #cesta k souboru, který se má zavést

Konfigurační soubor

Pro operační systém v našem boot serveru jsme zvolili Slax liveCD distribuci a použili jsme vestavěný konfigurační soubor z této distribuce.

debian2010:~# cat /tftpboot/pxelinux.cfg/default
PROMPT 0
TIMEOUT 90
DEFAULT /boot/vesamenu.c32
LABEL xconf
MENU LABEL Slax Graphics mode (KDE)
KERNEL /boot/vmlinuz
APPEND initrd=/boot/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 changes=/slax/
LABEL memtest86
MENU LABEL Run Memtest utility
KERNEL /boot/mt86p

Toto je jen ukázka, konfigurační soubor obsahuje mnoho položek , toto je jen příklad těch nejdůležitějších. Celý soubor: SlaxDefaultBoot.

Popis nejdůležitějších položek konfiguračního souboru:

DEFAULT Definuje soubor, který se má spustit jako první. V tomto případě tedy program,
        který vygeneruje boot menu.
MENU LABEL  Zde se vyplňuje název položky seznamu.
KERNEL Zde se vkládá cesta k souboru, který se zavede při výběru položky menu.
APPEND Zde se vkládá cesta k image souboru operačního systému: initrd=cesta, 
       může obsahovat další parametry jako nastavení ramdisku, cestu ke kořenu, 
       mod čtení nebo zápisu disku apod.

Testování boot serveru

Pro otestování boot serveru je možné použít jakékoliv PC, které má podporu bootování po síti.

Při spuštění klienského PC nabootujeme do boot menu, kde si vybereme bootovací zařízení (viz.Obrázek 1).

Boot1.jpg

Obrázek 1. Výběr bootovacího zařízení


Dále čekáme na přidělení IP adresy od serveru (viz.Obrázek 2).

Boot2a.jpg

Obrázek 2. Client čeká na přidělení IP adresy


Po přidělení IP adresy nám naběhne bootovací Slax menu, které bylo na serveru nastaveno (viz.Obrázek 3).

Boot3a.png

Obrázek 3. Slax menu

Seznam obrázků

Obrázek 1. Výběr bootovacího zařízení http://wiki.hkfree.org/Soubor:Boot1.jpg

Obrázek 2. Client čeká na přidělení IP adresy http://wiki.hkfree.org/Soubor:Boot2a.jpg

Obrázek 3. Slax menu http://wiki.hkfree.org/Soubor:Boot3a.png

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

[6] WIKI.HKREE. DHCPd [online]. 2008 [cit. 2010-04-13]. Dostupný z WWW: http://wiki.hkfree.org/DHCPd

[7] WIKIPEDIA. Dynamic Host Configuration Protocol [online]. 2008 [cit. 2010-04-13]. Dostupný z WWW: http://cs.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol

[8] WIKIPEDIA. Network booting [online]. 2010 [cit. 2010-04-13]. Dostupný z WWW: http://en.wikipedia.org/wiki/Network_booting

[9] TERRY GLIEDT. PXE Boot - Boot Your Machine Over the Net [online]. 2009 [cit. 2010-04-13]. Dostupný z WWW: http://www.hps.com/~tpg/notebook/pxe.php

credits: Martin "Locutus" Šmejda, Michal Puhlovský