家裡用的就沒特別去申請固定 IP ,然後種花電信又老奸巨猾, 100M 以上的故意不給請 PPPOE 配發的偽固定 IP。沒關係,沒做啥大事業,用 no-ip 搞定,結果沒想到第二天就 GG 了,根本就不知道配去哪根電線桿了,於是只好來自幹吧。
目標:client 可以透過 bind 的 dynamic update 機制自動向 dns server 更新自己的 ip 。
參考來源
做法:
Server:
pkg install bind910 mkdir -p /usr/local/etc/namedb/keys cd /usr/local/etc/namedb/keys 產生所需密鑰 dnssec-keygen -b 512 -a HMAC-SHA512 -v 2 -n HOST my.domain.vim /usr/local/etc/namedb/named.conf
key my.domain. { algorithm "HMAC-SHA512"; secret "COPY FROM PRIVATE KEY"; }; zone "my.domain" { type master; file "../dynamic/zone.fwd.my.domain"; also-notify { SLAVE_DNS_IP;}; allow-transfer { SLAVE_DNS_IP;}; allow-update{ key my.domain; }; };
Client:
pkg install bind-tools把 Server 產的 Key 想辦法(用SCP)送回 client
vim update.sh #!/bin/sh MYNS="host.my.domain" NSSERVER="ns.my.domain" KEY="KeyPATH.private" NOW_IP=`ifconfig tun0 | grep inet | cut -d ' ' -f 2`; OLD_IP=`nslookup -type=a $MYNS | tail -n 3 | grep Address | cut -d ' ' -f 2`; if [ $OLD_IP != $NOW_IP ] then echo "update IP: $NOW_IP to DDNS Server" echo "server $NSSERVER " >> /tmp/.ddns.$$ echo "update delete $MYNS. A " >> /tmp/.ddns.$$ echo "update add $MYNS. 30 A $NOW_IP" >> /tmp/.ddns.$$ echo "" >> /tmp/.ddns.$$ nsupdate -k $KEY < /tmp/.ddns.$$ rm /tmp/.ddns.$$ fi exit 0
然後 vim /etc/ppp/ppp.linkup
HiNET: !bg /PATH_TO_THE_SCRIPT/updatens.sh當中 HiNET 是 /etc/ppp/ppp.conf 裡面對應的 Label 搞定收工。
沒有留言:
張貼留言