Избегайте DNSMASQ вносить изменения в resolv.conf

Не удалось найти обходной путь для dnsmasq, чтобы не вносить изменения в файл /etc/resolv.conf.

редактирование файла init.d/dnsmasq не является полной опцией, так как не во всех версиях Ubuntu dnsmasq запускается через init.d

надеюсь, вы можете помочь!

2 ответа

Проблема в том, что Network Manager динамически использует ваш /etc/resolv.conf с dnsmasq

Решение для вас, чтобы изменить способ разрешения имен. Попробуйте следовать

В /etc/NetworkManager/NetworkManager.conf закомментировать dns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

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

no-auto-default=00:22:64:4E:6F:70,

[ifupdown]
managed=fals

и перезапустите службу NM

sudo restart network-manager

С этим /etc/resolv.conf больше не зависит от resolvconf пакет и обновляется на основе записей DNS каждого соединения в диспетчере сети

Также вы можете добавить nameserver в /etc/resolv.conf, Если вы не установили днс в NM для соединения, это будет использоваться

sudo nano /etc/resolv.conf

nameserver 8.8.4.4
nameserver 8.8.8.8

Редактировать один

Остановить службу resolvconf

sudo service resolvconf stop

отключи это

update-rc.d resolvconf disable

запрещать resolvconf перезаписать resolv.conf

Создайте /etc/init/resolvconf.override с одной строкой manual

echo 'manual' | sudo tee /etc/init/resolvconf.override

удалить символическую ссылку /etc/resolv.conf

rm /etc/resolv.conf

Создайте resolv.conf со статическим входом днс

echo "namserver x.x.x.x." > /etc/resolv.conf

Вы можете попробовать установить chattr на неизменяемый.

chattr +i /path/to/filename

Чтобы удалить неизменяемый, чтобы разрешить изменения, снова измените флаг в файле.

chattr -i /path/to/filename

Это может решить, а может и не решить вашу проблему, но у меня была похожая проблема, когда dnsmasq (ну, фактически, комбинация dnsmasq и resolvconf) переписывал мой файл /etc/resolv.conf и игнорировал параметры dns-nameservers, которые я установил в / и т.д. / сети / интерфейсы.

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

Я получил его, чтобы сохранить записи dns-nameservers из /etc/network/interfaces путем перемещения моего интерфейса (p+([0-9])p+([0-9])?(_+([0-9]))* в моем случае) перед записью "lo.dnsmasq" в /etc/resolvconf/interface-order. Так что теперь вместо того, чтобы получать "nameserver 127.0.0.1" в качестве первой, последней и единственной записи сервера имен в /etc/resolv.conf, я получаю

nameserver <ipaddr.frometc.network.interfaces> nameserver <another.frometc.network.interfaces> nameserver 127.0.0.1 search <domains from /etc/network/interfaces>

Итак, теперь кажется, что resolvconf запускается, проверяет порядок интерфейса и добавляет записи из /etc/network/interfaces, соответствующие записям выше "lo.dnsmasq", затем вызывает процесс dnsmasq, чтобы добавить их в файл, но это как-то работает не совсем правильно и игнорирует все интерфейсы после этого.

Когда я пытался выяснить это, я безрезультатно искал, почему dnsmasq игнорировал /etc/network/interfaces. (Я был уверен, что dnsmasq был задействован, потому что это произошло вскоре после того, как я установил dnsmasq) Я не уверен, что это решит вашу проблему, но мне это показалось немного чище, чем просто удаление resolvconf.

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