SSHで再起動せずにネットワークの再起動を成功させるには?
Ubuntu 14.04では、sudo service networking restart
もsudo /etc/init.d/networking restart
も何もしなくなりました。また、どちらもコード1で終了します。明らかに何かが変わった(もしくは半分変わった)のですが、それが何なのかはわかりません。これは明らかに、リモートネットワークの再設定やAnsibleのようなツールの問題を引き起こします。
$ sudo bash -x /usr/sbin/service networking restart
[sudo] password for wirehive:
++ basename /usr/sbin/service
+ VERSION='service ver. 0.91-ubuntu1'
++ basename /usr/sbin/service
+ USAGE='Usage: service < option > | --status-all | [ service_name [ command | --full-restart ] ]'
+ SERVICE=
+ ACTION=
+ SERVICEDIR=/etc/init.d
+ OPTIONS=
+ '[' 2 -eq 0 ']'
+ cd /
+ '[' 2 -gt 0 ']'
+ case "${1}" in
+ '[' -z '' -a 2 -eq 1 -a networking = --status-all ']'
+ '[' 2 -eq 2 -a restart = --full-restart ']'
+ '[' -z '' ']'
+ SERVICE=networking
+ shift
+ '[' 1 -gt 0 ']'
+ case "${1}" in
+ '[' -z networking -a 1 -eq 1 -a restart = --status-all ']'
+ '[' 1 -eq 2 -a '' = --full-restart ']'
+ '[' -z networking ']'
+ '[' -z '' ']'
+ ACTION=restart
+ shift
+ '[' 0 -gt 0 ']'
+ '[' -r /etc/init/networking.conf ']'
+ which initctl
+ grep -q upstart
+ initctl version
+ case "${ACTION}" in
+ stop networking
stop: Job failed while stopping
+ :
+ exec start networking
start: Job is already running: networking
Ubuntu 14.04 Serverのネットワークをリモートで再起動する正しい方法は何ですか?
98
3
これは「機能」であることがわかりました。Ubuntu Serverでサポートされている唯一の**インターフェイスの再起動方法は、
sudo ifdown eth0 && sudo ifup eth0
です。https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1301015
何が変わったかというと、ネットワークをバウンドさせないようにしたのです。停止や起動はまだ使えますが、再起動はもう使えません。私は今、この問題を解決しました。以前の動作に戻すには13.10の/etc/init/networking.confファイルを持ってきて、14.04のファイルを置き換えてください。 (編集: どれがどれを置き換えるかを明確にしました)
手順は以下のようになります。
etc/init.d/networking script(/etc/init/networking.confファイルが参照/呼び出しているもの)についても同様に行います。
明らかに、そこに防御的な出口を置く理由がありますが、何が起こっているのかをうまく出力することはしていません。
試してみると、/var/log/upstart/networking.logに次のようなエントリが入ります。
しかし、サービスネットワークの再起動を試みたときのダイアログメッセージとして、本当にそれを出力することができたし、そうすべきだった。
EDIT: これが原因で、/etc/init/failsafe.confで制御されるスクリプトが意図せずに起動してしまい、起動時に120秒のタイムアウト遅延が発生してしまいます。(例えば、ケーブルが抜けていて、/etc/fstabにマッピングされたネットワークファイル共有へのアクセスが可能になっていた場合など)
いずれにしても、このように常にタイムアウトになってしまう原因を突き止めて、解決策を見つけたら投稿します。
kvm-user420'さんの回答を参考にして、Ubuntu 14.04'のネットワークスクリプトをUbuntu 13.10のものと置き換えるスクリプトを設定してみました。
https://github.com/metral/restore_networking でご覧いただけます。
お楽しみに