schedule2019-07-04

CentOS7でifcfg-eth1の.orgを作るとnetworkを再起動できない

変なはまり方をしてとてもニッチなエラーだと思うのでログを細かく残しておく。 深夜帯で疲れているためすこし変なテンションで書く。

エラー内容

CenoOS7のネットワーク設定を変更するため、/etc/sysconfig/network-scripts/配下にあるifcfg-eth1ifcfg-eth0を修正した。 この時いつものようにバックアップを取ろうとifcfg-eth1.orgとコピーしてからファイルを修正している。 その後、systemctl restart networkとしたときにエラーが出た。

# systemctl restart network
● network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2019-07-04 20:43:05 JST; 19s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 3941 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)

Jul 04 20:43:05 localhost.localdomain network[3941]: RTNETLINK answers: File exists
Jul 04 20:43:05 localhost.localdomain network[3941]: RTNETLINK answers: File exists
Jul 04 20:43:05 localhost.localdomain network[3941]: RTNETLINK answers: File exists
Jul 04 20:43:05 localhost.localdomain network[3941]: RTNETLINK answers: File exists
Jul 04 20:43:05 localhost.localdomain network[3941]: RTNETLINK answers: File exists
Jul 04 20:43:05 localhost.localdomain network[3941]: RTNETLINK answers: File exists
Jul 04 20:43:05 localhost.localdomain systemd[1]: network.service: control proces...1Jul 04 20:43:05 localhost.localdomain systemd[1]: Failed to start LSB: Bring up/d....Jul 04 20:43:05 localhost.localdomain systemd[1]: Unit network.service entered fa....Jul 04 20:43:05 localhost.localdomain systemd[1]: network.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

ログを確認

書式を間違えたかと思いログを表示させると以下のようになっている。 journalctl -xeで確認。

[root@localhost ~]# journalctl -xe
Jul 04 21:12:06 localhost.localdomain network[8337]: [  OK  ]
Jul 04 21:12:06 localhost.localdomain network[8337]: Bringing up interface eth1.org:  [  OK  ]
Jul 04 21:12:07 localhost.localdomain network[8337]: [  OK  ]
Jul 04 21:12:07 localhost.localdomain network[8337]: RTNETLINK answers: File exists
Jul 04 21:12:07 localhost.localdomain network[8337]: RTNETLINK answers: File exists
Jul 04 21:12:07 localhost.localdomain network[8337]: RTNETLINK answers: File exists
Jul 04 21:12:07 localhost.localdomain network[8337]: RTNETLINK answers: File exists
Jul 04 21:12:07 localhost.localdomain network[8337]: RTNETLINK answers: File exists
Jul 04 21:12:07 localhost.localdomain network[8337]: RTNETLINK answers: File exists
Jul 04 21:12:07 localhost.localdomain network[8337]: RTNETLINK answers: File exists
Jul 04 21:12:07 localhost.localdomain network[8337]: RTNETLINK answers: File exists
Jul 04 21:12:07 localhost.localdomain network[8337]: RTNETLINK answers: File exists
Jul 04 21:12:07 localhost.localdomain systemd[1]: network.service: control process exited, code=exited status=1
Jul 04 21:12:07 localhost.localdomain systemd[1]: Failed to start LSB: Bring up/down networking.
-- Subject: Unit network.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit network.service has failed.
--
-- The result is failed.
Jul 04 21:12:07 localhost.localdomain systemd[1]: Unit network.service entered failed state.
Jul 04 21:12:07 localhost.localdomain systemd[1]: network.service failed.
Jul 04 21:12:07 localhost.localdomain polkitd[2596]: Unregistered Authentication Agent for unix-process:8331:366613 (system bus name :1.506, object path /org/freedesktop/PolicyKit1/AuthenticationAgent,
lines 2403-2431/2431 (END)

おわかりだろうか?

長くてわかりづらいと思うが、実は3行目に原因が出ている。 (横にスクロールしないと見えないかも)

Jul 04 21:12:06 localhost.localdomain network[8337]: Bringing up interface eth1.org:  [  OK  ]

なんと!バックアップとして作ったifcfg-eth1.orgも読み込まれている!!!!

これを特定するまで、一旦修正を.tmpにして.orgを戻してrestartしてみるも「もとのファイルなのにエラーが出る!」と1人悩んでいた。。。 因みに.tmpも読み込むよ。

解決策

読み込んでしまう.org.tmpを消した。 restartすると何事もなく立ち上がりました。

バックアップは.bak

オリジナルのバックアップは.bakでとりましょう。 /etc/sysconfig/network-scripts/配下では.bakは読み込まれないようです。 また、変更前から.bakが存在して「オレが見本だよ」と主張していました。

# ls /etc/sysconfig/network-scripts/
ifcfg-eth0      ifcfg-eth1.bak  # もとからあった.bak
ifcfg-eth0.org  ifcfg-eth1.org  ifdown-bnep  ifdown-isdn  ifdown-sit       ifup           ifup-ippp  ifup-plusb  ifup-sit       ifup-wireless
ifcfg-eth0.tmp  ifcfg-eth1.tmp  ifdown-eth   ifdown-post  ifdown-Team      ifup-aliases   ifup-ipv6  ifup-post   ifup-Team      init.ipv6-global
# 一部省略

おわり。