プライベートな名前の解決やマルチホーミングのお供に。所謂split DNSをクライアント側で設定してみます。systemd-resolved含めて普通のOSは接続ごとのDNSサーバと検索ドメインをみて良きに処理してくれます。一方で接続切れた時に内部用の名前を外に流したくないとか、ちょこっとテストしたいとかいう場面もあります。毎回ググって情報にたどり着くのがめんどくなったので備忘です。IPのルーティングは別途必要。懐かしいですがフレッツのサービス情報サイトの.fletsとかもそうですね… Root Zone Database 流石に確保してないですか。.nttは復活してたのですね。
Contents
macOS – resolver(5)のdomainの項
1 2 3 4 5 6 7 |
$ sudo mkdir -p /etc/resolver $ cat | sudo tee /etc/resolver/xn--eckwd4c7cu47r2wf.jp >/dev/null nameserver 192.168.1.1 nameserver 192.168.1.2 ^D $ sudo ln -s xn--eckwd4c7cu47r2wf.jp /etc/resolver/example7.jp $ sudo chmod go-w /etc/resolver /etc/resolver/* |
Windows – admin PowerShellでAdd-DnsClientNrptRule
1 2 3 4 5 6 7 8 9 10 11 12 |
> Add-DnsClientNrptRule -Namespace ".example7.jp" -NameServers "192.168.1.1","192.168.1.2","192.168.1.3","192.168.1.4" > Add-DnsClientNrptRule -Namespace ".ドメイン名例.jp" -NameServers "192.168.1.1","192.168.1.2" > Resolve-DnsName hoge.example7.jp > Get-DnsClientNrptRule Name : {7AEA239F-20D2-4722-AA6D-876975822117} Version : 2 Namespace : {.example7.jp} ... > Remove-DnsClientNrptRule -Name "{7AEA239F-20D2-4722-AA6D-876975822117}" > Get-DnsClientNrptRule | foreach { Remove-DnsClientNrptRule -Name $_.Name } |
ついでによく使われるローカルキャッシュサーバ
Unbound – unbound.conf(5)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
... interface: 127.0.0.1 ... #server: # domain-insecure: "example7.jp" # domain-insecure: "xn--eckwd4c7cu47r2wf.jp" forward-zone: name: "example7.jp" forward-addr: 192.168.1.1 forward-addr: 192.168.1.2 forward-zone: name: "xn--eckwd4c7cu47r2wf.jp" forward-addr: 192.168.1.1 forward-addr: 192.168.1.2 #stub-zone: # name: "example7.jp" # stub-addr: 192.168.1.1 # 権威サーバ # stub-addr: 192.168.1.2 # 権威サーバ ... |
dnsmasq – dnsmasq(8)
1 2 3 4 5 6 7 8 9 |
... listen-address=127.0.0.1 ... local=/127.in-addr.arpa/168.192.in-addr.arpa/local/localdomain/ server=/example7.jp/xn--eckwd4c7cu47r2wf.jp/192.168.1.1 server=/example7.jp/xn--eckwd4c7cu47r2wf.jp/192.168.1.2 server=/example7.jp/192.168.1.3 server=/example7.jp/192.168.1.4 ... |
systemd–resolved
こちらはsystem-resolvedを使わないでキャッシュサーバを指定する方法。
1 2 |
$ sudo systemctl stop systemd-resolved $ sudo systemctl disable systemd-resolved |
/etc/resolv.confを勝手にいじくらないようにNetworkManagerを設定。
1 2 |
[main] dns=none |
/etc/resolv.confへのsymlinkを消して普通に編集。