Итак, есть роутер на FreeBSD, у которого два интерфейса (локальный и интернет) и есть FTP-сервер на FreeBSD только с локальным интерфейсом.
Нужно пробросить FTP-сессии из инета в локальную сеть причем так, чтобы у клиентов работал и active mode и passive mode.
В качестве FTP-сервера используется proftpd.
В качестве файервола на роутере используется Packet Filter (PF).
В /etc/pf.conf в секции NAT пишем:
binat on $ext_if from 192.168.0.253 to any -> 199.99.88.88
, где
$ext_if - внешний интерфейс
192.168.0.253 - IP-адрес FTP-сервера в локальной сети
199.99.88.88 - IP-адрес роутера в интернете
rdr pass on $ext_if proto tcp from any to any port ftp -> 192.168.0.253
, где
$ext_if - внешний интерфейс
192.168.0.253 - IP-адрес FTP-сервера в локальной сети
Подразумевается, что остальные разрешающие правила в pf.conf уже написаны.
Переходим к настройке FTP-сервера, а именно proftpd, а именно proftpd.conf
MasqueradeAddress 199.99.88.88
Всё.
Работают и активный и пассивный режимы подключения.
Литература:
1 комментарий:
Если вываливается ошибка "425 Can't open data connection for transfer of "" :
в pf на роутере меняем "ftp" на {21,30000:30100}
rdr pass on $ext_if proto tcp from any to any port {21,30000:30100} -> 192.168.0.253
на ftp-сервере прописываем в пасивном режиме такой же диапазон портов 30000:30100
Было применено для FTP-сервера FileZilla на виндовой машине, все заработало.
Да и спасибо автору за статью, очень помогла.
Отправить комментарий