1

Я подключен к серверу OpenVPN и хотел бы перечислить все файлы на FTP-сервере.

ftp> ls
500 I won't open a connection to 10.125.1.20 (only to 31.x.x.100)
ftp: bind: Address already in use
ftp> 

Интерфейс tun имеет IP 10.125.1.20, и, похоже, мой FTP-клиент (в Linux это команда ftp ) сообщает, что IP-адрес FTP-серверу, а не IP-адрес, предоставленный сервером OpenVPN.

Могу ли я сделать что-то с пересылкой iptables, чтобы она работала?

1 ответ1

1

Кажется, вы запускаете свой FTP-клиент на хосте, который подключен к серверу OpenVPN, и ваш трафик направляется внутри VPN (так что для внешнего мира ваш IP-адрес источника является одним из внешнего интерфейса вашего сервера OpenVPN ).

Это правда?

Если нет .... пожалуйста, сообщите нам детали.

Если да, то ваша проблема относится именно к "коробке" OpenVPN, которая:

  • правильно NAT NAT ваши "стандартные" IP-соединения (и, на самом деле, вы можете успешно подключиться к удаленному FTP-серверу)

  • НЕ должным образом NAT-протокол FTP (который, к сожалению, не очень NAT-дружественный и, для NAT, требует специальных процедур).

Чтобы решить вашу проблему, вы должны убедиться, что соответствующий модуль ядра загружен на ваш NAT-блок (OpenVPN). В моем Ubuntu (и, вероятно, также на CentOS 6):

 # modprobe nf_conntrack_ftp

Такой модуль будет внимательно следить за всем трафиком, проходящим по "контрольному" соединению FTP (которое вы можете установить, аутентифицировать и "запускать" передачу файлов), чтобы проверить, какие клиентские порты ваш FTP-клиент объявил использовать для файла. -передача и правильное "искажение" управляющего соединения (чтобы "подделать" такие порты, навязывая порты NAT).

Другими словами:

  • без вышеуказанных модулей:
    • 1) FTP-клиент устанавливает FTP-соединение с удаленным сервером;
    • 2) FTP-клиент хочет начать передачу файлов (простое "ls"). В качестве таких...
    • 3) ...FTP-клиент "открывает" порт TCP, чтобы FTP-сервер мог подключиться к этому порту для передачи содержимого;
    • 4) ...FTP-клиент "сообщает" FTP-серверу, какой порт был открыт, используя контрольное соединение, установленное в пункте 1)
    • 5) к сожалению, без "специальной обработки" ваш удаленный FTP-сервер, который правильно читает / записывает данные по соединению, установленному в пункте 1), получает IP / PORT пары, указанный на шаге 4), который содержит ваш "частный" IP-адрес.
    • 6) поэтому FTP-сервер видит, что управляющее соединение происходит с IP, а соединение с данными связано с другим IP. Он (правильно) не любит такой сценарий, поскольку может привести к некоторому сценарию отражения / DDOS. Таким образом, он отправляет вам сообщение об ошибке, которое вы видите.

,

  • с загруженным выше модулем
    • все как выше, кроме шага 5. Такой шаг стал ...
    • 5) Ваш NAT-ящик, благодаря модулю conntrack_ftp, открывает собственный TCP-порт (на внешнем интерфейсе) и готовится к получению обратно данных FTP-трафика по таким портам. Получив его, ретранслируйте такой трафик обратно на FTP-клиент. Кроме того, «контрольное соединение» искажено, поэтому для замены пары IP/PORT, отправленной вашим клиентом, на IP/PORT NAT-коробки.
    • ... и благодаря этому все должно работать без сбоев :-) (... или, по крайней мере, я надеюсь).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .