いわゆるブロードバンドルータによる NAT の利用

情報シナジーセンター 水木敬明

1 はじめに

 「ブロードバンドルータ[1]」や 「NAT(Network Address Translator; 【ナット】; ネットワークアドレス変換)」という言葉を耳にしたことはありませんか? 電器店のパソコン売り場に行けば,ブロードバンドルータが数万円, 安いものですと数千円で売っているのを見かけます。 ブロードバンドルータの一例を図1に示します。


図1 : NTT-ME 製: BA8000 Pro

 この写真ではわかりづらいかもしれませんが, ブロードバンドルータの大きさは, ふつうのスイッチングハブの大きさとそれほど変わらず, (物理的意味で)とても手軽に扱うことができます。 ちなみに,図1の製品の高さは約16cm です。 また,ブロードバンドルータは, しばしば「NAT 箱」や「NAT ボックス」と呼ばれたりします。 このことからもわかるように, 市販されているほとんどのブロードバンドルータには, NAT の機能が備わっています。 本稿では,この NAT についての説明に焦点を絞ります。
 NAT[2]をうまく活用すれば,利用形態にもよりますが, ある面において,セキュリティを向上させることができます。 本稿では, ブロードバンドルータによる NAT の利用について, 簡単に説明したいと思います。 ただし, ブロードバンドルータによる NAT の利用を 無条件におすすめするわけではありません。 あくまでも,選択肢のひとつとお考えいただけると幸いです。 なお,本稿は NAT についてあまりご存知ない方を対象としています。 そのため,それなりの知識をお持ちの方にとりましては, 退屈で意味のない内容になっていますので, あらかじめご了承下さい。
 それでは,NAT を用いるとどのようなことができるのかを見てみましょう。 図2をご覧下さい。 パーソナルコンピュータ(PC)とインターネット(Internet)との間に, NAT 箱(NAT box; 例えば,ブロードバンドルータ)が置かれています。 概念的・直感的に言いますと, PC からインターネット側を見ることはできますが, その逆の,インターネット側から PC を見ることはできないイメージです。


図2 : NAT による効果の概念図

 ちょうど,NAT 箱がマジックミラーになっているような感じですね。 PC からインターネットには自由にアクセスできるのに対し, インターネット側から,つまり,見知らぬ第三者から PC には アクセスできないことになります。 したがって,NAT 箱をうまく活用すると, 自分の PC が不正に利用される可能性が減るというわけです。
 NAT 自体は,このような目的のために存在しているわけではありませんが, 結果として上記のようなことが実現できます(詳しくは後述します)。 Windows をはじめとする各オペレーティングシステム(OS)には, 必ずと言って良いほどセキュリティホールが存在し, その脆弱部分を突いて感染するウィルスやワームが絶えません。 そのため, PC をインターネットから直接見えないようにすることは, 安全対策において非常に有効です。 確かに NAT はセキュリティ対策として存在しているものではありませんが, PC をインターネットから直接見えなくする手軽な手段として, NAT が有効であることは事実だと思います。
 以下本稿では,図2のようなことを実現する仕組について 簡単に述べていこうと思います。 そのためには, まずグローバルアドレスとプライベートアドレスについて 知る必要がありますので, それらについて2章で説明します。 次に,3章において, NAT (ネットワークアドレス変換)について説明します。 次に,4章において, ブロードバンドルータで NAT を設定する場合の具体的な例を 簡単に紹介します。 最後に 5章でまとめます。

2 グローバルアドレスとプライベートアドレス

 現在,インターネットで広く用いられているプロトコルは, IP Version 4 と呼ばれるものです。 そこでは,すべてのホスト(PC 等)は IP アドレスを持ちます。 IP アドレスは,インターネットにおいて, PC がどこにあるかを示す住所のようなものだと考えると良いでしょう。 IP アドレスは,130.34.246.94 のように, ピリオドで区切られた 4 つの数値で表されたりします。 4 つの数値それぞれは 8 ビットで, 合計 32 ビットです。 各々のホストがそれぞれ IP アドレスを持っており, そのアドレスを指定することにより 遠く離れたホスト同士で通信を行うことが可能となります。
 基本的に,ホストに割り当てられる IP アドレスは, 世界にひとつしかなく,一意なものです。 このようなひとつしかない一意な IP アドレスは, グローバルアドレスと呼ばれています。 その一意性により,インターネットで世界中と通信ができることになります。 (もし一意でなければ, 通信相手を特定することができないので, うまく通信できないことがすぐにわかりますね。) 例えば,東北大学のキャンパスネットワークである TAINS では, 主に 130.34.0.0 〜 130.34.255.255 のグローバルアドレスを使っています。
 一方,グローバルアドレスに対して, プライベートアドレスと呼ばれるものがあります。 これは組織内において自由に利用することができる IP アドレスで, 一意性は保証されません。 プライベートアドレスとしては,

10.0.0.0 〜 10.255.255.255
172.16.0.0 〜 172.31.255.255
192.168.0.0 〜 192.168.255.255

の範囲を利用できることが RFC1918[3] に規定されています。 基本的に,プライベートアドレスは, 組織内であれば, 自由に割り当てて使うことができます。
 具体的な例を挙げてみます。 130.34.246.94 という IP アドレスはグローバルアドレスです。 したがって,130.34.246.94 というアドレスの付いた PC は, インターネットにおいて世界にひとつしかなく, また世界中と通信を行うことができます。 一方, 172.16.0.11 という IP アドレスはプライベートアドレスです (上述したプライベートアドレスの範囲に入っていますね)。 このアドレスを持つ PC には, そのプライベートアドレスを利用している組織内 (プライベートネットワーク)からでしか到達できません。 組織外のネットワークから 172.16.0.11 の PC に到達することはできません。


図3 : プライベートアドレスを持つ PC

 前章において, 「PC からインターネット側を見ることはできるが, インターネット側から PC を見ることはできない」 ということを実現したいと述べました。 (図2を思い出して下さい。) このような``マジックミラー''を実現するために, プライベードアドレスを利用してみます。 PC にプライベートアドレスである 172.16.0.11 を付けましょう。 このとき, 図3に示すように, グローバル(インターネット)側から PC にアクセスすることはできません。 なぜなら,プライベートアドレスを持つマシンには, そのプライベートアドレスを利用している組織内からしか到達できないからです。 したがって,このとき, PC に不正にアクセスされることも無いことになります。 しかし,困ったことに, この状態では,PC からインターネット側にアクセスすることができません。 例えば,Web ブラウザで組織外の Web ページを見ることや, 遠く離れた組織外のマシンにログインしたりすることができません。
 このような,プライベートアドレスを持つ PC からグローバル側へ アクセスできないという問題を解決してくれるのが, 次章で説明する NAT です。

3 NAT

 本章では,いよいよ NAT について簡単に説明します。


図4 : プライベートアドレスを持つ PC (A) とグローバルアドレスを持つ PC (B)

 前章において, プライベートアドレスを持つ PC からグローバル側へ アクセスできないという問題を説明しました。 このことについてもう少し詳しく見てみましょう。 図4のように, PC (A) の IP アドレスが 172.16.0.11 で, PC (B) の IP アドレスが 202.211.0.x であるとします。 前者はプライベートアドレスで,後者はグローバルアドレスですね。 いま,PC (A) から PC (B) に向けて, パケット(IP データグラム)を送ったとしましょう。 このとき, 送られるパケットは図5のようになります。


図5 : IP データグラム

 図5を見ると, 宛先(destination)が 202.211.0.x で, 送信元(source)が 172.16.0.11 で, その後にデータ(ペイロード; payload)が 続いていることがわかります。 このパケットが PC (B) に送られます。 そのパケットを受け取った PC (B) は[4], 172.16.0.11 が送信元であることを知りますが, このアドレスに向けて返事のパケットを返そうとしても, 172.16.0.11 がプライベートアドレスであるため, うまく届かないことなります。 プライベートアドレスは一意性を持たず, また組織内のプライベートネットワークでしか使えないのでしたね。 問題は送信元アドレス 172.16.0.11 がプライベートアドレスである ことに起因しています。 そこで,送信元アドレスをグローバルアドレスに``変換''すれば, 問題が解決することが容易に予想されるでしょう。 そのような``変換''を行ってくれるのが NAT です。 図4のネットワーク構成に追加して, 図6のように NAT 箱をはさんでみましょう。


図6 : NAT 箱の設置

 このような状態で, PC (A) から先程と同じ図5のパケットを送ったとしましょう。 このとき, 図6の NAT 箱により, PC (A) から送られたパケットは, その送信元アドレスが 172.16.0.11 から 130.34.246.94 に変換されます。 130.34.246.94 は NAT 箱の外側(右側)に付いている グローバルアドレスです。 変換により得られたパケットを図7に示します。 このパケットが NAT 箱から 202.211.0.x の PC (B) に送られます。


図7 : ネットワークアドレス変換された IP データグラム

 図7のパケットを受け取った PC (B) は, そのパケットに書いてある送信元アドレス 130.34.246.94 に対して 返事のパケットを返します。 その返事のパケットを受け取った NAT 箱は, 今度は宛先アドレスを 172.16.0.11 に変換して, PC (A) にその変換したパケットを送ります。 このようにして, めでたく PC (A) に PC (B) からのパケットを届けることができます。
 NAT 箱は,アドレス変換に関するテーブルを保持していて, どのアドレスをどのように変換したのかを一時的に覚えています。 それにより,パケットを正確に元の PC に届けることができます。 図6 では, NAT 箱の内側(左側)に 1 台の PC しかありませんが, 複数台のホストを置くことが可能です。 より詳細には,NAPT という技術により, TCP/UDP のポート番号を動的に変換させ, 複数台のホストの情報を識別することが可能となります。 したがって,1 つのグローバルアドレス 130.34.246.94 で, 複数台のホストを扱うことができます。 また, ICMP の場合にはポート番号が無いのですが, ping コマンドのようなエコー要求パケット(ICMP Echo Request)や, その返答であるエコー応答パケット(ICMP Echo Reply)の場合には, 識別子(Identifier)フィールドをポート番号と同じように扱うことで, NAPT と同様なことが可能となります。
 以上が NAT の簡単な説明です。 要するに, NAT はプライベートアドレスとグローバルアドレスを うまく変換してくれるということです[5]

4 ブロードバンドルータの設定例

 本章では,ブロードバンドルータで NAT を活用し, プライベートネットワークを構築する場合の具体的な例を 簡単に紹介したいと思います。
 前章で述べたように, PC のようなホスト複数台を NAT 箱の内側に置いて, ネットワークを構成することができます。 ここでは,図8のような構成を考えましょう。


図8 : ブロードバンドルータを用いたプライベートネットワーク構成例

 図8では, ワークステーション(Workstation), PC およびネットワークプリンター(Printer)を, NAT 箱,すなわちブロードバンドルータの内側に置いてます。 ワークステーションには 172.16.0.10, PC の 1 台には 172.16.0.11, プリンターには 172.16.0.20 のプライベートアドレスを, それぞれ付けています。 ブロードバンドルータの内側(LAN 側)のインターフェースには, 172.16.0.1 のアドレスを付けています。 このプライベートネットワークのサブネットマスクを 255.255.255.192 としましょう。 この意味は,直感的には「172.16.0.0 〜 172.16.0.63 の 範囲のネットワークを構築したい」と考えると良いでしょう。


図9 : ブロードバンドルータの LAN 側の設定例

 一方,グローバル側に目を向けてみます。 ブロードバンドルータの外側(WAN 側)のインターフェースには, 130.34.246.94 のアドレスを付けています。 そして,このグローバルアドレスのネットワークにおいて, デフォルトゲートウェイ(Gateway)は 130.34.246.68 で, サブネットマスクは 255.255.255.192 であるとします。
 では, このようなネットワーク構成(図8)を実現するための, ブロードバンドルータの設定例を簡単に見てみましょう。 使用したブロードバンドルータは, 1章の図1において写真を 示した NTT-ME 製 の BA8000 Pro です。 市販されている多くのブロードバンドルータは, Web ブラウザでわりと簡単に設定を行うことができます。 この BA8000 Pro も Web ブラウザで設定を行います。
 図9 は, NAT の内側,すなわち LAN 側の設定を行う画面をキャプチャーしたものです。 ブロードバンドルータの LAN 側のインターフェースに 172.16.0.1 の プライベートアドレスを付け, サブネットマスクを 255.255.255.192 としている様子がわかります。


図10 : ブロードバンドルータの WAN 側の設定例

 また, 図10は, NAT の外側,すなわち WAN 側の設定を行う画面をキャプチャーしたものです。 ブロードバンドルータの外側のインターフェースに 130.34.246.94 の グローバルアドレスを付け, サブネットマスクを 255.255.255.192 とし, デフォルトゲートウェイを 130.34.246.68 としている様子がわかります。
 ブロードバントルータの詳細な設定方法につきましては, お使いの機器のマニュアル等を参照して下さい。
 本章の最後に, 東北大学のネットワーク TAINS においてプライベートネットワークを 構築する際の注意点を述べます。 2章において, プライベートアドレスは組織内で自由に使えると書きましたが, TAINS においてプライベートアドレスを利用する場合には 多少注意が必要です。 東北大学情報シナジーセンターネットワークシステム学内共同利用委員会 が定める「TAINS 利用に関する技術的条件」の項番 II--1(5), (6)および(7)では,

(5) TAINS の外部と通信しないサブネットには原則として,TAINS の一部として, 192.168.1/24 から 192.168.254/24 までのプライベートアドレスを割り当 てる。この割り当ての申請は,通常のサブネットの接続と同様である。
(6) TAINS の幹線へ経路情報を流さないサブネットは原則として,172.16/16 か ら 172.31/16 までのプライベートアドレスを独自に使用するものとする。
(7) TAINS では 10/8 のプライベートアドレスは将来の整備のために留保し使用 しないものとする。

となっています。 したがって, 研究室等のネットワークでプライベートアドレスを利用する場合, その経路情報を TAINS に流す必要のない場合がほとんどですので, 172.16.0.0 〜 172.31.255.255 のアドレスをお使い下さい。 ちなみに, 情報シナジーセンターが TAINS 内において提供するサーバには, 192.168.1.0 〜 192.168.254.255 の範囲のアドレスを使っているものがあります。 したがって,研究室等のプライベートネットワークにおいて, 192.168.1.0 〜 192.168.254.255 のアドレスを使ってしまうと, これらのサーバにアクセスできなくなる可能性がありますので, その意味からも 172.16.0.0 〜 172.31.255.255 のアドレスをお使い下さる ようお願いいたします。

5 むすび

 本稿では, ブロードバントルータを使って, NAT を活用することについて, ごく簡単に説明しました。
 先にも書きましたが, 本稿はブロードバンドルータの利用を無条件におすすめするものではありません。 しかし, 個人での利用で, しかも Web 閲覧と電子メールぐらいしか使わないのであれば, ブロードバンドルータにより PC やプリンターを囲って, プライベートネットワークを構築することは, それなりに一定のメリットがあると思われます。
 また,限られた資源であるグローバルアドレスの利用を節約するために, 複数台の PC を NAT の内側に置いて運用することは, わりと一般的に行われていると思います。
 ただし,少なくない利用者(例えば,20人以上)がいる場合, NAT によってアドレス変換してしまうと, 何か問題があったときに追跡することが困難になってしまうことがあります。 そのため,そのような場合には, ログを取る等の対策が必要となるでしょう。 しかし,安価なブロードバンドルータでは, ログを取ることができなかったり, 取ることのできるログが限られていたりしますので, 多人数での利用には向いていないと思われます。
 筆者の所属する研究室では, ぷらっとホーム製 OpenBlockSS を NAT 箱として, Web 閲覧や電子メールを使うのに用いる PC 等を プライベートネットワーク内に置いています。 OpenBlockSS には Linux が載っているため, ログを柔軟に取ることが可能です。 並列して,別のゲートウェイとして, 図11 の NTT 東日本製の BR410VPN を活用したりしています。 ログは syslog 形式で別なマシンに飛ばしたりしています。


図11 : NTT 東日本製: BR410VPN

 ブロードバントルータで NAT によりプラベートネットワークを 構築した場合の注意点です。

ブロードバンドルータを設置したことで, 安全に関してすっかり安心してしまわないで, PC 等の個別のセキュリティ対策を引き続き取られますようお願いいたします。

確かに,プライベートアドレスを付けると, 例えば昨夏に流行った Welchi ワームのような直接ネットワーク越しに広まる ウィルスに感染する可能性は減りますが, 電子メールで広まる Netsky 等のウィルスに対しては特に効果はありません。 また,お使いのブロードバンドルータに脆弱性が無いかを確認し, 最新のファームウェアを常に適用する等の対策を怠らないようお願いいたします。
 本稿では, NAT の活用に限定して述べましたが, 市販されているブロードバンドルータには, NAT の他にも様々な機能が備わっているものが多いです。 例を挙げますと, ファイヤーウォール,DHCP サーバ,RIP2 等によるルーティング, UPnP,VPN,などなどです。 いろいろと活用されると面白いかと思います。 また, 多くのプロトコルは NAT を通過することができますが, ブロードバンドルータの機種により, NAT を越えられないプロトコルも存在するようです。 例えば GRE を使う PPTP や グローバルアドレスを持つ ホスト同士での通信を前提とした NetMeeting 等の アプリケーション利用において, NAT を通過できないことがあります。 購入される際には,あらかじめ仕様を確認すると良いでしょう。 さらに, ブロードバンドルータの転送速度にも注目し, できるだけ高速なものを選ぶと良いでしょう。

謝辞

 本稿の執筆にあたっては, 東北大学情報シナジーセンターネットワークシステム 学内共同利用委員会技術専門委員会での議論がきっかけとなっています。 種々のご意見・ご検討いただいた委員の皆様に心より感謝申し上げます。 特に, 貴重なご助言をいただいた後藤英昭氏, 松川卓二氏および佐藤大氏に深く感謝いたします。 また,有益な情報をいただいた大学院情報科学研究科応用情報科学専攻/ 工学部情報工学科の曽根研究室の皆様に感謝いたします。


(*1) 本稿では,いわゆるブロードバンドルータをブロードバンドルータと呼ぶことにします。
(*2) 本稿で想定しているのは, 正確には NAPT(Network Address Port Translation) と呼ばれるものです。 なお,NAPT の実装のひとつに IP マスカレードがありますが, NAPT と同じ意味で用いられることも多いようです。
(*3) RFC は Request for Comments の略称で,インターネットの標準規約が記述されます。
(*4) もちろん,途中のルータでそのパケットが破棄等されなかったと仮定しています。
(*5) もちろん,NAT はそのような変換だけに用いられるとは限りませんが…。