Loading

Linux NetworkManager 管理下DNS配置

系统重启后/etc/resolv.conf 被重置

[root@my-test-host ~]# cat /etc/resolv.conf 
# Generated by NetworkManager

当前网卡配置文件

[root@my-test-host ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

# Created by cloud-init on instance boot automatically, do not edit.
#
DEVICE=eth0
HWADDR=FA:16:3E:C1:B6:67
MTU=1450
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPADDR=10.200.5.164
PREFIX=24
GATEWAY=10.200.5.1
IPV6INIT=yes
IPV6ADDR=2409:8c60:2500:28::405:5a4/112
IPV6_DEFAULTGW=2409:8c60:2500:28::405:1
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
BOOTPROTO=none

使用nmcli添加DNS服务器

[root@my-test-host ~]# nmcli c modify "System eth0" ipv4.dns "10.200.5.4 10.200.6.4"

nmcli添加DNS后/etc/resolv.conf 中并没有相应的配置生成。此时也不能完成域名解析,也就是说虽然通过nmcli已经添加DNS server但系统最终还是会去/etc/resolv.conf查询dns server配置。

[root@my-test-host ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
[root@my-test-host ~]# nmcli c s "System eth0" |grep dns
connection.mdns: -1 (default)
ipv4.dns: 10.200.5.4,10.200.6.4
ipv4.dns-search: --
ipv4.dns-options: --
ipv4.dns-priority: 0
ipv4.ignore-auto-dns: no
ipv6.dns: --
ipv6.dns-search: --
ipv6.dns-options: --
ipv6.dns-priority: 0
ipv6.ignore-auto-dns: no
[root@my-test-host ~]# ping www.baidu.com
ping: www.baidu.com: Name or service not known

看网卡配置,多出的两条DNS配置是通过nmcli添加DNS时自动更新的。

[root@my-test-host ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
DEVICE=eth0
HWADDR=FA:16:3E:C1:B6:67
MTU=1450
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPADDR=10.200.5.164
PREFIX=24
GATEWAY=10.200.5.1
IPV6INIT=yes
IPV6ADDR=2409:8c60:2500:28::405:5a4/112
IPV6_DEFAULTGW=2409:8c60:2500:28::405:1
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
BOOTPROTO=none
DNS1=10.200.5.4
27 DNS2=10.200.6.4

尝试reload/load网卡配置,还是无法进行域名解析

[root@my-test-host ~]# nmcli c reload /etc/sysconfig/network-scripts/ifcfg-eth0
[root@my-test-host ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
[root@my-test-host ~]# ping www.baidu.com
ping: www.baidu.com: Name or service not known
[root@my-test-host ~]# nmcli c load /etc/sysconfig/network-scripts/ifcfg-eth0
[root@my-test-host ~]# ping www.baidu.com
ping: www.baidu.com: Name or service not known

重启NetworkManager 后/etc/resolv.conf 自动更新了DNS server

[root@my-test-host ~]# systemctl restart NetworkManager
[root@my-test-host ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 10.200.5.4
nameserver 10.200.6.4

通过命令nmcli清除DNS并重启NetworkManager,发现/etc/resolv.conf 中之前添加的nameserver并没有被清理,但ifcfg-eth0中的配置被清理了。也就是说重启NetworkManager会增加/etc/resolv.conf中的配置,但似乎不会删除已有配置。当然reboot/etc/resolv.conf还是会被重置的。

[root@my-test-host ~]# nmcli c modify "System eth0" ipv4.dns ""
[root@my-test-host ~]# systemctl restart NetworkManager
[root@my-test-host ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 10.200.5.4
nameserver 10.200.6.4
[root@my-test-host ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
DEVICE=eth0
HWADDR=FA:16:3E:C1:B6:67
MTU=1450
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPADDR=10.200.5.164
PREFIX=24
GATEWAY=10.200.5.1
IPV6INIT=yes
IPV6ADDR=2409:8c60:2500:28::405:5a4/112
IPV6_DEFAULTGW=2409:8c60:2500:28::405:1
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
BOOTPROTO=none
[root@my-test-host ~]#

再测试下发现,当通过nmcli清空DNS时,重启NetworkManager服务/etc/resolv.conf 不会被重置,但通过nmcli改变了原来DNS配置(也就是ifcfg-eth0中的配置),重启NetworkManage是会更新/etc/resolv.conf的。如果不想/etc/resolv.conf被重置可参考:https://www.cnblogs.com/my-show-time/p/14218751.html

[root@my-test-host ~]# nmcli c modify "System eth0" ipv4.dns "8.8.8.8"
[root@my-test-host ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
DEVICE=eth0
HWADDR=FA:16:3E:C1:B6:67
MTU=1450
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPADDR=10.198.5.164
PREFIX=24
GATEWAY=10.198.5.1
IPV6INIT=yes
IPV6ADDR=2409:8c60:2500:28::405:5a4/112
IPV6_DEFAULTGW=2409:8c60:2500:28::405:1
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
BOOTPROTO=none
DNS1=8.8.8.8
[root@my-test-host ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 10.198.5.4
nameserver 10.198.6.4
[root@my-test-host ~]# systemctl restart NetworkManager
[root@my-test-host ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 8.8.8.8
[root@my-test-host ~]# sed -i '/DNS1/d' /etc/sysconfig/network-scripts/ifcfg-eth0
[root@my-test-host ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
DEVICE=eth0
HWADDR=FA:16:3E:C1:B6:67
MTU=1450
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPADDR=10.198.5.164
PREFIX=24
GATEWAY=10.198.5.1
IPV6INIT=yes
IPV6ADDR=2409:8c60:2500:28::405:5a4/112
IPV6_DEFAULTGW=2409:8c60:2500:28::405:1
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
BOOTPROTO=none
[root@my-test-host ~]# systemctl restart NetworkManager
[root@my-test-host ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 8.8.8.8
[root@my-test-host ~]#
posted @ 2021-01-01 17:25  五月的麦田  阅读(6917)  评论(0编辑  收藏  举报