---
title: DNS 運用マニュアル
url: https://doc.liz6.com/ja/devops/dns-ops
locale: ja
area: devops
tags:
- devops
date: 2026-06-30
modified: 2026-07-16
description: DNS 運用マニュアル dig レコードタイプ早見表 クラウド API 操作 DNSSEC 暗号化 DNS テスト トラブルシューティング
---

# DNS 運用マニュアル

## dig

```bash
dig example.com                                     # 基本的な A レコードの照会
dig example.com +short                              # IP アドレスのみを出力
dig example.com A                                   # タイプを指定
dig example.com AAAA                                # IPv6
dig example.com MX                                  # メールサーバー
dig example.com NS                                  # 権威 DNS サーバー
dig example.com ANY                                 # すべてのレコード (一部のサーバーでは無視される)
dig @8.8.8.8 example.com                            # DNS サーバーを指定

dig +trace example.com                              # ルートから再帰的に解決 (解決チェーン全体を確認)
dig -x 8.8.8.8                                      # PTR: IP → ホスト名
dig example.com +dnssec                             # DNSSEC RRSIG を含む

# 出力の解釈:
# ;; ANSWER SECTION:     実際の回答
# ;; AUTHORITY SECTION:  NS レコード (誰が回答する権限を持っているか)
# ;; ADDITIONAL SECTION: NS の IP (グルーレコード)
# ;; Query time: 12 msec
# ;; SERVER: 127.0.0.1#53
```

## レコードタイプ早見表

```
A:      IPv4
AAAA:   IPv6
CNAME:  別名 (canonical name) — 注意: CNAME は他のタイプと共存できない
MX:     メールサーバー (優先度 + ホスト名)
NS:     権威 DNS サーバー
SOA:    権威開始 (ゾーンシリアル番号、更新/再試行/有効期限、管理者メールアドレス)
TXT:    テキスト (SPF, DKIM, DMARC、検証トークン)
SRV:    サービスロケーション (_service._proto.name → ホスト:ポート)
PTR:    逆引き照会 (IP → 名前)
CAA:    CA の発行を制限 (0 issue "letsencrypt.org")
```

## クラウド API 操作

```bash
# Alibaba Cloud (aliyun CLI)
aliyun alidns DescribeDomainRecords --DomainName example.com
aliyun alidns AddDomainRecord --DomainName example.com --RR www --Type A --Value 1.2.3.4
aliyun alidns UpdateDomainRecord --RecordId <id> --RR www --Value 2.3.4.5
aliyun alidns DeleteDomainRecord --RecordId <id>

# Cloudflare (API)
curl -X GET "https://api.cloudflare.com/client/v4/zones/<zone_id>/dns_records?type=A" \
  -H "Authorization: Bearer <api_token>"
```

## DNSSEC

```bash
# DNSSEC 信頼チェーンの確認
delv @8.8.8.8 example.com                          # 完全な検証 (失敗理由を含む)
dig +dnssec example.com | grep RRSIG               # 署名レコードを確認
# DS レコードの確認 (親ゾーン内)
dig DS example.com
```

## 暗号化 DNS テスト

```bash
# DoT (DNS over TLS, ポート 853)
kdig @1.1.1.1 +tls-ca example.com

# DoH (DNS over HTTPS, ポート 443)
kdig @1.1.1.1 +https example.com
curl -H 'Accept: application/dns-json' 'https://1.1.1.1/dns-query?name=example.com&type=A'

# DoQ (DNS over QUIC, ポート 853)
kdig @1.1.1.1 +quic example.com
```

## トラブルシューティング

```bash
# 解決できない / 間違った IP に解決される場合
dig example.com +short                              # まず応答内容を確認
dig +trace example.com                              # どの段階で失敗しているか？
dig @8.8.8.8 example.com vs dig @223.5.5.5 example.com  # 国内外の比較

# DNS ポイズニング (GFW による投毒)
# → 異なるリゾルバーの応答を比較
# → @8.8.8.8 が正常な応答を返すが、ローカルが偽の IP を返す場合 → ローカル DNS がハイジャックされている

# ローカルキャッシュ
systemd-resolve --statistics                       # systemd-resolved のキャッシュ
systemd-resolve --flush-caches                      # キャッシュのクリア

# 本体の DNS 設定を確認
cat /etc/resolv.conf
resolvectl status
```
