使用PHP更改域IP地址

时间:2011-01-14 21:54:01

标签: php dns bind

我目前有一台运行Bind的Ubuntu服务器。我有一个subdoamin(home.example.com)链接到我的家庭IP地址。我希望能够使用一个PHP脚本,当访问和验证时会更改子域的IP地址。我以为我可以使用php编辑绑定配置文件,然后运行命令“service bind restart”。这是最好的方法吗?

3 个答案:

答案 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