![如何通过 DHCP/网关服务器让本地网络访问互联网?](https://linux22.com/image/1081072/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20DHCP%2F%E7%BD%91%E5%85%B3%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%A9%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C%E8%AE%BF%E9%97%AE%E4%BA%92%E8%81%94%E7%BD%91%EF%BC%9F.png)
我想我现在发现自己处于认知超负荷和迷失在森林里的婴儿之间。因此我希望有人能帮助我!:)
我在我的家庭本地网络上设置了一个 Ubuntu 12.04 服务器。这是一个 DHCP / 网关设置,遵循了教程。盒子有两张网卡。互联网连接是通过桥接 ADSL 路由器上的 PPPOE 进行的。eth0 是服务器与互联网的连接,eth1 是与局域网的接口。
我似乎遇到了一个非常常见的问题:服务器可以访问互联网(可以 ping URL 和 IP),LAN 上的客户端可以 ping 服务器的两个网络接口,但无法 ping URL 或 IP。他们无法访问互联网。
因此,根据下面的服务器详细信息,我的请求是:如何通过我的服务器让本地网络访问互联网?或者我在设置中遗漏了什么小分号错误?:P
1. /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8 192.168.1.1
dns-search crowdControl.com
auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
provider dsl-provider
auto eth1
iface eth1 inet static
address 172.22.22.1
network 172.22.22.0
netmask 255.255.255.0
2. /etc/rc.local
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/sbin/iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth1 -j ACCEPT
exit 0
3. /etc/dhcp/dhcp.conf
ddns-update-style none;
option domain-name "crowdControl.com";
option domain-name-servers 8.8.8.8, 192.168.1.1;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 172.22.22.0 netmask 255.255.255.0 {
range 172.22.22.21 172.22.22.250;
option routers 172.22.22.1;
option domain-name-servers 8.8.8.8, 192.168.1.1, 196.220.59.188;
}
4. 路线 -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0
172.22.22.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
5.当我尝试从本地机器 ping 互联网上的某些内容时,“watch -n 1 -d iptables -nvL”显示前向链中的数据包活动。
6. 从本地网络上的机器 ping 8.8.8.8 结果是:
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.1.1 icmp_seq=3 Destination Net Unreachable
From 192.168.1.1 icmp_seq=4 Destination Net Unreachable
From 192.168.1.1 icmp_seq=5 Destination Net Unreachable
From 192.168.1.1 icmp_seq=7 Destination Net Unreachable
etc...
附言:我遇到过许多类似的问答,但似乎无法让我的设置起作用,即使我尝试了他们的解决方案。我找到了一些例子:
- Ubuntu 作为路由器/网关 - 无法访问 WAN
- DHCP 工作正常但客户端没有互联网
- DHCP 服务器未路由客户端以连接到互联网
- 还查看了 serverfault.com、stackoverflow.com、ubuntu 论坛等
答案1
您应该遵循 far4d 对net.ipv4.ip_forward
... 的建议。但是,您也应该对 执行同样的事情net.ipv4.ip_dynaddr
。
只需转到他告诉您编辑的相同文件(/etc/sysctl.conf
),然后net.ipv4.ip_forward = 1
插入:
net.ipv4.ip_forward = 1
net.ipv4.ip_dynaddrn = 1
之后,按照他的建议去做sysctl -p
。
答案2
请确保已启用转发:
sysctl -n net.ipv4.ip_forward
这应该会显示“1”。如果没有,请通过net.ipv4.ip_forward = 1
在 中设置启用数据包转发/etc/sysctl.conf
。通过键入以下内容应用新设置:
sysctl -p
这将允许您在机器上运行 DHCP 服务器或客户端,而不是强迫您实际使用固定地址。