首页 > 解决方案 > 只能从两个子网之间的一个方向接收 ping Rpi 4 buster

问题描述

我有一个典型的配置,其中 Rpi 充当两个子网之间的路由器。一个子网连接到 Rpi eth0,现在直接连接了笔记本电脑(有一天会有一个 ip-camera)。Rpi 通过 wlan0 连接到无线路由器以获得互联网连接。 配置图片

网上有几条指令可以让它工作,它几乎可以工作。我可以从连接到 Rpi 的笔记本电脑 ping 连接到我的无线路由器(但不是我的无线路由器!?)的设备。我在连接到 Rpi 的笔记本电脑上有互联网连接。问题是我无法从无线路由器的子网 ping 我的笔记本电脑(连接到 Rpi)。是的,这与我的 iptables 配置有关。

这是一些数据:

我在我的 sysctl.conf 文件中设置了 net.ipv4.ip_forward=1

我已经完成了这些设置:

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

sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT

IPtables 看起来像这样:

pi@raspberrypi:~ $ sudo iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  296  191K ACCEPT     all  --  wlan0  eth0    anywhere             anywhere             state RELATED,ESTABLISHED
   37 14316 ACCEPT     all  --  eth0   wlan0   anywhere             anywhere

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

路由表如下所示:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.3.1     0.0.0.0         UG    100    0        0 wlan0
default         192.168.3.1     0.0.0.0         UG    202    0        0 eth0
10.10.0.0       0.0.0.0         255.255.255.0   U     202    0        0 eth0
192.168.3.0     0.0.0.0         255.255.255.0   U     100    0        0 wlan0
192.168.3.1     0.0.0.0         255.255.255.255 UH    202    0        0 eth0

任何其他可能有用的信息?

标签: raspberry-pirouterpingiptables

解决方案


在您的无线路由器路由表中,您应该将前往 10.10.0.0/24 的流量转发到连接到第二个子网的接口,将前往 192.3.0.0/24 的流量转发到连接到 Rpi 的接口,将其他流量转发到连接到的接口互联网。您还应该有一个到 Subnet-1 的路由表,并将您的 Rpi 作为网关,如下所示:

目标网关 Genmask
192.168.3.0 Rpi @IP 255.255.255.0


推荐阅读