家庭内LANから自宅Webサーバーにアクセスする

自宅にWebサーバーを建てて早14年。 やっと懸案を解決することができました。

使っているのがPCだけだった時代は、hostsファイルで対応すれば済んだので、せいぜいノートPCで切り替えが面倒だという程度でした。
しかしスマホやタブレットなどを使うようになると、外出中は公衆網、自宅ではWiFiということになります。
Androidでもhostsファイルで対応出来そうですが、スマートではないし嫁には難しいです。

ちなみに我が家の環境は以下のとおり。

回線: フレッツ光ネクスト・ハイスピードタイプ
ルーター: PR-S300NE
Webサーバー: FreeBSD 10.0-RELEASE (i386)


自宅にDNSサーバーを立てれば解決出来ることは分かってました。 でもBINDの設定が難しくて挫折...
でもFreeBSD 10から BINDに代わって UnboundというDNSキャッシュサーバが入ったということを知り、設定してみました。
参考にしたのはこの記事。

FreeBSD10.0でunboundを使ってローカルDNSサーバ - My Scrap book

ウチのサーバーはバーチャルホスト(hoge1とhoge2)を使っているので、こんな風にしています。 192.168.1.xx はWebサーバーのプライベートアドレスです。

root@www:/var/unbound # more unbound.conf
# Generated by local-unbound-setup
server:
username: unbound
directory: /var/unbound
chroot: /var/unbound
pidfile: /var/run/local_unbound.pid
auto-trust-anchor-file: /var/unbound/root.key

interface: 0.0.0.0
access-control: 127.0.0.1/32 allow
access-control: 192.168.1.0/24 allow
do-ip6: no
#logfile: "/var/log/unbound.log"
#use-syslog: no

include: /var/unbound/zone-still-laughin.com.conf
include: /var/unbound/forward.conf

root@www:/var/unbound # more zone-still-laughin.com.conf
local-zone: "still-laughin.com." typetransparent

local-data: "still-laughin.com. IN A 192.168.1.xx"
local-data-ptr: "192.168.1.xx still-laughin.com"

local-data: "hoge1.still-laughin.com. IN A 192.168.1.xx"
local-data: "hoge2.still-laughin.com. IN A 192.168.1.xx"

local-data-ptr: "192.168.1.xx hoge1.still-laughin.com"
local-data-ptr: "192.168.1.xx hoge2.still-laughin.com"

root@www:/var/unbound # more forward.conf
# Generated by local-unbound-setup
forward-zone:
name: "."
forward-addr: <プロバイダのDNSサーバー1のアドレス>
forward-addr: <プロバイダのDNSサーバー1のアドレス>
forward-addr: 8.8.8.8 # Google Public DNS
forward-addr: 192.168.1.1 # ルーターのアドレス

でもこれだけだとダメで、ルーターにDNSサーバーを登録する必要があります。 ここで挫折していたご同輩は多かったみたいなんですが、下記のサイトにて解決しました。

PS-S300NEでLAN内DNSを使用する - Dream Seed

以前から「静的ルーティング」じゃないかと思って何度かトライしたんですが、設定方法がよく分からなかったんですよね。 これでWiFi接続したスマホから自宅サーバーにアクセスできるようになりました。 \(-o-)/

でもなんか一発目の接続の反応が遅いです。

しがつにじゅうににち: Asakusa.rb #259 - diary.sorah

unbound
なんか遅いなあと思ったけどデフォルトだと root-server まで引きにいくから当然であった。 そして DNSSEC やろうとすると不可避っていう。 様子見してダメなら dnssec 止めて近くの参照サーバーに forward する事にする。

もうちょっとUnboundの設定を勉強してみます。