個人動態域名管理系統. Personal-DDNS.
來源: https://www.cnblogs.com/osnosn/p/10591431.html 來自osnosn博客
寫於: 2019-03-24.
簡單又實用的動態域名管理系統, 自建動態域名管理系統
使用 bind9 + php + mysql , 創建個人的動態域名系統。
Use bind9 + php + mysql , create a personal ddns server, update by an URL. Only support "A","AAAA","TXT" recorder.
項目地址 https://github.com/osnosn/personal-ddns/
條件
- 首先,需要一個有管理權的域名。
- 其次,需要一個有固定IP的服務器。
設置域名 (需域名管理權)
- 在域名商系統中增加一個二級域名,和對應的IP。IP指向你的服務器。
- 比如你擁有的域名是 "mydomain.net"
- 設二級域名
ddns.mydomain.net
- 你可以用類似
abc.ddns.mydomain.net
,xxx.ddns.mydomain.net
作為你的動態域名。
- 設二級域名
- 比如你的服務器IP是"1.1.1.1"
- 在域名商的解析系統中增加這兩條記錄。(A記錄的域名,要與子域"ddns"不同,這里用"ddns2")
ddns2.mydomain.net A 1.1.1.1 ddns.mydomain.net NS ddns2.mydomain.net.
- 比如你擁有的域名是 "mydomain.net"
設置bind9 (需服務器root權限)
- 我用的是centos7
裝 bind-chroot-9.4.4
yum install bind-chroot bind-utils
bind老是出漏洞,裝個chroot版感覺安全點。 - 修改配置文件 /etc/named.conf
options { listen-on port 53 { 127.0.0.1; any; }; listen-on-v6 port 53 { ::1; any; }; allow-query { localhost; any; }; recursion no; allow-recursion { localhost; }; allow-transfer { localhost; }; }; include "/etc/named.rfc1912.zones";
以上條目,原來有的保留。不相同的就修改。原來沒有的就添加。
- 修改/etc/named.rfc1912.zones , 在最后加上:
zone "ddns.mydomain.net" IN { type master; file "dynamic/named.ddns.mydomain.net"; allow-update { localhost; }; };
- 創建文件 /var/named/dynamic/named.ddns.mydomain.net
要求 named 對 dynamic/ 目錄有寫權限
nsupdate 時會生成 named.ddns.mydomain.net.jnl
named.service stop 時會改寫 named.ddns.mydomain.net 文件
如果 /var/named/dynamic目錄不存在,就先啟動一下 service named-chroot start$TTL 600 ; 10 minutes @ IN SOA ddns2.mydomain.net. email.invalid. ( 1096 ; serial 86400 ; refresh (1 day) 3600 ; retry (1 hour) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) @ NS ddns2.mydomain.net.
service named-chroot stop;
service named-chroot start;
systemctl enable named-chroot;
- 檢查防火牆開放了 udp/53 的訪問。
iptables -A INPUT -p udp –dport 53 -j ACCEPT #一般查詢用
iptables -A INPUT -p tcp –dport 53 -j ACCEPT # axfr 用
其他設置 (無需root權限。但需要用戶權限,設置crontab)
- 看文件 ddns/readme.php
- 大致步驟是,
- 把
ddns/
目錄中的東西放到你的網站中。 - 在MySQL中創建數據庫,創建一張表,
- 修改配置文件 pdo_new.php, config.php
- 創建一條 crontab 定時任務。2分鍾執行一次。
- 測試一下,就能用了。
- 把
安裝好之后,創建了對應的動態域名后,客戶端的使用
-
如果是 A 記錄 或 AAAA 記錄
- 自動獲取客戶端IP(根據來源IP. A需通過ipv4,AAAA需通過ipv6訪問)
wget http://www.mydomain.net/ddns/ddns.php?key=xxxxxxxxx&domain=dddd
- 強制指定IP(無所謂ipv4,ipv6網絡)
wget http://www.mydomain.net/ddns/ddns.php?key=xxxxxxxxx&domain=dddd&ip=1.1.1.1
wget http://www.mydomain.net/ddns/ddns.php?key=xxxxxxxxx&domain=dddd&ip=FC00:0:130F::9C0:876A:130B
建議每10-15分鍾訪問一次更新鏈接。超過60分鍾未更新,對應域名重置為"127.0.0.1" 或 "::1"
比如動態域名為
abc.ddns.mydomain.net
其中domain=dddd
可以寫為:domain=abc
ordomain=abc.ddns.mydomain.net
其中
key=xxxxxxxxx
是創建動態域名時,生成的對應key。 - 自動獲取客戶端IP(根據來源IP. A需通過ipv4,AAAA需通過ipv6訪問)
-
如果是 TXT 記錄
- 強制指定TXT內容
wget http://www.mydomain.net/ddns/ddns.php?key=xxxxxxxxx&domain=dddd&ip=20181015abcdefg
- 強制指定TXT內容
轉載請注明來源。
來源: https://www.cnblogs.com/osnosn/p/10591431.html 來自osnosn博客
---------------end---------------