Ruby NET::FTP не разрешает правильный IP

Я пытаюсь подключиться к FTP-серверу, используя:

ftp = Net::FTPFXPTLS.new
ftp.passive=true
ftp.debug_mode=true
ftp.connect('200.111.111.11',21)
ftp.login('Username','Pass')
ftp.chdir('inbound')
ftp.putbinaryfile("./#{filename}", "/#{filename}")
ftp.close()

Для целей этого примера 200.111.111.11 является правильным IP, а 10.1.1.1 - поддельным IP.

Когда я подключаюсь через FTP-клиент, такой как Transmit, я подключаюсь нормально, и все работает как обычно, но в стенограмме говорится:

Cmd: PASV
227: Entering Passive Mode (10,1,1,1,47,79).
Fixing bogus PASV data address from 10.1.1.1:12111 to 200.111.111.11:12111.

Затем, когда он пытается подключиться через скрипт ruby:

get: 425 Failed to establish connection.

Когда он пытается выполнить какое-либо действие, такое как LIST или STOR, потому что команда PASV всегда возвращает 10.1.1.1:12111.

Так есть ли в любом случае, чтобы гарантировать, что команда PASV использует 200.111.111.11, а не то, что отправлено обратно?

1 ответ

Решение

Похоже, это больше проблема с самоцветом, для него есть решение, но для его реализации потребуется немного времени. Чтобы сэкономить время, мы просто переключили протокол на использование SFTP, который работает безупречно. (Переключил и сервер и код)

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