Ubuntu 18.04 DNS配置详解
在Ubuntu系统中,DNS(域名系统)的配置至关重要,它决定了如何将域名转换为IP地址,正确设置DNS不仅能提升网络访问速度,还能解决某些网站无法打开的问题,本文将详细介绍如何在Ubuntu 18.04上修改DNS设置,涵盖图形界面和命令行两种方式,并提供相关注意事项及常见问题解答。
通过图形界面配置DNS
对于桌面版的Ubuntu 18.04用户来说,使用NetworkManager图形配置工具是最便捷的方式之一,以下是具体步骤:
- 打开网络连接设置:点击屏幕右上角的网络图标,选择“有线”或“无线”对应的接口,然后点击齿轮形状的设置按钮。
- 进入IPv4标签页:切换到“IPv4”选项卡,方法选择为“手动”,此时会显示DNS服务器输入框。
- 添加新的DNS服务器地址:在提供的字段中输入希望使用的公共DNS或其他自定义的DNS服务器地址,如Google的8.8.8.8和8.8.4.4,或者Cloudflare的1.1.1.1等,多个DNS之间用逗号隔开。
- 保存更改并应用:点击右下角的“应用”按钮使更改生效。
这种方法简单直观,适合大多数普通用户的需求,如果是服务器环境或者是追求更精细控制的场景下,可能需要采用命令行的方式进行配置。
通过命令行修改DNS配置
✅ 方法一:编辑/etc/resolv.conf
文件
这是传统的修改DNS的方法,直接编辑系统的解析配置文件:
sudo nano /etc/resolv.conf
在该文件中添加如下内容(替换成你想要的DNS服务器):
nameserver 8.8.8.8 # Google Public DNS nameserver 8.8.4.4 # Another Google Public DNS
保存后退出编辑器即可,但需要注意的是,这种方式可能会被systemdresolved服务覆盖,导致重启后失效。
🔧 方法二:调整systemdresolved服务配置
从Ubuntu 16.04开始引入了systemdresolved作为默认的DNS解析器,推荐使用此方式进行持久化的DNS设置:
- 备份原始配置文件(可选但建议操作):
sudo cp /etc/systemd/resolved.conf /etc/systemd/resolved.conf.bak
- 编辑主配置文件:
sudo nano /etc/systemd/resolved.conf
找到类似以下的段落并进行修改:
[Resolve] DNS=8.8.8.8 8.8.4.4 # 设置首选和备选DNS服务器 Domains=~. local # 本地域搜索列表 LLMNR=no # 是否启用链路本地多播名称解析 MulticastDNS=no # 是否启用组播DNS支持 Cache=yes # 开启缓存以提高性能
- 重启systemdresolved服务以加载新配置:
sudo systemctl restart systemdresolved
- 验证当前使用的DNS服务器:可以通过查看解析状态确认变化是否成功:
systemdresolve status | grep "DNS Servers"
参数名 | 作用描述 | 示例值 |
---|---|---|
DNS |
指定要使用的DNS服务器列表,多个之间用空格分隔 | 8.8.8 8.8.4.4 |
Domains |
定义默认的搜索域,当查询不完整时会自动附加这些后缀 | ~. local |
LLMNR |
控制是否允许链路层多点传送名称解析协议 | no |
MulticastDNS |
是否启用多播DNS的支持 | no |
Cache |
是否启用内部缓存来加速重复请求的结果返回 | yes |
针对特定网卡接口的配置(适用于服务器版)
如果是服务器版本的Ubuntu 18.04,则需要针对具体的网络接口卡进行配置,假设你的网卡名为ens33,可以这样做:
- 创建或修改对应网卡的配置文件:
sudo nano /etc/netplan/01netcfg.yaml
network: version: 2 ethernets: ens33: dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]
- 应用新的网络计划:
sudo netplan apply
这样就能确保指定网卡使用了新的DNS设置。
相关问题与解答
Q1: 修改后的DNS没有立即生效怎么办?
A1: 确保已经正确地重启了相关的服务(如systemdresolved
),并且检查/etc/resolv.conf
是否被正确更新,有时候还需要清除旧有的缓存数据才能看到效果,可以尝试运行sudo systemdresolve flushcaches
命令来刷新缓存。
Q2: 为什么推荐使用systemdresolved而不是直接编辑/etc/resolv.conf?
A2: 因为systemdresolved提供了更多的功能特性,比如支持动态更新、更好的安全性和稳定性管理,以及与其他系统组件更好的集成,直接编辑/etc/resolv.conf
虽然简单,但在现代Linux发行版中逐渐被淘汰,因为它不具备这些高级特性。
通过以上步骤,您可以根据实际需求灵活地在Ubuntu 18.04系统中配置和管理DNS设置,无论是为了提高浏览体验还是解决