MENU

迁移Knot DNS的从属节点

之前自建的DNS节点中有一个为了支持乌克兰特意将EU节点放到了乌克兰,在之前的一段时间偶尔会出现失去链接的情况,但持续时间和频率还能接受于是便一直没管,直到最近可能是因为俄罗斯侵略战争的关系,乌克兰的节点每天都在失去链接(空路由),每天频次在30次以上,持续时间从几分钟到几小时不等,于是便决定将乌克兰节点迁移到德国.

迁移前准备

  • 一个新的vm
  • knot dns

由于迁移时节点处于离线状态,无法获得节点内配置文件等信息,所以本次迁移将根据其余的节点创建新的配置信息.
knotdns的版本尽量保持和其它节点的版本相同

修改配置文件和导入db

首先从另外一个从属节点拿出/etc/knot/knot.conf配置文件,直接放到新的vm中然后修改remote字段,将其修改为主节点和其他从属节点信息

然后执行knotc conf-import /etc/knot/knot.conf将其导入数据库,然后执行systemctl restart knot重启knotdns

添加域名修改其他节点配置

首先去主节点执行knotc conf-read 'zone.domain'查看已经存在的域名
然后将显示的域名列表复制出来改成knotc命令,类似下面这样

knotc conf-begin
knotc conf-set 'zone.domain' 'demo.lan'
knotc conf-set 'zone.domain' 'demo2.lan'
knotc conf-set 'zone.domain' 'demo3.lan'
knotc conf-commit

然后将配置放到新的vm中执行后,运行systemctl restart knot重启knotdns
然后执行systemctl status knot查看当前状态,这时你会看到一对错误,大概意思是无法从远端同步信息,这时因为主节点和其他从属节点没有修改remote的ip导致的,更换vm后需要修改其它节点上的remote节点的ip
假设你替换的节点叫eu,之前ip为1.1.1.1当前新的vm的ip为1.1.1.2,那么你需要将如下命令复制到主节点和其它节点上执行

knotc conf-begin
knotc conf-unset remote[eu].address 1.1.1.1@53
knotc conf-set remote[eu].address 1.1.1.2@53
knotc conf-commit

执行后再去新的vm上执行systemctl restart knot后再通过systemctl status knot查看状态时会发现错误消失了,但是如果你立即尝试通过新的vm解析会发现域名没有记录,这时不要慌,因为数据同步需要一段时间,过一会再看就会有了.

修改胶水记录/ns记录

当更换玩节点后你需要将原本ns记录的胶水记录的ip和其A以及AAAA指向修改,修改方法就不叙述了.
如果节点有设置备份不要忘记将旧节点的备份停止.
至此,节点就已经迁移完成了.

996.icu 996.icu