ある日突然、ネットワークインターフェースが起動しなくなりました。以前は正常に動作していたため、設定ファイルに問題がある可能性は低いと判断しました。
ネットワークインターフェース情報の編集手順を以下に記載します。
1)ネットワークインターフェース情報の編集
[root@linux-node2~]# cd /etc/sysconfig/network-scripts/ #ネットワークインターフェースディレクトリへ移動
[root@linux-node2network-scripts]# mv ifcfg-eno16777728 ifcfg-eth0 #デフォルトのインターフェース名をeth0に変更
[root@linux-node2network-scripts]# cat ifcfg-eth0 #インターフェース情報を確認
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=eth0 #名前をeth0に変更
ONBOOT=yes
IPADDR=192.168.56.12
NETMASK=255.255.255.0
GATEWAY=192.168.56.2
DNS1=192.168.56.2
2)GRUB設定の修正
[root@linux-node2~]# cat /etc/sysconfig/grub #カーネル情報を編集し、赤字部分を追加
GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=autorhgb net.ifnames=0 biosdevname=0 quiet"
GRUB_DISABLE_RECOVERY="true"
[root@linux-node2~]# grub2-mkconfig -o /boot/grub2/grub.cfg #ブートメニューを生成
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-229.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-1100f7e6c97d4afaad2e396403ba7f61
Found initrd image: /boot/initramfs-0-rescue-1100f7e6c97d4afaad2e396403ba7f61.img
Done
3)変更の検証
[root@linux-node2~]# reboot #システムを再起動して変更を適用
[root@linux-node2~]# yum install net-tools #CentOS 7はデフォルトでifconfigをサポートしないため、net-toolsパッケージをインストール
[root@linux-node2~]# ifconfig eth0 #インターフェース情報を確認
eth0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.12 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::20c:29ff:fe5c:7bb1 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:5c:7b:b1 txqueuelen 1000 (Ethernet)
RX packets 152 bytes 14503 (14.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 98 bytes 14402 (14.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
CentOS 7でネットワークサービス起動時に「RTNETLINK answers: File exists」エラーが発生する問題の解決方法
[root@localhost network-scripts]# service NetworkManager stop
Starting network (via systemctl): Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
[root@localhost network-scripts]# systemctl status network.service
?.network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: failed (Result: exit-code) since Mon 2017-03-20 18:41:03 CST; 3min 49s ago
Docs: man:systemd-sysv-generator(8)
Process: 18880 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)
Mar 20 18:41:03 localhost.localdomain network[18880]: RTNETLINK answers: File exists
Mar 20 18:41:03 localhost.localdomain network[18880]: RTNETLINK answers: File exists
Mar 20 18:41:03 localhost.localdomain network[18880]: RTNETLINK answers: File exists
Mar 20 18:41:03 localhost.localdomain network[18880]: RTNETLINK answers: File exists
Mar 20 18:41:03 localhost.localdomain network[18880]: RTNETLINK answers: File exists
Mar 20 18:41:03 localhost.localdomain network[18880]: RTNETLINK answers: File exists
Mar 20 18:41:03 localhost.localdomain systemd[1]: network.service: control process exited, code=exited status=1
Mar 20 18:41:03 localhost.localdomain systemd[1]: Failed to start LSB: Bring up/down networking.
Mar 20 18:41:03 localhost.localdomain systemd[1]: Unit network.service entered failed state.
Mar 20 18:41:03 localhost.localdomain systemd[1]: network.service failed.
原因分析と解決策:
CentOS環境でこの問題が発生する原因は、ネットワーク起動用の2つのサービス(/etc/init.d/network と /etc/init.d/NetworkManager)の競合です。
根本的な原因はNetworkManager(NM)による競合であり、NetworkManagerを無効化することで解決できます。システムを再起動してください。
[root@localhost network-scripts]# service NetworkManager stop
Redirecting to /bin/systemctl stop NetworkManager.service
[root@localhost network-scripts]# systemctl start network.service
[root@localhost network-scripts]#
解決方法:システムに標準搭載されているNetworkManager管理ツールがネットワークインターフェースの起動に影響を与えています。これを停止することで問題を解決できます。
service NetworkManager stop
chkconfig NetworkManager off #システム起動時に無効化
その後、ネットワークインターフェースを再起動します。
service network restart
さらに、ゲートウェイへの接続を確認してください。 ゲートウェイにpingが通らない場合は、仮想マシンのネットワーク設定に問題がある可能性があります。
本稿ではnet接続を使用しており、vnet接続情報ではNetモードを選択する必要があります。
注意:デバッグ作業中に問題を解決する一方で新たな問題を発生させてしまい、多くの時間を無駄にしてしまいました。