LINUX.ORG.RU
ФорумAdmin

Применение правил iptables на лету


0

2

Всем привет! Появилась необходимость на лету перебрасывать весь трафик с одного порта на другой. Пока ничего лучшего не придумал, чем в нужный момент менять правила iptables. То есть когда нужно редиректить трафик с порта 111 на порт 222 применяется правило -A PREROUTING -p tcp --dport 111 -j REDIRECT --to-ports 222 когда нужно на порт 333, старое правило отменяется применяется новое -A PREROUTING -p tcp --dport 111 -j REDIRECT --to-ports 333 ну и тд. Но даже когда применяется новое правило и удаляется старое, трафик идет на порт 222, до перезапуска программы, которая собственно и коннектится к порту 111. Да, мне самому не нравится эта схема;) может, кто подскажет более элегантное решение для подобных задач.

Перемещено beastie из general

Да, правила в таблицах nat применяются только к первому пакету соединения (state NEW), дальнейшие пакеты идут мимо таблицы nat, их обрабатывают по записям в conntrack. Следовательно, единственный вариант это удалить запись об этом соединении в таблице conntrack, для чего есть команда ″conntrack″. То есть сначала заменяем правило в iptables, а потом удаляем соединение.

mky ★★★★★
()
Ответ на: комментарий от mky

И ещё, надеюсь, вы хорошо понимаете, что делаете. Потому что tcp-соединение должно начинаться с SYN-пакета, поэтому так на ходу начинать перебрасывать пакеты на другой порт, скорее всего, бесполезно, ядро не пустит их в сокет, считая их invalid'ными.

mky ★★★★★
()

Так оно будет действовать только на новые коннекты.

Текущие коннекты можно сбросить через «conntrack -F ...» ( после смены правила )

Но я бы эти правила переключал через condition

vel ★★★★★
()
Ответ на: комментарий от vasiliypavlow

Принимающая пакеты программа получит на другой порт последовательность пакетов, не начинающуюся с SYN, и отбросит нафиг. Можно подробнее про задачу, для которой необходим такой странный выверт?

selivan ★★★
()
Ответ на: комментарий от selivan

ну задача довольно специфическая - много копий одной программы будут запущены на разных портах, раньше работало так - одна закрылась, другая запустилась. теперь хочу улучшить

vasiliypavlow
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.