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, который работает безупречно. (Переключил и сервер и код)