Иногда бывают моменты, когда нужно заставить “видеть” локальный ftp снаружи. Как правильно подойти к этому вопросу? Нормально ли будет он работать за NAT’ом? Для того, что бы ftp нормально работал, нужно выполнение таких условий
1) Только пассивный режим работы самого FTP-сервера
2) Указать диапазон портов для пассивной передачи (passive ports range)
3) Проброс портов должен соответствовать 1:1 (то есть для passive ports range 5000:5099 пробрасываться они должны тоже в порты 5000:5099)
После этого можно спокойно “пробрасывать” в локалку passive ports range + 21-ый. При этом, 21-ый не обязательно снаружи должен быть 21-ым, а вот portrange – должны соответствовать 1:1.
Вот как это выглядит на примере файервола pf:
rdr on $ext_if proto tcp from any to $ext_if port 21 -> 10.10.10.10 port 21
rdr on $ext_if proto tcp from any to $ext_if port 5000:5099 -> 10.10.10.10 port 5000:5099
Естественно, так же нужно в самом файерволе разрешить подключение на указанные порты.