Я работаю над маршрутизатором между внешним радио/модемом и моим устройством, где маршрутизатор устанавливает коммутируемое соединение с использованием протокола ppp для радио и устанавливает правила iptables между полученным IP-адресом радио и IP-адресом моего устройства.
У меня есть следующие маршруты:
Шлюз назначения Флаги Генмаски Метрика Ссылка Использование Iface
по умолчанию 192.168.1000.101 0.0.0.0 UG 0 0 0 ppp0
192.168.100.101 * 255.255.255.255 UH 0 0 0 ppp0
192.168.164.0 * 255.255.255.0 U 0 0 0 eth0
И вот мои следующие правила iptables:
iptables -A ВВОД -j ПРИНЯТЬ
iptables -A ВЫВОД -j ПРИНЯТЬ
iptables -A ВПЕРЕД -j ПРИНЯТЬ
iptables -A ВВОД -i lo -j ПРИНЯТЬ
iptables -A ВЫВОД -o lo -j ПРИНЯТЬ
iptables -t nat -A PREROUTING -i ppp0 -p tcp -j DNAT --to 192.168.0.110
iptables -t nat -A PREROUTING -i ppp0 -p udp -j DNAT --to 192.168.0.110
iptables -t nat -A POSTROUTING --source 0/0 -o ppp0 -j MASQUERADE
С помощью этих правил я могу получить доступ ко всему на своем устройстве, например к telnet, веб-серверу и некоторым другим средствам связи, используя высокие порты.
Моя проблема заключается в том, что мне нужно подключиться к моему устройству, используя исходный порт с портом назначения, и это не проблема, но мое устройство должно отвечать, используя другой порт, который он создал для продолжения этой связи.
Например, я пытаюсь установить соединение, используя порт источника 2000 с портом назначения 2001, и ответ моего устройства возвращается, используя порт источника 21550 и порт назначения 2000. Но ответ не возвращается клиенту, подключенному к другой стороне радио. .
Используя tcpdump внутри моего маршрутизатора, я увидел ответ устройства, но я не мог понять, как обрабатывать изменения этого порта в правилах iptables, чтобы отправить его обратно клиенту, подключенному к другой стороне радио.
Любая помощь будет оценена!