Ubuntu Server 12.04、NAT、路由器、DNS。它就是不起作用

Ubuntu Server 12.04、NAT、路由器、DNS。它就是不起作用

我最近从工作中继承了一些服务器硬件,并决定将其作为我家里的主路由器(还有其他东西)。Ubuntu 12.04 服务器安装硬件进展顺利,启动时一切都能找到并正常工作。

因此,我首先使用 DHCP 设置 eth1。这很正常,它从我的调制解调器获取公共 IP 地址,并且我们有一个可用的互联网连接。

然后我将另一个 NIC (eth0) 设置为静态 (192.168.0.1),这也运行正常。我可以从网络中的其他计算机访问它。

当我尝试使用 isc-dhcp-server 设置 DHCP 服务器时,问题就出现了。它似乎在工作,并为计算机提供 IP 地址,但一次重启后它就停止工作了。

重启后,eth1 将从调制解调器获取公共 IP,但无法访问互联网。我必须手动运行 dhcpcd eth1 才能使其再次工作。据我所知,我没有对 DNS 进行任何更改。

我做错了什么?我以前从来没有遇到过这样的问题。:)

答案1

据我了解,您在网络上运行两个 DHCP 服务器:

  1. 具有 DHCP 功能的调制解调器
  2. 带有 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。

相关内容