dig: parse of /etc/resolv.conf failed の原因と確認手順
dig実行時に parse of /etc/resolv.conf failed が出たとき、resolv.confの実体・構文・不可視文字・管理元を確認し、DNS応答エラーとは分けて原因を切り分けます。
このページの目的
digが/etc/resolv.confの読み取り・解析で失敗する特定エラーだけを対象にします。DNS応答のNXDOMAINやSERVFAILとは分けて確認します。
最初にやること
/etc/resolv.confを直接書き換える前に、ls -lとreadlink -fで実体と管理方式を確認し、次に構文と不可視文字を確認します。
関連するDNS障害・設定ガイド
DNS名前解決できない原因を切り分ける
dig以外も含む名前解決障害を、OS側・DNS応答・設定の順で切り分けます。
全体を切り分ける →設定ガイドsystemd-resolvedとresolv.conf
resolv.confの実体、127.0.0.53、resolvectl、設定の管理元を確認します。
resolver設定を確認 →dig結果digのstatusの見方
NXDOMAIN・SERVFAIL・REFUSED・timeoutなどDNS応答の意味を確認します。
statusを確認 →parse of /etc/resolv.conf failedが含まれる場合です。名前解決全般はDNS名前解決できないガイド、digのNXDOMAINやSERVFAILはdig statusガイドへ分けています。最初にresolv.confの実体と内容を保存して確認
/etc/resolv.confは通常ファイルとは限らず、systemd-resolvedなどが管理するファイルへのsymlinkになっている場合があります。管理元を確認せずに直接上書きすると、再起動・DHCP更新・VPN接続などで戻ることがあります。
nameserver・search・optionsの行を確認
resolv.confはキーワードと値を行単位で記述します。よく使われるnameserverではIPアドレス、searchでは検索ドメイン、optionsではresolverオプションを指定します。
キーワードの綴り、値の不足、不正な区切りやコピペ由来の文字がないか確認します。コメントは通常#または;から始まる行として扱われます。
見た目で分からない文字はエスケープ表示で確認
全角スペース、CRLF、制御文字などが混ざると、画面上では正常に見えても解析に失敗することがあります。特にWindows上で編集したファイルやテンプレートから生成したファイルでは確認しておくと安全です。
systemd-resolvedやNetworkManagerなどの管理元を確認
systemd-resolved、NetworkManager、DHCPクライアント、VPNクライアント、コンテナ環境などがDNS設定を生成する場合があります。修正先は環境によって異なるため、生成後のresolv.confだけ直して終わりにしないようにします。
resolvectl statusを合わせて確認します。systemd-resolvedを使わない既存環境もある
古いディストリビューションや既存運用では、/etc/resolv.confを直接管理したり、NetworkManager・DHCPクライアントが生成したりする構成があります。resolvectlがないこと自体を異常と判断しません。
旧systemd環境ではsystemd-resolveを見かけることがあります。現行コマンドへの置換を先に行うのではなく、その環境でDNS設定を誰が管理しているかを確認します。
確認結果から修正方法を決める
| 確認結果 | 対処 |
|---|---|
| 不正な行・不可視文字・CRLF等がある | 管理元を確認したうえで不正部分だけを修正します。自動生成ファイルの場合は生成元の設定を直し、/etc/resolv.confを直接恒久編集しません。 |
/etc/resolv.confがsystemd-resolvedのsymlink | resolvectl statusでリンク別DNS設定を確認し、NetworkManager・networkd・DHCP/VPNなど実際の設定元を修正します。 |
| NetworkManager管理 | 接続プロファイル側のDNS設定を確認・修正し、接続の再適用後に/etc/resolv.confが期待どおり再生成されたか確認します。 |
| 静的管理の既存環境 | バックアップを取ってからnameserver等の必要行だけを修正し、構文エラーが消えたことを確認します。 |
| 構文エラーは消えたが名前解決は失敗 | 問題は別段階です。DNSサーバー到達性・応答コード・NSS経路をDNS名前解決トラブルで切り分けます。 |
修正後は「解析できる」「名前解決できる」を別々に確認
digが起動できても、DNSサーバーからNXDOMAIN・SERVFAIL・REFUSEDなどが返る場合は別の問題です。その場合はdig statusガイドで応答コードを切り分けます。