问题描述:
操作系统是ubuntu16.10,内核版本为,出现网络域名无法解析的问题。每次重启后都会出现
解决方案:
1、关闭dnsmasq进程使用默认的系统DNS解析
2、查看/var/run/NetworkManager/resolv.conf文件,默认只使用最上面三个dns解析
3、使用自定义的dns解析,可以采用后文的第二种办法,使得自动设置的dns生效,不然默认会先用路由器的dns解析
4、systemctl disable systemd-resolved.service,关闭本地解析
这可能是一个问题。
1. 为什么dns修改没用
deepin的控制中心是直接简单通过dbus来操作networkmanager来保存网络配置。但是在ip自动获取的情况下,它手动修改dns之后,却并没有将dhcp的dns获取给关闭。所以你在resolv.conf可以看到还最前面保留着你路由器的dns,而解析是按顺序来的,你路由器的dns可以解析之后,自然不会用你配置的dns地址解析。
2. 手动修改resolv.conf
这是非常不赞成的,修改只是临时的。因为这文件算是临时文件,每次都会自动产生的,而不是一直固定存在的配置文件。像是ubuntu使用resolvconf命令来管理,而deepin是直接用network manager来管理,你可以在/etc/NetworkManager/system-connections文件夹里看到网络的配置文件。每次在连接网络的时候,他会自动配置这个文件配置,里面的dns当然也会被配置,然后resolv.conf就会被覆盖。
大概就是这样。
解决方案,两种方法:
1. 修改/etc/dhcp/dhclient.conf文件。里面有个prepend domain-name-servers这个值,后面改成你要的dns地址。那么这个dns地址就会永远再首位。以后可能还要改回来,麻烦,不建议。
2. 使用nmcli命令来管理,首先你使用
- nmcli device status
找到你连接的链接名,就是connect字段。我这边名称叫做“有线连接”。其实就是你的网络配置文件名。然后使用
- nmcli con modify '有线连接' ipv4.ignore-auto-dns yes
- 这样会然nmcli忽视dhcp获得dns。这个命令配置只有对当前的配置网络有效。比如你换到另一个网络,那就无效了。