検証環境
今回はCentOS6.6上で検証を行っています。
CentOS 6からのネットワーク設定について
CentOS 6から「NetWorkManager」という、ネットワーク設定用のサービスが動作しているため、「 /etc/sysconfig/network-scripts/ifcfg-eth0」設定ファイルを手動で編集しても、「NetworkManager」の影響で各種設定ファイルが上書きされるなど色々と問題がでてしまいます。 「NetworkManager」を使用することで、ネットワーク設定が簡単になるなどのメリットもあるのですが、従来の方法で設定を行いたいと言った場合は「NetworkManager」サービスを停止させる必要があります。
NetworkManagerの停止
現在「NetoworkManager」サービスが起動しているか確認を行い、動作している場合は停止させます。まずは、「service」コマンドを使用して、「NetworkManager」サービスが動作しているか確認します。
「NetworkManager」動作確認
NetworkManager動作中の表示例
# service NetworkManager status NetworkManager (pid 1299) を実行中...
NetowrkManager停止中の表示例
# service NetworkManager status NetworkManager は停止しています
NetworkManagerサービスの停止
「NetworkManager」サービスが動作している場合は「service」コマンドで停止させます。すでに停止している場合は特にこの作業は必要ありません。
# service NetworkManager stop NetworkManager デーモンを停止中: [ OK ]
NetworkManager自動起動停止
次に、サーバ再起動時に「NetworkManager」が自動起動してこないよう、「chkconfig」コマンドを使用して、自動起動の設定もoffにしてしまいます。
NetworkManager自動起動無効化
自動起動の無効化
# chkconfig NetworkManager off
自動起動無効化の確認
# chkconfig --list NetworkManager NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off
これで、「NetworkManager」はサーバ再起動後も起動してきません。
ネットワーク(NIC)の設定
「NetworkManager」の停止作業が完了したので、いよいよネットワークの設定を行っていきます。
設定ファイルは、「/etc/sysconfig/network-scripts/ifcfg-eth0」となり、このファイルを編集することでIPアドレスの設定を行うことができます。
複数のNICがある場合は「ifcfg-eth1」「ifcfg-eth2」といったように末尾の番号が増えていきます。(CentOS7からはファイル名が変わってきます。)
設定ファイルの編集
既存の設定ファイルをバックアップしてから、作業を行っていきます。
注意点
ネットワークの設定を失敗してしまうとサーバと通信が出来なくなってしまいますので、十分に注意し作業を行ってください。
設定に失敗した場合でも、サーバにアクセス出来るように何らかの準備を行ってから作業を行いましょう。
# cd /etc/sysconfig/network-scripts/ # cp -p ifcfg-eth0 yyyymmdd_ifcfg-eth0 # vi ifcfg-eth0
ifcfg-eth0ファイル設定例
今回は下記の内容で設定しました。
- IPアドレス 192.168.1.101/24
- デフォルトゲートウェイ 192.168.1.1
ifcfg-eth0ファイル内容
DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=none IPADDR=192.168.1.101 PREFIX=24 GATEWAY=192.168.1.1 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no HWADDR=00:0C:29:07:CF:27
設定項目について
設定項目について簡単に説明していきます。
DEVICE
デバイス名です。
設定ファイル名の「ifcfg-xxx」xxx部分と同様の名前にします。
ifcfg-eth0ならばeth0
ifcfg-eth1ならばeth1
といったように記述します。
TYPE
インターフェイル(NIC)の規格を設定します。
イーサネット(一般的なNIC)ならばEthernetとします。
ONBOOT
サーバ起動時のNIC動作を指定します。
有効にする場合「yes」
無効にする場合「no」
「no」とした場合はNICを有効化するためには、OS起動後手動で有効化させる必要があります。
BOOTPROTO
IP情報の設定方法について設定します。
none 固定IPを設定する場合
dhcp DHCPでIPを受け取る場合
bootp BOOTP(Boot strap Protocol)でIPを受け取る場合
IPADDR
IPアドレスを指定します。
PREFIX
ネットマスクのビット数を指定します。
「255.255.255.0」ならば「24」といったように、10進数で記入します。
GATEWAY
NIC毎の個別ゲートウェイを指定します。
この項目自体を設定しない場合は、「/etc/sysconfig/network」の「GATEWAY」部分の設定がデフォルトゲートウェイとして反映されます。
DEFROUTE
デフォルトルートとして使用するNICを指定します。
IPV4_FAILURE_FATAL
IPv4の設定に失敗した場合にIPv6の設定を行うかどうかの設定です。
「yes」ならばIPv6を使用しない
「no」ならばIPv6を使用する
IPV6INIT
IPv6を使用するかどうかの設定です。
「yes」 IPv6を使用する
「no」IPv6を使用しない
HWADDR
MACアドレスを設定します。
NICのMACアドレスが分からない場合は「ifconfig」コマンドで調べてください。
設定反映
設定ファイルの編集が完了したら、「service」コマンドを使用して設定を反映させます。
設定の反映
設定反映前には、設定間違い等がないか十分に設定ファイルを確認してからこの作業を行ってください。
# service network restart インターフェース eth0 を終了中: [ OK ] ループバックインターフェースを終了中 [ OK ] ループバックインターフェイスを呼び込み中 [ OK ] インターフェース eth0 を活性化中: Determining if ip address 192.168.1.101 is already in use for device eth0... [ OK ]
Determining if ip addressについて
「Determining if ip address 192.168.1.101 is already in use for device eth0...」と表示されていますが、これはCentOS6.5から仕様変更されたIPアドレスの重複確認によるメッセージで、「このIPはeth0ですでに使われているんで確認してね」というメッセージなのですが、特に問題はありません。
設定確認
「ifconfig」コマンドを使用して、設定したIP情報が反映されているか確認できます。
問題なく設定ができているようでしたら、あわせて「ping」などでの疎通試験も行いましょう。
可能であれば、サーバの再起動も行って試験をしたほうがより安心です。
# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:07:CF:27 inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe07:cf27/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:62442 errors:0 dropped:0 overruns:0 frame:0 TX packets:48530 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:8459124 (8.0 MiB) TX bytes:8112795 (7.7 MiB)
以上で、固定(静的)IP情報の設定は完了となります。
おまけ
設定ファイルバックアップについての注意点
設定ファイルをバックアップする際には、yyyymmdd_ifcfg-eth0といった用に頭に日時等の文字をいれるファイル名にしてください。
ifcfg-eth0_yyyymmddとかやってしまうと、この設定ファイルも読み込んでインターフェイスを有効化させようとしてしまいます。
実行例
# cp -p ifcfg-eth0 ifcfg-eth0_20150121 # service network restart インターフェース eth0 を終了中: [ OK ] ループバックインターフェースを終了中 [ OK ] ループバックインターフェイスを呼び込み中 [ OK ] インターフェース eth0 を活性化中: Determining if ip address 192.168.1.101 is already in use for device eth0... [ OK ] インターフェース eth0_20150121 を活性化中: RTNETLINK answers: File exists [ OK ]
これは、何故かというと「/etc/init.d/network」スクリプトで「ifcfg*」といった具合でファイル名を拾っているからです。
/etc/init.d/network 抜粋
下記のように「ifcfg*」で引っ掛けているようです。
# find all the interfaces besides loopback. # ignore aliases, alternative configurations, and editor backup files interfaces=$(ls ifcfg* | \ LANG=C sed -e "$__sed_discard_ignored_files" \ -e '/\(ifcfg-lo$\|:\|ifcfg-.*-range\)/d' \ -e '/ifcfg-[A-Za-z0-9#\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \ LANG=C sort -k 1,1 -k 2n | \ LANG=C sed 's/ //') rc=0
コメント