7.2. 全般的なネットワークの設定

本節はネットワークカードを設定する場合にのみ作業を行っていきます。

ネットワークカードを利用しないのであれば、ネットワークカードに関する設定は、おそらくすべて不要なはずです。 そのような場合は、ランレベルディレクトリ (/etc/rc.d/rc*.d) から、シンボリックリンク network を削除してください。 これは 7.6.「LFS-ブートスクリプト-20130821」 にてブートスクリプトをインストールした後に行ってください。

7.2.1. ネットワークインターフェースに対する固定名称の作成

設定を行うべきネットワークインターフェースが、システム内にただ一つであるなら、本節に示す内容は任意となります。 設定を行ったとしても間違いにはなりません。 ラップトップPCでのワイヤレスネットワークやケーブル接続のネットワークにおいては、たいていは本節における設定が必要となるでしょう。

Udev やモジュラー化されたネットワークドライバーにおいて、ネットワークインターフェースの番号の割振りは再起動により変更されます。 ドライバーモジュールの読み込みが並列で行われるためランダムになるからです。 例えば Intel 製と Realtek 製の二つのネットワークカードを持つコンピューターにおいて、 Intel 製が eth0、Realtek 製が eth1 となったとします。 しかし時にはシステムの再起動によって番号割り振りが逆転することもあります。 これを避けるには Udev ルールを生成して、ネットワークカードの MAC アドレスに基づいて固定的に名称を定める方法があります。

このルールは、前章の udev (systemd) におけるビルド手順にて事前生成されています。 /etc/udev/rules.d/70-persistent-net.rules を確認すれば、どんな名前がどのネットワークデバイスに割り当てられているかが分かります。

cat /etc/udev/rules.d/70-persistent-net.rules
[注記]

注記

ネットワークカードに対して手動で MAC アドレスを割り当てた場合や Xen のような仮想環境における場合などにおいて、ネットワークルールファイルが生成されないことがあります。 これはアドレスの割り当てが確定されないためです。 こういった場合は次節に進んでください。

このファイルの先頭にはコメントが数行あり、続いてそれぞれの 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 に定義されている名称を利用してください。

7.2.2. ネットワークインターフェースに対する設定ファイルの生成

どのネットワークインターフェースが起動したり停止したりするかは /etc/sysconfig/ ディレクトリ配下のファイルの指定によります。 このディレクトリには、設定を行ないたい各ネットワークインターフェースに対するファイルを準備します。 例えばネットワークインターフェースの名が「xyz」である場合 ifconfig.xyz というファイルとします。 「xyz」は管理者が識別できるデバイス名、例えば eth0 などとなります。 このファイルにはネットワークインターフェースの属性、つまり IP アドレスやサブネットマスクなどを定義します。 ファイルベース名は ifconfig とすることが必要です。

以下のコマンドは、eth0 デバイスに対して固定 IP アドレスを設定するファイルを生成する例です。

cd /etc/sysconfig/
cat > ifconfig.eth0 << "EOF"
ONBOOT=yes
IFACE=eth0
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 は自動では起動しなくなります。 ネットワークインターフェースは ifupifdown といったコマンドを使って、起動や停止を行うことができます。

IFACE 変数は、インターフェース名を定義します。 例えば eth0 といったものです。 これはネットワークデバイスの設定を行うすべてのファイルにて必要な定義です。

SERVICE 変数はIP アドレスの取得方法を指定します。 LFS-ブートスクリプトは IP アドレス割り当て方法をモジュール化しています。 そして /lib/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 変数の値は、ネットワーク環境に応じて変更してください。 これが省略された場合は、デフォルトの 24 が用いられます。

より詳しくは ifup の man ページを参照してください。

7.2.3. /etc/resolv.conf ファイルの生成

インターネットへの接続を行う場合には、ドメイン名サービス (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

domain ステートメントは省略するか、search ステートメントで代用することが可能です。 詳しくは resolv.conf の man ページを参照してください。

<IP address of the nameserver> (ネームサーバーの IP アドレス) の部分には、DNS が割り振る適切な IP アドレスを記述します。 IP アドレスの設定は複数行う場合もあります。(代替構成を必要とするなら二次サーバーを設けることでしょう。) 一つのサーバーのみで十分な場合は、二つめの nameserver の行は削除します。 ローカルネットワークにおいてはルーターの IP アドレスを設定することになるでしょう。

[注記]

注記

Google Public IPv4 DNS アドレスは 8.8.8.8 と 8.8.4.4 です。