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

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

有帮助吗?

解决方案

如果您使用 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

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

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

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

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

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

vpnc 似乎为我雇主的思科集中器做了正确的事情。我跳上跳下VPN,似乎一切都顺利更新。

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

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

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

在 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 当它续签租约时。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top