ローカルのDNSサーバをたてる ~ openSuSE2013年08月15日 15:24

PCが一台でインターネットにつないでいるなら、そのPCの名前解決の設定をすればよいだけだが、他に複数の機器があるときは、ローカルの名前解決の手段を持つのが便利である。手が空いたので、懸案のローカルのDNSサーバの設定を行う。IPアドレスを持つ機材は、何気に増えている。

・いつも使っているPC
・予備のPC;壊れたときの非常用
・ルータ
・FLETS光のモデム
・ネットワークスイッチ
・ESXiのサーバ(vmware)
・ESXiの中で動くLinuxやWindows
・NAS(兼メディアサーバ)
・EPSONの複合機;ネットワーク経由で印刷とFAX
・AVアンプ;NASのメディアファイルをDLNAで再生
・スマートフォン

AVアンプまでIPを持つ時代になった。複合機もUSBでなく、ネットワーク接続の方が、複数の機材で共用できる。スマホも家では、無線LAN経由で通信費を抑え、速度を稼ぐ。上記のうち、固定IPを振るものは、DNSで管理できる。動的にIPを振るものは、DHCPとの連携まで考えなければならない。今回は、前者まで進める。目的を整理する。

1)IPアドレスを持つ機材に名前でアクセスできるようにする。~今回のテーマ
2)IPアドレスを動的に設定するものは、DHCPとの連携を行う。~次回のテーマ

大きな組織だと、組織内とインターネットからのそれぞれの名前解決や、一部の機材が壊れても大丈夫にする手当、セキュリティなど、他にも目的がいろいろ出てくる。そうなると片手間にはできないが、小さな組織なら今回程度の目的で十分用を成すはず。教科書類は全てを網羅しようとするので手強い。目的別のガイドがあると重宝するのだが。

今回のDNSサーバは、Linux上に設ける。巷では、CentOSやUbuntuの人気が高いようだが、うちは昔からSuSE (openSuSE)。バージョンは少し前の12.1 (今は12.3)。最初のころは、RedHatやTurbo、Kondara、Slackwareなどいろいろ手を出したが、ReiserFSが好みで、SuSEになった。カメレオンが2匹ほど棚の上にいる。ReiserFSは作者が刑事事件を起こしたり、Extも信頼性が高くなり、最近は流行らないが、今でも現役。SunのVeritasFSへの憧れからだったか。

SuSE Linuxでは、GUIの管理ツールとして、yastを使う。DNSは、複数箇所の設定が連携するので、GUIだとあちこちの画面の設定を整合させる必要がある。設定ファイルの直接編集が好まれるわけである。それを承知で、今回はyastから設定する。SuSEのサイトに解説があるので、それに従う。
http://doc.opensuse.org/documentation/html/openSUSE/opensuse-reference/cha.dns.html
※英文なのはご容赦。設定例で構文上必要な「; (セミコロン)」が抜けていたりするのは、要補完。

他に、@ITの記事( http://www.atmarkit.co.jp/flinux/index/indexfiles/bind9index.html )、BIND開発元の文書( http://www.isc.org/downloads/BIND/ )、定番のO'REILLYの「DNS and BIND」の書籍( http://www.oreilly.co.jp/books/9784873113906/ )などが身近にあるといい。最も書籍の方は、何でも書いてある反面わかりにくい。だから、雑誌やBLOGの記事が数多くあるわけだけれども。ここでは、要所のみかいつまんで示す。
※あくまで個人の備忘録の域は出ない。あしからず。

yast
yastの画面。Network Servicesの最初の方に、DNS Serverの設定がある。

Network Settings
と、その前に、一つ前のメニューのNetwork Settingsを確認しておく。これから設定するローカルのドメイン名と同じものが設定されていること。確認後、DNSサーバの設定を改めて起動。Wizardに従い設定を進める。

Forwarders
ローカルにないものは、外部のDNSを見に行くように設定する。asahi-netであれば、こんな感じ。
http://asahi-net.jp/support/guide/flets/0405.html

DNS Basic Options
Basic Optionsのタブは、たいがい自動の設定のままでよさそう。allow-queryの項目で、問い合わせを受け付ける範囲を限定する。ここでは、ローカルのネットワークからのみ。

TSIG keys
将来、DHCPとの連携を行うため、TSIGの鍵生成をしておく。動的更新を可能に設定するときに、必要になる。手で設定する場合は、相手先のIPアドレスを指定するのでもよいが、セキュリティが甘くなるので、yastは許してくれない。

DNS Zones
ローカルに設けるDNSのゾーンの設定を行う。正式なドメイン名を持っているならばそれを設定するが、そうでない場合は、現実のものと重複しないような値をつける。ここでは、プライベートアドレスの領域:192.168.101/24に、c5d5e5.athome、という名称を付けた。athomeなんてドメインはない。ローカル使用限定。localとでも付けたいところだが、問題が出やすい名前なので避ける。下が正引き、上が逆引きの設定。

Zone Editor
正引きの方の設定。上の「動的更新を有効にする」にチェックを入れるためには、TSIG keyをあらかじめ作っておかなければならない。一番下に逆引きの設定との連動が表示されているのは、逆引きの方で設定を入れたため。

Zone Editor 2
Recordsのタブで実際のIPアドレスの登録を行う。DHCPで登録するものは除く。登録でエラーが発生してしまうときは、yastをいったん終了し、ファイルを編集する。この辺りは、Linuxでは想定が必要。だいぶ、無くなってきたのだけれども。


Rev Zone Editor
次は、逆引きの方。一番下に、連動させる正引きの設定を登録する場所がある。ここは、yastを使うと楽なところ。あとは、最初の画面に戻って、設定を保存し、DNSサーバを再起動する。その後、コンソールからnslookupやdigなどを用いて、期待通りの動きをするか確認する。

普段使いのPCは、DHCPからIPアドレスを拾ってくるので、DHCPサーバの方も手を入れなければならない。こちらは、CiscoのルータをDHCPサーバに使っている。

ip dhcp
internalとwlanのDHCPプールを設けているが、それぞれ、DNSサーバとドメイン名を適切に設定する。他のDHCPサーバでも同等の変更を行う。変更後、設定を取り直すために、PC(Windows)で ipconfig /renew を実施する。その後、ipconfig /all で設定を確認し、nslookupで期待する動作をするか確認する。

nslookup
外部サイトはasahi-netの所定のDNSサーバが、ローカルサイトはローカルのDNSが答えている。これで一段落。

採用例の少なそうな構成なので、手順の雰囲気のみつかんでいただければ。例はたくさんあった方が、悩んだときに正解にたどり着きやすいと信じて。なお、DNSの設定は誤ると世間に迷惑をかける。外部からの攻撃の標的にもなりやすい。余計なパケットを通さないなど、セキュリティ対策は万全に。メールシステムなど、DNSに依存するサービスは止めておく。今回は少し失敗した。