自宅に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の設定を勉強してみます。