全5090文字
PR

ファイアウオールを越える工夫

 FTPを利用する際の注意点は、データコネクションがサーバー側から張られるということだ。FTPクライアントがファイアウオールの内側にある場合、制御コネクションは問題なく張れるが、データコネクションは外部からの接続になるので遮断されてしまう(図7上)。このままではコマンドは送信できるがデータは転送できない。

図7●パッシブモードではクライアントからデータコネクションを張る
図7●パッシブモードではクライアントからデータコネクションを張る
通常、データコネクションはFTPサーバーから張るので、ファイアウオールがあると確立できない。パッシブモードに切り替えるとFTPクライアントからデータコネクションを張るのでファイアウオールを越えられる。
[画像のクリックで拡大表示]

 ファイアウオールでパケットフィルタリングのルールを動的に変更すれば回避できるが、もっと簡単なのがFTPのパッシブモードを利用することだ。

 FTPサーバーのTCP 20番ポートからデータコネクションを確立する通常のモードはアクティブモードと呼ばれる。それに対してパッシブモードではFTPクライアントからデータコネクションを確立する。この場合、制御コネクションと同様に内部から外部へコネクションを張ることになるので、ファイアウオールで遮断されない。

 パッシブモードに移行するには、FTPクライアントからPASVコマンドを送信する(同下)。そのレスポンスとしてFTPサーバーはレスポンスコード「227」とともに、データコネクションを待ち受けるポート番号を通知する(図7ではTCP 2000番)。FTPクライアントは通知されたポートに対してデータコネクションを確立する。

ネット君 制御専用のコネクションとデータ転送専用のコネクションですか。理にかなっている気がしますが、なんか大変ですね。

インター博士 FTPは様々な機能を持つ優れたファイル転送プロトコルだ。その分、複雑だと理解するとよいだろう。