久しぶりの備忘録。
最近、DNSサーバとかLDAPサーバとかを触ることが多いので、そのトラブルシューティングに奔走してる
同じことを繰り返したくないので備忘として残しておく。
環境
OS
RockyLinux9.4
BINDバージョン
BIND 9.16.23-RH
トラブル内容
直接外に抜けることができないインターナルサーバ用に、DNSキャッシュとしてBINDサーバを構築した。
とりあえずChatGPTや先人の方の知恵を借りて、forwardersの設定をすればいいと理解。
以下のような設定を追加した。
options {
forwarders {
8.8.8.8;
8.8.4.4;
};
forward only;
~以下省略~
とりあえずこれでGoogleDNSを使えるようになるはず。
resolve.confもnameserverをlocalhostに設定してdig試験。
; <<>> DiG 9.16.23-RH <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 10386
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
失敗。
原因
結論、dnssec-validationの設定に問題がありフォワーディングできていなかった。
dnssec-validation no; # 設定をnoに変更
#dnssec-validation yes;
こうすることでうまくいった。
ちなみに、dnssec-validationって何ぞや、と思って調べてみると
BIND で DNSSEC(DNS Security Extensions)を利用するための設定です。DNSSEC は、DNS 情報の改ざんやなりすましを防ぐために、デジタル署名を用いて DNS 応答の信頼性を検証するセキュリティ拡張機能です。この設定を有効にすると、BIND は DNSSEC で署名されたドメインの検証を行い、正当な署名がない、または改ざんされた可能性がある応答を拒否します。
ChatGPT
結局よくわからんかった。
DNSのセキュリティ拡張"DNSSEC"入門|【技業LOG】技術者が紹介するNTTPCのテクノロジー|【公式】NTTPC
インターネットの世界で欠かすことの出来ないDNS(DomainNameSystem)。そのDNSのセキュリティ拡張である、DNSSECという技術について簡単に説明します。
このあたり見てみると、よくある鍵認証と同じ仕組みなんかな?
プライベートアドレスしか持っていないサーバなので外から攻撃されることはないと思うけど、念のためACLで同じネットワーク以外からのアクセスは閉じておいた。