Удалить DNS-сервер из systemd-resolved?

Aug 26 2020

Я подключился к openconnectVPN, как вещь, и он добавил DNS-сервер (и DNS-домен) к моему systemd-resolved, и они не работают, поэтому использование Интернета замедляется, потому что каждый новый запрос должен ждать тайм-аута до сломанный DNS-сервер, прежде чем перейти на рабочий, изначально настроенный DNS-сервер (я полагаю ).

Как я могу удалить этот DNS-сервер systemd-resolved?

$ systemd-resolve --status
Global
         DNS Servers: 10.127.201.221
                      10.63.101.221
                      172.25.2.253
          DNS Domain: blah1.example
                      example.com
          DNSSEC NTA: 10.in-addr.arpa
          ...

Ubuntu Linux 18.04. systemd v237

Ответы

111--- Aug 26 2020 at 19:43

Systemd <v239

Команда, которая вам нужна, должна быть:

systemd-resolve --interface=tun0 --revert

Где tun0будет интерфейс для удаления настроек DNS:

--revert
       Revert the per-interface DNS configuration. This option must be combined with
       --interface= to indicate the network interface the DNS configuration shall be reverted
       on. If the DNS configuration is reverted all per-interface DNS setting are reset to
       their defaults, undoing all effects of --set-dns=, --set-domain=, --set-llmnr=,
       --set-mdns=, --set-dnssec=, --set-nta=. Note that when a network interface disappears
       all configuration is lost automatically, an explicit reverting is not necessary in
       that case.

Похоже, эти инструменты были изменены в systemd v239 (который на самом деле был на моей тестовой машине Bionic).

Systemd> = v239

Приведенная выше команда должна быть доступна в более новой версии systemd, если нет, попробуйте resolvectlкоманду revert. Вам понадобится имя интерфейса ссылки, которую вы хотите сбросить. Пример:

sudo resolvectl revert tun0

Из resolvectlруководства:

вернуть ССЫЛКУ

Отмените конфигурацию DNS для каждого интерфейса. Если конфигурация DNS отменяется, все настройки DNS для каждого интерфейса сбрасываются до значений по умолчанию, отменяя все эффекты dns, domain, llmnr, mdns, dnssec, dnsovertls, nta. Обратите внимание, что когда сетевой интерфейс исчезает, вся конфигурация автоматически теряется, в этом случае явное восстановление не требуется.

Поскольку systemd-resolved связывает DNS-серверы с сетевыми интерфейсами, это должно отбросить DNS-серверы, о которых он узнал из этого интерфейса.

Примечания, разрешенные системой

Это поведение также systemd-resolvedупоминается в этой ручной записи, в соответствующей выдержке:

Другие имена с несколькими метками направляются на все локальные интерфейсы, на которых настроен DNS-сервер, а также на глобально настроенный DNS-сервер, если он есть.

Я считаю, что вы хотите сказать systemd-resolved, чтобы он забыл о DNS-серверах для вашего туннельного интерфейса, resolvectl revertпохоже, это способ сделать это.