ネットワークソフトウェアの手動環境設定は、常に最後の手段です。 設定には可能な限りYaSTを使用してください。 しかし、ネットワークの環境設定に関する背景知識がYaSTでの設定作業に役立つことがあります。
すべての内蔵式のネットワークカードおよびホットプラグのネットワークカード(PCMCIA、USB、一部のPCIカード)は、hotplugによって検出され、設定されます。ネットワークカードの 2 つの側面システムは、ネットワークカードを物理デバイスとインタフェースという 2 つの見方で捉えます。デバイスが挿入または検出されると、ホットプラグイベントが生成されます。 このホットプラグイベントによって、hwupスクリプトが実行され、デバイスが初期化されます。ネットワークカードが新しいネットワークインタフェースとして初期化されると、カーネルによって別のホットプラグイベントが生成され、それにより/sbin/ifupが実行されてインタフェースがセットアップされます。
カーネルは、登録順に従ってインタフェース名に番号を付けます。割り当てられる名前は、初期化の順序によって決まります。あるネットワークカードの初期化に失敗した場合、その後に初期化されるカードの番号は1つずつずらされます。実際のホットプラグ対応カードでは、デバイスを接続する順序が重要になります。
柔軟な環境設定を可能にするために、デバイス(ハードウェア)の環境設定とインタフェースの環境設定は切り分けられ、デバイスの環境設定とインタフェースの環境設定のマッピングをインタフェース名で管理する方式は廃止されました。デバイスの環境設定は、/etc/sysconfig/hardware/hwcfg-*に格納されます。インタフェースの環境設定は、/etc/sysconfig/network/ifcfg-*に格納されます。これらの環境設定ファイルには、そのファイルに関連付けられるデバイスまたはインタフェースを表す名前が付けられます。ドライバをインタフェース名にマッピングする従来の方式では静的なインタフェース名が必要なため、このマッピングを/etc/modprobe.confで行うことはできなくなりました。この新しい方式では、このファイルにエイリアスエントリが設定されていると、好ましくない副作用が発生することがあります。
環境設定名、すなわち、hwcfg-またはifcfg-の後の部分では、スロット、デバイス固有のID、インタフェース名などでデバイスを表します。たとえば、PCIカードの環境設定名は、bus-pci-0000:02:01.0 (PCIスロット)、vpid-0x8086-0x1014-0x0549 (メーカー名と製品ID)などになります。対応するインタフェース名は、bus-pci-0000:02:01.0、wlan-id-00:05:4e:42:31:7a (MACアドレス)などになります。
特定のカードではなく特定のタイプのカードにネットワークの環境設定を割り当てる場合は(ただし、同じタイプのカードを同時に2枚以上は装着しない)、もう少し汎用的な設定名を選択します。たとえば、すべてのPCMCIAカードに対してbus-pcmciaという設定名を使用できます。一方、先頭にインタフェースタイプが付いた限定的な設定名も使用できます。たとえば、USBポートに接続するWLANカードにはwlan-bus-usbという設定名を付けることができます。
システムは常に、インタフェースまたはそのインタフェースを提供するデバイスに最適な環境設定を使用します。 最適な環境設定の検索は、getcfgによって行われます。getcfgの出力には、デバイスを記述するために使用できるすべての情報が含まれています。環境設定名の指定の詳細については、getcfgのマニュアルページを参照してください。
この方法により、ネットワークデバイスは常に同じ順序で初期化されるとは限りませんが、ネットワークインタフェースは適切に設定されます。ただし、インタフェース名は、やはり初期化の順序によって決まります。特定のネットワークカードのインタフェースに確実にアクセスするには、次の2とおりの方法があります。
getcfg-interfaceを実行すると、対応するネットワークインタフェース名が返されます。 したがって、一部の環境設定ファイルでは、ファイアウォール、dhcpd、ルーティング、各種仮想ネットワークインタフェース(トンネル)などの設定名を、固定的でないインタフェース名の代わりに指定できます。
configuration name
環境設定にインタフェース名が含まれていないすべてのインタフェースには、固定的なインタフェース名を割り当てることができます。これを行うには、インタフェース設定 (ifcfg-*) の PERSISTENT_NAME= という名前のエントリを使用します。ただし、固定名pnamepnameは、カーネルによって自動的に割り当てられる名前とは異なっていなければなりません。 そのため、eth*、tr*、wlan*などの名前は使用できません。このような名前ではなく、net*またはexternal、internal、dmz.などの説明的な名前を使用します。固定名は、登録直後にのみインタフェースに割り当てることができます。つまり、ネットワークカードのドライバを再ロードするか、hwupを実行する必要があります。rcnetworkデバイス記述restartコマンドを実行するだけでは不十分です。
![]() | 固定的なインタフェース名の使用について |
|---|---|
固定的なインタフェース名の使用は、一部の領域ではテストされていません。したがって、アプリケーションによっては、自由に選択したインタフェース名を使用できないことがあります。 | |
ifupはハードウェアを初期化しないため、すでに存在しているインタフェースを必要とします。ハードウェアの初期化は、hwupコマンドによって行われます(このコマンドはhotplugまたはcoldplugによって実行されます)。デバイスが初期化されると、hotplugによってifup が新しいインタフェースに対して自動的に実行され、実行モードがonboot、hotplug、またはautoでありnetworkサービスが既に起動していれば、インタフェースがセットアップされます。 従来は、ifup コマンドによってハードウェアの初期化が行われていましたが、新しいバージョンでは処理順序が逆になりました。まず、ハードウェアコンポーネントを初期化してから、その他の処理が行われます。この方法により、可変数のデバイスを、既存の環境設定を用いてできる限り最適な方法で設定できます。
interfacename
表 38.5. 「手動ネットワーク環境設定用スクリプト」に、ネットワークの環境設定関連の最も重要なスクリプトをまとめます。各スクリプトはハードウェアとインタフェースに分類してあります。
表 38.5. 手動ネットワーク環境設定用スクリプト
環境設定段階 | コマンド | 機能 |
|---|---|---|
ハードウェア | hw{up,down,status} |
|
インタフェース | getcfg | getcfgは、環境設定名またはハードウェア記述に対応するインタフェース名の問い合わせに使用します。詳細は、getcfgのマニュアルページを参照してください。 |
インタフェース | if{up,down,status} |
|
ホットプラグおよび固定的なデバイス名の詳細については、章 32. ホットプラグシステムおよび章 33. udevをもつ動的デバイスノードを参照してください。
ここでは、ネットワークの環境設定ファイルの概要を紹介し、その目的と使用される形式について説明します。
これらのファイルには、ネットワークカードおよびその他のデバイスのハードウェアの環境設定が記述されています。これには、カーネルモジュール、実行モード、スクリプトの関連付けなどの必要なパラメータが含まれます。詳細については、hwupのマニュアルページを参照してください。存在しているハードウェアとは無関係に、coldplugの起動時にはhwcfg-static-*が適用されます。
これらのファイルには、ネットワークインタフェースの環境設定が記述されています。これには、実行モード、IPアドレスなどが含まれます。指定可能なパラメータについては、ifupのマニュアルページを参照してください。また、一般的設定を1つのインタフェースだけに使用する場合は、dhcp、wireless、およびconfigの各ファイルにあるすべての変数が、ifcfg-*ファイルで使用されます。
configファイルには、ifup、ifdown、およびifstatusの動作に関する汎用的な設定が記述されています。また、dhcpにはDHCPの設定が、wirelessには無線LANカードの設定が記述されています。これら3つの環境設定ファイルの変数にはコメントが付けられており、優先度の高い変数としてifcfg-*ファイルでも使用できます。
TCP/IPパケットの静的ルーティングが設定されています。 各種システムタスクで必要となるすべての静的経路(ホストへの経路、ゲートウェイを介したホストへの経路、ネットワークへの経路)は、/etc/sysconfig/network/routesファイルに指定します。 個別のルーティングを必要とする各インタフェースには、追加の環境設定ファイル/etc/sysconfig/network/ifroute-*を定義します。*はインタフェース名で読み替えてください。経路の環境設定ファイルのエントリは次のようになります。
# Destination Dummy/Gateway Netmask Device # 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
第1列は、経路の宛先です。この列には、ネットワークまたはホストのIPアドレスが入ります。到達可能なネームサーバの場合は、完全に修飾されたネットワークまたはホスト名が入ります。
第2列は、デフォルトゲートウェイ、すなわちホストまたはネットワークにアクセスする際に経由するゲートウェイです。第3列は、ゲートウェイの背後にあるネットワークまたはホストのネットマスクです。たとえば、ゲートウェイの背後にあるホストのネットマスクは、255.255.255.255になります。
最後の列は、ローカルホスト(ループバック、イーサネット、ISDN、PPP、ダミーデバイスなど)に接続されたネットワークのみに関連します。ここには、デバイス名を指定する必要があります。
(オプションの) 5番目のコラムには、経路のタイプを指定することができます。 必要ではないコラムには、マイナス記号-を記述してください。これは、パーサがコマンドを正しく解釈できるようにするためです。 詳細は、routes(5) manページを参照してください。
このファイルには、ホストが属するドメインが指定されています(キーワードsearch)。また、アクセスするネームサーバアドレスのステータスのリストも記述されています(キーワードnameserver)。ドメイン名は複数指定することができます。完全修飾でない名前を解決する場合は、searchの各エントリを付加して完全修飾名の生成が試みられます。複数のネームサーバを使用するには、nameserverで始まる行を複数行入力します。 /etc/resolv.confコメントは#記号の後に記入します。YaSTは、指定されているネームサーバをこのファイルに記述します。例 38.5. 「/etc/resolv.conf」に/etc/resolv.confの例を示します。
例 38.5. /etc/resolv.conf
# Our domain search example.com # # We use sun (192.168.0.20) as nameserver nameserver 192.168.0.20
pppd (wvdial)、ipppd (isdn)、dhcp (dhcpcd、dhclient)、pcmcia、hotplugなどの一部のサービスは、スクリプトmodify_resolvconfを使用してファイル/etc/resolv.confに変更を加えます。ファイル/etc/resolv.confがこのスクリプトによって一時的に変更された場合、変更を加えたサービス、元のファイルがバックアップされている場所、および自動変更メカニズムを無効にする方法を示す事前定義のコメントが付されます。/etc/resolv.confが複数回変更された場合、ファイルには変更内容がネスト形式で保存されます。変更が行われた順序と異なる順序で復元を行った場合も、問題なく元通りに復元できます。このような柔軟性を必要とするサービスには、isdn、pcmcia、およびhotplugがあります。
サービスが通常のクリーンな状態で停止しなかった場合、modify_resolvconfを使用して元のファイルを復元することができます。また、システムブート時に、クリーンアップされていない変更されたresolv.confが存在しないかがチェックされ(たとえば、システムクラッシュがあった場合)、存在する場合は、元の(変更されていない) resolv.confが復元されます。
YaSTは、modify_resolvconf checkコマンドを使用して、resolv.confが変更されているかどうかを確認し、ユーザに対してファイルの復元後は変更内容が失われることを警告します。YaSTはこれ以外の作業でmodify_resolvconfに依存しないため、YaSTを使用して resolv.confを変更した場合の影響は、手動で変更した場合と同じです。どちらの場合も、変更は永久に有効です。一方、前述のサービスによって要求された変更は、一時的に有効なだけです。
このファイル(例 38.6. 「/etc/hosts」を参照)では、IIPアドレスがホスト名に割り当てられています。ネームサーバが実装されていない場合は、IP接続をセットアップするすべてのホストをここにリストする必要があります。ファイルには、各ホストについて1行を入力し、IPアドレス、完全修飾ホスト名、およびホスト名を指定します。IPアドレスは、行頭に指定し、各エントリはブランクとタブで区切ります。コメントは常に#記号の後に記入します。
このファイルには、ネットワーク名とネットワークアドレスの対応が記述されています。 形式は、ネットワーク名をアドレスの前に指定すること以外は、hostsファイルと同様です。例 38.7. 「/etc/networks」を参照してください。
このファイルは、名前解決(resolverライブラリによるホスト名とネットワーク名の変換)を制御します。このファイルは、libc4またはlibc5にリンクされているプログラムについてのみ使用されます。最新のglibcプログラムについては、/etc/nsswitch.confの設定を参照してください。パラメータは、その行内で常に独立しています。コメントは#記号の後に記入します。表 38.6. 「/etc/host.confファイルのパラメータ」に、利用可能なパラメータを示します。/etc/host.confの例については、例 38.8. 「
/etc/host.conf
」を参照してください。
表 38.6. /etc/host.confファイルのパラメータ
hosts、bindの順序 | 名前の解決の際、サービスがアクセスされる順序を指定します。有効な引数は次のとおりです(空白またはカンマで区切ります)。 |
hosts: | |
bind:ネームサーバにアクセスします。 | |
nis:NISを経由します。 | |
multi on/off |
|
nospoof on spoofalert on/off | これらのパラメータは、ネームサーバspoofingに影響を与えますが、それ以外のネットワークの環境設定に対してまったく影響を与えません。 |
trim domainname |
ホスト名が解決された後、指定したドメイン名をホスト名から切り離します(ホスト名にドメイン名が含まれている場合)。このオプションは、ローカルドメインにある名前だけが |
GNU C Library 2.0を導入すると、Name Service Switch (NSS)も合わせて導入されます。 詳細については、nsswitch.conf(5) manページおよび『The GNU C Library Reference Manual』を参照してください。
クエリの順序は、ファイル/etc/nsswitch.confで定義します。nsswitch.confの例については、例 38.9. 「/etc/nsswitch.conf」を参照してください。コメントは#記号の後に記入します。この例では、hostsデータベースのエントリによると、要求がDNS (章 40. ドメインネームシステムを参照)経由で/etc/hosts (files)に送信されています。
例 38.9. /etc/nsswitch.conf
passwd:compat group:compat hosts:files dns networks:files dns services:db files protocols:db files netgroup:files automount: files nis
NSSで利用できる「データベース」については、表 38.7. 「/etc/nsswitch.confで利用できるデータベース」を参照してください。それらに加えて、automount、bootparams、netmasks、およびpublickeyが近い将来導入される予定です。
NSSデータベースの環境設定オプションについては、表 38.8. 「NSS 「データベース」の環境設定オプション」を参照してください。
表 38.7. /etc/nsswitch.confで利用できるデータベース
|
|
| イーサネットアドレス |
|
|
|
|
|
アクセス許可を制御するための、ネットワーク内にある有効なホストとユーザのリスト。 |
|
ネットワーク名とアドレス。 |
|
ユーザパスワード。 |
|
ネットワークプロトコル。 |
|
リモートプロシージャコール名とアドレス。 |
|
ネットワークサービス。 |
|
ユーザのシャドウパスワード。 |
表 38.8. NSS 「データベース」の環境設定オプション
|
たとえば |
| データベース経由のアクセス。 |
| NIS。章 41. NISの使用を参照。 |
|
|
|
|
このファイルは、nscd (name service cache daemon)の環境設定に使用します。 nscd(8)およびnscd.conf(5) manページを参照してください。デフォルトでは、nscdによってpasswdとgroupsのシステムエントリがキャッシュされます。 キャッシュが行われないと名前やグループにアクセスするたびにネットワーク接続が必要になるため、このキャッシュ処理はNISやLDAPといったディレクトリサービスのパフォーマンスに関して重要な意味を持ちます。 hostsはデフォルトではキャッシュされません。これは、nscdでホストをキャッシュすると、ローカルシステムで正引き参照と逆引き参照のルックアップチェックを信頼できなくなるからです。したがって、nscdを使用して名前をキャッシュするのではなく、キャッシュDNSサーバをセットアップします。
passwdオプションのキャッシュを有効にすると、新しく追加したローカルユーザが認識されるまで、通常、約15秒かかります。この待ち時間を短縮するには、コマンドrcnscdrestartを使用してnscdを再起動します。
前述の環境設定ファイルに加え、マシンのブート時にネットワークプログラムをロードするさまざまなスクリプトも用意されています。 これらは、システムがマルチユーザランレベルのいずれかに切り替わったときに起動します(表 38.9. 「ネットワークプログラム用スタートアップスクリプト」も参照)。
表 38.9. ネットワークプログラム用スタートアップスクリプト
このスクリプトは、ネットワークインタフェースの環境設定を処理します。ハードウェアが事前に(hotplug経由で) /etc/init.d/coldplugによって初期化されている必要があります。networkサービスが起動していないと、ネットワークインタフェースは、ホットプラグ経由で挿入されたときに初期化されません。 | |
xinetdを起動します。xinetdを使用すると、サーバサービスがシステム上で利用できるようになります。たとえば、FTP接続の開始時に必ずvsftpdを起動するといったことができます。 | |
NFSサーバなどのRPCサーバに必要なポートマッパを起動します。 | |
NFSサーバを起動します。 | |
sendmailプロセスを制御します。 | |
NISサーバを起動します。 | |
NISクライアントを起動します。 |