本節はネットワークカードを設定する場合にのみ作業を行っていきます。
ネットワークカードを利用しないのであれば、ネットワークカードに関する設定は、おそらくすべて不要なはずです。
そのような場合は、ランレベルディレクトリ (/etc/rc.d/rc*.d
)
から、シンボリックリンク network
を削除してください。 これは
7.2.「LFS-ブートスクリプト-20150222」
にてブートスクリプトをインストールした後に行ってください。
どのネットワークインターフェースが起動したり停止したりするかは /etc/sysconfig/
ディレクトリ配下のファイルの指定によります。
このディレクトリには、設定を行ないたい各ネットワークインターフェースに対するファイル ifconfig.xyz
を準備します。 この「xyz」はネットワークカードインターフェースに対する名称 (例えば eth0 など)
です。 このファイルにはネットワークインターフェースの属性、つまり IP アドレスやサブネットマスクなどを定義します。
ファイルベース名は ifconfig
とすることが必要です。
前節に示した手順を実施しなかった場合、Udev は、システムの物理的な特性に従った enp2s1 などのような名称をネットワークカードインターフェースに割り当てます。 インタフェース名がよく分からない場合は、システム起動直後に常に ip link を実行してください。 繰り返しますが ifconfig.xyz という名称はネットワークカードインターフェースを示す正しい名称 (つまり ifconfig.enp2s1 や ifconfig.eth0) としなければなりません。 これを行っていない場合には、システム起動時にネットワークインターフェースが初期化されないことになります。
以下のコマンドは、eth0 デバイスに対して固定 IP アドレスを設定するファイルを生成する例です。
cd /etc/sysconfig/
cat > ifconfig.eth0 << "EOF"
ONBOOT=yes
IFACE=eth0
SERVICE=ipv4-static
IP=192.168.1.2
GATEWAY=192.168.1.1
PREFIX=24
BROADCAST=192.168.1.255
EOF
各変数の値は各ファイルごとに適切なものに設定してください。
ONBOOT
変数を「yes」に設定した場合、システム起動時に
System V ネットワークスクリプトがネットワークインターフェースカード (network interface card;
NIC) を起動します。 「yes」以外に設定すると、ネットワークスクリプトからの NIC の起動がなくなり、NIC
は自動では起動しなくなります。 ネットワークインターフェースは ifup や ifdown
といったコマンドを使って、起動や停止を行うことができます。
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 ページを参照してください。
インターネットへの接続を行う場合には、ドメイン名サービス (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 です。
システム起動時には /etc/hostname
が参照されてシステムのホスト名が決定されます。
以下のコマンドを実行することで /etc/hostname
ファイルを生成するとともに、ホスト名を設定します。
echo "<lfs>
" > /etc/hostname
<lfs>
の部分は、各システムにおいて定めたい名称に置き換えてください。 ここでは完全修飾ドメイン名 (Fully Qualified
Domain Name; FQDN) は指定しないでください。 その情報は /etc/hosts
ファイルにて行います。
IPアドレス、完全修飾ドメイン名 (Fully Qualified Domain Name; FQDN)、エイリアスの各設定を
/etc/hosts
ファイルにて行います。
その文法は以下のようになります。
IP_address myhost.example.org aliases
インターネットに公開されていないコンピューターである場合 (つまり登録ドメインであったり、あらかじめ IP アドレスが割り当てられていたりする場合。 普通のユーザーはこれを持ちません。) IP アドレスはプライベートネットワーク IP アドレスの範囲で指定します。 以下がそのアドレス範囲です。
Private Network Address Range Normal Prefix
10.0.0.1 - 10.255.255.254 8
172.x.0.1 - 172.x.255.254 16
192.168.y.1 - 192.168.y.254 24
x は 16 から 31、y は 0 から 255 の範囲の数値です。
IP アドレスの例は 192.168.1.1 となります。 また FQDN の例としては lfs.example.org となります。
ネットワークカードを用いない場合でも FQDN の記述は行ってください。 特定のプログラムが動作する際に必要となることがあるからです。
以下のようにして /etc/hosts
ファイルを生成します。
cat > /etc/hosts << "EOF"
# Begin /etc/hosts (network card version)
127.0.0.1 localhost
<192.168.1.1>
<HOSTNAME.example.org>
[alias1] [alias2 ...]
# End /etc/hosts (network card version)
EOF
<192.168.1.1>
や
<HOSTNAME.example.org>
の部分は利用状況に応じて書き換えてください。 (ネットワーク管理者から IP
アドレスを指定されている場合や、既存のネットワーク環境に接続する場合など。). エイリアスの記述は省略しても構いません。
ネットワークカードを設定しない場合は、以下のようにして /etc/hosts
ファイルを生成します。
cat > /etc/hosts << "EOF"
# Begin /etc/hosts (no network card version)
127.0.0.1 <HOSTNAME.example.org>
<HOSTNAME>
localhost
# End /etc/hosts (no network card version)
EOF