連載ネットワーク・デバイス教科書〜運用編〜第11回 IT管理者のためのTCP/IP運用の基礎知識(2)渡邉利和 |
IPアドレスの基本の基本
このように小規模なネットワーク環境の管理作業では、その多くは「IPアドレスの管理」が重要なポイントとなることが分かる。慣れてしまえば機械的な作業だが、最初のうちはどうしても暗号のように感じられてしまうかもしれない。さらに、初心者向けの入門書でネットワーク設定の説明をする場合に、IPアドレス、サブネットマスク、デフォルト・ゲートウェイ・アドレスの3種の値に対して具体例を示し、「おまじないだと思ってこのとおりに設定しろ」などと書いてあることもあるので余計に難しいものに感じられてしまうかもしれない。コンピュータは魔法で動作しているわけではないので、「おまじない」の出る幕はないし、これらネットワークの基本的な設定に出てくるIPアドレスの体系は厳密な規則にのっとって決定されるものであり、規則が分かってしまえば別段理解が困難なものでもない。分かり切った話かもしれないが、ここであらためて小規模LANを構成するために知っておきたいIPアドレスの規則について紹介しておこう。
IPアドレスは、TCP/IPネットワークで通信の主体となる機器を見分けるためのよりどころとなるID番号である。機器を見分けるためには、通常IPアドレス以外の情報は利用しないと考えてよい。従って、IPアドレスが適切に設定されていなくては通信ができないし、同じアドレスを持つ機器が複数存在したら、それを見分ける手段がなくなってしまうのでこれも許されない。ネットワークに接続されている機器には、それぞれ重複のないIPアドレスを設定しなくてはならないのである。世界最大のTCP/IPネットワークであるインターネットも事情は同様で、インターネットに接続された機器はそれぞれ重複しないIPアドレスを持っている。しかし、世界中に散らばる膨大な数の機器に対してほかと重複しないIPアドレスを割り当てるためには、統一されたルールと管理体制がなくては到底不可能である。それぞれの機器の管理者が適当にIPアドレスを付けるのではうまくいかないので、実際にはIPアドレスは割り当て制になっており、しかるべき管理機構から利用してよいIPアドレスを割り当ててもらう、というのが基本である。こうして割り当てられた、全世界レベルで重複がないことが保証されたIPアドレスのことを「グローバル・アドレス」と呼んでいる。
現実には、筆者のような個人が自宅内のLANで利用する機器に設定するIPアドレスをいちいち管理機構が割り当てるのでは事務処理の手間がばかにならないし、そもそも無駄でもある。そこで、閉じたネットワーク内で利用し、ほかのネットワークとは直接通信を行わない場合に利用できる特別なIPアドレスが定義されている。こちらを「プライベート・アドレス」と呼ぶ。プライベート・アドレスを設定した機器は、閉じたネットワーク内で利用することが前提のため、小規模なLANなどではプライベート・アドレスを利用することが一般的になっている。こうした機器がインターネットと通信を行う場合には、NAT(Network Address Translation)などの処理を介し、適切なグローバル・アドレスに変換してから通信を行わなくてはならず、プライベート・アドレスのままインターネットと通信することはできない。
プライベート・アドレスは閉じたネットワークで利用されるため、適当にIPアドレスを割り当てても構わないのだが、ネットワークの規模によって以下の範囲を利用することが推奨されている。
ネットワークの大きさ | 推奨されるプライベート・アドレス |
クラスA | 10.0.0.0〜10.255.255.255 |
クラスB | 172.16.0.0〜172.31.255.255 |
クラスC | 192.168.0.0〜192.168.255.255 |
推奨されるプライベート・アドレス |
このようにプライベート・アドレスにもいくつか種類があるが、一般的に利用されているのはクラスCの「192.168.x.x」というアドレスである。小規模なLANではこのアドレスで用が足りるはずなので、以後このアドレスを対象に説明していく。
ネットワーク・アドレスの基礎
IPアドレスは、意味的に「ネットワーク・アドレス部」と「ホスト・アドレス部」に分かれている。TCP/IPネットワークでは、複数のネットワークが相互接続されている状態を前提としている。そして、ネットワーク間で情報をやりとりするための仕掛けを組み込んでいるのである。「ルーティング(Routing:経路制御)」と呼ばれる動作が、このネットワーク間で情報をやりとりするための仕掛けだと考えてよい。ルーティングとは、基本的には「目的の通信相手と通信するための通過経路を見つけ出す」処理である。この処理はネットワーク単位で行われるのが基本である。1つのネットワーク内ではルーティングの処理は行われず、「何も制御しなくても目的のホストにデータが届くはず」という前提がある。つまり、通常のLANの内部では、何も行わなくても機器間での通信は成立するものと考えられているわけだ。これは、TCP/IPレベルではLAN内の通信に関与せず、LAN内部で使われているネットワーク・システムに任せるという前提なのだが、イーサネットの場合、LAN内部では単純に「一斉同報通信」によって実現されている。例えるならば、内線電話の代わりに館内スピーカが使われている、というイメージだろうか。あて先がどの機器かにかかわらず、すべての通信をすべての機器あてに送り付けるのである。
この場合、問題が1つある。それは、LAN内部あての通信とLANの外部(ほかのネットワーク)あての通信とでは、データを送る際にルーティングのメカニズムを使うか使わないかという大きな違いが生じることである。これを正しく処理するためには、実は通信を開始する際に通信相手が自分と同じLANに所属している機器か、外部のネットワークに所属している機器かを確実に見分けられなくてはいけない。このために使われるのは、当然IPアドレスであり、特にそのネットワーク・アドレス部が問題になる。
ネットワーク・アドレス部はネットワークの識別番号であり、ネットワークごとに重複なく固有の数値が設定されている。そこで、通信相手のIPアドレスからネットワーク・アドレス部を調べ、それが自分の所属しているネットワークのアドレスと一致するかどうかを見れば、通信相手が自分と同じLANに所属しているのかどうかが判断できる。そこで、次の問題はIPアドレスのうち、どの部分がネットワーク・アドレス部なのか、ということだが、これは設定によって変更が可能な構造となっているため、少々複雑になる。
IPアドレスからネットワーク・アドレス部を見分けるためには、サブネットマスクを利用する。よく見掛けるサブネットマスクの値は、「255.255.255.0」というものだろう。この数値とIPアドレスからネットワーク・アドレスを導く仕掛けは、実はこれらの数値をもともとの表現形式である2進数に戻せば分かりやすい。
IPアドレスは、32ビットの数値である。ただし、これでは見た目に分かりにくいので、8ビットずつ4つに分割し、それぞれを10進表記に直して書くのが一般的である。ピリオドで区切って4組の数字が並んでいるように見えるが、これは1バイトの数値が4つ並んだものと見ることもできる。ただし、本質としては32ビットのひとつながりの数値である。
では、具体的に見ていこう。例として、ホストのIPアドレスとして「192.168.1.1」という値を、サブネットマスクとして「255.255.255.0」という値を取り上げよう。これを32ビットの2進数として表記すると、以下のようになる。
11000000
|
10101000
|
00000001
|
00000001
|
192
|
168
|
1
|
1
|
|
|||
11111111
|
11111111
|
11111111
|
00000000
|
255
|
255
|
255
|
0
|
. こう見れば簡単に見当がつくと思うが、サブネットマスクは32ビットのIPアドレスのうち、どのビットまでがネットワーク・アドレス部であるかを示している。2進表記した場合に「1」となっている部分がネットワーク・アドレス部である。この場合は単純に、ネットワーク・アドレス部が3バイト、ホスト・アドレスが1バイトと考えることができる。
なお、ホスト・アドレス部の全ビットが「0」となる値はネットワーク・アドレスそのものと見なされるため、これはホストに割り当てることはできない。上記の例では、「192.168.1.0」というIPアドレスはホストのIPアドレスとして使ってはいけないわけだ。また、ホスト・アドレス部の全ビットが「1」となる値はブロードキャスト・アドレスであり、明示的にネットワーク内の全ホストに向けて通信を行う際に利用される特別なIPアドレスなので、これも使えない。上記の例では、「192.168.1.255」というIPアドレスがブロードキャスト・アドレスになる。
これだけなら話は簡単で、ホストに設定するIPアドレスは「192.168.1.1〜254」と機械的に暗記してしまえば話は済む。しかし、実際にはネットワーク・アドレス部を延長することで、ネットワークを細分化できるため、さすがにこれだけでは不十分だし、そもそも固定長なのであればサブネットマスクでネットワーク・アドレス部を示す必要すらないことになる。
サブネットマスクでネットワークを細分化する方法
サブネットマスクを変更することで「192.168.1.x」というネットワークを細分化する場合、当然ネットワーク・アドレス部が最後(右端)の8ビット部分の一部に食い込んでくる形になる。そこで、今度は最後の8ビット部分だけを取り出して、想定できるバリエーションを見てみると、以下のようになる。
2進数 | 10進数 |
10000000 | 128 |
11000000 | 192 |
11100000 | 224 |
11110000 | 240 |
11111000 | 248 |
11111100 | 252 |
サブネットマスクの想定できるバリエーション |
あり得るパターンは、上記の6通りだ。8ビットあるのだから8通りあるはずだ、と思うかもしれないが、そうはならない。まず、全ビットが「1」となる、「11111111(255)」というパターンは、サブネットマスクとしては「255.255.255.255」となり、つまりIPアドレスの全ビットがネットワーク・アドレス部であり、ホスト・アドレス部がない、という意味になってしまうので、これは無効である。同様に、最後の1ビットだけが「0」の「11111110(254)」というパターンは、ホスト・アドレス部にあり得るパターンが「0」と「1」の2通りしか残らない。これでは、ネットワーク・アドレスとブロードキャスト・アドレスで終わってしまい、ホストに割り当てるIPアドレスが残らないので使い道がない。というわけで、最低でもホスト・アドレス部には2ビットは割り当てないといけないわけだ。もっとも、これで確保できるIPアドレスは4種類で、ホストに設定可能なのはそのうちの2つだけなので、あまりに細分化しすぎて使いにくいことに変わりはない。ここまでやることは通常考えられず、実用上はネットマスクの値で「255.255.255.192」が限界だろうと思われる。
さて、上記の知識があれば、サブネットマスクを変更することで自由にネットワークを細分化し、かつIPアドレス関連の設定値を適切に導き出すことができるはずだ。ただ、毎回2進数に戻って考えるのも実用上は面倒な作業だろうから、以下に「設定値早見表」とでも言えるデータを紹介しておこう。あり得るパターンのすべてを網羅してはいないが、実際サブネットマスクに「255.255.255.252」といった値を設定するようだと、最大2台のホストが所属できるネットワークが64個もできてしまうわけで、管理の手間が増大するだけで何もメリットはないと思われるので、筆者が現実的だろうと考える、8分割までのパターンについて紹介しておく。
サブネットマスク | ネットワーク・アドレス | ブロードキャスト・アドレス | ホスト・アドレス |
255.255.255.0 | 192.168.x.0 | 192.168.x.255 | 192.168.x.1〜254 |
255.255.255.128 | 192.168.x.0 | 192.168.x.127 | 192.168.x.1〜126 |
192.168.x.128 | 192.168.x.255 | 192.168.x.129〜254 | |
255.255.255.192 | 192.168.x.0 | 192.168.x.63 | 192.168.x.1〜62 |
192.168.x.64 | 192.168.x.127 | 192.168.x.65〜126 | |
192.168.x.128 | 192.168.x.191 | 192.168.x.129〜190 | |
192.168.x.192 | 192.168.x.255 | 192.168.x.192〜254 | |
255.255.255.224 | 192.168.x.0 | 192.168.x.31 | 192.168.x.1〜30 |
192.168.x.32 | 192.168.x.63 | 192.168.x.33〜62 | |
192.168.x.64 | 192.168.x.95 | 192.168.x.65〜94 | |
192.168.x.96 | 192.168.x.127 | 192.168.x.97〜126 | |
192.168.x.128 | 192.168.x.159 | 192.168.x.129〜158 | |
192.168.x.160 | 192.168.x.191 | 192.168.x.161〜190 | |
192.168.x.192 | 192.168.x.223 | 192.168.x.193〜222 | |
192.168.x.224 | 192.168.x.255 | 192.168.x.225〜254 | |
サブネットマスクの設定値早見表 | |||
現実的なサブネットマスクの構成を紹介する。この表を見れば、どのようなサブネットマスクに設定すればよいか分かるだろう。 |
ネットワーク環境の具体例
ではここで、実際の設定の舞台となる筆者のネットワーク環境の概略を示しておこう。
筆者宅のネットワーク環境 |
なぜこのような複雑なネットワーク環境になったかについては、「連載:究極ホームネットワークへの道」をご参照いただきたい。 |
筆者は、プライベート・アドレスとして「192.168.0.0」を利用し、サブネットマスクを「255.255.255.192」とすることで4分割して使用している。ただし、4つのサブネットすべてを利用しているわけではなく、実際に使っているのは3つである。本来なら単一のネットワークでも問題ないのだが、あえて分割した理由は、単一のネットワークにまとめるために必要となる追加の機器を購入していないためである。最初に挙げた原則のうちの「手間を削減するために出費を惜しむな」というルールに自らが反している状態だが、このルール自体が筆者の反省から生まれたものということでご理解していただきたい。
関連記事(PC Insider内) | |
究極ホームネットワークへの道 |
INDEX | ||
ネットワーク・デバイス教科書〜運用編〜 | ||
第11回 IT管理者のためのTCP/IP運用の基礎知識(1) | ||
第11回 IT管理者のためのTCP/IP運用の基礎知識(2) | ||
「連載:ネットワーク・デバイス教科書」 |
- Intelと互換プロセッサとの戦いの歴史を振り返る (2017/6/28)
Intelのx86が誕生して約40年たつという。x86プロセッサは、互換プロセッサとの戦いでもあった。その歴史を簡単に振り返ってみよう - 第204回 人工知能がFPGAに恋する理由 (2017/5/25)
最近、人工知能(AI)のアクセラレータとしてFPGAを活用する動きがある。なぜCPUやGPUに加えて、FPGAが人工知能に活用されるのだろうか。その理由は? - IoT実用化への号砲は鳴った (2017/4/27)
スタートの号砲が鳴ったようだ。多くのベンダーからIoTを使った実証実験の発表が相次いでいる。あと半年もすれば、実用化へのゴールも見えてくるのだろうか? - スパコンの新しい潮流は人工知能にあり? (2017/3/29)
スパコン関連の発表が続いている。多くが「人工知能」をターゲットにしているようだ。人工知能向けのスパコンとはどのようなものなのか、最近の発表から見ていこう
|
|