DNSの最近のブログ記事

DNSが出来たら、(外向けの)ネームサーバをドメインの管理元に登録することで、インターネット世界からの問い合わせがやってくるようになります。
そうすると、自宅サーバのWebサイトが外から見えたり、自宅サーバに向けてメールが配送されてきたりするわけです。

バーチャル山中家には、サーバは1台しかありません。
固定IPアドレスも1つです。
でも、色々な名前を別名登録することで、複数のドメインに、さらに複数のWebサーバがあるかのように見せかけることが出来ます。
また、LAN向けにはLAN向けのホスト名も作って、内部でしか参照できないWebサイトも作成しています。
詳しくはWebのページを参照してください。

Webサイトを増やしたいな、と思ったら、内向けのホスト別名を登録し、Webサーバの設定を変更して、LAN内から表示を確認したら外向けの別名を登録する。
これを繰り返せば、色々なサイトを独立して運用することが出来ます。
(例えば、Webスペースを貸し出すことも出来ますね。)

またメールについても、複数のドメインを1つのIPアドレスで処理しています。
詳しくはMailのページを参照してください。

ただし、DNSをインターネット上に提供する場合、その設定に間違いがないように注意が必要です。名前から求めるIPアドレスが間違っていたり、IPアドレスから求める名前が間違っていたら・・・大変なことになるのはおわかりかと思います。
十分に確認して、注意して運用してください。

さて、djbdns本体のインストールです。こちらもportsからインストールします。

[root@jiro]/usr/ports# portinstall dns/djbdns

インストールできたら、内向けDNSと外向けDNSを設定します。がその前に、DNSを2つ起動するということは、サーバに2つのIPアドレスが必要なので、それを追加しておきましょう。

[root@jiro]/usr/ports# ee /etc.rc.conf
(前略)
ifconfig_fxp0="inet 192.168.1.2 netmask 255.255.255.0"

こうなっている行があるはずです。インターフェース名(ここではfxp0)とIPアドレスは環境によって違うと思います。もちろんnetmaskも。
で、別アドレスを追加するために、

ifconfigfxp0alias0="inet 192.168.1.202 netmask 255.255.255.255"

というような行を追加しておきます。
こうすることで、サーバの1枚のLANカードに2つのIPアドレスが割り当てられます。
(ここでは192.168.1.2/24と192.168.1.202/24)
以後、内向けDNSは192.168.1.2を利用し、外向けDNSは192.168.1.202を利用するとして説明します。後ほど、外からのDNSへのアクセスを、ルーターで192.168.1.202に振り向けることを忘れずに。

内向けDNSの設定

[root@jiro]/usr/ports# tinydns-conf tinydns dnslog /usr/local/etc/tinydns-i 127.0.0.1

tinydnsは起動するユーザー、dnslogはログをとるユーザー、/usr/local/etc/tinydns-iは設定ファイルを置く場所、127.0.0.1は動作するIPアドレスです。
では、DNSが返事をするための内容を設定していきましょう。

[root@jiro]/usr/ports# cd /usr/local/etc/tinydns-i/root
[root@jiro]/usr/local/etc/tinydns-i/root# ./add-ns yamanakake.com 192.168.1.2
[root@jiro]/usr/local/etc/tinydns-i/root# ./add-ns 1.168.192.in-addr.arpa 192.168.1.2
[root@jiro]/usr/local/etc/tinydns-i/root# ./add-mx yamanakake.com 192.168.1.2
[root@jiro]/usr/local/etc/tinydns-i/root# ./add-host taro.yamanakake.com 192.168.1.1
[root@jiro]/usr/local/etc/tinydns-i/root# ./add-host jiro.yamanakake.com 192.168.1.2
・・・自分のLAN内のホストを登録していきます。

さて、登録が終わったら、dataファイルを開いてみてください。
mxレコードは、デフォルトではa.mx.~となっていますので、mail.yamanakake.comに変更しました。

=mail.yamanakake.com:192.168.1.2:86400
@yamanakake.com::mail.yamanakake.com:1:86400

すべての登録をしたら、makeします。

[root@jiro]/usr/local/etc/tinydns-i/root# make

最後に、自動起動するためのリンクを作成します。

[root@jiro]/usr/local/etc/tinydns-i/root# ln -s /usr/local/etc/tinydns-i /var/service/tinydns-i

外向けDNSの設定

内向けと同じく、外向けも設定していきましょう。

[root@jiro]/usr/ports# tinydns-conf tinydns dnslog /usr/local/etc/tinydns-o 192.168.1.202

設定ファイルを置く場所とIPアドレスが違います。

[root@jiro]/usr/local/etc/tinydns-o/root# ./add-ns yamanakake.com 218.219.201.137
[root@jiro]/usr/local/etc/tinydns-o/root# ./add-ns 137.201.219.218.in-addr.arpa 218.219.201.137
[root@jiro]/usr/local/etc/tinydns-o/root# ./add-mx yamanakake.com 218.219.201.137
・・・インターネットに公開したいホスト名を登録していきます。

さて、登録が終わったら、dataファイルを開いてみてください。
mxレコードは、デフォルトではa.mx.~となっていますので、mail.yamanakake.comに変更しました。

=mail.yamanakake.com:218.219.201.137:86400
@yamanakake.com::mail.yamanakake.com:1:86400

すべての登録をしたら、makeします。

[root@jiro]/usr/local/etc/tinydns-o/root# make

最後に、自動起動するためのリンクを作成します。

[root@jiro]/usr/local/etc/tinydns-o/root# ln -s /usr/local/etc/tinydns-o /var/service/tinydns-o

dnscashの設定

dnscashは、LAN向けにdnsの問い合わせをキャッシュするものです。

[root@jiro]/usr/ports# dnscache-conf dnscache dnslog /usr/local/etc/dnscache 192.168.1.2

192.168.1.*(山中家の場合ですよ)からの問い合わせに答えるように

[root@jiro]/usr/ports# cd /usr/local/etc/dnscache/root/ip
[root@jiro]/usr/local/etc/dnscache/root/ip# touch 192.168.1

としておきます。
また、yamanakake.com、yamanakas.net、wty.dyndns.org、1.168.192.in-addr.arpaについては、127.0.0.1に問い合わせるようにします。

[root@jiro]/usr/local/etc/dnscache/root/ip# cd /usr/local/etc/dnscache/root/servers
[root@jiro]/usr/local/etc/dnscache/root/servers# echo 127.0.0.1 > yamanakake.com
[root@jiro]/usr/local/etc/dnscache/root/servers# echo 127.0.0.1 > yamanakas.net
[root@jiro]/usr/local/etc/dnscache/root/servers# echo 127.0.0.1 > wty.dyndns.org
[root@jiro]/usr/local/etc/dnscache/root/servers# echo 127.0.0.1 > 1.168.192.in-addr.arpa

自分のドメイン以外は知らないので、プロバイダのDNSに問い合わせるようにしておきましょう。

[root@jiro]/usr/local/etc/dnscache/root/servers# cd /usr/local/etc/dnscache/env
[root@jiro]/usr/local/etc/dnscache/env# echo 1 > FORWARDONLY
[root@jiro]/usr/local/etc/dnscache/env# cd ../root/servers
[root@jiro]/usr/local/etc/dnscache/root/servers# ee @
xxx.xxx.xxx.xxx
yyy.yyy.yyy.yyy

最後に、自動起動するためのリンクを作成します。

[root@jiro]/usr/local/etc/dnscache/root/servers# ln -s /usr/local/etc/dnscache /var/service/dnscache

LAN内のほかのPCの設定

LAN内の他のPCのDNSサーバアドレスは、192.168.1.2に設定します。
192.168.1.2では、dnscacheが動いていますので、自分のドメインであればそこから127.0.0.1(要は自分自身)に問い合わせますし、それ以外はプロバイダのDNSに問い合わせます。
ここでDNSの問い合わせがキャッシュされますので、LAN内のPCからのDNSの問い合わせが、毎回プロバイダに行くよりは高速で効率がよいと思います。

まずは、daemontoolsをインストールします。これは、デーモンの起動やログ取得をしてくれるもので、portsからインストールできます。

[root@jiro]/usr/ports# portinstall sysutils/daemontools

daemontools用のディレクトリは、portsでは/var/serviceが想定されています。私はportsそのまま派なので、/var/serviceで行きます。
インストールが終わったら、/var/serviceディレクトリが作成されているか、/usr/local/etc/rc.d/svscan.shが作成されているかを確認しておきましょう。
あと、最近では恒例の/etc/rc.confへの以下の記述の追加をお忘れなく。

[root@jiro]/usr/ports# ee /etc/rc.conf
(前略)
svscan_enable="YES"

記述したら、起動できるはずです。

[root@jiro]/usr/ports# /usr/local/etc/rc.d/svscan.sh start

として、起動できるか試してみてください。

[root@jiro]/usr/ports# ps -aux | grep svscan
root 470 0.0 0.2 1236 612 ?? S 火12AM 0:23.89 /usr/local/bin/svscan /var/service

となっていれば、起動されています。

バーチャル山中家がdjbdnsにしたのは、そんなに大きな理由はなかったのですが、なんとなくBINDの設定がややこしそうだったのと、djbdns作者や信者(?)の方が書いているWebサイトなどを読んでみて、面白そうだと思ったからだったと思います。

最初にdjbdnsをインストールした時には、[[FreeBSD-AT RANDOM -djbdnsでDNSサーバを作る->http://www.f-bell.net/FreeBSD/djbdns.html]]を参考にさせていただきました。

DNSを構築する理由は人それぞれ・サーバそれぞれだと思いますが、バーチャル山中家では以下のような感じです。

  • yamanakake.comというドメインを、自宅サーバに持ってきたかった。
  • yamanakas.netというドメインを、自宅サーバに持ってきたかった。
  • ついでにwty.dyndns.orgというドメインも持ってこよう。
  • 自宅のLANからも、インターネットからも同じアドレスでアクセスしたい。が、固定IPアドレスは1つだけなので、自宅内LANはローカルアドレスだ。
  • 安く上げたい(笑)

なので、実はLAN向けのDNSとインターネット向けのDNS、それにDNSキャッシュをセットアップしています。

例によって、portsからインストールします。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちDNSカテゴリに属しているものが含まれています。

前のカテゴリはDatabaseです。

次のカテゴリはMailです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。