如何使用 nmcli 设置设备的 DNS 服务器?

Thu*_*fir 5 command-line network-manager networking dns nmcli

如何通过CLI设置DNS服务器8.8.8.88.8.4.4nmcli

$ nmcli device show eno1
GENERAL.DEVICE:                         eno1
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         C8:9C:DC:28:86:CA
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     Wired connection 1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.1.6/24
IP4.GATEWAY:                            192.168.1.1
IP4.ROUTE[1]:                           dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP4.DNS[1]:                             192.168.1.1
IP6.ADDRESS[1]:                         fe80::49c7:61b4:886f:27e9/64
IP6.GATEWAY:                            --
Run Code Online (Sandbox Code Playgroud)

Wired Connection 1通过 GUI 配置的 正在使用这些 DNS 设置:

$ nmcli con show
NAME                UUID                                  TYPE             DEVICE  
Wired connection 1  f5687342-d1bd-3e5e-83a1-a1e2ec627d3c  802-3-ethernet   eno1    
docker0             84b0d93b-f4f7-4b52-a6cb-800d161f0954  bridge           docker0 
virbr0              024c6c7a-12f4-49ad-92b3-434106caad25  bridge           virbr0  
vici                c19aafd8-fa10-4577-a748-dee4cb684675  802-11-wireless  --      
Run Code Online (Sandbox Code Playgroud)

详细地:

$ nmcli con show Wired_connection_1 | grep ipv4.dns
ipv4.dns:                               8.8.8.8,8.8.4.4
ipv4.dns-search:                        --
ipv4.dns-options:                       (default)
ipv4.dns-priority:                      0
Run Code Online (Sandbox Code Playgroud)

但我想使用nmclito应用该配置eno1

有点切题的是,Ubuntu 的 DNS 配置似乎有问题,也许是一个错误。(我受到这个错误的影响,就其显示而言resolve.conf

也许

sudo nmcli dev set enp8s0 managed yes
Run Code Online (Sandbox Code Playgroud)

或类似...

小智 7

要添加自定义 DNS 服务器,请使用

nmcli connection modify Wired_connection_1 ipv4.dns "192.168.1.1,8.8.8.8,8.8.4.4" 
Run Code Online (Sandbox Code Playgroud)

检查配置是否正确使用

nmcli connection show Wired_connection_1 | grep "dns"

ipv4.dns:                               192.168.1.1,8.8.8.8,8.8.4.4
ipv4.dns-search:                        --
ipv4.dns-options:                       (default)
ipv4.dns-priority:                      0
ipv4.ignore-auto-dns:                   no
ipv6.dns:                               --
ipv6.dns-search:                        --
ipv6.dns-options:                       (default)
ipv6.dns-priority:                      0
ipv6.ignore-auto-dns:                   no
Run Code Online (Sandbox Code Playgroud)

我偶然发现了同样的问题,如果我删除192.168.1.1然后由于一些内部 vmware 网络桥接它不起作用,但要设置额外的 dns 服务器,您可以使用上述方法。