Iptables перенаправляет диапазон портов другому диапазону портов на другом хосте

Я хочу перенаправить входящие запросы на диапазон портов (от 30000 до 40000) на другой хост с другим диапазоном портов ( 10000-20000), сопоставляя их от 1 до 1. (от 30000 до 10000, от 40000 до 20000 и т. Д.) Если диапазон портов то же самое то есть:

iptables -t nat -I PREROUTING -p tcp -m tcp --dport 10000:20000 -j DNAT --to [local_ip]:10000-20000

Работает отлично. Но если начальный диапазон портов отличается от диапазона портов на вторичном хосте:

iptables -t nat -I PREROUTING -p tcp -m tcp --dport 30000:40000 -j DNAT --to [local_ip]:10000-20000

Затем вместо сопоставления каждого порта с соответствующим портом все входящие соединения на портах 30000-40000 вместо этого сопоставляются с одним и тем же (я думаю, случайным образом) портом на вторичном хосте (на данный момент все они переходят на 13675).

Я также пытался использовать перенаправление портов с помощью

-j REDIRECT

Я не могу заставить это работать.

Как я могу поддерживать такое же поведение из первого примера для работы с разными диапазонами портов?

2 ответа

Решение

После долгих поисков и расспросов, очевидно, iptables не может с этим справиться, даже если использовать псевдоинтерфейсы.

Я бы попробовал использовать xinit.d, чтобы принимать входящие соединения на желаемом диапазоне портов и автоматически создавать что-то вроде netcat ( nc) для каждого активно используемого туннеля.

может быть, эта ссылка может помочь, это похоже: https://blog.linuxnet.ch/automatic-tunnels-with-xinetd-and-netcat/ или выполнение сценария при получении входящего соединения с xinetd

Другие вопросы по тегам