1

我在网络上有一些装有 Jessie lite 的 Raspberry Pi2。我希望他们共享 3G 加密狗的互联网连接,但我无法让它工作。

以下是一些细节:

RPi 和其他一些设备都在同一个 10.0.0.x 网络上。我在同一子网上为它们(RPi 和设备)配置了固定的 IP 地址,并且工作正常,它们都可以互相交谈。我需要固定 IP,因为我希望能够对所有设备进行 NAT 并稍后从 Internet 访问它们。

只有一个 RPi(eth0 地址 10.0.0.10,我们称之为 RPi0)有互联网连接,来自华为 3G 加密狗。加密狗创建一个 eth1 接口,其自动地址似乎总是 192.168.8.100。如果我尝试将其强制为手动 IP,我将无法访问互联网。

开箱即用,当我插入 USB 密钥时,RPi0 可以访问互联网并解析地址。

现在我想让 10.0.0.x 上的所有其他设备通过具有 USB 加密狗的 RPi 访问互联网。所以我想 10.0.0.10 需要充当网关并通过 eth1 路由流量。我已经遵循了许多教程来了解,但我一定错过了一些东西,因为我无法让它工作。

我已启用 NAT 设置net.ipv4.ip_forward=1 in /etc/sysctl.conf

然后我尝试为必须通过 eth1 的所有流量指定一个 NAT 规则

sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

无法再 ping 公共 IP

路线如下所示:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         hi.link         0.0.0.0         UG    247    0        0 eth1
10.0.0.0        *               255.255.255.0   U     202    0        0 eth0
192.168.8.0     *               255.255.255.0   U     247    0        0 eth1

我究竟做错了什么?

编辑

加密狗自动创建一个地址为 192.168.8.100 的以太网端口,但网关地址是 192.168.8.1(在 ip 表中应该是 hi.link)。所以我希望它能正常工作,来自其他 10.0.0.x 设备的互联网数据包应该路由到网关。但他们没有。

4

1 回答 1

1

好的,事实证明 NAT 的命令不正确,工作版本:

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
于 2017-05-25T13:53:38.853 回答