使用 Jessie Lite 在树莓派上从 eth0 路由到 eth1 不起作用

Routing from eth0 to eth1 on raspberry with Jessie Lite doesn't work

我在网络上有几台装有 Jessie lite 的 Raspberry Pi2。我想让他们共享一个 3G 加密狗的互联网连接,但我做不到。

以下是一些详细信息:

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

只有一个树莓派(eth0地址10.0.0.10,暂且称它为树莓派0)有互联网连接,来自华为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 public 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 设备的互联网数据包应该路由到网关。但他们没有。

好的,原来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