自宅用内部DNSサーバーの構築
khws4v1.myhome.cxは自宅サーバーでやっているわけですけども、LANの外からアクセスする時は普通に外部のDNSサーバーが名前解決してアクセスできる。
一方でLANの中からアクセスするにはローカルIPアドレスでないといけないが、外部のDNSサーバーからはグローバルIPアドレスしか教えてくれないのでアクセス不能になるのだ。
ならばLAN内に内部のDNSサーバーを作り、それを使うことで自宅サーバーにアクセスできるようにしようというわけだ。
dnsmasq
DNSサーバーといえばbindだが、所詮内部DNSサーバーにbindは大げさすぎる。
導入が簡単なdnsmasq程度で済ましておくのが良さそうだ。
設定
まずはインストールする。
|
1 |
yum install dnsmasq |
/etc/dnsmasq.confの設定ファイルを書く。
初期状態で長いが、少しだけ書き加えたりするだけで済む。
|
1 2 3 4 5 6 7 |
# Never forward addresses in the non-routed address spaces. bogus-priv # Add local-only domains here, queries in these domains are answered # from /etc/hosts or DHCP only. #local=/localnet/ local=/khws4v1.myhome.cx/ |
bogus-privはローカルIPアドレスの逆引きを上位のDNSサーバーに転送しない。
localは/etc/hostsかDHCPでのみ名前解決するドメインを指定する。
/etc/hostsに自宅サーバーのIPアドレスを書く。
|
1 |
x.x.x.x khws4v1.myhome.cx |
DNSサーバーの設定
内部DNSサーバーが使う外部DNSサーバーの設定をする。
これをしないとDHCPのDNSサーバーを設定した時に無限ループして死ぬ。
- DHCPで設定されているDNSサーバーの設定を無視するようにする
|
1 |
nmcli con mod enp0s0 ipv4.ignore-auto-dns yes |
- DNSサーバーを指定する
|
1 |
nmcli con mod enp4s0 ipv4.dns '192.168.0.1 8.8.8.8 8.8.4.4' |
- NetworkManagerを再起動する
|
1 |
systemctl restart NetworkManager |
起動&自動起動
|
1 2 |
systemctl start dnsmasq systemctl enable dnsmasq |
動作確認
|
1 |
dig @サーバーのIPアドレス khws4v1.myhome.cx |
複数回やると結果がキャッシュされているので、爆速で返答してくれるはず。
動作確認が終わったらDHCPのDNSサーバーをルーターの方で設定しておくと各クライアントの設定の手間が省ける。