上一篇                     
               
			  linux 如何设置域名解析
- Linux
- 2025-07-11
- 2222
 Linux中,可通过编辑
 
 
/etc/resolv.conf文件设置域名解析,添加
 nameserver 
Linux系统中,域名解析的设置至关重要,它决定了系统如何将域名转换为对应的IP地址,以下是详细的设置方法及相关说明:
通过/etc/resolv.conf文件设置DNS服务器(简单快捷方式)
 
| 步骤 | 示例 | 说明 | |
|---|---|---|---|
| 打开文件 | sudo vi /etc/resolv.conf | 使用文本编辑器(如 vi或nano)打开文件 | 该文件定义系统的DNS服务器地址,优先级由上至下 | 
| 添加DNS服务器 | nameserver 8.8.8.8nameserver 114.114.114.114 | 每行一个DNS服务器IP | 可添加多个服务器作为备用,系统按顺序查询 | 
| 保存并退出 | 按 ESC键后输入:wq(vi)或Ctrl+O(nano) | 保存修改并退出编辑器 | 修改立即生效,无需重启服务 | 
注意事项:

- 某些发行版(如Ubuntu)中,/etc/resolv.conf可能由NetworkManager或systemd-resolved管理,直接修改会被覆盖,此时需通过nmcli或systemd配置。
- 临时测试可用命令:nmcli dev set eth0 ipv4.dns "8.8.8.8 114.114.114.114"(替换eth0为实际网络接口)。
配置本地DNS服务(BIND/named)(高级场景)
安装BIND
- Debian/Ubuntu: sudo apt-get update sudo apt-get install bind9 bind9utils bind9-doc 
- CentOS/RHEL: sudo yum install bind bind-utils 
配置主配置文件
编辑/etc/bind/named.conf(Debian)或/etc/named.conf(CentOS),定义正向和反向解析区域:
options {
    listen-on port 53 { 192.168.1.1; };  // 监听IP
    directory "/var/named";              // 数据文件路径
};
// 正向解析区
zone "example.com" IN {
    type master;
    file "db.example.com";              // 区域文件路径
};
// 反向解析区
zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "db.192";                     // 反向区域文件路径
}; 
创建区域文件
- 正向区域文件(/etc/bind/zones/db.example.com):$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2023010101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) IN NS ns1.example.com. IN NS ns2.example.com. ns1 IN A 192.168.1.1 ns2 IN A 192.168.1.2 www IN A 192.168.1.100
- 反向区域文件(/etc/bind/zones/db.192):$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2023010101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) IN NS ns1.example.com. 10 IN PTR ns1.example.com. 20 IN PTR www.example.com.
检查配置并重启服务
sudo named-checkconf # 检查主配置文件语法 sudo named-checkzone example.com /etc/bind/zones/db.example.com # 检查正向区域文件 sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/zones/db.192 # 检查反向区域文件 sudo systemctl restart bind9 # 重启BIND服务
开放防火墙端口
sudo ufw allow 53/tcp sudo ufw allow 53/udp
测试域名解析
使用dig或nslookup命令验证配置:

dig @localhost example.com # 测试正向解析 dig @localhost -x 192.168.1.100 # 测试反向解析
常见问题与解决
| 问题 | 原因 | 解决方法 | 
|---|---|---|
| DNS解析失败 | 配置文件语法错误 防火墙未开放53端口 网络连接问题 | 使用 named-checkconf和named-checkzone检查配置执行 sudo ufw allow 53开放端口检查服务器网络连通性( ping测试) | 
| 解析结果不正确 | 区域文件记录错误 缓存未刷新 | 检查区域文件中的IP和域名映射 执行 rndc flush清除缓存(需安装rndc工具) | 
FAQs
Q1:如何临时更改DNS服务器?
A1:使用nmcli命令(仅当前会话有效):
sudo nmcli dev set eth0 ipv4.dns "8.8.8.8 114.114.114.114"
替换eth0为实际网络接口名称。
Q2:BIND配置后无法解析外部域名怎么办?
A2:需在named.conf中添加“转发器”(Forwarder)配置,允许BIND向外部DNS服务器查询:

options {
    forwarders { 8.8.8.8; 114.114.114.114; };  # 指定上游DNS服务器 
 
  
			