DNS & DHCP
Linux (A275022)
Ari Hamara,
Pekka Vilpponen
OH3
7.11.2005
DHCP & DNS Ari Hamara, Pekka Vilpponen
OH3
2/5
DHCP (Dynamic Host Configuration Protocol)
DHCP:n kehitti Internet Engineering Task Forcen (IETF, vapaaehtoisjärjestö joka
kehittää protokollia internet-käyttöön) työryhmä vuonna 1993. DHCP:n tarkoitus on
mahdollistaa verkon yksittäisten työasemien verkkoasetusten haku serveriltä tai
servereiltä, joilla ei ole tarkkaa informaatiota yksittäisestä työasemasta kunnes ne
pyytävät näiltä tiedot. Tällä vähennetään huomattavasti työtä joka muutoin kuluisi
suuren verkon hallitsemisessa. Aikaa veisi jokaisen koneen osoitteiden laittaminen. ja
jos vaikka DNS-serverin osoite muuttuisi, niin kaikkien koneiden asetukset täytyisi
muuttaa. Tärkein informaation osa joka jaetaan näin, on IP-osoite ja DNS-palvelimen
osoite.
Miten DHCP eroaa BOOTP:stä ja RARP:ista? DHCP pohjautuu BOOTP:hen ja on
jonkin verran alaspäin yhteensopiva protokolla. Suurimpana erona on että BOOTP
suunniteltiin käyttämään työasemien manuaalista esikonfigurointia jota säilytettiin
serverin tietokannassa, kun taas DHCP mahdollistaa täysin dynaamisen IP-osoitteen
ja asetusten antamisen saman tien kun verkkoon liitetään työasema. RARP taas
mahdollistaa ainoastaan työaseman löytämään itselleen IP-osoitteen muttei tue muita
asetuksia. Lisäksi RARP-serveri pystyy hallitsemaan ainoastaan yhtä lähiverkkoa.
DHCP voi toimia viidakon lakien tavoin niin, että aina jokainen kone ottaa seuraavan
vapaan IP:n, jolloin koneilla olisi mitä suuremmalla todennäköisyydellä eri IP, kun se
hakee asetukset uudestaan, ainakin jos verkko on iso. Jos väliaika dhcp:stä
irtikytkeytymisestä ja seuraavan kerran kirjautumisesta on pitkä. Palvelimilla on niin
sanottu ”lease time”, jonka aikana palvelin ei anna ip-osoitteita kellekkään muulle
vaan kone saa tämän saman ip:n uudestaan jos vaan tulee lease time:n sisällä takaisin.
Tätä varten DHCP-palvelinten asetuksiin voidaan määrätä, että minkä osoitteen
mikäkin verkkokortti saa. Kortit tunnistetaan tällöin mac-osotteiden perusteella.
Tässä on tietenkin ongelmana se, että koneiden mac-osoitteet täytyy tietää ennen kuin
näin voidaan tehdä. Jos joku haluaa päästä verkkoon, jolla ei ole omaa mac-osoitetta
voi hän sen väärentää hyvinkin helposti.
DHCP palvelin Linuxissa
Esimerkkinä käytämme DHCPd-nimistä ohjelmaa. Kernelin täytyy tukea
multicastigia. Lisäksi siihen täytyy lisätä osoite 255.255.255.255 sisäverkon
broadcast-osoitteisiin. Palvelun asetukset määritellään tiedostossa /etc/dhcpd.conf.
2
DHCP & DNS Ari Hamara, Pekka Vilpponen
OH3
3/5
Asetuksista voidaan määritellä esimerkiksi lease-ajat, mille koneille annetaan
osoitteet dynaamisesti ja mille staattisesti. WINS-serveri voidaan antaa ja DNS
serveri voidaan määritellä. Serveri pystyy ottamaan vastaan BOOTP:n asiakkaita ja
se voi toimia myös NIS:n kanssa yhteistyössä.
Alla on esimerkki asetuksista, jotka voitaisiin antaa DHCP-serverille. Esimerkin
asetukset antavat clientille satunnaisen IP-osoitteen väliltä 192.168.1.10 -
192.168.1.100 tai 192.168.1.150 - 192.168.1.200. Serveri “liisaa” IP-osoitteen 600
sekunniksi, ellei käyttäjä erikseen pyydä tiettyä aikaa. Tällöin maksimi on asetuksissa
annettu 7200 sekuntia. Serveri antaa myös aliverkonmaskin 255.255.255.0,
broadcast-osoitteen 192.168.1.255, osoitteen 192.168.1.254 routeriksi/gatewayksi ja
osoitteet 192.168.1.1 ja 192.168.1.2 DNS-servereiksi.
# Sample /etc/dhcpd.conf
# (add your comments here)
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.org";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}
Kun nämä asetukset on luotu voitaisiin DHCP-serveri käynnistää. Esimerkin
asetusten lisäksi voitaisiin vielä määritellä WINS-serverin osoite Windows-käyttäjille
tai antaa käyttäjille tiettyjä IP-osoitteita MAC-osoitteiden perusteella.
3
DHCP & DNS Ari Hamara, Pekka Vilpponen
OH3
4/5
DNS
Taustaa
DNS on lyhenne sanoista Domain Name System ja sen tarkoituksena on muuttaa
vaikeasti muistettavat ip-osoitteet helpommin muistettavaksi osoitteiksi, kuten
esimerkiksi 193.167.57.11 osoitteeksi www.kyamk.fi. Tämä toimii myös toisin päin
eli voidaan muuttaa nimestä ip-osoitteeksi. Tätä kutsutaan ”reverse mapping”:ksi.
DNS toimii yhtä hyvin niin kotiverkosta internetiin, tosin näiden toteuttamistavoissa
on suuria eroja. Yksinkertaisimmillaan voidaan toteuttaa niin, että käytettävällä
koneella on tekstitiedosto, jossa lukee ip ja nimi peräkkäin. Vaikeampaa päätä
edustaa monitasoinen palvelin järjestelmä, jollainen on käytössä internetissä.
Palvelinpohjainen ratkaisu
Yleisin tapa mihin normaalikäyttäjä törmää käyttäessään DNS:ää on se, että hän saa
DNS palvelimelta aina osoitetta vastaavan ip-osoitteen tai toisinpäin. Tämä on
yleensä siis aika läpinäkyvää käyttäjälle, niin kuin sen pitääkin olla. Palvelimen
osoite saadaan joko dhcp:n kautta tai sitten se syötetään käsin koneen
verkkoasetuksiin.
Internetin alussa kaikki koneet aina hakivat HOSTS.TXT:n tietystä osoitteesta. Tämä
systeemi ei tietenkään toimi kovin hyvin isoilla määrillä koneita, koska, kun jonkun
koneen ip muuttui tai se muutti nimeään, niin kaikkien nimitiedosto oli vanhentui ja
se olisi päivitettävä jokaisesta koneesta. Tämän takia kehitettiin paremmin
skaalautuva
systeemi jossa koneet muuttivat nimitiedostojaan dynaamisesti toisten muuttuessa.
Tätä oikeastaan voidaan kutsua vasta DNS:ksi ja sen kehitti Paul Mockapetris vuonna
1983.
Koska nimiä voi olla valtava määrä kuten internetissä, olisi liki mahdotonta, että yksi
kone pitäisi selvillä kaikkia osoitteita. Siksi DNS on puurakenteinen eli otetaan
esimerkiksi www.kyamk.fi, jossa haetaan ensin internetin juuripalvelimilta tiedot
siitä mistä löytyy .fi domainit, jonka jälkeen kyseinen palvelin ohjaa kyselyn
kyamk.fi:lle, joka sitten kertoo mistä löytyy www.kyamk.fi. Alidomaineita voi olla
maksimissaan 127 ja jokaisen pituus voi olla maksimissaan 63 merkkiä pitkä,
kuitenkin niin, että koko merkkijonon pituus ei saa ylittää 255 merkkiä. Reverse
mapping toimii jotakuinkin samalla tavalla, sillä tietyt ip-avaruudet on jaettu tietyille
4
DHCP & DNS Ari Hamara, Pekka Vilpponen
OH3
5/5
palveluntarjoajille. Jos jokainen ip-osoite haettaisiin jok’ikinen kerta tämän
proseduurin avulla, niin se olisi tosi hidasta, koska kyselyjä tulee valtavasti ja usein
samoihin osoitteisiin. Siksi palvelimet pistävät välimuistiin eli cacheen muistiin ip:n
tietyksi ajaksi.
DNS palvelin Linuxissa.
Linuxissa eräs tapa toteuttaa DNS-palvelin ratkaisu named nimisellä ohjelmalla.
Tämän saa kätevästi ISC BIND:n mukana, joka on Berkleyn yliopiston kasaama
paketti oman domainin tarvittavista ohjelmista ja kirjastoista.
Tiedostoon /etc/named.conf määritetään hakemisto, jossa named toimii ja mitä ip:tä
se kuuntelee kuten vaikka 192.168.1.1. Zone kenttiin pistetään tieto siitä mistä
tiedostoista löytyy tietoa mistäkin osoitteista tai osoiteavaruuksista. Siinä myös
asetetaan tyyppi hint tai master. Hint-tyyppi merkkaa sitä, että tietoja kysytään jostain
muualta kuin omalta palvelimelta ja master-tyypillä hallinnoidaan itse domainia.
Jos zone on meillä esimerkiksi kyamk.fi, niin sen tiedostosta voisi löytyä vaikka
www:lle oma ip, tai ftp:lle. Eli silloin www.kyamk.fi tai ftp.kyamk.fi ohjautuisivat
niille ip:lle mille haluamme.
Reverse mapping toimii niin, että Zone nimi on esimerkiksi 0.0.127.in-addr.arpa
jolloin saamme asetettua nimet 127.0.0.* ryhmälle.
Asetuksista voidaan myös laittaa estot, että vaan tietyt ip:t saavat tiettyjä dns-tietoja.
http://www.dhcp-handbook.com
http://langfeldt.net/DNS-HOWTO/BIND-8/
http://www.linux.com/howtos/DNS-HOWTO.shtml
http://en.wikipedia.org/wiki/Dns/
http://www.tldp.org/HOWTO/DHCP/
5