LoginSignup
28
31

More than 5 years have passed since last update.

CentOS6・7のifcfg他設定ファイルについて

Last updated at Posted at 2019-04-16

1. とりあえず

まず非常によくある「/etc/sysconfig/network-srciprts/にifcfgが無い!」って状況の対処法。
DHCPサーバが使用できる環境ならNetworkManagerがあろうとなかろうと以下の記述が入ったifcfg-eth0さえあれば大抵動く。

ifcfg-eth0.min
DEVICE=eth0
BOOTOPROTO=dhcp

これにONBOOT=yesを加えて再起動するなりifup eth0なりすればとりあえずNICは使える。
更にNetworkManagerが有効ならばGUIのネットワーク設定画面でプロファイルを開いて、何も書き換えずに"適用"をクリックするとifcfg-eth0がNetworkManager使用下でのデフォルト設定に書き換わります。
以下は書き換わったifcfgの例。

ifcfg-eth0.nm
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
UUID=********-****-****-****-************

もしくはnmcuiなりnmtuiなりGUI設定で接続プロファイルを作成し、適切にリネームした後ifcfgに"DEVICE=xxxx"を足す。

2. NetworkManagerについて

以下のページが分かりやすい
RHEL7 系のネットワーク設定 – ゴミ箱
RHEL7/CentOS7 NetworkManager徹底入門

NetworkManagerは接続をコネクションとデバイスに分けており、コネクションの紐付けにUUIDを使っている。このコネクションは明示しない限りデバイスと関連づけられておらず、GUI設定画面からデバイスに関連付けられる方法は無い。
(MACアドレスで関連付けられるけど、カード交換した時に問題になるじゃん…)
ifcfgに"DEVICE=xxxx"を足しましょう。

NetrworkManagerはコネクションと呼ばれる接続プロファイルとNICを示すデバイスを区別する等、ネットワークを動的に設定する仕組みを取り入れてます。(デバイスが明示されていない限り接続時に自動でデバイスを選択する)

コネクションの紐付けにはUUIDを使用しているため、NetworkManager由来のインターフェースで設定を作成するとUUIDが付与される。
コネクションは"nmcli connection"、デバイスは"nmcli device"で確認可能。

# nmcli c
名前                UUID                                  タイプ          デバイス 
システム enp6s0     ********-****-****-****-************  802-3-ethernet  enp6s0   
イーサネット接続 1  ********-****-****-****-************  802-3-ethernet  --       
# nmcli d
デバイス    タイプ    状態      接続            
enp6s0      ethernet  接続済み  システム enp6s0 
virbr0      bridge    切断済み  --              
lo          loopback  管理無し  --              
virbr0-nic  tap       管理無し  --  

便利な一方で適当に設定してるとifcfg-有線接続_1みたいなデバイスを明示しないプロファイルがたくさん生まれてしまって従来のifcfg-eth0みたいな設定に慣れていると結構困ります。また、ifcfg以外の設定ファイルを勝手に書き換えてしまったり、新しい機能があるのに中途半端に従来のネットワークスクリプトと互換性があるためにこんがらがります。

3. 代表的な設定の解説

設定 説明
NAME nmcliのコネクション名、GUI設定画面のプロファイル名等
UUID ifcfgとNetworkManagerのコネクションとの関連付けを行う
DEVICE NICとの紐付けを行う
TYPE Ether, Wireless, InfiniBand, Bridge, Bond, Vlan, Team, TeamPort等から選択する。無いなら無いでEtherが選択されるはず。少なくともifupスクリプトはEtherとみなす。
ONBOOT OS起動時にNICを起動させるか
BOOTPROTO DHCPを使用する場合は"dhcp"、静的に設定する場合は"static"もしくは"none"
IPADDR IPアドレス(静的設定)
PREFIX サブネットマスク(プレフィックス表記)
GATEWAY このNICのゲートウェイアドレス
DNS1 DNSサーバのアドレス。以下DNS2、DNS3と続けられる。
IPV4_FAILURE_FATAL IPv4の接続失敗によりNICの起動失敗とみなすか。noならIPv6の接続が試行される。
DEFROUTE GATEWAYをデフォルトゲートウェイにするか。普通は1つyesにすべきだけど複数あってもうまくやってくれたはず。
PEERDNS /etc/resolv.confにDHCPサーバから取得した情報を反映するか
PEERROUTES デフォルトゲートウェイ情報をDHCPサーバから取得するか
IPV6INIT IPv6を使うか
USERCTL root以外のユーザーにオン/オフを許可するか
NM_CONTROLLED NetworkManagerにこの設定を制御させるか

4. 設定ファイル類

覚えている限りでは以下の通り
・NetworkManagerの設定
/etc/NetworkManager/NetworkManager.conf
・NIC個別設定
/etc/sysconfig/network-scripts/ifcfg-xxxx
・名前解決系
/etc/hosts
/etc/hostname
/etc/networks
/etc/resolv.conf
・ルーティング系
/etc/sysconfig/network-scripts/route-****
/etc/sysconfig/network
・その他
/etc/udev/rules.d/70-persistent-net.rules

/etc/NetworkManager/NetworkManager.conf

ネットワークマネージャ全体の設定。通常はいじる必要なし、詳細は下記参照。
NetworkManager.conf:NetworkManagerリファレンスマニュアル

ただし/etc/resolv.confの変更を抑制するために、ifcfgのPEERDNSでなく、このファイルのmainセクションに"dns=none"に追加する方法がある。
CentOS 7のネットワーク管理基礎(前編) | Think IT(シンクイット)

/etc/sysconfig/network-scripts/ifcfg-xxxx

NIC個々の設定を行う。詳細は前述の通り。

/etc/hosts

IPアドレスとホスト名の照合を行う。一番左のホスト名が正式なホスト名で、以降はエイリアスとなる。

/etc/hostname

ホスト名を変更したい場合はこのファイルを編集する(CentOS7)。
CentOS 7 の Hostname を変更する - Qiita

/etc/networks

静的ドメイン、まずいじらない。以下は初期状態の一例

ドメイン アドレス
default 0.0.0.0
loopback 127.0.0.0
link-local 169.254.0.0

/etc/resolv.conf

DNS問い合わせ先

設定 説明
nameserver ネームサーバーのIPアドレス
domain ドメイン名
search 検索リスト

/etc/sysconfig/network-scripts/route-xxxx

NIC毎のルーティング設定を行う。デフォルトゲートウェイの優先順序はifcfg-xxxx>route-xxxx>/etc/sysconfig/networkだったはず。
設定方法はIPコマンド引数形式とネットマスクディレクティブ形式があります。

IPコマンド引数形式

(dev xxxxは省略可能)

default via 192.168.0.1 dev xxxx
10.1.1.0/24 via 10.1.1.1 dev xxxx

ネットマスクディレクティブ形式

ADDRESS0=0.0.0.0
NETMASK0=0.0.0.0
GATEWAY0=192.168.0.1 
ADDRESS1=10.1.1.0
NETMASK1=255.255.255.0
GATEWAY1=10.1.1.1

/etc/sysconfig/network

ルーティング設定、CentOS7では非推奨だったと思う。
(そもそもCentOS7.2ではファイルが無かった)
CentOS6でのホスト名の変更はこちらで行う。

設定 説明
NETWORKING システム起動時にネットワークを有効にするか
HOSTNAME ホスト名
GATEWAY デフォルトゲートウェイアドレス
GATEWAYDEV 記載されたデバイスのゲートウェイアドレスをデフォルトにする

/etc/udev/rules.d/70-persistent-net.rules

NICとMACアドレスの結合をudevが行う。
カードを交換した場合にはここも見ておいた方が良い。

5. テンプレート

一応各種ファイルのテンプレートを残しておく。
他の設定を弄りたい場合はnm-settings-ifcfg-rhを読んで適宜設定しましょう。

NMあり、DHCP設定

ifcfg-eth0.nm-dhcp
NAME="System eth0"
UUID=********-****-****-****-************
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no

NMあり、静的設定

ifcfg-eth0.nm-static
NAME"System eth0"
UUID=********-****-****-****-************
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no

NMなし、DHCP設定

ifcfg-eth0.nonm-dhcp
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no

NMなし、静的設定

ifcfg-eth0.nonm-static
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no

6. 備考

CentOS6の場合、GUI設定画面で"全てのユーザーに利用可能"にチェックしないと~/.gconf/system/networking/connections/以下にxml形式で設定が保管される(読みづらい)。
流石にCentOS7では改善されていて、/etc/sysconfig/network-scripts/以下にifcfg-xxxxで置かれるようになり、他の設定とは"USERS=xxxx"で区別される。

IPADDR、PREFIXは接尾に数字を付与することで増やすことも可能。
従来のIPエイリアス使うよりこちらの方が便利そう。というかnmcliではifcfg-xxxxとifcfg-xxxx:0は区別されてない。

PREFIX/NETMASK/NETWORK/BROADCAST辺りの設定の話
RHEL6: PREFIX overrides NETMASK in `ifcfg - piyolian

7. 要調査検証

ゲートウェイやDNS設定はどのファイルが優先される?
PEERDNS、PEERROUTES、NM_CONTROLLEDの挙動
DEVICEが同じifcfgが複数ある場合の挙動
エイリアス(ifcfg-eth0:0等)とクローンってNetworkManagerではもうサポートされてない?
->一応エイリアスは有効っぽいけどnmcliでの挙動が怪しい…。素直に複数IP記載するか、どうしてもエイリアス使いたいならNetworkManager切った方が良さそう。
インターフェース設定ファイル
「ifconfig eth0:?」は古い!CentOS/RHELでのIPエイリアスの設定方法 - 旅モバ

8. 最後に

この辺の情報がまとまったページが無かったので頭の整理がてら作成
補足・訂正・改善あればコメントお願いします。

28
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
31