Как управлять DNS в NetworkManager через консоль (nmcli)?

У меня 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 установлен (в выбранной системе).

7
задан 8 May 2018 в 08:55
4 ответа

Вот команда для изменения существующего соединения.

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, он может быть переопределен в любой момент времени.

Полезное руководство по nmcli

16
ответ дан 2 December 2019 в 23:13

существует хороший инструмент TUI, разработанный красной шляпой под названием nmtui , который вам действительно стоит попробовать. в настоящее время он предустановлен в различных дистрибутивах, но если его нет в вашем, попробуйте:

  sudo yum install networkmanager-tui

он использует текстовый интерфейс на основе curses, доступный из командной строки. nmcli особенно необходим только при написании сценариев и имеет больше места для ошибок из-за большего разнообразия возможных входных данных.

7
ответ дан 2 December 2019 в 23:13

В дополнение к настройке свойства 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

3
ответ дан 2 December 2019 в 23:13

На всякий случай я сделал небольшой скрипт, чтобы сделать это автоматически (здесь с помощью 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

В конце беспроводное соединение будет потеряно. Вы должны переподключиться и вуаля!

0
ответ дан 28 May 2021 в 07:39

Теги

Похожие вопросы