質問: ルータでのftpに関するフィルタリング設定について yamahart54iというブロードバンドルータを利用しております。 このルータのパケットフィルタリング設定項目に、 インターネットからローカルネットワークへの、送信元ポートが20番のものについては、通過を許可するという設定があります。 これはつまりftpの設定で、ftpでパッシブモードではなくアクティブモードで通信する場合、ファイル転送用の通信路としてftpサーバーの20番ポートからクライアントであるこちら側へ経路が張られるから、これを許可しないと暗黙のdenyによってはじかれてしまいftp通信がうまくいかなくなることへの回避策なのですが、 これがオンにされることでどうしてftp通信がうまくいくのか理解できません。 というのもローカルネットワークはルータのnatによって隠蔽されているはずで、たとえローカルネットワークへのftpdata通信を許可したところで、送信先のローカルアドレスがわからないはずであり、したがって通信が成立するはずがないのですが、しかし実際にはうまくいきます。 例えばローカルネットワーク内でwebサーバーを運用した場合、ルータにてルータの80番ポートへのアクセスをwebサーバー機に転送するポートフォワーディングを設定しなければ通信がうまくいきません。しかしftpに関してそのような設定は一切行っておりません。にもかかわらず通信がうまくいくのはどうしてなのでしょうか? 説明が下手でわかりにくいでしょうが、よろしくお願いします。 長々と失礼しました。
回答: アクティブモードの場合は、クライアントからサーバに対して、必ずportというコマンドが送られます。 portコマンドにはデータ接続で使うためのポート番号の情報が含まれます。 ルータはこれを解釈して、そこに書いてあるポートを一時的に開けます。このportコマンドには当然コマンドを発行したクライアントのアドレス(この場合ローカルアドレス)も記述されてます。 ですから、ルータは誰のために一時的にポートを開けたのか知っているわけです。