如何通过 DHCP/网关服务器让本地网络访问互联网?

如何通过 DHCP/网关服务器让本地网络访问互联网?

我想我现在发现自己处于认知超负荷和迷失在森林里的婴儿之间。因此我希望有人能帮助我!:)

我在我的家庭本地网络上设置了一个 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...

附言:我遇到过许多类似的问答,但似乎无法让我的设置起作用,即使我尝试了他们的解决方案。我找到了一些例子:

答案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 服务器或客户端,而不是强迫您实际使用固定地址。

相关内容