После обновления /etc/network/interfaces
с помощью чего-то очень похожего на ниже, как я могу /etc/resolv.conf
обновить? Я пытался (как root) resolver -u
, service networking restart
но они не работали. Я также исправил символическую ссылку resolv.conf
и попытался resolver -u
снова. Наконец, в отчаянии я перезагрузился, что решило проблему путем восстановления /etc/resolv.conf
.
Ubuntu 12.04, 64-битный сервер, установлены все последние патчи.
Пример /etc/network/interfaces
:
iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10
server
dns
resolv.conf
nslntmnx
источник
источник
Ответы:
service networking restart
не всегда является надежным способом отключения всех интерфейсов.Команда
resolvconf -u
обновляется толькоresolv.conf
из собственной базы данных resolvconf. Вам необходимо обновить базу данных.Чтобы обновить базу данных, вы должны вызвать resolvconf с опцией
-a
или-d
. Это происходит за кулисами, когда вы запускаете ifup или ifdown. Поэтому, как и в случае любых других изменений/etc/network/interfaces
, чтобы активировать изменения в параметрах dns- *, необходимо выключить рассматриваемый интерфейс и снова выполнить его. Или вы можете перезагрузиться.Если вы хотите внести изменения в интерфейс, не отключая его (возможно, из-за того, что вы управляете машиной удаленно и подключаетесь через этот интерфейс, естественно), вы можете достичь того же результата, запустив resolvconf непосредственно из командной строки. Это требует немного больше знаний о семантике resolvconf. Предположим, что соответствующая / e / n / i строфа
где FFFF - семейство адресов («inet» или «inet6»).
Чтобы активировать эти опции dns- *, вы запускаете resolvconf следующим образом (да, с символами новой строки в строке, переданной в resolvconf).
Для строфы, приведенной в вопросе, это будет следующим.
Обратитесь к странице справочной системы resolvconf (8) и к файлу README пакета resolvconf (/usr/share/doc/resolvconf/README.gz) для получения дополнительной информации.
источник
resolvconf
:)/etc/network/interfaces
, вы можете сделать этоifdown eth0 && ifup eth0
:; это работает даже в удаленной сессии SSH.Хотя man-страница по умолчанию не установлена, она задокументирована с помощью опции сценариев обновления, просто запустите:
источник
Для тех из вас, кто управляет своими серверами удаленно, вы можете:
dns-nameservers
строку в/etc/network/interfaces
# ifdown eth01; ifup eth01
Обратите внимание, что это должно быть в одной строке, разделенной; (разделитель командной строки Linux). Вы не должны даже потерять ваше текущее соединение. Исключение составляет опечатка в файле интерфейсов. Если это произойдет,
ifup
произойдет сбой, и вам потребуется физический доступ или другоеethxx
соединение.источник
service resolvconf restart
восстановит/etc/resolv.conf
файл без особой суеты.источник
Failed to restart resolvconf.service: Unit resolvconf.service not found.
/etc/resolv.conf
на сервере Ubuntu 14.04Этот ответ аналогичен приведенному выше, но для ответа на вопрос используется пример конфигурации вопросов. Плюс это объясняет, почему обе команды необходимы.
Редактировать
/etc/network/interfaces
:Эти изменения не вступят в силу, пока вы не перезагрузите или не перезагрузите файл конфигурации:
Для обновления файла интерфейсов в реальном времени необходимо выполнить следующую команду:
Это позволяет обновить интерфейс без перезагрузки или перезагрузки.
Однако указанные выше изменения команды будут потеряны после перезагрузки, если изменения
/etc/network/interfaces
не были внесены.Кстати, последний ответ от BDenis в этом списке фактически работает вместо последней команды, анализируя
/etc/network/interfaces
файл и добавляя эти строки в команду.sudo resolvconf -a eth0
Это фактически половина ответа и действительно хороший пример встроенного синтаксического анализа sed. Если вы хотите увидеть, как это происходит, просто запустите первую часть команды и посмотрите, как она разбирает/etc/network/interfaces
файл и выкладываете всю необходимую информацию, необходимую для запускаsudo resolvconf -a eth0
команды:Обратите внимание, что это выдает тот же результат, что и команда:
При условии, что
/etc/network/interfaces
файл настроен с этой информацией:источник
/etc/network/interfaces
в этом случае его добавление недопустимо. (Ubuntu 14.04)Простой ответ:
Просто установите resolvconf.
apt install resolvconf
После этого
ifup eth0
обновляет днс вetc/resolv.conf
соответствии соdns-nameservers
строкой в/etc/network/interfaces
.источник
18.04 надежно работает следующее (от имени root):
Важно: убедитесь, что у вас установлен пакет
resolvconf
.Похоже, что это не по умолчанию, и без него некоторые (!) Изменения
/etc/network/interfaces
игнорируются (напримерdns-*
).источник
Это сработало для меня:
Отрегулируйте соответственно.
источник
В настольной версии Ubuntu 18.04, где нет службы
networking
иresolvconf
по умолчанию она не установлена, мне удалось восстановить ееresolv.conf
путем перезапускаnetwork-manager
:источник
Также вы можете попробовать эту команду:
источник
dns-nameserver IP1 IP2
. Строка должна быть повторенаresolv.conf
, но это не так./etc/network/interfaces
используетdns-nameservers
(обратите вниманиеs
на в конце), аresolvconf
используетnameserver
. Команда не справляется с этим. И даже если бы все было правильно, трубопроводsed | grep | sed
определенно был бы не самым эффективным способом.