我目前有一台运行Bind的Ubuntu服务器。我有一个subdoamin(home.example.com)链接到我的家庭IP地址。我希望能够使用一个PHP脚本,当访问和验证时会更改子域的IP地址。我以为我可以使用php编辑绑定配置文件,然后运行命令“service bind restart”。这是最好的方法吗?
答案 0 :(得分:2)
答案 1 :(得分:2)
我同意'nsupdate'会是一个更好的解决方案,但它不需要PHP,至少不需要重启服务器。如果您的网络服务器能够这样做,我认为这非常糟糕。
在OS-X中(我想在Linux中有一个等价的 - 或者是crontab)文件/etc/ppp/ip-up.sh和/etc/ppp/ip-down.sh会在你执行后执行IP更改(但显然不在WiFi上 - 所以我使用crontab)。
触摸/etc/ppp/ip-up.sh ln -s!$ /etc/ppp/ip-down.sh
/etc/ppp/ip-up.sh:
#!/bin/bash
H=domain.mobi
IP=`curl -s http://domain.mobi/ip.php` # or wget, etc.
nsupdate -v -y tsig.$H:Wwr82TQdx3biQdx3biq2Pibi7IMq2PGxETCetcETC== > /dev/null << EOF
server 129.8.7.53
zone $H
update delete john.$H SPF
update delete john.$H TXT
update add john.$H 600 SPF "v=spf1 ip4:$IP -all"
update add john.$H 600 TXT "v=spf1 ip4:$IP -all"
send
EOF
现在,如果您的主人确实通知/ axfr / ixfr,那么您的区域将立即更新。 上面脚本中的ip.php只是一个简单的:
<?php
header("Content-Type: text/plain");
echo $_SERVER['REMOTE_ADDR'];
?>
这些是基本上做同样事情的人的例子:
糟糕!无法提交您的答案,因为:
We're sorry, but as a spam prevention mechanism, new users can only post a maximum of two hyperlinks. Earn more than 10 reputation to post more hyperlinks.
太糟糕了我无法发布第3个链接...
答案 2 :(得分:1)
您应该查看RFC 2136.'nsupdate'命令实现了这一点,但这需要您的PHP脚本在服务器上运行命令。搜索“RFC 2136”会显示https://pear.php.net/manual/en/package.networking.net-dns.net-dns-updates-example.php