Kako narediti live boot z DHCP strežnikom.
Potrebujemo program VirtualBox ter naslednje 4 navidezne računalnike:
Naš cilj je, da računalnik BootableClient A preko DHCP strežnika pridobil IP naslov ter se zažene z datoteko A, ki se nahaja na simpleArbiterGW,če pa zaženemo računalnik BootableClient B pa si želimo, da ta preko DHCP strežnika pridobi IP naslov ter se zažene z nekim live ISO, ki se prav tako nahaja na simpleArbiterGW.
Prenesemo simpleArbiterGW.vdi ter zaženemo VirtualBox. Ko je datoteka prenesena v VirtualBoxu izberemo New ter v polje Name vpišemo simpleArbiterGW.Ustrezno nastavimo tudi Memory size (1gb pomnilnika nam bo zadostovalo). Spodaj izberemo še "Use an existing virtual hard drive file" ter izberemo naš simpleArbiterGW.vdi in pritisnimo Create.
Nato zaženemo virtualni računalnik simpleArbiterGW ter se z uporabniškim imenom "root" ter geslom "kaboom" vpišemo v naš sistem. Prvo računalnik od NAT-a, kateri je vgrajen v VirtualBox dobi nek naslov (v našem primeru 10.0.2.15).(Da to preverimo uporabimo ukaz ifconfig) Preko tega IP naslova in vmesnika eth0 smo povezani v internet.
Mi pa si želimo 2 omrežna vmesnika na tem računalniku! Enega bi radi imeli na NAT (tega že imamo) drugega pa na Internal Network,preko katerega bomo komunicirali z DHCP Strežnikom ter ostalimi računalniki, ki bodo v našem Internal Network-u. Nov omrežni vmesnik dodamo tako, da ugasnemo naš virtualni računalnik, ter v VirtualBoxu označimo naš virtualni računalnik in pritisnemo na Settings -> Network Adapter 1 imamo že nastavljeno na NAT, Adapter 2 pa nastavimo na Internal Network
Tako, zdaj imamo nastavljena 2 vmesnika!V VirtualBoxu lahko definiramo več Internal Networkov (notranjih omrežij) a za naše potrebe bo to dovolj. Shranimo nastavitve ter ponovno poženimo naš simpleArbiterGW. Zdaj moramo oba omrežna vmesnika nastaviti tako, da bosta imela nek naslov. Uredimo datoteko interfaces v imeniku /etc/network.
Za eth0 je poskrbel že DHCP strežnik, ki je vgrajen v VirtualBox (na eth0 je določil nek IP). Mi moramo nastaviti še drugi mrežni vmesnik. Kako se imenuje iz glave ne vemo zato s pomočjo ukaza ifconfig -a pogledamo.
Ugotovimo da je ime vmesnika eth1. Zdaj bi rad na eth1 nastavil en IP naslov. Lahko bi nastavil z ifconfig, a ko rebootaš računalnik se nastavitve ne ohranijo. To nebi radi! Pojdimo raje skonfigurirat nastavitve v /etc/network/interfaces Izmislimo si eno naključno lokalno omrežje oz naslov lokalnega omrežja ter nastavimo eth1.
Shranimo konfiguracijsko datoteko. Moj računalnik še nima IP-ja na eth1 zato uporabim ukaz ifup eth1
Sedaj uporabimo ukaz ifconfig, da vidimo če imamo slučajno ip na vmesniku eth1
Vidim, da ip imam. Super! Gremo postavit DHCP Server!
Prenesemo simpleArbiterDhcp.vdi ter zaženemo VirtualBox. Ko je datoteka prenesena v VirtualBoxu izberemo New ter v polje Name vpišemo DHCP Server.Ustrezno nastavimo tudi Memory size (1gb pomnilnika nam bo zadostovalo). Spodaj izberemo še "Use an existing virtual hard drive file" ter izberemo naš simpleArbiterDhcp in pritisnimo Create.
Ustrezno nastavimo tudi nastavitve mreže iz NAT na Internal Network
Nato zaženemo virtualni računalnik DHCP Server ter se z uporabniškim imenom "root" ter geslom "kaboom" vpišemo v naš sistem.
Sprva naš računalnik nima nobenega ip-ja saj mu ga nismo nastavili! Pojdimo skonfigurirat nastavitve v /etc/network/interfaces.Ampak kateri vmesnik sploh konfiguriramo? Z ukazom ifconfig -a ugotovimo da je to eth0.
Spet si izberemo nek svoj statičen ip naslov.
Shranimo konfiguracijsko datoteko. Moj računalnik še nima IP-ja na eth0 zato uporabim ukaz ifdown eth0 ter nato še ifup eth0
Sedaj uporabimo ukaz ifconfig, da vidimo če imamo slučajno ip na vmesniku eth0
Hura imamo! Namestimo naš DHCP strežnik z ukazom apt-get install isc-dhcp-server
Vidimo, da dobimo cel kup napak. Ampak zakaj? Zato, ker nimamo dostopa do interneta!
Vmesniku eth0 moramo seveda povedati Gateway. Naš Gateway bo seveda IP našega simpleArbiter navideznega računalnika. To naredimo s pomočjo ukaza route add default gw 192.168.251.1 eth0
Probajmo ping-ati Googlov DNS strežnik, da ugotovimo če imamo sedaj internet. To naredimo z ukazom ping 8.8.8.8.
Googlov DNS strežnik se odziva, super! Ampak apt-get install isc-dhcp-server še vedno ne moremo naložiti. Začasno dodajmo še en mrežni vmesnik ter ga nastavimo na NAT, nato bomo dobili dostop do interneta ter lahko namestimo naš DHCP strežnik. Nov omrežni vmesnik dodamo tako, da ugasnemo naš virtualni računalnik, ter v VirtualBoxu označimo naš virtualni računalnik in pritisnemo na Settings -> Network Adapter 1 imamo že nastavljeno na Internal Network, Adapter 2 pa nastavimo na NAT
Zaženemo naš DHCP Server in v /etc/network/interfaces začasno na koncu dodamo vrstico iface eth1 inet dhcp,datoteko shranimo ter poženemo ukaz ifup eth1.
Sedaj imamo dostop do interneta in lahko namestimo naš DHCP strežnik z ukazom apt-get install isc-dhcp-server install
Poglejmo kaj je v /var/log/syslog, to je datoteka kamor se shranjujejo sporočila kaj se dogaja v našem sistemu
Očitno moramo nastaviti dhcp strežnik ter mu povedati tudi kam naj posluša! Za nastavitve DHCP strežnika imamo /etc/dhcp/dhcpd.conf. Nastavimo jo! Prvo zakomentiramo option domain-name-servers zaradi tega da nebo napak da jih ne najde.
Nato skonfiguriramo dhcp strežnik, da bo serviral ip-je na nekem podomrežju. Dodamo naslednje zapise:
(subnet) Nastavimo podomrežje ter območje naslovov od koder naj jih DHCP strežnik dodeli, katero datoteko naj servira, poleg tega so eni PXE tako neumni, da če jim ti serviraš filename nevejo iz katerega serverja ga dobim, zato napišem še next-server (ip od koder serviram, v našem primeru simpleArbiter), nastavim tudi gateway kateri je v našem primeru tudi simpleArbiter.Ker bi radi, da v primeru zagona navideznega računalnika BootableClient B serviramo drugo datoteko, to naredimo tako da definiramo nek dodaten host na sledeč način:(host special) Pod hardware ethernet zapišemo MAC naslov našega BootableClient B katerega bo imel, dodelimo mu nek statičen ip naslov ter povemo še iz kje se naj datoteka live-ISO zažene.
Spremembe shranimo, ter ubijemo proces z imenom dnsmasq z ukazom kilall dnsmasq.
Sledi restart našega DHCP strežnika, da bo deloval z novimi nastavitvami, to naredimo z ukazom service isc-dhcp-server restartDHCP Strežnik je pripravljen! Pripravimo BootableClientA ter BootableClientB ter testirajmo!
Odpremo VirtualBox ter izberemo New in pod Name napišemo BootableClient A ter pod Hard drive izberemo Do not add a virtual hard drive (saj si želimo računalnik brez diska), in pritisnemo na gump Create, da se nam ustvari navidezni računalnik. Želimo, da bo računalnik priklopljen na Internal network zato označimo naš Bootable Client A ter pritisnimo na Settings->Network in prvi Adapter 1 spremenimo na Internal Network.
Želimo še, da se računalnik boot-a preko mreže, zato to nastavimo pod zavihkom System
tako, da pod Boot Order obkljukamo samo Network. Nastavitve shranimo z pritiskom na gumb OKPoženemo našega BootableClient-a A in odličnoo, dobi ip naslov s pomočjo DHCP strežnika in simpleArbiter mu servira točno to datoteko katero si želimo A.0
Odpremo VirtualBox ter izberemo New in pod Name napišemo BootableClient B ter pod Hard drive izberemo Do not add a virtual hard drive (saj si želimo računalnik brez diska), in pritisnemo na gump Create, da se nam ustvari navidezni računalnik. Želimo, da bo računalnik priklopljen na Internal network zato označimo naš Bootable Client B ter pritisnimo na Settings->Network in prvi Adapter 1 spremenimo na Internal Network. Poleg tega nastavimo še pod MAC Address takšen MAC naslov, kot ga imamo v nastavitvah DHCP strežnika (dhcpd.conf -> host special), saj želimo da bo ta naš računalnik izjema in bo ob zagonu dobil drugo datoteko kot ostali in sicer live-ISO
Želimo še, da se računalnik boot-a preko mreže, zato to nastavimo pod zavihkom System
tako, da pod Boot Order obkljukamo samo Network. Nastavitve shranimo z pritiskom na gumb OKPoženemo našega BootableClient-a A in odličnoo, dobi ip naslov s pomočjo DHCP strežnika in simpleArbiter mu servira točno to datoteko katero si želimo live-ISO
Na SimpleArbiter namestimo TFTP strežnik z ukazom apt-get install tftpd-hpa in spremenimo IP v "/etc/default/tftpd-hpa" pod TFTP_ADDRES na "192.168.251.1".
Nato z ukazom apt-get install syslinux namestimo syslinux in skopiramo zagonsko datoteko iz "/usr/lib/syslinux/pxelinux.0" na "/srv/tftp/A.0.
Namestimo še NFS server z ukazom "apt-get install nfs-kernel-server" in v "/etc/exports" dodamo lokacijo mape, kjer se nahaja naša zagonska datoteka A.0, ter omogočimo branje ("/srv/tftp * (ro)").
V imeniku /srv/tftp ustvarimo mapo "pxelinux.cfg" in v njej ustvarimo datoteko z imenom default. Vanjo vpišemo :
DEFAULT vesamenu.c32
PROMPT 0
MENU TITLE isc-dhcp-live
LABEL iso
menu label Run
kernel vmlinuz
APPEND boot=casper netboot=nfs nfsroot=192.168.251.1:/srv/tftp/boot/ initrd=initrd.gz