2016/10/22

dnsmasqで家庭内LAN向けDNSサーバ

今まで、家庭内の各端末はDNSサーバはISPのものを直接指定して使用していた。
普通に使う分にはこれで特に問題ないのだが、OpenVPNで外部から自宅へVPN接続している場合に、VPN接続した端末からダイナミックDNSで取得したドメイン名で自宅サーバ(例えばWebサーバ)にアクセスしようとすると、ドメイン名の解決結果がグローバルアドレスになってしまいアクセスできない問題があった。

これを解決するためには下記2点の設定が必要。
  • 自宅内にDNSサーバを立てる
  • OpenVPNサーバの設定で接続端末へ配布するDNSサーバの情報を宅内DNSサーバにする

DNSサーバ構築


自宅のUbuntuマシンにはデフォルトで(?)dnsmasqが入っていた。
ただ、デフォルト設定ではlocalhostからの接続しか受け付けないようになっていた。
そのため、dnsmasqの設定を変更して他のホストからの接続を受け付けるようにする。

まず、/etc/hostsにダイナミックDNSで取得したドメインを追記した。
(ローカルドメインと記載された箇所にダイナミックDNSで取得したドメイン名を記入)
127.0.0.1 localhost
192.168.xx.yy ローカルドメイン

そして、/etc/dnsmasq.confに下記の設定を行った。
domain-needed
bogus-priv
local=/ローカルドメイン/
listen-address=127.0.0.1
listen-address=10.8.0.1
listen-address=192.168.xx.yy
expand-hosts
domain=ローカルドメイン

上記の設定を行った後、sudo service dnsmasq restartでdnsmasqを再起動することで反映される。
(reloadではlisten-addressの設定が反映されなかったため、restartを実施)

参考


OpenVPNの設定変更


/etc/openvpn/server.confの接続先端末にDNSサーバを通知している箇所を下記のように変更。
push "dhcp-option DNS 10.8.0.1"

dnsmasqと同様、OpenVPNも再起動しておく。

0 件のコメント:

コメントを投稿