お家でラズパイを使ってDNSサーバーを作ってみる
使用するDNSサーバーを指定する方法はこんな感じ
調べた限り
bindってやつを使うか
dnsmaskを使うっぽい
unboundってのもあるっぽい
Dnsmasqが簡単で良さそう
一般的に良く使われている BIND を構築するのは、コンフィグ設定を含め、専門知識も必要そうだし、ささっとやりたいんだけどなんだか難しそう。。と思っている方も少なくないと思います。
やりたいのは、単純に名前解決さえできればいい。 難しそうな BIND を構築するまでもない時こそ Dnsmasq の出番です。
https://gyazo.com/527eaf5b06ee26f623a580e0eecd7e8f
内部向けの DNS サーバを構築できるっぽい
ただ、DHCPも使うことが前提っぽいけどそのあたりよくわかってない(というかDHCPはルーターがやってくれてるしそれでよくない?)
unboundでも良さそう
かちおくんも使ってるし
Unbound は検証をおこなったり再帰・キャッシュをする DNS リゾルバです。
キャッシュもできるっぽいのでこれにしてみるか
というかこれがやりたいことまんまなので、この記事を進めていく
Unboundをインストールしただけで,サーバーは名前解決の際に自分自身のUnboundにクエリーを投げ,Unboundは元々設定されていたネームサーバーに再帰的にクエリーを投げる,という動作をします。
なるほど〜
設定ファイルは/etc/unbound/unbound.conf.d/*.confに分割して置くほうが管理しやすいでしょう。
unbound.confにexampleのパスが書いてあったのでコピーした
iptableで53番ポートを開く際にtcpのみでなく、udpも開いておく(ここで10分ほど詰まった)
ローカルでDNSサーバーをラズパイのDNSに設定
https://gyazo.com/69e8b3ad62c2afda01b4667c049d9c46
これをルーターのDNSサーバーに設定するとDHCPの割当のさいに、DNSサーバーのIPも配布されるっぽい
code:bash
➜ dig key.home
; <<>> DiG 9.10.6 <<>> key.home
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46273
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;key.home. IN A
;; ANSWER SECTION:
key.home. 3600 IN A 192.168.0.200
;; Query time: 16 msec
;; SERVER: 192.168.0.200#53(192.168.0.200)
;; WHEN: Tue Jul 02 00:21:48 JST 2019
;; MSG SIZE rcvd: 53
➜ .ssh traceroute key.home
traceroute to key.home (192.168.0.200), 64 hops max, 52 byte packets
うまくいった
https://gyazo.com/befff3cee9ce0ee13a13e2856d3f519d
キャッシュも上の記事を見て設定できた