После обновления 16.04 до 16.10 у меня возникли проблемы с DNS.
Сначала у меня пару раз возникали проблемы при подключении к WiFi, пока он работал по Ethernet. Теперь, кажется, работает и по WiFi. Не уверен, почему, и если это каким-либо образом связано с проблемой, с которой я сталкиваюсь сейчас:
При подключении к хосту VPN с Cisco AnyConnect VPN , это добавляет строку в «/etc/resolv.conf» . Я понимаю, что в Ubuntu сейчас используется systemd-resolver , и на странице руководства сказано, что есть три разных режима для работы с /etc/resolv.conf. Мой /etc/resolv.conf не является символической ссылкой и не перечисляет 127.0.0.53 в качестве DNS-сервера, поэтому, насколько я понимаю, systemd-resolved должен «прочитать его для данных конфигурации DNS». Однако, это, кажется, не заботится об этом.
копать землю
Странная вещь (для меня) заключается в том dig host.customer.tld
, что возвращает хороший ответ с РАЗДЕЛОМ ОТВЕТА, показывающим IP запрашиваемого хоста, и ссылается на сервер DNS, добавленный в /etc/resolv.conf клиентом vpn, в качестве СЕРВЕРА. Когда vpn соединение отключено, я не получаю ответа. Т.е. dig читает /etc/resolv.conf .
пинг
Браузер, с другой стороны, не попадает в /etc/resolv.conf и не может определить имя хоста. Между прочим, это не пинг / завиток.
nmcli
Я нашел соответствующий пост и попытался запустить
nmcli device show <interfacename> | grep IP4.DNS
но в нем нет DNS для устройства cscotun0. (Однако в 16.04 этого не происходит.) Кроме того, nmcli перечисляет мой dhcp-сервер (мой маршрутизатор) как хост IP4.DNS для моих соединений eth / wlan. Использование dig @192.168.0.1 xxx
для любого общественного достояния работает нормально.
конфигурация
В моем /run/systemd/resolve/resolv.conf перечислены некоторые другие DNS-серверы:
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 2001:4860:4860::8888
# Too many DNS servers configured, the following entries may be ignored.
nameserver 2001:4860:4860::8844
Они не обслуживаются моим сервером DHCP. файл /etc/systemd/resolved.conf содержит только закомментированные строки, кроме заголовка раздела:
[Resolve]
#DNS=
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Страница man для resolved.conf говорит, что
DNS = список разделенных пробелами адресов IPv4 и IPv6 для использования в качестве системных DNS-серверов. ... По соображениям совместимости, если этот параметр не указан, вместо него используются DNS-серверы, указанные в /etc/resolv.conf, если этот файл существует и в нем настроены все серверы. Этот параметр по умолчанию равен пустому списку.
FallbackDNS = разделенный пробелами список адресов IPv4 и IPv6 для использования в качестве резервных DNS-серверов. Любые DNS-серверы для каждой ссылки, полученные из systemd-networkd.service (8), имеют приоритет над этим параметром, как и любые серверы, установленные с помощью DNS = выше или /etc/resolv.conf. Следовательно, этот параметр используется только в том случае, если другая информация DNS-сервера не известна. Если эта опция не указана, вместо нее используется скомпилированный список DNS-серверов.
Похоже, запасной вариант в моем случае заканчивается в /run/systemd/resolve/resolv.conf.
РЕДАКТИРОВАТЬ: Я не был уверен, в чем была проблема, и, честно говоря, я до сих пор не знаю точно, как это работает, но по крайней мере оказалось, что решение в моем случае было отключить systemd-resolved
службу. Я думал, что эта услуга необходима, что это компонент, который обеспечивает DNS-сервис для всех локальных приложений, но, видимо, в этой работе есть что-то еще.