下面我将为你详细分解不同情况下的命令和步骤。

快速查询)
| 发行版系列 | DNS 软件包 | 服务名称 | 重启命令 |
|---|---|---|---|
| RHEL / CentOS / Fedora | bind |
named |
sudo systemctl restart named |
| Debian / Ubuntu | bind9 |
bind9 |
sudo systemctl restart bind9 |
使用 systemd 的现代系统 |
通用 | 服务名 | sudo systemctl restart <服务名> |
| 旧版系统 (SysVinit) | 通用 | 服务名 | sudo service <服务名> restart |
详细说明
在绝大多数现代 Linux 发行版中,都使用 systemd 作为初始化系统和管理服务。systemctl 是最常用和推荐的方式。
使用 systemd (现代系统,如 Ubuntu 16.04+, CentOS 7+, Debian 8+)
这是目前最主流的方式,你需要知道你的 DNS 服务名称是什么。
确认你的 DNS 服务名称
打开终端,输入以下命令来查看正在运行的 named 或 bind 相关服务:

systemctl list-units --type=service | grep -E "(named|bind)"
你可能会看到类似以下的输出:
- 对于 RHEL/CentOS/Fedora:
named.service - 对于 Debian/Ubuntu:
bind9.service
执行重启命令
根据上一步确认的服务名称,使用 systemctl restart 命令。
示例 1:在 RHEL/CentOS/Fedora 上重启 BIND (named)
# 重启 named 服务 sudo systemctl restart named # 检查服务状态,确保已成功重启并正在运行 sudo systemctl status named
示例 2:在 Debian/Ubuntu 上重启 BIND (bind9)
# 重启 bind9 服务 sudo systemctl restart bind9 # 检查服务状态 sudo systemctl status bind9
其他有用的 systemctl 命令:
- 重新加载配置(不中断服务):当你只修改了配置文件(如
/etc/named.conf),但没有修改数据文件时,推荐使用此命令。sudo systemctl reload named # 或 sudo systemctl reload bind9
- 停止服务:
sudo systemctl stop named
- 启动服务:
sudo systemctl start named
- 设置服务开机自启:
sudo systemctl enable named
- 禁止服务开机自启:
sudo systemctl disable named
使用 service 命令 (旧版系统,如 CentOS 6, Ubuntu 14.04)
在一些较旧的系统上,使用 SysVinit 初始化系统,服务管理通过 service 命令完成,这个命令在现代系统上通常也作为 systemctl 的兼容性别名存在。
命令格式:
sudo service <服务名> restart
示例:
# 在旧版 CentOS 6 上重启 named 服务 sudo service named restart # 在旧版 Ubuntu 14.04 上重启 bind9 服务 sudo service bind9 restart
其他 DNS 服务器软件
虽然 BIND 是最流行的 DNS 服务器,但系统上也可能运行其他软件,dnsmasq 或 unbound,它们的重启命令也遵循同样的 systemctl 或 service 规则。
示例:重启 dnsmasq 服务
dnsmasq 通常被用作轻量级的 DNS 缓存和 DHCP 服务器。
# 使用 systemctl sudo systemctl restart dnsmasq # 使用 service (旧版) sudo service dnsmasq restart
重启前的检查和最佳实践
-
检查配置文件语法错误:在重启服务前,最好先检查配置文件是否有语法错误,这可以避免服务因配置错误而启动失败。
-
对于 BIND:
# 检查主配置文件 sudo named-checkconf /etc/named.conf # 检查特定区域的配置文件 sudo named-checkzone yourdomain.com /path/to/zone/file.db
-
对于
dnsmasq:sudo dnsmasq --test
-
-
查看日志:如果服务重启失败,日志是排查问题的最佳线索。
-
使用
journalctl(systemd):# 查看实时日志 sudo journalctl -u named -f # 查看最近的日志 sudo journalctl -u named --no-pager
-
查看传统日志文件:
- BIND 的日志通常在
/var/log/named/或/var/log/messages中。 dnsmasq的日志通常在/var/log/syslog或/var/log/messages中。
- BIND 的日志通常在
-
| 情况 | 命令 |
|---|---|
| 现代系统 (推荐) | sudo systemctl restart <服务名> (如 named, bind9, dnsmasq) |
| 旧版系统 | sudo service <服务名> restart |
| 只重载配置 | sudo systemctl reload <服务名> |
| 检查 BIND 配置 | sudo named-checkconf |
希望这份详细的指南能帮助你!第一步永远是确认你的 DNS 服务名称。
