FTP-сервер в пассивном режиме в частной подсети

У меня есть следующая конфигурация:

Клиент FTP (public_IP1) => Интернет => Брандмауэр (Public_IP2) => FTP-сервер (10.10.12.171)

Я имею после правил iptables в Firewall:

DNAT        tcp  --  0.0.0.0/0      Public_IP2  tcp dpt:21 to:10.10.12.171
MASQUERADE  all  --  10.0.0.0/8     0.0.0.0/0

Я имею также nf_conntrack_ftp загруженный в Firewall

nf_conntrack_ftp       13057  0 
nf_conntrack           79944  6 nf_conntrack_ftp,nf_conntrack_ipv4,nf_nat,iptable_nat,vzcpt,vzrst

В активном режиме все работает прекрасное. В пассивном режиме у меня есть следующая ошибка (в клиенте):

ftp> passive
Passive mode on.
ftp> dir
227 Entering Passive Mode (10,10,12,171,86,26)
ftp: connect: No route to host

Я предполагаю, что клиент склонен соединяться с моим частным IP (10.10.12.171). Как изменить его?

1
задан 5 July 2015 в 03:11
2 ответа

Ваш ftp-сервер должен быть сконфигурирован, так как он находится за NAT. Вы не сказали, какое программное обеспечение ftp сервера вы используете, поэтому я предоставлю необходимый пример конфигурационной директивы для proFTPd:

# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
MasqueradeAddress       Public_IP2
0
ответ дан 4 December 2019 в 07:27

Существует два решения:

  1. Как уже упоминалось, @andrii-kupchanko можно изменить конфигурацию ftp-сервера. Это изменение заставляет сервер посылать внешний IP (Public_IP2) клиенту как IP для пассивного обратного соединения. Недостатком является необходимость переадресации пассивного соединения обратно на резидентный FTP-сервер частной подсети (через iptables) и статически связывающие порты, используемые пассивными соединениями

  2. Вам нужно всего два модуля nf_conntrack_ftp и nf_nat_ftp. Из-за отсутствия второго модуля пассивное соединение с сервером за шлюзом не работало.

0
ответ дан 4 December 2019 в 07:27

Теги

Похожие вопросы