如何配置Linux客户端注册动态DNS及重新注册域名
Linux 动态DNS重新注册与自动配置方案
一、手动触发DNS注册(对应Windows ipconfig /registerdns)
Linux下最常用的动态DNS注册工具是nsupdate(适配BIND DNS服务器环境),操作步骤如下:
1. 无TSIG认证场景
直接在终端执行以下命令序列:
nsupdate > server <你的DNS服务器IP地址> > update delete myhostdomain.example.com A > update add myhostdomain.example.com 3600 A <你的主机静态IP> > send > quit
3600为记录TTL(生存时间,单位秒),可根据DNS策略调整;- 若主机用DHCP获取IP,替换
<你的主机静态IP>为当前实际IP,可通过ip addr show <网卡名> | grep 'inet ' | awk '{print $2}' | cut -d/ -f1快速获取。
2. 需TSIG认证场景
如果DNS服务器要求TSIG密钥认证,执行命令时指定密钥文件:
nsupdate -k /path/to/your/tsig-key.file
随后在交互模式执行上述update和send指令即可;也可直接在脚本中嵌入密钥信息:
nsupdate << EOF server <DNS服务器IP> key <密钥名称> <密钥字符串> update delete myhostdomain.example.com A update add myhostdomain.example.com 3600 A <主机IP> send EOF
二、DHCP环境下自动注册DNS
若主机通过DHCP获取IP,可通过配置DHCP客户端实现自动注册:
1. 配置dhclient
编辑/etc/dhcp/dhclient.conf,添加以下内容:
send host-name "myhostdomain.example.com"; send fqdn.fqdn "myhostdomain.example.com"; send fqdn.encoded on; send fqdn.server-update on;
保存后重启DHCP客户端服务:
# 通用systemd系统 systemctl restart dhclient # 若用NetworkManager管理网络,需重启NetworkManager systemctl restart NetworkManager
2. NetworkManager命令行配置
如果使用NetworkManager管理网络,通过nmcli修改对应连接:
# 修改指定连接的DHCP参数 nmcli con mod <你的连接名称> ipv4.dhcp-send-hostname yes nmcli con mod <你的连接名称> ipv4.dhcp-fqdn myhostdomain.example.com # 重启连接生效 nmcli con up <你的连接名称>
三、持久化自动刷新(避免记录过期被清理)
为防止DNS记录因过期被自动清理,可设置定时任务定期刷新:
- 创建刷新脚本
/usr/local/bin/dns-refresh.sh:
#!/bin/bash # 替换为你的网卡名称(如eth0、ens33) INTERFACE="ens33" # 替换为你的DNS服务器IP DNS_SERVER="192.168.1.10" HOSTNAME="myhostdomain.example.com" # 获取当前主机IP IP=$(ip addr show $INTERFACE | grep 'inet ' | awk '{print $2}' | cut -d/ -f1) # 执行DNS更新 nsupdate << EOF server $DNS_SERVER update delete $HOSTNAME A update add $HOSTNAME 3600 A $IP send EOF
- 赋予脚本执行权限:
chmod +x /usr/local/bin/dns-refresh.sh
- 添加cron定时任务:
执行crontab -e,添加以下内容(每30分钟执行一次,可根据TTL调整频率):
*/30 * * * * /usr/local/bin/dns-refresh.sh
内容的提问来源于stack exchange,提问作者Clair
相关产品推荐
相关产品推荐

