DNS: NXDOMAIN - Domain not found
DNSでドメイン名が解決できない場合のエラー原因と解決策
概要
DNSクエリでドメイン名が存在しないと応答された場合のエラーです。
エラーメッセージ
``` getaddrinfo ENOTFOUND example.com ```
または
``` NXDOMAIN ```
原因
- ドメイン名のタイプミス: スペルミス
- DNSレコード未設定: ドメインは存在するがレコードがない
- DNS伝播の遅延: 新規設定後の伝播待ち
- DNSサーバーの問題: 使用中のDNSサーバーの障害
解決策
1. ドメイン名を確認
```bash
正しいドメイン名か確認
dig example.com
別のDNSサーバーで確認
dig @8.8.8.8 example.com dig @1.1.1.1 example.com ```
2. DNSレコードを確認
```bash
Aレコード
dig example.com A
CNAMEレコード
dig www.example.com CNAME
全レコード
dig example.com ANY ```
3. DNSキャッシュをクリア
```bash
macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux (systemd-resolved)
sudo systemd-resolve –flush-caches
Windows
ipconfig /flushdns ```
4. /etc/hosts で一時対応
```bash
/etc/hosts
192.168.1.100 myapp.local ```
5. DNSサーバーを変更
```bash
/etc/resolv.conf
nameserver 8.8.8.8 nameserver 8.8.4.4 ```
6. アプリケーションでのリトライ
```javascript const dns = require(‘dns’).promises;
async function resolveWithRetry(hostname, retries = 3) { for (let i = 0; i < retries; i++) { try { return await dns.resolve(hostname); } catch (err) { if (err.code === ‘ENOTFOUND’ && i < retries - 1) { await new Promise(r => setTimeout(r, 1000 * (i + 1))); continue; } throw err; } } } ```
よくある間違い
- www有り/無しの違い
- サブドメインの設定漏れ
- TTLを考慮しない変更確認
関連エラー
関連エラー
Network の他のエラー
この記事は役に立ちましたか?