Handbook:Parts/Networking/Advanced/ja

高度な設定
config_eth0 変数は、インターフェースの設定の中心です. これはインターフェース（この場合eth0）を設定する高レベルの命令リストです. この命令リストの各コマンドは順に実行されます. 少なくとも1つのコマンドが動作すれば、インターフェースはOKとみなします.

ビルドインの命令一覧です：

コマンドが失敗する場合の fallback 値を設定してください. fallback は config の構造と正確に一致している必要があります.

これらの値を一緒に繋げることが可能です. これは実際の例です：

ネットワーク依存関係
内の init スクリプトは、特定のネットワークインターフェース、または単に "net" に依存することができます. Gentoo の init システム内のすべてのネットワークインターフェースは、"net" と呼ばれるものを提供します.

もし 内で rc_depend_strict 変数が   に設定されている場合、"net" への依存関係が満たされたと見なされるためには、"net" を提供するすべてのネットワークインターフェースがアクティブでなくてはなりません. 言い換えると、システムが net.eth0 と net.eth1 を持ち、ある init スクリプトが "net" に依存している場合、両方が有効でなくてはなりません.

一方、 が設定されていると、少なくともひとつのネットワークインターフェースが有効になった時点で、"net" 依存関係は解決されたものとしてマークされます.

しかし、net.br0 が net.eth0 と net.eth1 に依存している場合はどうでしょう？ net.eth1 はブリッジに追加する前に構成を必要とする、無線デバイスや PPP デバイスであるかもしれません. が net.lo へのシンボリックリンクである限り、その中では設定することができません.

これに対する答えは 内で rc_net_{interface}_need 設定を定義することです:

しかし、これだけでは不十分です. Gentoo のネットワーク init スクリプトは、"net" と呼ばれる仮想依存を、ネットワークが利用可能になったときにシステムに通知するために使用します. 上のケースでは明らかに、net.br0 が稼働しているときだけネットワークは利用可能としてマークされるべきで、他のネットワークインターフェースが稼働しているときではありません. そこで、 にそのことも書く必要があります:

依存関係についてのさらに詳しい説明については、Gentoo ハンドブックの init スクリプトの編集についてのセクションを確認してください. についてのさらなる情報は、当ファイル内にコメントとして書かれています.

変数名と値
変数の名前は動的に決まります. 通常は、 という構造に従います. 例えば、 dhcpcd_eth0 は eth0 のための dhcpcd のオプションの値を保持し、 dhcpcd_essid は、あるインターフェースが "essid" という ESSID に接続するときの dhcpcd のオプションの値を保持します.

しかしながら、インターフェース名が ethx のような名前でなくてはならない確実なルールは存在しません. 実際に、多くの無線インターフェースは ethx の他に、wlanx あるいは rax のような名前を持つことがあります. さらに、ブリッジなどの一部のユーザー定義インターフェースは、好きな名前を付けられます. さらに愉快なことに、無線アクセスポイントは半角英数以外の文字の文字を含むことができます. これはユーザが ESSID ごとのネットワークパラメータを設定するときに重要です.

これの何が問題かというと、Gentoo がネットワークのために bash 変数を利用していて、bash は半角英数以外の文字を使えないということです. この制限を回避するために、私たちは非半角英数の文字をすべて _ (アンダースコア) 文字に置き換えます.

bash のもうひとつの問題は、変数の値です. 一部の文字をエスケープする必要があります. これは、エスケープする必要がある文字の前に \ (バックスラッシュ) 文字を置くことで行えます. エスケープする必要がある文字は、、、そして です.

次の例では、利用できる文字の最大範囲を含む無線 ESSID を使用します. 私たちは ESSID My "\ NET を使用します:

上の例は、ESSID が My "\ NET であるアクセスポイントに無線カードが接続しているときに、DNS ドメインを My "\ NET に設定します.

動作の仕組み
ネットワークインターフェースの名前は任意に選択されます: Linux カーネルとデバイスマネージャ (多くのシステムではデバイスマネージャとして udev を使用しますが、他も利用可能です) が、一定のルールに基づいてインターフェース名を選択します.

インターフェースカードがシステムで検出されたとき、Linux カーネルはこのカードについての必要なデータを収集します. これには以下が含まれます:


 * The onboard (on the interface itself) registered name of the network card, which is later seen through the ID_NET_NAME_ONBOARD value.
 * The slot in which the network card is plugged in, which is later seen through the ID_NET_NAME_SLOT value.
 * The path through which the network card device can be accessed, which is later seen through the ID_NET_NAME_PATH value.
 * The (vendor-provided) MAC address of the card, which is later seen through the ID_NET_NAME_MAC value.

Based on this information, the device manager decides how to name the interface on the system. By default, it uses the first hit of the first three variables above ( ID_NET_NAME_ONBOARD, _SLOT or _PATH ). For instance, if ID_NET_NAME_ONBOARD is found and set to, then the interface will be called eno1.

Given an active interface name, the values of the provided variables can be shown using :

As the first (and actually only) hit of the top three variables is ID_NET_NAME_PATH, its value is used as the interface name. If none of the variables contain values, then the system reverts back to the kernel-provided naming (eth0, eth1, etc.)

Using the old-style kernel naming
Before this change, network interface cards were named by the Linux kernel itself, depending on the order that drivers are loaded (amongst other, possibly more obscure reasons). This behavior can still be enabled by setting the  boot parameter in the boot loader.

Using custom names
The entire idea behind the change in naming is not to confuse people, but to make changing the names easier. Suppose a system has two interfaces that are otherwise called eth0 and eth1. One is meant to access the network through a wire, the other one is for wireless access. With the support for interface naming, users can have these called lan0 (wired) and wifi0 (wireless - it is best to avoid using the previously well-known names like eth* and wlan* as those can still collide with the suggested names).

Find out what the parameters are for the cards and then use this information to set up a custom own naming rule:

Because the rules are triggered before the default one (rules are triggered in alphanumerical order, so 70 comes before 80) the names provided in the rule file will be used instead of the default ones. The number granted to the file should be between 76 and 79 (the environment variables are defined by a rule start starts with 75 and the fallback naming is done in a rule numbered 80).