21
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

デバイスの認識が遅くてnetwork.serviceがfailedになる問題

Last updated at Posted at 2015-03-29

自宅鯖にCentOS7を入れたんだけど起動時にネットワークデバイスの初期化(link up?)が終わる前に、systemctl network.service start が行われてしまって、network.service が failed になってしまう問題が起きて困っていた。

症状

1. 現象としてはまず以下の様なログが出てる。

Mar 30 05:39:22 r16 NetworkManager[829]: Failed to activate 'enp3s0': Connection 'enp3s0' is not available on the device enp3s0 at this time.
Mar 30 05:39:22 r16 network: インターフェース enp3s0 を活性化中: エラー: 接続のアクティベーションに失敗: Connection 'enp3s0' is not available on the device enp3s0 at this time.
Mar 30 05:39:22 r16 NetworkManager[829]: NetworkManager state is now DISCONNECTING
Mar 30 05:39:22 r16 NetworkManager[829]: NetworkManager state is now DISCONNECTED
Mar 30 05:39:22 r16 network: [失敗]
Mar 30 05:39:22 r16 systemd: network.service: control process exited, code=exited status=1
Mar 30 05:39:22 r16 systemd: Failed to start LSB: Bring up/down networking.
Mar 30 05:39:22 r16 systemd: Unit network.service entered failed state.

2. でもこの後すぐに sshd とか firewalld とかが起動し始めちゃってる。でも firewalld が起動した時にはネットワークインターフェースがまだ無いので sshd の TCP22番ポートのルールが iptables に上手く追加できなくて有効になってくれくれない。

3. しかしその数秒送れで更に以下の様なログが出ていてNICの link up は果たされる。そしてこの時点で ping は通るようになっているのだ。

Mar 30 05:39:24 r16 kernel: r8169 0000:03:00.0 enp3s0: link up
Mar 30 05:39:24 r16 kernel: IPv6: ADDRCONF(NETDEV_CHANGE): enp3s0: link becomes ready
Mar 30 05:39:24 r16 NetworkManager[829]: (enp3s0): link connected
Mar 30 05:39:24 r16 NetworkManager[829]: (enp3s0): device state change: unavailable -> disconnected (reason 'carrier-changed') [20 30 40]
Mar 30 05:39:24 r16 NetworkManager[829]: Auto-activating connection 'enp3s0'.
Mar 30 05:39:24 r16 NetworkManager[829]: Activation (enp3s0) starting connection 'enp3s0'
Mar 30 05:39:24 r16 NetworkManager[829]: Activation (enp3s0) Stage 1 of 5 (Device Prepare) scheduled...
Mar 30 05:39:24 r16 NetworkManager[829]: Activation (enp3s0) Stage 1 of 5 (Device Prepare) started...

4. だがfirewalldは既に起動を終えており、肝心のsshポートは開かないまま。起動シーケンスは最後まで実行されて終了…。

5. 仕方ないのでコンソールからログインして systemctl restart firewalld.service を手で実行してやることでsshは一応出来るようになると言う状態だ。

解決策

ダメな奴(一応解決はするんだけどね…)

とりあえず、/etc/rc.local に

sleep 5; systemctl restart network.service; systemctl restart firewalld.service

とか書いとけば一応繋げれるようになる。だが如何にもダメな奴だw

本解決

色々試しつつ、ふと systemctl list-unit-files を見てたら NetworkManager-wait-online.service なんて名前のサービスがあるじゃない!?デフォルトではdisabledらしいが、いかにも僕の問題を解決してくれそうなサービス名である。おもむろに有効化。

systemctl enable NetworkManager-wait-online.service

再起動してみる。…やったー、無事SSH入れたよ!network.service のステータス見ても failed しなくなってる!

21
17
1

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
21
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?