我在 Ubuntu 12.10 上安装了 isc-dhcp-server,并尝试在头节点上为本地网络中的六台工作计算机设置 DHCP 服务器。头节点本身是一个 DHCP 客户端,从网络中的另一台计算机接收 IP 地址 192.168.20.1(在 eth0 上)。
头节点上已启用 IPv4 IP 转发。在 /etc/sysctl.conf 中添加了以下行:
net.ipv4.ip_forward = 1
/etc/rc.local中设置了以下规则:
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE
此外,INTERFACES="eth0"
在 /etc/default/isc-dhcp-server 中设置。
dhcpd.conf 文件包含(目前文件中只有一台工作计算机):
ddns-update-style none;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.2 192.168.20.200
host hostName {
hardware ethernet macOfHost;
fixed-address 192.168.20.20;
}
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.20.255;
option routers 192.168.20.1;
}
工作节点有效获取 IP 地址 192.168.20.20,但没有互联网连接。ping 192.168.20.1 成功,ping 用作头节点的 DHCP 服务器的计算机(ping 192.168.1.1)也成功。问题似乎与 DNS 无关,因为 ping IP 地址(例如 8.8.4.4)失败。
更新
网络拓扑如下。有一个交换机连接一台计算机(可访问互联网并运行 DHCP 服务器,IP 地址为 192.168.1.1)和另外 7 台计算机。这 7 台计算机中的一台从 192.168.1.1 计算机获取 IP。它获取的 IP 是 192.168.20.1,并且该计算机上的互联网运行正常。现在我们在 192.168.20.1 上运行了一个 DHCP 服务器,以便为其他 6 台计算机提供互联网访问,但失败了。它们获得了 IP 地址,但无法访问互联网。我们不允许修改 192.168.1.1 节点上的任何内容,因此使用此设置应该可以使互联网正常工作。
有人知道可能是什么问题吗?
答案1
现在一切都正常了。原来是 DNS 问题;将 改为option routers
可以option routers 192.168.1.1
解决问题。Ping 肯定在网络中的某个地方被阻止了,因为响应从未通过,但可以在浏览器中浏览特定的 IP 地址,这让我意识到 DNS 是问题所在。感谢大家的帮助。
答案2
看起来 eth0 是您的内部接口。如果是这样,您的外部接口是什么?在您的“路由器”服务器上,外部接口(而不是内部接口(应该转发数据包))需要 MASQUERADE。