ftp-proxy требует pf, поэтому поставил frox
bsd$ whereis -s frox
bsd$ frox: /usr/ports/ftp/frox
bsd$ cd /usr/ports/ftp/frox
bsd$ sudo make -D BATCH install clean
bsd$ rehash
Если клиент использует активный режим FTP, то после соединения с сервером на порт 21 и прохождения аутентификации клиент отправит командой PORT свой серый IP-адрес и ftp-сервер никогда не сможет с ним соединиться (PORT n1,n2,n3,n4,n5,n6 = IP-адрес клиента (n1.n2.n3.n4) и порт (n5 x 256 + n6))
Решением является организация клиентам доступа по ftp в пассивном режиме через ftp-прокси /usr/ports/ftp/frox
Для прозрачного прокси необходим форвардинг пакетов, адресованных на порт 21, на порт прокси ftp, в данном случае 2121
bsd$ less /etc/rc.firewall
${fwcmd} add fwd 192.168.XXX.XX,2121 from ${ftpallow} to any 21
${fwcmd} nat 123 config if ${ext_if} same_ports unreg_only
....
${fwcmd} add nat 123 from ${subnet} to any out via ${ext_if}
${fwcmd} add nat 123 from any to me in via ${ext_if}
${fwcmd} add allow tcp from any to ${ftpallow} established
....
${fwcmd} add allow all from me to any
${fwcmd} add allow all from any to me
Для форвардинга пришлось заново собрать ядро с Options IPFIREWALL_FORWARD
bsd$ sudo ee /usr/src/sys/i386/conf/kern.ipfw
bsd$ cd /usr/src/
bsd$ sudo make buildkernel KERNCONF=kern.ipfw
bsd$ sudo make installkernel KERNCONF=kern.ipfw
Непосредственно перед установкой нового ядра, необходимо скопировать существующее ядро
Для соединения клиентов в пассивном режиме в ipfw придется открывать доступ клиентам на непривилегированные порты (т.е. те, у которых номера выше 1023) и транслировать пакеты через внешний интерфейс
${fwcmd} nat 123 config if ${ext_if} same_ports unreg_only
....
${fwcmd} add nat 123 from ${ftpallow} to any out via ${ext_if}
${fwcmd} add nat 123 from any to me in via ${ext_if}
${fwcmd} add allow tcp from ${ftpallow} to any 21,32768-65535
${fwcmd} add allow tcp from any to ${ftpallow} established
....
${fwcmd} add allow all from me to any
${fwcmd} add allow all from any to me
FreeBSD 9.0-RELEASE: Mon Feb 10 13:18:46 UTC 2014