service networking restart
не всегда является надежным способом отключения всех интерфейсов.
Команда resolvconf -u
обновляет resolv.conf
только из собственной базы данных resolvconf. Вам необходимо обновить базу данных.
Чтобы обновить базу данных, вы должны вызвать resolvconf с опцией -a
или -d
. Это происходит за кулисами, когда вы запускаете ifup или ifdown. Поэтому, как и в случае любого другого изменения в /etc/network/interfaces
, чтобы активировать изменения в параметрах dns- *, необходимо выключить соответствующий интерфейс и снова выполнить его. Или вы можете перезагрузиться.
Если вы хотите внести изменения в интерфейс, не отключая его (возможно, из-за того, что вы управляете машиной удаленно и случайно подключаетесь через этот интерфейс, natch), вы можете достичь того же результата, запустив resolvconf непосредственно из командной строки. , Это требует немного больше знаний о семантике resolvconf. Предположим, что соответствующий раздел / e / n / i равен
iface IIII FFFF static
address ...
...
dns-nameservers X.X.X.X Y.Y.Y.Y
dns-search SSSS
, где FFFF - это семейство адресов («inet» или «inet6»).
Чтобы активировать эти опции dns- *, вы запускаете resolvconf следующим образом (да, с символами новой строки в строке, переданной в resolvconf).
echo "nameserver X.X.X.X
nameserver Y.Y.Y.Y
search SSSS" | sudo resolvconf -a IIII.FFFF
Для строфы, приведенной в вопросе, это будет следующим.
echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com" | sudo resolvconf -a eth0.inet
Для получения дополнительной информации обратитесь к странице руководства resolvconf (8) и к файлу README пакета resolvconf (/usr/share/doc/resolvconf/README.gz).
Для тех из вас, кто управляет своими серверами удаленно, вы можете:
dns-nameservers
в /etc/network/interfaces
# ifdown eth01; ifup eth01
ifup
потерпит неудачу, и вам потребуется физический доступ или другое ethxx
соединение.
service resolvconf restart
восстановит файл /etc/resolv.conf
без особых хлопот.
Failed to restart resolvconf.service: Unit resolvconf.service not found.
– Peter Lundgren
23.01.2018, 20:07
/etc/resolv.conf
на сервере человечности 14.04
– Manto
17.05.2018, 10:59
Этот ответ аналогичен приведенному выше, но для ответа на вопрос используется пример конфигурации вопросов. Плюс это объясняет, почему обе команды необходимы.
Редактировать /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-nameserver 192.168.3.45
dns-nameserver 192.168.8.10
Эти изменения не произойдут, пока вы не перезагрузите или не перезагрузите файл конфигурации:
Для обновления файла интерфейсов в реальном времени необходимо выполните следующую команду:
echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com" | sudo resolvconf -a eth0.inet
Это позволяет обновить интерфейс без перезагрузки или перезагрузки.
Однако вышеупомянутые изменения команды будут потеряны после перезагрузки, если изменения в /etc/network/interfaces
не были сделаны.
Кстати, последний ответ от BDenis в этом списке фактически работает вместо последней команды, анализируя файл /etc/network/interfaces
и добавляя эти строки в команду sudo resolvconf -a eth0
Это фактически половина ответа и действительно хороший пример встроенный синтаксический анализ. Если вы хотите увидеть, как это происходит, просто запустите первую часть команды и посмотрите, как она разбирает файл /etc/network/interfaces
и выкладывает всю необходимую информацию, необходимую для запуска команды sudo resolvconf -a eth0
:
sed 's/#.*$//' /etc/network/interfaces | grep dns- | sed 's/dns-//g'
[ 1119] Обратите внимание, что это приведет к тому же выводу, что и команда:
echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com"
При условии, что файл /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-nameserver 192.168.3.45
dns-nameserver 192.168.8.10
/etc/network/interfaces
не является допустимая опция в этом случае. (Ubuntu 14.04)
– Alexander Mills
16.02.2016, 14:29
18.04 следующие функции работают надежно (от имени пользователя root):
systemctl stop networking
ip address flush dev <device> # just to be safe
systemctl start networking
Важно: Убедитесь, что у вас установлен пакет resolvconf
.
Похоже, что это не по умолчанию, и без него некоторые (!) Изменения из /etc/network/interfaces
молча игнорируются (например, dns-*
).
Также вы можете попробовать эту команду:
cat /etc/network/interfaces |sed 's/#.*$//'|grep dns-|sed 's/dns-//g'|sudo resolvconf -a eth0.inet
dns-nameserver IP1 IP2
. Строка должна тогда быть повторена в resolv.conf
, но isn' t.
– Mo J. Mughrabi
30.10.2015, 17:09
/etc/network/interfaces
использование dns-nameservers
(замечают s
в конце), в то время как resolvconf
использование nameserver
. Команда не имеет дело с ним. И даже если все было корректно, конвейер sed | grep | sed
определенно wouldn’t быть самым эффективным путем.
– ejb
19.12.2016, 14:52
resolvconf
:) – Rishi Barve 23.06.2015, 00:50/etc/network/interfaces
можно сделать это:ifdown eth0 && ifup eth0
; это работает даже на удаленной ssh сессии. – Crt 24.11.2015, 15:55