Для пользователей DHCP могут быть случаи, когда вам нужно редактировать /etc/resolv.conf
для использования других серверов имен. Затем, через некоторое время (или после перезагрузки системы), вы обнаружите, что ваши изменения /etc/resolv.conf
были отменены.
В этом руководстве показаны три метода, позволяющих предотвратить изменение DHCP в /etc/resolv.conf
Debian или Ubuntu.
Способ 1: изменить настройки интерфейса на статические
- На облаке vps я не предлагаю использовать этот метод.
- Если вы используете этот метод, вы можете обнаружить, что обработка перезагрузки (до тех пор, пока вы не сможете войти через ssh) занимает больше времени.
Во-первых, нам нужно получить IP / маску сети / шлюз сервера. Запустите следующую команду.
ifconfig | grep "inet addr" | head -n 1 | awk '{print $2, $4}'
Это обеспечивает IP-адрес сервера и маску сети. Глядя на пример вывода ...
addr:1.2.3.4 Mask:255.255.254.0
... IP-адрес сервера - 1.2.3.4, а маска - 255.255.254.0 .
Чтобы получить адрес шлюза, выполните следующую команду.
netstat -rn | grep '^0.0.0.0' | awk '{print $2}'
В этом примере я буду использовать адрес шлюза 1.2.3.1 .
Теперь, когда у нас есть IP / маска сети / шлюз , отредактируйте /etc/network/interfaces
.
vim /etc/network/interfaces
Сделайте следующие правки:
# Comment out this line
# iface eth0 inet dhcp
# Add these contents
iface eth0 inet static
address 1.2.3.4
mask 255.255.254.0
gateway 1.2.3.1
Помните, что вы должны заменить эти значения на соответствующий IP / маску сети / шлюз сервера.
Сохраните и выйдите, затем перезагрузите компьютер.
Способ 2: защита от записи ваших серверов имен
Измените ваши серверы имен путем редактирования /etc/resolv.conf
. После того, как вы внесли изменения, защитите этот файл от записи
chattr +i /etc/resolv.conf
+i
Вариант (атрибут) запись защищает /etc/resolv.conf
файл на Linux , так что никто не может изменить его - даже не суперпользователь.
Если вам нужно удалить атрибут защиты от записи, используйте следующую команду.
chattr -i /etc/resolv.conf
Способ 3: использовать DHCP-хуки
Это метод, который я рекомендую использовать чаще всего.
Редактировать /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate
.
vim /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate
Сделайте следующие правки:
#!/bin/sh
make_resolv_conf(){
:
}
Сохранить и выйти.
Обновите разрешения для nodnsupdate
файла.
chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate
Перезагрузите свой сервер. Теперь вы можете обновить серверы имен, редактируя, /etc/resolv.conf
не беспокоясь об откате.