自建簡單又實用的動態域名管理系統


個人動態域名管理系統. 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.  
    

設置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 or domain=abc.ddns.mydomain.net

    其中 key=xxxxxxxxx 是創建動態域名時,生成的對應key。

  • 如果是 TXT 記錄

    • 強制指定TXT內容
      wget http://www.mydomain.net/ddns/ddns.php?key=xxxxxxxxx&domain=dddd&ip=20181015abcdefg

轉載請注明來源。
來源: https://www.cnblogs.com/osnosn/p/10591431.html 來自osnosn博客
---------------end---------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM