ルーターとは
最近では、家庭内でインターネットに接続する際「ルーター(router)」という機器を設置することが増えてきました。
ルーターを設置する主な目的は、複数台のクライアントに接続するためです。無線LAN対応のルータを設置すればスマートフォンやノート・パソコン、タブレットなどを無線で接続できるようになります。
ルーターが内蔵するNAT機能
ユーザはプロパイダに接続すると、接続先のプールから1つのIPアドレスを割り当てられます。プールやIPアドレスについては前の記事で記述しています⇨IPアドレスとは
ここで注目したいのは割り当てられているのは「ただ1つのIPアドレスだけ」という点です。
インターネットに接続するためには、それぞれのクライアントに対してIPアドレスが必要です。つまり2台をインターネットに接続したいならIPアドレスは2つ必要です。
プロパイダから1つのIPアドレスしか割り当てられないということは1台しか接続できないことを意味します。
クライアントに割り当てるプライベートIPアドレス
この問題を解決するのがルーターです。
ルータには「NAT(Network Adress Translation)」と呼ばれるIPアドレスの変換機能が内蔵しています。
MEMO
厳密には「NAT」はIPアドレスを「多対多」で変換する機能です。この記事で説明しているIPアドレスを「1対多」で変換する機能の名称は
「NAPT(Network Adress Port Translation)」もしくは「IPマスカレード(IP Masquarade)」です。
しかし多くのルーター製品は「NAT」と呼ばれているのでこの記事でもそれに合わせて「NAT」と表現します。
ルーターを使ってインターネットに接続するときプロパイダから割り当てられたIPアドレスはルータ自身に設定されクライアントには割り当てられません。
クライアントには、ルーター自身に設定されているIPアドレスのプールから一つを割り当てます。
一般にルーターに設定されているIPアドレスのプールは「プライベートIPアドレス」と呼ばれる範囲のIPアドレスです。
この範囲のIPアドレスはインターネットでは決して使われる事がないのでIANAやJPNIC、プロパイダなどに許可を取る事なく誰でも自由に利用できます。
ルーターがプールするIPアドレスの範囲は、ルーターの設定画面で変更できます。
興味がある方は、ルーターの設定にPCとかからアクセスしてみてください。きっとよくわかりませんw
家庭向けのルーターの場合工場出荷時に「192.168.0.10~192.168.0.254」や「192.168.1.20〜192.168.1.254」など200個前後の範囲が設定されています。
ルーターに接続されているパソコンやスマートフォン、タブレットなどにはプロパイダのIPアドレスではなくこのルーターに設定されたプライベートIPアドレスが割り当てられます。
この割り当てには、「DHCP(Dynamic Host Configuration Protocol)」と呼ばれる方法が使われます。
NATがIPアドレスを変換する
クライアントがルーターを通じてインターネットと通信する時には、ルーターに内蔵されているNAT機能によってIPアドレスがプロパイダのものに書き換えられます。
ルータを通る時にルーターが「このIPアドレス使ってね〜」って渡されるわけです。
つまり家庭用ルーターを使って、インターネットに接続する場合には1つのIPアドレスを複数のクライアントで共有することになります。
NATを通った時にはIPアドレスが本来のインターネットのIPアドレスに書き換えられるため、インターネット側から見たらNATよりも先にどのような機器が接続されているかが見えません。
つまりNATにはプライバシーを守ったりセキュリティを高めたりする効果もあります。
同じIPアドレスでも違うクライアントの場合がある
Webプログラミングをする上で知っておいて欲しいのはIPアドレスは、ユーザーやクライアントを特定するとは限らないという点です。
サーバーの場合はいつも同じIPアドレスが使用されるので「IPアドレスがサーバーが一意に決まる」というのはある程度正しいと言えます。
しかしクライアントの場合はプールされたIPアドレスが割り当てられたりNATによって共有されたりすることがあるためIPアドレスはクライアントを一意に定めません。
例えばWebプログラミングする際「二重ログインを禁止にしたい」と思った時「接続元のIPアドレスを判定してそのIPアドレスでログインしていたなら、ログインさせないようにする」という処理は正しくありません。
なぜならNAT機能によって、異なる端末でも同じIPアドレスのように見える事があるからです。そのように作ってしまうとそのクライアントからの接続を禁止するのではなくて、そのIPアドレスを共有している全クライアントからのログインを排除してしまいます。
IPアドレスは確かに相手を特定するもではありますがそれは「ある瞬間の通信」だけです。
IPアドレスは共有される可能性があるので、今のIPアドレス「10.20.30.40」のクライアントと少し後の通信のIPアドレス「10.20.30.40」とでは同じクライアントを指しているとは限らないのです。
まとめ
いかがだったでしょうか、今や一家に一台と言っても過言ではないくらい普及し当たり前にあるルーターですが実際のところインターネットが見られるようになるものと思っている人がほとんどではないでしょうか。
でも実際は説明したような働きをしNATという機能を使用しインターネットに接続しているという事です。
ネットワークエンジニアを目指している方には必須の知識かと思いますので、ルーターの機能と役割をしっかりと押さえておいてください。
ではでは