Я использую машину Ubuntu 8.04 (x86_64) для подключения к Cisco VPN моего работодателя. (Клиент не скомпилировался из коробки, но я обнаружил патчи для обновления клиента для компиляции на ядрах, выпущенных за последние два года.) Все это отлично работает, пока мой DHCP-клиент не решит продлить аренду и не обновит /etc/resolv.conf, заменив серверы имен, специфичные для VPN, моими общие сетевые серверы.
Есть ли хороший способ запретить моему DHCP-клиенту обновлять /etc/resolv.conf, пока мой VPN активен?





Если вы работаете без NetworkManager, обрабатывающего соединения, используйте пакет resolvconf в качестве посредника для программ, настраивающих /etc/resolv.conf: sudo apt-get install resolvconf
Если вы используете NetworkManager, он сделает это за вас, поэтому избавьтесь от пакета resolvconf: sudo apt-get remove resolvconf
Я узнал об этом при настройке vpnc на Ubuntu на прошлой неделе. Поиск vpn resolv.conf на ubuntuforums.org дает 250 результатов, многие из которых очень связаны!
Я бы посоветовал следовать совету @Sean, но если это не удается по какой-либо причине, должна быть возможность настроить dhclient, чтобы не запрашивать DNS-серверы в /etc/dhcp3/dhclient.conf
vpnc, кажется, делает правильные вещи для концентратора cisco моего работодателя. Я прыгаю на vpn и выключаюсь, и вроде все плавно обновляет.
chattr + i /etc/resolv.conf должен работать. (-i отменить)
Но лучше настроить dhclient.conf: https://calomel.org/dhclient.html Посмотрите на заменяющие серверы доменных имен и доменное имя.
Также посмотрите на "send hostname;" Если он работает на вашем рабочем месте, у вас будет классное имя хоста для вашего ПК, а не какое-то странное имя, которое назначают DHCP-серверы.
Если вы используете Ubuntu по умолчанию с NetworkManager, попробуйте удалить клиент CiscoVPN и использовать плагин NetworkManager vpnc для подключения к Cisco VPN. Это должно избежать всех проблем, поскольку NetworkManager знает о вашем VPN-соединении.
Демону DHCPclient можно запретить обновлять resolv.conf с помощью переключателя командной строки. (-r Думаю, в зависимости от клиента)
Это менее динамично, потому что вам придется перезапускать / перенастраивать DHCP при подключении, но не слишком сильно. Точно так же вы можете просто остановить службу, но тем временем можете потерять свой IP, поэтому я бы не рекомендовал этого делать.
В качестве альтернативы вы можете запустить dhcpclient из задания cron, добавив соответствующие проверки процесса.
Эта проблема гораздо более заметна в сетях с низким сроком аренды DHCP. В панели запуска пакета dhcp3 Ubuntu обнаружена ошибка:
https://bugs.launchpad.net/ubuntu/+source/dhcp3/+bug/90681
Который включает этот патч в описание:
--- /sbin/dhclient-script.orig 2007-03-08 19:19:56.000000000 +0000
+++ /sbin/dhclient-script 2007-03-08 19:19:46.000000000 +0000
@@ -13,6 +13,10 @@
# The alias handling in here probably still sucks. -mdz
make_resolv_conf() {
+ # don't overwrite resolv.conf at RENEW time, since a VPN/PPTP tunnel may
+ # have updated it with remote DNS servers
+ [ "$reason" = "RENEW" ] && return
+
if [ -n "$new_domain_name" -o -n "$new_domain_name_servers" ]; then
# Find out whether we are going to mount / rw
exec 9>&0 </etc/fstab
Это изменение /sbin/dhcp-script не позволяет DHCP-клиенту перезаписывать /etc/resolv.conf при возобновлении аренды.
Для RHEL / CentOS не для Ubuntu, а для советов по dhclient.conf см. Также superuser.com/questions/110808/… и serverfault.com/questions/231076/configuring-dhcp-on-rhel-6