2017/05/22(月)BINDで独自ドメインをLAN内から解決できるようにした。
今日は自宅サーバにBINDを入れて、家のLAN内からでも http://tu3.jp/ でサイトを開けるようにしていた。
tu3.jpのネームサーバはバリュードメインのを使っているので、普通にDNS引くと、
ルータのWAN側IPに解決されてしまい、LAN内からはつながらなかった。
デスクトップPCにはhosts書いて対応してたけど、LANとLTEを行き来するノーパソやらスマホではこの方法は不便だ。
LAN内で通用するホスト名での通信ではVirtualHostが死んでしまう。
つい最近、デスクトップPCのドライブ構成を見直してOS再インストールしたのだけどhostsはまだ書いてなかったの気づいた。
ので、いつもどおり書くか、いやまてよ。
せっかくの機会だから、DNSでも立ててみるかー。
やったことメモ
BINDのインストール
ipkg install bindipkgはもはやメンテされてないリポジトリと聞くけど、
今回はLAN内で使いたいだけなのでバージョンは気にしないことにする。
named.conf と tu3.jp.zone を書く。
使っているルータにはドメインごとのDNSサーバを設定できる機能があるようなので、それを試してみることにして、まずは権威サーバを準備してみよう。
リゾルバとして機能させないのであれば、localhostやら逆引きやらに関するゾーン設定は不要らしい。
query failed (SERVFAIL) 祭り
C:\\Users\\tu-sa>nslookup tu3.jp tnas サーバー: UnKnown Address: 192.168.0.251 *** UnKnown が tu3.jp を見つけられません: Server failed設定ファイルの書き方が間違ってたんだけど、設定ファイルの書き方が間違っててもそのまま起動はしちゃう。
named -d 1 -c named.conf-d オプションを付けて起動するとnamed.runというファイルにログを出してくれる。
起動時にエラーログが出てくれてるんだけど、1つのゾーンがおかしいくらいでは普通に起動してしまうので、
エラーログが出ていることに気づくまでが手探りでハマっていた。
named.confと.zoneの検証であれば、-d 1 で十分そう。おかしな記述のある行番号まで教えてくれる。
21-May-2017 03:52:51.718 zone tu3.jp/IN: starting load 21-May-2017 03:52:51.718 zone tu3.jp/IN: loading from master file tu3.jp failed: file not found
21-May-2017 03:47:59.982 dns_master_load: tu3.jp.zone:15: tu3.jp: CNAME and other data
21-May-2017 03:48:47.168 dns_rdata_fromtext: tu3.jp.zone:23: near 'SPMX.L.GOOGLE.COM.': not a valid numberあれこれいじって、
21-May-2017 03:53:12.161 zone tu3.jp/IN: starting load 21-May-2017 03:53:12.164 zone tu3.jp/IN: journal rollforward completed successfully: no journal 21-May-2017 03:53:12.164 zone tu3.jp/IN: loaded 21-May-2017 03:53:12.165 zone tu3.jp/IN: loaded serial 2017052103なんか読めたっぽい。
C:\\Users\\tu-sa>nslookup tu3.jp tnas サーバー: UnKnown Address: 192.168.0.251 名前: tu3.jp Address: 192.168.0.251返事がもらえるようになったっぽい。
ルータ側の設定。
我が家のネットワークではNEC*1のAterm WR9500Nを採用している。このルータには、DNSルーティング設定という機能があって、ドメインごとにDNS解決先のサーバを指定する機能がある。
本来はインターネットとフレッツスクエアとを両方つないだ時とか用なんだろうけど、今回はこれを使ってみる。
宛先ドメイン名: tu3.jp ゲートウェイ: なし プライマリDNS: 192.168.0.251 セカンダリDNS: なしとして保存してみたところ、ルータのDNSへの問い合わせで、
無事にローカルのIPアドレスが返ってくるようになった。
C:\\Users\\tu-sa>nslookup piyopyoro.tu3.jp サーバー: aterm.me Address: 192.168.0.1 名前: tu3.jp Address: 192.168.0.251 Aliases: piyopyoro.tu3.jpこれでダメだと、自宅サーバ内にDNSリゾルバとDHCPサーバも立ててあげる必要があったかもしれないが、それはしなくて済んだようだ。
めでたしめでたし。
ファイル
オーソリティネームサーバを立てるだけならこんなもんでいいようだ。named.conf
options { directory "/opt/etc/named"; notify no; recursion no; }; zone "tu3.jp" in { type master; file "tu3.jp.zone"; };
tu3.jp.zone
CNAMEがとてもテキトー。$ORIGIN tu3.jp. $TTL 120 ; sec @ IN SOA tnas nsroot ( 2017052103 ; Serial 1H ; Refresh 5M ; Retry 1W ; Expire 2M ; Minimum ) IN A 192.168.0.251 IN NS @ IN MX 1 ASPMX.L.GOOGLE.COM. IN MX 5 ALT1.ASPMX.L.GOOGLE.COM. IN MX 5 ALT2.ASPMX.L.GOOGLE.COM. * IN CNAME @