Gentoo Logo

1.  高度な設定

config_eth0変数が、インターフェースの設定の要です。 config_eth0は、インターフェース(この場合はeth0)設定用の高度な設定値のリストです。 設定値のリストに含まれる各コマンドは、順に実行されます。 一つでもコマンドが動作すれば、そのインターフェースは正常であると判断されます。

以下は、あらかじめ備わっている設定値のリストです。

コマンド 説明
null 何もしません
noop インターフェースが有効になっていてアドレスが割り当てられていたならば、 その時はこの設定を無視します
IPv4かIPv6のアドレス インターフェースに指定されたアドレスを追加します
dhcpadslapipa(もしくはサードパーティのモジュールが要求するカスタムコマンド) コマンドを供給するモジュールを実行します。例えばdhcpは、dhcpcddhclientpumpのうちのどれか一つである、DHCP機能を提供するモジュールを実行します。

一つのコマンドが失敗した場合に備えて、一つの予備のコマンドを指定することができます。 予備のコマンド(fallback)も、これらの設定の形式に正確に適合している必要があります。

これらのコマンドを繋げて同時に指定できます。実際に使用されるいくつかの例を示します。

コード表示 1.1: 設定例

# 以下のIPv4アドレスを追加します
config_eth0=(
	"192.168.0.2/24"
	"192.168.0.3/24"
	"192.168.0.4/24"
)

# 一つのIPv4アドレスと二つのIPv6アドレスを追加します
config_eth0=(
	"192.168.0.2/24"
	"4321:0:1:2:3:4:567:89ab"
	"4321:0:1:2:3:4:567:89ac"
)

# 既にインターフェースが有効になっていて、アドレスが割り当ててある場合は、何もしません。
# インターフェースが無効になってしまっている場合、DHCP経由の新たなアドレスを割当てます。
config_eth0=(
	"noop"
	"dhcp"
)
fallback_eth0=(
	"null"
	"apipa"
)

注意: ifconfigモジュールを使用して一つ以上のアドレスを追加する場合、二つ目以降のアドレスの各々に対しインターフェースの別名が生成されます。 よって上二つの例では、インターフェースeth0eth0:1eth0:2が得られます。 カーネルとその他プログラムがeth0としてeht0:1eth0: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.eth0net.eth1に依存しているnet.br0の場合はどうでしょうか。 net.eth1は、ブリッジに追加する前に設定される必要がある無線もしくはPPPデバイスかもしれません。 その場合、net.loへのシンボリックリンクとしての/etc/init.d/net.br0では実現できません。

この状況への答えは、/etc/conf.d/netdepend()関数を書くことです。

コード表示 1.1: /etc/conf.d/netでのnet.br0の依存設定

# 現行のスクリプトに則って、すべての依存関係(use、after、before)が使用できます
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"

(上記は、無線LANカードがMy "\ NETのESSIDを持つアクセスポイン
トに接続した場合、dnsドメインをMy "\ NETに設定します)

ページの更新日 2009年 2月 12日

このドキュメントのオリジナルバージョン の更新日は2011年 8月 19日

要約: ここでは設定がどのように働くのか学びます。 モジュラーネットワーキングについて学ぶ前に、知っておく必要あります。

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.