Внезапно, сложная задача: промаркировать весь 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 трафик? Подход то должен быть тот же.
Кто-нибудь имеет хоть какое-нибудь решение этой задачи? Очень прошу помочь.
Добрый день, а если инвертировать так сказать... т.е маркировать тот трафик который возможно(80, rdp, все что угодно) и отправлять его в not_default маршрут, а все остальное будет ftp...
> Добрый день, а если инвертировать так сказать... т.е маркировать тот трафик который
> возможно(80, rdp, все что угодно) и отправлять его в not_default маршрут,
> а все остальное будет ftp...Спасибо, но не вариант, неизвестно, какой трафик еще будет на этом клиенте.
Если по фтп лазят скрипты итп так как это локальная машина можно их(скрипты) навесить на отдельного юзверя и матчить по owner-у.
Если это человек - надо думать, фтп как протокол та ещё пакость.
> Если по фтп лазят скрипты итп так как это локальная машина можно
> их(скрипты) навесить на отдельного юзверя и матчить по owner-у.
> Если это человек - надо думать, фтп как протокол та ещё пакость.И скрипты, которые помимо FTP еще и по другим протоколам ходят, и человек. По владельцу уже давно бы сделал, это то просто.
Непонятно, почему ftp helper не работает? Он же вроде как раз для таких целей и задумывался.
мне кажется что вы неправильно используете helper
он работает с conntrack, вот в мануале
Example: FTP helperIf your clients are authorized to access FTP outside of your network, you can add
iptables -A FORWARD -m conntrack --ctstate RELATED -m helper \\
--helper ftp -o $OUT_IFACE -p tcp \\
--dport 1024: -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED -m helper \\
--helper ftp -i $OUT_IFACE -p tcp \\
--dport 1024: -j ACCEPT
> мне кажется что вы неправильно используете helper
> он работает с conntrack, вот в мануале
> Example: FTP helperЧитал этот мануал, пробовал и в такой комбинации, не работает. Может быть он не работает для локальных соединений в принципе, а только для маршрутизируемых? Мало что-то документации по этому хелперу.
А это обязательно надо незаметно сделать не проще поставить прокси и не парится с маркировкой?
> А это обязательно надо незаметно сделать не проще поставить прокси и не
> парится с маркировкой?Не, прокси не подходит никак.