目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Enterprise Serverマニュアル / 管理ガイド / システム / ネットワークの基礎
適用項目 SUSE Linux Enterprise Server 15 SP6

23 ネットワークの基礎

Linuxには、あらゆるタイプのネットワークストラクチャに統合するために必要なネットワークツールと機能が用意されています。ネットワークカードを使用したネットワークアクセスは、YaSTによって設定できます。手動による環境設定も可能です。この章では、基本的メカニズムと関連のネットワーク設定ファイルのみを解説します。

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

RFCは、「Request for Comments」の略です。RFCは、インターネットプロトコルとそれをオペレーティングシステムとそのアプリケーションに実装する手順を定めています。RFC文書ではインターネットプロトコルのセットアップについて説明しています。RFCの詳細については、https://datatracker.ietf.org/を参照してください。

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

TCP(Transmission Control Protocol): 接続指向型の安全なプロトコルです。転送データは、まず、アプリケーションによってデータストリームとして送信され、オペレーティングシステム.によって適切なフォーマットに変換されます。データは、送信当初のデータストリーム形式で、宛先ホストのアプリケーションに着信します。TCPは転送中に損失したデータや順序が正しくないデータがないか、判定します。データの順序が意味を持つ場合は常にTCP/IPが実装されます。

UDP

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

ICMP

ICMP (Internet Control Message Protocol): これはエンドユーザ向けのプロトコルではありませんが、エラーレポートを発行し、TCP/IPデータ転送にかかわるマシンの動作を制御できる特別な制御プロトコルです。またICMPには特別なエコーモードがあります。エコーモードは、pingで使用されています。

IGMP

IGMP (Internet Group Management Protocol): このプロトコルは、IPマルチキャストを実装した場合のマシンの動作を制御します。

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

OSIとTCP
図 23.1: TCP/IPの簡易階層モデル

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

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

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

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

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

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

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

23.1.1 IPアドレス

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

例 23.1: IPアドレスの表記
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)です。

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

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

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

例 23.2: IPアドレスとネットマスクの論理積(AND)
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 (存続期間)に達した場合は破棄されます。

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

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

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

これは、このサブネット上のすべてのホストにアクセスする」と言い換えることができます。このアドレスを生成するには、2進数形式のネットマスクを反転させ、基本ネットワークアドレスと論理和をとります。そのため上記の例では、192.168.0.255になります。このアドレスをホストに割り当てることはできません。

ローカルホスト

アドレス127.0.0.1は、各ホストのループバックデバイスに割り当てられます。このアドレスと、IPv4で定義された完全な127.0.0.0/8ループバックネットワークからのすべてのアドレスで、自分のマシンへの接続を設定できます。IPv6では、ループバックアドレスは1つだけです(::1)。

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

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

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

Domain

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

23.2 IPv6 - 次世代インターネット

重要
重要: IBM Z: IPv6のサポート

IPv6は、IBM ZハードウェアのCTCおよびIUCVネットワーク接続ではサポートされていません。

ワールドワイドウェブ(WWW)の出現により、ここ15年間でTCP/IP経由で通信を行うコンピュータの数が増大し、インターネットは爆発的に拡大しました。CERN (https://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がもたらした進歩と恩恵について説明し、古いプロトコルから新しいプロトコルへの移行について述べます。

23.2.1 長所

IPv6プロトコルがもたらした最大かつ最もわかりやすい進歩は、利用可能なアドレス空間の飛躍的な増加です。IPv6アドレスは、従来の32ビットではなく、128ビットで構成されています。これにより、2の128乗、つまり、約3.4×1038個のIPアドレスが得られます。

しかしながら、IPv6アドレスがその先行プロトコルと異なるのはアドレス長だけではありません。IPv6アドレスは内部構造も異なっており、それが属するシステムやネットワークに関してより具体的な情報を有しています。詳細については、23.2.2項 「アドレスのタイプと構造」を参照してください。

次に、IPv6プロトコルの他の利点を紹介します。

自動環境設定機能

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アドレスに変換可能)により、および複数のトンネルを使用することにより、保証されます。23.2.3項 「IPv4とIPv6の共存」を参照してください。また、システムはデュアルスタックIPテクニックによって、両方のプロトコルを同時にサポートできるので、2つのプロトコルバージョン間に相互干渉のない、分離された2つのネットワークスタックが作成されます。

マルチキャストによるサービスの詳細なカスタマイズ

IPv4では、特定のサービス(SMBなど)が、ローカルネットワークのすべてのホストにパケットをブロードキャストする必要があります。IPv6では、サーバが、マルチキャストによってホストのアドレス指定を行う、つまり、複数のホストを1つのグループの部分としてアドレス指定することで、より細かいアプローチが可能になります。これは、ブロードキャストによるすべてのホストのアドレス指定や、ユニキャストによる各ホストの個別のアドレス指定とは異なります。どのホストを対象グループに含めるかは、個々のアプリケーションによって異なります。特定の事前定義のグループには、たとえば、すべてのネームサーバを対象とするグループ(全ネームサーバマルチキャストグループ)やすべてのルータを対象とするグループ(全ルータマルチキャストグループ)があります。

23.2.2 アドレスのタイプと構造

これまでに述べたように、現在の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回しか使用できません。この省略表記の例については、例23.3「IPv6アドレスの例」を参照してください。この3行はすべて同じアドレスを表します。

例 23.3: IPv6アドレスの例
fe80 : 0000 : 0000 : 0000 : 0000 : 10 : 1000 : 1a4
fe80 :    0 :    0 :    0 :    0 : 10 : 1000 : 1a4
fe80 :                           : 10 : 1000 : 1a4

IPv6アドレスの各部の機能は個別に定められています。最初の4バイトはプレフィクスを形成し、アドレスのタイプを指定します。中間部分はアドレスのネットワーク部分ですが、使用しなくてもかまいません。アドレスの最後の4桁はホスト部分です。IPv6でのネットマスクは、アドレスの末尾のスラッシュの後にプレフィクスの長さを指定して定義します。例23.4「プレフィクスの長さを指定したIPv6アドレス」に示すアドレスには、最初の 64ビットがアドレスのネットワーク部分を構成する情報、最後の 64ビットにホスト部分を構成する情報が入っています。言い換えると、64は、ネットマスクに 64個の 1ビット値が左から埋められていることを意味します。IPv4と同様、IPアドレスとネットマスクのANDをとることにより、ホストが同じサブネットにあるかそうでないかを判定します。

例 23.4: プレフィクスの長さを指定したIPv6アドレス
fe80::10:1000:1a4/64

IPv6は、事前に定義された複数タイプのプレフィクスを認識します。その一部を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番目の部分には、パケットの配信先のサブネットに関するルーティング情報が入っています。

インタフェースID

3番目の部分は、パケットの配信先のインタフェースを示します。これを使用して、MACをアドレスの一部に含めることができます。MACは、世界中で重複がない固定の識別子であり、ハードウェアメーカによってデバイスにコーディングされるので、環境設定手順が簡素化されます。実際には、最初の64アドレスビットが統合されてEUI-64トークンを構成します。このうち、最後の48ビットにはMACアドレス、残りの24ビットにはトークンタイプに関する特別な情報が入ります。これにより、PPP (point-to-point protocol)のインタフェースのようにMACを持たないインタフェースにEUI-64トークンを割り当てられるようになります。

IPv6は、この基本構造の上で、以下の5種類のユニキャストアドレスを区別します。

:: (未指定)

このアドレスは、インタフェースが初めて初期化されるとき(すなわち、アドレスが他の方法で判定できないとき)に、ホストがそのソースアドレスとして使用します。

::1 (ループバック)

ループバックデバイスのアドレス。

IPv4互換アドレス

IPv6アドレスが、IPv4アドレスおよび96個の0ビットからなるプレフィクスで作成されます。このタイプの互換アドレスは、IPv4とIPv6のホストが、純粋なIPv4環境で動作している他のホストと通信するためのトンネリング(23.2.3項 「IPv4とIPv6の共存」を参照)として使用されます。

IPv6にマッピングされたIPv4アドレス

このタイプのアドレスは、IPv6表記で純粋なIPv4アドレスを指定します。

ローカルアドレス

ローカルで使用するアドレスのタイプには、以下の2種類があります。

リンクローカル

このタイプのアドレスは、ローカルのサブネットでのみ使用できます。このタイプのソースまたは宛先アドレスを持つパケットをインターネットまたは他のサブネットにルーティングしてはなりません。これらのアドレスは、特別なプレフィクス(fe80::/10)とネットワークカードのインタフェースID、およびゼロバイトからなる中間部分からなります。このタイプのアドレスは、自動環境設定のとき、同じサブネットに属する他のホストと通信するために使用されます。

サイトローカル

このタイプのアドレスを持つパケットは、他のサブネットにはルーティングできますが、それより広いインターネットにはルーティングしてはなりません。つまり、組織自体のネットワークの内側だけで使用するように制限する必要があります。このようなアドレスはイントラネット用に使用され、IPv4によって定義されているプライベートアドレス空間に相当します。これらのアドレスは、特殊なプレフィクス(fec0::/10)とインタフェースID、およびサブネットIDを指定する16ビットのフィールドからなります。ここでも、残りはゼロバイトで埋められます。

IPv6では、各ネットワークインタフェースが複数のIPアドレスを持つことができるという新しい機能が導入されました。これにより、同じインタフェースで複数のネットワークにアクセスできます。これらのいずれかのネットワークを、MACと既知のプレフィクスを使用して自動設定できるので、IPv6が有効になると、(リンクローカルアドレスを使用して)ローカルネットワーク上のすべてのホストに接続できるようになります。IPアドレスにMACが組み込まれているので、使用されるIPアドレスは世界中で唯一のアドレスになります。アドレスの唯一の可変部分は、ホストが現在動作している実際のネットワークによって、サイトトポロジパブリックトポロジを指定する部分になります。

複数のネットワークに接続するホストの場合、少なくとも2つのアドレスが必要です。1つはホームアドレスです。ホームアドレスには、インタフェースIDだけでなく、それが通常属するホームネットワークの識別子(および対応するプレフィクス)も含まれています。ホームアドレスは静的アドレスなので、通常は変更されません。しかし、モバイルホスト宛てのパケットは、それがホームネットワーク内にあるかどうかにかかわらず、すべてそのホストに配信できます。これは、IPv6で導入されたステートレス自動環境設定ネイバーディスカバリのような新しい機能によって実現されました。モバイルホストは、ホームアドレスに加え、ローミング先の外部ネットワークに属するアドレスも取得します。これらはケアオブアドレスと呼ばれます。ホームネットワークには、ホストが対象エリア外をローミングしている間、そのホスト宛てのすべてのパケットを転送する機能があります。IPv6環境において、このタスクは、ホームエージェントによって実行されます。ホームエージェントは、ホームアドレスに届くすべてのパケットを取得してトンネルにリレーします。ケアオブアドレスに届いたパケットは、特別迂回することなく、直接モバイルホストに転送されます。

23.2.3 IPv4とIPv6の共存

インターネットに接続されている全ホストをIPv4からIPv6に移行する作業は、段階的に行われます。両方のプロトコルは今後しばらく共存することになります。両方のプロトコルをデュアルスタックで実装すれば、同じシステム上に共存することが保証されます。しかし、それでもなお、IPv6対応のホストがどのようにしてIPv4ホストと通信するか、また多くがIPv4ベースの現行ネットワークでIPv6パケットをどのように伝送するかなど、解決すべき問題が残ります。最善のソリューションは、トンネリングと互換アドレスです(23.2.2項 「アドレスのタイプと構造」を参照)。

ワールドワイドなIPv4ネットワークと隔離されているIPv6ホストは、トンネルを使って通信を行うことができます。IPv6パケットをIPv4パケットにカプセル化すれば、それをIPv4ネットワークに送ることができます。2つのIPv4ホスト間のこのような接続をトンネルと呼びます。そのためには、パケットにIPv6の宛先アドレス(または対応するプレフィクス)とともに、トンネルの受信側にあるリモートホストのIPv4アドレスも含める必要があります。基本的なトンネルは、ホストの管理者間が合意すれば、手動で設定が可能です。これは、静的トンネリングとも呼ばれます。

ただし、静的トンネルの環境設定とメンテナンスは、あまりに手間がかかるので、多くの場合、日常の通信には向きません。そこで、IPv6は、動的トンネリングを実現する3つの異なる方法を提供しています。

6over4

IPv6パケットが自動的にIPv4パケットとしてカプセル化され、マルチキャスト対応のIPv4ネットワークによって送信されます。IPv6は、ネットワーク全体(インターネット)をLAN (local area network)だと思い込んで動作することになります。これにより、IPv4トンネルの着信側の端を自動的に判定できます。ただし、この方法では、拡張性に欠けることになるだけでなく、IPマルチキャストがインターネット上で広く普及しているとはいえないことが障害にもなります。したがってこの解決方法を採用できるのは、マルチキャストが利用できる小規模な企業内ネットワークだけです。この方式の仕様は、RFC 2529に規定されています。

6to4

この方式では、IPv6アドレスからIPv4アドレスを自動的に生成することで、隔離されたIPv6ホストがIPv4ネットワーク経由で通信できるようにします。しかし、隔離されたIPv6ホストとインターネットの間の通信に関して、多くの問題が報告されています。この方式は、RFC 3056で規定されています。

IPv6トンネルブローカ

この方式は、IPv6ホスト専用のトンネルを提供する特殊なサーバに依存します。この方式は、RFC 3053で規定されています。

23.2.4 IPv6の設定

IPv6を設定するには、通常、個々のワークステーションの設定を変更する必要はありません。IPv6は、デフォルトで有効になっています。インストール済みシステムでIPv6を有効または無効にするには、YaSTのネットワーク設定モジュールを使用します。グローバルオプションタブで、必要に応じてIPv6を有効にするオプションをオン/オフします。次回の再起動時まで一時的に有効にするには、rootとして、「modprobe -i ipv6」と入力します。IPv6モジュールはロード後にアンロードすることはできません。

IPv6の自動環境設定の概念があるため、ネットワークカードには、リンクローカルネットワーク内のアドレスが割り当てられます。通常、ワークステーション上ではルーティングテーブルの管理を実行しません。ワークステーションは、ルータアドバタイズプロトコルを使用して、実装する必要のあるプレフィクスとゲートウェイをネットワークルータに問い合わせます。IPv6ルータは、radvdプログラムを使用して設定できます。このプログラムは、IPv6アドレスに使用するプレフィクスとルータをワークステーションに通知します。または、FRR (https://frrouting.org/を参照)を使用してアドレスとルーティングの両方を自動設定することもできます。

/etc/sysconfig/networkファイルを使用して複数のタイプのトンネルをセットアップする方法の詳細については、ifcfg-tunnelのマニュアルページ(man ifcfg-tunnel)を参照してください。

23.2.5 詳細情報

ここでの概要は、IPv6に関する情報を網羅しているわけではありません。IPv6の詳細については、次のオンラインドキュメントや書籍を参照してください。

https://www.ipv6.org/

IPv6のあらゆる情報にここからリンクできます。

http://www.ipv6day.org

独自のIPv6ネットワークを開始するには、すべての情報が必要です。

http://www.ipv6-to-standard.org/

IPv6対応製品のリスト。

https://www.bieringer.de/linux/IPv6/

Linux IPv6-HOWTOと多くの関連トピックへのリンクが用意されています。

RFC2460

IPv6に関する基本的なRFCです。

IPv6 Essentials

Silvia HagenによるIPv6 Essentials (ISBN 0-596-00125-8)は、このトピックに関するあらゆる重要な面を扱っている本です。

23.3 ネームレゾリューション

DNSはIPアドレスに1つまたは複数のホスト名を割り当てるとともに、ホスト名をIPアドレスに割り当てます。Linuxでは、この変換は通常、bindという特別な種類のソフトウェアによって行われます。また、この変換を行うマシンをネームサーバと呼びます。ホスト名は、その名前構成要素がピリオド(.)で区切られた階層システムを構成しています。しかしながら名前の階層構造は、先に述べたIPアドレスの階層構造とは無関係です。

hostname.domainという形式で書かれた完全な名前、たとえば、jupiter.example.comを考えてみましょう。「完全修飾ドメイン名」(FQDN)と呼ばれるフルネームは、ホスト名とドメイン名(example.com)で構成されます。ドメイン名には最上位ドメイン(TLD) (com)が含まれます。

TLDの割り当ては、これまでの経緯もあって、複雑になっています。従来から、米国では、3文字のドメイン名が使用されています。他の国では、ISOで制定された2文字の国コードが標準です。さらに、2000年には、特定の活動領域を表す、より長いTLDが導入されました(たとえば、.info.name.museum)。

インターネットの初期(1990年より前)には、ファイル/etc/hostsに、インターネットで利用されるすべてのマシン名を記述していました。しかし、インターネットに接続されるコンピュータ数の急激な増加により、この方法はすぐに現実的でなくなりました。このため、ホスト名を広く分散して保存するための分散データベースが開発されました。このデータベースは、ネームサーバと同様、インターネット上のすべてのホストに関するデータが用意されているわけではなく、他のネームサーバに問い合わせを行います。

この階層の最上位には、複数のルートネームサーバがあります。ルートネームサーバは、Network Information Center (NIC)によって運用されており、最上位レベルドメインを管理します。各ルートネームサーバは、特定の最上位ドメインを管理するネームサーバについての情報を持っています。最上位ドメインNICの詳細については、https://www.internic.netを参照してください。

DNSには、ホスト名の解決以外の機能もあります。ネームサーバは、特定のドメイン宛の電子メールをどのホストに転送するかも管理しています(「メールエクスチェンジャ(MX)」)。

マシンがIPアドレスを解決するには、少なくとも1台のネームサーバとそのIPアドレスを知っている必要があります。そのようなネームサーバの指定は、YaSTを使用すれば簡単です。 SUSE Linux Enterprise Serverでのネームサーバアクセスの設定については、23.4.1.4項 「ホスト名とDNSの設定」に記載されています。独自のネームサーバの設定については、第39章 「ドメインネームシステムに説明があります。

whoisプロトコルは、DNSと密接な関係があります。このプログラムを使用すると、特定のドメインの登録者名をすぐに検索できます。

注記
注記: MDNSおよび.localドメイン名

.localトップレベルドメインは、リゾルバではリンクローカルドメインとして処理されます。DNS要求は通常のDNS要求ではなく、マルチキャストDNS要求として送信されます。ネームサーバ設定で.localドメインをすでに使用している場合は、このオプションを/etc/host.confでオフに変更する必要があります。詳細については、host.confのマニュアルページを参照してください。

インストール中にMDNSをオフにするには、nomdns=1をブートパラメータとして使用してください。

マルチキャストDNSの詳細は、http://www.multicastdns.orgを参照してください。

23.4 YaSTによるネットワーク接続の設定

Linuxでは多くのタイプのネットワーク接続がサポートされています。その多くは、異なるデバイス名と、ファイルシステム内の複数の場所に分散した設定ファイルを使用しています。手動によるネットワーク設定のさまざまな面についての詳細は、23.5項 「ネットワーク接続の手動環境設定」を参照してください。

ネットワークケーブルと接続され、リンクアップしているネットワークインタフェースはすべて自動的に設定されます。インストール済みのシステムには、いつでも付加的なハードウェアを設定することができます。以降のセクションでは、SUSE Linux Enterprise Serverがサポートするすべてのタイプのネットワーク接続について、その設定方法を説明します。

ヒント
ヒント: IBM Z: ホットプラグ対応ネットワークカード

IBM Zプラットフォームでは、ホットプラグ可能なネットワークカードがサポートされていますが、DHCPを介したネットワークの自動統合は(PCの場合とは異なり)サポートされていません。検出された後で、インタフェースを手動で設定する必要があります。

23.4.1 YaSTでのネットワークカードの設定

YaSTでEthernetカードまたはWi-Fi/Bluetoothカードを設定するには、システム › ネットワーク設定の順に選択します。モジュールの開始後に、YaSTはネットワーク設定ダイアログを表示します。ダイアログにはグローバルオプション概要ホスト名/DNS、およびルーティングの4つのタブがあります。

グローバルオプションタブでは、ネットワークのセットアップ方法、IPv6、一般的なDHCPオプションの使用など、一般的なネットワークオプションを設定できます。詳細については、23.4.1.1項 「グローバルネットワークオプションの設定」を参照してください。

概要タブには、インストールされたネットワークインタフェースと環境設定に関する情報が含まれています。正しく検出されたネットワークカードの名前が表示されます。このダイアログでは、手動で新しいカードを設定し、それらの設定内容を削除または変更できます。自動検出されなかったカードを手動で設定する場合は、23.4.1.3項 「検出されないネットワークカードの設定」を参照してください。すでに設定済みのカードの設定を変更する場合については、23.4.1.2項 「ネットワークカードの設定の変更」を参照してください。

ホスト名/DNSタブでは、マシンのホスト名を設定し、使用サーバに名前を付けることができます。詳細については、23.4.1.4項 「ホスト名とDNSの設定」を参照してください。

ルーティングタブは、ルーティングの設定で使用します。詳細については、23.4.1.5項 「ルーティングの設定」を参照してください。

ネットワーク設定の実行
図 23.3: ネットワーク設定の実行

23.4.1.1 グローバルネットワークオプションの設定

YaSTのネットワーク設定モジュールのグローバルオプションタブを使用して、NetworkManager、IPv6およびDHCPのクライアントオプションの使用など、重要なグローバルネットワークオプションを設定できます。この設定は、すべてのネットワークインタフェースに適用されます。

注記
注記: Workstation ExtensionでのNetworkManagerの提供

NetworkManagerは現在、SUSE Linux Enterprise Workstation Extensionによって提供されています。NetworkManagerをインストールするには、Workstation Extensionリポジトリを有効にして、NetworkManagerパッケージを選択します。

ネットワークのセットアップ方法では、ネットワーク接続を管理する方法を選択します。NetworkManagerデスクトップアプレットですべてのインタフェースの接続を管理する場合は、NetworkManagerサービスを選択します。NetworkManagerは、複数の有線ネットワークおよび無線ネットワーク間の切り替えに適しています。デスクトップ環境を実行しない場合、またはコンピュータがXenサーバ(仮想システム)であるか、ネットワーク内でDHCPやDNSなどのネットワークサービスを提供する場合は、Wickedサービスの方法を使用します。NetworkManagerを使用する場合は、nm-appletを使用して、ネットワークオプションを設定する必要があります。ネットワーク設定モジュールのタブである概要ホスト名/DNS、およびルーティングは無効になります。NetworkManagerの詳細については、SUSE Linux Enterprise Desktopのマニュアルを参照してください。

IPv6プロトコル設定で、IPv6プロトコルを使用するかどうかを選択します。IPv4とともにIPv6を使用できます。デフォルトでは、IPv6は有効です。ただし、IPv6プロトコルを使用しないネットワークでは、IPv6プロトコルを無効にした方が応答時間がより短くなる場合があります。IPv6を無効にするには、IPv6を有効にするを無効にします。IPv6が無効な場合、カーネルはIPv6モジュールを自動的にロードしません。この設定は、再起動後に適用されます。

DHCPクライアントオプションでは、DHCPクライアントのオプションを設定します。DHCPクライアントIDは、単一ネットワーク上の各DHCPクライアントで異なる必要があります。空白のままにした場合は、デフォルトでネットワークインタフェースのハードウェアアドレスになります。ただし、同じネットワークインタフェース、したがって同じハードウェアアドレスを使用して複数の仮想マシンを実行している場合は、ここで自由形式の固有識別子を指定します。

送信するホスト名では、DHCPクライアントがDHCPサーバにメッセージを送信するときに、ホスト名オプションフィールドで使用される文字列を指定します。一部のDHCPサーバでは、このホスト名(ダイナミックDNS)に応じて、ネームサーバゾーン(順レコードおよび逆レコード)を更新します。また一部のDHCPサーバでは、クライアントからのDHCPメッセージで、送信するホスト名オプションフィールドに特定の文字列が含まれていることが必要です。現在のホスト名(/etc/HOSTNAMEで定義されたホスト名)を送信する場合は、AUTOのままにします。ホスト名を送信しない場合は、このオプションフィールドを空のままにします。

DHCPからの情報に従ったデフォルトのルートを変更しない場合は、DHCPで既定のルートを変更するをオフにします。

23.4.1.2 ネットワークカードの設定の変更

ネットワークカードの設定を変更するには、YaSTのネットワーク設定 › 概要で検出されたカードのリストから目的のカードを選択し、編集をクリックします。ネットワークカードの設定ダイアログが表示されます。このダイアログの一般アドレス、およびハードウェアタブを使用してカードの設定を変更します。

23.4.1.2.1 IPアドレスの設定

Network Card Setupダイアログのアドレスタブで、ネットワークカードのIPアドレス、またはそのIPアドレスの決定方法を設定できます。IPv4およびIPv6の両アドレスがサポートされます。ネットワークカードは、IPアドレスなし(ボンドデバイスで有用)の場合や、静的に割り当てられたIPアドレス(IPv4またはIPv6)、あるいはDHCPまたはZeroconfのいずれかまたは両方を経由して割り当てられる動的アドレスを持つ場合もあります。

Dynamic Addressを使用する場合は、DHCP Version 4 Only(IPv4の場合)、DHCP Version 6 Only(IPv6の場合)、またはDHCP Both Version 4 and 6のいずれを使用するかを選択します。

可能であれば、インストール時に利用可能なリンクを持つ最初のネットワークカードがDHCPによる自動アドレス設定を使用するように自動的に設定されます。

注記
注記: IBM ZとDHCP

IBM Zプラットフォームでは、DHCPベースのアドレス設定はMACアドレスを持つネットワークカードの場合にのみサポートされます。これに該当するのは、OSAカードおよびOSA Expressカードだけです。

DSL回線を使用していてISP(Internet Service Provider)からスタティックIPが割り当てられていない場合も、DHCPを使用する必要があります。DHCPを使用することを選択する場合は、YaSTネットワークカード設定モジュールのネットワーク設定ダイアログにあるグローバルオプションタブのDHCPクライアントオプションで詳細を設定します。さまざまなホストが同じインタフェースを介して通信するようにバーチャルホストがセットアップされている場合は、各ホストの識別にDHCPクライアントIDが必要になります。

DHCPは、クライアント設定には適していますが、サーバ設定には適していません。静的なIPアドレスを設定するには、以下の手順に従ってください。

  1. YaSTネットワークカード設定モジュールの概要タブの検出されたカードのリストから目的のカードを選択し、編集をクリックします。

  2. アドレスタブで、Statically Assigned IP Addressを選択します。

  3. IPアドレスを入力します。IPv4およびIPv6の両アドレスを使用できます。サブネットマスクにネットワークマスクを入力します。IPv6アドレスが使用されている場合は、フォーマット/64のプレフィクス長に対するサブネットマスクを使用します。

    オプションで、このアドレスの完全修飾ホスト名を入力できます。このホスト名は、/etc/hosts設定ファイルに書き込まれます。

  4. 次へをクリックします。

  5. 環境設定を有効にするには、OKをクリックします。

注記
注記: インタフェースのアクティブ化とリンク検出

ネットワークインタフェースのアクティブ化中に、wickedはキャリアを確認して、リンクが検出された場合にのみIP設定を適用します。リンク状態に関係なく設定を適用する必要がある場合(たとえば、特定のアドレスをリスンしているサービスをテストする場合など)、変数LINK_REQUIRED=no/etc/sysconfig/network/ifcfgにあるインタフェースの設定ファイルに追加することで、リンク検出をスキップできます。

また、変数LINK_READY_WAIT=5を使用して、リンクを待機するタイムアウトを秒単位で指定できます。

設定ファイルifcfg-*の詳細については、23.5.2.5項 「/etc/sysconfig/network/ifcfg-*およびman 5 ifcfgを参照してください。

静的アドレスを使用する場合、ネームサーバとデフォルトゲートウェイは、自動的には設定されません。ネームサーバを設定するには、23.4.1.4項 「ホスト名とDNSの設定」に従って手順を進めます。ゲートウェイを設定するには、23.4.1.5項 「ルーティングの設定」に従って手順を進めます。

23.4.1.2.2 複数のアドレスの設定

単一のネットワークデバイスは、エイリアスまたはラベルと呼ばれる複数のIPアドレスを持つことができます。

注記
注記: エイリアスは互換機能

エイリアスまたはラベルはIPv4でのみ機能します。iproute2ネットワークインタフェースを使用すると、1つ以上のアドレスを持つことができます。

YaSTを使用してネットワークカードの追加のアドレスを設定するには、次の手順に従います。

  1. YaSTのネットワーク設定モジュールの概要タブの検出されたカードのリストから目的のカードを選択し、編集をクリックします。

  2. アドレス › 追加アドレスタブで、追加をクリックします。

  3. IPアドレスラベルIPアドレス、およびネットマスクに適切な値を入力します。IPエイリアスは/32ネットマスクを使用して追加する必要があります。エイリアス名にはインタフェース名を含めないでください。

  4. 設定内容を有効にするために、設定を確認します。

23.4.1.2.3 デバイス名およびudevルールの変更

ネットワークカードのデバイス名が使用されている場合、ネットワークカードのデバイス名を変更できます。また、ハードウェア(MAC)アドレスまたはバスIDを介してudevによりネットワークカードを識別するかどうかを選択できます。大型のサーバでは、カードのホットスワッピングを容易にするために後者のオプションが適しています。YaSTを使ってこうしたオプションを設定するには、次の手順に従います。

  1. YaSTのネットワーク設定モジュールの概要タブの検出されたカードのリストから目的のカードを選択し、編集をクリックします。

  2. 一般タブを開きます。現在のデバイス名がUdevルールに表示されます。変更をクリックします。

  3. udevでMACアドレスまたはバスIDによりカードを識別するかどうかを選択します。カードの現在のMACアドレスおよびバスIDがダイアログに表示されます。

  4. デバイス名を変更するには、Change Device Nameオプションをオンにし、名前を編集します。

  5. 設定内容を有効にするために、設定を確認します。

23.4.1.2.4 ネットワークカードカーネルドライバの変更

一部のネットワークカードには、複数のカーネルドライバを使用できます。カードがすでに設定されている場合は、YaSTで利用可能で適切なドライバのリストから、使用するカーネルドライバを選択できます。また、カーネルドライバのオプションを指定することもできます。YaSTを使ってこうしたオプションを設定するには、次の手順に従います。

  1. YaSTのネットワーク設定モジュールの概要タブの検出されたカードのリストから目的のカードを選択し、編集をクリックします。

  2. ハードウェアタブを開きます。

  3. モジュール名で、使用するカーネルドライバを選択します。選択したドライバのオプションを、オプションに「= =VALUE」の形式で入力します。他にもオプションを使用する場合は、スペースで区切る必要があります。

  4. 設定内容を有効にするために、設定を確認します。

23.4.1.2.5 ネットワークデバイスの有効化

wickedを使った方法を使用している場合、デバイスをブート時、ケーブル接続時、カード検出時、または手動で起動するように設定したり、起動しないように設定したりすることができます。デバイスの起動方法を変更するには、次の手順に従います。

  1. YaSTで、システム › ネットワーク設定で検出されたカードの一覧からカードを選択し、編集をクリックします。

  2. 一般タブのデバイスの起動から、適切な項目を選択します。

    システムブート中にデバイスを起動するには、ブート時を選択します。ケーブル接続時では、インタフェースで物理接続が存在するかどうかが監視されます。ホットプラグ時を選択した場合、インタフェースは利用可能になったときに設定されます。これは、ブート時オプションに似ていますが、インタフェースがブート時に存在しない場合にエラーが発生しない点のみが異なります。ifupでインタフェースを手動で制御する場合は、手動を選択します。デバイスを起動しない場合は、起動しないを選択します。NFSrootオンは、ブート時に似ていますが、インタフェースはsystemctl stop networkコマンドを使用してシャットダウンしません。また、networkサービスは、wickedがアクティブになっている場合は、wickedサービスも処理します。このオプションは、NFSまたはiSCSIのルートファイルシステムを使用する場合に選択します。

  3. 設定内容を有効にするために、設定を確認します。

ヒント
ヒント: ルートファイルシステムとしてのNFS

ルートパーティションがネットワーク経由でNFS共有としてマウントされている(ディスクレス)システムでは、NFS共有にアクセス可能なネットワークデバイスの設定を慎重に行う必要があります。

システムの停止、システムの再起動時のデフォルトの処理順序は、ネットワーク接続を切断してから、ルートパーティションをアンマウントするという順序になります。NFSルートの場合、この順序では問題が発生します。NFS共有とのネットワーク接続が先に無効にされているため、ルートパーティションを正常にアンマウントできないためです。システムが該当するネットワークデバイスを無効にしないようにするには、[network device configuration(ネットワークデバイスの設定)]タブ(23.4.1.2.5項 「ネットワークデバイスの有効化」を参照)を開いて、デバイスの起動ペインのNFSrootオンを選択します。

23.4.1.2.6 最大転送単位サイズの設定

インタフェースの最大転送単位(MTU)を設定できます。MTUでは、最大許容パケットサイズ(バイト)を参照します。MTUが大きいと、帯域幅の効率が高くなります。ただし、パケットが大きくなると、低速なインタフェースの処理がしばらく阻止され、以降のパケットの遅延が増加する場合があります。

  1. YaSTで、システム › ネットワーク設定で検出されたカードの一覧からカードを選択し、編集をクリックします。

  2. 一般タブのMTUを設定リストから、適切な項目を選択します。

  3. 設定内容を有効にするために、設定を確認します。

23.4.1.2.7 PCIe多機能デバイス

LAN、iSCSI、およびFCoEをサポートする多機能デバイスがサポートされています。FCoEクライアント(yast2 fcoe-clientyast)は、追加の列にプライベートフラグを表示して、ユーザがFCoE用のデバイスを選択できるようにします。ネットワークモジュール(yast2 lanyast)は、ネットワーク設定のストレージ専用デバイスを除外します。

FCoEの詳細については、16.3項 「YaSTを使用したFCoEサービスの管理」を参照してください。

23.4.1.2.8 IPoIB (IP-over-InfiniBand)用のインフィニバンドの設定
  1. YaSTで、システム ›  ネットワーク設定でインフィニバンドデバイスを選択し、編集をクリックします。

  2. 一般タブのIP-over-InfiniBand(IPoIB)モードで接続済み(デフォルト)またはデータグラムを選択します。

  3. 設定内容を有効にするために、設定を確認します。

インフィニバンドの詳細については、/usr/src/linux/Documentation/infiniband/ipoib.txtを参照してください。

23.4.1.2.9 ファイアウォールの設定

Section 23.4, “firewalldで説明しているような詳細なファイアウォール設定を行わずに、デバイスに基本的なファイアウォールを設定することができます。以下に手順を示します。

  1. YaSTで、システム ›  ネットワーク設定 モジュールを開きます。概要タブで、検出されたカードの一覧からカードを選択し、編集をクリックします。

  2. ネットワーク設定ダイアログの一般タブを表示します。

  3. インタフェースを割り当てるファイアウォールゾーンを指定します。次のオプションを指定できます。

    ファイアウォール無効

    このオプションは、ファイアウォールが無効であり、ファイアウォールが動作しない場合にのみ利用可能です。コンピュータが、外部ファイアウォールにより保護されている、より規模の大きいネットワークに接続している場合にのみ、このオプションを使用してください。

    自動割り当てゾーン

    このオプションは、ファイアウォールが有効になっている場合のみ、利用できます。ファイアウォールが実行中であり、インタフェースがファイアウォールゾーンに自動的に割り当てられます。こうしたインタフェースには、anyキーワードを含むゾーンまたは外部ゾーンが使用されます。

    内部ゾーン(未保護)

    ファイアウォールを実行しますが、このインタフェースを保護するルールは使いません。コンピュータが、外部ファイアウォールにより保護されている、より規模の大きいネットワークに接続している場合に、このオプションを使用してください。また、マシンに追加ネットワークインタフェースが存在する場合、内部ネットワークに接続するインタフェースで使用できます。

    非武装地帯(DMZ)

    非武装地帯ゾーンは、内部ネットワークと(悪意のある)インターネットとの中間にあたるゾーンです。このゾーンに割り当てられたホストは、内部ネットワークおよびインターネットからアクセスされますが、ホストから内部ネットワークにアクセスすることはできません。

    外部ゾーン

    このインタフェースでファイアウォールを実行し、(危険な可能性のある)他のネットワークトラフィックからインタフェースを保護します。これがデフォルトのオプションです。

  4. 設定内容を有効にするために、設定を確認します。

23.4.1.3 検出されないネットワークカードの設定

ネットワークカードが正しく検出されなかった場合、そのカードは検出されたカードのリストに含まれません。システムにそのカード用のドライバが間違いなく含まれている場合は、そのようなカードを手動で設定することができます。特殊なネットワークデバイスタイプ(ブリッジ、ボンド、TUN、TAPなど)も設定できます。未検出のネットワークカードまたは特殊なデバイスを設定するには、次の手順に従います。

  1. YaSTのシステム › ネットワーク設定 ›  概要ダイアログで追加をクリックします。

  2. ハードウェアダイアログで、使用可能なオプションからインタフェースのデバイスの型環境設定名を設定します。ネットワークカードが、USBデバイスの場合、それぞれのチェックボックスを選択して、次へをクリックしダイアログを終了します。それ以外の方法では、必要に応じて、カードとそのオプションで使用されるカーネルのモジュール名を定義できます。

    Ethtoolオプションでは、インタフェースのifupにより使用されるethtoolオプションを設定できます。使用可能なオプションの詳細については、ethtoolのマニュアルページを参照してください。

    オプション文字列が-で始まる場合(たとえば-K INTERFACE_NAME rx on)、文字列内の2番目の単語が現在のインタフェースの名前に置換されます。それ以外の場合(たとえばautoneg off speed 10)、ifup-s INTERFACE_NAMEを先頭に追加します。

  3. 次へをクリックします。

  4. 一般アドレス、およびハードウェアタブで、インタフェースのIPアドレス、デバイス起動方法、ファイアウォールゾーンなどの必要なオプションを設定します。環境設定オプションの詳細については、23.4.1.2項 「ネットワークカードの設定の変更」を参照してください。

  5. インタフェースのデバイスタイプとして、ワイヤレスを選択した場合は、次のダイアログでワイヤレス接続の設定を行います。

  6. 新しいネットワーク設定を有効にするために、設定を確認します。

23.4.1.4 ホスト名とDNSの設定

Ethernetカードがすでに利用できる状態で、インストール時にネットワーク設定を変更しなかった場合、コンピュータのホスト名が自動的に生成され、DHCPが有効になります。また、ホストがネットワークに参加するために必要なネームサービス情報も自動的に生成されます。ネットワークアドレス設定にDHCPを使用している場合は、ドメインネームサーバのリストは自動的に記入されます。静的設定を利用する場合は、これらの項目を手動で設定してください。

コンピュータ名を変更し、ネームサーバの検索リストを修正するには、以下の手順に従ってください。

  1. YaSTのシステム › モジュールのネットワーク設定 ホスト名/DNSタブに移動します。

  2. ホスト名を入力します。ホスト名はグローバルであり、すべての設定ネットワークインタフェースに適用されることに注意してください。

    IPアドレスを取得するためにDHCPを使用している場合、DHCPサーバによりコンピュータのホスト名が自動的に設定されます。異なるネットワークに接続する場合は、異なるホスト名が割り当てられることがあり、ランタイムにホスト名が変更されるとグラフィックデスクトップが混同される可能性があるので、この機能を無効にする必要があります。DHCPを使用したIPアドレスの取得を無効にするには、DHCPでホスト名を変更するをオフにします。

  3. DNS環境設定の変更では、DNS設定(ネームサーバ、検索リスト、/run/netconfig/resolv.confファイルのコンテンツ)を変更する方法を選択します。

    既定のポリシーを使用するオプションを選択した場合、(DHCPクライアントまたはNetworkManagerから)動的に取得されたデータと、(YaSTまたは設定ファイルで)静的に定義されたデータをマージするnetconfigスクリプトにより設定が処理されます。通常は、このデフォルトポリシーで十分です。

    手動でのみオプションを選択した場合、netconfigでは/run/netconfig/resolv.confファイルを変更できません。ただし、このファイルは手動で編集できます。

    Custom Policyオプションを選択した場合、マージポリシーを定義するCustom Policy Rule文字列を指定する必要があります。この文字列は、設定の有効なソースとみなされるインタフェース名のカンマで区切られたリストから構成されます。完全なインタフェース名以外に、複数のインタフェースに一致する基本的なワイルドカードを使用することもできます。たとえば、eth* ppp?は、先頭がethであり、以降にppp0-ppp9を含むすべてのインタフェースが対象になります。/etc/sysconfig/network/configファイルで定義された静的な設定を適用する方法を示す次の2つの特別なポリシー値が存在します。

    STATIC

    静的な設定は、動的な設定とマージされる必要があります。

    STATIC_FALLBACK

    静的な設定は、動的設定が利用できない場合のみ使用されます。

    詳細については、(netconfig)のマニュアルページ(man 8 netconfig8)を参照してください。

  4. ネームサーバおよびドメイン検索リストに入力します。ネームサーバは、ホスト名ではなく、192.168.1.116などのIPアドレスにより指定する必要があります。ドメイン検索タブで指定した名前は、ドメインが指定されていないホスト名の解決のために使用されるドメイン名です。複数のドメイン検索を使用する場合は、カンマまたは空白でドメインを区切ります。

  5. 設定内容を有効にするために、設定を確認します。

コマンドラインから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

23.4.1.5 ルーティングの設定

コンピュータを他のコンピュータやネットワークと通信させるには、ネットワークトラフィックが正しい経路を通過するように、ルーティング情報を設定する必要があります。DHCPを使用している場合、この情報は自動的に設定されます。静的アドレスを使用する場合は、このデータを手作業で追加する必要があります。

  1. YaSTで、ネットワーク設定 › ルーティングの順に移動します。

  2. デフォルトゲートウェイのIPアドレス(IPv4および必要に応じてIPv6)を入力します。デフォルトゲートウェイは、可能性のあるすべての宛先に一致しますが、必要なアドレスに一致するルーティングテーブルエントリが存在する場合は、デフォルトゲートウェイ経由のデフォルトルートの代わりにそのエントリが使用されます。

  3. ルーティングテーブルには、さらに追加エントリを入力できます。宛先のネットワークIPアドレス、ゲートウェイのIPアドレス、およびネットマスクを入力します。定義されたネットワークにトラフィックがルーティングされるデバイスを選択します(マイナス記号はデバイスを表わします)。 このいずれかの値を省略する場合は、マイナス記号(-)を使用します。デフォルトゲートウェイをテーブルに入力するには、default宛先フィールドをのままにします。

    注記
    注記: ルートの優先度付け

    追加のデフォルトルートが使用されている場合、より高い優先度を持つルートを決定するためのメトリックオプションを指定できます。メトリックオプションを指定するには、オプション- metric NUMBERを入力します。可能な最小メトリックは0です。メトリックが最小のルートが最も優先度が高く、デフォルトとして使用されます。ネットワークデバイスが切断している場合は、そのルートが削除され、次のルートが使用されます。

  4. システムがルータの場合、必要に応じて、ネットワーク設定IPv4転送およびIPv6転送を有効にします。

  5. 設定内容を有効にするために、設定を確認します。

23.4.2 IBM Z: ネットワークデバイスの設定

SUSE Linux Enterprise Server for IBM Zは、さまざまな種類のネットワークインタフェースをサポートしています。これらのインタフェースは、YaSTを使って設定することができます。

23.4.2.1 qeth-hsiデバイス

qeth-hsi (HiperSocket)インタフェースをインストール済みのシステムに追加するには、YaSTでシステム › ネットワークの設定モジュールを起動します。READデバイスアドレスとして使用するため、Hipersocketとマークされたデバイスの1つを選択して、編集をクリックします。読み込みチャネル、書き込みチャネル、および制御チャネルのデバイス番号を入力します(デバイス番号形式の例: 0.0.0800)。[次へ]をクリックします。ネットワークアドレスの設定ダイアログで、新しいインタフェースのIPアドレスとネットマスクを指定し、次へOKをクリックしてネットワークの設定を終了します。

23.4.2.2 qeth-ethernetデバイス

qeth-ethernet(IBM OSA Expressイーサネットカード)インタフェースをインストール済みのシステムに追加するには、YaSTでシステム › ネットワークの設定モジュールを起動します。READデバイスアドレスとして使用するため、IBM OSA Expressイーサネットカードとマークされたデバイスの1つを選択して編集をクリックします。読み込みチャネル、書き込みチャネル、および制御チャネルのデバイス番号を入力します(デバイス番号形式の例: 0.0.0700)。必要なポート名、ポート番号(該当する場合)といくつかの追加オプション、IPアドレス、および適切なネットマスクを入力します。次へOKをクリックして、ネットワークの設定を終了します。

23.4.2.3 ctcデバイス

ctc(IBMパラレルCTCアダプタ)インタフェースをインストール済みのシステムに追加するには、YaSTでシステム › ネットワークの設定モジュールを起動します。READデバイスアドレスとして使用するIBMパラレルCTCアダプタというマークの付いたデバイスの1つを選択して、設定をクリックします。お使いのデバイスに合わせてデバイス設定を選択します(通常は、互換モード)。自分のIPアドレスとリモートのIPアドレスを指定します。必要に応じて、詳細 › 詳細設定の順に選択してMTUサイズを調整します。次へOKをクリックして、ネットワークの設定を終了します。

警告
警告: CTCは、サポートされなくなりました

このインタフェースを使用することはお勧めしません。SUSE Linux Enterprise Serverの今後のバージョンでは、このインタフェースはサポートされません。

23.4.2.4 lcsデバイス

lcs(IBM OSA-2アダプタ)インタフェースをインストール済みのシステムに追加するには、YaSTでシステム › ネットワークの設定モジュールを起動します。IBM OSA-2アダプタというマークの付いたデバイスの1つの選択して、設定をクリックします。必要なポート番号、いくつかの追加オプション、IPアドレス、および適切なネットマスクを入力します。次へOKをクリックして、ネットワークの設定を終了します。

23.4.2.5 IUCVデバイス

iucv(IUCV)インタフェースをインストール済みのシステムに追加するには、YaSTでシステム › ネットワークの設定モジュールを起動します。IUCVとマークされたデバイスを選択し、編集をクリックします。IUCVパートナーの名前を入力するように要求されます(ピア)。パートナー名(大文字と小文字が区別されます)を入力して、次へをクリックします。自分のIPアドレスと、パートナーのリモートIPアドレスの両方を指定します。必要な場合は、Set MTUサイズを一般タブで設定します。次へOKをクリックして、ネットワークの設定を終了します。

警告
警告: IUCVは、サポートされなくなりました

このインタフェースを使用することはお勧めしません。SUSE Linux Enterprise Serverの今後のバージョンでは、このインタフェースはサポートされません。

23.5 ネットワーク接続の手動環境設定

ネットワークソフトウェアの手動環境設定は、最後の手段です。設定には可能な限りYaSTを使用してください。しかし、ここで説明するネットワーク環境設定の背景知識がYaSTでの設定作業に役立つことがあります。

23.5.1 wickedネットワーク環境設定

wickedと呼ばれるツールとライブラリは、ネットワーク環境設定用の新しいフレームワークを提供します。

従来のネットワークインタフェース管理の課題の1つは、ネットワーク管理のさまざまな層が1つのスクリプト、または最大2つの異なるスクリプトにごちゃ混ぜになってしまうことです。これらのスクリプトは、あまりはっきりしない形で互いに作用し合います。これにより、予測できない問題、不明瞭な制約や規則などが発生し、さまざまなシナリオに対応するための特別なハックが複数のレイヤにわたって存在することで、保守の負担が増加します。現状では、dhcpcdなどのデーモンによって実装されるアドレス設定プロトコルが使用されていますが、他のインフラストラクチャとの相互作用は十分ではありません。そこで、インタフェースを永続的に識別できるようにするため、多くのudevサポートを必要とするインタフェース命名スキームが導入されたものの、これは洗練されているとはいいがたい手段です。

wickedというアイデアが生まれたのは、この問題をさまざまな方法で分解するためです。どの方法もまったく新しいものではありませんが、異なるプロジェクトから得たアイデアをまとめようとする試みから、総合的により優れた解決策が生まれることが期待できます。

アプローチの1つは、クライアント/サーバモデルを使用することです。これにより、wickedは、アドレス設定のような作業について、フレームワーク全体と効果的に統合された標準化機能を定義できます。たとえば、特定のアドレス設定を使用して、管理者は、DHCPまたはIPv4 zeroconfを介してインタフェースを設定するように要求することができます。この場合、アドレス設定サービスは、単にそのサーバからリースを取得し、要求されたアドレスとルートをインストールする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はこのクラスと互換性のあるすべてのインタフェースを自動的にアタッチします。現在の実装では、これには次のインタフェースが含まれます。

org.opensuse.Network.Interface

リンクアップとリンクダウンの取得、MTUの割り当てなどの、一般的なネットワークインタフェース機能。

org.opensuse.Network.Addrconf.ipv4.dhcp, org.opensuse.Network.Addrconf.ipv6.dhcp, org.opensuse.Network.Addrconf.ipv4.auto

DHCP、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リストノードにアタッチされます。

23.5.1.1 wickedアーキテクチャと機能

wickedサービスは、図23.4「wicked アーキテクチャ」に示されている複数の要素で構成されます。

wicked アーキテクチャ
図 23.4: wicked アーキテクチャ

wickedは、現在次の要素をサポートしています。

  • SUSEスタイルの/etc/sysconfig/networkファイルを解析する環境設定ファイルバックエンド。

  • ネットワークインタフェース設定をXMLで表す内部環境設定バックエンド。

  • 通常のネットワークインタフェース(EthernetまたはInfiniBandなど)、VLAN、ブリッジ、ボンド、tun、tap、dummy、macvlan、macvtap、hsi、qeth、iucv、およびワイヤレス(現在はwpa-psk/eapネットワークに限定)デバイスの起動と停止。

  • 内蔵DHCPv4クライアントおよび内蔵DHCPv6クライアント。

  • nannyデーモン(デフォルトで有効)によって、デバイスが使用可能になると設定済みインタフェースが自動的に起動され(インタフェースのホットプラグ)、リンク(キャリア)が検出されるとIP設定が設定されます。詳細については、23.5.1.3項 「nanny」を参照してください。

  • wickedは、systemdに統合されているDBusサービスのグループとして実装されました。したがって、通常のsystemctlコマンドがwickedに適用されます。

23.5.1.2 使用 wicked

SUSE Linux Enterpriseでは、デフォルトでwickedが稼働しています。現在何が有効になっているか、稼働しているかどうかを確認するには、以下を呼び出します。

systemctl status network

wickedが有効になっている場合、以下の行に表示されます。

wicked.service - wicked managed network interfaces
    Loaded: loaded (/usr/lib/systemd/system/wicked.service; enabled)
    ...

wicked以外が稼働している場合(NetworkManagerなど)で、wickedに切り替えたい場合、稼働中のサービスを停止してからwickedを有効にします。

systemctl is-active network && \
systemctl stop      network
systemctl enable --force wicked

これにより、wickedサービスが有効になり、wicked.serviceエイリアスリンクに対してnetwork.serviceが作成され、次回ブート時にネットワークを起動します。

サーバプロセスを起動します。

systemctl start wickedd

wickedd (メインサーバ)と関連サプリカントが起動されます。

/usr/lib/wicked/bin/wickedd-auto4 --systemd --foreground
/usr/lib/wicked/bin/wickedd-dhcp4 --systemd --foreground
/usr/lib/wicked/bin/wickedd-dhcp6 --systemd --foreground
/usr/sbin/wickedd --systemd --foreground
/usr/sbin/wickedd-nanny --systemd --foreground

次にネットワークを起動します

systemctl start wicked

または、network.serviceエイリアスを使用します。

systemctl start network

これらのコマンドは、デフォルト、または/etc/wicked/client.xmlで定義されるシステム設定ソースを使用しています。

デバッグを有効にするには、次の例のように、/etc/sysconfig/network/configWICKED_DEBUGを設定します。

WICKED_DEBUG="all"

または、いくつかを省略して、以下のようにします。

WICKED_DEBUG="all,-dbus,-objectmodel,-xpath,-xml"

クライアントユーティリティを使用して、すべてのインタフェース、または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で定義されている設定のデフォルトソースを確認します。

  1. firmware: iBFT (iSCSI Boot Firmware Table)

  2. compat: ifcfg ファイル—互換性のため実装

特定のインタフェースに対してwickedがこれらのソースから取得した設定がすべて適用されます。firmware、次にcompatの順に重要です。これは将来変わる場合があります。

詳細については、wickedのマニュアルページを参照してください。

23.5.1.3 nanny

nannyは、イベントドリブンおよびポリシードリブンのデーモンで、デバイスのホットプラグなど、非同期や非要求のシナリオを担当します。nannyデーモンは、遅延したデバイスや、一時的に停止したデバイスの始動、再始動に役立ちます。nannyは、デバイスやリンクの変更を監視し、現行ポリシーセットで定義されている新規デバイスを統合します。Nannyは、指定されているタイムアウト制約によりifupがすでに終了していたとしても、引き続き設定されます。

nannyデーモンは、デフォルトで、システム上有効になっています。/etc/wicked/common.xml環境設定ファイルで有効に設定されています。

<config>
  ...
  <use-nanny>true</use-nanny>
</config>

この設定によって、ifupおよびifreloadは、有効な設定を持つポリシーをnannyデーモンに適用します。nannyはwickeddを設定して、ホットプラグがサポートされます。nannyデーモンは、バックグラウンドでイベントや変更の発生まで待機します(新規デバイスやキャリアの追加など)。

23.5.1.4 複数のインタフェースの起動

ボンドおよびブリッジの場合、1つのファイル(ifcfg-bondX)にデバイストポロジ全体を定義し、それをまとめて起動します。これにより、wickedは、最上位のインタフェース名(ブリッジまたはボンドの)が指定されれば、設定全体を起動できます。

wicked ifup br0

このコマンドは、ブリッジとその依存関係を適切な順序で自動的に設定するため、依存関係(ポートなど)を個別にリスト表示する必要はありません。

1つのコマンドで複数のインタフェースを起動するには、以下のようにします。

wicked ifup bond0 br0 br1 br2

また、すべてのインタフェースを起動するには、以下のようにします。

wicked ifup all

23.5.1.5 Wickedによるトンネルの使用

Wickedでトンネルを使用する必要がある場合は、TUNNEL_DEVICEを使用します。これにより、オプションデバイス名を指定して、トンネルをデバイスにバインドできます。トンネル化パケットは、このデバイス経由でのみルーティングされます。

詳細については、man 5 ifcfg-tunnelを参照してください。

23.5.1.6 増分変更の処理

wickedでは、再設定のためにインタフェースを実際に停止する必要はありません(カーネルによって要求される場合を除く)。たとえば、静的に設定されたネットワークインタフェースに別のIPアドレスまたはルートを追加するには、インタフェース定義にIPアドレスを追加して、もう一度ifup操作を実行します。サーバは変更された設定のみを更新しようとします。これは、デバイスMTUやMACアドレスなどのリンクレベルのオプションに適用されるほか、(静的設定からDHCPに切り替える場合などは)アドレス、ルート、さらにはアドレス設定モードなどのネットワークレベルの設定にも適用されます。

もちろん、ブリッジやボンドなど複数の実デバイスを組み合わせる仮想インタフェースでは、処理は複雑になります。ボンドデバイスの場合、デバイスの稼働中に特定のパラメータを変更することはできません。これを行うと、エラーが発生します。

ただし、この状態でも、ボンドまたはブリッジの子デバイスを追加または削除したり、ボンドのプライマリインタフェースを選択したりする操作は有効です。

23.5.1.7 Wicked拡張機能: アドレス設定

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-service>タグにアタッチされ、このインタフェースのアクションに対して実行するコマンドを定義します。さらに、宣言によって、アクションに渡される環境変数を定義および初期化できます。

23.5.1.8 Wicked拡張機能: 環境設定ファイル

スクリプトを使用して環境設定ファイルの処理を拡張することもできます。たとえば、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に更新内容が届くと、システムアップデータルーチンがリースを解析し、リゾルバスクリプトで適切なコマンド(backupinstallなど)を呼び出します。これにより/sbin/netconfigを使用してDNSを設定するか、フォールバックとして手動で/run/netconfig/resolv.confを作成してDNSを設定します。

23.5.2 環境設定ファイル

ここでは、ネットワークの環境設定ファイルの概要を紹介し、その目的と使用される形式について説明します。

23.5.2.1 /etc/wicked/common.xml

/etc/wicked/common.xmlファイルには、すべてのアプリケーションが使用する共通定義が含まれます。このディレクトリにある他の設定ファイルにより読み込まれ、インクルードされます。このファイルを使用して、すべてのwickedコンポーネントのデバッグを有効にすることはできますが、その場合はファイル/etc/wicked/local.xmlを使用することをお勧めします。保守アップデートを適用すると、/etc/wicked/common.xmlが上書きされて、変更内容が失われる可能性があります。デフォルトインストールでは、/etc/wicked/common.xmlファイルに/etc/wicked/local.xmlがインクルードされるので、通常は/etc/wicked/common.xmlを変更する必要はありません。

<use-nanny>falseに設定してnannyを無効にする場合は、wickedd.serviceを再起動してから、次のコマンドを実行してすべての構成とポリシーを適用します。

> sudo wicked ifup all
注記
注記: 環境設定ファイル

wickeddwicked、またはnannyの各プログラムは、それぞれの固有の設定ファイルが存在しない場合に、/etc/wicked/common.xmlの読み込みを試みます。

23.5.2.2 /etc/wicked/server.xml

ファイル/etc/wicked/server.xmlは、起動時にwickeddサーバプロセスによって読み込まれます。このファイルには、/etc/wicked/common.xmlの拡張機能が保存されます。さらに、リゾルバの処理およびaddrconfサプリカント(DHCPなど)からの情報の受信を設定します。

このファイルに必要な変更は、/etc/wicked/server.xmlにインクルードされる、別ファイルの/etc/wicked/server-local.xmlに追加することをお勧めします。別ファイルを使用することによって、保守更新中に変更内容が上書きされることはなくなります。

23.5.2.3 /etc/wicked/client.xml

/etc/wicked/client.xmlは、wickedコマンドによって使用されます。このファイルでは、ibftにより管理されるデバイスを検出するときに使用されるスクリプトの場所を指定し、ネットワークインタフェース設定の場所を設定します。

このファイルに必要な変更は、/etc/wicked/server.xmlにインクルードされる、別ファイルの/etc/wicked/client-local.xmlに追加することをお勧めします。別ファイルを使用することによって、保守更新中に変更内容が上書きされることはなくなります。

23.5.2.4 /etc/wicked/nanny.xml

/etc/wicked/nanny.xmlは、リンク層の種類を設定します。設定に独自の変更を加えた場合は、保守更新時に変更内容が失われることがないよう、別ファイルの/etc/wicked/nanny-local.xmlにそれらの設定を追加しておくことをお勧めします。

23.5.2.5 /etc/sysconfig/network/ifcfg-*

これらのファイルには、ネットワークインタフェースの従来の環境設定が含まれています。

注記
注記: wickedおよびifcfg-*ファイル

wickedは、compat:プレフィクスを指定した場合にのみ、これらのファイルを読み取ります。/etc/wicked/client.xmlにあるSUSE Linux Enterprise Serverのデフォルト設定に応じて、wickedは、/etc/wicked/ifconfig内のXML設定ファイルの前にこれらのファイルを読み込もうとします。

--ifconfigスイッチは、多くの場合テストでのみ指定します。指定した場合、/etc/wicked/ifconfigに定義されたデフォルトの環境設定ソースは適用されません。

ifcfg-*ファイルには、起動モードやIPアドレスなどの情報が含まれています。指定可能なパラメータについては、ifupのマニュアルページを参照してください。また、一般的設定を1つのインタフェースだけに使用する場合は、dhcpおよびwirelessファイルのほとんどの変数をifcfg-*ファイルで使用できます。ただし、/etc/sysconfig/network/configの変数の大半はグローバル変数であり、ifcfgファイル内で上書きすることはできません。たとえば、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については、23.5.2.6項 「/etc/sysconfig/network/config/etc/sysconfig/network/dhcp、および/etc/sysconfig/network/wirelessを参照してください。

IBM Z IBM Zは、USBをサポートしていません。インタフェースファイル名とネットワークエイリアスには、qethのようなIBM Z固有の要素が含まれます。

23.5.2.6 /etc/sysconfig/network/config/etc/sysconfig/network/dhcp、および/etc/sysconfig/network/wireless

configファイルには、ifupifdown、およびifstatusの動作の一般的な設定が含まれています。dhcpには、DHCPの設定が含まれ、wirelessには、ワイヤレスLANカードの設定が含まれています。3つの環境設定ファイル内の変数にはコメントが付きます。/etc/sysconfig/network/configの一部の変数は、ifcfg-*ファイルでも使用できます。このファイルでは、それらの変数がより高い優先順位で処理されます。/etc/sysconfig/network/ifcfg.templateファイルは、インタフェースごとに指定できる変数を一覧表示します。ただし、/etc/sysconfig/network/configの変数の大半はグローバル変数であり、ifcfgファイル内で上書きすることはできません。たとえば、NETWORKMANAGERNETCONFIG_*は、グローバル変数です。

注記
注記: DHCPv6の使用

SUSE Linux Enterprise 11では、IPv6 Router Advertisements (RA)が適切に設定されていないネットワークでもDHCPv6は動作しました。SUSE Linux Enterprise 12から、DHCPv6が動作するには、ネットワーク上の少なくとも1つのルータが、ネットワークがDHCPv6で管理されていることを示すRAを送出することが求められるようになりました。

ルータを正しく設定できないネットワーク用に、ユーザはifcfgオプションを使用して、DHCLIENT6_MODE='managed'ifcfgファイルに指定することによって、この動作を無効にできます。インストールシステムでbootパラメータを使用することによっても、この回避策を有効にできます。

ifcfg=eth0=dhcp6,DHCLIENT6_MODE=managed

23.5.2.7 /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のマニュアルページを参照してください。

例 23.5: 一般的なネットワークインタフェースとスタティックルートの例
# --- 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

23.5.2.8 /var/run/netconfig/resolv.conf

/var/run/netconfig/resolv.confには、ホストが属するドメインが指定されています(キーワードsearch)。searchオプションでは、最大256文字で最大6つのドメインを指定できます。完全修飾でない名前を解決する場合は、searchの各エントリを付加して完全修飾名の生成が試みられます。nameserverオプションでは、1行に1つずつ、最大3つのネームサーバを指定できます。コメントの先頭には、ハッシュマークまたはセミコロン記号(#または;)を付加します。例については、例23.6「/var/run/netconfig/resolv.confを参照してください。

ただし、/etc/resolv.confは、手動では編集しないでください。これは、netconfigスクリプトによって生成され、/run/netconfig/resolv.confへのシンボリックリンクです。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

/var/run/netconfig/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)を参照してください。

例 23.6: /var/run/netconfig/resolv.conf
# Our domain
search example.com
#
# We use dns.example.com (192.168.1.116) as nameserver
nameserver 192.168.1.116

23.5.2.9 /sbin/netconfig

netconfigは、追加のネットワーク環境設定を管理するモジュール式ツールです。このツールは、事前定義されたポリシーに従って、DHCPまたはPPPなどの自動設定メカニズムにより提供される設定と、静的に定義された設定をマージします。要求された変更は、netconfigモジュールの呼び出しによって適用されます。このモジュールは、環境設定ファイルの変更と、サービスまたは同様のアクションの再起動を行います。

netconfigは、3つの主要なアクションを認識します。netconfig modifyコマンドとnetconfig removeコマンドは、DHCPやPPPなどのデーモンによって使用され、netconfigの設定値を提供したり、削除します。ユーザが使用できるのは、netconfig updateコマンドだけです。

modify

netconfig modifyコマンドは、現在のインタフェースとサービス固有の動的設定を変更し、ネットワーク設定を更新します。netconfigは、標準入力からか、または--lease-file FILENAMEオプションで指定されたファイルから設定を読み込み、システムのリブートまたは次の変更/削除アクションまで、それらの設定を内部的に保存します。同じインタフェースとサービスの組み合わせに関する既存設定は、上書きされます。インタフェースは、-i INTERFACE_NAMEパラメータで指定されます。サービスは、-s SERVICE_NAMEパラメータで指定されます。

remove

netconfig removeコマンドは、特定のインタフェースとサービスの組み合わせに対する編集アクションによる動的設定を削除し、ネットワーク設定を更新します。インタフェースは、-i INTERFACE_NAMEパラメータで指定されます。サービスは、-s SERVICE_NAMEパラメータで指定されます。

update

netconfig updateコマンドは、現在の設定で、ネットワーク設定を更新します。これは、ポリシーや静的環境設定が変更された場合に便利です。指定したサービスのみ(dnsnis、または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を参照してください。

23.5.2.10 /etc/hosts

このファイル(例23.7「/etc/hostsを参照)では、IPアドレスがホスト名に割り当てられています。ネームサーバが実装されていない場合は、IP接続をセットアップするすべてのホストをここに一覧にする必要があります。ファイルには、各ホストについて1行を入力し、IPアドレス、完全修飾ホスト名、およびホスト名を指定します。IPアドレスは、行頭に指定し、各エントリはブランクとタブで区切ります。コメントは常に#記号の後に記入します。

例 23.7: /etc/hosts
127.0.0.1 localhost
192.168.2.100 jupiter.example.com jupiter
192.168.2.101 venus.example.com venus

23.5.2.11 /etc/networks

このファイルには、ネットワーク名とネットワークアドレスの対応が記述されています。形式は、ネットワーク名をアドレスの前に指定すること以外は、hostsファイルと同様です。例23.8「/etc/networksを参照してください。

例 23.8: /etc/networks
loopback     127.0.0.0
localnet     192.168.0.0

23.5.2.12 /etc/host.conf

このファイルは、名前解決(resolverライブラリによるホスト名とネットワーク名の変換)を制御します。このファイルは、libc4またはlibc5にリンクされているプログラムについてのみ使用されます。最新のglibcプログラムについては、/etc/nsswitch.confの設定を参照してください。パラメータは常に、1行に1つずつ入力する必要があります。コメントの先頭には#記号が付きます。表23.2「/etc/host.confファイルのパラメータ」には、利用可能なパラメータが表示されます。/etc/host.confの例については、例23.9「/etc/host.confを参照してください。

表 23.2: /etc/host.confファイルのパラメータ

order hosts,bind

名前の解決の際、サービスがアクセスされる順序を指定します。有効な引数は次のとおりです(空白またはカンマで区切ります)。

hosts: /etc/hostsファイルを検索します。

bind: ネームサーバにアクセスします。

nis: NISを使用します。

multi on/off

/etc/hostsに指定されているホストが、複数のIPアドレスを持てるかどうかを定義します。

nospoof on spoofalert on/off

これらのパラメータは、ネームサーバspoofingに影響を与えますが、ネットワークの環境設定にはまったく影響を与えません。

trim domainname

ホスト名が解決された後、指定したドメイン名をホスト名から切り離します(ホスト名にドメイン名が含まれている場合)。ローカルドメインにある名前は/etc/hostsファイルにありますが、付加されるドメイン名でも認識する必要がある場合には便利なオプションです。

例 23.9: /etc/host.conf
# We have named running
order hosts bind
# Allow multiple address
multi on

23.5.2.13 /etc/nsswitch.conf

GNU C Library 2.0を導入すると、Name Service Switch (NSS)も合わせて導入されます。詳細については、nsswitch.conf(5)のマニュアルページおよび『The GNU C Library Reference Manual』を参照してください。

クエリの順序は、ファイル/etc/nsswitch.confで定義します。nsswitch.confの例については、例23.10「/etc/nsswitch.confを参照してください。コメントの先頭には#記号が付きます。この例では、hostsデータベースの下のエントリは、要求がDNSを介して、/etc/hosts(files)に送信されることを意味しています(第39章 「ドメインネームシステム参照)

例 23.10: /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で利用できるデータベースについては、表23.3「/etc/nsswitch.confで利用できるデータベース」を参照してください。NSSデータベースの環境設定オプションについては、表23.4「NSSデータベースの環境設定オプション」を参照してください。

表 23.3: /etc/nsswitch.confで利用できるデータベース

aliases

sendmailによって実行されたメールエイリアス。man 5 aliasesコマンドで、マニュアルページを参照してください。

ethers

イーサネットアドレス。

netmasks

ネットワークとそのサブネットマスクのリスト。サブネットを使用する場合のみ必要です。

group

getgrentによって使用されるユーザグループ。groupのマニュアルページも参照してください。

hosts

gethostbynameおよび同類の関数によって使用されるホスト名とIPアドレス。

netgroup

アクセス許可を制御するための、ネットワーク内にある有効なホストとユーザのリスト。netgroup(5)マニュアルページを参照してください。

networks

ネットワーク名とアドレス。getnetentによって使用されます。

publickey

NFSとNIS+によって使用されるSecure_RPCの公開鍵と秘密鍵。

passwd

ユーザパスワード。getpwentによって使用されます。passwd(5)のマニュアルページを参照してください。

protocols

ネットワークプロトコル。getprotoentによって使用されます。protocols(5)のマニュアルページを参照してください。

rpc

リモートプロシージャコール名とアドレス。getrpcbynameおよび同様の関数によって使用されます。

services

ネットワークサービス。getserventによって使用されます。

shadow

ユーザのシャドウパスワード。getspnamによって使用されます。shadow(5)のマニュアルページを参照してください。

表 23.4: NSSデータベースの環境設定オプション

files

直接アクセスファイル。たとえば/etc/aliases

db

データベース経由のアクセス。

nisnisplus

NIS。Chapter 3, Using NISを参照。

dns

hostsおよびnetworksの拡張としてのみ使用できます。

compat

passwdshadow、およびgroupの拡張としてのみ使用できます。

23.5.2.14 /etc/nscd.conf

このファイルは、nscd (name service cache daemon)の環境設定に使用します。nscd(8)nscd.conf(5)のマニュアルページを参照してください。デフォルトでは、nscdによってpasswdgroups、およびhostsのシステムエントリがキャッシュされます。これは、NISやLDAPのようにディレクトリサービスのパフォーマンスにとって重要です。このようになっていないと、names、groupsまたはhostsにアクセスするたびにネットワーク接続を使用する必要があるためです。

passwdオプションのキャッシュを有効にすると、新しく追加したローカルユーザが認識されるまで、通常、約15秒かかります。この待ち時間を短縮するには、次のコマンドを使用してnscdを再起動します。

> sudo systemctl restart nscd

23.5.2.15 /etc/HOSTNAME

/etc/HOSTNAMEには、完全修飾ホスト名(FQHN)が含まれています。完全修飾ホスト名は、ドメイン名が付加されたホスト名です。このファイルに指定できるのは、ホスト名が設定されている1行のみです。このファイルはマシンのブート時に読み込まれます。

23.5.3 設定のテスト

設定内容を設定ファイルに書き込む前に、それをテストすることができます。テスト環境を設定するには、ipコマンドを使用します。接続をテストするには、pingコマンドを使用します。

ipコマンドは、ネットワーク設定を直接変更します。ただし、変更内容は環境設定ファイルに保存されません。正しい環境設定ファイルに変更内容を保存しない限り、変更したネットワーク設定は再起動時に失われてしまいます。

注記
注記: ifconfigrouteは廃止されました

ifconfigrouteツールは廃止されました代わりに、ipを使用してください。たとえば、ifconfigでは、インタフェース名は9文字に制限されます。

23.5.3.1 ipによるネットワークインタフェースの設定

ipは、ネットワークデバイス、ルーティング、ポリシールーティング、およびトンネルの表示と設定を行うツールです。

ipは非常に複雑なツールです。その一般的な構文はip OPTIONS OBJECT COMMANDです。objectの部分には、次のオブジェクトを指定することができます。

link

ネットワークデバイスを表します。

address

デバイスのIPアドレスを表します。

neighbor

このオブジェクトは、ARPまたはNDISCのキャッシュエントリを表します。

route

ルーティングテーブルエントリを表します。

rule

ルーティングポリシーデータベース中のルールを表します。

maddress

マルチキャストアドレスを表します。

mroute

マルチキャストルーティングキャッシュエントリを表します。

tunnel

IPトンネルを表します。

commandを指定しないと、デフォルトのコマンド(通常はlist)が使用されます。

コマンドを使用してデバイスの状態を変更します。

> sudo ip link set DEV_NAME

たとえば、デバイスeth0を無効にするには、次のコマンドを入力します

> sudo ip link set eth0 down

再度有効にするには、次のコマンドを使用します

> sudo ip link set eth0 up
ヒント
ヒント: NICデバイスの接続解除

次のコマンドを使用してデバイスを無効にする場合

> sudo ip link set DEV_NAME down

ソフトウェアレベルでネットワークインタフェースが無効になります。

Ethernetケーブルが接続されていないか、接続されているスイッチがオフになっているかのように、リンクの喪失をシミュレートする場合は、次のコマンドを実行します

> sudo ip link set DEV_NAME carrier off

たとえば、ip link set DEV_NAME downDEV_NAMEを使用してすべてのルートを破棄しますが、ip link set DEV carrier offは破棄しません。carrier offにはネットワークデバイスドライバからのサポートが必要であることに注意してください。

デバイスを物理ネットワークに接続するには、次のコマンドを実行します

> sudo ip link set DEV_NAME carrier on

デバイスを有効にしたら、そのデバイスを設定することができます。IPアドレスを設定するには、次のコマンドを使用します

> sudo ip addr add IP_ADDRESS + dev DEV_NAME

たとえば、インタフェースeth0にアドレス「192.168.12.154/30」を設定し、標準のブロードキャスト(brdオプション)を使用する場合は、次のコマンドを入力します

> sudo ip addr add 192.168.12.154/30 brd + dev eth0

接続を実際に利用可能にするには、デフォルトゲートウェイの設定も必要です。システムのゲートウェイを設定するには、次のコマンドを入力します

> sudo ip route add default via gateway_ip_address

すべてのデバイスを表示するには、次のコマンドを使用します

> sudo ip link ls

動作しているインタフェースだけを表示する場合は、次のコマンドを使用します

> sudo ip link ls up

デバイスのインタフェース統計情報を印刷する場合は、次のコマンドを入力します

> sudo ip -s link ls DEV_NAME

特に仮想ネットワークデバイスに関する追加の役立つ情報を表示するには、次のコマンドを入力します

> sudo ip -d link ls DEV_NAME

さらに、デバイスのネットワークレイヤ(IPv4、IPv6)アドレスを表示するには、次のコマンドを入力します

> sudo ip addr

出力では、デバイスのMACアドレスに関する情報を参照することができます。すべてのルートを表示する場合は、次のコマンドを使用します

> sudo ip route show

ipの使用方法の詳細については、ip helpを入力するか、またはman 8 ipマニュアルページを参照してください。helpオプションは、次のように、すべてのipサブコマンドに関して利用できます。

> sudo ip addr help

/usr/share/doc/packages/iproute2/ip-cref.pdfipマニュアルを検索します。

23.5.3.2 pingを使った接続のテスト

pingコマンドは、TCP/IP接続が正常に動作しているかどうかを調べるための、標準ツールです。pingコマンドはICMPプロトコルを使って、小さなデータパケットECHO_REQUESTデータグラムを、宛先ホストに送信し、即時応答を要求します。これが機能した場合、pingはそのことを示すメッセージを表示します。これは、ネットワークリンクが機能していることを示します。

pingは、2台のコンピュータ間の接続機能をテストするだけでなく、接続品質に関する基本的な情報も提供します。例23.11「pingコマンドの出力」コマンドの実行結果例は、pingを参照してください。最後から2番目の行に、転送パケット数、失われたパケット数、およびpingの実行時間の合計が記載されています。

宛先として、ホスト名またはIPアドレスを指定することができます。たとえば、ping example.comping 192.168.3.100のように指定します。pingコマンドを実行すると、CtrlCを押すまでの間、継続的にパケットが送信されます。

接続されているかどうかを確認するだけで良い場合は、-cオプションを使って送信するパケット数を指定することができます。たとえば、パケットを3つだけ送信する場合は、ping -c 3 example.comと入力します。

例 23.11: pingコマンドの出力
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アドレスのping

IPvの場合は、ping66コマンドを使用します。ただし、リンクローカルアドレスをpingするには、-Iでインタフェースを指定する必要があります。アドレスがeth1を介して到達可能な場合は、次のコマンドが有効です。

ping6 -I eth1 fe80::117:21ff:feda:a425

23.5.4 ユニットファイルと起動スクリプト

上の環境設定ファイルに加え、マシンのブート時にネットワークサービスをロードするさまざまなスクリプトも用意されています。これらは、システムがmulti-user.targetのターゲットに切り替わったときに起動します。これらのユニットファイルの一部は、ネットワークプログラム用のユニットファイルと起動スクリプトで説明されています。systemdの詳細については、第19章 「systemdデーモンを参照してください。systemdターゲットの詳細については、systemd.specialのマニュアルページ(man systemd.special)を参照してください。

ネットワークプログラム用のユニットファイルと起動スクリプト
network.target

network.targetは、ネットワークのsystemdターゲットですが、その意味はシステム管理者が指定した設定により異なります。

詳細については、https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/を参照してください。

multi-user.target

multi-user.targetは、必要なすべてのネットワークサービスを備えた、マルチユーザシステムのsystemdターゲットです。

rpcbind

RPCプログラム番号をユニバーサルアドレスに変換するrpcbindユーティリティを起動します。NFSサーバなどのRPCサービスで必要です。

ypserv

NISサーバを起動します。

ypbind

NISクライアントを起動します。

/etc/init.d/nfsserver

NFSサーバを起動します。

/etc/init.d/postfix

postfixプロセスを制御します。

23.6 ルータの基本セットアップ

ルータは、複数のネットワークの間でデータ(ネットワークパケット)を送受信するネットワークデバイスです。多くの場合、ルータは、ローカルネットワークとリモートネットワーク(インターネット)またはローカルネットワークセグメントとの接続に使用します。SUSE Linux Enterprise Serverを使用すると、NAT(ネットワークアドレス変換)や高度なファイアウォール設定などの機能を備えたルータを構築できます。

次に、SUSE Linux Enterprise Serverをルータにする基本手順を示します。

  1. たとえば/etc/sysctl.d/50-router.confで、転送を有効にします。

    net.ipv4.conf.all.forwarding = 1
    net.ipv6.conf.all.forwarding = 1

    次に、インタフェースにIPv4とIPv6の静的IPセットアップを指定します。転送を有効にすると、さまざまなメカニズムが無効になります。たとえば、IPv6はIPv6 RA(Router Advertisement)を受け付けなくなり、その結果デフォルトルートが作成されなくなります。

  2. 多くの場合に(複数のインタフェースを経由して同一ネットワークに接続可能な場合、またはVPNが通常使用され正常なマルチホームホスト上にすでに存在する場合など)、IPv4戻り経路フィルタ(この機能は現在IPv6には存在しません)を無効にする必要があります。

    net.ipv4.conf.all.rp_filter = 0

    代わりに、ファイアウォール設定でフィルタを適用することもできます。

  3. (外部、アップリンク、またはISPインタフェース上のルータからの)IPv6 RAを受け付けて、デフォルトの(またはより具体的な)IPv6ルートを再作成するには、次のように設定します。

    net.ipv6.conf.${ifname}.accept_ra = 2
    net.ipv6.conf.${ifname}.autoconf = 0

    (注: eth0.42は、ドット区切りのsysfsパスではeth0/42と記述する必要があります。)

その他のルータの動作と転送の依存関係についてはhttps://www.kernel.org/doc/Documentation/networking/ip-sysctl.txtを参照してください。

内部(DMZ)インタフェースでIPv6を提供し、自身をIPv6ルータおよび自動環境設定ネットワークとしてクライアントにアナウンスするには、たとえばradvdをインストールして/etc/radvd.confで設定します。

interface eth0
{
    IgnoreIfMissing on;         # do not fail if interface missed

    AdvSendAdvert on;           # enable sending RAs
    AdvManagedFlag on;          # IPv6 addresses managed via DHCPv6
    AdvOtherConfigFlag on;      # DNS, NTP... only via DHCPv6

    AdvDefaultLifetime 3600;    # client default route lifetime of 1 hour

    prefix 2001:db8:0:1::/64    # (/64 is default and required for autoconf)
    {
        AdvAutonomous off;         # Disable address autoconf (DHCPv6 only)

        AdvValidLifetime 3600;     # prefix (autoconf addr) is valid 1 h
        AdvPreferredLifetime 1800; # prefix (autoconf addr) is preferred 1/2 h
    }
}

NATを使用してLANからWANにトラフィックをマスカレードし、WANインタフェースで着信トラフィックをブロックするようにファイアウォールを設定します。

> sudo firewall-cmd --permanent --zone=external --change-interface=WAN_INTERFACE
> sudo firewall-cmd --permanent --zone=external --add-masquerade
> sudo firewall-cmd --permanent --zone=internal --change-interface=LAN_INTERFACE
> sudo firewall-cmd --reload

23.7 ボンディングデバイスの設定

システムによって、通常のEthernetデバイスの規格のデータセキュリティ/可用性の要件を超えるネットワーク接続の実装が望ましいことがあります。その場合、数台のEthernetデバイスを集めて1つのボンディングデバイスを設定できます。

ボンディングデバイスの設定には、ボンディングモジュールオプションを使用します。ボンディングデバイスの振る舞いは、主にボンディングデバイスのモードによって影響されます。デフォルトの動作は、active-backupであり、アクティブなポートに障害が発生すると、別のBondポートがアクティブになります。以下のボンディングモードが使用可能です。

0 (balance-rr)

パケットは、ラウンドロビン方式で、最初の使用可能なインタフェースから最後の使用可能なインタフェースに送信されます。耐障害性と負荷分散を提供します。

1 (active-backup)

1つのネットワークインタフェースのみがアクティブです。失敗すると、別のインタフェースがアクティブになります。この設定は、SUSE Linux Enterprise Serverのデフォルトです。耐障害性を提供します。

2 (balance-xor)

トラフィックは、ボンディングに含まれるデバイスの数に基づいて、使用可能なすべてのインタフェース間で分割されます。スイッチのサポートが必要です。耐障害性と負荷分散を提供します。

3 (broadcast)

すべてのトラフィックはすべてのインタフェースに対してブロードキャストされます。スイッチのサポートが必要です。耐障害性を提供します。

4 (802.3ad)

同じ速度と両面設定を共有するグループにインタフェースを集約します。インタフェースドライバでのethtoolのサポート、およびIEEE 802.3adダイナミックリンク集約をサポートし、それ用に設定されているスイッチが必要です。耐障害性と負荷分散を提供します。

5 (balance-tlb)

アダプティブ送信負荷分散。インタフェースドライバでのethtoolのサポートが必要ですが、スイッチのサポートは必要ありません。耐障害性と負荷分散を提供します。

6 (balance-alb)

アダプティブ負荷分散。インタフェースドライバでのethtoolのサポートが必要ですが、スイッチのサポートは必要ありません。耐障害性と負荷分散を提供します。

モードの詳細については、https://www.kernel.org/doc/Documentation/networking/bonding.txtを参照してください。

ヒント
ヒント: ボンディングとXen

ボンディングデバイスの使用が有用なのは、利用可能なネットワークカードが複数あるマシンの場合のみです。大半の設定では、Dom0でのみボンディング設定を使用する必要があることになります。VMゲストシステムに複数のネットワークカードが割り当てられている場合のみ、VMゲストでのボンド設定が役立つことがあります。

注記
注記: IBM POWER: ボンディングモード5および6 (balance-tlb / balance-alb)がibmvethでサポートされない

tlb/albボンディング設定と電源ファームウェアで競合が発生しています。つまり、tlb/albモードのボンディングドライバが仮想Etnernet MACアドレスとして一覧表示されているソースおよび宛先MACアドレスの両方を使用してEthernet Loopbackパケットを送信します。これらのパケットは電源ファームウェアによってサポートされていません。したがって、ボンディングモード5および6はibmvethによってサポートされません。

ボンディングデバイスを設定するには、次の手順に従います。

  1. YaST › システム › ネットワーク設定を実行します。

  2. 追加を使用し、デバイスの型ボンドに変更します。次へで続行します。

    Image
  3. IPアドレスをボンディングデバイスに割り当てる方法を選択します。3つの方法から選択できます。

    • IPアドレスなし

    • 可変IPアドレス(DHCPまたはZeroconf)

    • 固定IPアドレス

    ご使用の環境に適合する方法を使用します。

  4. Bondポートタブで該当するチェックボックスをオンにして、ボンドに含めるEthernetデバイスを選択します。

  5. ボンドドライバオプションを編集し、ボンディングモードを選択します。

  6. パラメータmiimon=100ボンドドライバオプションに追加されていることを確認します。このパラメータがないと、データの整合性が定期的にチェックされません。

  7. 次へをクリックし、OKでYaSTを終了して、デバイスを作成します。

23.7.1 Bondポートのホットプラグ

特定のネットワーク環境(高可用性など)では、Bondポートインタフェースを別のものに置換しなければならないことがあります。ネットワークデバイスで頻繁に障害が発生するなどの理由があります。解決方法として、Bondポートのホットプラグを設定します。

ボンドは以下のように(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=hotplugBOOTPROTO=noneで指定されます。

ifcfg-eth0
          STARTMODE='hotplug'
          BOOTPROTO='none'

ifcfg-eth1
          STARTMODE='hotplug'
          BOOTPROTO='none'

BOOTPROTO=noneethtoolオプション(指定した場合)を使用しますが、ifup eth0にはリンクアップを設定しません。これは、Bondポートインタフェースがボンドデバイスによって制御されるためです。

STARTMODE=hotplugにより、Bondポートインタフェースが利用可能になると、ボンドに自動的に追加されます。

/etc/udev/rules.d/70-persistent-net.rulesudevルールは、MACアドレスではなく、バスID(hwinfo --netcardで表示される"SysFS BusID"に等しいudev KERNELSキーワード)によってデバイスを一致させるために変更する必要があります。これにより、異常なハードウェア(同じスロットにあるがMACが異なるネットワークカード)の交換が可能になり、ボンドがすべてのBondポートのMACアドレスを変更するときに混乱を避けることができます。

例:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
KERNELS=="0000:00:19.0", ATTR{dev_id}=="0x0", ATTR{type}=="1",
KERNEL=="eth*", NAME="eth0"

ブート時にsystemd network.serviceはホットプラグBondポートを待機しませんが、ボンドの準備が整うのを待機します。これには少なくとも1つのBondポートが利用可能であることが必要です。Bondポートインタフェースの1つがシステムから削除されると(NICドライバからアンバインド、NICドライバのrmmod、または実際のPCIホットプラグ取り外し)、カーネルによってボンドから自動的に削除されます。システムに新しいカードが追加されると(スロットのハードウェアが置換されると)、udevは、バスベースの永続名規則を使って名前をBondポート名に変更し、ifupを呼び出します。ifup呼び出しによって、ボンドに自動的に追加されます。

23.8 ネットワークチーミング用チームデバイスの設定

リンク集約という用語は、論理層を提供するためにネットワーク接続を結合(または集約)することを表す一般用語です。チャネルチーミングEthernetボンディングポートトランケートなどの用語が使用されることもありますが、これらは同義語であり、同じ概念を表しています。

これは、ボンディングとして広く知られている概念であり、当初はLinuxカーネルに統合されていました(当初の実装については、23.7項 「ボンディングデバイスの設定」を参照)。「ネットワークチーミング」という用語は、この概念の新しい実装を表すために使用されます。

ボンディングとネットワークチーミングの主な違いは、チーミングはteamdインスタンスのインタフェースを提供する一連の小さなカーネルモジュールを供給するという点です。それ以外はすべてユーザ空間で処理されます。すべての機能がカーネル内に排他的に組み込まれている当初のボンディングの実装とは、この点が異なります。比較については、表23.5「ボンディングとチームの機能比較」を参照してください。

表 23.5: ボンディングとチームの機能比較
機能ボンディングチーム
ブロードキャスト、ラウンドロビンTXポリシーyesyes
アクティブバックアップTXポリシーyesyes
LACP (802.3ad)のサポートyesyes
ハッシュベースのTXポリシーyesyes
ユーザがハッシュ関数を設定可能noyes
TX負荷分散サポート(TLB)yesyes
LACPのTX負荷分散サポートnoyes
Ethtoolリンク監視yesyes
ARPリンク監視yesyes
NS/NA (IPV6)リンク監視noyes
TX/RXパスに対するRCUロックnoyes
ポートの優先順位とスティッキネスnoyes
ポートごとに別個のリンク監視設定noyes
複数のリンク監視設定limitedyes
VLANのサポートyesyes
複数デバイスのスタックyesyes
ソース: https://libteam.org/files/teamdev.pp.pdf

ボンディングとネットワークチーミングの両方の実装は、並行して使用できます。ネットワークチーミングは、既存のボンディング実装の代替手段です。ボンディングがネットワークチーミングに置き換わるわけではありません。

ネットワークチーミングは、さまざまな事例で使用できます。次の技術に関連する最も重要な2つの事例について、後で説明します。

  • 複数のネットワークデバイス間での負荷分散

  • ネットワークデバイスの1つに障害が発生した場合の、別のデバイスへのフェールオーバー

現在は、チーミングデバイスの作成をサポートするYaSTモジュールは存在しません。ネットワークチーミングは手動で設定する必要があります。一般的な手順を次に示します。この手順は、あらゆるネットワークチーミング設定に適用できます。

手順 23.1: 一般的な手順
  1. パッケージlibteam-toolsをインストールします:。

    > sudo zypper in libteam-tools
  2. /etc/sysconfig/network/に設定ファイルを作成します。通常は、ifcfg-team0という名前を付けます。複数のネットワークチーミングデバイスが必要な場合は、昇順に番号を付けます。

    この設定ファイルで使用するさまざまな変数については、マニュアルページ(man ifcfgおよびman ifcfg-team)を参照してください。設定例は、システム内にあるファイル/etc/sysconfig/network/ifcfg.templateで参照できます。

  3. チーミングデバイスに使用するインタフェースの設定ファイル(通常はifcfg-eth0およびifcfg-eth1)を削除します。

    どちらのファイルも、バックアップを作成してから削除することを推奨します。Wickedが、チーミングに必要なパラメータを含む設定ファイルを再作成します。

  4. 必要に応じて、Wickedの設定ファイルにすべてのパラメータが含まれているかどうかを確認します。

    > sudo wicked show-config
  5. ネットワークチーミングデバイスteam0を起動します。

    > sudo wicked ifup team0

    詳しいデバッグ情報が必要な場合は、allサブコマンドの後に--debug allオプションを指定します。

  6. ネットワークチーミングデバイスのステータスを確認します。それには、次のコマンドを実行します。

    • Wickedからteamdインスタンスの状態を取得します。

      > sudo wicked ifstatus --verbose team0
    • インスタンス全体の状態を取得します。

      > sudo teamdctl team0 state
    • teamdインスタンスのsystemd状態を取得します。

      > sudo systemctl status teamd@team0

    これらは必要に応じて少しずつ異なる情報を表示します。

  7. 後でifcfg-team0ファイルの内容を一部変更する必要がある場合は、次のコマンドでその設定を再ロードします。

    > sudo wicked ifreload team0

チーミングデバイスを起動または停止する場合、systemctlを使用「しない」でください。代わりに、上記のwickedコマンドを使用します。

チームデバイスを完全に削除するには、次の手順を実行します。

手順 23.2: チームデバイスの削除
  1. ネットワークチーミングデバイスteam0を停止します。

    > sudo wicked ifdown team0
  2. ファイル/etc/sysconfig/network/ifcfg-team0の名前を/etc/sysconfig/network/.ifcfg-team0に変更します。ファイル名の先頭にドットを挿入することにより、wickedでファイルが非表示になります。設定が本当に必要ない場合は、ファイルを削除することもできます。

  3. 設定を再ロードします。

    > sudo wicked ifreload all

23.8.1 使用事例: ネットワークチーミングによる負荷分散

負荷分散は帯域幅を改善するために使用されます。次の設定ファイルを使用して、負荷分散機能を備えたネットワークチーミングデバイスを作成します。手順23.1「一般的な手順」に従ってデバイスを設定します。teamdctlの出力を確認します。

例 23.12: ネットワークチーミングによる負荷分散の設定
STARTMODE=auto 1
BOOTPROTO=static 2
IPADDRESS="192.168.1.1/24" 2
IPADDR6="fd00:deca:fbad:50::1/64" 2

TEAM_RUNNER="loadbalance" 3
TEAM_LB_TX_HASH="ipv4,ipv6,eth,vlan"
TEAM_LB_TX_BALANCER_NAME="basic"
TEAM_LB_TX_BALANCER_INTERVAL="100"

TEAM_PORT_DEVICE_0="eth0" 4
TEAM_PORT_DEVICE_1="eth1" 4

TEAM_LW_NAME="ethtool" 5
TEAM_LW_ETHTOOL_DELAY_UP="10" 6
TEAM_LW_ETHTOOL_DELAY_DOWN="10" 6

1

チーミングデバイスの起動を制御します。値autoは、インタフェースが、ネットワークサービスを使用可能な場合に設定され、再起動時に毎回自動的に起動されることを意味します。

デバイスを手動で制御する(自動的に起動しないようにする)必要がある場合は、STARTMODEmanualに設定します。

2

静的IPアドレス(ここでは、IPv4の場合は192.168.1.1、IPv6の場合はfd00:deca:fbad:50::1)を設定します。

ネットワークチーミングデバイスが動的IPアドレスを使用する必要がある場合はBOOTPROTO="dhcp"を設定し、IPADDRESSIPADDR6の行を削除(またはコメント)します。

3

TEAM_RUNNERloadbalanceに設定して、負荷分散モードを有効にします。

4

ネットワークチーミングデバイスを作成するために集約する必要がある1つまたは複数のデバイスを指定します。

5

従属デバイスの状態を監視するリンクウォッチャを定義します。デフォルト値ethtoolは、デバイスが起動していてアクセス可能かどうかのみを確認します。その場合、この確認にはほとんど時間はかかりません。ただし、デバイスが実際にパケットを送受信できるかどうかの確認は行われません。

接続でさらに高い信頼性が必要な場合は、arp_pingオプションを使用します。これにより、任意のホスト(TEAM_LW_ARP_PING_TARGET_HOST変数で設定されている)にpingが送信されます。返信を受信した場合のみ、このネットワークチーミングデバイスが起動しているものとみなされます。

6

リンクが起動(または停止)してからランナに通知されるまでの遅延(ミリ秒)を定義します。

23.8.2 使用事例: ネットワークチーミングによるフェールオーバー

フェールオーバーは、並行して動作するバックアップネットワークデバイスを使用することにより、重要なネットワークチーミングデバイスの高可用性を確保するために使用します。バックアップネットワークデバイスは常時実行され、メインデバイスに障害が発生すると処理を引き継ぎます。

次の設定ファイルを使用して、フェールオーバー機能を備えたネットワークチーミングデバイスを作成します。手順23.1「一般的な手順」に従ってデバイスを設定します。teamdctlの出力を確認します。

例 23.13: DHCPネットワークチーミングデバイスの設定
STARTMODE=auto 1
BOOTPROTO=static 2
IPADDR="192.168.1.2/24" 2
IPADDR6="fd00:deca:fbad:50::2/64" 2

TEAM_RUNNER=activebackup 3
TEAM_PORT_DEVICE_0="eth0" 4
TEAM_PORT_DEVICE_1="eth1" 4

TEAM_LW_NAME=ethtool 5
TEAM_LW_ETHTOOL_DELAY_UP="10" 6
TEAM_LW_ETHTOOL_DELAY_DOWN="10" 6

1

チーミングデバイスの起動を制御します。値autoは、インタフェースが、ネットワークサービスを使用可能な場合に設定され、再起動時に毎回自動的に起動されることを意味します。

デバイスを手動で制御する(自動的に起動しないようにする)必要がある場合は、STARTMODEmanualに設定します。

2

静的IPアドレス(ここでは、IPv4の場合は192.168.1.2、IPv6の場合はfd00:deca:fbad:50::2)を設定します。

ネットワークチーミングデバイスが動的IPアドレスを使用する必要がある場合はBOOTPROTO="dhcp"を設定し、IPADDRESSIPADDR6の行を削除(またはコメント)します。

3

TEAM_RUNNERactivebackupに設定して、フェールオーバーモードを有効にします。

4

ネットワークチーミングデバイスを作成するために集約する必要がある1つまたは複数のデバイスを指定します。

5

従属デバイスの状態を監視するリンクウォッチャを定義します。デフォルト値ethtoolは、デバイスが起動していてアクセス可能かどうかのみを確認します。その場合、この確認にはほとんど時間はかかりません。ただし、デバイスが実際にパケットを送受信できるかどうかの確認は行われません。

接続でさらに高い信頼性が必要な場合は、arp_pingオプションを使用します。これにより、任意のホスト(TEAM_LW_ARP_PING_TARGET_HOST変数で設定されている)にpingが送信されます。返信を受信した場合のみ、このネットワークチーミングデバイスが起動しているものとみなされます。

6

リンクが起動(または停止)してからランナに通知されるまでの遅延(ミリ秒)を定義します。

23.8.3 使用事例: チームデバイス上でのVLAN

VLANはVirtual Local Area Network(仮想ローカルエリアネットワーク)の略です。複数の論理(仮想)Ethernetを1つの物理Ethernet上で実行できます。ネットワークを論理的に複数のブロードキャストドメインに分割し、パケットが同じVLANに指定されたポート間でのみ切り替えられるようにします。

次の使用例では、チームデバイス上に静的なVLANを2つ作成します。

  • vlan0。IPアドレス192.168.10.1にバインドされます。

  • vlan1。IPアドレス192.168.20.1にバインドされます。

以下に手順を示します。

  1. スイッチでVLANタグを有効にします。チームデバイスに負荷分散を使用するには、スイッチがLink Aggregation Control Protocol (LACP) (802.3ad)に対応している必要があります。詳細については、ハードウェアマニュアルを参照してください。

  2. チームデバイスで負荷分散またはフェールオーバーのどちらを使用するかを決定します。23.8.1項 「使用事例: ネットワークチーミングによる負荷分散」または23.8.2項 「使用事例: ネットワークチーミングによるフェールオーバー」の説明に従ってチームデバイスを設定します。

  3. /etc/sysconfig/network内に、次の内容が含まれるファイルifcfg-vlan0を作成します。

    STARTMODE="auto"
    BOOTPROTO="static" 1
    IPADDR='192.168.10.1/24' 2
    ETHERDEVICE="team0" 3
    VLAN_ID="0" 4
    VLAN='yes'

    1

    IPADDRで指定された固定IPアドレスを定義します。

    2

    IPアドレスを定義します。ここではネットマスクを一緒に定義しています。

    3

    VLANインタフェースに使用する実際のインタフェースが含まれます。ここでは、チームデバイス(team0)です。

    4

    VLANの固有IDを指定します。できれば、ファイル名とVLAN_IDは、ifcfg-vlanVLAN_IDという名前に対応するようにします。この場合、VLAN_ID0で、ファイル名はifcfg-vlan0になります。

  4. ファイル/etc/sysconfig/network/ifcfg-vlan0/etc/sysconfig/network/ifcfg-vlan1にコピーし、次の値を変更します。

    • IPADDRは、192.168.10.1/24から192.168.20.1/24に変更。

    • VLAN_IDは、0から1に変更。

  5. 2つのVLANを起動します。

    # wicked ifup vlan0 vlan1
  6. ifconfigの出力を確認します。

    # ifconfig -a
    [...]
    vlan0     Link encap:Ethernet  HWaddr 08:00:27:DC:43:98
              inet addr:192.168.10.1 Bcast:192.168.10.255 Mask:255.255.255.0
              inet6 addr: fe80::a00:27ff:fedc:4398/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 b)  TX bytes:816 (816.0 b)
    
    vlan1     Link encap:Ethernet  HWaddr 08:00:27:DC:43:98
              inet addr:192.168.20.1 Bcast:192.168.20.255 Mask:255.255.255.0
              inet6 addr: fe80::a00:27ff:fedc:4398/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 b)  TX bytes:816 (816.0 b)

23.9 Open vSwitchによるソフトウェア定義型ネットワーキング

SDN(Software-defined networking)とは、トラフィックの送信先を制御するシステム(「コントロールプレーン」)と、選択されたあて先にトラフィックを転送する基盤システム(「データプレーン」または「転送プレーン」)を分離することを意味します。これは、従来は原則として柔軟性のない1台のスイッチで実現されていた機能を、スイッチ(データプレーン)とそのコントローラ(コントロールプレーン)に分離できるようになったことを意味します。このモデルでは、コントローラはプログラム可能であり、ネットワーク条件の変化に対して非常に柔軟かつ速やかに適応できます。

Open vSwitchは、OpenFlowプロトコルと互換性がある分散仮想多層スイッチを実装するソフトウェアです。OpenFlowを使用すると、コントローラアプリケーションがスイッチの設定を変更できるようになります。OpenFlowは、TCPプロトコル上に階層化され、さまざまなハードウェアやソフトウェアで実装されます。したがって、1つのコントローラで、複数のまったく異なるスイッチを操作できます。

23.9.1 Open vSwitchの利点

Open vSwitchによるソフトウェア定義型ネットワーキングには、さまざまな利点があり、特に仮想マシンと併用した場合に威力を発揮します。

  • ネットワーキングの状態を簡単に識別できます。

  • ネットワークとそのライブ状態をホスト間で移動できます。

  • ネットワークの動作状態を追跡可能であり、外部ソフトウェアでそれらに対応できます。

  • ネットワークパケットでタグを適用および操作して、送信元や送信先のマシンを識別したり、他のネットワーキングコンテキストを管理したりできます。タグ付けルールを設定および移行できます。

  • Open vSwitchは、GREプロトコル(「Generic Routing Encapsulation」)を実装しています。これにより、たとえば複数のプライベートVMネットワークを相互に接続できます。

  • Open vSwitchは単独でも使用できますが、ネットワーキングハードウェアと統合するように設計されており、ハードウェアスイッチを制御できます。

23.9.2 Open vSwitchのインストール

  1. Open vSwitchと付属のパッケージをインストールします。

    # zypper install openvswitch openvswitch-switch

    Open vSwitchをKVM hypervisorと併用する場合は、さらにtunctlをインストールます。Open vSwitchをXen hypervisorと併用する場合は、さらにopenvswitch-kmp-xenをインストールします。

  2. Open vSwitchサービスを有効にします。

    # systemctl enable openvswitch
  3. コンピュータを再起動するかsystemctlを使用して、Open vSwitchサービスをただちに開始します。

    # systemctl start openvswitch
  4. Open vSwitchが有効になったかどうかを確認するには、次のコマンドを使用します。

    # systemctl status openvswitch

23.9.3 Open vSwitchのデーモンとユーティリティの概要

Open vSwitchは、さまざまなコンポーネントで構成されます。カーネルモジュールとさまざまなユーザ空間コンポーネントはその一部です。カーネルモジュールは、データパスを高速化するために使用されますが、Open vSwitchの最小インストールには必要ありません。

23.9.3.1 デーモン

Open vSwitchの中核を成す実行可能ファイルは、2つのデーモンです。openvswitchサービスを開始することで、それらのデーモンを間接的に起動することになります。

Open vSwitchのメインデーモン(ovs-vswitchd)は、スイッチの実装を提供します。Open vSwitchデータベースデーモン(ovsdb-server)は、Open vSwitchの設定と状態が保存されるデータベースとして機能します。

23.9.3.2 ユーティリティ

Open vSwitchには、その操作に役立つさまざまなユーティリティも付属しています。次に、すべてのコマンドではなく、重要なコマンドについてのみ説明します。

ovsdb-tool

Open vSwitchデータベースの作成、アップグレード、圧縮、およびクエリを実行します。Open vSwitchデータベースでトランザクションを実行します。

ovs-appctl

実行中のovs-vswitchdデーモンまたはovsdb-serverデーモンを設定します。

ovs-dpctlovs-dpctl-top

データパスを作成、変更、視覚化、および削除します。このツールを使用すると、データパス管理を同様に実行しているovs-vswitchdの動作の妨げになる可能性があります。したがって、通常は診断を目的としてのみ使用します。

ovs-dpctl-topは、topと同様の方法でデータパスを視覚化します。

ovs-ofctl

OpenFlowプロトコルを遵守するスイッチを管理します。ovs-ofctlは、Open vSwitchとのやり取り以外にも使用できます。

ovs-vsctl

設定データベースに対する上位インタフェースを提供します。データベースのクエリおよび変更に使用できます。実際には、ovs-vswitchdのステータスを表示するほか、その設定を行うためにも使用できます。

23.9.4 Open vSwitchによるブリッジの作成

次の設定例では、SUSE Linux Enterprise Serverでデフォルトで使用されるWickedネットワークサービスを使用します。Wickedの詳細については、23.5項 「ネットワーク接続の手動環境設定」を参照してください。

Open vSwitchをすでにインストールして起動している場合は、次の手順に従います。

  1. 仮想マシンで使用するブリッジを設定するには、次のような内容のファイルを作成します。

    STARTMODE='auto'1
    BOOTPROTO='dhcp'2
    OVS_BRIDGE='yes'3
    OVS_BRIDGE_PORT_DEVICE_1='eth0'4

    1

    ネットワークサービスの開始時に自動的にブリッジを設定します。

    2

    IPアドレスの設定に使用するプロトコル。

    3

    Open vSwitchブリッジとして設定するよう指定します。

    4

    ブリッジに追加する必要があるデバイスを選択します。デバイスを追加するには、デバイスごとに追加の行をファイルに追加します。

    OVS_BRIDGE_PORT_DEVICE_SUFFIX='DEVICE'

    SUFFIXには、任意の英数字文字列を指定できます。ただし、既存の定義を上書きしないように、各デバイスのSUFFIXが固有であることを確認します。

    ファイルにifcfg-br0という名前を付けて、ディレクトリ/etc/sysconfig/networkに保存します。br0の代わりに任意の名前を指定できます。ただし、ファイル名はifcfg--で始まる必要があります。

    その他のオプションについては、ifcfg (man 5 ifcfg)およびifcfg-ovs-bridge (man 5 ifcfg-ovs-bridge)のマニュアルページを参照してください。

  2. ブリッジを起動します。

    # wicked ifup br0

    Wickedが実行されると、ブリッジの名前、およびその横に状態upが出力されるはずです。

23.9.5 KVMで直接Open vSwitchを使用する

23.9.4項 「Open vSwitchによるブリッジの作成」の説明に従ってブリッジを作成した後は、KVM/QEMUで作成した仮想マシンのネットワークアクセスを、Open vSwitchを使用して管理できます。

  1. Wickedの機能を最大限に活用できるように、ブリッジの既存の設定をいくつか変更します。前に作成した/etc/sysconfig/network/ifcfg-br0を開き、別のポートデバイスの行を追加します。

    OVS_BRIDGE_PORT_DEVICE_2='tap0'

    さらに、BOOTPROTOnoneに設定します。ファイルは次のようになるはずです。

    STARTMODE='auto'
    BOOTPROTO='none'
    OVS_BRIDGE='yes'
    OVS_BRIDGE_PORT_DEVICE_1='eth0'
    OVS_BRIDGE_PORT_DEVICE_2='tap0'

    新しいポートデバイスtap0は、次のステップで設定します。

  2. 次に、tap0デバイスの設定ファイルを追加します。

    STARTMODE='auto'
    BOOTPROTO='none'
    TUNNEL='tap'

    ファイルにifcfg-tap0という名前を付けて、ディレクトリ/etc/sysconfig/networkに保存します。

    ヒント
    ヒント: tapデバイスへのアクセスを他のユーザに許可する

    root以外のユーザとして起動した仮想マシンからこのtapデバイスを使用できるようにするには、次の行を追加します。

    TUNNEL_SET_OWNER=USER_NAME

    グループ全体にアクセスを許可するには、次の行を追加します。

    TUNNEL_SET_GROUP=GROUP_NAME
  3. 最後に、最初のOVS_BRIDGE_PORT_DEVICEとして定義されているデバイスの設定を開きます。名前は、変更していなければ、eth0です。したがって、/etc/sysconfig/network/ifcfg-eth0を開き、次のオプションが設定されていることを確認します。

    STARTMODE='auto'
    BOOTPROTO='none'

    このファイルがまだ作成されていない場合は、作成してください。

  4. Wickedを使用して、ブリッジインタフェースを再起動します。

    # wicked ifreload br0

    これにより、新しく定義したブリッジポートデバイスの再ロードもトリガされます。

  5. 仮想マシンを起動するには、たとえば次の手順を実行します。

    # qemu-kvm \
    -drive file=/PATH/TO/DISK-IMAGE1 \
    -m 512 -net nic,vlan=0,macaddr=00:11:22:EE:EE:EE \
    -net tap,ifname=tap0,script=no,downscript=no2

    1

    起動するQEMUディスクイメージへのパス。

    2

    前に作成したデバイス(tap0tap)を使用します。

    KVM/QEMUの使用の詳細については、Part V, “Managing virtual machines with QEMU”を参照してください。

23.9.6 libvirtによるOpen vSwitchの使用

23.9.4項 「Open vSwitchによるブリッジの作成」の説明に従ってブリッジを作成した後は、libvirtで管理している既存の仮想マシンに、ブリッジを追加できます。libvirtはすでにOpen vSwitchブリッジを一部サポートしているので、ネットワーキング設定を変更せずに23.9.4項 「Open vSwitchによるブリッジの作成」で作成したブリッジを使用できます。

  1. 対象の仮想マシンのドメインXMLファイルを開きます。

    # virsh edit VM_NAME

    VM_NAMEを、対象の仮想マシンの名前で置き換えます。これにより、デフォルトのテキストエディタが開きます。

  2. ドキュメントのネットワーキングセクションを探します。このセクションは、<interface type="...">で始まって、</interface>で終わります。

    既存のセクションを、次のようなネットワーキングセクションで置き換えます。

    <interface type='bridge'>
      <source bridge='br0'/>
      <virtualport type='openvswitch'/>
    </interface>
    重要
    重要: Open vSwitchにおけるvirsh iface-*および仮想マシンマネージャとの互換性

    現時点では、Open vSwitchにおけるlibvirtとの互換性は、virsh iface-*ツールおよび仮想マシンマネージャを使用した場合には認められていません。これらのツールを使用すると、設定が壊れる可能性があります。

  3. これで、仮想マシンを通常通りに起動または再起動できるようになります。

libvirtの使用の詳細については、Part II, “Managing virtual machines with libvirtを参照してください。

23.9.7 詳細情報

SDNの詳細については、Open vSwitchプロジェクトのWebサイト(https://docs.openvswitch.org/en/latest/#documentation)のドキュメントセクションを参照してください。