У меня CentOS 7.2 (гость в VirtualBox, бродячий ящик centos / 7
, без GUI).
Я вижу, что в файле есть сервер имен :
$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.2.3
А как добавить или заменить новым?
Я сделал это вручную прямо в сети:
$ vi /etc/sysconfig/network-scripts/ifcfg-eth0
PEERDNS=no
DNS1=91.217.197.2
DNS2=8.8.8.8
И работает.
Но есть ли способ сделать это через nmcli
?
PS № nmtui
установлен (в выбранной системе).
Вот команда для изменения существующего соединения.
nmcli con mod <connectionName> ipv4.dns "8.8.8.8 8.8.4.4"
connectionName
можно найти с помощью команды: nmcli con
. В случае вопроса это будет "System eth0"
Если вы хотите игнорировать автоматически настроенные серверы имен и поисковые домены, то есть настройки, переданные от DHCP.
nmcli con mod <connectionName> ipv4.ignore-auto-dns yes
Наконец, чтобы включить изменения, установите соединение вниз, затем вверх:
nmcli con down <connectionName>
nmcli con up <connectionName>
Проверить с помощью cat /etc/resolv.conf
.Вы не должны редактировать /etc/resolv.conf
вручную, поскольку он создается службой NetworkManager, он может быть переопределен в любой момент времени.
существует хороший инструмент TUI, разработанный красной шляпой под названием nmtui
, который вам действительно стоит попробовать. в настоящее время он предустановлен в различных дистрибутивах, но если его нет в вашем, попробуйте:
sudo yum install networkmanager-tui
он использует текстовый интерфейс на основе curses, доступный из командной строки. nmcli
особенно необходим только при написании сценариев и имеет больше места для ошибок из-за большего разнообразия возможных входных данных.
В дополнение к настройке свойства ipv4.dns, описанного выше ...
Чтобы исключить DNS-серверы, предоставляемые DHCP ... установите для свойства ipv4.ignore-auto-dns значение yes.
nmcli con mod <connectionName> ipv4.ignore-auto-dns yes
Чтобы включить изменения , отключите соединение, затем включите:
nmcli con down <connectionName>
nmcli con up <connectionName>
Проверьте с помощью cat /etc/resolv.conf[123 visible
На всякий случай я сделал небольшой скрипт, чтобы сделать это автоматически (здесь с помощью Google DNS) для каждого Ethernet/беспроводного соединения:
nmcli -g name,type connection show --active | awk -F: '/ethernet|wireless/ { print $1 }' | while read connection
do
nmcli con mod "$connection" ipv6.ignore-auto-dns yes
nmcli con mod "$connection" ipv4.ignore-auto-dns yes
nmcli con mod "$connection" ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con down "$connection" && nmcli con up "$connection"
done
В конце беспроводное соединение будет потеряно. Вы должны переподключиться и вуаля!