第18章 ネットワークの基礎

目次

18.1. IPアドレスとルーティング
18.2. IPv6—次世代のインターネット
18.3. 名前解決
18.4. YaSTによるネットワーク接続の設定
18.5. NetworkManagerを使用したネットワーク接続の管理
18.6. ネットワークの手動環境設定
18.7. ダイアルアップアシスタントとしてのsmpppd

概要

Linuxには、あらゆるタイプのネットワークストラクチャに統合するために必要なネットワークツールと機能が用意されています。ここでは、一般に使用されるLinuxプロトコルであるTCP/IPについて説明します。 このプロトコルが持つさまざまなサービスや特別な機能について述べます。ネットワークカード、モデム、その他のデバイスを使用したネットワークアクセスは、によって設定できます。手動による環境設定も可能です。この章では、基本的なメカニズムと関連のネットワークの環境設定ファイルのみを扱います。

Linuxおよび他のUnix系オペレーティングシステムは、TCP/IPプロトコルを使用します。これは1つのネットワークプロトコルではなく、さまざまなサービスを提供する複数のネットワークプロトコルのファミリです。TCP/IPを使用して2台のコンピュータ間でデータをやり取りするために、表 18.1. 「TCP/IPプロトコルファミリーを構成する主要なプロトコル」に示した各プロトコルが提供されています。TCP/IPによって結合された世界規模のネットワーク全体のことを「インターネット」と呼びます。

RFCは、Request for Commentsの略です。RFCは、さまざまなインターネットプロトコルとそれをオペレーティングシステムとそのアプリケーションに実装する手順を定めています。RFC文書ではインターネットプロトコルのセットアップについて説明しています。プロトコルについての知識を広めるには、その種類にかかわらず、適切なRFC文書を参照してください。RFC文書は、http://www.ietf.org/rfc.htmlで参照してください。

表 18.1 TCP/IPプロトコルファミリーを構成する主要なプロトコル

プロトコル

説明

TCP

転送制御プロトコル。接続指向の安全なプロトコルです。転送されるデータはまずアプリケーションによってデータのストリームとして送信され、次にオペレーティングシステムによって適切な形式に変換されます。データは、それが送信されたときの元のデータ形式で、宛先ホストのそれぞれのアプリケーションに到着します。TCPは、伝送中にデータに損失がなかったか、データの混同がないかどうかを確認します。データの順序が意味を持つ場合は常にTCP/IPが実装されます。

UDP

ユーザデータグラムプロトコル。コネクションレスの安全でないプロトコルです。転送されるデータは、アプリケーションで生成されたパケットの形で送信されます。データが受信側に到着する順序は保証されず、データの損失の可能性もあります。UDPはレコード指向のアプリケーションに適しています。TCPよりも遅延時間が小さいことが特徴です。

ICMP

インターネット制御メッセージプロトコル。基本的にはエンドユーザ向けのプロトコルではありませんが、エラーレポートを発行し、TCP/IPデータ転送にかかわるマシンの動作を制御できる特別な制御プロトコルです。またICMPには特別なエコーモードがあります。エコーモードは、pingで使用されています。

IGMP

インターネットグループ管理プロトコル。このプロトコルは、IPマルチキャストを実装している場合に、マシンの動作を制御します。

図 18.1. 「TCP/IPの簡易レイヤモデル」に示したように、データのやり取りはさまざまなレイヤで実行されます。実際のネットワークレイヤは、IP (インターネットプロトコル)によって実現される確実性のないデータ転送です。IPの上で動作するTCP (転送制御プロトコル)によって、ある程度の確実性のあるデータ転送が保証されます。IPレイヤの下層には、イーサネットなどのハードウェア依存プロトコルがあります。

図 18.1 TCP/IPの簡易レイヤモデル

TCP/IPの簡易レイヤモデル

図では、各レイヤに対応する例を1つまたは2つ示しています。レイヤは抽象化レベルに従って並べられています。最下位レイヤは最もハードウェアに近い部分です。一方、最上位レイヤは、ハードウェアがまったく見えないほぼ完全な抽象化になります。各レイヤにはそれぞれの固有の機能があります。各レイヤ固有の機能は、上記の主要プロトコルの説明を読めば大体わかります。データリンクレイヤと物理レイヤは、使用される物理ネットワーク (たとえばイーサネット) を表します。

ほとんどすべてのハードウェアプロトコルは、パケット単位で動作します。転送されるデータは、一度にすべて送信できないので、パケットに分割されます。TCP/IPパケットの最大サイズは約64KBです。しかし、パケットサイズは通常、64KBよりもかなり小さな値になります。これは、ネットワークハードウェアでサポートされているパケットサイズに制限があるからです。イーサネットの最大パケットサイズは、約1500バイトです。イーサネット上に送出されるTCP/IPパケットは、このサイズに制限されます。転送するデータ量が大きくなると、それだけ多くのパケットがオペレーティングシステムによって送信されます。

すべてのレイヤがそれぞれの機能を果たすためには、各レイヤに対応する情報を各データパケットに追加する必要があります。この情報はパケットのヘッダとして追加されます。各レイヤでは、プロトコルヘッダと呼ばれる小さなデータブロックが、作成されたパケットに付加されます。図 18.2. 「TCP/IPイーサネットパケット」に、イーサネットケーブル上に送出されるTCP/IPデータパケットの例を示します。誤り検出のためのチェックサムは、パケットの先頭ではなく最後に付加されます。これによりネットワークハードウェアの処理が簡素化されます。

図 18.2 TCP/IPイーサネットパケット

TCP/IPイーサネットパケット

アプリケーションがデータをネットワーク経由で送信すると、データは各レイヤを通過します。 これらのレイヤは、物理レイヤを除き、すべてLinuxカーネルに実装されています。各レイヤは、隣接する下位レイヤに渡せるようにデータを処理します。最下位レイヤは、最終的にデータを送信する責任を負います。データを受信したときには、この手順全体が逆の順序で実行されます。重なり合ったたまねぎの皮のように、各レイヤで伝送データからプロトコルヘッダが除去されていきます。最後に、トランスポートレイヤが、着信側のアプリケーションがデータを利用できるように処理します。この方法では、1つのレイヤが直接やり取りを行うのは隣接する上下のレイヤのみです。データが伝送される物理的なネットワークは、100MBit/sのFDDIかもしれませんし、56-kbit/sのモデム回線かもしれませんが、アプリケーションがその違いを意識することはありません。同様に、物理ネットワークは、パケットの形式さえ正しければよく、伝送されるデータの種類を意識することはありません。


18.1 IPアドレスとルーティング

ここでは、IPv4ネットワークについてのみ説明しています。IPv4の後継バージョンであるIPv6については、18.2項 「IPv6—次世代のインターネット」を参照してください。

18.1.1 IPアドレス

インターネット上のすべてのコンピュータは、一意の32ビットアドレスを持っています。この32ビット(4バイト)は、通常、例 18.1. 「IPアドレスの表記」の2行目に示すような形式で表記されます。

例 18.1 IPアドレスの表記

IPアドレス(2進表記):11000000 10101000 00000000 00010100 
IPアドレス(10進表記):    192.     168.       0.      20

10進表記では、4つの各バイトが10進数で表記され、ピリオドで区切られます。IPアドレスは、ホストまたはネットワークインタフェースに割り当てられます。各アドレスは世界で唯一のアドレスであり、重複して使用されることはありません。このルールには例外もありますが、以下の説明には直接関係していません。

IPアドレスにあるピリオドは、階層構造を表しています。1990年代まで、IPアドレスは、各クラスに固定的に分類されていました。しかし、このシステムがあまりに柔軟性に乏しいことがわかったので、今日、そのような分類は行われていません。現在採用されているのは、クラスレスルーティング(CIDR: classless inter domain routing)です。

18.1.2 ネットマスクとルーティング

ネットマスクは、サブネットワークのアドレス範囲を定義するために用いられます。2台のホストが同一のサブネットワークに属している場合には、それらは相互に直接連絡できますが、そうでない場合には、サブネットワークとそれ以外の場所との間のトラフィックを処理するゲートウェイのアドレスを必要とします。2つのIPアドレスが同じサブネットワークに属しているかどうかをチェックするには、両方のアドレスとネットマスクの「AND」を求めます。結果が同一であれば、両方のIPアドレスは同じローカルネットワークに属しています。相違があれば、それらのIPアドレス、そしてそれらに対応するインタフェースが連絡するには、ゲートウェイを通過する必要があります。

ネットマスクの役割を理解するには、例 18.2. 「IPアドレスとネットマスクの論理積(AND)」を参照してください。ネットマスクは、そのネットワークにいくつのIPアドレスが属しているかを示す、32ビットの値から成っています。1になっているビットは、IPアドレスのうち、特定のネットワークに属することを示すビットに対応します。0になっているビットは、サブネットワーク内での識別に使われるビットに対応します。これは、1になっているビット数が多いほど、サブネットワークが小さいことを意味します。ネットマスクは常に連続する1のビットから構成されているので、その数だけでネットマスクを指定することができます。例 18.2. 「IPアドレスとネットマスクの論理積(AND)」の、24ビットからなる第1のネットワークは、192.168.0.0/24と書くこともできます。

例 18.2 IPアドレスとネットマスクの論理積(AND)

 
IP address (192.168.0.20):11000000 10101000 00000000 00010100 
Netmask   (255.255.255.0):11111111 11111111 11111111 00000000 --------------------------------------------------------------- 
ANDをとった結果:            11000000 10101000 00000000 00000000 
10進表記:                       192.     168.       0.       0

IPアドレス(213.95.15.200):	11010101 10111111 00001111 11001000
ネットマスク(255.255.255.0):11111111 11111111 11111111 00000000 --------------------------------------------------------------- 
ANDをとった結果:				        11010101 10111111 00000000 00000000
10進表記:           											 213.      95.      15.       0

別の例を挙げましょう。同じイーサネットケーブルに接続しているすべてのマシンは、普通、同じサブネットに属し、直接アクセスできます。サブネットがスイッチまたはブリッジで物理的に分割されていても、これらのホストは直接アクセス可能です。

ローカルサブネットの外部のIPアドレスには、ターゲットネットワーク用のゲートウェイが設定されている場合にのみ、連絡できます。最も一般的には、外部からのすべてのトラフィックを扱うゲートウェイを1台だけ設置します。ただし、異なるサブネット用に、複数のゲートウェイを設定することも可能です。

ゲートウェイを設定すると、外部からのすべてのIPパケットは適切なゲートウェイに送信されます。このゲートウェイは、パケットを複数のホストを経由して転送し、それは最終的に宛先ホストに到着します。ただし、途中でTTL (time to live)に達した場合は破棄されます。

表 18.2 特殊なアドレス

アドレスのタイプ

説明

基本ネットワークアドレス

ネットマスクとネットワーク内の任意のアドレスの論理積をとったもの。例 18.2. 「IPアドレスとネットマスクの論理積(AND)」ANDをとった結果を参照。このアドレスは、どのホストにも割り当てることができません。

ブロードキャストアドレス

ブロードキャストアドレスは、基本的には「サブネットワーク内のすべてのホストにアクセスする」ためのアドレスです。このアドレスを生成するには、2進数形式のネットマスクを反転させ、基本ネットワークアドレスと論理和をとります。上の例の場合、この結果は192.168.0.255になります。このアドレスは、どのホストにも割り当てることができません。

ローカルホスト

アドレス127.0.0.1は、各ホストの「ループバックデバイス」に割り当てられます。このアドレスを使用すると、自分のマシンに対して接続を確立できます。

IPアドレスは、世界中で一意でなければならないので、自分勝手にアドレスを選択して使うことはできません。IPベースのプライベートネットワークをセットアップする場合のために、3つのアドレスドメインが用意されています。これらは、外部のインターネットに直接接続することはできません。インターネット上で転送されることがないからです。このようなアドレスドメインは、RFC 1597で、表 18.3. 「プライベートIPアドレスドメイン」に示すとおりに定められています。

表 18.3 プライベートIPアドレスドメイン

ネットワーク/ネットマスク

ドメイン

10.0.0.0/255.0.0.0

10.x.x.x

172.16.0.0/255.240.0.0

172.16.x.x172.31.x.x

192.168.0.0/255.255.0.0

192.168.x.x