DHCP 覆盖 Linux 上的 Cisco *** resolv.conf
Posted
技术标签:
【中文标题】DHCP 覆盖 Linux 上的 Cisco *** resolv.conf【英文标题】:DHCP overwrites Cisco *** resolv.conf on Linux 【发布时间】:2010-09-08 01:36:34 【问题描述】:我正在使用 Ubuntu 8.04 (x86_64) 机器连接到我雇主的 Cisco ***。 (客户端没有开箱即用编译,但我找到了patches to update the client to compile on kernels released in the last two years。)这一切都很好,直到我的 DHCP 客户端决定更新其租约并更新 /etc/resolv.conf,替换特定于 *** 的名称服务器与我的一般网络服务器。
有什么好的方法可以防止我的 DHCP 客户端在我的 *** 处于活动状态时更新 /etc/resolv.conf?
【问题讨论】:
【参考方案1】:如果您在没有 NetworkManager 处理连接的情况下运行,请使用 resolvconf 包作为调整 /etc/resolv.conf 的程序的中介:sudo apt-get install resolvconf
如果您使用 NetworkManager,它会为您处理此问题,因此请去掉 resolvconf 包:sudo apt-get remove resolvconf
我上周在 Ubuntu 上设置 ***c 时发现了这一点。在 ubuntuforums.org 上搜索 *** resolv.conf
有 250 条结果,其中许多非常相关!
【讨论】:
【参考方案2】:如果您使用的是带有 NetworkManager 的 Ubuntu 默认设置,请尝试删除 Cisco*** 客户端并使用 NetworkManager ***c 插件连接到 Cisco ***。这应该可以避免所有问题,因为 NetworkManager 会知道您的 *** 连接。
【讨论】:
【参考方案3】:我建议遵循@Sean 的建议,但如果由于某种原因失败,应该可以将 dhclient 配置为不请求 /etc/dhcp3/dhclient.conf 中的 DNS 服务器
【讨论】:
对于 RHEL/CentOS 而不是 Ubuntu,但对于 dhclient.conf 提示,另请参阅 superuser.com/questions/110808/… 和 serverfault.com/questions/231076/configuring-dhcp-on-rhel-6【参考方案4】:chattr +i /etc/resolv.conf 应该可以工作。 ( -i 撤消)
但更好的办法是配置你的 dhclient.conf: https://calomel.org/dhclient.html 查看替代域名服务器和域名。
同时查看“发送主机名;” 如果它在您的工作场所工作,您的 PC 将拥有一个很酷的主机名,而不是 DHCP 服务器分配的奇怪名称。
【讨论】:
【参考方案5】:***c 似乎在为我雇主的 cisco 集中器做正确的事情。我跳上跳下***,似乎更新一切都很顺利。
【讨论】:
【参考方案6】:可以告诉 DHCPclient 守护程序不要使用命令行开关更新 resolv.conf。 (-r 我认为,取决于客户)
这不太动态,因为您必须在连接时重新启动/重新配置 DHCP,但不会太难。同样,您可以停止服务,但在此期间您可能会丢失您的 IP,所以我真的不建议这样做。
或者,您可以在 cron 作业中运行 dhcpclient,添加适当的进程检查。
【讨论】:
【参考方案7】:此问题在 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 ***/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
。
【讨论】:
以上是关于DHCP 覆盖 Linux 上的 Cisco *** resolv.conf的主要内容,如果未能解决你的问题,请参考以下文章