UnboundでCNAMEレコードを返却する
Unboundを使って、任意のドメインに対してCNAMEで別のドメインを返却し、そのドメインの名前解決を外部DNSへ再帰問い合わせする、という機能が実現できるか調査した。
結論
仕様として意図された振る舞いかどうかは不明だが、local-zoneのtype(local-dataに合致しない問い合わせへの応答方法)をredirectに設定すると、CNAMEレコードに設定した外部ドメインを再帰問い合わせして返却できる。(typeをtransparentに設定すると再帰問い合わせが行われない。)
local-zone: "cname.dummy" redirect
local-data: "cname.dummy. CNAME google.com."
unboundのマニュアルからはauth-zoneとstub-zone(もしくはforward-zone)を設定するのが本来の使い方のようであるが、下記の設定では再帰問い合わせが実現できなかった。
auth-zone:
name: cname.dummy
zonefile: ./zone.conf
forward-zone:
name: google.com
forward-addr: 8.8.8.8
zone.conf
cname.dummy. IN CNAME google.com.
検証方法・結果
docker-compose.yml
version: '3'
services:
unbound:
image: mvance/unbound
hostname: unbound
ports:
- 53:53/udp
- 53:53/tcp
volumes:
- ./local-zone.conf:/opt/unbound/etc/unbound/a-records.conf
restart: always
shell:
tty: true
build:
context: .
depends_on:
- unbound
command: dig @unbound cname.dummy
local-zone.conf
local-zone: "cname.dummy" redirect
local-data: "cname.dummy. CNAME google.com."
実行結果
# docker-compose up
...
shell_1 | ;; QUESTION SECTION:
shell_1 | ;cname.dummy. IN A
shell_1 |
shell_1 | ;; ANSWER SECTION:
shell_1 | cname.dummy. 3600 IN CNAME google.com.
shell_1 | google.com. 300 IN A 172.217.25.206
...
参考
- unbound.confマニュアル
- メーリングリスト
-
[Unbound-users] Can't get CNAME entries to resolve
- Unboundは全ての機能をサポートした権威サーバーとして設計されていないため、CNAMEのように設定値の解釈(再帰問い合わせ)が必要なレコードはstub-zoneを使って、他の権威サーバーに転送する必要があるとのこと。
-
auth-zone and CNAME record...still not working?
- auth-zoneとstub-zoneの設定でCNAMEレコードの再帰問い合わせが発生しないという投稿に対して、redirectを使う方法(今回の解決策)の提案と、
for-downstream: no
をすればよい(この方法では期待通り動作しなかった)との助言がされている。
- auth-zoneとstub-zoneの設定でCNAMEレコードの再帰問い合わせが発生しないという投稿に対して、redirectを使う方法(今回の解決策)の提案と、
-
[Unbound-users] Local-data CNAME-Records seems not to work properly
- CNAMEレコードの設定について、stub-zoneを設定する必要があるとの回答がされている。
-
[Unbound-users] Can't get CNAME entries to resolve
Author And Source
この問題について(UnboundでCNAMEレコードを返却する), 我々は、より多くの情報をここで見つけました https://qiita.com/unhurried/items/74680bc955c316ab6898著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .