开启DNS服务的命令是
sudo systemctl start named
或sudo service named start
如何开启DNS服务?详细指南与命令解析
DNS服务
域名系统(DNS, Domain Name System)是互联网的核心基础设施,负责将人类可读的域名(如www.example.com)转换为计算机可识别的IP地址(如192.168.1.1),开启DNS服务通常用于搭建本地域名解析服务器、测试网络环境或部署企业级网络服务,本文将详细介绍在不同操作系统中开启DNS服务的命令、配置方法及常见问题。
主流DNS服务软件
软件名称 | 特点 | 适用场景 |
---|---|---|
BIND | 开源、功能全面 | 企业级生产环境 |
dnsmasq | 轻量级、支持缓存 | 小型网络/家庭网络 |
Unbound | 安全、高性能 | 递归解析服务器 |
systemdresolved | 系统级解析服务 | Linux系统本地解析 |
开启DNS服务的通用步骤
安装DNS服务软件
不同Linux发行版的安装命令:
# Ubuntu/Debian sudo apt update sudo apt install bind9 dnsutils # CentOS/RHEL sudo yum install bind bindutils # Fedora sudo dnf install bind bindutils
启动DNS服务
系统服务管理命令
操作系统 | 启动命令 | 停止命令 | 重启命令 | 状态查询 |
---|---|---|---|---|
Ubuntu/Debian | sudo systemctl start bind9 |
sudo systemctl stop bind9 |
sudo systemctl restart bind9 |
sudo systemctl status bind9 |
CentOS/RHEL | sudo systemctl start named |
sudo systemctl stop named |
sudo systemctl restart named |
sudo systemctl status named |
通用SysVinit | sudo service bind9 start |
sudo service bind9 stop |
sudo service bind9 restart |
sudo service bind9 status |
临时启动(不推荐生产环境)
# 直接运行BIND(仅限测试) sudo named c /etc/bind/named.conf g
配置DNS服务
BIND配置示例
编辑主配置文件 /etc/bind/named.conf
(Ubuntu)或 /etc/named.conf
(CentOS):
// 允许所有网段查询 options { directory "/var/named"; allowquery { any; }; };
添加本地域名记录
编辑 /etc/bind/db.local
(Ubuntu默认区域文件):
$TTL 604800 @ IN SOA localhost. root.localhost. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. localhost IN A 127.0.0.1 example.com IN A 192.168.1.100
验证DNS服务状态
检查服务状态
# 查看进程 ps aux | grep named # 查看端口监听 netstat tuln | grep :53 # 使用dig测试解析 dig @127.0.0.1 example.com
日志文件位置
软件 | 日志路径 |
---|---|
BIND | /var/log/named/named.log |
dnsmasq | /var/log/dnsmasq.log |
systemdresolved | /var/log/syslog |
防火墙与SELinux配置
开放DNS端口(53/UDP & TCP)
# UFW(Ubuntu) sudo ufw allow 53 # firewalld(CentOS) sudo firewallcmd permanent addservice=dns sudo firewallcmd reload
SELinux配置(CentOS)
# 允许BIND访问网络 sudo setsebool P named_write_master_zone 1 sudo setsebool P named_bind_http_ports 1
常见问题与解决方案
问题现象 | 原因 | 解决方案 |
---|---|---|
服务无法启动 | 配置文件错误 | sudo namedcheckconf 检查语法 |
域名解析失败 | 区域文件未加载 | 检查 named.conf 中的 zone 配置 |
端口被阻塞 | 防火墙限制 | 执行 sudo firewallcmd listall |
SELinux拒绝访问 | 安全策略限制 | 使用 setenforce 0 临时关闭(仅限测试) |
相关问题与解答
问题1:如何彻底停止DNS服务?
解答:使用以下命令停止并禁用服务:
# 停止服务 sudo systemctl stop bind9 # 禁止开机启动 sudo systemctl disable bind9 # 验证状态 sudo systemctl isenabled bind9 # 显示 "disabled"
问题2:如何修改DNS服务的监听地址?
解答:编辑配置文件 /etc/bind/named.conf
,添加或修改 listenon
指令:
options { listenon { 192.168.1.1; }; # 仅监听内网IP };
重启服务后,DNS将仅响应指定IP的请求。