我正在使用Ubuntu 8.04(x86_64)机器连接到我的雇主的思科VPN。 (客户端没有开箱即用,但是我发现补丁更新客户端,以便在过去两年内发布的内核上进行编译 )。这一切都很好,直到我的DHCP客户端决定更新其租约和更新/ etc /resolv.conf,用我的通用networking服务器replace特定于VPN的名称服务器。
有没有一种好方法来防止我的DHCP客户端在我的VPN处于活动状态时更新/etc/resolv.conf?
如果您在NetworkManager中使用Ubuntu默认设置,请尝试删除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时发现了这个问题。 在ubuntuforums.org上搜索vpn resolv.conf
有250个结果,其中很多是非常相关的!
我会建议遵循@Sean的建议,但如果因为某种原因而失败,应该可以配置dhclient来不在/etc/dhcp3/dhclient.conf中请求DNS服务器
chattr +我/etc/resolv.conf应该工作。 (-i撤消)
但更好的事情是配置你的dhclient.conf: https : //calomel.org/dhclient.html看看取代域名服务器和域名。
另外看看“发送主机名” 如果它在你的工作场所工作,你将有一个很酷的主机名为您的电脑,而不是一些怪异的DHCP服务器分配的名称。
vpnc似乎正在为我的雇主的思科集中器做正确的事情。 我跳开vpn,似乎更新一切顺利。
可以告诉DHCPclient守护程序不要使用命令行开关更新resolv.conf。 (我认为这取决于客户端)
这是不太动态的,因为你连接时不得不重新启动/重新配置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
。