AWS Lightsail サーバーで DHCP リースの更新に失敗しました。

AWS Lightsail サーバーで DHCP リースの更新に失敗しました。

2021年9月12日火曜日、AWS LightsailでホストされているDebianを実行しているルートサーバーが突然クラッシュしました。再起動後約20〜60分間正常に実行され、再競合が発生します。サーバーはまだ実行中でしたが、すべてのネットワーク接続が失われたことがわかりました。 AWS Lightsailはシリアルコンソールを持たず、サーバー管理のためにSSHのみをサポートしているため、クラッシュ後にアクセス権を再取得する唯一の方法は再起動のみです。

システムやその他のログを分析した結果、関連する手がかりは見つかりませんでした。最近インストール/削除された関連パッケージはありません。

過去にこのサーバーにdhcpの問題があったため、この問題がdhcpリースの更新に関連している可能性があると疑われます。そのため、dhclientを使用していくつかの診断を実行しましたが、dhcpが実際にサーバーのクラッシュを引き起こす問題であることがわかりました。 AWS dhcpサーバーは、約20〜60分という非常に短いリース時間を提供します。リースが期限切れになると、サーバーはすべてのネットワークを失います。

dhclient -d無限ループを実行して解決策を作成できました。

#!/bin/bash
while true; do
    bash -c 'dhclient -d 2>&1 | tee -a /var/log/dhclient.log' &
    sleep 60
    kill $(jobs -p) 2>/dev/null || true
    kill -9 $(jobs -p) 2>/dev/null || true
done

私はスクリーンセッションでスクリプトを実行して実行してみました。これにより、サーバーの競合が正常に防止されました。しかし、これは単なる汚れた解決策であり、問​​題の実際の原因はまだ発見されていません。

ベストアンサー1

まあ、問題はIPv6に関連していることがわかりました。

問題は、ネットワークサービスが正しく機能しないことです。ネットワークサービスは、起動後にネットワークを構成する必要があるワンタイムスクリプトです。

systemctl status networking以下を表示します。

Oct 16 11:01:32 ip-172-26-9-21 dhclient[573]: DHCPACK of 172.26.9.21 from 172.26.0.1
Oct 16 11:01:32 ip-172-26-9-21 ifup[366]: RTNETLINK answers: File exists
Oct 16 11:01:32 ip-172-26-9-21 dhclient[573]: bound to 172.26.9.21 -- renewal in 1374 seconds.
Oct 16 11:01:32 ip-172-26-9-21 ifup[366]: bound to 172.26.9.21 -- renewal in 1374 seconds.
Oct 16 11:01:38 ip-172-26-9-21 ifup[366]: Could not get a link-local address
Oct 16 11:01:38 ip-172-26-9-21 ifup[366]: run-parts: /etc/network/if-pre-up.d/cloud_inet6 exited with return code 1
Oct 16 11:01:38 ip-172-26-9-21 ifup[366]: ifup: failed to bring up eth0
Oct 16 11:01:38 ip-172-26-9-21 systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Oct 16 11:01:38 ip-172-26-9-21 systemd[1]: networking.service: Failed with result 'exit-code'.
Oct 16 11:01:38 ip-172-26-9-21 systemd[1]: Failed to start Raise network interfaces.

出力に示すように、/etc/network/if-pre-up.d/cloud_inet6dhcpを介してipv6を設定する必要があるスクリプトは正しく実行されません。

AWS Lightsail コンソールと Debian で IPv6 サポートを無効にしました。

echo 'net.ipv6.conf.all.disable_ipv6 = 1' > /etc/sysctl.d/70-disable-ipv6.conf
sysctl -p -f /etc/sysctl.d/70-disable-ipv6.conf

IPv6のサポートは不要なので、以下からipv6 can initスクリプトを削除して無効にしました/etc/network/if-pre-up.d/

mv /etc/network/if-pre-up.d/cloud_inet6 ~/

サーバーを再起動した後、ネットワークサービスが正常に実行され、サーバーがクラッシュしなくなりました。

これがなぜ突然問題になったのか、まだ混乱しています。私が知る限り、cloud initスクリプトは4月から使用されました。 IPv6のサポートはかなり良いので、推測しかできません。新しいAWS Lightsail では、この問題は AWS インフラストラクチャの特定の変更が原因で発生します。

Launchpadのcloud-initに関するこの質問は、同じ問題を文書化したようです。https://bugs.launchpad.net/cloud-init/+bug/1863773

おすすめ記事