Ubuntuをアップデートしたら外部ネットワークが使えなくなった
はじめに
長らく更新できていなかったConoHa VPS上のUbuntuのOSアップデートを実施しました。
で、再起動後、git pull や ping が通らなくなり、fatal: unable to access ... Could not resolve host や Network is unreachable というエラーに遭遇。
原因はNetplanの設定ファイルの競合のようでした。
発生した現象
外部ネットワークへの接続を確認しようとすると、以下のエラーが発生。
$ ping 8.8.8.8
connect: Network is unreachable
さらに、設定を反映させようと sudo netplan apply を実行すると、パーミッションに関する警告や Open vSwitch のエラーが表示される状態でした。
原因:Netplan設定ファイルの競合
UbuntuのNetplan(ネットワーク管理ツール)は、/etc/netplan/ 内にある .yaml ファイルを数字の昇順で読み込み、後から読み込んだ設定で上書きします。
今回の環境では以下の3ファイルが存在していました:
00-installer-config.yaml
10-gmovps.yaml(ConoHa特有の設定?)
50-cloud-init.yaml(クラウド初期化時の設定)
調査の結果、正しいIPアドレスやゲートウェイ情報が 50-cloud-init.yaml に記述されているにもかかわらず、手前の 10-gmovps.yaml などで不完全な設定(DHCPのみ等)が記述されていたため、設定が上書きされネットワーク構成が壊れていました。
解決策
- 設定ファイルの権限修正
Netplan設定ファイルの権限が緩いと警告が出るため、まずは権限を絞ります。
sudo chmod 600 /etc/netplan/*.yaml
- 不要な設定ファイルの退避
正しい情報(固定IPやルート情報)が記載されているファイルを確認し、それ以外の不要なファイルをバックアップディレクトリへ移動させます。
sudo mkdir /etc/netplan/backup
sudo mv /etc/netplan/00-installer-config.yaml /etc/netplan/backup/
sudo mv /etc/netplan/10-gmovps.yaml /etc/netplan/backup/
本当はnetplanの外~/backup/などがいいらしいのですが、今回は一旦これで。
- 設定の適用
残った正しい設定ファイルのみを反映させます。
sudo netplan apply
結果
ip route で default via [ゲートウェイIP] が表示されるようになり、無事に外部通信が復旧しました。
まとめ
ConoHa VPSなどでOSのネットワーク設定が複数生成されている場合、ファイル名(数字) の優先順位によって意図しない上書きが発生することがあります。通信ができない時は、まず /etc/netplan/ 内のファイルが重複していないか確認してみてください。
Discussion