自宅用内部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サーバーをルーターの方で設定しておくと各クライアントの設定の手間が省ける。