使用 PHP 更改域 IP 地址

Posted

技术标签:

【中文标题】使用 PHP 更改域 IP 地址【英文标题】:Changing a domains IP address with PHP 【发布时间】:2011-06-09 10:39:42 【问题描述】:

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

【问题讨论】:

由于我的家庭 IP 地址是动态的,它每隔几天就会更改一次。如果有一个脚本可以为我做到这一点,那就太好了。 【参考方案1】:

我同意“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

现在,如果您的 master 确实 notify/axfr/ixfr,那么您的区域会立即更新。 上面脚本中的 ip.php 很简单:

<?php
header("Content-Type: text/plain");
echo $_SERVER['REMOTE_ADDR'];
?>

这些是做基本相同事情的人的例子:

http://www.chrisk.de/blog/2011/02/how-to-create-your-own-dyndns-service/ http://caunter.ca/nsupdate.txt

【讨论】:

我使用的实际脚本,将 ip.php 提取到 ip.txt,然后将 ip.txt 复制到 ip.old。然后我运行 diff 。如果 $? -ne "0" 然后我运行 nsupdate。【参考方案2】:

您应该查看 RFC 2136。“nsupdate”命令实现了这一点,但这需要您的 PHP 脚本在服务器上运行命令。搜索“RFC 2136”出现https://pear.php.net/manual/en/package.networking.net-dns.net-dns-updates-example.php

【讨论】:

以上是关于使用 PHP 更改域 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

在php中更改ip地址

如何使用 PHP 邮件从地址更改信封?

域环境搭建

域环境搭建

地理上更改域保持 URL 相同

更改 X-Frame-Options 以允许所有域