当前位置:首页>Linux>Linux 命令篇:nsupdate DNS 动态更新利器

Linux 命令篇:nsupdate DNS 动态更新利器

  • 2026-10-11 08:32:38
Linux 命令篇:nsupdate DNS 动态更新利器
大家好!我是大虫子🐛!
介绍下用于动态更新 DNS(域名系统)记录的命令行工具:nsupdate 。
它允许用户向 DNS 服务器发送更新请求,以添加、修改或删除 DNS 记录。这个工具通常与支持动态更新的 DNS 服务器(如 BIND)一起使用,能够在不需要直接编辑区域文件的情况下进行 DNS 记录的管理。
🎯基本用法
nsupdate [OPTIONS]
常用选项
  • -k keyfile: 使用指定的密钥文件进行身份验证。
  • -y [algorithm:]name:key: 指定 TSIG 密钥用于身份验证,其中 algorithm 是加密算法,name 是密钥名称,key 是密钥值。
  • -t timeout:设置更新请求的最大超时时间(以秒为单位)。默认为 300 秒。如果将超时时间设置为 0,则禁用超时。
  • -d: 启用调试模式,输出详细的调试信息。
  • -h, --help: 显示帮助信息。
  • -v, --version: 显示版本信息。
🎯命令选项

命令

描述

server {servername} [port]

发送所有动态更新请求到名称服务器

servername。如果没有提供server 声明,nsupdate 将发送更新请求到正确区域的主服务器。port 是 servername

上用于发送动态更新请求的端口号,默认使用 DNS 的端口号 53。

local {address} [port]

使用本地地址发送所有动态更新请求。

如果没有提供 local 声明,nsupdate 将使用系统选择的地址和端口发送更新请求。port 可以用于指定请求来自特定端口。如果未指定端口号,系统将分配一个。

zone {zonename}

指定所有更新都要应用到区域zonename。如果未提供 zone 声明,nsupdate 将尝试根据输入的其余部分确定要更新的正确区域。

class {classname}

指定默认类别。如果未指定类别,将使用默认类别 IN(互联网)。

key {name} {secret}

指定所有更新都要使用keyname 和 keysecret 对进行 TSIG 签名。key命令会覆盖通过命令行选项-y或-k指定的任何密钥。

prereq nxdomain {domain-name}

要求不存在任何类型的名为 domain-name 的资源记录。

prereq yxdomain {domain-name}

要求 domain-name存在(至少有一个任何类型的资源记录)。

prereq nxrrset {domain-name} [class] {type}

要求指定类型、类别和domain-name

的资源记录不存在。如果省略了类别,将假定为IN(互联网)。

prereq yxrrset {domain-name} [class] {type}

要求指定类型、类别和domain-name

的资源记录存在。如果省略了类别,将假定为 IN(互联网)。

update delete {domain-name} [ttl] [class] [type [data...]]

删除名为 domain-name 的任何资源记录。如果提供了类型和数据,则仅删除匹配的资源记录。如果未提供类别,默认为互联网类别。ttl 将被忽略,仅为了兼容性而允许。

update add {domain-name} {ttl} [class] {type} {data...}

添加具有指定ttl、类别和数据的新资源记录。

show

显示当前消息,包含自上次发送以来指定的所有先决条件和更新。

send

发送当前消息,相当于输入一个空行。

answer

显示应答。

🎯常用操作
使用 nsupdate 的基本步骤如下:
  1. 创建一个包含 DNS 更新指令的文件。
  2. 使用 nsupdate 命令执行更新操作。
示例操作
1. 添加 A 记录
假设要将主机 www.example.com 的 IP 地址更新为 192.0.2.1,可以创建一个更新文件 update.txt,内容如下:
server dns.example.com   ; 指定 DNS 服务器zone example.com          ; 指定区域update add www.example.com 3600 A 192.0.2.1  ; 添加 A 记录send                      ; 发送更新请求
然后运行以下命令:
nsupdate update.txt
2. 修改 A 记录
如果要将 www.example.com 的 IP 地址更改为 192.0.2.2,可以使用类似的过程,但更新指令改为:
update update www.example.com 3600 A 192.0.2.2  ; 修改 A 记录
3. 删除 A 记录
要删除 www.example.com 的 A 记录,可以在更新文件中使用以下内容:
update delete www.example.com A  ; 删除 A 记录
4. 使用 TSIG 密钥进行身份验证
如果 DNS 服务器配置了 TSIG 密钥,可以在更新文件中添加身份验证信息。例如,假设密钥名称为 mykey,密钥值为 AbCdEfGhIjKlMnOpQrStUvWxYz=,则更新文件可以如下所示:
server dns.example.comzone example.comkey mykey AbCdEfGhIjKlMnOpQrStUvWxYz=update add www.example.com 3600 A 192.0.2.1send
或者,如果使用命令行选项指定密钥:
nsupdate -y hmac-sha256:mykey:AbCdEfGhIjKlMnOpQrStUvWxYz= update.txt
🎯交互模式
nsupdate 也可以在交互模式下运行,允许用户手动输入命令。只需运行 nsupdate,然后使用以下命令:
nsupdate
在提示符下,可以直接输入更新命令,如:
> server dns.example.com> zone example.com> update add www.example.com 3600 A 192.0.2.1> send
🎯注意事项
  1. 权限: 根据 DNS 服务器的配置,可能需要适当的权限才能执行动态更新。
  2. TSIG 密钥: 如果 DNS 服务器启用了 TSIG,确保使用正确的密钥进行身份验证。
  3. DNS 服务器支持: 确保 DNS 服务器支持动态更新功能,通常需要在配置文件中启用。
nsupdate 是一个强大的工具,可用于动态更新 DNS 记录。咱们可以通过结合使用命令行选项和更新脚本,可以方便地管理 DNS 记录而无需直接更改区域文件

最新文章

随机文章