Linuxには、あらゆるタイプのネットワークストラクチャに統合するために必要なネットワークツールと機能が用意されています。ネットワークカードを使用したネットワークアクセスは、YaSTによって設定できます。手動による環境設定も可能です。この章では、基本的メカニズムと関連のネットワーク設定ファイルのみを解説します。
Linuxおよび他のUnix系オペレーティングシステムは、TCP/IPプロトコルを使用します。これは1つのネットワークプロトコルではなく、さまざまなサービスを提供する複数のネットワークプロトコルのファミリです。TCP/IPを使用して2台のコンピュータ間でデータをやり取りするために、TCP/IPプロトコルファミリを構成する主要なプロトコルに示した各プロトコルが提供されています。TCP/IPによって結合された世界規模のネットワークを「インターネット」と呼びます。
RFCは、Request for Commentsの略です。RFCは、さまざまなインターネットプロトコルとそれをオペレーティングシステムとそのアプリケーションに実装する手順を定めています。RFC文書ではインターネットプロトコルのセットアップについて説明しています。RFCの詳細については、http://www.ietf.org/rfc.htmlを参照してください。
TCP(Transmission Control Protocol): 接続指向型の安全なプロトコルです。転送データは、まず、アプリケーションによってデータストリームとして送信され、オペレーティングシステム.によって適切なフォーマットに変換されます。データは、送信当初のデータストリーム形式で、宛先ホストのアプリケーションに着信します。TCPは転送中に損失したデータや順序が正しくないデータがないか、判定します。データの順序が意味を持つ場合は常にTCP/IPが実装されます。
UDP(User Datagram Protocol): コネクションレスで安全でないプロトコルです。転送されるデータは、アプリケーションで生成されたパケットの形で送信されます。データが受信側に到着する順序は保証されず、データの損失の可能性があります。UDPはレコード指向のアプリケーションに適しています。TCPよりも遅延時間が小さいことが特徴です。
ICMP (Internet Control Message Protocol):基本的にはエンドユーザ向けのプロトコルではありませんが、エラーレポートを発行し、TCP/IPデータ転送にかかわるマシンの動作を制御できる特別な制御プロトコルです。またICMPには特別なエコーモードがあります。エコーモードは、pingで使用されています。
IGMP (Internet Group Management Protocol): このプロトコルは、IPマルチキャストを実装した場合のマシンの動作を制御します。
に示したように、データのやり取りはさまざまなレイヤで実行されます。図20.1「TCP/IPの簡易階層モデル」実際のネットワークレイヤは、IP (インターネットプロトコル)によって実現される確実性のないデータ転送です。IPの上で動作するTCP (転送制御プロトコル)によって、ある程度の確実性のあるデータ転送が保証されます。IP層の下層には、Ethernetなどのハードウェア依存プロトコルがあります。
図では、各レイヤに対応する例を1つまたは2つ示しています。レイヤは抽象化レベルに従って並べられています。最下位レイヤは最もハードウェアに近い部分です。一方、最上位レイヤは、ハードウェアがまったく見えないほぼ完全な抽象化になります。各レイヤにはそれぞれの固有の機能があります。各レイヤ固有の機能は、上記の主要プロトコルの説明を読めば大体わかります。データリンク層と物理層は、Ethernetなどの使用される物理ネットワークを表します。
ほとんどすべてのハードウェアプロトコルは、パケット単位で動作します。転送されるデータは、パケットにまとめられます(一度に全部を送信できません)。TCP/IPパケットの最大サイズは約64KBです。パケットサイズは通常、かなり小さな値になります。これは、ネットワークハードウェアでサポートされているパケットサイズに制限があるからです。Ethernetの最大パケットサイズは、約1500バイトです。Ethernet上に送出されるTCP/IPパケットは、このサイズに制限されます。転送するデータ量が大きくなると、それだけ多くのパケットがオペレーティングシステムによって送信されます。
すべてのレイヤがそれぞれの機能を果たすためには、各レイヤに対応する情報を各データパケットに追加する必要があります。この情報はパケットのヘッダとして追加されます。各レイヤでは、プロトコルヘッダと呼ばれる小さなデータブロックが、作成されたパケットに付加されます。図20.2「TCP/IPイーサネットパケット」に、Ethernetケーブル上に送出されるTCP/IPデータパケットの例を示します。誤り検出のためのチェックサムは、パケットの先頭ではなく最後に付加されます。これによりネットワークハードウェアの処理が簡素化されます。
アプリケーションがデータをネットワーク経由で送信すると、データは各層を通過します。これらの層は、物理層を除き、すべてLinuxカーネルに実装されています。各レイヤは、隣接する下位レイヤに渡せるようにデータを処理します。最下位レイヤは、最終的にデータを送信する責任を負います。データを受信したときには、この手順全体が逆の順序で実行されます。重なり合ったたまねぎの皮のように、各レイヤで伝送データからプロトコルヘッダが除去されていきます。最後に、トランスポートレイヤが、着信側のアプリケーションがデータを利用できるように処理します。この方法では、1つのレイヤが直接やり取りを行うのは隣接する上下のレイヤのみです。データが伝送される物理的なネットワークは、100MBit/sのFDDIかもしれませんし、56Kbit/sのモデム回線かもしれませんが、アプリケーションがその違いを意識することはありません。同様に、物理ネットワークは、パケットの形式さえ正しければよく、伝送されるデータの種類を意識することはありません。
ここでは、IPv4ネットワークについてのみ説明しています。IPv4の後継バージョンであるIPv6については、20.2項 「IPv6—次世代インターネット」を参照してください。
インターネット上のすべてのコンピュータは、固有の32ビットアドレスを持っています。この32ビット(4バイト)は、通常、例20.1「IPアドレスの表記」の2行目に示すような形式で表記されます。
IP Address (binary): 11000000 10101000 00000000 00010100 IP Address (decimal): 192. 168. 0. 20
10進表記では、4つの各バイトが10進数で表記され、ピリオドで区切られます。IPアドレスは、ホストまたはネットワークインタフェースに割り当てられます。使用できるのは1回のみです。このルールには例外もありますが、次の説明には直接関係していません。
IPアドレスにあるピリオドは、階層構造を表しています。1990年代まで、IPアドレスは、各クラスに固定的に分類されていました。しかし、このシステムがあまりに柔軟性に乏しいことがわかったので、今日、そのような分類は行われていません。現在採用されているのは、クラスレスルーティング(CIDR: classless inter domain routing)です。
ネットマスクは、サブネットのアドレス範囲を定義するために用いられます。2台のホストが同じサブネットに存在する場合、相互に直接アクセスできます。同じサブネットにない場合は、サブネットのすべてのトラフィックを処理するゲートウェイのアドレスが必要です。2つのIPアドレスが同じサブネットワークに属しているかどうかを確認するには、両方のアドレスとネットマスクの「AND」を求めます。結果が同一であれば、両方のIPアドレスは同じローカルネットワークに属しています。相違があれば、それらのIPアドレス、そしてそれらに対応するインタフェースが連絡するには、ゲートウェイを通過する必要があります。
ネットマスクの役割を理解するには、例20.2「IPアドレスとネットマスクの論理積(AND)」を参照してください。ネットマスクは、そのネットワークにいくつのIPアドレスが属しているかを示す、32ビットの値から成っています。1になっているビットは、IPアドレスのうち、特定のネットワークに属することを示すビットに対応します。0になっているビットは、サブネット内での識別に使われるビットに対応します。これは、1になっているビット数が多いほど、サブネットが小さいことを意味します。ネットマスクは常に連続する1のビットから構成されているので、その数だけでネットマスクを指定することができます。例20.2「IPアドレスとネットマスクの論理積(AND)」の、24ビットからなる第1のネットワークは、192.168.0.0/24と書くこともできます。
IP address (192.168.0.20): 11000000 10101000 00000000 00010100 Netmask (255.255.255.0): 11111111 11111111 11111111 00000000 --------------------------------------------------------------- Result of the link: 11000000 10101000 00000000 00000000 In the decimal system: 192. 168. 0. 0 IP address (213.95.15.200): 11010101 10111111 00001111 11001000 Netmask (255.255.255.0): 11111111 11111111 11111111 00000000 --------------------------------------------------------------- Result of the link: 11010101 10111111 00001111 00000000 In the decimal system: 213. 95. 15. 0
また、たとえば同じEthernetケーブルに接続しているすべてのマシンは、普通同じサブネットに属し、直接アクセスできます。サブネットがスイッチまたはブリッジで物理的に分割されていても、これらのホストは直接アクセス可能です。
ローカルサブネットの外部のIPアドレスには、ターゲットネットワーク用のゲートウェイが設定されている場合にのみ、連絡できます。最も一般的には、外部からのすべてのトラフィックを扱うゲートウェイを1台だけ設置します。ただし、異なるサブネット用に、複数のゲートウェイを設定することも可能です。
ゲートウェイを設定すると、外部からのすべてのIPパケットは適切なゲートウェイに送信されます。このゲートウェイは、パケットを複数のホストを経由して転送し、それは最終的に宛先ホストに到着します。ただし、途中でTTL (存続期間)に達した場合は破棄されます。
ネットマスクとネットワーク内の任意のアドレスの論理積をとったもの。例20.2「IPアドレスとネットマスクの論理積(AND)」のANDをとった結果を参照。このアドレスは、どのホストにも割り当てることができません。
これは、「このサブネット上のすべてのホストにアクセスする」と言い換えることができます。「」このアドレスを生成するには、2進数形式のネットマスクを反転させ、基本ネットワークアドレスと論理和をとります。そのため上記の例では、192.168.0.255になります。このアドレスをホストに割り当てることはできません。
アドレス127.0.0.1は、各ホストの「ループバックデバイス」に割り当てられます。「」このアドレスと、IPv4で定義された完全な127.0.0.0/8ループバックネットワークからのすべてのアドレスで、自分のマシンへの接続を設定できます。IPv6では、ループバックアドレスは1つだけです(::1)。
IPアドレスは、世界中で固有でなければならないので、自分勝手にアドレスを選択して使うことはできません。IPベースのプライベートネットワークをセットアップする場合のために、3つのアドレスドメインが用意されています。これらは、外部のインターネットに直接接続することはできません。インターネット上で転送されることがないからです。このようなアドレスドメインは、RFC 1597で、表20.1「プライベートIPアドレスドメイン」に示すとおりに定められています。
|
ネットワーク/ネットマスク |
ドメイン |
|---|---|
|
|
|
|
|
|
|
|
|
WWW (ワールドワイドウェブ)の出現により、ここ15年間でTCP/IP経由で通信を行うコンピュータの数が増大し、インターネットは爆発的に拡大しました。CERN (http://public.web.cern.ch)のTim Berners-Leeが1990年にWWWを発明して以来、インターネットホストは、数千から約1億まで増加しました。
前述のように、IPv4のアドレスはわずか32ビットで構成されています。しかも、多くのIPアドレスが失われています。というのは、ネットワークの編成方法のせいで、使われないIPアドレスが無駄に割り当てられてしまうからです。サブネットで利用できるアドレスの数は、(2のビット数乗 - 2)で与えられます。たとえば、1つのサブネットでは、2、6、または14個のアドレスが使用可能です。たとえば128台のホストをインターネットに接続するには、256個のIPアドレスを持つサブネットが必要ですが、そのうち2つのIPアドレスは、サブネット自体を構成するのに必要なブロードキャストアドレスと基本ネットワークアドレスになるので、実際に使用できるのは254個だけです。
現在のIPv4プロトコルでは、アドレスの不足を避けるために、DHCPとNAT (ネットワークアドレス変換)の2つのメカニズムが使用されています。これらの方法をパブリックアドレスとプライベートアドレスを分離するという慣習と組み合わせて使用することで、確かにアドレス不足の問題を緩和することができます。問題は、セットアップが面倒で保守しにくいその環境設定方法にあります。IPv4ネットワークでホストをセットアップするには、ホスト自体のIPアドレス、サブネットマスク、ゲートウェイアドレス、そして場合によってはネームサーバアドレスなど、相当数のアドレス項目が必要になります。管理者は、これらをすべて自分で設定しなければなりません。これらのアドレスをどこかから取得することはできません。
IPv6では、アドレス不足と複雑な環境設定方法はもはや過去のものです。ここでは、IPv6がもたらした進歩と恩恵について説明し、古いプロトコルから新しいプロトコルへの移行について述べます。
この新しいプロトコルがもたらした最大かつ最もわかりやすい進歩は、利用可能なアドレス空間の飛躍的な増加です。IPv6アドレスは、従来の32ビットではなく、128ビットで構成されています。これにより、2の128乗、つまり、約3.4×1038個のIPアドレスが得られます。
しかしながら、IPv6アドレスがその先行プロトコルと異なるのはアドレス長だけではありません。IPv6アドレスは内部構造も異なっており、それが属するシステムやネットワークに関してより具体的な情報を有しています。詳細については、20.2.2項 「アドレスのタイプと構造」を参照してください。
以下に、この新しいプロトコルの利点をいくつか紹介します。
IPv6を使用すると、ネットワークが「プラグアンドプレイ」対応になります。つまり、新しくシステムをセットアップすると、手動で環境設定しなくても、(ローカル)ネットワークに統合されます。新しいホストは自動環境設定メカニズムを使用して、ネイバーディスカバリ (ND)と呼ばれるプロトコルにより、近隣のルータから得られる情報を元に自身のアドレスを生成します。この方法は、管理者の介入が不要なだけでなく、アドレス割り当てを1台のサーバで一元的に管理する必要もありません。これもIPv4より優れている点の1つです。IPv4では、自動アドレス割り当てを行うために、DHCPサーバを実行する必要があります。
それでもルータがスイッチに接続されていれば、ルータは、ネットワークのホストに相互に通信する方法を通知するフラグ付きの通知を定期的に送信します。詳細については、RFC 2462、radvd.conf(5)のマニュアルページ、およびRFC 3315を参照してください。
IPv6を使用すると、複数のアドレスを1つのネットワークインタフェースに同時に割り当てることができます。これにより、ユーザは複数ネットワークに簡単にアクセスできます。このことは、携帯電話会社が提供する国際ローミングサービスにたとえられます。携帯電話を海外に持って行った場合、現地会社のサービス提供エリアに入ると自動的に携帯電話はそのサービスにログインし、同じ番号で普段と同じように電話をかけることができます。
IPv4では、ネットワークセキュリティは追加機能です。IPv6にはIPSecが中核的機能の1つとして含まれているので、システムが安全なトンネル経由で通信でき、インターネット上での部外者による通信傍受を防止します。
現実的に考えて、インターネット全体を一気にIPv4からIPv6に切り替えるのは不可能です。したがって、両方のプロトコルが、インターネット上だけでなく1つのシステム上でも共存できることが不可欠です。これは、一方ではアドレスの互換性によって(IPv4アドレスは容易にIPv6アドレスに変換できます)、他方ではトンネルの使用によって保証されています。参照先 20.2.3項 「IPv4とIPv6の共存」. また、システムはデュアルスタックIPテクニックによって、両方のプロトコルを同時にサポートできるので、2つのプロトコルバージョン間に相互干渉のない、完全に分離された2つのネットワークスタックが作成されます。
IPv4では、いくつかのサービス(SMBなど)が、ローカルネットワークのすべてのホストにパケットをブロードキャストする必要があります。IPv6では、これよりはるかにきめ細かいアプローチが取られ、サーバが「マルチキャスト」という、複数のホストをグループの一部として扱う技術によって、ホストにデータを送信します(これは、すべてのホストにデータを送信する「ブロードキャスト」とも、各ホストに個別に送信する「ユニキャスト」とも異なります)。どのホストを対象グループに含めるかは、個々のアプリケーションによって異なります。事前定義のグループには、たとえば、すべてのネームサーバを対象とするグループ(全ネームサーバマルチキャストグループ)やすべてのルータを対象とするグループ(全ルータマルチキャストグループ)があります。
これまでに述べたように、現在のIPプロトコルには、IPアドレス数が急激に不足し始めているということと、ネットワーク設定とルーティングテーブルの管理がより複雑で煩雑な作業になっているという、2つの重要な問題があります。IPv6では、1つ目の問題を、アドレス空間を128ビットに拡張することによって解決しています。2番目の問題には、階層的なアドレス構造を導入し、ネットワークアドレスを割り当てる高度なテクニックとマルチホーミング (1つのデバイスに複数のアドレスを割り当てることによって、複数のネットワークへのアクセスを可能にします)を組み合わせて対応しています。
IPv6を扱う場合は、次の3種類のアドレスについて知っておくと役に立ちます。
このタイプのアドレスは、1つのネットワークインタフェースだけに関連付けられます。このようなアドレスを持つパケットは、1つの宛先にのみ配信されます。したがって、ユニキャストアドレスは、パケットをローカルネットワークまたはインターネット上の個々のホストに転送する場合に使用します。
このタイプのアドレスは、ネットワークインタフェースのグループに関連します。このようなアドレスを持つパケットは、そのグループに属するすべての宛先に配信されます。マルチキャストアドレスは、主に、特定のネットワークサービスが、相手を特定のグループに属するホストに絞って通信を行う場合に使用されます。
このタイプのアドレスは、インタフェースのグループに関連します。このようなアドレスを持つパケットは、基盤となるルーティングプロトコルの原則に従い、送信側に最も近いグループのメンバに配信されます。エニーキャストアドレスは、特定のネットワーク領域で特定のサービスを提供するサーバについて、ホストが情報を得られるようにするために使用します。同じタイプのすべてのサーバは、エニキャストアドレスが同じになります。ホストがサービスを要求すると、ルーティングプロトコルによって最も近い場所にあるサーバが判断され、そのサーバが応答します。何らかの理由でこのサーバが応答できない場合、プロトコルが自動的に2番目のサーバを選択し、それが失敗した場合は3番目、4番目が選択されます。
IPv6アドレスは、4桁の英数字が入った8つのフィールドで構成され、それぞれのフィールドが16進数表記の16ビットを表します。各フィールドは、コロン(:)で区切られます。各フィールドで先頭の0は省略できますが、数字の間にある0や末尾の0は省略できません。もう1つの規則として、0のバイトが5つ以上連続する場合は、まとめて2つのコロン(::)で表すことができます。ただし、アドレスごとに::は1回しか使用できません。この省略表記の例については、例20.3「IPv6アドレスの例」を参照してください。この3行はすべて同じアドレスを表します。
fe80 : 0000 : 0000 : 0000 : 0000 : 10 : 1000 : 1a4 fe80 : 0 : 0 : 0 : 0 : 10 : 1000 : 1a4 fe80 : : 10 : 1000 : 1a4
IPv6アドレスの各部の機能は個別に定められています。最初の4バイトはプレフィクスを形成し、アドレスのタイプを指定します。中間部分はアドレスのネットワーク部分ですが、使用しなくてもかまいません。アドレスの最後の4桁はホスト部分です。IPv6でのネットマスクは、アドレスの末尾のスラッシュの後にプレフィクスの長さを指定して定義します。に示すアドレスには、最初の 64ビットがアドレスのネットワーク部分を構成する情報、最後の 64ビットにホスト部分を構成する情報が入っています。例20.4「プレフィクスの長さを指定したIPv6アドレス」言い換えると、64は、ネットマスクに 64個の 1ビット値が左から埋められていることを意味します。IPv4と同様、IPアドレスとネットマスクのANDをとることにより、ホストが同じサブネットにあるかそうでないかを判定します。
fe80::10:1000:1a4/64
IPv6は、事前に定義された複数タイプのプレフィクスを認識します。に、一部のプレフィクスタイプを示します。IPv6のプレフィクス
00
IPv4アドレスおよびIPv4 over IPv6互換性アドレス。これらは、IPv4との互換性を保つために使用します。これらを使用した場合でも、IPv6パケットをIPv4パケットに変換できるルータが必要です。いくつかの特殊なアドレス(たとえばループバックデバイスのアドレス)もこのプレフィクスを持ちます。
2または3
集約可能なグローバルユニキャストアドレス。IPv4と同様、インタフェースを割り当てて特定のサブネットの一部を構成することができます。現在、2001::/16 (実稼動品質のアドレス空間)と2002::/16 (6to4アドレス空間)の2つのアドレス空間があります。
fe80::/10
リンクローカルアドレス。このプレフィクスを持つアドレスは、ルーティングしてはなりません。したがって、同じサブネット内からのみ到達可能です。
fec0::/10
サイトローカルアドレス。ルーティングはできますが、それが属する組織のネットワーク内に限られます。要するに、IPv6版のプライベートネットワークアドレス空間です(たとえば、10.x.x.x)。
ff
マルチキャストアドレス。
ユニキャストアドレスは、以下の3つの基本構成要素からなります。
最初の部分(前述のいずれかのプレフィクスが含まれる部分)は、パブリックインターネット内でパケットをルーティングするために使用します。ここには、インターネットアクセスを提供する企業または団体に関する情報が入っています。
2番目の部分には、パケットの配信先のサブネットに関するルーティング情報が入っています。
3番目の部分は、パケットの配信先のインタフェースを示します。これを使用して、MACをアドレスの一部に含めることができます。MACは、世界中で重複がない固定の識別子であり、ハードウェアメーカによってデバイスにコーディングされるので、環境設定手順が大幅に簡素化されます。実際には、最初の 64アドレスビットが統合されてEUI-64トークンを構成します。このうち、最後の 48ビットにはMACアドレス、残りの 24ビットにはトークンタイプに関する特別な情報が入ります。これにより、PPPのインタフェースのようにMACを持たないインタフェースにEUI-64トークンを割り当てられるようになります。
IPv6は、この基本構造の上で、以下の5種類のユニキャストアドレスを区別します。
:: (未指定) このアドレスは、インタフェースが初めて初期化されるとき、すなわち、アドレスが他の方法で判定できないときに、ホストがそのソースアドレスとして使用します。
::1 (ループバック) ループバックデバイスのアドレス。
IPv6アドレスが、IPv4アドレスおよび96個の0ビットからなるプレフィクスで作成されます。このタイプの互換アドレスは、IPv4とIPv6のホストが、純粋なIPv4環境で動作している他のホストと通信するためのトンネリング(20.2.3項 「IPv4とIPv6の共存」を参照)として使用されます。
このタイプのアドレスは、IPv6表記で純粋なIPv4アドレスを指定します。
ローカルで使用するアドレスのタイプには、以下の2種類があります。
このタイプのアドレスは、ローカルのサブネットでのみ使用できます。このタイプのソースまたは宛先アドレスを持つパケットをインターネットまたは他のサブネットにルーティングしてはなりません。これらのアドレスは、特別なプレフィクス(fe80::/10)とネットワークカードのインタフェースID、およびゼロバイトからなる中間部分からなります。このタイプのアドレスは、自動環境設定のとき、同じサブネットに属する他のホストと通信するために使用されます。
このタイプのアドレスを持つパケットは、他のサブネットにはルーティングできますが、それより広いインターネットにはルーティングしてはなりません。つまり、組織自体のネットワークの内側だけで使用するように制限する必要があります。このようなアドレスはイントラネット用に使用され、IPv4によって定義されているプライベートアドレス空間に相当します。これらのアドレスは、特殊なプレフィクス(fec0::/10)とインタフェースID、およびサブネットIDを指定する16ビットのフィールドからなります。ここでも、残りはゼロバイトで埋められます。
IPv6では、各ネットワークインタフェースが複数のIPアドレスを持つことができるというたまったく新しい機能が導入されました。これにより、同じインタフェースで複数のネットワークにアクセスできます。これらのネットワークは、MACと既知のプレフィクスを使用して完全に自動設定できるので、IPv6を有効にすると すぐに、(リンクローカルアドレスを使用して)ローカルネットワーク上のすべてのホストに接続できるようになります。IPアドレスにMACが組み込まれているので、使用されるIPアドレスは世界中で唯一のアドレスになります。アドレスの唯一の可変部分は、ホストが現在動作している実際のネットワークによって、サイトトポロジとパブリックトポロジを指定する部分になります。
複数のネットワークに接続するホストの場合、少なくとも2つのアドレスが必要です。1つはホームアドレスです。ホームアドレスには、インタフェースIDだけでなく、それが通常属するホームネットワークの識別子(および対応するプレフィクス)も含まれています。ホームアドレスは静的アドレスなので、通常は変更されません。しかし、モバイルホスト宛てのパケットは、それがホームネットワーク内にあるかどうかにかかわらず、すべてそのホストに配信できます。これは、IPv6で導入されたステートレス自動環境設定やネイバーディスカバリのようなまったく新しい機能によって実現されました。モバイルホストは、ホームアドレスに加え、ローミング先の外部ネットワークに属するアドレスも取得します。これらはケアオブアドレスと呼ばれます。ホームネットワークには、ホストが対象エリア外をローミングしている間、そのホスト宛てのすべてのパケットを転送する機能があります。IPv6環境において、このタスクは、ホームエージェントによって実行されます。ホームエージェントは、ホームアドレスに届くすべてのパケットを取得してトンネルに リレーします。一方、ケアオブアドレスに届いたパケットは、特別迂回することなく、直接モバイルホストに転送されます。
インターネットに接続されている全ホストをIPv4からIPv6に移行する作業は、段階的に行われます。両方のプロトコルは今後しばらく共存することになります。両方のプロトコルをデュアルスタックで実装すれば、同じシステム上に共存することが保証されます。しかし、それでもなお、IPv6対応のホストがどのようにしてIPv4ホストと通信するか、また多くがIPv4ベースの現行ネットワークでIPv6パケットをどのように伝送するかなど、解決すべき問題が残ります。最善のソリューションは、トンネリングと互換アドレスです(20.2.2項 「アドレスのタイプと構造」を参照)。
ワールドワイドなIPv4ネットワークと隔離されているIPv6ホストは、トンネルを使って通信を行うことができます。IPv6パケットをIPv4パケットにカプセル化すれば、それをIPv4ネットワークに送ることができます。2つのIPv4ホスト間のこのような接続をトンネルと呼びます。これを行うには、パケットにIPv6の宛先アドレス(または対応するプレフィクス)とともに、トンネルの受信側にあるリモートホストのIPv4アドレスも含める必要があります。基本的なトンネルは、ホストの管理者間が合意すれば、手動で設定が可能です。これは、静的トンネリングとも呼ばれます。
ただし、静的トンネルの環境設定とメンテナンスは、あまりに手間がかかるので、多くの場合、日常の通信には向きません。そこで、IPv6は、動的トンネリングを実現する3つの異なる方法を提供しています。
IPv6パケットが自動的にIPv4パケットとしてカプセル化され、マルチキャスト対応のIPv4ネットワークによって送信されます。IPv6は、ネットワーク全体(インターネット)を巨大なLAN (local area network)だと思い込んで動作することになります。これにより、IPv4トンネルの着信側の端を自動的に判定できます。ただし、この方法は拡張性に欠けているだけではなく、IPマルチキャストがインターネット上で広く普及しているとはいえないという事実も障害となります。したがってこの解決方法を採用できるのは、マルチキャストが利用できる小規模な企業内ネットワークだけです。この方式の仕様は、RFC 2529に規定されています。
この方式では、IPv6アドレスからIPv4アドレスを自動的に生成することで、隔離されたIPv6ホストがIPv4ネットワーク経由で通信できるようにします。しかし、隔離されたIPv6ホストとインターネットの間の通信に関して、多くの問題が報告されています。この方式は、RFC 3056で規定されています。
この方式は、IPv6ホスト専用のトンネルを提供する特殊なサーバに依存します。この方式は、RFC 3053で規定されています。
IPv6を設定するには、通常、個々のワークステーションの設定を変更する必要はありません。IPv6は、デフォルトで有効になっています。インストール済みシステムでIPv6を有効または無効にするには、YaSTのモジュールを使用します。タブで、必要に応じてオプションをオン/オフします。次回の再起動時まで一時的に有効にするには、rootとして、「modprobe 」と入力します。IPv6モジュールはロード後にアンロードすることはできません。
-i ipv6
IPv6の自動環境設定の概念があるため、ネットワークカードには、リンクローカルネットワーク内のアドレスが割り当てられます。通常、ワークステーション上ではルーティングテーブルの管理を実行しません。ワークステーションは、ルータアドバタイズプロトコルを使用して、実装する必要のあるプレフィクスとゲートウェイをネットワークルータに問い合わせます。IPv6ルータは、radvdプログラムを使用して設定できます。このプログラムは、IPv6アドレスに使用するプレフィクスとルータをワークステーションに通知します。または、zebra/quaggaを使用してアドレスとルーティングの両方を自動設定することもできます。
/etc/sysconfig/networkファイルを使用してさまざまなタイプのトンネルをセットアップする方法の詳細については、ifcfg-tunnelのマニュアルページ(man ifcfg-tunnel)を参照してください。
ここでの概要は、IPv6に関する情報を網羅しているわけではありません。IPv6の詳細については、次のオンラインドキュメントや書籍を参照してください。
IPv6のあらゆる情報にここからリンクできます。
独自のIPv6ネットワークを開始するには、すべての情報が必要です。
IPv6対応製品のリスト。
Linux IPv6-HOWTOと多くの関連トピックへのリンクが用意されています。
IPv6に関する基本的なRFCです。
Silvia HagenによるIPv6 Essentials (ISBN 0-596-00125-8)は、このトピックに関するあらゆる重要な面を扱っている本です。
DNSはIPアドレスに1つまたは複数のホスト名を割り当てるとともに、ホスト名をIPアドレスに割り当てます。Linuxでは、この変換は通常、bindという特別な種類のソフトウェアによって行われます。また、この変換を行うマシンをネームサーバと呼びます。ホスト名は、その名前構成要素がピリオド(.)で区切られた階層システムを構成しています。しかしながら名前の階層構造は、先に述べたIPアドレスの階層構造とは無関係です。
hostname.domainという形式で書かれた完全な名前、たとえば、jupiter.example.comを考えてみましょう。「完全修飾ドメイン名」 (FQDN: Fully Qualified Domain Name)と呼ばれるフルネームは、ホスト名とドメイン名(example.com)で構成されます。ドメイン名には最上位ドメイン(TLD) (com)が含まれます。
TLDの割り当ては、これまでの経緯もあって、非常に複雑になっています。従来から、米国では、3文字のドメイン名が使用されています。他の国では、ISOで制定された2文字の国コードが標準です。これに加えて、2000年には、特定の活動領域を表す、より長いTLDが導入されました(たとえば、.info、.name、.museum)。
インターネットの初期( 1990年より前)には、ファイル/etc/hostsに、インターネットで利用されるすべてのマシン名を記述していました。しかし、インターネットに接続されるコンピュータ数の急激な増加により、この方法はすぐに現実的でなくなりました。このため、ホスト名を広く分散して保存するための分散データベースが開発されました。このデータベースは、ネームサーバと同様、インターネット上のすべてのホストに関するデータがいつでも用意されているわけではなく、他のネームサーバに問い合わせを行います。
この階層の最上位には、複数のルートネームサーバがあります。ルートネームサーバは、Network Information Center (NIC)によって運用されており、最上位レベルドメインを管理します。各ルートネームサーバは、特定の最上位ドメインを管理するネームサーバについての情報を持っています。最上位ドメインNICの詳細については、http://www.internic.netを参照してください。
DNSには、ホスト名の解決以外の機能もあります。ネームサーバは、特定のドメイン宛の電子メールをどのホストに転送するかも管理しています(「メールエクスチェンジャ(MX)」)。
マシンがIPアドレスを解決するには、少なくとも1台のネームサーバとそのIPアドレスを知っている必要があります。YaSTを使用すれば、このようなネームサーバを簡単に指定できます。モデムを使ったダイアルアップ接続の場合は、ネームサーバを手動で設定する必要はありません。接続が設定されるときに、ダイアルアッププロトコルによってネームサーバのアドレスが提供されるからです。
whoisプロトコルは、DNSと密接な関係があります。このプログラムを使用すると、特定のドメインの登録者名をすぐに検索できます。
.localトップレベルドメインは、リゾルバではリンクローカルドメインとして処理されます。DNS要求は通常のDNS要求ではなく、マルチキャスト要求として送信されます。ネームサーバ設定で.localドメインをすでに使用している場合は、このオプションを/etc/host.confでオフに変更する必要があります。詳細については、host.confのマニュアルページを参照してください。
インストール中にMDNSをオフにするには、nomdns=1をブートパラメータとして使用してください。
マルチキャストDNSの詳細は、http://www.multicastdns.orgを参照してください。
Linuxでは多くのタイプのネットワーク接続がサポートされています。その多くは、異なるデバイス名と、ファイルシステム内の複数の場所に分散した設定ファイルを使用しています。手動によるネットワーク設定のさまざまな面についての詳細は、20.6項 「ネットワークの手動環境設定」を参照してください。
SUSE Linux Enterprise Desktopでは、デフォルトでNetworkManagerがアクティブになっており、すべてのネットワークカードが設定されます。NetworkManagerがアクティブでない場合は、リンクアップしている(つまり、ネットワークケーブルが接続されている)最初のインタフェースだけが自動的に設定されます。インストール済みのシステムには、いつでも付加的なハードウェアを設定することができます。以降のセクションでは、SUSE Linux Enterprise Desktopがサポートするすべてのタイプのネットワーク接続について、ネットワークの設定方法を説明します。
YaSTでEthernetカードまたはWi-Fi/Bluetoothカードを設定するには、 › の順に選択します。モジュールの開始後に、YaSTはダイアログを表示します。ダイアログには、、、およびの4つのタブがあります。
タブでは、ネットワークのセットアップ方法、IPv6、一般的なDHCPオプションの使用など、一般的なネットワークオプションを設定できます。詳細については、20.4.1.1項 「グローバルネットワークオプションの設定」を参照してください。
タブには、インストールされたネットワークインタフェースと環境設定に関する情報が含まれています。正しく検出されたネットワークカードの名前が表示されます。このダイアログでは、手動で新しいカードを設定し、それらの設定内容を削除または変更できます。自動検出されなかったカードを手動で設定する場合は、20.4.1.3項 「検出されないネットワークカードの設定」を参照してください。すでに設定済みのカードの設定を変更する場合については、20.4.1.2項 「ネットワークカードの設定の変更」を参照してください。
タブでは、マシンのホスト名を設定し、使用サーバに名前を付けることができます。詳細については、20.4.1.4項 「ホスト名とDNSの設定」を参照してください。
タブは、ルーティングの設定で使用します。詳細については、20.4.1.5項 「ルーティングの設定」を参照してください。
YaSTのモジュールのタブを使用して、NetworkManager、IPv6およびDHCPのクライアントオプションの使用など、重要なグローバルネットワークオプションを設定できます。この設定は、すべてのネットワークインタフェースに適用されます。
では、ネットワーク接続を管理する方法を選択します。NetworkManagerデスクトップアプレットですべてのインタフェースの接続を管理する場合は、を選択します。NetworkManagerは、複数の有線ネットワークおよび無線ネットワーク間の切り替えに適しています。デスクトップ環境を実行しない場合、またはコンピュータがXenサーバ(仮想システム)であるか、ネットワーク内でDHCPやDNSなどのネットワークサービスを提供する場合は、の方法を使用します。NetworkManagerを使用する場合は、nm-appletを使用して、ネットワークオプションを設定する必要があります。モジュールのタブである、、およびは無効になります。NetworkManagerの詳細については、第22章 NetworkManagerの使用を参照してください。
で、IPv6プロトコルを使用するかどうかを選択します。IPv4とともにIPv6を使用できます。デフォルトでは、IPv6は有効です。ただし、IPv6プロトコルを使用しないネットワークでは、IPv6プロトコルを無効にした方が応答時間がより短くなる場合があります。IPv6を無効にするには、を無効にします。IPv6が無効な場合、カーネルはIPv6モジュールを自動的にロードしません。この設定は、再起動後に適用されます。
では、DHCPクライアントのオプションを設定します。は、単一ネットワーク上の各DHCPクライアントで異なる必要があります。空白のままにした場合は、デフォルトでネットワークインタフェースのハードウェアアドレスになります。ただし、同じネットワークインタフェース、したがって同じハードウェアアドレスを使用して複数の仮想マシンを実行している場合は、ここで自由形式の固有識別子を指定します。
では、DHCPクライアントがDHCPサーバにメッセージを送信するときに、ホスト名オプションフィールドで使用される文字列を指定します。一部のDHCPサーバでは、このホスト名(ダイナミックDNS)に応じて、ネームサーバゾーン(順レコードおよび逆レコード)を更新します。また一部のDHCPサーバでは、クライアントからのDHCPメッセージで、オプションフィールドに特定の文字列が含まれていることが必要です。現在のホスト名(/etc/HOSTNAMEで定義されたホスト名)を送信する場合は、[自動]のままにします。ホスト名を送信しない場合は、このオプションフィールドを空のままにします。
DHCPからの情報に従ったデフォルトのルートを変更しない場合は、をオフにします。
ネットワークカードの設定を変更するには、YaSTの › で検出されたカードのリストから目的のカードを選択し、をクリックします。ダイアログが表示されます。このダイアログの、、およびタブを使用してカードの設定を変更します。
ダイアログのタブで、ネットワークカードのIPアドレス、またはそのIPアドレスの決定方法を設定できます。IPv4およびIPv6の両アドレスがサポートされます。ネットワークカードは、(ボンドデバイスで有用)の場合や、(IPv4またはIPv6)、あるいはまたはのいずれかまたは両方を経由して割り当てられるを持つ場合もあります。
を使用する場合は、(IPv4の場合)、(IPv6の場合)、またはのいずれを使用するかを選択します。
可能であれば、インストール時に利用可能なリンクを持つ最初のネットワークカードがDHCPによる自動アドレス設定を使用するように自動的に設定されます。SUSE Linux Enterprise Desktopでは、デフォルトでNetworkManagerがアクティブになっており、すべてのネットワークカードが設定されます。
DSL回線を使用していてISP(Internet Service Provider)からスタティックIPが割り当てられていない場合も、DHCPを使用する必要があります。DHCPを使用することを選択する場合は、YaSTネットワークカード設定モジュールのダイアログにあるタブので詳細を設定します。さまざまなホストが同じインタフェースを介して通信するようにバーチャルホストがセットアップされている場合は、各ホストの識別にが必要になります。
DHCPは、クライアント設定には適していますが、サーバ設定には適していません。静的なIPアドレスを設定するには、以下の手順に従ってください。
YaSTネットワークカード設定モジュールのタブの検出されたカードのリストから目的のカードを選択し、をクリックします。
タブで、を選択します。
を入力します。IPv4およびIPv6の両アドレスを使用できます。にネットワークマスクを入力します。IPv6アドレスが使用されている場合は、フォーマット/64のプレフィックス長に対するを使用します。
オプションで、このアドレスの完全修飾を入力できます。このホスト名は、/etc/hosts設定ファイルに書き込まれます。
をクリックします。
環境設定を有効にするには、をクリックします。
静的アドレスを使用する場合、ネームサーバとデフォルトゲートウェイは、自動的には設定されません。ネームサーバを設定するには、20.4.1.4項 「ホスト名とDNSの設定」に従って手順を進めます。ゲートウェイを設定するには、20.4.1.5項 「ルーティングの設定」に従って手順を進めます。
1台のネットワークデバイスに、複数のIPアドレスを割り当てることができます。
これらのエイリアスまたはラベルはそれぞれIPv4でのみ動作し、IPv6では、無視されます。iproute2ネットワークインタフェースを使用する場合、1つ以上のアドレスを持つことができます。
YaSTを使用してネットワークカードに追加のアドレスを設定するには、次の手順に従います。
YaSTのモジュールのタブの検出されたカードのリストから目的のカードを選択し、をクリックします。
› タブで、をクリックします。
、、およびに適切な値を入力します。エイリアス名にはインタフェース名を含めないでください。
設定内容を有効にするために、設定を確認します。
ネットワークカードのデバイス名が使用されている場合、ネットワークカードのデバイス名を変更できます。また、ハードウェア(MAC)アドレスまたはバスIDを介してudevによりネットワークカードを識別するかどうかを選択できます。大型のサーバでは、カードのホットスワッピングを容易にするために後者のオプションが適しています。YaSTを使ってこうしたオプションを設定するには、次の手順に従います。
YaSTのモジュールのタブの検出されたカードのリストから目的のカードを選択し、をクリックします。
タブを開きます。現在のデバイス名がに表示されます。をクリックします。
udevでまたはによりカードを識別するかどうかを選択します。カードの現在のMACアドレスおよびバスIDがダイアログに表示されます。
デバイス名を変更するには、オプションをオンにし、名前を編集します。
設定内容を有効にするために、設定を確認します。
一部のネットワークカードには、複数のカーネルドライバを使用できます。カードがすでに設定されている場合は、YaSTで利用可能で適切なドライバのリストから、使用するカーネルドライバを選択できます。また、カーネルドライバのオプションを指定することもできます。YaSTを使ってこうしたオプションを設定するには、次の手順に従います。
YaSTのネットワーク設定モジュールのタブの検出されたカードのリストから目的のカードを選択し、をクリックします。
タブを開きます。
で、使用するカーネルドライバを選択します。選択したドライバのオプションを、に「option=value」の形式で入力します。他にもオプションを使用する場合は、スペースで区切る必要があります。
設定内容を有効にするために、設定を確認します。
wickedを使った方法を使用している場合、デバイスをブート時、ケーブル接続時、カード検出時、または手動で起動するように設定したり、起動しないように設定したりすることができます。デバイスの起動方法を変更するには、次の手順に従います。
YaSTで、 › で検出されたカードの一覧からカードを選択し、をクリックします。
タブのから、適切な項目を選択します。
システムブート中にデバイスを起動するには、を選択します。では、インタフェースで物理接続が存在するかどうかが監視されます。では、インタフェースは可能な限り早急に設定されます。これは、オプションに似ていますが、インタフェースがブート時に存在しない場合にエラーが発生しない点のみが異なります。でインタフェースを手動で制御する場合は、[手動]を選択します。デバイスを全く起動しない場合は、を選択します。はに似ていますが、インタフェースはsystemctl stop wicked.serviceコマンドではシャットダウンしません。このオプションは、NFSまたはiSCSIのルートファイルシステムを使用する場合に選択します。
設定内容を有効にするために、設定を確認します。
インタフェースの最大転送単位(MTU)を設定できます。MTUでは、最大許容パケットサイズ(バイト)を参照します。MTUが大きいと、帯域幅の効率が高くなります。ただし、パケットが大きくなると、低速なインタフェースの処理がしばらく阻止され、以降のパケットの遅延が増加する場合があります。
YaSTで、 › で検出されたカードの一覧からカードを選択し、をクリックします。
タブのリストから、適切な項目を選択します。
設定内容を有効にするために、設定を確認します。
YaSTで、 › でインフィニバンドデバイスを選択し、をクリックします。
タブの(IPoIB)モードで(デフォルト)またはを選択します。
設定内容を有効にするために、設定を確認します。
インフィニバンドの詳細については、/usr/src/linux/Documentation/infiniband/ipoib.txtを参照してください。
Section “Configuring the Firewall with YaST”, Chapter 15, Masquerading and Firewalls, Security Guideで説明しているような詳細なファイアウォール設定を行わずに、デバイスに基本的なファイアウォールを設定することができます。次の手順に従います。
YaSTの › モジュールを開きます。タブで、検出されたカードの一覧からカードを選択し、をクリックします。
ダイアログのタブを表示します。
インタフェースを割り当てるを指定します。次のオプションを指定できます。
このオプションは、ファイアウォールが無効であり、ファイアウォールがまったく実行しない場合にのみ利用可能です。コンピュータが、外部ファイアウォールにより保護されている、より規模の大きいネットワークに接続している場合にのみ、このオプションを使用してください。
このオプションは、ファイアウォールが有効になっている場合のみ、利用できます。ファイアウォールが実行中であり、インタフェースがファイアウォールゾーンに自動的に割り当てられます。こうしたインタフェースには、anyキーワードを含むゾーンまたは外部ゾーンが使用されます。
ファイアウォールを実行しますが、このインタフェースを保護するルールは使いません。コンピュータが、外部ファイアウォールにより保護されている、より規模の大きいネットワークに接続している場合に、このオプションを使用してください。また、マシンに追加ネットワークインタフェースが存在する場合、内部ネットワークに接続するインタフェースで使用できます。
非武装地帯ゾーンは、内部ネットワークと(悪意のある)インターネットとの中間にあたるゾーンです。このゾーンに割り当てられたホストは、内部ネットワークおよびインターネットからアクセスされますが、ホストから内部ネットワークにアクセスすることはできません。
このインタフェースでファイアウォールを実行し、(危険な可能性のある)他のネットワークトラフィックからインタフェースを保護します。これがデフォルトのオプションです。
設定内容を有効にするために、設定を確認します。
ネットワークカードが正しく検出されなかった場合、そのカードは検出されたカードのリストに含まれません。システムにそのカード用のドライバが間違いなく含まれている場合は、そのようなカードを手動で設定することができます。特殊なネットワークデバイスタイプ(ブリッジ、ボンド、TUN、TAPなど)も設定できます。未検出のネットワークカードまたは特殊なデバイスを設定するには、次の手順に従います。
YaSTの › › ダイアログでをクリックします。
ダイアログで、使用可能なオプションからインタフェースのとを設定します。ネットワークカードが、PCMCIAデバイスかUSBデバイスの場合、それぞれのチェックボックスを選択して、をクリックしダイアログを終了します。それ以外の方法では、必要に応じて、カードとそので使用されるカーネルのを定義できます。
では、インタフェースのifupにより使用されるethtoolオプションを設定できます。使用可能なオプションについては、ethtoolマニュアルページを参照してください。オプション文字列が - で始まる場合(たとえば-K interface_name rx on)、文字列内の2番目の単語が現在のインタフェースの名前に置換されます。それ以外の場合(たとえばautoneg off speed 10)、-s interface_nameの前にifupが追加されます。
をクリックします。
、、およびタブで、インタフェースのIPアドレス、デバイス起動方法、ファイアウォールゾーンなどの必要なオプションを設定します。環境設定オプションの詳細については、20.4.1.2項 「ネットワークカードの設定の変更」を参照してください。
インタフェースのデバイスタイプとして、を選択した場合は、次のダイアログでワイヤレス接続の設定を行います。
新しいネットワーク設定を有効にするために、設定を確認します。
Ethernetカードがすでに利用できる状態で、インストール時にネットワーク設定を変更しなかった場合、コンピュータのホスト名が自動的に生成され、DHCPが有効になります。また、ホストがネットワークに参加するために必要なネームサービス情報も自動的に生成されます。ネットワークアドレス設定にDHCPを使用している場合は、ドメインネームサーバのリストは自動的に記入されます。静的設定を利用する場合は、これらの項目を手動で設定してください。
コンピュータ名を変更し、ネームサーバの検索リストを修正するには、以下の手順に従ってください。
YaST内のモジュールの › タブに移動します。
にホスト名を入力し、必要に応じてにドメイン名を入力します。マシンがメールサーバである場合、ドメインは特に重要です。ホスト名はグローバルであり、すべての設定ネットワークインタフェースに適用されることに注意してください。
IPアドレスを取得するためにDHCPを使用している場合、DHCPによりコンピュータのホスト名が自動的に設定されます。異なるネットワークに接続する場合は、異なるホスト名が割り当てられることがあり、ランタイムにホスト名が変更されるとグラフィックデスクトップが混同される可能性があるので、この機能を無効にした方が良い場合もあります。DHCPを使用したIPアドレスの取得を無効にするには、をオフにします。
では、ホスト名を/etc/hosts内の127.0.0.2 (ループバック) IPアドレスに関連付けます。アクティブネットワークが存在しないときでも常に解決可能なホスト名を必要とする場合に有用なオプションです。
では、DNS設定(ネームサーバ、検索リスト、/etc/resolv.confファイルのコンテンツ)を変更する方法を選択します。
オプションを選択した場合、(DHCPクライアントまたはNetworkManagerから)動的に取得されたデータと、(YaSTまたは設定ファイルで)静的に定義されたデータをマージするnetconfigスクリプトにより設定が処理されます。ほとんどの場合、デフォルトのポリシーで十分です。
オプションを選択した場合、netconfigでは/etc/resolv.confファイルを変更できません。ただし、このファイルは手動で編集できます。
オプションを選択した場合、マージポリシーを定義する文字列を指定する必要があります。この文字列は、設定の有効なソースとみなされるインタフェース名のカンマで区切られたリストから構成されます。完全なインタフェース名以外に、複数のインタフェースに一致する基本的なワイルドカードを使用することもできます。たとえばeth* ppp?は、先頭がethであり、以降にppp0-ppp9を含むすべてのインタフェースが対象になります。/etc/sysconfig/network/configファイルで定義された静的な設定を適用する方法を示す次の2つの特別なポリシー値が存在します。
STATIC
静的な設定は、動的な設定とマージされる必要があります。
STATIC_FALLBACK
静的な設定は、動的設定が利用できない場合のみ使用されます。
詳細については、netconfig(8)のマニュアルページ(man 8 netconfig)を参照してください。
およびリストに入力します。ネームサーバは、ホスト名ではなく、192.168.1.116などのIPアドレスにより指定する必要があります。タブで指定した名前は、ドメインが指定されていないホスト名の解決のために使用されるドメイン名です。複数のを使用する場合は、カンマまたは空白でドメインを区切ります。
設定内容を有効にするために、設定を確認します。
コマンドラインからYaSTを使用してホスト名を編集することもできます。YaSTによる変更はすぐに有効になります(/etc/HOSTNAMEファイルを手動で編集する場合はすぐに有効にはなりません)。ホスト名を変更するには、次のコマンドを実行します。
yast dns edit hostname=hostname
ネームサーバを変更するには、次のコマンドを実行します。
yast dns edit nameserver1=192.168.1.116 yast dns edit nameserver2=192.168.1.117 yast dns edit nameserver3=192.168.1.118
コンピュータを他のコンピュータやネットワークと通信させるには、ネットワークトラフィックが正しい経路を通過するように、ルーティング情報を設定する必要があります。DHCPを使用している場合、この情報は自動的に設定されます。静的アドレスを使用する場合は、このデータを手作業で追加する必要があります。
YaSTで、 › の順に移動します。
のIPアドレス(IPv4および必要に応じてIPv6)を入力します。デフォルトゲートウェイは、可能性のあるすべての宛先に一致しますが、必要なアドレスに一致するルーティングテーブルエントリが存在する場合は、デフォルトゲートウェイ経由のデフォルトルートの代わりにそのエントリが使用されます。
には、さらに追加エントリを入力できます。のネットワークIPアドレス、のIPアドレス、およびを入力します。定義されたネットワークにトラフィックがルーティングされるを選択します(マイナス記号はデバイスを表わします)。このいずれかの値を省略する場合は、マイナス記号(-)を使用します。デフォルトゲートウェイをテーブルに入力するには、フィールドをdefaultのままにします。
追加のデフォルトルートが使用されている場合、より高い優先度を持つルートを決定するためのメトリックオプションを指定できます。メトリックオプションを指定するには、に- metric番号を入力します。最も高いメトリックを持つルートがデフォルトとして使用されます。ネットワークデバイスが切断している場合は、そのルートが削除され、次のルートが使用されます。ただし、現在のカーネルは静的なルーティングでメトリックを使用せず、multipathdなどのルーティングデーモンのみがメトリックを使用します。
システムがルータの場合、必要に応じて、でおよびを有効にします。
設定内容を有効にするために、設定を確認します。
NetworkManagerは、ラップトップなどの携帯用コンピュータのための理想的なソリューションです。NetworkManagerを使用すると、移動時のネットワーク間の切り替えおよびネットワークインタフェースの設定について心配する必要がなくなります。
wicked #
ただし、NetworkManagerはすべての場合に適合するソリューションではありません。したがって、ネットワーク接続を管理する場合、引き続きwickedによる制御方法またはNetworkManagerを選択できます。NetworkManagerでネットワーク接続を管理する場合は、22.2項 「NetworkManagerの有効化/無効化」に従ってYaSTネットワーク設定モジュールでNetworkManagerを有効にし、NetworkManagerでネットワーク接続を設定します。ユースケースのリスト、およびNetworkManagerを設定および使用する方法の詳細については、第22章 NetworkManagerの使用を参照してください。
次に、wickedとNetworkManagerの相違をいくつか示します。
root特権
ネットワークセットアップにNetworkManagerを使用する場合、アプレットを使用するデスクトップ環境内からいつでも簡単にネットワーク接続を切り替え、停止または開始できます。NetworkManagerでは、root特権を要求されることなく、ワイヤレスカード接続の変更および設定もできます。この理由から、NetworkManagerは、モバイルワークステーションに理想的なソリューションと言えます。
wickedには、ユーザ管理デバイスのように、ユーザによる操作の有無に関係なく接続を切り替え、停止、または開始する方法がいくつか用意されています。ただし、この場合は常に、ネットワークデバイスを変更または設定するためのroot特権が必要です。このことは、多くの場合、考えられるすべての接続を事前に設定することができないモバイルコンピューティングでは問題になります。
wickedとNetworkManagerの両方で、無線ネットワーク(WEP、WPA-PSK、およびWPA-Enterpriseアクセスを使用)および有線ネットワーク(DHCPと静的設定を使用)とのネットワーク接続を操作できます。これらの設定では、ダイヤルアップおよびVPNによる接続もサポートします。NetworkManagerでは、モバイルブロードバンド(3G)モデムを接続したり、DSL接続をセットアップしたりすることもできますが、これは従来の設定では不可能です。
NetworkManagerは、コンピュータが常に最適な接続を使用して接続されるようにします。ネットワークケーブルの接続が誤って切断された場合は、再接続しようとします。また、ワイヤレス接続のリストから信号強度が最高のネットワークを検出し、自動的にそれを使用して接続します。wickedと同じ機能を利用するには、より多くの設定作業が必要です。
NetworkManagerで作成された個別のネットワーク接続設定は、設定プロファイルに保存されます。NetworkManagerまたはYaSTで設定された「システム」接続は、/etc/networkmanager/system-connections/*、または/etc/sysconfig/network/ifcfg-*に保存されます。GNOMEの場合、すべてのユーザ定義接続はGConfに保存されます。
プロファイルが設定されていない場合は、NetworkManagerにより自動的にプロファイルが作成され、Auto $INTERFACE-NAMEという名前が付けられます。これは、(安全性を確保しながら)可能な限り多くの場合に、設定なしで動作することを目的として作成されます。自動的に作成されたプロファイルが適切でない場合は、GNOMEにより提供されるネットワーク接続設定ダイアログを使用して必要に応じてプロファイルを変更します。詳細については、22.3項 「ネットワーク接続の設定」を参照してください。
中央管理されたマシンでは、たとえばユーザが管理者の定義した接続の変更を許可されている場合、またはユーザが独自のネットワーク設定を定義することが許可されている場合に、PolKitにより特定のNetworkManager機能を制御するか、または無効にできます。対応するNetworkManagerポリシーを表示または変更するには、PolKitのグラフィカルなツールを起動します。このポリシーは、左側のツリーで、エントリの下にあります。PolKitの概要、およびその使用方法の詳細については、Chapter 9, Authorization with PolKit, Security Guideを参照してください。
ネットワークソフトウェアの手動環境設定は、最後の手段です。設定には可能な限りYaSTを使用してください。しかし、ここで説明するネットワーク環境設定の背景知識がYaSTでの設定作業に役立つことがあります。
wickedネットワーク環境設定 #
wickedと呼ばれるツールとライブラリは、ネットワーク環境設定用の新しいフレームワークを提供します。
ネットワーク管理は相互に影響を持つ複数の層で構成されていますが、その相互作用は明確とはいえず、悪影響があっても把握しづらかったり、あいまいな制約や慣習があったりします。このようなネットワーク管理のさまざまな層を1つのスクリプト(多くても2つ程度のスクリプト)に寄せ集めている点が、従来のネットワークインタフェース管理における問題の1つです。異なるシナリオに対応するために特別なハックを使った層がいくつもあると、保守負担が増加します。現状では、dhcpcdなどのデーモンによって実装されるアドレス設定プロトコルが使用されていますが、他のインフラストラクチャとの相互作用は十分ではありません。そこで、インタフェースを永続的に識別できるようにするため、多くのudevサポートを必要とするインタフェース命名スキームが導入されたものの、これは洗練されているとはいいがたい手段です。
wickedというアイデアが生まれたのは、この問題をさまざまな方法で分解するためです。どの方法もまったく新しいものではありませんが、異なるプロジェクトから得たアイデアをまとめようとする試みから、総合的により優れた解決策が生まれることが期待できます。
アプローチの1つは、クライアント/サーバモデルを使用することです。これにより、wickedは、アドレス設定のような作業について、フレームワーク全体と効果的に統合された標準化機能を定義できます。たとえば、アドレス設定では、管理者はDHCPまたはIPv4 zeroconf経由でインタフェースを設定するよう要求できます。アドレス設定サービスが実行するのは、サーバからリースを取得してwickedサーバプロセスに渡すことだけで、その後はwickedサーバプロセスが要求されたアドレスおよびルートをインストールします。
問題を分解するもう1つのアプローチは、階層化を強制的に導入することです。すべてのタイプのネットワークインタフェースに対して、ネットワークインタフェースのデバイス層(VLAN、ブリッジ、ボンド、または準仮想化されたデバイス)を設定するdbusサービスを定義できます。アドレス設定といった共通の機能は、こうしたデバイス固有のサービスの上に階層化した結合サービスによって実装します。これにより、サービスを個別に実装する必要がなくなります。
wickedフレームワークは、そのタイプに応じてネットワークインタフェースにアタッチされるさまざまなdbusサービスを使用して、これら2つの側面を実装します。ここでは、wickedにおける現在のオブジェクト階層をおおまかに説明します。
各ネットワークインタフェースは、/org/opensuse/Network/Interfacesの子オブジェクトを介して表されます。子オブジェクトの名前は、そのifindexで指定されます。たとえば、ループバックインタフェースは通常、ifindex 1を取り、/org/opensuse/Network/Interfaces/1です。登録されている最初のEthernetインタフェースは、/org/opensuse/Network/Interfaces/2です。
各ネットワークインタフェースには「クラス」が関連付けられており、そのクラスを使用して、サポートするdbusインタフェースが選択されます。「」デフォルトでは、各ネットワークインタフェースは、クラスnetifに属し、wickeddはこのクラスと互換性のあるすべてのインタフェースを自動的にアタッチします。現在の実装では、これには次のインタフェースが含まれます。
リンクアップとリンクダウンの取得、MTUの割り当てなどの、一般的なネットワークインタフェース機能。
DHCP、IPv6 autoconf、IPv4 zeroconfなどのアドレス設定サービス。
これ以外に、ネットワークインタフェースで特別な設定メカニズムが必要な場合や、ネットワークインタフェースがこのようなメカニズムを備えている場合もあります。たとえば、Ethernetデバイスの場合、リンク速度、チェックサム計算のオフロードなどを制御可能にしたい場合があります。これを実現するために、Ethernetデバイスには、netifのサブクラスである、netif-ethernetという独自のクラスがあります。このため、Ethernetインタフェースに割り当てられたdbusインタフェースには、上記に一覧にされているすべてのサービス、およびnetif-ethernetクラスに属するオブジェクトでのみ使用可能なサービスであるorg.opensuse.Network.Ethernetが含まれています。
同様に、ブリッジ、VLAN、ボンド、インフィニバンドなどのインタフェースタイプのクラスも存在します。
Ethernetデバイスの上に位置し、実際には仮想ネットワークインタフェースであるVLANなど、最初に作成する必要があるインタフェースとはどのように相互作用すればよいのでしょうか。このような場合、wickedは、org.opensuse.Network.VLAN.Factoryなどのファクトリインタフェースを定義します。このようなファクトリインタフェースは、要求されたタイプのインタフェースを作成できる単一の機能を提供します。これらのファクトリインタフェースは、/org/opensuse/Network/Interfacesリストノードにアタッチされます。
wickedは現在、以下をサポートしています。
SUSEおよびRedHatスタイルの/etc/sysconfig/networkファイルを解析する環境設定ファイルバックエンド。開発はSUSEのインストール済み環境上で行われるため、多くの場合、前者の方がRedHat用ファイルよりも安定しています。
ネットワークインタフェース設定をXMLで表す環境設定ファイルバックエンド。netcfが使用する設定から発展した構文。
Ethernetやインフィニバンド、VLAN、ブリッジ、ボンドデバイスなどの、「標準」のネットワークインタフェースの起動とシャットダウン。「」ブリッジとボンドには、依然としていくつかの問題があります。
ワイヤレス。まだ完全ではなく、1つのネットワークに制限されています。
内蔵DHCPv4クライアントおよび内蔵DHCPv6クライアント。
リンクが検出されるとすぐに、自動的にインタフェースを起動することができるいくつかの実験コードがあります。
XMLリーダ/ライタの実装。これは規格に完全準拠しているとはいえないものの、コンパクトなフットプリントを持ち、適度に高速であると思われます。これにはXPath 1.0の部分的な実装も付属していて、XMLによるインタフェースの記述から情報を抽出できるため、XMLを自分自身で解析する必要はありません。
wickedの使用 #
SUSE Linux Enterpriseでは、NetworkManagerを選択しなかった場合、wickedがデフォルトで実行されています。これを有効化する必要がある場合には、次を呼び出します。
systemctl enable --force wicked.service
これにより、wickedサービスが有効になり、wicked.serviceエイリアスリンクに対してnetwork.serviceが作成され、次回ブート時にネットワークを起動します。
サーバプロセスを起動します。
systemctl start wickedd.service
これにより、wickedd (メインサーバ)および関連するサプリカントがデバッグモードで起動し、トレース情報をsyslogに出力します。
/usr/sbin/wickedd --foreground /usr/lib/wicked/bin/wickedd-dhcp4 --foreground /usr/lib/wicked/bin/wickedd-auto4 --foreground /usr/lib/wicked/bin/wickedd-dhcp6 --foreground
ネットワークを起動します。
systemctl start wicked.service
または、network.serviceエイリアスを使用します。
systemctl start network.service
これらのコマンドは、デフォルト、または/etc/wicked/client.xmlで定義されるシステム設定ソースを使用しています。
デバッグを有効にするには、/etc/sysconfig/network/configでWICKED_DEBUG_PARAMを設定します(これは将来変更される場合があります)。次に例を示します。
WICKED_DEBUG_PARAM="--debug most"
クライアントユーティリティを使用して、すべてのインタフェース、またはifnameで指定したインタフェースに関するインタフェース情報を表示します。
wicked show all wicked show ifname
XML出力の場合は、以下を実行します。
wicked show-xml all wicked show-xml ifname
1つのインタフェースを起動します。
wicked ifup eth0 wicked ifup wlan0 ...
設定ソースが指定されていないため、wickedクライアントは、/etc/wicked/client.xmlで定義されている設定のデフォルトソースを確認します。
firmware: iBFT (iSCSI Boot Firmware Table)
compat: ifcfgファイル—互換性のため実装
wicked:PATH (デフォルト: /etc/wicked/ifconfig)に保存されるPATHネイティブのwicked XML設定フォーマット
特定のインタフェースに対してwickedがこれらのソースから取得した設定がすべて適用されます。重要度の順序は、firmware、compat、wickedの順です。これは将来、ifcfgの互換性要件が緩和されれば変更される可能性があります。
続いて、サンプルVLANインタフェースなど、関心の高いものを起動します。
wicked ifup --ifconfig ./samples/wicked/vlan-static.xml eth0.42
これは、「eth0.42」という名前のVLANインタフェースを起動します。VLANタグ42と数個のIPアドレスが静的に割り当てられています。動作しているかどうかを確認するため、以下を実行してみます。
ip addr show ip route show
上のコマンドは、指定されたファイルからすべてのインタフェースの記述を取得し、「eth0.42」というインタフェースを起動します。このファイルに含まれているインタフェース1つだけであるため、インタフェース名の代わりにallを使用することもできます。名前が示すように、これは、このファイルに一覧にされているすべてのインタフェースを起動します。
単一のインタフェースを起動するため、クライアントはXML要素から、複数のサーバメソッドと引数を実行し、目的のインタフェースの状態を「up」に切り替えるようサーバに命令します。この操作により、まだVLANインタフェースがない場合は、ただちに作成されます。
同様の方法でインタフェースを停止します。
wicked ifdown eth0.42
インタフェースを停止して削除するには、以下を使用します。
wicked ifdown --delete --ifconfig ./samples/wicked/vlan-static.xml eth0.42
詳細については、wickedのマニュアルページを参照してください。
ボンドおよびブリッジの場合、1つのファイルにデバイストポロジ全体を定義し、それをまとめて起動します。これは、特にボンドにとって重要です。ボンドの場合、最初にスレーブデバイスを作成する必要があるためです(スレーブデバイスがVLANなどの仮想デバイスである場合)。
このようなシナリオの場合、1つのファイルでデバイストポロジを定義し、wickedを呼び出して、設定全体を起動します。例については、パッケージのマニュアル(/usr/share/doc/packages/wicked)のsamples/wicked/bridge-static.xmlを参照してください。この設定は、2つのVLANインタフェースから構築されたEthenetブリッジを定義します。これを起動するには、次を呼び出します。
wicked ifup --ifconfig ./samples/wicked/bridge-static.xml all
クライアントは適切な順序でデバイスを起動します。最初に2つのVLANインタフェースを作成してからブリッジを作成し、最後にVLANインタフェースをポートとしてブリッジに追加します。
wickedでは、再設定のためにインタフェースを実際に停止する必要はありません(カーネルによって要求される場合を除く)。たとえば、静的に設定されたネットワークインタフェースに別のIPアドレスまたはルートを追加するには、インタフェース定義にIPアドレスを追加して、もう一度「ifup」操作を実行します。サーバは変更された設定のみを更新しようとします。これは、リンクレベルのオプション(デバイスMTUやMACアドレスなど)に加え、静的設定からDHCPに切り替える場合などはネットワークレベルの設定(アドレス、ルート、アドレス設定モードなど)にも適用されます。
もちろん、ブリッジやボンドなど複数の実デバイスを組み合わせる仮想インタフェースでは、処理は複雑になります。ボンドデバイスの場合、デバイスの稼働中に特定のパラメータを変更することはできません。これを行うと、エラーが発生します。
ただし、この状態でも、ボンドまたはブリッジの子デバイスを追加または削除したり、ボンドのプライマリインタフェースを選択したりする操作は有効です。
wickedは、シェルスクリプトによって拡張可能な設計になっています。これらの拡張機能は、config.xmlファイルで定義できます。
現状では、複数の異なるクラスの拡張機能がサポートされています。
リンク設定: クライアントによって提供される環境設定に従ってデバイスのリンク層を設定し、それを再び終了するスクリプトです。
アドレス設定: デバイスのアドレス設定を管理するスクリプトです。通常、アドレス設定およびDHCPは、wicked自体で管理されますが、拡張機能によって実装できます。
ファイアウォール拡張機能: これらのスクリプトでファイアウォールルールを適用できます。
通常、拡張機能には、開始および終了コマンド、オプションの「pid file」、およびスクリプトに渡される一連の環境変数があります。「」
これがどのように機能するかを説明するために、etc/server.xmlで定義されているファイアウォール拡張機能を取り上げます。
<dbus-service interface="org.opensuse.Network.Firewall"> <action name="firewallUp" command="/etc/wicked/extensions/firewall up"/> <action name="firewallDown" command="/etc/wicked/extensions/firewall down"/> <!-- default environment for all calls to this extension script --> <putenv name="WICKED_OBJECT_PATH" value="$object-path"/> <putenv name="WICKED_INTERFACE_NAME" value="$property:name"/> <putenv name="WICKED_INTERFACE_INDEX" value="$property:index"/> </dbus-service>
拡張機能は、dbusサービスインタフェースにアタッチされ、このインタフェースのアクションに対して実行するコマンドを定義します。さらに、宣言によって、アクションに渡される環境変数を定義および初期化できます。
スクリプトを使用して環境設定ファイルの処理を拡張することもできます。たとえば、DNSのリースの更新は、最終的には、server.xmlで動作が設定されたextensions/resolverスクリプトで処理されます。
<system-updater name="resolver"> <action name="backup" command="/etc/wicked/extensions/resolver backup"/> <action name="restore" command="/etc/wicked/extensions/resolver restore"/> <action name="install" command="/etc/wicked/extensions/resolver install"/> <action name="remove" command="/etc/wicked/extensions/resolver remove"/> </system-updater>
更新内容がwickeddに届くと、システムアップデータルーチンがリースを解析して、適切なコマンド(backup、installなど)をリゾルバスクリプトで呼び出します。これにより、/sbin/netconfigを使用してDNSを設定するか、フォールバックとして手動で/etc/resolv.confを作成してDNSを設定します。
ここでは、ネットワークの環境設定ファイルの概要を紹介し、その目的と使用される形式について説明します。
/etc/sysconfig/network/ifcfg-* #これらのファイルには、ネットワークインタフェースの従来の環境設定が含まれています。
wickedおよびifcfg-*ファイル
wickedは、--ifconfigオプションの使用時にcompat:プレフィックスで互換性モードを指定した場合に、これらのファイルを読み込みます。/etc/wicked/client.xmlにあるSUSE Linux Enterprise Server 12のデフォルト設定に応じて、wickedは、/etc/wicked/ifconfig内のXML設定ファイルの前にこれらのファイルを読み込みます。
ifcfg-*ファイルには、起動モードやIPアドレスなどの情報が含まれています。指定可能なパラメータについては、ifupのマニュアルページを参照してください。また、一般的設定を1つのインタフェースだけに使用する場合は、dhcpおよびwirelessファイルのほとんどの変数をifcfg-*ファイルで使用できます。ただし、/etc/sysconfig/network/configの変数の大半はグローバル変数であり、ifcfgファイル内で上書きすることはできません。たとえば、NETWORKMANAGERやNETCONFIG_*は、グローバル変数です。
macvlanおよびmacvtabインタフェースの設定方法については、ifcfg-macvlanおよびifcfg-macvtapのマニュアルページを参照してください。たとえば、macvlanインタフェースでは、ifcfg-macvlan0を次のように設定します。
STARTMODE='auto' MACVLAN_DEVICE='eth0' #MACVLAN_MODE='vepa' #LLADDR=02:03:04:05:06:aa
ifcfg.templateについては、20.6.2.2項 「/etc/sysconfig/network/config、/etc/sysconfig/network/dhcp、および/etc/sysconfig/network/wireless」を参照してください。
/etc/sysconfig/network/config、/etc/sysconfig/network/dhcp、および/etc/sysconfig/network/wireless #
configファイルには、ifup、ifdown、およびifstatusの動作に関する汎用的な設定が記述されています。また、dhcpにはDHCPの設定が、wirelessには無線LANカードの設定が記述されています。3つの環境設定ファイル内の変数にはコメントが付きます。/etc/sysconfig/network/config内の一部の変数は、ifcfg-*ファイルでも使用できます。このファイルでは、高い優先度が設定されます。/etc/sysconfig/network/ifcfg.templateファイルは、インタフェースごとに指定できる変数を一覧表示します。ただし、/etc/sysconfig/network/configの変数の大半はグローバル変数であり、ifcfgファイル内で上書きすることはできません。たとえば、NETWORKMANAGERやNETCONFIG_*は、グローバル変数です。
/etc/sysconfig/network/routesと/etc/sysconfig/network/ifroute-* #
TCP/IPパケットのスタティックルーティングは、/etc/sysconfig/network/routesおよび/etc/sysconfig/network/ifroute-*ファイルによって決定されます。ホストへのルート、ゲートウェイ経由のホストへのルート、およびネットワークへのルートなど、さまざまなシステムタスクが必要とするすべてのスタティックルートは、/etc/sysconfig/network/routesファイルに指定できます。個別のルーティングが必要な各インタフェースに対して、付加環境設定ファイル/etc/sysconfig/network/ifroute-*を定義します。ワイルドカード(*)はインタフェース名で読み替えてください。経路の環境設定ファイルのエントリは次のようになります。
# Destination Gateway Netmask Interface Options
第1列は、経路の宛先です。この列には、ネットワークまたはホストのIPアドレスが入ります。到達可能なネームサーバの場合は、完全に修飾されたネットワークまたはホスト名が入ります。ネットワークは、IPv4ルートでは10.10.0.0/16、IPv6ルートではfc00::/7のように、CIDR表記(関連付けられたルーティングプレフィックス長付きのアドレス)で記述する必要があります。キーワードのdefaultは、そのルートがゲートウェイと同じアドレスファミリ内のデフォルトゲートウェイであることを示しています。ゲートウェイのないデバイスの場合は、明示的な宛先0.0.0.0/0または::/0を使用します。
第2列は、デフォルトゲートウェイ、すなわちホストまたはネットワークにアクセスする際に経由するゲートウェイです。
第3列は非推奨になりました。これは、宛先のIPv4ネットマスクを示すために使用されていました。デフォルトルートであるIPv6ルートの場合、または第1列でプレフィックス長を使用する場合(CIDR表記)は、ここにダッシュ記号(-)を入力します。
第4列は、インタフェースの名前です。ダッシュ記号(-)を使用して空のままにすると、/etc/sysconfig/network/routesで意図しない動作を引き起こす場合があります。詳細については、routesのマニュアルページを参照してください。
第5列(オプション)では、特殊なオプションを指定することができます。詳細については、routesのマニュアルページを参照してください。
# --- IPv4 routes in CIDR prefix notation: # Destination [Gateway] - Interface 127.0.0.0/8 - - lo 204.127.235.0/24 - - eth0 default 204.127.235.41 - eth0 207.68.156.51/32 207.68.145.45 - eth1 192.168.0.0/16 207.68.156.51 - eth1 # --- IPv4 routes in deprecated netmask notation" # Destination [Dummy/Gateway] Netmask Interface # 127.0.0.0 0.0.0.0 255.255.255.0 lo 204.127.235.0 0.0.0.0 255.255.255.0 eth0 default 204.127.235.41 0.0.0.0 eth0 207.68.156.51 207.68.145.45 255.255.255.255 eth1 192.168.0.0 207.68.156.51 255.255.0.0 eth1 # --- IPv6 routes are always using CIDR notation: # Destination [Gateway] - Interface 2001:DB8:100::/64 - - eth0 2001:DB8:100::/32 fe80::216:3eff:fe6d:c042 - eth0
/etc/resolv.conf #
/etc/resolv.confには、ホストが属するドメインが指定されています(キーワードsearch)。searchオプションでは、最大256文字で最大6つのドメインを指定できます。完全修飾でない名前を解決する場合は、searchの各エントリを付加して完全修飾名の生成が試みられます。nameserverオプションでは、1行に1つずつ、最大3つのネームサーバを指定できます。コメントの先頭には、ハッシュマークまたはセミコロン記号(#または;)を付加します。例については、例20.6「/etc/resolv.conf」を参照してください。
ただし、/etc/resolv.confは、手動では編集しないでください。このファイルは、netconfigスクリプトで生成されます。YaSTを使用せずに静的DNS設定を定義するには、/etc/sysconfig/network/configファイルの該当する変数を手動で編集します。
NETCONFIG_DNS_STATIC_SEARCHLIST
ホスト名の検索に使用されるDNSドメイン名のリスト
NETCONFIG_DNS_STATIC_SERVERS
ホスト名の検索に使用されるネームサーバのIPアドレスのリスト
NETCONFIG_DNS_FORWARDER
設定する必要のあるDNSフォワーダの名前。たとえば、bindまたはresolver
NETCONFIG_DNS_RESOLVER_OPTIONS
/etc/resolv.confに記述される任意のオプション。例:
debug attempts:1 timeout:10
詳細については、resolv.confのマニュアルページを参照してください。
NETCONFIG_DNS_RESOLVER_SORTLIST
最大10項目のリスト。例:
130.155.160.0/255.255.240.0 130.155.0.0
詳細については、resolv.confのマニュアルページを参照してください。
netconfigでDNS環境設定を無効にするには、NETCONFIG_DNS_POLICY=''を設定します。netconfigの詳細については、netconfig(8)のマニュアルページ(man 8 netconfig)を参照してください。
/etc/resolv.conf ## Our domain search example.com # # We use dns.example.com (192.168.1.116) as nameserver nameserver 192.168.1.116
/sbin/netconfig #
netconfigは、追加のネットワーク環境設定を管理するモジュール式ツールです。このツールは、事前定義されたポリシーに従って、 DHCPまたはPPPなどの自動設定メカニズムにより提供される設定と、静的に定義された設定をマージします。要求された変更は、netconfigモジュールの呼び出しによって適用されます。このモジュールは、環境設定ファイルの変更と、サービスまたは同様のアクションの再起動を行います。
netconfigは、3つの主要なアクションを認識します。netconfig modifyコマンドとnetconfig removeコマンドは、 DHCPやPPPなどのデーモンによって使用され、netconfigの設定値を提供したり、削除します。ユーザが使用できるのは、netconfig updateコマンドだけです。
変更
netconfig modifyコマンドは、現在のインタフェースとサービス固有の動的設定を変更し、ネットワーク設定を更新します。netconfigは、標準入力からか、または--lease-file filenameオプションで指定されたファイルから設定を読み込み、システムのリブートまたは次の変更/削除アクションまで、それらの設定を内部的に保存します。同じインタフェースとサービスの組み合わせに関する既存設定は、上書きされます。インタフェースは、-i interface_nameパラメータで指定されます。サービスは、-s service_nameパラメータで指定されます。
削除
netconfig removeコマンドは、特定のインタフェースとコマンドの組み合わせに対する変更アクションによる動的設定を削除し、ネットワーク設定を更新します。インタフェースは、-i interface_nameパラメータで指定されます。サービスは、-s service_nameパラメータで指定されます。
update
netconfig updateコマンドは、現在の設定で、ネットワーク設定を更新します。これは、ポリシーや静的環境設定が変更された場合に便利です。指定したサービスのみ(dns、nis、またはntp)を更新するには、-m module_typeパラメータを使用します。
netconfigポリシーおよび静的環境設定は、手動またはYaSTで、/etc/sysconfig/network/configファイル内で定義します。DHCPやPPPなどの自動設定ツールで提供された動的設定は、netconfig modifyおよびnetconfig removeのアクションで、これらのツールによって直接配信されます。NetworkManagerが有効な場合、netconfig (ポリシーモードがauto)は、NetworkManagerの設定のみを使用し、従来のifup方式で設定された他のインタフェースからの設定を無視します。NetworkManagerが設定を提供しない場合は、静的設定がフォールバックとして使用されます。NetworkManagerとwicked方式の混合使用はサポートされません。
netconfigの詳細については、man 8 netconfigを参照してください。
/etc/hosts #
このファイル(例20.7「/etc/hosts」を参照)では、IPアドレスがホスト名に割り当てられています。ネームサーバが実装されていない場合は、IP接続をセットアップするすべてのホストをここに一覧にする必要があります。ファイルには、各ホストについて1行を入力し、IPアドレス、完全修飾ホスト名、およびホスト名を指定します。IPアドレスは、行頭に指定し、各エントリはブランクとタブで区切ります。コメントは常に#記号の後に記入します。
/etc/hosts #127.0.0.1 localhost 192.168.2.100 jupiter.example.com jupiter 192.168.2.101 venus.example.com venus
/etc/networks #
このファイルには、ネットワーク名とネットワークアドレスの対応が記述されています。形式は、ネットワーク名をアドレスの前に指定すること以外は、hostsファイルと同様です。詳細については、例20.8「/etc/networks」を参照してください。
/etc/networks #loopback 127.0.0.0 localnet 192.168.0.0
/etc/host.conf #
このファイルは、名前解決(resolverライブラリによるホスト名とネットワーク名の変換)を制御します。このファイルは、libc4またはlibc5にリンクされているプログラムについてのみ使用されます。最新のglibcプログラムについては、/etc/nsswitch.confの設定を参照してください。パラメータは、その行内で常に独立しています。コメントは#記号の後に記入します。表20.2「/etc/host.confファイルのパラメータ」に、利用可能なパラメータを示します。/etc/host.confの例については、例20.9「/etc/host.conf」を参照してください。
|
order hosts,bind |
名前の解決の際、サービスがアクセスされる順序を指定します。有効な引数は次のとおりです(空白またはカンマで区切ります)。 |
|
hosts: | |
|
bind: ネームサーバにアクセスします。 | |
|
nis: NISを使用します。 | |
|
multi on/off |
|
|
nospoof on spoofalert on/off |
これらのパラメータは、ネームサーバspoofingに影響を与えますが、ネットワークの環境設定にはまったく影響を与えません。 |
|
trim domainname |
ホスト名が解決された後、指定したドメイン名をホスト名から切り離します(ホスト名にドメイン名が含まれている場合)。ローカルドメインにある名前は |
/etc/host.conf ## We have named running order hosts bind # Allow multiple address multi on
/etc/nsswitch.conf #
GNU C Library 2.0を導入すると、Name Service Switch (NSS)も合わせて導入されます。詳細については、nsswitch.conf(5) manページおよび『The GNU C Library Reference Manual』を参照してください。
クエリの順序は、ファイル/etc/nsswitch.confで定義します。nsswitch.confの例については、例20.10「/etc/nsswitch.conf」を参照してください。コメントの先頭には#記号が付きます。この例では、hostsデータベースのエントリによると、要求がDNS経由で/etc/hosts (files)に送信されています。
/etc/nsswitch.conf #passwd: compat group: compat hosts: files dns networks: files dns services: db files protocols: db files rpc: files ethers: files netmasks: files netgroup: files nis publickey: files bootparams: files automount: files nis aliases: files nis shadow: compat
NSSで利用できる「データベース」については、表20.3「/etc/nsswitch.confで利用できるデータベース」を参照してください。 NSSデータベースの環境設定オプションについては、表20.4「NSS 「データベース」の環境設定オプション」を参照してください。
|
|
|
|
|
イーサネットアドレス。 |
|
|
ネットワークとそのサブネットマスクのリスト。サブネットを使用する場合のみ必要です。 |
|
|
|
|
|
|
|
|
アクセス許可を制御するための、ネットワーク内にある有効なホストとユーザのリスト。 |
|
|
ネットワーク名とアドレス。 |
|
|
NFSとNIS+によって使用されるSecure_RPCの公開鍵と秘密鍵。 |
|
|
ユーザパスワード。 |
|
|
ネットワークプロトコル。 |
|
|
リモートプロシージャコール名とアドレス。 |
|
|
ネットワークサービス。 |
|
|
ユーザのシャドウパスワード。 |
|
|
直接アクセスファイル。たとえば |
|
|
データベース経由のアクセス。 |
|
|
NIS。Chapter 3, Using NIS, Security Guideを参照。 |
|
|
|
|
|
|
/etc/nscd.conf #
このファイルは、nscd (name service cache daemon)の環境設定に使用します。nscd(8)およびnscd.conf(5)マニュアルページを参照してください。デフォルトでは、nscdによってpasswdとgroupsのシステムエントリがキャッシュされます。キャッシュが行われないと名前やグループにアクセスするたびにネットワーク接続が必要になるため、このキャッシュ処理は NIS や LDAP といったディレクトリサービスのパフォーマンスに関して重要な意味を持ちます。hostsはデフォルトではキャッシュされません。これは、nscd でホストをキャッシュすると、ローカルシステムで正引き参照と逆引き参照のルックアップチェックを信頼できなくなるからです。したがって、nscdを使用して名前をキャッシュするのではなく、キャッシュDNSサーバをセットアップします。
passwdオプションのキャッシュを有効にすると、新しく追加したローカルユーザが認識されるまで、通常、約15秒かかります。この待ち時間を短縮するには、次のコマンドを使用してnscdを再起動します。
systemctl restart nscd.service
/etc/HOSTNAME #
/etc/HOSTNAMEには、完全修飾ホスト名(FQHN)が含まれています。完全修飾ホスト名は、ドメイン名が付加されたホスト名です。このファイルに指定できるのは、ホスト名が設定されている1行のみです。このファイルはマシンのブート時に読み込まれます。
設定内容を設定ファイルに書き込む前に、それをテストすることができます。テスト環境を設定するには、ipコマンドを使用します。接続をテストするには、pingコマンドを使用します。
ipコマンドは、ネットワーク設定を直接変更します。ただし、変更内容は環境設定ファイルに保存されません。正しい環境設定ファイルに変更内容を保存しない限り、変更したネットワーク設定は再起動時に失われてしまいます。
ifconfigおよびrouteは廃止
ifconfigおよびrouteツールは廃止されました。代わりに、ipを使用してください。たとえば、ifconfigでは、インタフェース名は9文字に制限されます。
ipによるネットワークインタフェースの設定 #
ip は、ネットワークデバイス、ルーティング、ポリシールーティング、およびトンネルの表示と設定を行うツールです。
ipは非常に複雑なツールです。一般的には、ipoptionsobjectcommandの形式で指定します。objectの部分には、次のオブジェクトを指定することができます。
ネットワークデバイスを表します。
デバイスのIPアドレスを表します。
このオブジェクトは、ARPまたはNDISCのキャッシュエントリを表します。
ルーティングテーブルエントリを表します。
ルーティングポリシーデータベース中のルールを表します。
マルチキャストアドレスを表します。
マルチキャストルーティングキャッシュエントリを表します。
IPトンネルを表します。
commandを指定しないと、デフォルトのコマンド(通常はlist)が使用されます。
デバイスの状態を変更するには、ip link setdevice_name commandコマンドを使用します。たとえば、デバイスeth0を無効にするには、ip link seteth0 downを実行します。このデバイスを再び有効にする場合は、ip link seteth0 upを実行します。
デバイスを有効にしたら、そのデバイスを設定することができます。デバイスのIPアドレスを使用する場合は、ip addr addip_address + dev device_nameを使用します。たとえば、インタフェースeth0にアドレス「 192.168.12.154/30」を設定し、標準のブロードキャスト(brdオプション)を使用する場合は、「ip addradd 192.168.12.154/30 brd + dev eth0」と入力します。
接続を実際に利用可能にするには、デフォルトゲートウェイの設定も必要です。システムのゲートウェイを設定するには、「ip route add gateway_ip_address」を入力します。あるIPアドレスを別のIPアドレスに変換するには、nat: ip route add nat ip_address via other_ip_addressを使用します。
すべてのデバイスを表示する場合は、ip link lsを使用します。動作しているインタフェースだけを表示する場合は、ip link ls upを使用します。デバイスのインタフェース統計情報を印刷する場合は、「ip -s link lsdevice_name」と入力します。デバイスのアドレスを表示する場合は、「ip addr」と入力します。ip addrの出力には、デバイスのMACアドレスに関する情報も表示されます。すべてのルートを表示する場合は、ip route showを使用します。
ipの使用方法の詳細については、iphelpを入力するか、またはip(8)マニュアルページを参照してください。helpオプションは、すべてのipサブコマンドに関して利用できます。たとえば、ip addrのヘルプが必要な場合は、ipaddr helpと入力します。ipマニュアルについては、 /usr/share/doc/packages/iproute2/ip-cref.pdfを参照してください。
pingコマンドは、TCP/IP接続が正常に動作しているかどうかを調べるための、標準ツールです。pingコマンドはICMPプロトコルを使って、小さなデータパケットECHO_REQUESTデータグラムを、宛先ホストに送信し、即時応答を要求します。これが機能した場合、pingはそのことを示すメッセージを表示します。これは、ネットワークリンクが機能していることを示します。
pingは、2台のコンピュータ間の接続機能をテストするだけでなく、接続品質に関する基本的な情報も提供します。ping例20.11「pingコマンドの出力」コマンドの実行結果例は、を参照してください。最後から2番目の行に、転送パケット数、失われたパケット数、およびpingの実行時間の合計が記載されています。
pingの宛先には、ホスト名またはIPアドレスを指定することができます。たとえば、ping example.comやping 192.168.3.100のように指定します。pingコマンドを実行すると、Ctrl–Cを押すまでの間、継続的にパケットが送信されます。
接続されているかどうかを確認するだけで良い場合は、-cオプションを使って送信するパケット数を指定することができます。たとえば、PINGを3パケットに制限する場合は、「ping -c 3 example.com」を入力します。
ping -c 3 example.com PING example.com (192.168.3.100) 56(84) bytes of data. 64 bytes from example.com (192.168.3.100): icmp_seq=1 ttl=49 time=188 ms 64 bytes from example.com (192.168.3.100): icmp_seq=2 ttl=49 time=184 ms 64 bytes from example.com (192.168.3.100): icmp_seq=3 ttl=49 time=183 ms --- example.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2007ms rtt min/avg/max/mdev = 183.417/185.447/188.259/2.052 ms
デフォルトでは、pingは1秒ごとにパケットを送信します。間隔を変更するには、 -i オプションを指定します。たとえば、pingの間隔を10秒に増やす場合は、「ping -i 10 example.com」と入力します。
複数のネットワークデバイスを持つシステムの場合、特定のインタフェースアドレスを指定してpingを実行することができます。その場合は、-Iオプションを、選択したデバイスの名前とともに使用します。たとえば、ping -I wlan1 example.comと指定します。
pingのオプションと使用方法の詳細については、「ping-h」と入力するか、またはping(8)のマニュアルページを参照してください。
IPv6の場合は、ping6コマンドを使用します。ただし、リンクローカルアドレスをpingするには、-Iでインタフェースを指定する必要があります。アドレスがeth1を介して到達可能な場合は、次のコマンドが有効です。
ping6 -I eth1 fe80::117:21ff:feda:a425
上の環境設定ファイルに加え、マシンのブート時にネットワークサービスをロードするさまざまなスクリプトも用意されています。これらは、システムがmulti-user.targetのいずれかに切り替わったときに起動します。これらのユニットファイルの一部は、ネットワークプログラム用のユニットファイルと起動スクリプトで説明されています。systemdの詳細については、第11章 systemdデーモンを参照してください。systemdターゲットの詳細については、systemd.specialのマニュアルページ(man systemd.special)を参照してください。
network.target
network.targetは、ネットワークのsystemdターゲットですが、その意味はシステム管理者が指定した設定により異なります。
詳細については、http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/を参照してください。
multi-user.target
multi-user.targetは、必要なすべてのネットワークサービスを持つ、マルチユーザシステムのsystemdターゲットです。
xinetd.service
xinetdを開始します。xinetdを使用すると、サーバサービスがシステム上で利用できるようになります。たとえば、FTP接続の開始時に必ずvsftpdを起動することができます。
rpcbind.service
RPCプログラム番号をユニバーサルアドレスに変換するrpcbindユーティリティを起動します。NFSサーバなどのRPCサービスで必要です。
ypserv.service
NISサーバを起動します。
ypbind.service
NISクライアントを起動します。
/etc/init.d/nfsserver
NFSサーバを起動します。
/etc/init.d/postfix
postfixプロセスを制御します。
システムによって、通常のEthernetデバイスの規格のデータセキュリティ/可用性の要件を超えるネットワーク接続の実装が望ましいことがあります。その場合、数台のEthernetデバイスを集めて1つのボンディングデバイスを設定できます。
ボンディングデバイスの設定には、ボンディングモジュールオプションを使用します。ボンディングデバイスの振る舞いは、主にボンディングデバイスのモードによって影響されます。デフォルトの動作は、mode=active-backupであり、アクティブなスレーブに障害が発生すると、別のスレーブデバイスがアクティブになります。
ボンディングデバイスの使用が有用なのは、利用可能なネットワークカードが複数あるマシンの場合のみです。大半の設定では、Dom0でのみボンディング設定を使用する必要があることになります。VMゲストシステムに複数のネットワークカードが割り当てられている場合のみ、VMゲストでのボンド設定が役立つことがあります。
ボンディングデバイスを設定するには、次の手順に従います。
› › の順に選択します。
を使用し、をに変更します。で続行します。
IPアドレスをボンディングデバイスに割り当てる方法を選択します。3つの方法から選択できます。
IPアドレスなし
可変IPアドレス(DHCPまたはZeroconf)
固定IPアドレス
ご使用の環境に適合する方法を使用します。
タブで該当するチェックボックスをオンにして、ボンドに含めるEthernetデバイスを選択します。
を編集します。設定には次のモードを使用できます。
balance-rr
active-backup
balance-xor
ブロードキャスト
802.3ad
802.3adは、標準化されたLACP「IEEE 802.3adダイナミックリンク集約」モードです。
balance-tlb
balance-alb
パラメータmiimon=100がに追加されていることを確認します。 このパラメータがないと、データの整合性が定期的にチェックされません。
をクリックし、でYaSTを終了して、デバイスを作成します。
すべてのモードと他の多数のオプションの詳細は、「」に記載されています。このドキュメントは、kernel-sourceをインストールすると、/usr/src/linux/Documentation/networking/bonding.txtで読むことができます。
特定のネットワーク環境(高可用性など)では、ボンディングスレーブインタフェースを別のものに置換しなければならないことがあります。ネットワークデバイスで頻繁に障害が発生するなどの理由があります。解決方法として、ボンディングスレーブのホットプラグを設定します。
ボンドは以下のように(man 5 ifcfg-bondingに従って)通常通りに設定されます。たとえば、
ifcfg-bond0
STARTMODE='auto' # or 'onboot'
BOOTPROTO='static'
IPADDR='192.168.0.1/24'
BONDING_MASTER='yes'
BONDING_SLAVE_0='eth0'
BONDING_SLAVE_1='eth1'
BONDING_MODULE_OPTS='mode=active-backup miimon=100'
スレーブはSTARTMODE=hotplugおよびBOOTPROTO=noneで指定されます。
ifcfg-eth0
STARTMODE='hotplug'
BOOTPROTO='none'
ifcfg-eth1
STARTMODE='hotplug'
BOOTPROTO='none'
BOOTPROTO=noneはethtoolオプション(指定した場合)を使用しますが、ifup eth0にはリンクアップを設定しません。これは、スレーブインタフェースがボンドマスターによって制御されるためです。
STARTMODE=hotplugにより、スレーブインタフェースが利用可能になるとすぐに、ボンドに自動的に追加されます。
MACアドレスではなく、バスIDでデバイスを照合するように、/etc/udev/rules.d/70-persistent-net.rulesのudevルールを変更する必要があります(hwinfo --netcardに表示されるudev KERNELSキーワードを「SysFS BusID」とします)。これによって障害のあるハードウェアを置換(同じスロットで、MACが異なるネットワークカードを使用)できるようになり、ボンドがすべてのスレーブのMACアドレスを変更するので混乱を避けられます。
次に例を示します。
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
KERNELS=="0000:00:19.0", ATTR{dev_id}=="0x0", ATTR{type}=="1",
KERNEL=="eth*", NAME="eth0"
ブート時にnetwork.serviceはホットプラグスレーブを待機しませんが、ボンドの準備が整うのを待機します。これには少なくとも1つのスレーブが利用可能であることが必要です。スレーブインタフェースの1つがシステムから削除されると(NICドライバからアンバインド、NICドライバのrmmod、または実際のPCIホットプラグ取り外し)、カーネルによってボンドから自動的に削除されます。システムに新しいカードが追加されると(スロットのハードウェアが置換されると)、udevは、バスベースの永続名規則を使って名前をスレーブ名に変更し、ifupを呼び出します。ifup呼び出しによって、ボンドに自動的に追加されます。