Тема: IPTables NAT и FTP
Вот понадобилось мне вывести наружу ftp, кстати, поднял очень даже не плохой роутер на Centos, совсем удалился я от FreeBSD..... Ну да ладно... Есть пулл входящих IP и куча серверов, проблема для любого FTP за натом стандартная - пассивные порты и ответ с другого внешнего IP (тот что GW по умолчанию)
Пример iptables
*nat
:PREROUTING ACCEPT [24159:1702354]
:INPUT ACCEPT [16402:1084803]
:OUTPUT ACCEPT [2046:158805]
:POSTROUTING ACCEPT [509:46875]
-A PREROUTING -d 193.333.222.111/32 -i ens5 -p tcp -m tcp --dport 20 -j DNAT --to-destination 10.0.0.14:20
-A PREROUTING -d 193.333.222.111/32 -i ens5 -p tcp -m tcp --dport 21 -j DNAT --to-destination 10.0.0.14:21
-A PREROUTING -d 193.333.222.111/32 -i ens5 -p tcp -m tcp --dport 1024:65535 -j DNAT --to-destination 10.0.0.14:1024-65535
-A POSTROUTING -s 10.0.0.14/32 -o ens5 -j SNAT --to-source 193.333.222.111
-A POSTROUTING -o ens5 -j MASQUERADE
Что тут происходит, все порты которые нужны для ftp пробрасываются на внутренний сервер, плюс все исходящее с внутреннего сервера привязывается к его IP, так как при переходе на пассивные порты сервер начинает отвечать с общего исходящего IP. Можно еще добавить 1024:65535 на postrouting и RELATED,ESTABLISHED на prerouting, но это все дело вкуса...