<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>Table of contents</h2> <ul> <li><a href="#namen">Purpose of this exercise</a></li> <li><a href="#navidezniRacunalniki">Virtual machines, needed for the purpose of exercise</a></li> <li><a href="#skicaPodomrezja">Schematics of our subnet</a></li> <li><a href="#simpleArbiterGW">Setting up simpleArbiterGW</a></li> <li><a href="#DHCP">Setting up DHCP Server</a></li> <li><a href="#clientA">Setting BootableClient A</a></li> <li><a href="#clientB">Setting up BootableClient B</a></li> </ul> <h2 id="namen">Purpose of this exercise</h2> <p>How to perform live boot using a DHCP server.</p> <h2 id="navidezniRacunalniki">Virtual machines needed to perform the task.</h2> <p>We need VirtualBox and the following 4 virtual machines: <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 (diskless machine)</li> <li>Bootable Client B (diskless machine)</li> </ul> </p> <h2 id="skicaPodomrezja">Schematics of our subnet</h2> <img style="width: 800px; height: 610px;" src="../images/01.png" alt="slika-01"></img> <p>Our goal is to make BootableClient A get it's IP through DHCP server and boot up using file A, which is located on simpleArbiterGW,</br>If we run BootableClient B machines, we would like it to retrieve it's IP through DHCP server and boot from some live ISO which is also located on SimpleArbiterGW. </p> <h2 id="simpleArbiterGW">Setting up <mark>simpleArbiterGW</mark></h2> <p>Download <a href="http://www.polz.si/media/uploads/kpov/virtualke/simpleArbiterGW.vdi">simpleArbiterGW.vdi</a> and then run VirtualBox. After the file is downloaded, choose the New option in VirtualBoxu and set simpleArbiterGW in the Name field.</br>Memory size, should be set accordingly (1gb will suffice). Then choose "Use an existing virtual hard drive file" and select simpleArbiterGW.vdi clicking Create.</p> </br> <img style="width: 800px; height: 464px;" src="../images/02.png" alt="slika-02"></img> <p>We start our virtual machines simpleArbiterGW using the following login credentials; username: "root", password: "kaboom".</br></br> At the start, the computer on NAt get's it's IP(in our case 10.0.2.15).</br>(to check this use<b>ifconfig</b>) We now use this address and eth0 interface to access the internet.<p> <img style="width: 800px; height: 384px;" src="../images/03.png" alt="slika-03"></img> <p>However, we would like this machine to have 2 interfaces! One on NAT(we already have this one), and the other one on Internal Network,</br>throuh which we will communicate wiht the DHCP Server and other machines on our Internal Network.</br></br> We add a new interface, by turning off the virtual machine, select our machine in VirtualBox and select računalnik, ter v VirtualBoxu <b>Settings -> Network</b></br> <b>Adapter</b> 1 is already set to NAT, we set <b>Adapter 2</b> to Internal Network</p> <img style="width: 800px; height: 137px;" src="../images/04.png" alt="slika-04"></img> <p>So, now we have two network interfaces!</br>In VirtuaBox we can define multiple Internal Networks, however, for our needs two will suffice. We save the settings and restart simpleArbiterGW.</br></br> What we must do now, is to assign both interfaces IP addresses. We do this by setting the<b>interfaces</b>file located at<b>/etc/network</b>.</p> <img style="width: 800px; height: 229px;" src="../images/05.png" alt="slika-05"></img> <p>Eth0 was already handled by and integrated DHCP, so eth0 had been assigned an IP).</br> We have to set up the other network interface. If we don't know it's name, we find it out using <b>ifconfig -a</b>.</p> <img style="width: 800px; height: 117px;" src="../images/06.png" alt="slika-06"></img> <p>We can conclude the interface names is set to Eth1. Now we would like to assign an IP naslov to Eth1.</br> Ifconfig could be used, but rebooting the machine would reset the settings. Which is not ideal :)</br> So configuring <b>/etc/network/interfaces would be a better idea.</b></br></br> Let's make up a random local network or a local area network or local area network address and assign it to eth1. </p> <img style="width: 800px; height: 296px;" src="../images/07.png" alt="slika-07"></img> <p>We save the config file. Our machine still has no IP on eth1 so we use the <b>ifup eth1</b> command</p> <img style="width: 800px; height: 23px;" src="../images/08.png" alt="slika-08"></img></br> <p>Now we use the <b>ifconfig</b> command, to see whether and ip is assigned to eth1 interface</p> <img style="width: 800px; height: 389px;" src="../images/09.png" alt="slika-09"></img> <p>We can see the IP is set. Now let's set up the DHCP Server!</p> <h2 id="DHCP">Setting up <mark>DHCP Server</mark></h2> <p>We download <a href="http://www.polz.si/media/uploads/kpov/virtualke/simpleArbiterDhcp.vdi">simpleArbiterDhcp.vdi</a> and start VirtualBox. After the file had been dowloaded we select New in VirtualBoxu and unde rthe Name tag write DHCP Server.</br>We set the Memory size accordingly(1gb of memory should be sufficient). We also select "Use an existing virtual hard drive file" and select the simpleArbiterDhcp and press Create.</p> </br> <img style="width: 800px; height: 464px;" src="../images/10.png" alt="slika-10"></img> <p>We run DHCP Server virtual machine and login using "root" ad username and "kaboom" as password.</br></br> <p>At first, our machine has no assigned IP, since none was set! Let+s configure it in <b>/etc/network/interfaces</b>.</br>But which interface should we configure? Using <b>ifconfig -a</b> command, we see it's <b>eth0</b>interface.<br> Again we select our IP address.</p> <img style="width: 800px; height: 283px;" src="../images/11.png" alt="slika-11"></img> <p>We save the configuration file. Our computer still has no IP address assigned to eth0, so using <b>ifdown eth0</b> and then <b>ifup eth0</b>we provide one.</p> <img style="width: 800px; height: 25px;" src="../images/12.png" alt="slika-12"></img> <p>Now let us use <b>ifconfig</b> command, to check whether there is an IP assigned to interface eth0</p> <img style="width: 800px; height: 329px;" src="../images/13.png" alt="slika-13"></img> <p>We got it! We install DHCP server using <b>apt-get install isc-dhcp-server</b></p> <img style="width: 800px; height: 322px;" src="../images/14.png" alt="slika-14"></img> <p>We see a bunch of errors. Why? Bacause, we have no internet access! <br> We need to specify the Gateway for our inteface. Our Gateway will be set as IP of our simpleArbiter virtual machine.</br> We do this using the<b>route add default gw 192.168.251.1 eth0</b> command</p> <img style="width: 800px; height: 43px;" src="../images/15.png" alt="slika-15"></img> <p>Try pinging Google's DNS server at 8.8.8.8, to check if now have internet access.</br> We do this using the <b>ping 8.8.8.8</b> command.</p> <img style="width: 800px; height: 361px;" src="../images/16.png" alt="slika-16"></img> <p>Google's DNS server is responding. Great! </br> However, we still cannot run <b>apt-get install isc-dhcp-server</b></br> Let's tempororly add another interface and set it to NAT, so we get internet access and install the DHCP server.</br></br> We add a new interface by turning off the virtual computer, in VirtualBox we select our virtual machine and then select <b>Settings -> Network</b></br> <b>Adapter 1</b> has already been set to Internal Network, we set <b>Adapter 2</b> to NAT</p> <img style="width: 800px; height: 134px;" src="../images/17.png" alt="slika-17"></img> <p>We run DHCP Server and in file<b>/etc/network/interfaces</b> at the end of the line add <b>iface eth1 inet dhcp</b>, then save the file and run <b>ifup eth1</b>.<br> Now we have access to the internet and can install our DHCP server with <b>apt-get install isc-dhcp-server install</b> command</br> <img style="width: 800px; height: 26px;" src="../images/18.png" alt="slika-18"></img></br> <p>Let's see what's in<b>/var/log/syslog</b>, which is a file where our system information is stored in.</p> <img style="width: 800px; height: 323px;" src="../images/19.png" alt="slika-19"></img></br> <p>Looks like we need to set up a DHCP server and specify where it should listen! </br> DHCP settings are stored in <b>/etc/dhcp/dhcpd.conf</b>. Let's set it! </br> First let's comment out <b>option domain-name-servers</b> to avoid having errors.</p> <img style="width: 800px; height: 26px;" src="../images/20.png" alt="slika-20"></img></br> <p>Then we configure DHCP server, so it would serve IPs a a certain subnet. We add the following lines:</p> <img style="width: 800px; height: 417px;" src="../images/21.png" alt="slika-21"></img> <p><b>(subnet)</b> We set the subnet and the IP range, which the DHCP server should use, and which file it should serve.</p>Some PXEs are so unintelligent, that you should specify where they should get the files from and to do that you specify next-server </br>(IP from which it will be served from, in our case simpleArbiter), we also specify gateway, which, in our case is also simpleArbiter.</br></br>Since we would like, that in the case of BootableClient B another file to be served, we do it by defining a special host like this:</br><b>(host special)</b> Under <b>hardware ethernet</b> we specifiy MAC address of our BootableClient B, we assign it a static ip and where the file <b>live-ISO</b> is located.</p> <p>We save the settings and kill the process named <b>dnsmasq</b>using<b>kilall dnsmasq</b>.</p> <img style="width: 740px; height: 34px;" src="../images/22.png" alt="slika-22"></img> <p>We restart our DHCP server, to apply the new settings. This is done using <b>service isc-dhcp-server restart</b></br> command. DHCP server is now ready! We supply BootableClientA and BootableClientB and test them!</p> <h2 id="clientA">Setting up <mark>BootableClient A</mark></h2> <p>We open VirtualBox and select <b>New</b>, for the <b>Name</b> field we specify BootableClient A and for the <b>Hard drive</b> we select <b>Do not add a virtual hard drive</b> (as we want diskless device), </br>and select Create. We want the computer to be on Internal network so vse select our <b>Bootable Client A</b> and select </br><b>Settings->Network</b> where we change Adapter 1 to Internal Network.</p> <img style="width: 800px; height: 678px;" src="../images/23.png" alt="slika-23"></img> <p>We also want our computer to boot through the network, so under<b>Boot Order</b>tab select <b>Network</b>.</br> We save the setting by clicking <b>OK</b></p> <img style="width: 800px; height: 697px;" src="../images/24.png" alt="slika-24"></img> <p>We run our BootableClient-a A and it get's it's IP(which is great), using the DHCP server and the simpleArbiter serves it exactly the file we specified. <b>A.0</b></p> <img style="width: 800px; height: 494px;" src="../images/25.png" alt="slika-25"></img> <h2 id="clientB">Setting up<mark>BootableClient B</mark></h2> <p>We open virtual box and select <b>New</b> and under the <b>Name</b> tag write BootableClient B and under the <b>Hard drive</b>tab choose <b>Do not add a virtual hard drive</b> (since we want a diskless machine), </br>and then press the Create button, which will create a virtual machine. We want our machine to be connected to out Internal network so we select <b>Bootable Client B</b> and then select </br><b>Settings->Network</b> and set the Adapter 1 to Internal Network.</br> Under <b>MAC Address</b> we specify the same MAC address that is specified in the (dhcpd.conf -> host special) file, since we want our machine to be an exception</br> and will be served a special file named<b>live-ISO</b></p> <img style="width: 800px; height: 678px;" src="../images/26.png" alt="slika-26"></img> <p>We want our machine to perform a netboot, so under the <b>System</b></p> <b>Boot Order</b> tag specify only <b>Network</b>.</br> We save the setting by clicking the <b>OK</b> button</p> <img style="width: 800px; height: 697px;" src="../images/27.png" alt="slika-27"></img> <p>We run our BootableClient-a A and it get's it's IP address using DHCP server and simpleArbiter serves it the file we selected called <b>live-ISO</b></p> <img style="width: 800px; height: 494px;" src="../images/28.png" alt="slika-28"></img> </body> </html>