|
1.
高度な設定
config_eth0変数が、インターフェースの設定の要です。
config_eth0は、インターフェース(この場合はeth0)設定用の高度な設定値のリストです。
設定値のリストに含まれる各コマンドは、順に実行されます。
一つでもコマンドが動作すれば、そのインターフェースは正常であると判断されます。
以下は、あらかじめ備わっている設定値のリストです。
| コマンド |
説明 |
| null |
何もしません |
| noop |
インターフェースが有効になっていてアドレスが割り当てられていたならば、
その時はこの設定を無視します
|
| IPv4かIPv6のアドレス |
インターフェースに指定されたアドレスを追加します |
|
dhcp、adsl、apipa(もしくはサードパーティのモジュールが要求するカスタムコマンド)
|
コマンドを供給するモジュールを実行します。例えばdhcpは、dhcpcd、dhclient、pumpのうちのどれか一つである、DHCP機能を提供するモジュールを実行します。
|
一つのコマンドが失敗した場合に備えて、一つの予備のコマンドを指定することができます。
予備のコマンド(fallback)も、これらの設定の形式に正確に適合している必要があります。
これらのコマンドを繋げて同時に指定できます。実際に使用されるいくつかの例を示します。
コード表示 1.1: 設定例 |
config_eth0=(
"192.168.0.2/24"
"192.168.0.3/24"
"192.168.0.4/24"
)
config_eth0=(
"192.168.0.2/24"
"4321:0:1:2:3:4:567:89ab"
"4321:0:1:2:3:4:567:89ac"
)
config_eth0=(
"noop"
"dhcp"
)
fallback_eth0=(
"null"
"apipa"
)
|
注意:
ifconfigモジュールを使用して一つ以上のアドレスを追加する場合、二つ目以降のアドレスの各々に対しインターフェースの別名が生成されます。
よって上二つの例では、インターフェースeth0、eth0:1、eth0:2が得られます。
カーネルとその他プログラムがeth0としてeht0:1とeth0:2を扱う場合、これらのインターフェースでは何も特別なことはできません。
|
重要:
fallback順は重要です! nullオプションを指定していないと、apipaコマンドは、noopコマンドが失敗したときだけ実行されます。
|
注意:
(APIPA)と(DHCP)については後で記述します。
|
1.
ネットワーク依存設定
/etc/init.dにあるinitスクリプトは、特定のネットワークインターフェース、もしくはただ単にnetに依存することがあります。
netサービスの意味を、RC_NET_STRICT_CHECKING変数を使用して異なる状況を示すように/etc/conf.d/rcで定義することができます。
| 値 |
説明 |
| none |
netサービスは常に起動されていると見なされます |
| no |
net.loに加えて少なくとも一つのnet.*サービスが起動していなければなりません。
WIFIと有線NICを持っていて、netサービスが起動しているように状況に応じて一つだけを起動させたいと思うノートブックのユーザによって利用されるでしょう。
|
| lo |
noオプションと同じですが、net.loも数に含まれます。
起動時にどのインターフェースが起動するか気にしないユーザに便利です。
|
| yes |
netサービスが起動していると見なされるためには、すべてのネットワークインターフェースが起動していなければならない場合です。
|
ですが、net.eth0とnet.eth1に依存しているnet.br0の場合はどうでしょうか。
net.eth1は、ブリッジに追加する前に設定される必要がある無線もしくはPPPデバイスかもしれません。
その場合、net.loへのシンボリックリンクとしての/etc/init.d/net.br0では実現できません。
この状況への答えは、/etc/conf.d/netにdepend()関数を書くことです。
コード表示 1.1: /etc/conf.d/netでのnet.br0の依存設定 |
depend_br0() {
need net.eth0 net.eth1
}
|
依存関係についての詳しい解説は、Gentooハンドブックの(Writing Init Scripts)を参照してください。
1.
変数名と値
変数名は可変です。
通常はvariable_${interface|mac|essid|apmac}の形式に従っています。
例えば、変数dhcpcd_eth0は、eth0のdhcpcdオプションの値を保持しますし、dhcpcd_essidは、どれかのインターフェースがESSIDアクセスポイント"essid"に接続したときのdhcpcdオプションの値を保持します。
しかし、インターフェースの名前が必ずethxでなければならないといっているわけではありません。
実際、多くの無線インターフェースは、ethxと同じようにwlanx、raxのような名前です。
さらに、ブリッジのようなユーザ定義のインターフェースは、fooなどのように任意の名前を付けることもできます。
よりわかりやすいように、無線アクセスポイントは、アルファベットや数字以外の文字を使った名前にできます。このことはESSID毎にネットワークパラメータの設定を可能にするために、とても重要です。
このことに関して何より弱点なのは、Gentooはネットワーク接続に関してbash変数を使うことです。
そしてbashは英字のアルファベットと数字以外は使用できません。
この制限を回避するために、英字のアルファベットと数字ではない全ての文字を_(アンダースコア)に変換します。
もう一つのbashの弱点は、変数の内容に関してです。
一部の文字はエスケープされてしまいます。
これは、エスケープされる必要がある文字の前に\(バックスラッシュまたは円記号)を置くことで回避できます。次の文字は、この方法でエスケープする必要があります。"と'と\。
この例では、特殊な文字を使用する無線ESSIDを使用しています。
この場合、以下のようにESSID My "\ NETを使用することになります。
コード表示 1.1: 変数名の例 |
dns_domain_My____NET="My "\\ NET"
|
|