ZBLOG

如何设置linux的域名解析

在Linux中设置域名解析主要通过以下几种方式:

1. 主要配置文件

/etc/hosts - 本地主机名解析

# 格式:IP地址 主机名 别名
127.0.0.1   localhost localhost.localdomain
::1         localhost ip6-localhost ip6-loopback

192.168.1.100 server01.example.com server01
192.168.1.101 server02.example.com server02

/etc/resolv.conf - DNS服务器配置

# DNS服务器配置
nameserver 8.8.8.8          # Google DNS
nameserver 114.114.114.114   # 国内DNS
nameserver 192.168.1.1       # 本地路由器DNS

# 搜索域配置
search example.com company.local
domain example.com

# 选项配置
options timeout:2           # 查询超时时间(秒)
options attempts:3          # 重试次数
options rotate              # 轮询使用DNS服务器

2. NetworkManager配置(现代Linux发行版)

nmcli命令配置DNS

# 查看网络连接
nmcli connection show

# 为指定连接设置DNS(临时)
nmcli connection modify "Wired connection 1" ipv4.dns "8.8.8.8,114.114.114.114"

# 添加DNS服务器(不覆盖现有)
nmcli connection modify "Wired connection 1" +ipv4.dns "192.168.1.1"

# 设置搜索域
nmcli connection modify "Wired connection 1" ipv4.dns-search "example.com,local"

# 应用更改
nmcli connection up "Wired connection 1"

nmtui文本界面配置

nmtui    # 启动文本界面工具,可图形化配置DNS

3. systemd-resolved(systemd系统)

resolved配置文件 /etc/systemd/resolved.conf

[Resolve]
DNS=8.8.8.8 114.114.114.114     # DNS服务器列表 
FallbackDNS=1.1..11             # Fallback DNS  
Domains=example.com            #搜索域  
LLMNR=yes                      #启用LLMNR  
MulticastDNS=yes               #启用mDNS  
DNSSEC=allow-downgrade         #DNSSEC设置  
Cache=yes                      #启用缓存  
DNSStubListener=yes            #监听53端口  

resolved控制命令

systemctl status systemd-resolved    #检查服务状态    
systemctl restart systemd-resolved   #重启服务    
systemctl enable systemd-resolved    #启用服务    

#刷新DNS缓存    
systemd-resolve --flush-caches       

#查看DNS统计信息      
systemd-resolve --statistics         

##4./etc/nsswitch.conf-名称服务切换配置

# hosts数据库的查找顺序    
hosts:      files dns myhostname    

#解析顺序:files(/etc/hosts)→dns(DNS服务器)→myhostname(系统主机名)    

##5.DHCP自动获取DNS

如果使用DHCP客户端,会自动从DHCP服务器获取DNS配置:

/etc/dhcp/dhclient.conf

#请求DHCP服务器提供特定选项   
option rfc3442-classless-static-routes code121 = array of unsigned integer8;   
send host-name = gethostname();   
request subnet-mask,broadcast-address,time-offset,routers,   
        domain-name-servers,domain-name,host-name;   

#自定义prepend语句添加额外DNS(优先级更高)   
prepend domain-name-servers192 .168 .l.l;     

##6.DNS测试和验证命令

nslookup www.google.com           #基本域名查询     
dig www.google.com                #详细域名信息查询       
dig @8 .g.g.g www.google.com     #指定DNS服务器查询       

host www.google.com               #简单主机查询        
ping www.google.com               #测试连通性和解析        

systemd-resolve google.com        #

systemd系统专用)      

cat /etc/resolv.conf              #
检查当前生效的DNS配置      

netstat -rn                       #
查看路由表和网关信息        

##7.DNS缓存管理

根据不同系统和安装的服务清理缓存:

#
Systemd systems (Ubuntu18+,RHEL8+)       
sudo systemd-resolve --flush-caches       

#
NetworkManager systems       
sudo systemctl restart NetworkManager      

#
NSCD(Name Service Cache Daemon)       
sudo systemctl restart nscd               

#
BIND(dnsmasq)       
sudo systemctl restart dnsmasq            

#
Windows Subsystem for Linux(WSL)       
sudo /etc/init.d/dns-clean start          

##永久性配置建议

对于生产环境推荐以下持久化方案:

  • 云服务器: 使用NetworkManager或修改/etc/sysconfig/network-scripts/下的网卡配置文件
  • 容器环境: 在Dockerfile或Kubernetes配置中设置
  • 传统服务器: 直接编辑/etc/resolv.conf并设置不可变属性(chattr +i)防止被覆盖


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=8521

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?