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的主要内容,如果未能解决你的问题,请参考以下文章

cisco如何配置DHCP

[Cisco] DHCP snooping 测试

Cisco PIX防火墙配置命令

Cisco路由器 配置DHCP

Cisco DHCP 配置方法

cisco 1900 拨号+nat+dhcp+qos+路由