LINUX.ORG.RU
ФорумAdmin

Iptables - промаркировать локальный FTP трафик

 , ,


0

2

Внезапно, сложная задача: промаркировать весь FTP трафик на локальной машине и зарулить его по отдельному каналу. Локальная машина - FTP клиент, коннектится ко множеству неизвестных и неподконтрольных FTP серверов. Промаркировать нужно и active и passive ftp (в последнем, помимо соединений на порты 21 и 20, устанавливается исходящее соединение на произвольный порт от 1024 до 65535)

Решил начать сначала с passive, подход в лоб не работает:

modprobe nf_conntrack_ftp
modprobe nf_nat_ftp
iptables -t mangle -I OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j MARK --set-mark 22
iptables -t mangle -I OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j MARK --set-mark 22
iptables -t mangle -A OUTPUT -p tcp -m helper --helper "ftp" -j MARK --set-mark 22

Не работает - т.к. маркируются только коннекты на 20 и 21 порт, коннекты пассивного FTP на порты 1024 и выше не маркируются.

Вроде простая и старая как мир задача, но уже кажется, решения у нее нет, helper не работает, а без него нереально, т.к. придется весь трафик с порта 1024 и выше маркировать, а это не годится. Как вообще локально шейпят FTP трафик? Подход то должен быть тот же.

Кто-нибудь имеет хоть какое-нибудь решение этой задачи? Очень прошу помочь.


Ответ на: комментарий от vel

Пробовал, не работает, видимо коннекты пассивного FTP не идут в состоянии related. Да и netstat показывает ESTABLISHED

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

21-й порт маркируется и ходит через отдельный канал с единственным правилом на OUTPUT. Проверил, добавил правила для helper'a и на INPUT - не маркируется все-равно.

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