bind9.php,GitHub - osnosn/personal-ddns: Use bind9 + php + mysql , set a personal ddns server, updat...

简单又实用的动态域名管理系统

使用 bind9 + php + mysql , 创建个人的动态域名系统。

Use bind9 + php + mysql , create a personal ddns server, update by an URL. Only support "A","AAAA","TXT" recorder.

条件

首先,需要一个有管理权的域名。

其次,需要一个有固定IP的服务器。

设置域名 (需域名管理权)

在域名商系统中增加一个二级域名,和对应的IP。IP指向你的服务器。

比如你拥有的域名是 "mydomain.net"

设二级域名 ddns.mydomain.net

你可以用类似 abc.ddns.mydoman.net , xxx.ddns.mydoman.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/ 目录中的东西放到你的网站中。

在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

write at 2019-03-24.

--- end ---

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值