自宅内DNSサーバーの構築~DiskStation DS218j
Synology DiskStation DS218jでWebサーバーを公開した場合の、自宅LAN内からのWebサーバーへのアクセス不具合を解消する方法として、DS218j自身にDNSサーバーを構築する方法です。
これから説明する"DNS Server"パッケージは、固定のグローバルIPアドレス環境であればインターネット空間で正式なDNSサーバーとして運用できる立派なものですが、NOMIはあくまで自宅LAN内の不具合を解消する「自宅限定」のDNSサーバーとして使用します。ちょっと贅沢な使い方かもしれませんね。
DNS Serverパッケージのインストール
DSMにログインし、「パッケージセンター」を開きます。
「DNS Server」の[インストール]をクリックします。
ほどなくインストールが終わります。
「メインメニュー」から「DNS Sever」を開きます。
DNSキャッシュの有効化
設定画面が開いたら「解決」をクリックします。
まず、DNSキャッシュサーバーの機能を有効にします。
DNSキャッシュを有効にすると、LANの中にあるパソコンやスマホの名前解決の作業をSynology DiskStation DS218jが代行してくれるので、パソコンやスマホからのインターネット接続が快適になります。
DNSキャッシュサーバ
DNSキャッシュサーバの役割は、DNSクライアント(ウェブブラウザなど、ドメイン名を利用する何らかのアプリケーション等)からの再帰的問い合わせによって名前解決の依頼を受け、非再帰的問い合わせを行い名前を解決することである。たとえば、Webブラウザで、www.wikipedia.orgなどを入力した際、そのコンピュータがまず名前解決しに行くのがDNSキャッシュサーバである。
出典:ウィキペディア
まず「解決機能を有効にする」にチェックを入れてDNSキャッシュサーバーの機能を有効にします。
「フォワーダを有効にする」にチェックを入れると別のDNSキャッシュサーバーの情報を参照して動作します。フォワーダの使用は必須ではありませんが、フォワーダを指定しないとDS218jのDNSサーバーは自ら名前解決できない場合、いちいちルートサーバにDNS情報を問い合わせなければならなくなるので、フォワーダは使用したほうが動作は早くなる傾向が強くなります。
ルートサーバ
ルートサーバ、ルートネームサーバまたはDNSルートサーバとは、ドメインネームシステム (DNS) において、ドメイン名空間の頂点にある情報を保持するサーバ。ドメイン名の名前解決において、トップレベルドメイン (TLD) 部分の名前解決を担当する。
出典:ウィキペディア
ルートサーバは世界に13台しかなくいつも大忙しなので、できればフォワーダを活用して、ルートサーバへのトラフィックやルートサーバ自身の負荷を減らしてあげたほうが皆のため、とNOMIは思っています。
「フォワーダ 1:」、「フォワーダ 2:」には具体的に参照するDNSキャッシュサーバーのIPアドレスを入力します。
デフォルトでは、DS218jに設定されている参照DNSサーバーが指定されています【IPアドレスの固定~DiskStation DS218j】。
一番良いのは、自宅で契約しているインターネットプロバイダが提供しているDNSキャッシュサーバーを設定することです。
問い合わせまでの経路が短く、応答が早いとされているためです。
NOMI宅の契約プロバイダはBBIQなので、"218.40.229.16″と"218.40.229.40″を設定します。
最近は、参照DNSサーバーはプロバイダから自動でルーターに割り当てられるのが主流で、プロバイダの公式サイトに行ってもDNSキャッシュサーバーの情報が掲載されていないことがありますが、接続中のルーターのステータスを見れば普通はわかるようになっています。
または、DNSキャッシュの豊富なGoogleのパブリックDNSである"8.8.8.8″と"8.8.4.4″を設定しても良いと思います。
設定が終わったら[適用]をクリックします。
DNSキャッシュの動作確認
ここでパソコンからDNSキャッシュサーバーの動作確認をしてみます。
Windowsの場合は「コマンドプロンプト」を、Macintoshの場合は「ターミナル」を開き、"nslookup"コマンドで確認します。
コマンドの書式は、"nslookup [調べたいホスト名] [参照DNSサーバー]"です。
DS218jのDNSキャッシュサーバーが、"www.kakaku.com"及び、【SynologyのDDNS設定~DiskStation DS218j】で設定した"wwq.myDS.me"のグローバルIPアドレスを正しく返してきました。
正引きゾーン(Aレコード)の設定
引き続き"wwq.myDS.me"のみローカルIPアドレス"192.168.100.201″を返す設定を行います。
DSMの「DNS Server」の設定画面の[ゾーン]を選択し、[作成]→[マスターゾーン]を開きます。
「ドメインタイプ:」はホスト名からIPアドレスへの名前解決になるので「正引きゾーン」、ドメイン名は本来なら"myDS.me"ですが、SynologyからDDNSで借りているのは"wwq.myDS.me"なのでそのままそれを設定し、「マスターDNSサーバー」はDS218j自身のローカルIPアドレス"192.168.100.201″を設定します。
LAN内で使用限定のDNSサーバーなので、バックアップであるスレーブDNSサーバーは使用しません。マスターDNSサーバーのみで使用します。従ってゾーン転送は不要なので関係する機能のチェックは外します。
設定が終わったら[OK]をクリックします。
作成されたゾーンに"wwq.myDS.me"の正引きを追加します。作成されたゾーンを選択し、「編集」→[リソースレコード]を開きます。
「作成」→[A Type]を開きます(A TypeはIPv4の正引きです)。
LAN内で使用するだけの名前解決ですから、外出時にはできだけ早くキャッシュがクリアされたほうが良いので、TTL(保持時間)はデフォルトの"86400秒(一日)"から"60秒(一分)"に変更します。「IPアドレス」にはDS2018jの"192.168.100.201″をタイプし、[OK]をクリックします。
先に作成されていたレコードのTTLを、それぞれ選択して編集し、同じく"60秒(一分)"に変更します。
TTLの修正が終わったら[終了]をクリックします。
逆引きゾーン(PTRレコード)の設定
実用上はここまででも問題はないのですが、現段階ではIPアドレス"192.168.100.201″に対する逆引きのホスト名が設定されていないため、nslookupコマンドを実行したときに、
と、DNSサーバー名が"UnKnown"になってしまいます。
そこで、続いて逆引きのマスターゾーンを作成します。
「DNS Server」の設定に戻ります。
[ゾーン]を選択し、[作成]→[マスターゾーン]を開きます。まず、「ドメインタイプ:」を「逆引きゾーン」に変更します。「ドメイン名:」のところはDNSサーバーの逆引きの記述法に従って、"192.168.100.201″を逆にして"201.100.168.192″と記述します。
先の正引きの設定で、マスターDNSサーバーには自動的に"ns.wwq.myDS.me"というホスト名が設定されましたので、「ネームサーバー:」には同じく"ns.wwq.myDS.me"を指定します。
「ネームサーバー:」のドメインにあたる部分はプルダウンから選択できるようになっています。
繰り返しになりますが、LAN内での使用限定のDNSサーバーなので、バックアップであるスレーブDNSサーバーは使用しません。マスターDNSサーバーのみで使用します。ゾーン転送は不要なので関係する機能のチェックは外します。
設定が終わったら[OK]をクリックします。
作成されたゾーンに"192.168.100.201″の逆引きを追加します。作成されたゾーンを選択し、「編集」→[リソースレコード]を開きます。
「作成」→[PTR Type]を開きます(PTR Typeは逆引きのレコードをいいます)。
LAN内で使用するだけの名前解決ですから、外出時にはできだけ早くキャッシュがクリアされたほうが良いので、TTL(保持時間)はデフォルトの"86400秒(一日)"から"60秒(一分)"に変更します。「ホスト/ドメイン」にはマスターDNSサーバーとして作成されたホスト名"ns.wwq.myDS.me"を設定し、[OK]をクリックします。
先に作成されていたレコード選択して編集し、TTLを同じく"60秒(一分)"に変更します。
TTLの修正が終わったら[終了]をクリックします。
以上でLAN内DNSキャッシュサーバーの設定は終わりです。
パソコンから動作確認をしてみます。
“wwq.myDNS.me"の正引きがグロバールIPアドレスではなくローカルIPアドレスの"192.168.100.201″に変わり、DNSサーバー名が"UnKnown"から"ns.wwq.myDS.me"になりました。
参照DNSサーバーの変更方法について
最後に、LAN内のすべてのホストが参照するDNSサーバーをDS218jのIPアドレス"192.168.100.201″に変更する設定を行います。
一般的にルーター配下にあるパソコンやスマホなどの端末は、ルーターのDHCPサーバーによってIPアドレスを割り当てられると同時に、参照DNSサーバーのIPアドレスを割り当てられます。
市販のルーターのほとんどは、自分自身がDNSキャッシュサーバーの機能を持っていますので、参照DNSサーバーとしてルーターのIPアドレスを割り当てるケースが大半です。
NOMI宅にあるパソコンのコマンドプロンプトから"ipconfig /all"を実行すると、
デフォルトゲートウェイ、DHCPサーバー、参照DNSサーバーともルーターのアドレス"192.168.100.1″が設定されています。これが普通です。
NOMI宅のルーターYAMAHA NVR500で、DHCPでIPアドレスを割り当てる端末の参照DNSサーバーを"192.168.100.201″に変更するには、
- dns service off
- dns server 192.168.100.201
の二つのコマンドを実行すればOKです。その後、パソコンのネットワークの再読み込み"ipconfig /renew"を行い、"ipconfig /all"を実行すると、
と、参照DNSサーバーがDS218jの"192.168.100.201″に変更になります。
DHCPでIPアドレスを割り当てる端末の参照DNSサーバーを変更する方法はルーターによって異なりますが、普通はGUI設定画面から変更できるようになっているようですね。
注意しなければならないのは、DHCPで自動割り当てになっておらず、手動でネットワーク設定を行っている通信機器は、手作業で設定を変更しなければならないことです。例えばNOMI宅のWi-Fiアクセスポイントは固定のIPアドレスを割り当ててブリッジモードで動作させていますが、
のように設定する必要があります。もちろんSynology DiskStation DS218j自身も、[コントロールパネル]→[ネットワーク]→[ネットワークインターフェース]→[LAN]→[編集]を開き、
のように参照DNSサーバーをDS218j自身の"192.168.100.201″に変更しなければなりません。
何にせよ自宅内のLANに公開Webサーバーを設置するのは結構大変な作業ですね。
ディスカッション
コメント一覧
いつも楽しく拝読させて頂いています。
分かりやすく図面付き丁寧にご説明頂いてるので、
大変勉強になっております。
NUROのF660Aという型番のONU,NATループバックがないため、
LAN内自宅サーバーへのアクセス、
苦労しておりました。
DNSサーバー記事のおかげで、すっきり解決できました、
本当にありがとうございました!
サイトをご覧いただきありがとうございます。
稚拙な記事で恐縮ですが、お役にたててうれしいです。
はらけさん。
お役に立ててうれしいです(^^)。
無事解決できてなによりでした。
NOMIさん、こんばんは。
ご指示の通り、こちらの「DHCP Serverを使う~DiskStation DS218j」を参考に、RT-AC67UのDHCPサーバーを無効化、DS418jをDHCPサーバーにした所、ネットワーク内外からのサブドメインでのアクセスが出来るようになったのを確認しました!
丁寧なお手引き、本当にありがとうございました。m(__)m
はらけさん。
RT-AC67UのDHCPサーバーに不具合があるのでしょうか?。
投稿、DHCP Serverを使う~DiskStation DS218j にDSMのDHCPサーバーの設定方法を載せています。一度試してみてはいかがですか?。
NOMIさん。
ご回答ありがとうございます。
ご指摘の通り、ネットワーク内のDHCPサーバーはRT-AC67Uです。
また、ルーターのDNSサーバーをDS418jのIPに設定しているのですが、そのままではうまくいかず各端末の参照DNSサーバーをDS418jのIPに設定しなければいけません。
はらけさん。
ネットワーク内のDHCPサーバーはRT-AC67Uでしょうか?。でしたら、RT-AC67UのDHCPサーバーの設定で、参照DNSサーバーをDS418jのIPアドレスに指定し、各端末でIPアドレスの拾い直しをすれば大丈夫だと思いますが。
NOMIさん。
ご回答ありがとうございます。
また、現在構築しているサーバー設定に関しまして、言葉足らずで申し訳ありませんでした。
現在、外部からの80・443番ポートの接続はDS418jにフォワードし、DS418jのリバースプロキシを使ってサブドメインごとにローカルIPやポートを参照させています。
しかし、同一ネットワーク内からですと、各端末ごとに参照するDNSサーバーをDS418jのアドレスに設定する必要があるので、こちらのサイトを参考にさせていただきました。
これまでこちらのサイトのように、スクリーンショットを用いて手順を丁寧に紹介しているサイトや動画などを参考に構築をしてきて、ネットワークに関する正しい知識を習得していないので、ひょっとしたらまるっきり頓珍漢な回答になってしまっているかもしれませんが、よろしくお願いします。m(__)m
こんにちは。
こちらのサイトを参考に、DS418j(NAS)、RT-AC67U(ルーター)の環境でDNSサーバーを構築したのですが、なかなかうまくいきません。
nslookupで自ドメイン検索すると、DNSサーバー名が正しく表示され、ローカルIPもNASのサーバーになっているのですが、同一ネットワーク内で名前解決が出来ません。
外部からの接続は問題ありません。
アドバイスを頂けましたら幸いです。よろしくお願いします。m(__)m
当サイトをご覧いただきありがとうございます。
DS418jで構築されたのは、ローカルネット内限定の自宅内DNSサーバーでしょうか?。それともオーソリティDNSサーバーとして外部からの参照を目的として構築されたものでしょうか?。文面から察するに後者だと思われますが。
そうすると、ちょっと複雑になりますが、
1.現在記述されている自ドメインのゾーンとは別に、当サイトで紹介しているような「ホスト名→ローカルIPアドレス」と「ローカルIPアドレス→ホスト名」のゾーンを同じドメインで作成します。
2.「ビュー」を一つ作成し、ソースIPリストに同一ネットワークを登録し、1.で作成したゾーンのみを参照するように設定します(優先順位を1とします)。
3.「ビュー」をもう一つ作成し、ソースIPリストには何も設定せずに、オリジナルのゾーンファイルのみを参照するように設定します(優先順位を2とします)。
そうすると、同一ネットワークからのクエリーと、外部ネットワークからのクエリーに別々の回答をできるようになります。
私宅のDNSサーバーはローカル専用なので実験はできませんが、理屈としてはそれでOKだと思います。
わからなければまたお尋ねください。
参考:
http://www.obenri.com/_dnsserver2/boot_settings.html