История изменений
Исправление intelfx, (текущая версия) :
Как обещал, вариант 2. К сожалению, глобальная конфигурация NetworkManager недостаточно гибкая для вышеописанной задачи (управление DNS в ней настраивается исключительно в режиме «всё или ничего»), поэтому представляю вашему вниманию небольшой хак.
- Включаешь systemd-resolved и systemd-networkd:
systemctl enable systemd-networkd systemd-resolved
systemctl stop NetworkManager
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
- Для каждого интерфейса, который ты хочешь перевести на кастомные DNS-сервера, создаёшь конфигурацию systemd-networkd следующего вида в файле
/etc/systemd/network/10-<имя интерфейса>.network
:
[Match]
Name=<имя интерфейса>
[Link]
RequiredForOnline=no
ActivationPolicy=manual
[Network]
KeepConfiguration=yes
ConfigureWithoutCarrier=yes
IgnoreCarrierLoss=yes
DNS=<интересующие тебя DNS-сервера>
Domains=
DNSDefaultRoute=yes
- Запускаешь всё:
systemctl start systemd-networkd systemd-resolved NetworkManager
В результате адреса на этом интерфейсе будут настраиваться штатно через NM, а список DNS-серверов на интерфейсе (кастомный) будет принудительно задаваться из конфига systemd-networkd.
Исходная версия intelfx, :
Как обещал, вариант 2. К сожалению, глобальная конфигурация NetworkManager недостаточно гибкая для вышеописанной задачи (управление DNS в ней настраивается исключительно в режиме «всё или ничего»), поэтому представляю вашему вниманию небольшой хак.
- Включаешь systemd-resolved и systemd-networkd:
systemctl enable systemd-networkd systemd-resolved
systemctl stop NetworkManager
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
- Вписываешь интересующие тебя сервера в
/etc/systemd/resolved.conf
:
[Resolve]
DNS=<интересующие тебя DNS-сервера>
- Для каждого интерфейса, который ты хочешь перевести на кастомные DNS-сервера, создаёшь конфигурацию systemd-networkd следующего вида в файле
/etc/systemd/network/10-<имя интерфейса>.network
:
[Match]
Name=<имя интерфейса>
[Link]
RequiredForOnline=no
ActivationPolicy=manual
[Network]
KeepConfiguration=yes
ConfigureWithoutCarrier=yes
IgnoreCarrierLoss=yes
DNS=
Domains=
DNSDefaultRoute=no
- Выключаешь в
/etc/NetworkManager/NetworkManager.conf
проверку connectivity (к сожалению, она конфликтует по смыслу с вышеописанной задачей, т. к. во время connectivity check NM использует только per-interface DNS и принудительно игнорирует глобальные DNS):
[connectivity]
enabled=false
- Запускаешь всё:
systemctl start systemd-networkd systemd-resolved NetworkManager
В результате адреса на этом интерфейсе будут настраиваться штатно через NM, а список DNS-серверов на интерфейсе (пустой) будет принудительно задаваться из конфига systemd-networkd.