我在网络上加载了一些装有Jessie lite的Raspberry Pi2。我希望他们分享3G加密狗的互联网连接,但我无法使其工作。
以下是一些细节:
RPi与其他一些设备一起在同一个10.0.0.x网络上。我在同一个子网上配置了固定IP地址的RPI(设备和设备),工作正常,可以互相通话。 我需要固定的IP,因为我希望能够NAT所有设备并在以后从互联网访问它们。
只有一个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设备的互联网数据包应该路由到网关。但他们没有。
答案 0 :(得分: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