ご存知の方も多いと思うのですが、DNS というのは、Domain Name System のことです。ま、これが何だって言うと、意外と機能の一部分しか語られていなかったりして、その全体像を説明した文章が少ないような気はするのですが、
Wikipedia(DNS) によれば、1983 に開発されたらしいです。
BIND っていうのは、DNS を管理する DNS Server の実装の 1 つで、こちらも
Wikipedia(BIND) によれば、1988 年に書かれたものらしい。
DNS & BIND の教科書といえば、これ。
奥付。
古過ぎ(笑)。
まぁ、今は BIND もバージョンが 9 になって、機能も追加・変更されているけど、基本は、30 年も前から動いていたシステムだってことです。30 年も前だよー。当時のコンピュータの性能や、ネットワークの帯域を考えたら、今の Raspberry Pi でも、余裕で動くような気がするでしょ。
ちなみに、DNS Server の機能は、光回線のゲートウェーになっている機器、ブロードバンドルーターなども持っていることが多いです。家では、ドコモ光(実質は NTT 西日本のフレッツ光)を引いていますが、設置されている PR-500MI にも、簡易的ながら、その機能があります。では、なんでそれを使わないで、わざわざ別に立てるのかと言えば、大きな理由は、LAN 内のアドレスの管理のしやすさと、今後の拡張性です。
そこで、今までは NAS に使っている Raspberry Pi Model 3B に BIND を同居させて使っていたのですが、
- LAN 内を管理する DNS サーバーとしては、1 台しかなかった。
- 他の機能と同一ハード上に同居させているため、メンテナンスなどで停止させることがある。
という理由で、クライアントマシンからの検索要求は、一度、全て PR-500MI の方に投げ、そこから、LAN 内のものは Raspberry Pi の方に振り分ける設定にしていました。Raspberry Pi の方を停止させた時に、Web 上の資料を参照できなくなるというのは、メンテナンスに支障が出る可能性があると考えたからです。
今回、NAS に使っているマシンを Raspberry Pi Model 3B から 3B+ に置き換えるのを機に、DNS の機能を分離させでメンテナンス性を向上させると共に、デスクトップとして使っていた Model 3B も加えて、Raspberry Pi の 2 台体制にして、信頼性も向上させる計画を実行中です。それに伴い、クライアントマシンからの検索要求も、直接、Raspberry Pi 上の DNS に向くようにします。
ただ、PR-500MI の DNS 機能を使わなくしてしまうわけではなく、LAN 外部の検索は、逆に Raspberry Pi の方から PR-500MI の方にフォワードしている形です。PR-500MI は、純粋に DNS プロキシとして働きます。これ、設定方法によっては、Raspberry Pi から直接、プロバイダー提供の DNS にフォワードしたり、あるいは、自身でルートドメインから検索をたどることだってできるわけで、ちょっと悩みました。悩んだ末ですが、NAPT で穴を開けるより、プロキシを使った方が安全だろうという結論で、こうなりました。PR-500MI は自動取得したプロバイダー提供の DNS にフォワードしているだけだろうとは思うのですが、自動取得したアドレスが使えるのもメリットです。
私の家のサーバー。百均で買ってきた積み重ねできるプラのトレーを加工しています。
上の段には、何気に Raspberry Pi Model 3B が置かれています。基板にスペーサーを付けて、脚にはしているのですが、固定するまでもない感じなので、置いてあるだけです。コード類を通す切り欠きだけは、加工してあります。
下の 2 段は、ハードディスクドライブ。安いグレードのものなんですが、2 台使ってミラーにしてあります。こちらは、クッション材を噛ませて、ちゃんとネジで固定してあります。SATA - USB の変換ケーブルは、別電源式。ハードディスクドライブそれぞれに別々の AC アダプターを使っているんで、無駄に感じるかもしれませんが、別々にしておいた方が、障害には強いです。
で、とりあえず、新し DNS を 1 台作りました。合わせて DHCP も入れました。もう 1 台は、左の NAS を Model 3B+ に換えてから、余った方の 3B で作る予定です。NAS マシンの方に残こすのは、ミラーにするための mdadm と NFS と Samba ぐらいなので、3B+ に Raspbian Strech Lite をクリーンインストールして、最初から構成しなおす予定。これだけでも、メンテナンス性の向上が実感できます。
パフォーマンステスト
ただ、やっぱり気になりますよね。Raspberry Pi の Model 3B で、期待した性能が出るのかって。特に、Ethernet が 100Base-TX なのが、遅延に影響あるのかどうかとか。というわけで、ここで、実際に測ってみました …。
比較対象を含めて、以下の DNS サーバーを測定しました。
- gw.private.fitfat.plala.jp(光ゲートウェイ PR-500MI)
- 220.220.248.1(インターネットプロバイダー「ぷらら」提供プライマリ)
- 220.220.248.9(インターネットプロバイダー「ぷらら」提供セカンダリ)
- 8.8.8.8(Google Public DNS プライマリ)
- 8.8.4.4(Google Public DNS セカンダリ)
- ns1.private.fitfat.plala.jp(新規作成 Raspberry Pi Model 3B + BIND9)
測定は、dig コマンドを使います。ターミナルより、
dig @<DNS サーバー> <検索対象ドメイン名> +noall +stats
と入力し、表示される Query time を使います。それぞれ 10 回ずつ測り、平均値を求めました。DNS サーバーにキャッシュがある場合と無い場合で、値が変わるため、検索対象ドメイン名の切り替えにより、それぞれ別々に測定しました。
まずは、サーバーにキャッシュがある場合の検索。対象ドメインは「www.example.com」とし、最初のデータはキャッシュが無い可能があるので捨てました。2 回目以降の連続した 10 回分を対象データとしました。
DNS サーバー |
Querry time(ms) |
1 回め |
2 回め |
3 回め |
4 回め |
5 回め |
6 回め |
7 回め |
8 回め |
9 回め |
10 回め |
平均 |
gw.private.fitfat.plala.jp |
9 |
13 |
11 |
9 |
9 |
9 |
11 |
10 |
11 |
9 |
10.10 |
220.220.248.1 |
8 |
8 |
8 |
8 |
12 |
10 |
8 |
8 |
9 |
10 |
8.90 |
220.220.248.9 |
8 |
9 |
9 |
9 |
8 |
9 |
9 |
8 |
8 |
9 |
8.60 |
8.8.8.8 |
10 |
40 |
9 |
44 |
41 |
41 |
48 |
43 |
41 |
9 |
32.60 |
8.8.4.4 |
44 |
40 |
47 |
40 |
47 |
9 |
47 |
44 |
10 |
43 |
37.10 |
ns1.private.fitfat.plala.jp |
1 |
1 |
1 |
1 |
2 |
1 |
1 |
1 |
1 |
1 |
1.10 |
赤字のデータが、今回、立てた Raspberry Pi Model 3B です。他を圧倒してます。gw.private.fitfat.plala.jp(光ゲートウェイ PR-500MI)は、キャッシュを全く行っていない様子ですね。プロバイダー提供の DNS を直接見にいくよりも時間がかかっています。Google Public DNS は、どういうわけか、すごく速いときと、時間がかかるときに分かれます。
次に、サーバーにキャッシュが無い場合の検索。対象は、プロバイダーが提供しているダイナミック DNS によって割り振られているドメイン名である「fitfat.plala.jp」としました。TTL が 10 秒のため、それぞれ 10 秒以上の間隔を空けて測定しました。
DNS サーバー |
Querry time(ms) |
1 回め |
2 回め |
3 回め |
4 回め |
5 回め |
6 回め |
7 回め |
8 回め |
9 回め |
10 回め |
平均 |
gw.private.fitfat.plala.jp |
23 |
20 |
22 |
23 |
21 |
21 |
21 |
21 |
22 |
19 |
21.11 |
220.220.248.1 |
22 |
20 |
20 |
19 |
21 |
21 |
19 |
20 |
19 |
18 |
19.90 |
220.220.248.9 |
18 |
19 |
18 |
19 |
21 |
20 |
23 |
21 |
19 |
21 |
19.90 |
8.8.8.8 |
93 |
86 |
93 |
87 |
126 |
80 |
88 |
84 |
88 |
95 |
92.00 |
8.8.4.4 |
87 |
121 |
92 |
126 |
85 |
86 |
83 |
88 |
84 |
93 |
94.50 |
ns1.private.fitfat.plala.jp |
23 |
23 |
25 |
25 |
24 |
25 |
24 |
24 |
24 |
25 |
24.20 |
同じく、赤字のデータが、今回、立てた Raspberry Pi Model 3B です。ま、光ゲートウェイ搭載の DNS や、プロバイダー提供の DNS を、直接見に行くよりは、若干、余分に時間がかかっている感じです。ただ、差はわずかだと言えます。
サーバー内にキャッシュが無い状態だと、改めて外部のサーバーに問い合わせに行くので、多少、余分に時間がかかるのは仕方ありませんが、キャッシュされる効果は大きく、Raspberry Pi 程度の性能のマシンでも、十分に価値があるといえると思います。
というわけで、つぎは、Raspberry Pi Model 3B+ に Raspbian Strech Lite を入れて、NAS づくりです。
コメント
コメントを投稿