エラーメッセージ
クイックアップデートを実行したり、接続を確認したりしようとした際、Linuxで作業が中断されてしまうことがあります。sudo apt updateやping google.comと入力した際、データが流れる代わりに、以下のようなもどかしいエラーメッセージが表示されることがあります。
ping: google.com: Temporary failure in name resolution
要するに、システムが「電話帳」を見失った状態です。インターネットへの接続方法は分かっていても、google.comのような人間が読めるドメイン名を、トラフィックのルーティングに必要なマシンが読み取れるIPアドレスに変換できないのです。名前解決ができなければ、接続することはできません。
主な原因
ほとんどの場合、問題は以下の3つのいずれかに潜んでいます。
/etc/resolv.confファイルが空である、存在しない、あるいは設定が間違っている。systemd-resolvedサービスがクラッシュしているか、起動に失敗している。- ローカルファイアウォール(UFWなど)が、UDPポート53でのDNSトラフィックを密かにブロックしている。
ステップ1:接続状況の現状確認から始める
複雑な設定ファイルを調べる前に、物理ネットワークまたは仮想ネットワークが実際に動作しているか確認しましょう。パブリックIPアドレスに直接pingを送信してみてください。筆者はいつも、信頼性が高く覚えやすいGoogleの8.8.8.8を使用しています。
ping -c 4 8.8.8.8
接続に成功し、一般的な光回線で通常30ミリ秒未満で応答が返ってくる場合、ハードウェアとゲートウェイは正常です。問題は純粋にDNSにあります。もしこのpingが "Network is unreachable"(ネットワークに到達できません)で失敗する場合は、まずルーティングやハードウェアに関するより深刻な問題を解決する必要があります。
ステップ2:/etc/resolv.confの調査
従来、LinuxはDNSサーバーを探すために/etc/resolv.confを参照します。Ubuntu 22.04や24.04のようなモダンなシステムでは、このファイルは通常、バックグラウンドサービスによって管理されるシンボリックリンクです。まずは現在の内容を確認しましょう。
cat /etc/resolv.conf
もしnameserverの行が見当たらない場合は、それが原因です。パブリックDNSサーバーを一時的に追加して、アクセスが回復するか確認できます。
sudo nano /etc/resolv.conf
ファイルに以下の行を追加します。
nameserver 8.8.8.8
nameserver 1.1.1.1
再度pingをテストしてください。成功すれば、問題が特定されたことになります。ただし、多くのディストリビューションでは、再起動やネットワークの再起動時にこのファイルが自動的に上書きされることに注意してください。修正を恒久的なものにするには、このファイルを管理しているサービスに対処する必要があります。
ステップ3:systemd-resolvedの修復
最近のディストリビューションの多くは、名前解決の処理にsystemd-resolvedを使用しています。このサービスが停止すると、DNSも動作しなくなります。以下のコマンドで稼働状況を確認してください。
sudo systemctl status systemd-resolved
「inactive」(停止中)になっていますか?その場合は起動し、起動時に毎回自動的に開始されるように設定します。
sudo systemctl start systemd-resolved
sudo systemctl enable systemd-resolved
システム設定とランタイムファイル間のリンクが壊れている場合があります。シンボリックリンクを再作成することで、この接続を強制的にリセットできます。
sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
ステップ4:Netplanの更新(サーバー環境)
Ubuntu Serverでは、通常DNS設定はNetplanの設定ファイルに記述されています。/etc/netplan/ディレクトリ内にある、01-netcfg.yamlや50-cloud-init.yamlといった名前のYAMLファイルを探してください。
ls /etc/netplan/
該当するファイルを開き、ネットワークインターフェースの下にnameserversブロックが正しく定義されているか確認します。
network:
version: 2
ethernets:
eth0:
dhcp4: true
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
新しい設定を即座に適用し、効果があるか確認します。
sudo netplan apply
検証:修正の確認
ウェブサイトが1つ表示されたからといって、修正されたと思い込まないでください。digコマンドを使用して、名前解決が高速(キャッシュされたクエリで50ミリ秒未満が理想)かつ信頼できるものであることを確認しましょう。
dig google.com
出力結果の「ANSWER SECTION」を確認してください。IPアドレスのリストが表示されていれば、オンラインに復旧しています。もしdigコマンドがない場合は、ステップ2の一時的な修正が有効な間にdnsutilsパッケージをインストールしてください。
予防のためのプロのヒント
新しいサーバーに固定IPを設定する際、ゲートウェイやサブネットマスクの入力ミスは非常によく起こります。数字が1つ違うだけで、設定ファイルが完璧に見えてもシステムがDNSプロバイダーに到達できなくなることがあります。
デプロイ作業中には、ToolCraftのサブネット計算機のようなツールを開いておくと便利です。CIDR範囲やブロードキャストアドレスを数秒で再確認でき、単純なルーティングの入力ミスがDNSエラーのように見えるのを防ぐことができます。ブラウザベースでプライバシーも守られているため、本番環境のセットアップに最適です。
最終チェック:ファイアウォール
設定が完璧なのに名前解決に失敗する場合は、ファイアウォールがパケットを遮断している可能性があります。DNSは通常、UDPポート53を使用します。ufwを使用している場合は、10秒間無効にしてこの仮説をテストしてみてください。
sudo ufw disable
エラーが解消された場合は、DNSトラフィックの外部送信を許可するルールを追加してから、ファイアウォールを再度有効にします:sudo ufw allow out 53/udp。

