本節はネットワークカードを設定する場合にのみ作業を行っていきます。
ネットワークカードを利用しない場合は、ネットワークカードに関連する設定ファイルを生成する必要はありません。
その場合は、ランレベルに対するすべてのディレクトリ (/etc/rc.d/rc*.d
) から network
シンボリックリンクを削除してください。
Udev やモジュラー化されたネットワークドライバにおいて、ネットワークインターフェースの番号の割振りは再起動により変更されます。
ドライバモジュールの読み込みが並列で行われるためランダムになるからです。 例えば Intel 製と Realtek
製の二つのネットワークカードを持つコンピュータにおいて、 Intel 製が eth0
、 Realtek 製が eth1
となったとします。
しかし時にはシステムの再起動によって番号割り振りが逆転することもあります。 これを避けるには Udev
ルールを生成して、ネットワークカードの MAC アドレスに基づいて固定的に名称を定める方法があります。
ブートを繰り返しても特定のデバイスには同一の名前が割り当たるようなルール記述を試しに生成します。 まずは以下を実行します。
for NIC in /sys/class/net/* ; do INTERFACE=${NIC##*/} udevadm test --action=add $NIC done
そして /etc/udev/rules.d/70-persistent-net.rules
ファイルを見て、どのネットワークデバイスにどんな名前が割り当てられているかを確認します。
cat /etc/udev/rules.d/70-persistent-net.rules
このファイルの先頭にはコメントが数行あり、続いてそれぞれの NIC に対する行があります。 NIC ごとの記述では一行めがコメントで、そのハードウェア ID が記されています。 (PCI カードである場合、PCI ベンダとデバイス ID が記述されます。) またドライバが検出できている場合には、カッコ書きでドライバ名も示されます。 ハードウェア ID もドライバ名も、インターフェースに対して与えられる名称とは無関係で、単に分かりやすくするために記されているにすぎません。 二行めは Udev ルールであり、その NIC を定め、名称を割り当てている記述です。
Udev ルールはいくつかのキー項目で構成され、それぞれがカンマで区切られるか、場合によっては空白文字で区切られています。 このキー項目とその内容は以下のようになります。
SUBSYSTEM=="net"
-
ネットワークカードではないデバイスは無視することを指示します。
ACTION=="add"
- uevent の add
イベントではないものは無視することを指示します。 (uevent の "remove" イベントや "change"
イベントも発生しますが、これらはネットワークインターフェースの名前を変更するものではありません。)
DRIVERS=="?*"
- Udev に対して VLAN
やブリッジサブインターフェース (bridge sub-interfaces) を無視することを指示します。
(サブインターフェースにはドライバがないためです。)
サブインターフェースに名前が割り当てられたとすると、親デバイスの名前と衝突してしまうため、サブインターフェースの名前割り当てはスキップされます。
ATTR{address}
- このキーの値は NIC の
MAC アドレスを表します。
ATTR{type}=="1"
-
特定のワイヤレスドライバでは複数の仮想インターフェースが生成されますが、そのうちの主となるインターフェースにのみルールが合致するようにします。
二つめ以降のインターフェースに対する処理は、VLAN
やブリッジサブインターフェースがスキップされるのと同じくスキップされます。
名前割り当てが行われてしまうと名前衝突を起こすためです。
KERNEL=="eth*"
-
複数のネットワークインターフェースを有するマシンを取り扱うためのルールを加えます。
このルールでは全インターフェースに同一の MAC アドレスが用いられます。 (PS3 などがそういったマシンになります。)
各インターフェースに対して個別の命名が行われたとすると Udev はそれぞれを別のものとして取り扱います。
これはたいていの Linux From Scratch ユーザーにとって必要ありません。
ただそうなったとしても問題はありません。
NAME
- Udev
がインターフェースに対して割り当てる名前をキーの値として指定します。
NAME
に定義される値が重要です。
どのネットワークカードにどんな名前が割り当てられているかをよく確認してください。 そして以下において設定ファイルを生成する際には
NAME
に定義されている名称を利用してください。
どのネットワークインターフェースを起動させるかは /etc/sysconfig/network-devices
ディレクトリ配下のネットワークスクリプトにより設定します。
そのディレクトリには、設定を行ないたい各ネットワークインターフェースに対するサブディレクトリを準備します。
例えばネットワークインターフェースの名が 「xyz」 である場合
ifconfig.xyz
というサブディレクトリとします。
このサブディレクトリ内にはネットワークインターフェースの属性、つまり IP
アドレスやサブネットマスクなどを定義したファイルを置きます。
以下のコマンドは、例として eth0 デバイスに対しての
ipv4
ファイルを生成するものです。
cd /etc/sysconfig/network-devices
mkdir -v ifconfig.eth0
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.1
GATEWAY=192.168.1.2
PREFIX=24
BROADCAST=192.168.1.255
EOF
各変数の値は各ファイルごとに適切なものに設定してください。 ONBOOT
変数を
「yes」
に設定している場合、システム起動時にネットワークスクリプトが実行され、ネットワークインターフェースカード (network
interface card; NIC) を有効にします。 「yes」
以外に設定している場合、ネットワークスクリプトは NIC に対して何も行わないため NIC は有効にはなりません。
SERVICE
変数はIP アドレスの取得方法を指定します。
LFS-ブートスクリプトは IP アドレス割り当て方法をモジュール化しています。 そして /etc/sysconfig/network-devices/services
ディレクトリに追加でファイルを生成すれば、他の IP アドレス割り当て方法をとることもできます。 通常は DHCP (Dynamic
Host Configuration Protocol) において利用されるものです。 これについては BLFS
ブックにて説明しています。
GATEWAY
変数は、デフォルトゲートウェイが存在するならその IP
アドレスを指定します。 存在しない場合は、の変数設定を行っている一行をコメントにします。
PREFIX
変数はサブネットマスクにて用いられるビット数を指定します。 IP
アドレスの各オクテット (octet) は 8 ビットで構成されます。 例えばサブネットマスクが 255.255.255.0
である場合、ネットワーク番号 (network number) を特定するには最初の三つのオクテット (24ビット)
が用いられることを意味します。 もし 255.255.255.240 であるなら、最初の 28 ビットということになります。 24
ビットを超えるプレフィックスは、通常は DSL やケーブルを用いたインターネットサービスプロバイダー (Internet
Service Provider; ISP) がよく利用しています。 上の例 (PREFIX=24) では、サブネットマスクは
255.255.255.0 となります。 PREFIX
変数の値は、ネットワーク環境に応じて変更してください。
インターネットへの接続を行う場合には、ドメイン名サービス (domain name service; DNS)
による名前解決を必要とします。 これによりインターネットドメイン名を IP アドレスに、あるいはその逆の変換を行います。
これを行うには ISP やネットワーク管理者が指定する DNS サーバーの割り振り IP アドレスを /etc/resolv.conf
ファイルに設定します。
以下のコマンドによりこのファイルを生成します。
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
domain <Your Domain Name>
nameserver <IP address of your primary nameserver>
nameserver <IP address of your secondary nameserver>
# End /etc/resolv.conf
EOF
<IP address of the
nameserver>
(ネームサーバーの IP アドレス) の部分には、 DNS が割り振る適切な
IP アドレスを記述します。 IP アドレスの設定は複数行う場合もあります。
(代替構成を必要とするなら二次サーバーを設けることでしょう。) 一つのサーバーのみで十分な場合は、二つめの nameserver の行は削除します。
ローカルネットワークにおいてはルーターの IP アドレスを設定することになるでしょう。