DNSサービス関連の核心概念と技術実装
2. DNSサーバーの種類と動作原理
2.1 DNSサーバーの分類
タイプ | 役割 | 特徴 |
---|---|---|
プライマリDNS | オリジナルゾーンデータを保持 | 書き込み可能 |
セカンダリDNS | ゾーン転送でデータを複製 | 読み取り専用 |
キャッシュDNS | クエリ結果を一時保存 | フォワーダ機能を併用 |
2.1.1 プライマリDNSの特徴
- ゾーンファイルの排他的管理
- SOAレコード内でシリアル番号管理
- ゾーン情報の更新権限を持つ
2.1.2 セカンダリDNSの同期メカニズム
# named.conf設定例
zone "example.com" {
type slave;
masters { 192.168.1.10; };
file "slaves/example.com.zone";
};
同期パラメータ:
- リフレッシュ間隔(推奨:2時間)
- リトライ間隔(推奨:10分)
- 有効期限(推奨:1週間)
- 通知メカニズム(NOTIFY)
2.2 ゾーン転送の方式比較
方式 | 転送データ量 | ネットワーク負荷 | 使用シナリオ |
---|---|---|---|
フル転送 | 大 | 高 | 初回同期時 |
増分転送 | 小 | 低 | 定期的な更新時 |
2.3 正引き/逆引きの仕組み
# 正引きクエリ例
dig www.example.com
# 逆引きクエリ例
dig -x 192.168.1.1
3. リソースレコードの詳細解説
3.1 主要RRタイプ一覧
タイプ | 用途 | 例 |
---|---|---|
SOA | ゾーン権限情報 | example.com. IN SOA ... |
NS | ネームサーバー指定 | example.com. IN NS ns1 |
A | IPv4アドレスマッピング | www IN A 192.168.1.1 |
AAAA | IPv6アドレスマッピング | www IN AAAA 2001:db8::1 |
CNAME | エイリアス設定 | ftp IN CNAME www |
MX | メールサーバー指定 | example.com. IN MX 10 mail |
TXT | テキスト情報 | example.com. IN TXT "v=spf1..." |
3.2 SOAレコード詳細設定
$ORIGIN example.com.
@ IN SOA ns1.example.com. admin.example.com. (
2023082001 ; シリアル番号
7200 ; リフレッシュ間隔(2時間)
900 ; リトライ間隔(15分)
1209600 ; 有効期限(2週間)
3600 ; ネガティブキャッシュTTL(1時間)
)
パラメータ解説:
- シリアル番号:32bit整数(YYYYMMDDNN形式推奨)
- 管理メールアドレス:
admin.example.com
→admin@example.com
3.3 MXレコードの優先度設定
@ IN MX 10 mail1
@ IN MX 20 mail2
mail1 IN A 203.0.113.5
mail2 IN A 198.51.100.10
ポイント:
- 優先度数値が小さい方が高優先
- フェイルオーバー構成に有効
- SPFレコードとの連携必須
4. 高度なDNS設定テクニック
4.1 サブドメイン委任の実装
# 親ドメイン設定
sub IN NS ns1.sub.example.com.
sub IN NS ns2.sub.example.com.
ns1.sub IN A 192.168.2.10
ns2.sub IN A 192.168.2.20
# 子ドメイン設定
$ORIGIN sub.example.com.
@ IN SOA ns1.sub admin.sub (
2023082001
3600
900
604800
1800
)
Glue Recordの重要性:
- 委任チェーンの切断防止
- 再帰問い合わせの効率化
- DNSSEC署名連携の基盤
4.2 動的DNS更新
# TSIG鍵生成
dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST ddns-key
# 更新リクエスト例
nsupdate -k Kddns-key.+163+12345.key
> server 192.168.1.10
> update add newhost.example.com. 3600 A 192.168.1.100
> send
5. 実践的なトラブルシューティング
5.1 キャッシュ管理コマンド
# Windows
ipconfig /flushdns
# Linux
systemctl restart nscd
rndc flush
5.2 ゾーン転送検証
dig AXFR example.com @ns1.example.com
セキュリティ対策:
- TSIGによる認証
- ACL制限
- TCPのみ許可
6. クラウド時代のDNS技術
6.1 HTTPDNSの仕組み
従来DNSとの比較:
項目 | 従来DNS | HTTPDNS |
---|---|---|
プロトコル | UDP 53 | HTTP/HTTPS 80/443 |
レイテンシ | 100-300ms | 30-100ms |
セキュリティ | DNSSECが必要 | TLSで暗号化 |
ロードバランシング | DNSラウンドロビン | 精密なALB連携 |
6.2 主要クラウドプロバイダのDNS機能
プロバイダ | 特徴 | 代表機能 |
---|---|---|
AWS | Route 53 エイリアスレコード | レイテンシーベースルーティング |
Azure | Traffic Manager連携 | 地理ルーティング |
GCP | Cloud DNS + Load Balancing | グローバルエニーキャスト |
7. よくある課題と解決策
7.1 TTL設定のベストプラクティス
# 変更前(通常運用)
$TTL 86400
# メンテナンス時(事前設定)
$TTL 300
注意点:
- 変更反映には新旧TTLの最大値が必要
- DNSSEC署名の更新周期と連動
- CDNキャッシュの考慮
7.2 マルチベンダーDNS運用
# ベンダー間委任設定例
@ IN NS ns1.cloud-provider.com.
@ IN NS ns2.on-premise.example.
リスク管理:
- ベンダーロックイン回避
- フェイルオーバー戦略
- 監視システムの統合
8. セキュリティ強化の実装
8.1 DNSSEC導入例
# 鍵生成
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com
# ゾーン署名
dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) -N INCREMENT -o example.com -t example.com.zone
8.2 DoH/DoT設定
# Cloudflare DoHエンドポイント
https://cloudflare-dns.com/dns-query
# Unbound設定例
server:
tls-cert-bundle: "/etc/ssl/certs/ca-certificates.crt"
forward-zone:
name: "."
forward-addr: 1.1.1.1@853#cloudflare-dns.com