适用场景:无需搭建DNS服务器,快速将域名映射到指定IP(如开发环境、测试环境)。
操作步骤:
/etc/hosts文件(如sudo nano /etc/hosts或sudo vim /etc/hosts)。IP地址 域名添加记录(每行一个),例如:192.168.1.100 example.com
192.168.1.100 www.example.com
(可同时绑定多个域名到同一IP,如192.168.1.100 api.example.com admin.example.com)。Ctrl+O→Enter→Ctrl+X),修改立即生效,无需重启系统。ping example.com或nslookup example.com命令验证是否解析到目标IP(注意:nslookup可能仍查询DNS,但实际网络请求会优先走hosts文件)。/etc/nsswitch.conf中的hosts行,默认为files dns);操作步骤:
sudo apt-get update && sudo apt-get install bind9;sudo yum install bind bind-utils(bind-utils包含dig、nslookup等工具)。操作步骤:
编辑/etc/bind/named.conf(Debian/Ubuntu)或/etc/named.conf(CentOS/RHEL),添加以下全局配置:
options {
directory "/var/cache/bind"; # 指定缓存目录
recursion yes; # 允许递归查询(客户端可请求未知域名)
allow-query { any; }; # 允许所有客户端查询(生产环境建议限制为特定IP段)
};
操作步骤:
编辑/etc/bind/named.conf.local(Debian/Ubuntu)或/etc/named.rfc1912.zones(CentOS/RHEL),添加区域配置:
zone "example.com" { # 要解析的域名
type master; # 区域类型(master为主服务器)
file "/etc/bind/db.example.com"; # 区域数据文件路径
};
操作步骤:
sudo cp -p /var/cache/bind/db.local /etc/bind/db.example.com # Debian/Ubuntu
sudo cp -p /var/named/named.localhost /var/named/db.example.com # CentOS/RHEL
sudo vim /etc/bind/db.example.com),添加以下内容:$TTL 86400 # 缓存时间(1天)
@ IN SOA ns1.example.com. admin.example.com. ( # SOA记录(Start of Authority)
2025101801 ; serial # 序列号(每次修改需递增)
3600 ; refresh # 刷新周期(1小时)
1800 ; retry # 重试周期(30分钟)
604800 ; expire # 过期时间(1周)
86400 ; minimum # 最小TTL(1天)
)
@ IN NS ns1.example.com. # NS记录(Name Server)
ns1 IN A 192.168.1.100 # A记录(域名→IP)
www IN A 192.168.1.100 # 别名解析
操作步骤:
/etc/bind/named.conf.local(Debian/Ubuntu)或/etc/named.rfc1912.zones(CentOS/RHEL),添加反向区域配置:zone "1.168.192.in-addr.arpa" { # 反向区域(IP段192.168.1.0/24的反向表示)
type master;
file "/etc/bind/db.192"; # 反向数据文件路径
};
sudo vim /etc/bind/db.192),添加以下内容:$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025101801 ; serial
3600 ; refresh
1800 ; retry
604800 ; expire
86400 ; minimum
)
@ IN NS ns1.example.com.
100 IN PTR ns1.example.com. # PTR记录(IP→域名)
操作步骤:
sudo systemctl restart bind9 # Debian/Ubuntu
sudo systemctl restart named # CentOS/RHEL
sudo systemctl enable bind9 # 设置开机自启(Debian/Ubuntu)
sudo systemctl enable named # 设置开机自启(CentOS/RHEL)
操作步骤:
编辑客户端/etc/resolv.conf文件(需管理员权限),添加DNS服务器IP:
nameserver 192.168.1.100 # 替换为你的DNS服务器IP
(若系统使用NetworkManager管理网络,可通过图形界面或nmcli命令设置DNS)。
操作步骤:
nslookup命令测试正向解析:nslookup example.com
预期结果:显示域名对应的IP地址(如192.168.1.100)。dig命令测试反向解析(可选):dig -x 192.168.1.100
预期结果:显示IP对应的域名(如ns1.example.com)。sudo ufw allow 53),否则客户端无法查询;serial字段,否则DNS服务器不会加载新配置。