12
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

自宅サーバを立てる際の家庭内名前解決の落とし穴

Last updated at Posted at 2015-12-27

自宅でサーバを立てました

小規模サーバの名器と名高い HP NL54L を、遅ればせながら私も購入しました。遅ればせながらというか、もうほとんど賞味期限が切れてますが… :stuck_out_tongue_closed_eyes:

現時点における FreeNAS の最新版 9.3 STABLE をインストール。これ自体は順調に行きましたが、それよりも NL54L を動かすのに少々すったもんだしました。それは別稿にて。

FreeNAS を勉強しながら、jail を利用して各種サーバを構築中です。非力なサーバですので、あまり大がかりな事をさせたくはありませんが。お父ちゃんの極小な小遣いでパワフルなサーバマシンを買うのは難しいんですよ… :sweat_smile:

bind 9

最初に立てたのがDNSサーバ。名前解決できなければ何も始まりません。公開分に関しては、ドメインを購入した会社で済ませます。やりたい事は家庭内の名前解決。マシンの名前アクセスと、自宅で立てた公開Webサイトの家庭内アクセスです。

FreeNAS の中身は FreeBSD で、ぐーぐる先生によれば bind はデフォルトで含まれているモジュールとの事。bind9 の設定もぐぐれば事細かな日本語情報を入手できます。その通りに設定すれば一仕事終わり。簡単カンタン♪

…なのですが、ここからがハマリ所。

状況

私のコダワリにより、我が家では以下のようにドメインを使い分けたい。

  • 公開Webサイトは、私の購入したセカンドドメインのサブドメインとする。つまり、購入した example.com に対して www.example.com を公開サイトとしたい。将来的には www1.example.com, www2.example.com,... と増やす予定。

  • 各マシンはサブドメイン machine.example.com の中に置く。つまり、マシンのFQDNは taro.machine.example.com, hanako.machine.example.com,... としたい。当然、仮想マシンを作る度に増えていく事になる。

こうして書くと読み辛いですね:sweat: ま、そんなに難しい事はありません。 named.conf に zone を作って、折角なので view で括ってみたりして、 zone としては example.com と machine.example.com の2つを用意します。逆引きはマシン名だけ出来ればいい(ですよね?)ので、1つだけ逆引きを用意。ますます読み辛いですね:sweat:

まとめると、下記のようになります。この内容についてはそこら中で解説されているので、特に説明はいりませんね。もし誤りがあったら、是非ご指摘お願いします。

/etc/namedb/named.conf
options { 《省略》 };
key "rndc-key" { 《省略》 };

view "internal" {
  match-clients { localnets; };
  recursion     yes;

  zone "example.com" {
    type        master;
    file        "/etc/namedb/master/example.com";
  };
  zone "machine.example.com" {
    type        master;
    file        "/etc/namedb/master/machine.example.com";
  };
  zone "1.0.10.in-addr.arpa" {
    type        master;
    file        "/etc/namedb/master/named.local";
  };
};
/etc/namedb/master/example.com
; 2015.12.27. by Katz
$TTL    1d
@       SOA        dns.example.com. email.example.com. (
        2015122700 ; serial
        1d         ; refresh
        1h         ; retry
        1w         ; expire
        1d         ; Negative cache TTL
)
        NS         dns.example.com.
dns     A          10.0.1.109
freenas CNAME      taro.machine
/etc/namedb/master/machine.example.com
; 2015.12.27. by Katz            
$TTL    1d
@       SOA        dns.example.com. email.example.com. (
        2015122700 ; serial
        1d         ; refresh
        1h         ; retry
        1w         ; expire
        1d         ; Negative cache TTL
)
        NS         dns.example.com.          
taro    A          10.0.1.108   
hanako  CNAME      dns.example.com.
/etc/namedb/master/named.local
; 2015.12.27. by Katz          
$TTL    1d
@       SOA        dns.example.com. email.example.com. (
        2015122500 ; serial
        1d         ; refresh
        1h         ; retry
        1w         ; expire
        1d         ; Negative cache TTL
)
        NS         dns.example.com.       
        PTR        machine.example.com.
        A          255.0.0.0          
108     PTR        taro.machine.example.com.
109     PTR        hanako.machine.example.com.

見る人が見れば見当が付くと思いますが…

  • taro.machine.example.com が物理マシン NL54L です。これにFreeNASをインストールしました。
  • hanako.machine.example.com は jail で用意した仮想マシンです。ここで bind を動かしてDNSサーバにしています。

ハマリポイント1.

実はこの時点で、既にハマリポイントがあったのでした。各zoneファイルの NS レコードです。

上記では dns.example.com を指定し、zoneファイル example.com にて A レコードで設定しています。結論から言うと、そうでないと freenas.example.com だけ解決できなくなります。

本当は下記のようにしたかったんですが。

  • NSレコードに hanako.machine.example.com. を指定
  • もしくは、zoneファイル example.com で dns CNAME hanako.machine と設定
  • zoneファイル machine.example.com で hanako A 10.0.1.109 と設定

設定としてはこの方が美しいんですが、どういう訳か freenas.example.com を解決できなくなるんですね。もしかすると bind の挙動に精通すると原因がわかるようになるのかも知れませんが、今の私の知識ではお手上げです。調べても、こういう設定をしている方はいらっしゃらないようでした。

ハマリポイント2.

Windowsにて。nslookup は問題無いんですが、 ping と IE で名前解決が出来ません。

こちらは割と有名な問題だったようです。結論から言うと、Microsoftは一体何やってんだって話:astonished:
下記Webページが参考になりました。

Windows nslookupで名前解決できるのにpingで名前解決できない問題の真相

私の場合、ルータの設定で余計な事をしていました。(うちのルータは AirMac Extreme‎ です)

  • プライマリDNSサーバ: dns.example.com のIPアドレス(10.0.1.109)
  • セカンダリDNSサーバ: ISP が通知してきたプライマリDNSサーバ

解決策は下記の通り。

  • named.conf に下記を記入。
/etc/namedb/named.conf
options {
        《色々なoptions設定》
        forwarders {
             《ISPのプライマリDNSサーバのIPアドレス》;
             《ISPのセカンダリDNSサーバのIPアドレス》;
        };
        forward only;
};
  • ルータの設定で、セカンダリDNSサーバを指定しない。

これで万事解決しました。やった!:thumbsup:

12
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?