我试图允许连接到 eth0 的设备访问 wlan0 和 wlan1 上的设备。如下图所示。 WiFi 设备的频率不同,我无法桥接它们(不支持)。
(192.170.1.32) WiFi Device 1 freq A
/
/
(wlan0 = 192.170.1.250/32)
PC (192.168.2.33) ------- (eth0 = 192.168.2.1) RPi -----
(wlan1 = 192.170.1.251/32)
\
\
(192.170.1.69) WiFi Device 2 freq B
我尝试设置 IPTables 以定向到正确的网络(我事先知道网络上每个设备的 IP 地址是什么)
例如,如果我希望 th0 接口将所有 udp 数据包发送到频率 A (wlan0) 上的 192.170.1.69,并将 udp 数据包发送到频率 B (wlan1) 上的 192.170.1.9。
# Iptables
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -t nat -A PREROUTING -s 192.168.1.1 -d 192.170.1.69 -p udp -j MARK --set-mark 11
iptables -t nat -A PREROUTING -s 192.168.1.1 -d 192.170.1.79 -p udp -j MARK --set-mark 12
# IP Routes
ip route add 192.170.1.0/24 dev wlan0 table 11
ip route add 192.170.1.0/24 dev wlan1 table 12
然而,这是行不通的。我无法让它向正确的设备发送消息 - 我觉得因为它太简单了。
答案1
答案最终是一个名为 的应用程序parprouted
。这是一个 ARP 代理,允许设备将网络视为单个逻辑网络,即使它们在物理上是分开的。 ARP 代理在第 3 层工作,这意味着您不必处理第 2 层(链路层)。有关 ARP 代理如何工作的好文章请参阅此处http://www.tcpipguide.com/free/t_ProxyARP-2.htm
在这种情况下,桥接方法不起作用。主要是因为 WiFi 似乎不使用与以太网相同的帧模式,并且不容易桥接。
我没有花足够长的时间研究该ip route
方法来弄清楚如何做到这一点。我不太确定如何配置它,但我认为可能需要使用 ip 表来根据目标 ip 地址进行过滤。
我的网络配置如下
(192.170.1.32) WiFi Device 1 freq A
/
/
(wlan0 = 192.170.1.250/24)
PC (192.170.1.251/24) ------- (eth0 = 192.170.1.251/24) RPi -----
(wlan1 = 192.170.1.251/24)
\
\
(192.170.1.69) WiFi Device 2 freq B
并parprouted
开始使用parprouted eth0 wlan0 wlan1