DNS не работает, /etc/resolv.conf не перезаписывается. Зачем?

У меня есть эта конфигурация на моем сервере в соединении Network Manager:

/etc/NetworkManager/system-connections/wired-connection

[connection]
id=wired-connection
uuid=0c501f08acc5497cb7...
type=8023ethernet

[8023ethernet]

[ipv4]
method=manual
dns=8.8.8.8;
address1=192.168.1.250/24,192.168.1.1

[ipv6]
method=auto
ip6privacy=0

/etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq

[ifupdown]
managed=true

Но мой файл /etc/resolv.conf (символическая ссылка) не перезаписывается администратором сети. Если я добавлю вручную строку nameserver 8.8.8.8 к файлу это работает хорошо, но это только временное решение. Если я открою конфигурацию IP, в интерфейсе Kubuntu я вижу поля DNS пустыми.

Я также пытался с этой командой, но она не работалаdpkg-reconfigure resolvconf

Маршрут моего исходного файла конфигурации находится в /run/resolvconf/resolv.conf

И я нашел этот файл, он принадлежит к старой конфигурации /etc/resolvconf/resolv.conf.d/original

nameserver 213.60.205.175
nameserver 213.60.205.174
nameserver 212.51.33.110

Должен ли я удалить или отредактировать этот файл, чтобы он работал?

Я могу получить только удаленный доступ к серверу, поэтому хочу быть уверенным, что это сработает. Если бы не я мог разорвать связь

заранее спасибо

Обновление 03/08/15. Выход из /usr/share/resolvconf/dump-debug-info

###### Start of debugging information for resolvconf ######
### ls -l /etc/resolvconf
total 16
-rw-r--r-- 1 root root  172 dic 13  2012 interface-order
drwxr-xr-x 2 root root 4096 jul  8 18:33 resolv.conf.d
drwxr-xr-x 2 root root 4096 jul  8 18:33 update.d
drwxr-xr-x 2 root root 4096 jul  8 19:11 update-libc.d
### cat /etc/resolvconf/interface-order
# interface-order(5)
lo.inet*
lo.dnsmasq
lo.pdnsd
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
hso*
em+([0-9])?(_+([0-9]))*
p+([0-9])p+([0-9])?(_+([0-9]))*
eth*
ath*
wlan*
ppp*
*
### ls -l /etc/resolvconf/resolv.conf.d
total 8
-rw-r--r-- 1 root root   0 dic 13  2012 base
-rw-r--r-- 1 root root 151 dic 13  2012 head
-rw-r--r-- 1 root root  77 jul  8 18:21 original
-rw-r--r-- 1 root root   0 jul  8 18:26 tail
### cat /etc/resolvconf/resolv.conf.d/base
### cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
### cat /etc/resolvconf/resolv.conf.d/original
nameserver 213.60.205.175
nameserver 213.60.205.174
nameserver 212.51.33.110
### cat /etc/resolvconf/resolv.conf.d/tail
### ls -l /etc/resolvconf/run
ls: no se puede acceder a /etc/resolvconf/run: No existe el archivo o el directorio
### ls -l /run/resolvconf
total 4
-rw-r--r-- 1 root root   0 jul 29 10:10 enable-updates
drwxr-xr-x 2 root root  40 jul 29 10:10 interface
-rw-r--r-- 1 root root 151 ago  3 09:40 resolv.conf
### cat /run/resolvconf/enable-updates
### cat /run/resolvconf/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
### ls -l /run/resolvconf/interface
total 0
### ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 29 jul 24 12:59 /etc/resolv.conf -> ../run/resolvconf/resolv.conf
### lsattr /etc/resolv.conf
lsattr: La operación no está soportada Mientras se leían las banderas en /etc/resolv.conf
### cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
### cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq

[ifupdown]
managed=true
###### End of debugging information for resolvconf ######

Я использую Kubuntu 14.04, кстати

3 ответа

Исполняемый двоичный файл dnsmasq включен в пакет dnsmasq-base.

когда dns=dnsmasq в NetworkManager.conf отображается без комментариев, NetworkManager запускает экземпляр dnsmasq, который служит в качестве локального сервера пересылки имен.

dnsmasq В пакет входят файлы конфигурации, которые поддерживают запуск экземпляра dnsmasq независимо от NetworkManager. Последний экземпляр dnsmasq настраивается с помощью /etc/dnsmasq.conf.

resolvconf Утилита используется конфигураторами сетевого интерфейса для управления информацией сервера имен. На основании предоставленной информации он записывает файл /run/resolvconf/resolv.conf, который предназначен для настройки решателя libc. Файл активируется в этой роли путем создания символической ссылки из /etc/resolv.conf на /run/resolvconf/resolv.conf.

NetworkManager и ifup отправляют информацию сервера имен в resolvconf. Обычно /etc/resolv.conf является символической ссылкой на /run/resolvconf/resolv.conf, и все работает хорошо.

В случае dns=dnsmasq в NetworkManager.conf отображается без комментариев, NetworkManager предоставляет resolvconf с адресом сервера имен 127.0.1.1, который появляется в resolv.conf; Подчиненный процесс dnsmasq NetworkManager прослушивает по адресу 127.0.1.1 и пересылает запросы на внешние серверы имен по адресам, о которых NetworkManager настроен, чтобы узнать о них или узнал через DHCP.

Первое замечание спрашивающего:

But my file /etc/resolv.conf (symbolic link) is not overwritten by the Network Manager. 

Это указывает на неправильную конфигурацию. /etc/resolv.conf должен быть символической ссылкой на /run/resolvconf/resolv.conf, а resolvconf должен обновлять последний, когда какой-либо сетевой интерфейс настроен или отключен. Учитывая, что у вас есть dns=dnsmasq в NetworkManager.conf, nameserver строка в resolv.conf должна быть nameserver 127.0.1.1, если у вас не запущен экземпляр сервера dnsmasq, в этом случае это может быть nameserver 127.0.0.1, таким образом, указав преобразователю libc использовать экземпляр сервера dnsmasq, который прослушивает 127.0.0.1.

Следующий вопрос спрашивающего:

[...] /etc/resolvconf/resolv.conf.d/original [...]
Should I remove or edit this file to make it work?

Этот файл (original), который является просто копией /etc/resolv.conf во время установки пакета resolvconf, обычно не имеет никакого эффекта. Он сохраняется пакетом resolvconf на случай, если пакет удален, а затем original файл возвращается в /etc/resolv.conf. В некоторых случаях /etc/resolvconf/resolv.conf.d/tail является символической ссылкой на original но это нестандартно, и если это верно для вашей системы, то вы должны изменить /etc/resolvconf/resolv.conf.d/tail на пустой файл или символическую ссылку на /dev/null,

Для меня сработало включение службы resolvconf:

sudo systemctl enable resolvconf
sudo reboot

Проблема заключалась в том, что resolvconf не запускался при запуске после установки какого-то дерьма VPN.

Кажется, вы используете dnsmasq который является кеширующим DNS-сервером.

Если вы хотите добавить DNS-сервер, вы можете выполнить эту команду:

echo nameserver X.X.X.X | sudo resolvconf -a IFACE.PROGNAME
sudo service dnsmasq restart 

где IFACE.PROGNAME - это имя сети, которую вы используете (eth0, eth1, wlan0...)

Для постоянного изменения вы можете создать /etc/resolv.dnsmasq.conf с

nameserver  8.8.8.8

и отредактируйте /etc/dnsmasq.conf и установите:

resolv-file=/etc/resolv.dnsmasq.conf

Другим решением может быть отключение использования dnsmasq, комментируя строку

dns=dnsmasq

в файле /etc/NetworkManager/NetworkManager.conf. И используйте файл /etc/resolv.conf.

Другие вопросы по тегам