1

以下を使用して 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 です。

Transmit などの FTP クライアント経由で接続すると、正常に接続され、すべてが正常に機能しますが、トランスクリプトには次のように記載されています。

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.

PASV コマンドは常に 10.1.1.1:12111 を返すため、LIST や STOR などのアクションを実行しようとすると。

では、PASV コマンドが 200.111.111.11 を使用することを保証する方法はありますか?

4

1 に答える 1

1

これは gem の問題のようです。解決策はありますが、実装には少し時間がかかります。時間を節約するために、問題なく動作する SFTP を使用するようにプロトコルを切り替えただけです。(サーバーとコードの両方を切り替えました)

于 2012-10-16T08:45:04.273 に答える