引言:
经过大量研究并全面分析 vestacp 论坛后发现,对于服务器迁移后出现的问题,即使重新生成 DNS、WEB 和邮件之后 IP 仍未改变,需要更新 IP,目前没有任何官方解决方案。我在这里编写了一个脚本,解决了我需要从一个 IP 迁移到另一个 IP 时遇到的问题,在某些情况下,NAT IP 也会导致该问题。
服务器迁移后如何更新 IP:
几天前,我们正在将数据中心迁移到新的地点,我们的大多数客户都使用 VestaCP 作为控制面板。VestaCP 为数据迁移提供了非常完美且出色的功能:只需使用 v-backup-users 创建备份,将生成的 zip 上传到新服务器,然后执行命令 v-restore-user,一切就完成了。但在我们的情况下,每台服务器上有 500 多个账户需要迁移,因此新的挑战是逐个恢复每个账户,这个过程太耗时了,所以我们在这里编写了一个脚本。因为目前仍没有官方方法可以批量恢复每个账户。成功恢复之后,我们又发现了一个新问题:每个域名上的 DNS 记录仍然指向旧 IP,并没有改变,经过大量努力,所有官方解决方案都不起作用,所以我就针对这个问题编写了脚本,并认为您可能也需要,因此在这里与您分享,为此您需要执行以下步骤。
在 root 目录下创建一个新文件,或从 github 下载脚本
nano changeDNS.sh
将以下代码添加到文件中
#!/bin/bash oldIp=$1 newIp=$2 sed -i "s/$oldIp/$newIp/g" /home/*/conf/dns/*.db sed -i "s/$oldIp/$newIp/g" /usr/local/vesta/data/users/*/dns/*.conf /usr/local/vesta/bin/v-restart-dns echo "Everything done :) all DNS has been replaced from $oldIp to $newIp"
只需保存文件,并按以下方法执行
bash changeDNS.sh 2.2.2.2 4.4.4.4
这里的 2.2.2.2 是旧 IP,4.4.4.4 是新 IP,请将其替换为您自己的 IP。
结论:
VestaCP 迁移到新服务器后,旧的 DNS 记录现在可以用上述方法轻松替换,为您节省时间和精力。
开始之前
- 备份每个用户的 DNS 区域和网站配置。
- 提前一天降低您记录的 TTL,以便更改快速传播。
- 在所有记录都传播完毕之前,请保持旧服务器运行。
更改之后
- 重建 DNS 区域并重启 DNS 服务,然后使用
dig或nslookup确认一个域名。 - 检查网站、邮件和 SSL 在新 IP 上是否正常工作。
- 如果您还使用 Cloudflare 或其他 DNS 提供商,请在那里更新源站 IP。
需要迁移服务器方面的帮助?请查看我们的云托管和服务器管理。
More about vestacp
Want to go further with vestacp? These Netstech guides and services are a good next step:



