Я пытаюсь разрешить устройству, подключенному к 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 в 192.170.1.69, который находится на частоте A (wlan0), и пакеты udp до 192.170.1.9, который находится на частоте B (wlan1).
# 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
Однако это не работает. Я не могу заставить его отправлять сообщения на правильные устройства - я чувствую, потому что это слишком просто.
Ответ оказался приложением под названием parprouted
. Это прокси-сервер ARP, который позволяет устройствам рассматривать сеть как единую логическую сеть, даже если они физически разделены. Прокси-сервер ARP работает на уровне 3, что означает, что вам не нужно иметь дело с канальным уровнем уровня 2 (). Хорошую статью о том, как работают прокси-серверы ARP, см. здесь http://www.tcpipguide.com/free/t_ProxyARP-2.htm
Метод моста в этом случае не работает. В первую очередь потому, что Wi-Fi, похоже, не использует ту же схему кадрирования, что и Ethernet, и его нелегко подключить.
Я недостаточно долго изучал метод 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