Как выставить мой FTP-сервер миру из-за NAT?

В моей локальной сети есть vsftpd сервер; есть гипотетический клиентский компьютер в другой подсети, который не может устанавливать прямые подключения к моему FTP-серверу; и есть маршрутизатор между 2 подсетями, фактически VPN.

У меня нет доступа к маршрутизатору, поэтому я не могу сделать port range с iptables.

OpenSSH сервер работает на клиенте, поэтому я могу пересылать отдельные порты. Также я могу подключиться к любому порту на гипотетическом FTP-клиенте. Поэтому я подумал, что могу перенаправить порт управления 21 клиенту и заставить vsftpd подключаться напрямую к клиенту для потоков данных (режим active). Но vsftpd говорит 500 Illegal PORT command, вероятно, потому что адрес ip, сообщаемый клиентом, отличается от ip соединения, сделанного ssh с портом 21.

1 2015.03.30 14:28:24:0263 0015|->PWD
1 2015.03.30 14:28:24:0279 0016|<-257 "/okimftp" is the current directory
1 2015.03.30 14:28:24:0279 0000|->PORT 10,3,2,9,223,67
1 2015.03.30 14:28:24:0279 0000|<-500 Illegal PORT command

Так что, возможно, мне понадобится прокси-сервер FTP на клиентском компьютере, который будет изменять адреса в командах управления (для активного режима) и либо иметь свой собственный бэкэнд в моей локальной сети, либо управлять сеансом ssh для создания дополнительных переадресация портов (для пассивного режима)

0
задан 30 March 2015 в 15:09

1 ответ

Решенный с парой 3proxy.

бэкенд 3proxy.cfg в моей LAN:

auth iponly
# only allow connect to control or ephemeral ports on FTP server
allow * * ftp.company.org 21,30000-65535
socks -u

туннель:

ssh@client.net -R 0.0.0.0:1080:localhost:1080

frontend 3proxy.cfg на клиенте:

auth iponly
# allow host names that are resolvable only remotely
fakeresolve
allow *
# chain FTP proxy to parent Socks5 proxy with remote resolve
parent 1000 socks5+ 127.0.0.1 1080
ftppr -p2121
0
ответ дан 30 March 2015 в 15:09

Другие вопросы по тегам:

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