我最近从工作中继承了一些服务器硬件,并决定将其作为我家里的主路由器(还有其他东西)。Ubuntu 12.04 服务器安装硬件进展顺利,启动时一切都能找到并正常工作。
因此,我首先使用 DHCP 设置 eth1。这很正常,它从我的调制解调器获取公共 IP 地址,并且我们有一个可用的互联网连接。
然后我将另一个 NIC (eth0) 设置为静态 (192.168.0.1),这也运行正常。我可以从网络中的其他计算机访问它。
当我尝试使用 isc-dhcp-server 设置 DHCP 服务器时,问题就出现了。它似乎在工作,并为计算机提供 IP 地址,但一次重启后它就停止工作了。
重启后,eth1 将从调制解调器获取公共 IP,但无法访问互联网。我必须手动运行 dhcpcd eth1 才能使其再次工作。据我所知,我没有对 DNS 进行任何更改。
我做错了什么?我以前从来没有遇到过这样的问题。:)
答案1
据我了解,您在网络上运行两个 DHCP 服务器:
- 具有 DHCP 功能的调制解调器
- 带有 isc-dhcp-server 软件的服务器
通常,拥有多个且只有一个 DHCP 服务器不是一个好主意,而且会带来无穷的麻烦。
我建议您尝试以下场景 A、B 或 C 之一:
- A. 仅使用调制解调器的 DHCP 服务器。如果您的服务器上 eth0 和 eth1 之间的转发和路由设置正确,则 eth0 上的本地客户端可以使用调制解调器的 DHCP 服务器。您不需要 isc-dhcp-server。
或者
B. 如果您确实想要使用两个 DHCP 服务器,则必须切断它们的域。DHCP 流量不得从 eth0 传播到 eth1 或反之亦然。您可以使用 netfilter/iptables 通过在 FORWARD 链中丢弃来自端口 67 和 68 的 udp 数据包来执行此操作:
iptables -A FORWARD -p udp --sport 68 --dport 67 -j DROP
或者
- C. 停用调制解调器上的 DHCP 服务器。在 eth1 上静态配置您的互联网连接。在您的服务器上安装 isc-dhcp-server。