How to manage DNS in NetworkManager via console (nmcli)?
Solution 1:
Here is the command to modify an existing connection.
nmcli con mod <connectionName> ipv4.dns "8.8.8.8 8.8.4.4"
connectionName
can be found by command: nmcli con
. In the question case, it will be "System eth0"
If you want to ignore automatically configured nameservers and search domains, ie the settings passed from DHCP.
nmcli con mod <connectionName> ipv4.ignore-auto-dns yes
Finally, to enable the changes, bring the connection down then up:
nmcli con down <connectionName>
nmcli con up <connectionName>
Verify with cat /etc/resolv.conf
. You should not edit /etc/resolv.conf
manually as it is generated by NetworkManager service, it is likely to get overridden at any given time.
Useful nmcli manual
Solution 2:
there is good TUI tool developed by red hat named nmtui
that you really should try. it is pre-installed on various distros, nowadays, but if it is not on yours, try:
sudo yum install networkmanager-tui
it uses a curses based text interface - accessible from the command line. nmcli
is only especially necessary when writing scripts, and has larger room for error due to the larger variety of possible input.
Solution 3:
In addition to setting the ipv4.dns property described above...
To exclude the DHCP provided DNS servers...set the ipv4.ignore-auto-dns property to yes.
nmcli con mod <connectionName> ipv4.ignore-auto-dns yes
To enable the changes, bring the connection down then up:
nmcli con down <connectionName>
nmcli con up <connectionName>
Verify with cat /etc/resolv.conf