Tecnologie |
Dettaglio dell'articolo:
domenica 28 gennaio 2007
Aggiornamento dinamico delle tabelle DNS
Supponiamo che il nostro client sia www.foo.bar ed il nostro server DNS
sia dns.foo.bar (server autoritativo per la zona foo.bar)
Abiamo già detto che il nostro host www.foo.bar è connesso ad Internet tramite l'interfaccia eth0 Per leggere l'indirizzo IP assegnato si utilizza il comando: [root@www.foo.bar ~]# ip addr show dev eth0 2: eth0: link/ether 00:b0:d0:9a:0a:e8 brd ff:ff:ff:ff:ff:ff inet 172.20.20.25/16 brd 172.20.255.255 scope global eth0 inet6 fe80::2b0:d0ff:fe9a:ae8/64 scope link valid_lft forever preferred_lft forever per estrarre l'indirizzo IP dall'output riportato qui sopra utilizziamo i comandi grep e sed Isoliamo la riga contenente l'IP address [root@www.foo.bar ~]# /sbin/ip addr show dev eth0 |grep "global eth0" inet 172.20.83.7/16 brd 172.20.255.255 scope global eth0 [root@www.foo.bar ~]# eliminiamo i caratteri presenti prima dell'indirizzo IP [root@www.foo.bar ~]# ip addr show dev eth0 |grep "global eth0" |sed 's/^.*inet //' 172.20.20.25/16 brd 172.20.255.255 scope global eth0 [root@www.foo.bar ~]# A questo punto dobbiamo togliere tutti i caratteri successivi all'indirizzo IP. Il comando completo è: [root@www.foo.bar ~]# ip addr show dev eth0 |grep "global eth0" |sed 's/^.*inet //' | sed 's/\/.*$//' 172.20.20.25 [root@www.foo.bar ~]# Creiamo uno script getip contenente il comando visto sopra. # getip #!/bin/sh INTERFACE=$1 if [ -z $1 ]; then echo "Uso: getip nominterfaccia (es.: getip eth0)" else /sbin/ip addr show dev $INTERFACE |grep "global "$INTERFACE |sed 's/^.*inet //' | sed 's/\/.*$//' fi 2. Creiamo la chiave che il client ed il server utilizzeranno per instaurare la comunicazione e criptare i dati scambiati Sul client eseguiamo il seguente comando client# dnssec-keygen -a HMAC-MD5 -b 256 -n HOST www Il comando genera 2 files denominati Kwww.+157+xxx.key Kwww.+157+xxx.private dove xxx è un numero random NB: Entrambi i files devono essere presenti affinché nsupdate funzioni correttamente Il contenuto del file .private è del tipo Private-key-format: v1.2 Algorithm: 157 (HMAC_MD5) Key: hqqs3zNW7dRTW1lBepI5vESLsGBDJTH5h30eqNNnjcs= Sul DNS server bisogna creare un file contenente la chiave. file /etc/nomechiave.key key "nomechiave" { algorithm hmac-md5; secret "shared secret contenuta nel file Knomechiave+157+xxx.key"; }; e modificare il file /etc/named.conf aggiungendo nella sezione relativa alla zona interessata la direttiva allow-update e, alla fine, l'inclusione del file contenente la chiave file /etc/named.conf zone "foo.bar" in { type master; file "db.foo.bar"; allow-transfer { 50.60.70.80; }; allow-update { key www; }; }; include "/etc/www.key"; 3. Per aggiornare l'indirizzo IP del nostro client si usa il comando nsupdate [root@www.foo.bar ~]# nsupdate -k Knomechiave.+157+xxx.key -d upns dove upns è un file contenente le seguanti righe /root/upns server dns.foo.bar zone foo.bar update delete www.foo.bar A update add www.foo.bar 600 A 172.20.20.25 send Creiamo script.sh e inseriamo i comandi per la lettura dell'indirizzo IP e la connessione criptata con il server DNS. /root/script.sh #!bin/sh cd /root IP=`./getip eth0` if [ -n $IP ]; then sed 's/600 A.*$/600 A '$IP'/' upns > upns.new mv upns upns.old mv upns.new upns /usr/bin/nsupdate -k Kwww.+157+xxx.key -d upns fi 4. Facciamo eseguire il nostro script ogni 10 minuti [root@www.foo.bar ~]# crontab -e 5,15,25,35,45,55 * * * * /root/script.sh > /dev/null 2>&1 Scrivi un commento:
|
|
||||||||||||||
Inviato da: flashboss il: 2007-04-19 22:38:05.255