Доброе утро, господа, мой RPi 2 — это рабочая точка доступа с двумя WiFi-донглами (каждый со своим диапазоном IP-адресов); RPi также подключен через LAN-кабель к моему модему.
Он предлагает самую базовую услугу точки доступа/прокси: принимает входящие соединения на обоих интерфейсах WiFi и отправляет данные на мой модем через кабель локальной сети во внешний Интернет.
Пока все хорошо: теперь я хочу сделать свой RPi менеджером QOS: он будет не только отправлять и получать данные, но и отдавать приоритет определенному типу соединений (например, потоковой передаче по SMTP).
Моя программа это сделает, но я тестировал ее только на своем ноутбуке, и теперь я поставлю свою программу на свой RPi. Моя программа принимает входящие соединения на фиксированном порту (8000): на своем ноутбуке я установил плагин в браузере, который перенаправляет трафик на порт 8000, и, похоже, все работает нормально.
Теперь я собираюсь разместить его на RPi, но не знаю, как перенаправить трафик с обоих WiFi-модемов на мою программу на порт 8000.
Мне не хватает знаний о маршрутизации, но я думаю, что это можно сделать с помощью двух iptables
правил, что-то вроде:
iptables -t nat -A PREROUTING -i wlan0 -p tcp -j REDIRECT --to-port 8000
iptables -t nat -A PREROUTING -i wlan1 -p tcp -j REDIRECT --to-port 8000
Однако эти два правила, похоже, не применяются: запуск моей программы на моем RPi с этими двумя iptables
правилами не выводит никаких данных, поэтому соединения на самом деле не перенаправляются на порт 8000, который на самом деле прослушивает моя программа.
Я видел несколько примеров, где для перенаправления --dport
тоже нужен флаг, но я не знаю, какой это будет порт.
Вот мои текущие iptables
правила на RPi:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -j ACCEPT