前回までに解説した、基本的なルーティングの動作は理解できただろうか。今回はさらに一歩進めて、一般的なブロードバンドルータに搭載されているルーティング技術について見てみよう。
ブロードバンドルータには、「LAN側」「WAN側」の2つのポートがそれぞれ用意されている。WAN側はADSLモデムやCATVモデムなど、外部のネットワークと接続するためのポートだ。LAN側は、ハブ(コラム参照)として構成され複数ポートの場合もあるが、家庭内のPCなどの機器を接続するためのポートだ。
通常のルータであれば、単に同じポートが複数並ぶだけであり、ブロードバンドルータのように内部と外部で区別されることはない。
ブロードバンドルータでは、このように外部と内部とを切り分け、内部から外部へのアクセスは可能だが、外部から内部へのルーティングは行えないようにしているのが普通だ。これはもちろん、外部からの不正アクセスを禁止するためである。「簡易ファイアウォール機能」と表記されているブロードバンドルータ製品があるのは、これに由来している。もっとも、あくまで“簡易”であって、完全なファイアウォールではない点に注意しなくてはならない。
ルーティングとは、あるセグメントから隣り合った別のセグメントへの「相互」のルーティングを行うことだが、ブロードバンドルータではこれを「一方通行」にしてしまうわけだ。もちろん、それらの機能をオフにして、通常のルータとして動作させることも可能だ。
ブロードバンドルータは、LANのようなネットワークとインターネットとを接続することを前提にしており、最初からこれらの機能を搭載しているのが通常のルータとの大きな違いである。つまり、家庭内やSOHO環境では、当然そうした利用が主であるとの配慮なのだ。では順に、それらの機能について見てみよう。
外部から内部へのアクセスを遮断するのは、実はとても簡単だ。ルータでのルーティングを禁止してしまえばよい。前回説明したルーティングテーブルを元に、ルータはルーティングを行う。そこで、ルーティングテーブルの内容を削除したり、そのルーティング機能自体を動作しないようにすればいい。しかし、それでは当然、内部から外部へのアクセスも行えなくなってしまう。
そこでルータにおいて、内部から外部へと送信されるIPパケットを、あたかもルータ自身が外部とアクセスしているかのように書き換え、“仮想的”に内部ノードと外部が通信できるようにする手法が多く用いられている。いくつかの方法があるが、ブロードバンドルーターでは「NAT(Network Address Translation)」か「IPマスカレード(NAPT(Network Address Port Translation)とも呼ばれる)」という2つの方式が一般的だ。
NATやIPマスカレードは、元々は「IPアドレスの枯渇」に対応するため、苦肉の策で考案されたものだ。足りなくなったIPアドレスを補うために、IPアドレスのある特定の範囲を「プライベートアドレス」として、会社内イントラネットなど、インターネットに直接接続されないノードで使用するためのアドレス範囲が定義された。逆に、インターネット上で通常使用されるプライベートアドレス以外のアドレスを「グローバルアドレス」と呼ぶ。
クラス | IPアドレスの範囲 | デフォルトのサブネット数 |
---|---|---|
A | 10.0.0.0〜10.255.255.255 | 1 |
B | 172.16.0.0〜172.31.255.255 | 16 |
C | 192.168.0.0〜192.168.255.255 | 256 |
図1 プライベートアドレスとして利用できるIPアドレスの範囲 |
ルータでは、プライベートアドレスがふられた内部ノードからのIPパケットを受け取ると、いちど内部でIPパケットの送信元アドレスをルータの外部ポート(ブロードバンドルータではWAN側ポート)のIPアドレスへと変換して、外部ノードへと送信する。つまり、外部ノードから見ればルータからのパケットにしか見えないことになる。これがNATである。
TCPの場合には「往復」のパケットが発生するが、単純に「往」のパケットのみを変換したのでは、ルータへと戻ってきた「復」のパケットを送信元の内部ノードへと返せなくなる。そこでルータでは、「アドレス変換テーブル」というものを保持しておき、通信ごとに対応を管理、正しく内部ノードへと「復」パケットも戻すようにしている。
ところが多くの場合、NATは使用しにくい。なぜならNATを正常に機能させるには、ルータは内部ノードの数だけグローバルアドレスを持っていなければならないからだ。これでは、グローバルアドレスの節約にはまったくつながらない。あるいは、ただ1つだけのグローバルアドレスでNATを行おうとすると、あるアクセスが発生している間はほかのアクセスが行えなくなる場合もある。同じ送信元TCP/UDPポートを使用するアクセスを複数同時に行うことは、そもそも処理できないからだ。
そこで考えられたのが「IPマスカレード」である。IPマスカレードでは、IPアドレスのほかにTCP/UDPポートも変換する。つまり、少なくともTCP/UDPポート数の上限までは同時アクセスが可能になるわけだ。
NATやIPマスカレードは、IPアドレス枯渇の問題を解決すると同時に、セキュリティ面でも大きな効果をもたらすことになった。考えてみてほしい。WAN側からLAN側へ、つまりプライベートアドレスのような「ルーティング不可能な」アドレスには、どのようにアクセスすればいいのだろうか?
不可能である。なぜなら、インターネット上に存在するルータは、プライベートアドレスがインターネット上で使用されていないことを知っており、どのルータのルーティングテーブルにもプライベートアドレスは記載されていないからだ。
ネットワーク階層図を使って考えてみよう。
前回までの通常のルーティグとは異なり、トランスポート層まで含めてルータによって分断されている。つまり、ルータが明示的にルーティングや変換をしない限り、IPパケットは直接通過できないことを意味している。
NATやIPマスカレードは、その成り立ちや背景から、「邪道」「一時的な流行」などと見られることも多いが、ネットワーク構成上は、セキュリティの確保において非常に有効な手段であることも理解してもらえるだろう。
ブロードバンドルータの「LAN側」と呼ばれるポートが複数用意されてある場合がある。「4ポート」「8ポート」などと記載されているのがそれだ。ではこれまで説明したように、それぞれのポートがイーサネットでの「セグメント」に相当するのかといえば、そうではない。ブロードバンドルータの場合、これらのポートは「ハブ」のポートなのだ。これに対して「WAN側」のポートは「ルータ」のポートであり、こちらは物理的なセグメントに相当する。逆に、ハブのポートは複数集まっても1つの物理セグメントでしかない。さて、これらの違いはいったいどこにあるのか。
図4で分かるように、ハブはルータとは異なり、「ネットワーク/リンク層」での接続を行う機器だ。つまりハブに対して送出されたイーサネットのフレームは、すべてのポートに送られることになる。ルータの各ポート(つまり複数のセグメント)ではそんなことはないため、これは大きな違いだ。簡単にいえば、ハブとはルータのある1つのポートを単純に4口や8口に分けただけのものと思えばいい。そのため、ハブのポートにはMACアドレスやIPアドレスが割り振られることはない。
ルータは各ポート間のルーティングを行うため、機器あたりのポート数が増えると、それだけ動作が複雑になる。またルーティングテーブルの項でも説明したように、ポート(セグメント)数が増えるということはルーティングテーブルのエントリーが増えることであり、IPアドレスの設定面でも考慮しなくてはならないことを示す。
ハブであれば、そうした作業をすべて省くことが可能なため、簡易にノードを増設するには非常に便利だ。ブロードバンドルータが使用されるような小規模ネットワークでは、「LAN側のノードを接続するためのハブ」+「ネットワークの境界となるルータ」の構成がふさわしいわけである。
ブロードバンドルータによっては、LAN側の複数ポートが「スイッチング・ハブ」として用意されている場合もある。スイッチ(スイッチング)とは、ハブのように受け取ったフレームを単純にすべてのポートに流すのではなく、必要なポートにのみ送出する技術の呼び方である(フレームによっては、全体に送出されるものもある)。
ルータはIPアドレス(サブネット番号)を見分けることでIPパケットを書くポートへと振り分けるが、スイッチング・ハブではMACアドレスを見分けることで、該当するMACアドレスをもつノードの接続されているポートにのみフレームを流す。これにより、むだな通信データを各ポートで共有する必要がなくなり、全体として通信速度が向上する。「ブリッジ」と呼ばれるネットワーク機器と同様の動作原理である。
外見からは見分けがつなかいが、ネットワーク構成上はまったく別物であることをしっかり理解しておこう。
一方で、外部から内部へとまったくアクセスできないのでは困る、というケースもありえる。オンラインゲームやインスタント・メッセンジャーなどでは、外部から内部のノードへとセッションが張られ、実行されることも多いからだ。
IPマスカレードによって確保されるセキュリティには、明らかに反するニーズではあるのだが、実現方法は単純だ。IPマスカレードと逆のことを行えばよい。外部からルータの外部ポートへのアクセスが発生した際には、IPパケットの送信先としてルータのWAN側IPアドレスが指定されているので、これを中継するルータが内部ノードのIPアドレス(プライベートアドレス)に差し替えるのだ。もっとも、複数ある内部ノードのどれに対してパケットを送ればよいのかルータは分からないので、あらかじめ定義しておく必要がある。
ある特定のTCP/UDPポートへのアクセスがあった場合、あらかじめ指定したノード(のIPアドレス)へと転送する方法を「フォワーディング」「アドレス変換/置換」などと呼ぶ。あるいは、IPマスカレードに比べると静的にアドレスを設定するので、「静的IPマスカレード」と呼んでいるルータもある。
これとは別に、TCP/UDPポートを特定せず、すべてのアクセスを指定したノードへと転送する方法を「DMZ(DeMilitarized Zone:非武装地帯)*1」などと呼ぶ。いうなれば「無条件フォワーディング」である。
DMZ機能を使えば、IPマスカレードの動作とは関係なしに、内部ノードがインターネットに直接接続されたのとほぼ同様の利用が可能になる。ただし、当然これではセキュリティ面の恩恵は受けられない。セキュリティ面のリスクを覚悟して使用すべきだ。
*1「DMZ」という言葉は、商用のファイアウォール製品などで使用されているDMZ機能から名づけられたものと考えられる。ファイアウォール製品のDMZとは、別にDMZ用セグメント用のポートを用意し、そこに対して外部からのアクセスを許可する方法をとっている。つまり少なくとも、内部ネットワークのセグメントとは物理的に切り離されている(だからこそ、DMZと呼ばれるのだが)。ところが、ブロードバンドルータに搭載されているDMZでは多くの場合、内部セグメント上の特定ノードへと転送する仕組みとなっているため、内部セグメントに外部からのIPパケットが到達することになる。利用者からすれば誤解を招く機能の名づけ方だと筆者は思うのだが、読者の皆さまはどう感じられるだろうか。少なくとも、こうした動作面での違いはしっかり理解しておくにこしたことはない
簡易ファイアウォール機能を実現するもう1つの要素が、「パケットフィルタリング」機能の搭載である。パケットフィルタリングはその名前の通り、ある一定のルールに基づいて特定のパケットだけをフィルタリングする、つまりふるい落とす機能だ。ルータならではともいえる非常に基本的な機能で、特定のIPアドレスやポートなどの条件に該当するパケットのルーティングを禁止/許可する。それらのアドレスやポートの条件を「ルールセット」と呼ぶ。
通常のルータでは、先のIPマスカレード機能を使わなくともほぼ同様の効果を得られるわけだが、ブロードバンドルータでは、IPマスカレードによってWAN側→LAN側のルーティングが規制される前提があるので、逆にLAN側→WAN側だけのパケットフィルタリングのみに対応している場合が多いようだ。設定できるルールセットに制限がある場合も多いが、IPアドレスやポートをいちいち設定する方法のほかに、例えば「NBT(NetBIOS over TCP/IP:Windowsネットワークのプロトコル)パケットをフィルタリングするなど、あらかじめ用意されたルールセットで設定できる場合もある。
(1) IPマスカレードは、LAN側ノードのIPアドレスとポート番号を、ルータのWAN側のIPアドレスと任意のポート番号に変換して、LAN側ノードにインターネットへのアクセス手段を提供する。また結果的に、WAN側からのLAN側への侵入を阻止する
(2) フォワーディングやDMZは、LAN側の任意のIPアドレスへと変換することによって、逆にLAN側へのアクセス手段を提供する
(3) パケットフィルタリングは、ある一定のルールによりパケットのルーティングの許可/禁止を行う。ブロードバンドルータでは、LAN→WAN方向のみに適用される
ブロードバンドルータは、今後もっとも普及するネットワーク機器となる可能性が高い。しかしまだ歴史も浅く、ISDNルータなどに比べるとこなれていない点も多く、これからもさらなる機能追加が行われていくだろう。
場合によっては、利用上の不満や不備も感じられるかもしれない。しかし一方で、これだけ手軽に使える高機能なネットワーク機器もまた珍しい。便利さに隠された機能や特徴の本質をしっかり理解して使いこなせる、賢いユーザーを目指そう。
Copyright © ITmedia, Inc. All Rights Reserved.