DHCP在Linux上覆盖Cisco VPN resolv.conf

时间:2020-03-05 18:48:52  来源:igfitidea点击:

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

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

解决方案

回答

如果运行时没有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个结果,其中许多都是非常相关的!

回答

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

回答

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

回答

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

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

还要看"发送主机名";
如果它在工作场所工作,则PC主机名将很酷,而不是DHCP服务器分配的一些奇怪的名称。

回答

如果将Ubuntu默认值与NetworkManager一起使用,请尝试删除CiscoVPN客户端,并使用NetworkManager vpnc插件连接到Cisco VPN。这应该避免所有问题,因为NetworkManager随后会知道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