Я нуждаюсь в помощи, выясняя почему мой resolv.conf
продолжает изменяться на это, заставляя меня не смочь получить доступ к внешнему Интернету и только локальной сети:
$ cat /etc/resolv.conf
nameserver 192.168.16.1
domain localdomain
search localdomain
Я думал, что зафиксировал его путем избавления от петлевого интерфейса и добавления в интерфейсе eth0 в /etc/network/interfaces
с инструкциями относительно блога posterous jontsai.
Я попробовал вещи как выполнение:
$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 up
$ sudo /etc/init.d/networking restart
$ sudo dhclient
И затем вещи работали бы временно, и в конечном счете сервер имен в resolv.conf вернуться снова.
P.S. Я также отправил это на ubuntuforums.
Править: Существует по крайней мере еще одна программа помимо NetworkManager, в который это пишет resolv.conf
, и я знаю это потому что, когда я обновляю NetworkManager, resolv.conf
файл, который сгенерирован, имеет комментарий, в котором говорится # Generated by NetworkManager
, и версия, на которую это продолжает изменяться, не делает.
Таким образом, я пробую это:
while true; do echo listening; lsof | grep /etc/resolv.conf; echo sleeping; sleep 1; done
Редактирование 2:
Добавление вывода файлов:
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
Никакой такой файл как /etc/NetworkManager/NetworkManager.conf
$ sudo cat /etc/NetworkManager/system-connections/Auto\ Ethernet
[connection]
id=Auto Ethernet
uuid=#######omitted#######
type=802-3-ethernet
autoconnect=true
timestamp=1314377063
[ipv4]
method=auto
ignore-auto-routes=false
ignore-auto-dns=false
dhcp-send-hostname=false
never-default=false
[802-3-ethernet]
speed=0
duplex=full
auto-negotiate=true
mtu=0
[ipv6]
method=ignore
ignore-auto-routes=false
ignore-auto-dns=false
never-default=false
Вы можете сделать статические дополнения к /etc/resolv.conf
. Эти дополнения могут переопределять автоматически добавляемые вещи.
Сначала установите пакет resolvconf
.
Затем нажмите Alt+F2 и запустите gksudo nautilus
. Откройте /etc/resolvconf/resolv.conf.d/head
, если хотите добавить в начало файла; откройте /etc/resolvconf/resolv.conf.d/tail
, если хотите добавить в конец. Внесите изменения, сохраните/закройте файлы, а затем запустите sudo resolvconf -u
, чтобы применить изменения.
(К сожалению, я не помню, имеют ли настройки в начале или в конце файла наивысший приоритет.)
(В этом ответе содержатся способы исследования происходящего. Я могу дать реальное решение, если вы используете эти методы для сбора и предоставления дополнительной информации.)
Возможным триггером для, казалось бы, спонтанных обновлений /etc/resolv.conf
является момент, когда DHCP-аренда обновляется. Проверьте, на какой период времени вы получаете DHCP-аренду (это должно появиться в системных журналах, я думаю, в /var/log/syslog
).
Вы можете использовать auditd для того, чтобы узнать, что изменяет файл. Запустите демона (sudo service auditd start
) и скажите ему, чтобы он следил за изменениями в этом файле:
sudo auditctl -w /etc/resolv.conf -p w
Audit logs находятся в /var/log/audit/audit.log
. Вы увидите время, когда файл был изменен, и имя программы, которая его модифицировала.
Если у вас установлен пакет resolvconf
, Network Manager может наступать на ноги. Попробуйте выключить все сетевые интерфейсы, затем остановить сетевой менеджер (sudo service network-manager stop
), затем перезапустить его.
Я отключаю обновление разрешения -to
. conf
, создав файл с именем disable_make_resolv_conf
в /etc/dhcp3/dhclient-enter-hooks.d
#!/bin/sh
make_resolv_conf(){
}
Он заменяет стандартную функцию тем же именем, которое отвечает за обновление resolv.conf
.
У меня была точно такая же проблема - resolv.conf переписывался каждый раз при перезагрузке сервера.
Это было вызвано DHCP. Чтобы установить resolv.conf таким, каким я хочу его видеть, я отредактировал /etc/dhcp/dhclient.conf
и добавил следующее:
supersede domain-name "my.domain.com";
prepend domain-search "my.domain.com";
Фактически, вы можете немного контролировать свой файл resolv.conf. внесением изменений в это.
Надеюсь, это поможет.
Откройте терминал и введите
sudo chattr +i /etc/resolv.conf
+ i позаботится о том, чтобы файл не сбрасывался при загрузке даже с правами root.
Для отмены вышеуказанного
sudo chattr -i /etc/resolv.conf
Подробнее
man chattr
Другой вариант, который мне повезло, связан с использованием resolvconf
.
Добавьте любые записи в этот файл:
/etc/resolvconf/resolv.conf.d/base
И они будут добавлены в /etc/resolv.conf
.
Благодаря этой записи Ask Ubuntu: Как включить строки в resolv.conf, которые не потеряются при перезагрузке?
Поздно, но я опубликую свой случай, поскольку он отличался от всего вышеперечисленного.
В моем случае /etc/resolv.conf
является символической ссылкой на /var/run/NetworkManager/resolv.conf
и по какой-то причине cat / etc /resolv.conf
выдает ошибку: нет такого файла или каталога (может быть, потому что он пуст?)
Если я открою его с помощью vi и добавлю сервер имен xxxx
, он будет работать, но очищается при перезагрузке.
Я попытался отредактировать / etc / network / interfaces
и добавить dns-nameservers xxxx
, изменить /etc/dhcp/dhclient.conf
и удалить в запрос
серверы доменных имен
, также отредактированный , добавление серверов доменных имен xxxx [1170 403].
Двоичный файл Resolvconf не установлен, NetworkManager.conf
не содержит ничего важного. Но каждый раз, когда я перезагружал машину, сервер домена отсутствовал.
Я не уверен, в чем причина, но похоже, что это связано с тем, что это машина VBox, запущенная GNS3 и из-за этого внутри Настройка VBox, я должен оставить его без создания интерфейса. Очевидно, GNS3 создает «интерфейс UDP» на лету, когда я запускаю машину, при условии, что я запускаю его из GNS3.
Итак, чтобы избавить меня от бесконечного поиска,Я только что добавил сервер имен echo x.x.x.x> /etc/resolv.conf
в / etc / profile
, проблема решена (не решена, но обошлось, хе-хе). Но было бы интересно узнать, что происходит с этим сценарием, если бы кто-нибудь с ним столкнулся.
Просто сделайте записи в вашем ifcfg -ethX, например
DNS1 = 192.168.XX
DNS2 = 192.168.XX
DOMAIN = yourdomain.com
, тогда сетевой менеджер отправит отложенные эти записи в файл resolv.conf после перезапуска службы или перезагрузите компьютер.
Если у вас есть файл / etc /NetworkManager/NetworkManager.conf
cat /etc/NetworkManager/NetworkManager.conf
вы можете настроить NetworkManager так, чтобы он останавливал сброс resolv.conf с помощью
sudo sh -c 'echo "
[main]
dns=none
" >> /etc/NetworkManager/NetworkManager.conf'
cat /etc/NetworkManager/NetworkManager.conf
. Теперь вручную измените свой /etc/resolv.conf
и проверьте его постоянство с помощью
sudo systemctl restart NetworkManager
# sudo service network-manager restart
cat /etc/resolv.conf
Источник: https://askubuntu.com/a/623956/452398
На случай, если кто-то попадет в такой же случай:
Я забыл, что установил dhcp на интерфейсе внутри файла / etc / network / interfaces
Networkmanager изменит /etc/resolv.conf
из полученного ответа dhcp.
hth
Когда есть # Создано NetworkManager
в /etc/resolv.conf
Изменить конфигурацию Network Manager:
sudo vim /etc/NetworkManager/NetworkManager.conf
в [main]
раздел добавить rc-manager = unmanaged
:
[main]
rc-manager=unmanaged
Почему?
rc-менеджер
- Установите режим управления resolv.conf. Значение по умолчанию зависит от параметров сборки NetworkManager, и эта версия NetworkManager была построена со значением по умолчанию «символическая ссылка».(...)
неуправляемый
: не трогайте/ etc / resolv.conf
.
Ссылка на конфигурацию для получения дополнительной информации: https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html
Затем отредактируйте свой / etc / resolv.conf
и перезапустите Network Manager, чтобы увидеть, остается ли /etc/resolv.conf
нетронутым:
sudo systemctl restart NetworkManager
или
sudo service network-manager restart
, чем:
cat /etc/resolv.conf
Если процедура завершилась неудачно и / и т. /resolv.conf
был перезаписан во время перезапуска Network Manager. Попробуйте добавить dns = none
в раздел [main]
в конфигурации как https://askubuntu.com/a / 1150326/364772 сказал
для меня файл, который был изменен, был sudo nano /etc/systemd/resolved.conf
а здесь
/run/systemd/resolve/resolv.conf[1267 visiblei изменил его на
8.8.8.8
на основе поиска в Google.