/etc/resolv.conf
文件来设置 DNS。,,``,nameserver 8.8.8.8,nameserver 8.8.4.4,
`,保存后重启网络服务或使用
systemctl restart networkmanager` 使设置生效。在Linux系统中,DNS(Domain Name System)的设置对于网络通信至关重要,它能够将易于记忆的域名转换为计算机可识别的IP地址,以下是关于如何在Linux中设置DNS的详细内容:
一、通过修改/etc/resolv.conf文件设置DNS
步骤 | 操作详情 | 说明 |
1 | 打开终端,使用root用户或者sudo权限进入编辑模式,例如使用vi或者nano编辑器打开网络配置文件/etc/resolv.conf。sudo vi /etc/resolv.conf | 这是传统的设置DNS的方法,适用于大多数Linux发行版 |
2 | 在文件中添加或修改nameserver行,指定DNS服务器的IP地址,可以添加多个nameserver行,按顺序使用多个DNS服务器。nameserver 8.8.8.8 nameserver 114.114.114.114 | 这里以Google的公共DNS和中国移动的公共DNS为例,你可以根据需要选择其他DNS服务器地址 |
3 | 保存文件并退出编辑器,在Vim中按Esc键,然后输入:wq保存并退出 | 确保配置生效 |
4 | 重启网络服务,使修改生效,可以使用以下命令重启网络服务:sudo service networking restart (适用于一些较老的Linux发行版)sudo systemctl restart network (适用于较新的基于systemd的系统) | 不同Linux发行版的网络服务管理方式可能略有不同 |
二、使用NetworkManager图形界面设置DNS(适用于GNOME桌面环境)
步骤 | 操作详情 | 说明 |
1 | 打开系统设置,找到网络设置选项,一般可以通过点击屏幕右上角的网络图标,然后选择“设置”或“编辑连接”等类似选项进入网络设置界面 | 不同Linux发行版的界面可能会有所不同 |
2 | 进入网络设置界面后,选择你正在使用的网络连接,可以是WiFi或有线连接,如果连接名称没有显示,可能需要先点击“+”号或其他添加连接的按钮来创建新的连接配置文件 | |
3 | 在该连接的设置窗口中,找到DNS选项,通常在“IPv4”或“IPv6”设置区域下方可以找到DNS相关的设置选项 | 具体位置可能因不同的NetworkManager版本而有所差异 |
4 | 添加你想要使用的DNS服务器的IP地址,并保存修改,可以点击“应用”或“保存”按钮来确认修改 |
三、使用nmcli命令行工具设置DNS
步骤 | 操作详情 | 说明 |
1 | 打开终端,使用root用户或者sudo权限执行以下命令查看当前的网络连接名称。nmcli connection show | 该命令会列出系统中所有的网络连接及其相关信息,包括连接名称、设备名称等 |
2 | 确定要配置DNS的网络连接名称后,使用nmcli命令修改该连接的DNS服务器地址,要将名为“eth0”的网络连接的DNS设置为8.8.8.8和8.8.4.4,可以使用以下命令:sudo nmcli con mod eth0 ipv4.dns "8.8.8.8 8.8.4.4" | 这里的“eth0”需要替换为你实际的网络连接名称 |
3 | 重启网络服务,使修改生效,可以使用以下命令重启网络服务:sudo service networking restart (适用于一些较老的Linux发行版)sudo systemctl restart NetworkManager (适用于使用NetworkManager的系统) |
四、锁定/etc/resolv.conf文件(可选)
步骤 | 操作详情 | 说明 |
1 | 为了防止网络配置工具或服务自动修改/etc/resolv.conf文件,可以使用chattr命令锁定该文件。sudo chattr +i /etc/resolv.conf | 该命令会将/etc/resolv.conf文件的属性设置为不可更改,从而保护其内容不被意外修改 |
2 | 如果需要修改锁定的文件,可以使用以下命令解锁:sudo chattr i /etc/resolv.conf |
五、验证DNS配置
方法 | 操作命令 | 预期结果 |
在DNS服务器上 | 使用namedcheckconf和namedcheckzone命令检查配置文件和区域文件的语法是否正确。namedcheckconf namedcheckzone | 如果配置文件和区域文件语法正确,命令将不会输出任何错误信息;否则,会提示具体的错误信息及位置,需要根据提示进行修改。 |
在DNS客户端上 | 配置完成后,可以使用nslookup或dig命令测试DNS解析是否正常工作。nslookup google.com dig google.com | 如果DNS配置正确,nslookup命令将返回查询域名对应的IP地址等信息;dig命令将提供更详细的DNS查询结果,包括查询时间、TTL值等,如果DNS解析失败,将提示相应的错误信息,需要检查DNS服务器地址、网络连接等配置是否正确。 |
六、注意事项
安全性:在配置DNS服务器时,要确保遵循最佳的安全实践,如使用防火墙限制不必要的访问、定期更新BIND软件以修复安全漏洞等,以防止DNS服务器被攻击或滥用。
兼容性:如果你的系统使用了NetworkManager或其他网络管理工具,则可能需要通过不同的方式配置DNS,例如通过NetworkManager的图形界面或配置文件,在某些情况下,/etc/resolv.conf文件可能会被自动更新(由NetworkManager或systemdresolved服务管理),在这种情况下,你可能需要配置这些服务以使用你指定的DNS服务器地址。
备份:在进行任何重要的配置文件修改之前,建议先备份相关文件,以防修改过程中出现错误导致系统无法正常解析域名。
相关问题与解答
问题1:在Linux中修改了/etc/resolv.conf文件设置了DNS,但是重启网络服务后发现DNS并没有生效,可能是什么原因?
解答:这种情况可能是由于以下原因导致的:
文件权限问题:确保你对/etc/resolv.conf文件具有写入权限,如果没有权限,可以使用sudo
命令提权进行修改,使用sudo vi /etc/resolv.conf
命令打开文件进行编辑。
配置文件被覆盖:某些Linux发行版或网络管理工具可能会在后台自动管理/etc/resolv.conf文件,NetworkManager或systemdresolved服务可能会在启动时覆盖手动修改的内容,你可以尝试关闭这些服务的自动管理功能(不推荐,除非明确知道这样做的后果),或者将其配置为使用你指定的DNS服务器地址,对于NetworkManager,可以编辑相关的配置文件或使用命令行工具进行设置;对于systemdresolved,可以编辑/etc/systemd/resolved.conf文件并在[Resolve]部分添加DNS=
选项来指定DNS服务器地址。
网络服务未真正重启:虽然执行了重启网络服务的命令,但可能在实际操作中网络服务并没有完全停止和重新启动,可以尝试先停止网络服务,等待几秒钟后再启动,以确保服务彻底重启,使用sudo systemctl stop network
和sudo systemctl start network
命令分别停止和启动网络服务。
问题2:如何在Linux中使用命令行快速查看当前系统使用的DNS服务器地址?
解答:可以使用以下命令查看当前系统的DNS服务器地址:
cat命令:使用cat /etc/resolv.conf
命令可以直接查看/etc/resolv.conf文件中的内容,其中包含系统的DNS服务器地址信息,该文件中的nameserver行后面跟随的IP地址就是当前系统使用的DNS服务器地址。
nameserver 8.8.8.8 nameserver 114.114.114.114
表示当前系统的DNS服务器地址为8.8.8.8和114.114.114.114。
nmcli命令:如果系统使用了NetworkManager,可以使用nmcli device show
命令查看网络设备的详细信息,其中包括DNS服务器地址。
GENERAL.DEVICE: eth0 GENERAL.TYPE: ethernet GENERAL.HWADDR: 00:1A:2B:3C:4D:5E GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: Wired connection 1 GENERAL.CONID: 22 GENERAL.UUID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx GENERAL.IP4.ADDRESS[1]: 192.168.1.100/24 GENERAL.IP4.PRIMARY: yes GENERAL.IP4.GATEWAY: 192.168.1.1 GENERAL.IP4.DNS[1]: 8.8.8.8 GENERAL.IP4.DNS[2]: 114.114.114.114
上述示例中,GENERAL.IP4.DNS后面的IP地址就是当前系统的DNS服务器地址。