ddns update

原本網名叫 me.idv.tw 想在上面加上 test 開頭 test.me.idv.tw

##1.產生Key
### dnssec-keygen -a HMAC-MD5 -b 512 -n HOST test
#ktest.++157+44587
#
#產生 Ktest.+157+44587.key
# Ktest.+157+44587.private
# cat Ktest.+157+44587.key
# test. IN KEY 512 3 157 BJ7y6dzxchy3u0B4hRLksQ==
#記下 "BJ7y6dzxchy3u0B4hRLksQ==" 這組KEY,丟到 自架dnserver
PS: 新版本 dnssec-keygen 已不支援 HMAC-MD5
流程: apt install bind9 rsyslog

1.
dnssec-keygen -a HMAC-MD5 test >test_key

2. 編輯/etc/named.conf (原本網域名叫 test.)
在原本zone 上 加入
——————————/etc/name.conf—————————–
key "test" {
algorithm hmac-md5;
secret "BJ7y6dzxchy3u0B4hRLksQ==";
};
zone
zone "me.idv.tw" {
type master;
file "me.idv.tw.host";

update-policy {
grant test name test.me.idv.tw. A;
// test key 僅允許更新 test.me.idv.tw 的 A record.
};
};
—– End of File ———-
重新Restart named
#service named restart

3.用nsupdate 上傳test
$ nsupdate -k Ktest.+157+44587.key
> server me.idv.tw // 指定 DNS server
> update delete test.me.idv.tw A // 先刪除舊dns
> update add test.me.idv.tw 0 A 1.1.1.1 // 再新增dns
> send // 送出到 Primary DNS
$ // Ctrl-C or Ctrl-D 離開
可以用dig @me.idv.tw test.me.idv.tw 看有沒有ip

如果沒有成功,請先 tail -f /var/log/message 錯誤訊息
大部分是key權限 ,或 /var/named 底下權限
—————————————————————-
4. 接下來 routeros 上傳
官方這邊有指令可以先測試
/tool dns-update dns-server=1.1.1.254 name=test zone=me.id
v.tw address=1.1.1.1 key-name=test key="BJ7y6dzxchy3u0B4hRLksQ=="

http://wiki.mikrotik.com/wiki/Manual:Tools/Dynamic_DNS

底下是試成功的script
—————–routeros dns-update ————————
——————————–script————————————–
:log info "DDNS: Begin"
:local ddnsuser "test"
:local ddnspass "BJ7y6dzxchy3u0B4hRLksQ=="
:local ddnshost "test
:local ddnszone "me.idv.tw"
:local ddnsinterface "pppoe-out1″
#一定要先宣告,不然後面程式無法使用
:global ddnslastip
:global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface] address ]
#舊的IP有存在就用舊的,不存在就建0.0.0.0/0
:if ([:typeof [:global ddnslastip]] = nil ) do={ :global ddnslastip 0.0.0.0/0 } else={ :set ddnslastip $ddnslastip }
:if ([:typeof [:global ddnsip]] = nil ) do={
:log info ("DDNS: No ip address present on " . $ddnsinterface . ", please check.")
} else={
:if ($ddnsip != $ddnslastip) do={
:log info "DDNS: 開始更新DDNS!"
:log info ([/tool dns-update dns-server=1.1.1254 key-name=$ddnsuser key=$ddnspass name=$ddnshost address=[:pick $ddnsip 0 [:find $ddnsip "/"] ] zone=$ddnszone] . "更新IP:" . $ddnsip)

:global ddnslastip $ddnsip
} else={
:log info "DDNS: IP無變動"
}
}
:log info "DDNS: End"
#————————————————————————

本篇發表於 ros 並標籤為 。將永久鍊結加入書籤。

發表迴響

您的電子郵件位址並不會被公開。 必要欄位標記為 *

*

您可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>