DNSの名前解決をしたら、仮想サーバーのIPv4アドレスが表示された
1. IPv4アドレスが表示されない問題が発生
以前の記事で、仮想サーバーにHTMLファイルをアップロードに関する事を書いた。
その後再度起動すると、IPv4アドレスが表示されずアップロードした内容が閲覧出来ない自体が発生した。しかも、たまにアドレスが表示されることもあり、どういう場合に表示/非表示になるのか分からない。
ネットワークモードは「ブリッジ」にしており、アドレスはDHCPで動的に割り振られている。
また、 sudo apt update を行うと、 ports.ubuntu.com でfailed to fetchが発生していた。
ping google.comでインターネット接続を試みると、 ping: google.com: Temporary failure in name resolution というメッセージが出力された。
という事は、名前解決に関して問題が発生しているという事までは判明した。
どうすれば解決出来るだろうと色々調べていると、どうやらDNSに関する問題があるらしい事がわかった。
2. 解決の過程
- 原因の特定:
sudo nano /etc/resolv.conf というファイルにDNSサーバーの設定が以下のように記載されていた。
nameserver 127.0.0.53
options edns0 trust-ad
search .
この記述内容だとローカルDNSキャッシュサーバーを指定しているので、外部との接続における名前解決が出来なかったようである。
なので、まずは name server を以下のように直した。
nameserver 8.8.8.8
nameserver 8.8.4.4
options edns0 trust-ad
search .
上記のように修正した後、再度 ping google.com で確認すると、まだ名前解決が出来ていなかった。
再度調べたら、名前解決を行う設定ファイル /etc/systemd/resolved.conf を修正する必要があることが分かった。
3. DNS設定の変更
sudo nano /etc/systemd/resolved.conf を入力してみると、30行ほどコメントアウトされたテキストが表示された。
その中で、Resolveの下にDNSとバックアップ用のDNSを設定する項目があったので、ここを編集した。
[Resolve]
DNS=8.8.8.8 8.8.4.4
FallbackDNS=8.8.8.8 8.8.4.4
編集後は、 sudo systemctl restart systemd-resolved を実行して、再起動を行って設定を反映させた。
4. シンボリックリンクの確認と更新
/etc/resolv.conf が正しいリンク先を指しているか確認し、systemd-resolved が管理しているDNS設定が有効になっていることを確認する。
以下のコマンドを使用して、/etc/resolv.conf を適切に設定した。
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
5. 遂にインターネット接続を確認
再度 ping google.com を実行した所、今度は名前解決が成功しインターネット接続が確認出来た。lp a でIPv4アドレスも表示されている事を確認出来た。そして、以前アップロードしたファイルも閲覧出来た。
最後に: DNS設定の重要性
このように、DNSの設定が正しく行われていなかったため、仮想サーバーは外部のサイトに接続することが出来なかった。しかし、正しいDNSサーバー(8.8.8.8)を設定することで、名前解決の問題が解消され、インターネット接続が復旧した。
DNSの設定だけでもかなり手間取ったので、ネットワーク分野は途方もなく広大である事を痛感した時間であった。
今回の解決方法まとめ
- /etc/systemd/resolved.conf を編集し、適切なDNSサーバーを設定。
- インターネット接続を確認。
Discussion