折角、VPNを使って、自宅サーバを外部からもプライベートネットワーク接続できるようになったのだから、内部IPアドレスではなくドメインで接続したい。ということで内部用DNSサーバを立てることにした。
参考にしたのはこのサイト Unboundを使ってお手軽内向きDNSサーバーを構築する | web net FORCE。
sudo apt-get install unbound
sudo cp /usr/share/doc/unbound/examples/unbound.conf /etc/unbound/unbound.conf.d/
sudo vim /etc/unbound/unbound.conf.d/unbound.conf
unbound.confのテンプレートをコピーしてきて、unbound.confを編集する。
verbosity: 1
# デフォルトポートで受付
interface: 0.0.0.0
# ローカルネットのみ受付
access-control: 127.0.0.0/23 allow
access-control: 192.168.0.0/23 allow
# 以下のDNSを解決
local-data: "arimasou16.dip.jp. IN A 192.168.1.10"
local-data-ptr: "192.168.1.10 arimasou16.dip.jp."
local-data: "arimasou16.tplinkdns.com. IN A 192.168.1.10"
local-data-ptr: "192.168.1.10 arimasou16.tplinkdns.com."
・・・中略・・・
# forward-zone:
# name: "example.org"
# forward-host: fwd.example.com
forward-zone:
# 全てのクエリを転送
name: "."
# Google DNS サーバー
forward-addr: 8.8.8.8
forward-addr: 8.8.4.4
編集後、サービス再起動sudo service unbound restart
。
それからファイヤーウォールでDNSで使用するポートを開ける。sudo ufw allow 53
。
そしてTP-Link AC2600のDNSサーバ設定を変更する。詳細設定タブ -> インターネット
でDNSサーバーを指定する。
設定項目 | 設定値 |
---|---|
インターネット接続タイプ | 静的IP |
IPアドレス | 192.168.1.2 |
サブネットマスク | 255.255.255.0 |
デフォルトゲートウェイ | 192.168.1.1 |
プライマリDNS | 192.168.1.10 |
セカンダリDNS | 192.168.1.1 |
通常は動的になっていると思うが、ブロードバンドルータが間に挟む場合は固定してブロードバンドルータからの自身のIPアドレスは固定されてたい方がいいので、これを機に固定する。そして、DNSサーバーを指定する。セカンダリはブロードバンドルータに任せるためにルータを指定。
これでスマホやLinux端末では特に hostsファイルを弄ることなく、ドメイン名からローカルにあるサーバーに接続できるようになる。
しかし、これだと、Windowsは上手く行かない。というのも IPv6 が IPv4 より優先されてしまう - マイクロソフト コミュニティからだ。
C:\Users\Arimasou16>nslookup arimasou16.dip.jp
サーバー: UnKnown
Address: 1234:567:8901:abcd:efd:7899:0000:1234
権限のない回答:
名前: arimasou16.dip.jp
Address: 1xx.1x.1xx.2xx
C:\Users\Arimasou16>
まあ、スマホではできるようになったので、OKとする。