DNSの設定とトラブルシューティング
Linuxサーバーがホスト名をIPアドレスに解決する仕組みを理解します。リゾルバーを設定し、/etc/hostsを編集し、dig、nslookup、hostを使って、ネットワークが正常でも接続を妨げるDNS問題を診断します。
「DNSの設定とトラブルシューティング」はCoddyKit上の無料Linux Server Deployment & SSH Masteryレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Server Deployment & SSH Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
サーバーでDNSが重要な理由
ネットワークとファイアウォールの設定が完璧でも、名前を解決できなければ、サーバーは外部に接続できません。DNSは、example.comのような人間が扱いやすいホスト名をIPアドレスに変換します。
名前解決の仕組みと、そのデバッグ方法を知ることは、ネットワークに関する重要なスキルです。
名前解決の経路
プログラムが名前に対応するIPアドレスを必要とすると、Linuxは通常、次の情報源を順番に確認します。
- ローカルの
/etc/hostsファイル - 設定されたDNSサーバー(リゾルバー)
この順序は、/etc/nsswitch.confのhosts:行で定められています。
grep hosts /etc/nsswitch.conf
# hosts: files dns/etc/hostsファイル
/etc/hostsは、DNSを経由せずにローカルで名前とIPアドレスを対応付けます。テスト、内部ホスト名の設定、特定のIPアドレスへのドメインの固定に適しています。
各行には、IPアドレスに続けて1つ以上の名前を記述します。
127.0.0.1 localhost
192.168.1.50 db.internal dbリゾルバーの設定場所
従来のファイルは/etc/resolv.confで、ネームサーバーを一覧表示します。最新のシステムでは、systemd-resolvedやNetworkManagerによって管理されていることが多いため、直接編集しても変更が保持されない場合があります。
変更する前に、実際に使用されている設定を確認してください。
cat /etc/resolv.conf
resolvectl statusDNSサーバーを設定する
systemd-resolvedを使用するシステムでは、resolv.confを編集するのではなく、インターフェースごとにDNSを設定します。Netplanベースのサーバーでは、YAML設定ファイルに定義します。
この例では、あるインターフェースにパブリックリゾルバーを設定します。
sudo resolvectl dns eth0 1.1.1.1 8.8.8.8
resolvectl dns eth0digでレコードを検索する
digは、最も高機能なDNSクエリツールです。応答に加えて、クエリのメタデータも表示します。
+shortオプションを使うと、応答だけに絞り込めるため、スクリプトに適しています。
dig example.com
dig +short example.com特定のレコードタイプを検索する
DNSには、多くのレコードタイプが保存されています。タイプを指定すると、メール、ネームサーバー、エイリアスなどを調べられます。
A— IPv4アドレスAAAA— IPv6アドレスMX— メールサーバーNS— ネームサーバーCNAME— エイリアス
dig example.com MX +short
dig example.com NS +shortnslookupとhost
nslookupとhostは、digより簡単な代替ツールです。簡単な確認や逆引き(IPアドレスから名前を調べる操作)に便利です。
逆引きでは、アドレスに対応するPTRレコードを検索します。
host example.com
nslookup example.com
dig -x 8.8.8.8 +short特定のサーバーに問い合わせる
特定のリゾルバーに問題があるかをテストするには、@構文を使って特定のサーバーにクエリを送ります。パブリックリゾルバーでは動作するのに自分のリゾルバーでは動作しない場合は、DNS設定に問題があります。
dig @1.1.1.1 example.com +short
dig @8.8.8.8 example.com +shortトラブルシューティングの手順
名前を解決できない場合は、次の層を順番に確認してください。
- IPアドレスを直接pingできますか?(ネットワークの問題を切り分けます)
dig @1.1.1.1 nameは動作しますか?(名前自体の問題を切り分けます)- デフォルトのリゾルバーを使った
dig nameは動作しますか?(リゾルバー設定を切り分けます) - 古い
/etc/hostsエントリが上書きしていませんか?
ping -c1 1.1.1.1
dig @1.1.1.1 example.com +short
dig example.com +shortベストプラクティス
名前解決を安定させるには、次の点に注意してください。
- 冗長性を確保するため、少なくとも2つのリゾルバーを使用する
resolv.confが自動管理されている場合は手動編集しない- テストには
/etc/hostsを使用するが、古いエントリは削除する - 出力を簡潔にするため、スクリプトでは
dig +shortを優先する
クイックチェック
DNSのトラブルシューティングに関する知識を確認しましょう。
まとめ
これで、サーバー上のDNSを設定およびデバッグできるようになりました。
/etc/nsswitch.confと/etc/hostsによる名前解決の順序resolv.conf/systemd-resolvedのリゾルバー- 特定のレコードタイプやサーバーを含む、
dig、host、nslookupによる検索 - 段階的なトラブルシューティング手順
これで、ネットワークとファイアウォールのスキルに名前解決の層が加わりました。
AI チューターと学ぶ Linux Server Deployment & SSH Mastery — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 12
- レッスン
- 48
よくある質問
「DNSの設定とトラブルシューティング」レッスンは無料ですか?
はい。「DNSの設定とトラブルシューティング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Server Deployment & SSH Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
「DNSの設定とトラブルシューティング」で何を学びますか?
Linuxサーバーがホスト名をIPアドレスに解決する仕組みを理解します。リゾルバーを設定し、/etc/hostsを編集し、dig、nslookup、hostを使って、ネットワークが正常でも接続を妨げるDNS問題を診断します。 ブラウザで直接実行するハンズオンコードでLinux Server Deployment & SSH Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Server Deployment & SSH Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Server Deployment & SSH Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「DNSの設定とトラブルシューティング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Server Deployment & SSH Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Server Deployment & SSH Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ネットワーク設定の基礎
- ファイアウォールを理解する(UFW/firewalld)
- ポート管理とセキュリティ
- DNSの設定とトラブルシューティング