4

我正在使用 Ubuntu 8.04 (x86_64) 机器连接到我雇主的 Cisco VPN。(客户端没有开箱即用编译,但我找到了更新客户端以在过去两年发布的内核上编译的补丁。)这一切都很好,直到我的 DHCP 客户端决定更新其租约并更新 /etc /resolv.conf,用我的通用网络服务器替换特定于 VPN 的名称服务器。

有没有一种好方法可以防止我的 DHCP 客户端在我的 VPN 处于活动状态时更新 /etc/resolv.conf?

4

7 回答 7

5

如果您在没有 NetworkManager 处理连接的情况下运行,请使用 resolvconf 包作为调整 /etc/resolv.conf 的程序的中介:sudo apt-get install resolvconf

如果您使用的是 NetworkManager,它将为您处理此问题,因此请摆脱 resolvconf 包:sudo apt-get remove resolvconf

我上周在 Ubuntu 上设置 vpnc 时发现了这一点。在 ubuntuforums.org 上搜索vpn resolv.conf有 250 条结果,其中很多都非常相关!

于 2008-09-07T04:12:27.917 回答
2

如果您使用带有 NetworkManager 的 Ubuntu 默认设置,请尝试删除 CiscoVPN 客户端并使用 NetworkManager vpnc 插件连接到 Cisco VPN。这应该可以避免所有问题,因为 NetworkManager 会知道您的 VPN 连接。

于 2008-09-17T22:25:09.653 回答
1

我会建议遵循@Sean 的建议,但如果由于某种原因失败,应该可以将 dhclient 配置为不请求 /etc/dhcp3/dhclient.conf 中的 DNS 服务器

于 2008-09-07T19:34:09.260 回答
1

chattr +i /etc/resolv.conf 应该可以工作。( -i 撤消)

但更好的是配置您的 dhclient.conf: https ://calomel.org/dhclient.html 查看取代的域名服务器和域名。

另请查看“发送主机名;” 如果它在您的工作场所工作,您的 PC 将拥有一个很酷的主机名,而不是 DHCP 服务器分配的一些奇怪的名称。

于 2008-09-17T21:24:52.077 回答
0

vpnc 似乎为我雇主的 cisco 集中器做正确的事情。我跳上跳下 vpn,它似乎可以顺利更新所有内容。

于 2008-09-17T20:25:34.217 回答
0

可以告诉 DHCPclient 守护程序不要使用命令行开关更新 resolv.conf。(-r 我认为,取决于客户)

这不太动态,因为您必须在连接时重新启动/重新配置 DHCP,但不会太难。同样,您可以停止服务,但同时您可能会丢失您的 IP,所以我不建议这样做。

或者,您可以在 cron 作业中运行 dhcpclient,添加适当的进程检查。

于 2008-09-25T02:57:50.757 回答
0

此问题在 DHCP 租用期限较短的网络上更为明显。Ubuntu 的 dhcp3 包启动板中存在一个错误:

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在更新其租约时进行覆盖。

于 2008-10-14T17:16:07.877 回答