Ubuntu 16.04 DNS解析设置详解
在Ubuntu 16.04系统中,正确配置DNS解析是确保网络连接稳定性和高效性的关键步骤,无论是服务器版还是桌面版,都可以通过多种方式实现这一目标,以下是详细的操作指南及注意事项:
永久修改DNS的方法
✅方法一:通过/etc/resolvconf/resolv.conf.d/base
文件配置(推荐)
这是最常用且持久化的方案,适用于所有场景:
- 编辑基础配置文件
使用文本编辑器打开或创建该路径下的文件:sudo vim /etc/resolvconf/resolv.conf.d/base
- 添加指定的DNS服务器地址
每行写入一个nameserver
条目,例如使用谷歌公共DNS或国内服务商提供的节点:nameserver 8.8.8.8 # Google Public DNS nameserver 8.8.4.4 # 备用Google DNS # 或者替换为其他可信源如阿里云、电信等 # nameserver 223.6.6.6 # nameserver 223.5.5.5
- 更新系统缓存并重启相关服务
执行以下命令使更改生效:sudo resolvconf u # 刷新DNS配置缓存 sudo /etc/init.d/networking restart # 重启网络服务 sudo /etc/init.d/resolvconf restart # 重启DNS解析管理工具
- 验证结果
检查最终生成的主配置文件是否包含新设置的DNS:cat /etc/resolv.conf
输出应显示已添加的
nameserver
行。
⚙️方法二:直接修改网卡接口配置文件(适用于静态IP环境)
若采用静态IP分配策略,可在对应网卡段落中追加DNS参数:
- 定位目标接口文件
通常位于/etc/network/interfaces
,根据实际设备名称调整(如eth0/ensXX):sudo vim /etc/network/interfaces
- 插入DNS定义行
在现有配置块末尾增加类似如下内容:dnsnameservers 8.8.8.8 # 主用DNS dnsnameservers 8.8.4.4 # 备用DNS
- 应用变更并测试连通性
依次运行以下指令激活修改:sudo /etc/init.d/networking restart ping example.com # 测试域名能否正常解析 nslookup example.com # 进一步验证DNS响应
临时调整DNS的策略
⚠️注意:此方法仅在当前会话有效,重启后恢复原状! 如需快速测试不同DNS的效果而不影响原有设置,可直接编辑临时文件:
sudo vim /etc/resolv.conf
手动输入所需的nameserver
地址保存即可,但需牢记其临时性质,不适合生产环境长期使用。
不同版本的差异化处理(Server vs Desktop)
特性 | Server版 | Desktop版 |
---|---|---|
管理工具 | networking 服务主导 |
NetworkManager 图形化工具干预 |
冲突解决机制 | 直接覆盖旧配置 | 需先停止服务再修改底层文件 |
典型操作流程 | 修改配置文件→重启对应服务 | 禁用管理器→改静态配置→手动启停网卡 |
适用场景建议 | 自动化部署、无GUI的环境 | 交互式调试、可视化监控需求高的情况 |
对于桌面用户,若遇到配置不生效的问题,可能需要先执行:
sudo service networkmanager stop
然后再按照服务器版的步骤进行操作。
常见问题排查手册
- 为什么改了文件却不起作用?
- 确保没有遗漏
resolvconf u
刷新步骤; - 检查是否存在多个冲突的DNS条目;
- 确认是否误删了必要的搜索域(search domain)。
- 确保没有遗漏
- 如何清除默认注入的本地环回地址?
编辑脚本/etc/resolvconf/update.d/libc
,过滤掉以"127."开头的无效记录:sudo vim /etc/resolvconf/update.d/libc
将原始代码段替换为带条件判断的版本:
for N in $NMSRVRS; do if [[ $N != *"^127.0"* ]]; then echo "nameserver $N" >> "$TMPFILE" fi done
完成后记得重启
resolvconf
服务。
相关问题与解答
Q1: Ubuntu Server版修改DNS后为何仍无法解析域名?
A: 可能原因包括:①未正确重启网络服务(需同时运行sudo /etc/init.d/networking restart
和sudo /etc/init.d/resolvconf restart
);②防火墙阻止了UDP端口53;③上游ISP对特定端口的限制,建议逐步排查上述环节。
Q2: 桌面版设置静态DNS导致断网怎么办?
A: 这是由于NetworkManager被禁用引起的连锁反应,解决方法是启动该服务:sudo service networkmanager start
,或者更简单地通过系统托盘图标重新启用网络连接,未来若需频繁切换DNS,推荐安装插件如dnsmasq
实现动态