![DHCP 工作正常但客户端没有互联网](https://linux22.com/image/836687/DHCP%20%E5%B7%A5%E4%BD%9C%E6%AD%A3%E5%B8%B8%E4%BD%86%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%B2%A1%E6%9C%89%E4%BA%92%E8%81%94%E7%BD%91.png)
正如标题所述。我的 DHCP 为客户端分配 IP 地址和所有这些东西;但是客户端无法访问互联网。这是我的 DHCP 配置:
ddns-update-style none;
option domain-name "home.lan";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
option broadcast-address 10.8.8.255;
subnet 10.8.8.0 netmask 255.255.255.0 {
range 10.8.8.5 10.8.8.9;
option routers 10.8.8.1;
}
broadcast-address 10.8.8.255
我当然已经添加INTERFACES="eth0"
了/etc/default/isc-dhcp-server
eth0 接口定义/etc/network/interfaces
auto eth0
iface eth0 inet static
address 10.8.8.1
netmask 255.255.255.0
gateway 10.8.8.1
broadcast 10.8.8.255
我已经添加net.ipv4.ip_forward=1
了/etc/sysctl.conf
在网上,我读到可以使用 Linux GUI 简单地共享网络。(以下是有关如何共享连接的简单指南,其中包含屏幕截图) 但在我的例子中它不起作用。如果我将 wlan0(自动 DHCP)更改为(共享给其他计算机),则重启后我无法访问互联网,因为 wlan0 不会自动获取连接信息。
客户端接收 IP、默认网关、DNS、网络掩码等。有人能帮我找出它为什么不起作用吗?我使用的是 ubuntu 12.04。谢谢。
答案1
您的第一步看起来不错,但您还必须使用来设置 IP 伪装 (NAT) iptables
。
发出以下命令:
iptables --table nat --append POSTROUTING --out-interface ethX -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT
假设这eth0
是您的本地 LAN,并且ethX
是您的外部接口 (inet)。我还建议您将这些命令放入 init 脚本中,因为它们是易失性的,iptables 规则在重新启动后会丢失。
在继续之前,我建议您在 Google 上搜索“Ubuntu NAT”,那里有很多可立即使用的脚本来解决这个问题。
祝你好运!
答案2
在 /etc/network/interfaces 中,(远程)网关的地址不应与本地接口的地址相同。