Teeme ise dünaamilise dns serveri (eeldab staatilise ip otsas olevat nimeserverit ja sinna ligipääsu).

Teeme ise dünaamilise dns serveri (eeldab staatilise ip otsas olevat nimeserverit ja sinna ligipääsu).

Kasutan dünaamilise ip aadressiga internetiühendust, ning ruuteri taga on mitu masinat, sh ka üks linux. Tekkis vajadus linux maailmale domeeni -na nähtavaks teha. Selleks siis hakkasin uurima kuidas seda teha ja allpool toodud süsteem sai käima aetud Kaups -i abil. Selleks peaks jooksma on primary nimeserveris kus domeeni kirje pesitseb, vähemalt BIND 9.2.0 või uuem. Seal masinas siis on vaja teha järgmist:

1) Minge kataloogi kus on nimeserveri tsoonid:

cd /var/named
2) Looge võtmed käsuga:

dnssec-keygen -a HMAC-MD5 -b 512 -n HOST test
(test on failinimi, mis võib olla suvaline).

Nüüd tekkis teil /var/named kataloogi kaks faili:
Ktest.+157+60944.key
Ktest.+157+60944.private

60944 on keyid, ehk unikaalne võtme id. Kasutades oma lemmikeditori vaadake faili Ktest.+157+60944.private selle sisu näiteks minul on:

Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: HT4TGJGmQo2OvqBw68F70o0ZqjULN5WEfVw4hluBdwqWHqjsx4+uw98zuhoktyoK/+40DObsVb74V6tOYjzYtA==

3) Avage oma lemmikeditoriga nimerserveri konfiguratsioonifail /etc/named.conf, ja lisage sinna:

a) Ülesse, ehk üldisesse:

key test {
  algorithm HMAC-MD5;          
    secret "HT4TGJGmQo2OvqBw68F70o0ZqjULN5WEfVw4hluBdwqWHqjsx4+uw98zuhoktyoK/+40DObsVb74V6tOYjzYtA==";
}; 
test on siis failinimi mille määrasite unikaalse võtme genereerimisel, secret sisu on seesama joru, mida nägite oma lemmikeditoriga faili Ktest.+157+60944.private sees, ehk kõik see joru, mis on seal Key:(tühik) järel. Pange tähele, et see joru peab olema jutumärkide sees.

b) Selle tsooni juurde, millele tahate teha dünaamilist host -i:

    allow-update {
    key tibu;
};
Ehk minul on näha kogu tsoon sellisena:

zone "linux.ee" IN {
    type master;
    file "linux.ee.zone";
    allow-update {
    key test;
};
};
Ja muidugi nüüd bind -le restart, RedHat -s käib see käsuga: /etc/rc.d/init./named restart

4) Selle masinaga on kõik, kuid enne lahkumist tuleks siirdada loodud failid:

Ktest.+157+60944.key
Ktest.+157+60944.private

masinasse, mis hakkab infot nimeserverile edastama. Minupuhul on see sisevõrgus olev linux, milles peab olema samuti installeeritud vähemalt BIND 9.2.0 või uuem.

5) Nüüd on vaja meil teada anda nimeserverile meie olemasolev ip. Kuna minu linux on sisevõrgus, siis ainus võimalus ip teadasaamiseks on seda väljast küsida, antud juhul kasutame www.linux.ee abi, milles jookseb lihtne php koodirida nimega ip.php, mis teatab meile ip aadressi, millelt tulles me seda php koodirida käivitame:

<?
$ip = getenv('REMOTE_ADDR');
echo ("$ip\n");
?&gt
Skript ise on tehtud minu oskuste järgi, seda saab kindlasti teha palju paremini:

# Minge kataloogi kuhu panete skripti:
cd /etc/ppp

### Skript algab ###

#!/bin/sh
# Salvestage skript näiteks /etc/ppp alla dynip nimelisena ja määrake, 
# et see oleks executable - chmod 755 ./dynip

# Aeg kaua nimserverid meie domeeni cachevad sekundites
TTL=180
# Nimeserveri ip aadress
SERVER=195.222.16.153
# Meie soovitud host koos domeeniga
DYNHOST=test.linux.ee
# Keyfile koos path -ga
KEYFILE=/var/named/Ktest.+157+60944.private

# Uurime milline on meie uus ip
wget -q -O - http://linux.ee/~kaups/ip.php > ./newip &&

# Uurime mida arvab olevat meie ip meie nimeserver
nslookup -silent -q=A $DYNHOST $SERVER | head -n 5 | tail -n 1 | awk '{print $2}' > ./oldip &&

# Debugimiseks kommenteeri välja
#echo "Uus ip"; cat ./newip
#echo "Vana ip";cat ./oldip

# Anname update -le ette uue ip aadressi
DYNIP=`cat ./newip`

# Vaatame kas ip on muutunud
if diff -q ./oldip ./newip ;
then

# Kustutame loodud failid
rm -f ./oldip
rm -f ./newip

exit
else

# Kui on muutnud, siis uuendame seda
/usr/bin/nsupdate -v -k $KEYFILE > /dev/null << EOF
server $SERVER
update delete $DYNHOST A
update add $DYNHOST $TTL A $DYNIP
send
EOF

#Nüüd kui kuna linux.ee on staatilise ip otsas, siis oli vaja teha vaid host test.linux.ee nsupdate kaudu muudetavaks. 
#Kui teil on vaja hallata kogu domeeni, siis peate kasutama ka järgmist skripti, ehk tekitame A kirje (siis lahendub ka linux.ee ip -ks)
#ja MX (kui soovite meiliserverit kasutada dynaamilise ip -ga) kirje:

# Meie soovitud A kirje
#DYNA=linux.ee.
#Meie soovitud MX kirje
#DYNMX=linux.ee
# Meie soovitud MX kirje prioriteet
#MXP=10

#/usr/bin/nsupdate -v -k $KEYFILE > /dev/null << EOF
#server $SERVER
#update delete $DYNA A
#update delete $DYNMX MX
#update add $DYNA $TTL IN A $DYNIP
#update add $DYNMX $TTL IN MX $MXP $DYNA
#send
#EOF

# Kustutame loodud failid
rm -f ./oldip
rm -f ./newip
fi

### Skript lõpeb ###
6) Määrake, et cron seda skripti iga 15 minuti tagant käivitaks, selleks lisame /etc/crontab -i (alati jälgi, et crontab -i viimne rida oleks newline):

*/15 * * * * root /etc/ppp/dynip >/dev/null 2>&1
Või siis kui teie masin ise teeb ka pppoe -d, ehk võtab ise lingi üles, pange näiteks /etc/ppp/ip-up lõppu (ehk alalti kui saadakse uus ip, lastakse ka koheselt skript käima:
/etc/ppp/dynip >/dev/null 2>&1
Kogu lugu.