LINUX.ORG.RU
ФорумAdmin

FTP за NAT на нестандартном порту

 , ,


1

1

Шлюз на Debian 7.11 (3.2.0-4-686-pae), iptables v1.4.14.

ip внешнего интерфейса: 1.1.1.1

ip внутреннго интерфейса: 192.168.1.1

Внутри локальной сети работает ftp-сервер, для которого нужно организовать доступ снаружи.

ip ftp-сервера во внутренней сети: 192.168.1.55

Порт ftp-сервера во внутренней сети: 51

Вывод lsmod | grep ftp

nf_nat_ftp             12420  0
nf_conntrack_ftp       12533  2 nf_nat_ftp
nf_nat                 17913  2 iptable_nat,nf_nat_ftp
nf_conntrack           43121  9 nf_conntrack_ipv4,nf_nat,iptable_nat,xt_conntrack,xt_state,nf_conntrack_ftp,nf_nat_ftp,xt_CT,nf_conntrack_netlink

Вот так не работает:

iptables -t raw -A PREROUTING --dst 1.1.1.1   -p tcp --dport 55555 -j CT --helper ftp
iptables -t nat -A PREROUTING -i ext --dst 1.1.1.1 -p tcp --dport 55555 -j DNAT --to-destination 192.168.1.55:51

Управляющее соединение открывается, но соденение для потока данных нет. conntrack -E expect ничего не показывает.

Если переделать, чтобы порт ftp-сервер был стандартным (настройки ftp-сервера и настройки iptables), то все работает:

iptables -t nat -A PREROUTING -i ext --dst 1.1.1.1 -p tcp --dport 55555 -j DNAT --to-destination 192.168.1.55:21

Подскажите пожалуйста какие нужны настройки, чтобы сделать доступным ftp-сервер, работающий на нестандартном порту?


У модуля nf_conntrack_ftp есть параметр «ports», который определяет список портов на которых он работает, но не более 8 штук.

vel ★★★★★ ()
Ответ на: комментарий от vel

Тут говорят, что использование опций модуля является не рекомендуемым и устаревшим способом:

https://home.regit.org/netfilter-en/secure-use-of-helpers/

iptables -A PREROUTING -t raw -p tcp --dport 2121 -d 1.2.3.4 -j CT --helper ftp

Therefore, the use of the module options is NOT recommended anymore – please use the CT target instead.

Поэтому и захотел попробовать новый способ.

KLfer ()
Ответ на: комментарий от Oleg_Iu

Этим не интересовался - хелпер должен все отрабатывать.

KLfer ()
Ответ на: комментарий от Bootmen

Да. С опцией модуля все работает:

echo options nf_conntrack_ftp ports=21,51 >> /etc/modprobe.d/iptables.conf
KLfer ()
Ответ на: комментарий от KLfer

А если сделать его активным чтобы сервер сам инициализировал передачу и указать порт для данных, и на межсетевом экране открыть нужный порты.

Samamy ★★★ ()
Ответ на: комментарий от KLfer

У тебя iptables понимает конструкцию вида -j CT --helper ftp-51? Если нет, то опция «ports» останется единственным способом.

Есть проблема - все примеры говорят о пропуске пакетов на ftp с нестандарном порту. "-j CT --helper ..." работает до NAT, так что какой порт указывать хелперу в случае смены порта?

ядро 3.2.0-4 образца начала 2012 года, iptables 1.4.14 май 2012 года. Есть какие-то веские причины оставаться на такой рухляди?

vel ★★★★★ ()
Ответ на: комментарий от vel

У тебя iptables понимает конструкцию вида -j CT –helper ftp-51

Нет. Ругается. Но судя по этому документу https://ipset.netfilter.org/iptables-extensions.man.html эта опция в таком формате используется только в разделе набора условий, а в разделе целевого действия только без указания порта.

Есть проблема - все примеры говорят о пропуске пакетов на ftp с нестандарном порту. «-j CT –helper …» работает до NAT, так что какой порт указывать хелперу в случае смены порта?

Как раз указываю порт, который виден снаружи.

ядро 3.2.0-4 образца начала 2012 года, iptables 1.4.14 май 2012 года. Есть какие-то веские причины оставаться на такой рухляди?

Этот ящик трудится круглосуточно. Не хочется его лишний раз трогать.

KLfer ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.