summaryrefslogtreecommitdiff
path: root/kpov_judge/tasks/isc_dhcp_live_boot/howtos/si/index.html
blob: d83b93402bcb84b0545a87831fc968d25be7fe52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<html>
	<head>
		<meta charset="UTF-8">	
		<title>06 - preparation (isc_dhcp_live_boot)</title>
	</head>

	<body>
		<h1 style="color:blue">06 - preparation (isc_dhcp_live_boot)</h1>
		<h2>Kazalo</h2>
		<ul>
			<li><a href="#namen">Namen vaje</a></li>
			<li><a href="#navidezniRacunalniki">Navidezni računalniki, ki so potrebni za izvedbo naloge</a></li>
			<li><a href="#skicaPodomrezja">Skica našega podomrežja</a></li>
			<li><a href="#simpleArbiterGW">Postavitev simpleArbiterGW</a></li>
			<li><a href="#DHCP">Postavitev DHCP Server</a></li>
			<li><a href="#clientA">Postavitev BootableClient A</a></li>
			<li><a href="#clientB">Postavitev BootableClient B</a></li>
		</ul>


		<h2 id="namen">Namen vaje</h2>
		<p>Kako narediti live boot z DHCP strežnikom.</p>

		<h2 id="navidezniRacunalniki">Navidezni računalniki, ki so potrebni za izvedbo naloge</h2>
		<p>Potrebujemo program VirtualBox ter naslednje 4 navidezne računalnike:
			<ul>
				<li><a href="http://www.polz.si/media/uploads/kpov/virtualke/simpleArbiterGW.vdi">simpleArbiterGW</a></li>
				<li><a href="http://www.polz.si/media/uploads/kpov/virtualke/simpleArbiterDhcp.vdi">DHCP Server</a></li>
				<li>Bootable Client A (računalnik brez diska)</li>
				<li>Bootable Client B (računalnik brez diska)</li>
			</ul>
		</p>

		<h2 id="skicaPodomrezja">Skica našega podomrežja</h2>
		<img style="width: 800px; height: 610px;" src="../images/01.png" alt="slika-01"></img>
		<p>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,</br>č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.
	    </p>

	    <h2 id="simpleArbiterGW">Postavitev <mark>simpleArbiterGW</mark></h2>
	    <p>Prenesemo  <a href="http://www.polz.si/media/uploads/kpov/virtualke/simpleArbiterGW.vdi">simpleArbiterGW.vdi</a> ter zaženemo VirtualBox. Ko je datoteka prenesena v VirtualBoxu izberemo New ter v polje Name vpišemo simpleArbiterGW.</br>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.</p>
		</br>
	    <img style="width: 800px; height: 464px;" src="../images/02.png" alt="slika-02"></img>
	    <p>Nato zaženemo virtualni računalnik simpleArbiterGW ter se z uporabniškim imenom "root" ter geslom "kaboom" vpišemo v naš sistem.</br></br>
	    Prvo računalnik od NAT-a, kateri je vgrajen v VirtualBox dobi nek naslov (v našem primeru 10.0.2.15).</br>(Da to preverimo uporabimo ukaz <b>ifconfig</b>) Preko tega IP naslova in vmesnika eth0 smo povezani v internet.<p>
	    <img style="width: 800px; height: 384px;" src="../images/03.png" alt="slika-03"></img>
	    <p>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,</br>preko katerega bomo komunicirali z DHCP Strežnikom ter ostalimi računalniki, ki bodo v našem Internal Network-u.</br></br>
	    Nov omrežni vmesnik dodamo tako, da ugasnemo naš virtualni računalnik, ter v VirtualBoxu označimo naš virtualni računalnik in pritisnemo na <b>Settings -> Network</b></br>
	    <b>Adapter</b> 1 imamo že nastavljeno na NAT, <b>Adapter 2</b> pa nastavimo na Internal Network</p>
	    <img style="width: 800px; height: 137px;" src="../images/04.png" alt="slika-04"></img>
	    <p>Tako, zdaj imamo nastavljena 2 vmesnika!</br>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.</br></br>
	    Zdaj moramo oba omrežna vmesnika nastaviti tako, da bosta imela nek naslov. Uredimo datoteko <b>interfaces</b> v imeniku 
	    <b>/etc/network</b>.</p>
	    <img style="width: 800px; height: 229px;" src="../images/05.png" alt="slika-05"></img>
	    <p>Za eth0 je poskrbel že DHCP strežnik, ki je vgrajen v VirtualBox (na eth0 je določil nek IP).</br>
		Mi moramo nastaviti še drugi mrežni vmesnik. Kako se imenuje iz glave ne vemo zato s pomočjo ukaza <b>ifconfig -a</b> pogledamo.</p>
		<img style="width: 800px; height: 117px;" src="../images/06.png" alt="slika-06"></img>
		<p>Ugotovimo da je ime vmesnika eth1.
		Zdaj bi rad na eth1 nastavil en IP naslov.</br>
		Lahko bi nastavil z ifconfig, a ko rebootaš računalnik se nastavitve ne ohranijo. To nebi radi!</br>
		Pojdimo raje skonfigurirat nastavitve v <b>/etc/network/interfaces</b></br></br>
		Izmislimo si eno naključno lokalno omrežje oz naslov lokalnega omrežja ter nastavimo eth1.
		</p>
		<img style="width: 800px; height: 296px;" src="../images/07.png" alt="slika-07"></img>
		<p>Shranimo konfiguracijsko datoteko. Moj računalnik še nima IP-ja na eth1 zato uporabim ukaz <b>ifup eth1</b></p>
        <img style="width: 800px; height: 23px;" src="../images/08.png" alt="slika-08"></img></br>
        <p>Sedaj uporabimo ukaz <b>ifconfig</b>, da vidimo če imamo slučajno ip na vmesniku eth1</p>
        <img style="width: 800px; height: 389px;" src="../images/09.png" alt="slika-09"></img>
        <p>Vidim, da ip imam. Super! Gremo postavit DHCP Server!</p>

        <h2 id="DHCP">Postavitev <mark>DHCP Server</mark></h2>
	    <p>Prenesemo  <a href="http://www.polz.si/media/uploads/kpov/virtualke/simpleArbiterDhcp.vdi">simpleArbiterDhcp.vdi</a> ter zaženemo VirtualBox. Ko je datoteka prenesena v VirtualBoxu izberemo New ter v polje Name vpišemo DHCP Server.</br>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.<br>Ustrezno nastavimo tudi nastavitve mreže iz NAT na Internal Network</p>
		</br>
	    <img style="width: 800px; height: 464px;" src="../images/10.png" alt="slika-10"></img>
	    <p>Nato zaženemo virtualni računalnik DHCP Server ter se z uporabniškim imenom "root" ter geslom "kaboom" vpišemo v naš sistem.</br></br>
	    <p>Sprva naš računalnik nima nobenega ip-ja saj mu ga nismo nastavili! Pojdimo skonfigurirat nastavitve v <b>/etc/network/interfaces</b>.</br>Ampak kateri vmesnik sploh konfiguriramo? Z ukazom <b>ifconfig -a</b> ugotovimo da je to <b>eth0</b>.<br>
	    Spet si izberemo nek svoj statičen ip naslov.</p>
	    <img style="width: 800px; height: 283px;" src="../images/11.png" alt="slika-11"></img>
	    <p>Shranimo konfiguracijsko datoteko. Moj računalnik še nima IP-ja na eth0 zato uporabim ukaz <b>ifdown eth0</b> ter nato še <b>ifup eth0</b></p>
        <img style="width: 800px; height: 25px;" src="../images/12.png" alt="slika-12"></img>
        <p>Sedaj uporabimo ukaz <b>ifconfig</b>, da vidimo če imamo slučajno ip na vmesniku eth0</p>
        <img style="width: 800px; height: 329px;" src="../images/13.png" alt="slika-13"></img>
        <p>Hura imamo! Namestimo naš DHCP strežnik z ukazom <b>apt-get install isc-dhcp-server</b></p>
        <img style="width: 800px; height: 322px;" src="../images/14.png" alt="slika-14"></img>
        <p>Vidimo, da dobimo cel kup napak. Ampak zakaj? Zato, ker nimamo dostopa do interneta! <br>
        Vmesniku eth0 moramo seveda povedati Gateway. Naš Gateway bo seveda IP našega simpleArbiter navideznega računalnika.</br> To naredimo s pomočjo ukaza <b>route add default gw 192.168.251.1 eth0</b></p>
        <img style="width: 800px; height: 43px;" src="../images/15.png" alt="slika-15"></img>
        <p>Probajmo ping-ati Googlov DNS strežnik, da ugotovimo če imamo sedaj internet.</br>
        To naredimo z ukazom <b>ping 8.8.8.8</b>.</p>
        <img style="width: 800px; height: 361px;" src="../images/16.png" alt="slika-16"></img>
        <p>Googlov DNS strežnik se odziva, super! </br>
        Ampak <b>apt-get install isc-dhcp-server</b> še vedno ne moremo naložiti.</br>
    	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.</br></br>
    	Nov omrežni vmesnik dodamo tako, da ugasnemo naš virtualni računalnik, ter v VirtualBoxu označimo naš virtualni računalnik in pritisnemo na <b>Settings -> Network</b></br>
	    <b>Adapter 1</b> imamo že nastavljeno na Internal Network, <b>Adapter 2</b> pa nastavimo na NAT</p>
	    <img style="width: 800px; height: 134px;" src="../images/17.png" alt="slika-17"></img>
	    <p>Zaženemo naš DHCP Server in v  <b>/etc/network/interfaces</b> začasno na koncu dodamo vrstico <b>iface eth1 inet dhcp</b>,datoteko shranimo ter poženemo ukaz <b>ifup eth1</b>.<br>
	    Sedaj imamo dostop do interneta in lahko namestimo naš DHCP strežnik z ukazom <b>apt-get install isc-dhcp-server install</b></br>
	    <img style="width: 800px; height: 26px;" src="../images/18.png" alt="slika-18"></img></br>
	    <p>Poglejmo kaj je v <b>/var/log/syslog</b>, to je datoteka kamor se shranjujejo sporočila kaj se dogaja v našem sistemu</p>
	    <img style="width: 800px; height: 323px;" src="../images/19.png" alt="slika-19"></img></br>
	    <p>Očitno moramo nastaviti dhcp strežnik ter mu povedati tudi kam naj posluša! </br>
		Za nastavitve DHCP strežnika imamo <b>/etc/dhcp/dhcpd.conf</b>. Nastavimo jo! </br>
		Prvo zakomentiramo <b>option domain-name-servers</b> zaradi tega da nebo napak da jih ne najde.</p>
		<img style="width: 800px; height: 26px;" src="../images/20.png" alt="slika-20"></img></br>
		<p>Nato skonfiguriramo dhcp strežnik, da bo serviral ip-je na nekem podomrežju. Dodamo naslednje zapise:</p>
		<img style="width: 800px; height: 417px;" src="../images/21.png" alt="slika-21"></img>
		<p><b>(subnet)</b> Nastavimo podomrežje ter območje naslovov od koder naj jih DHCP strežnik dodeli, katero datoteko naj servira,</br> 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 </br>(ip od koder serviram, v našem primeru simpleArbiter), nastavim tudi gateway kateri je v našem primeru tudi simpleArbiter.</br></br>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:</br><b>(host special)</b> Pod <b>hardware ethernet</b> 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 <b>live-ISO</b> zažene.</p>
		<p>Spremembe shranimo, ter ubijemo proces z imenom <b>dnsmasq</b> z ukazom <b>kilall dnsmasq</b>.</p>
		<img style="width: 740px; height: 34px;" src="../images/22.png" alt="slika-22"></img>
		<p>Sledi restart našega DHCP strežnika, da bo deloval z novimi nastavitvami, to naredimo z ukazom <b>service isc-dhcp-server restart</b></br>DHCP Strežnik je pripravljen! Pripravimo BootableClientA ter BootableClientB ter testirajmo!</p>


		<h2 id="clientA">Postavitev <mark>BootableClient A</mark></h2>
		<p>Odpremo VirtualBox ter izberemo <b>New</b> in pod <b>Name</b> napišemo BootableClient A ter pod <b>Hard drive</b> izberemo <b>Do not add a virtual hard drive</b> (saj si želimo računalnik brez diska), </br>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š <b>Bootable Client A</b> ter pritisnimo na </br><b>Settings->Network</b> in prvi Adapter 1 spremenimo na Internal Network.</p>
		<img style="width: 800px; height: 678px;" src="../images/23.png" alt="slika-23"></img>
		<p>Želimo še, da se računalnik boot-a preko mreže, zato to nastavimo pod zavihkom <b>System</b></p> tako, da pod <b>Boot Order</b>  obkljukamo samo <b>Network</b>.</br>
		Nastavitve shranimo z pritiskom na gumb <b>OK</b></p>
		<img style="width: 800px; height: 697px;" src="../images/24.png" alt="slika-24"></img>
		<p>Pož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 <b>A.0</b></p> 
		<img style="width: 800px; height: 494px;" src="../images/25.png" alt="slika-25"></img>



		<h2 id="clientB">Postavitev <mark>BootableClient B</mark></h2>
		<p>Odpremo VirtualBox ter izberemo <b>New</b> in pod <b>Name</b> napišemo BootableClient B ter pod <b>Hard drive</b> izberemo <b>Do not add a virtual hard drive</b> (saj si želimo računalnik brez diska), </br>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š <b>Bootable Client B</b> ter pritisnimo na </br><b>Settings->Network</b> in prvi Adapter 1 spremenimo na Internal Network.</br>
		Poleg tega nastavimo še pod <b>MAC Address</b> 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</br> in bo ob zagonu dobil drugo datoteko kot ostali in sicer <b>live-ISO</b></p>
		<img style="width: 800px; height: 678px;" src="../images/26.png" alt="slika-26"></img>
		<p>Želimo še, da se računalnik boot-a preko mreže, zato to nastavimo pod zavihkom <b>System</b></p> tako, da pod <b>Boot Order</b>  obkljukamo samo <b>Network</b>.</br>
		Nastavitve shranimo z pritiskom na gumb <b>OK</b></p>
		<img style="width: 800px; height: 697px;" src="../images/27.png" alt="slika-27"></img>
		<p>Pož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 <b>live-ISO</b></p> 
		<img style="width: 800px; height: 494px;" src="../images/28.png" alt="slika-28"></img>
<h2 id="tftpInPxe">Postavitev <mark>TFTP strežnika in zagonskih datotek</mark></h2>
	
<p>Na SimpleArbiter namestimo TFTP strežnik z ukazom <b>apt-get install tftpd-hpa</b> in spremenimo IP v <b>"/etc/default/tftpd-hpa"</b> pod TFTP_ADDRES na "192.168.251.1".
<br>Nato z ukazom <b>apt-get install syslinux</b> namestimo syslinux in skopiramo zagonsko datoteko iz "/usr/lib/syslinux/pxelinux.0" na "/srv/tftp/A.0.<br> 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)").
<br>V imeniku /srv/tftp ustvarimo mapo "pxelinux.cfg" in v njej ustvarimo datoteko z imenom default. Vanjo vpišemo :
<br>DEFAULT vesamenu.c32
<br>PROMPT 0
<br>MENU TITLE isc-dhcp-live
<br>LABEL iso
<br> menu label Run
<br> kernel vmlinuz
<br> APPEND boot=casper netboot=nfs nfsroot=192.168.251.1:/srv/tftp/boot/ initrd=initrd.gz</p>
	</body>
</html>