Вопрос

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

Есть ли хороший способ запретить моему DHCP-клиенту обновлять /etc/resolv.conf, пока моя VPN активна?

Это было полезно?

Решение

Если вы используете Ubuntu по умолчанию с NetworkManager, попробуйте удалить клиент CiscoVPN и использовать плагин NetworkManager vpnc для подключения к Cisco VPN.Это позволит избежать всех проблем, поскольку NetworkManager узнает о вашем VPN-соединении.

Другие советы

Если вы работаете без NetworkManager, обрабатывающего соединения, используйте пакет resolvconf в качестве посредника для программ, настраивающих /etc/resolv.conf: sudo apt-get install resolvconf

Если вы используете NetworkManager, он сделает это за вас, поэтому избавьтесь от пакета resolvconf: sudo apt-get remove resolvconf

Я узнал об этом при настройке VPN в Ubuntu на прошлой неделе.A search for vpn resolv.conf на ubuntuforums.org есть 250 результатов, многие из которых очень похожи!

Я бы посоветовал последовать совету @Sean, но если по какой-либо причине это не удастся, можно настроить dhclient так, чтобы он не запрашивал DNS-серверы в /etc/dhcp3/dhclient.conf.

chattr +i /etc/resolv.conf должен работать.(-i, чтобы отменить)

Но лучше всего настроить dhclient.conf:https://calomel.org/dhclient.htmlПосмотрите на заменяющие серверы доменных имен и доменное имя.

Также посмотрите на «Отправить имя хоста»; Если он работает на вашем рабочем месте, у вас будет крутое имя хоста для вашего ПК, а не какое -то странное имя, которое назначают серверы DHCP.

Кажется, vpnc поступает правильно в отношении концентратора Cisco моего работодателя.Я включаю и выключаю 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 когда он продлит аренду.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top