MCU入門 第9回 NAT/FW トラバーサル②
– NAT/FW トラバーサルの仕組み “FWとは”

2011年9月掲載

FW(ファイアウォール:Firewall)とは

FWと略されることが多いですが、もともとはFirewall、日本語では「防火壁」といいます。
火事が起きたときに、他所からの延焼を防ぐための壁のことです。
転じてICTの世界では、許可されてない人からの不法侵入を防ぐもの、という意味でFWを使います。

FWの外から内へ

基本的には、情報が出入りする方向で考えます。
外側から内側に入ることは、基本的に許可していません。FWが関知していない人々は、他人=敵として、用心するためです。
これによって、秘匿情報などを外部からアクセスできないようにします。

ただしサーバーのように、外部からアクセスしてもらうことが前提である設備もあります。
その中でも、たとえばWebサービスは外部には公開したいが、Telnetサービスは外部には公開したくない、という場合があります。

このとき、ポートという概念が役立ちます。
ポートは、クライアントPCがサーバーPCに接続するときに、サーバーの「何の」プログラムサービスを利用したいのかを指定するための数字です。
サーバーは複数のサービスを実行しているのが普通です。そのサービスのうち、どれをクライアントに提供すればよいのか、ということをサーバーに伝えないと必要な情報をもらえません。
接続依頼をするときにどのサービスの情報が欲しいかを予め指定すれば、すばやく必要な情報をもらうことができます。

ポートは、クライアント側からサーバー側に、何のサービスの情報がほしいかを伝えるための数字です。数字だと人間には分かりにくいですが、コンピュータには分かりやすいのです。手順をなるべく省略できるようにするため、広く利用されているサービスは、数字が指定されています。
これを "Well-Known port numbers" と呼び、Internet Assigned Numbers Authority(IANA,アイアナ)が管理をしています。
たとえば「TCPポート80番」に接続すればWebサービスが、TCPポート23番に接続すればTelnetサービスが提供されます。

Firewallでは、この機能を利用してセキュリティを高めます。
とあるサーバーで、Webサービスは提供したいがTelnetサービスは提供したくない、という場合があったとします。
このときFirewallでは、外部からの接続依頼に対しTCP80番ポートは接続を許可し、TCP23番ポートは拒否するという設定にします。

firewallを経由してサーバーにアクセスすると

FWの内から外へ

内側から外側に出ることは、基本的に許可しています。
FWが守っているところの人々は、身元がしっかりしているので通信を妨害しない、というポリシーです。
このため、内側からWebやメールなどを読みにいくなど、情報を取得することができます。

クライアントがfirewallの外に出るとき

FWの内から外に出て再び「内へ」

情報を受け取るときは、どうしても外部から内部への流れになります。これだと、外から入れないから情報を取得できないのではないでしょうか?
いえいえ、一度外に出るときに「このポート番号の門から出て行きました」という手形を持って出ますので、同じポート番号の門に戻れば入れてくれます。

どうやっているかというと、サーバーにクライアントがサービスを依頼するときは、宛先である「サーバのIPアドレスと、ポート番号」そして返信宛先である「クライアントのIPアドレスと、ポート番号」を、必ず添えます。
これを、接続先IPアドレス(デスティネーションIP, )、接続先ポート番号(デスティネーションポート)、発信元IPアドレス(ソースIP)、発信元ポート番号(ソースポート)と言います。

クライアントが戻ってくるとき