きっかけは時刻同期できない問題
ラズパイでネット接続出来なくなり、解決するのに時間がかかったので行った内容をメモしておきます。
事象が発生したのはDNSサーバー
名前解決出来なくなったのはLAN内のDNSサーバーでした。このサーバーは非インターネット接続の有線LAN接続側でDNSサーバーとして動作しており、その動作は問題ありませんでした。無線LANではDHCPクライアントとしてインターネット接続しており、以前はこの接続を使用してアップデート等を行っていました。
時刻同期がなぜか失敗する
このサーバーはGitLabサーバーも兼ねているのですが、時刻が3日ほどずれています。「そういえばNTPクライアントの設定をしていなかったな」と思い、NTP参照先の設定したところ、設定や再起動を何度行っても時刻同期してくれませんでした。
google.comへのping送信も失敗する
いろいろ検証している中で、名前解決が出来ていないのでは?と考え、試しにgoogle.comにping送信すると、「名前解決に一時的に失敗しました」の文言がでました。
解決方法
今回の事象、根本原因はわかりませんでしたが解決できたのでその手順をメモしておきます。
一時的に"/etc/resolv.conf"を書き換え
resolv.confの内容は下記のようになっています。
# vim /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 127.0.0.1
ネームサーバーとしてループバックアドレスが指定されていました。このファイルを編集して以下のように書き換えます。
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 8.8.8.8
このファイルは再起動で再度、変更前と同じ状態になってしまうのですが、再起動せずにネットワークのみリスタートすると名前解決できるようになります。
# systemctl restart networking
resolvconfのアップデート
これで一時的に名前解決できるようになったので、ここから根本解決を行います。根本解決と言っても、内容としてはresolvconfのアップデートだけです。
# apt update # apt install resolvconf
これで再起動したところ、前述のように"/etc/resolv.conf"の内容は変更前に戻りましたが、名前解決は問題なくできるようになり、時刻同期もできました。