ネットの「番号案内」DNS/bind9を使ってみよう~その1・インストール編と最初のセットアップ~ [Linux(Network/DNS)]
連載(?)の途中だけどDNSに触れたついでにこっちも書いておこうかなという気になったので書き始めてしまうことにした。(笑)
DNS。
私の記憶が確かなら、このblogはご家庭のネットワークでLinuxなサーバを活用するぞーみたいな内容を書く…という趣旨だったと思うんだけど(笑)。で、ご家庭でDNSが必要になる局面があるか?と聞かれると、それはちょっと無いんじゃないかな…と、自覚しているのではあるが、ご家庭をちょっと飛び出して小さな会社くらいだったらあるかもしれない。(笑)
という訳で、DNSについてちょこっと書いてしまおうかなと思う。(笑)
DNSの構築や維持には基本的なネットワークに関する知識が絶対に必要で、これを無くしてはDNSの管理なんておぼつかないが、そこから説明を始めたら大変なことになってしまうので(教科書級だ!)、そこはあえてバッサリと割愛し、「ネットワークについては一定水準の基礎知識を十分に有している」と勝手に仮定して話を進めることにしたい。(笑)
ただ、DNSの管理~と言っても、実は大して難しい話ではなくて、「ちょっぴり面倒なだけ」なのである。(笑)なので、ネットワークの知識が~と言っても、何か資格が取れちゃう級の知識とかまでは必要ない。だから追々勉強してもらう程度でも良いような気はする。
では、まずはじめにDNSの構築から。
広い意味での「DNSの構築」としては
手順①:DNSサーバソフトウェアのインストール
手順②:「ゾーンデータ」の作成
手順③:DNSサーバソフトウェアのconfファイル作成
手順④:DNSサーバの起動とチェック
というよくある手順を踏むことになる。
そして、今回ここで使用する「DNSサーバソフトウェア」は、「BIND」のバージョン9をチョイス。歴史あるDNSサーバソフトである。(笑)「バインド」と読めばよいかな?
BINDは超有名で、もはや「DNSといったらBIND」、「BINDといったらDNS」というくらい押しも押されぬ超大物級であるから、BINDのインストールといえばもう、yumコマンドでサクッとインストールできてしまうのである。ラクチンラクチン。というわけで、インストール&セットアップをしてみよう!
手順①:DNSサーバソフトウェアのインストール
yum install bind
以上。終了!(笑)
手順②:「ゾーンデータ」の作成
続いて、「ゾーンデータ」を作成する。
「ゾーンデータ」とはなんぞや?
…それは、「ドメイン名」と「IPアドレス」との対応を指定したデータのこと。まあ、要するに「/etc/hostsのすごいバージョン」と思ってもらって差し支えないと思う。(笑)
たとえば、/etc/hostsに
とか書いてあったとする。すると、「takamiya-jinja」といえば「192.168.1.1」というIPアドレスのことだし、「ryoou-highschool」といえば「192.168.1.2」というIPアドレスのことを指し示す。一方、「192.168.1.1」というIPアドレスは「takamiya-jinja」という名前になるし、「192.168.1.3」というIPアドレスには「kasukabe-station」という名前がついているよ…という意味になる。
DNSにおいてもこれと似たような機能を持つが、その割り当ての詳しい内容を記述したファイルのことを「ゾーンデータ」と呼んでいるのである。
その「ゾーンデータ」は、自分が管理している「ゾーン」の中については原則的に全て知っている必要がある。その「ゾーン」について全て知っているサーバのことを、「権威を持つサーバ」とか呼んだりする。
ただし、権威を持っていたとしても「委任」という関係を持つ別のサーバに管理を委託していたりすることもあるので、「権威を持つサーバ」が本当に100%全てを把握しているか?というと結構例外もあったりする。
しかしまあ、ここではそんな広域なゾーンについてはここで記述するつもりは無いので(笑)、まずは割と末端のゾーンについてか、「権威を持つサーバ」が100%把握していると理解してもらいたい。
で、細かい話は全部横においておくとしても、ほぼ全てのDNSサーバが備えておくことになる「ゾーンデータ」をここで準備する。細かい話にあたる部分は、アーティクルを改めて説明することにするので、そちらに期待してもらいたい。(笑)
手順②の1:「ゾーンデータ」の作成:ルートヒントデータを用意する
DNSサーバは、自分自身で管理している(権威を持っている)ゾーン以外に対する問い合わせにも華麗に応答してみせる必要がある。たとえば、自宅や会社組織内のPCがYahoo!Japanにアクセスしたいという事もあるはずで、そのような時には http://www.yahoo.co.jp/ の「www.yahoo.co.jp」の名前からIPアドレスを解決してやる必要がある。
しかし、「www.yahoo.co.jp」は、ヤフージャパン社が権威を持ったDNSサーバを持っていてそちらでしっかり管理していることでしょう。また、別のサーバ名・ドメイン名は別の組織がしかるべき方法でしかるべき管理をしているはずです。
で、ドメインごとにどのサーバが権威を持っているサーバか…という情報をいちいち抱え込んでしまうと膨大な量の情報をみんな管理しなければならなくなってしまうし、みんながバラバラに管理しだすと誰かが悪さをしたりしてもわからなくなってしまうとか他にもいろいろとデメリットが生じてしまうことでしょう。
このため、DNS世界の親玉…ともいうべきサーバが存在しています。これを「ルートサーバ」と呼んでいる。(「ルートネームサーバ」とか「ルートヒントサーバ」とかいう人もいるが、要するに同じもの)
そのサーバに関する情報は、個別に確保しておく必要がある。(そして、たまに更新する必要が生じる)
まず、ftpコマンドで、「ftp.rs.internic.net」に接続する。(IPアドレスで 198.41.0.6 を指定しても構わない模様)
anonymous アカウントでログインできる。
ログインすると、「domain」というディレクトリの中に、「named.root」というファイルが置かれているので、これをGETコマンドでダウンロードする。(中身はテキストファイル)
ダウンロードしたファイルは、「/var/named/db.cache」として保存しておく。
手順②の2:「ゾーンデータ」の作成:「ローカルループバック」アドレスからの逆引き設定用ゾーンファイルを作成する
続いて、ローカルループバックアドレスからの逆引き設定用ゾーンファイルを作成する。
念のため、用語の説明を加えておく。
今、「逆引き」という言葉が現れた。これは、IPアドレスからサーバ名を求める行為のことをいう。
この「ローカルループバックアドレス」からの逆引き設定用ゾーンファイルは、通常はほぼテンプレート化されていることが多いので、まずは以下の内容をほぼそのまま使ってもらえばよいと思う。
ただし、「[DNSサーバ名]」と、「[管理者のメールアドレス]」については適宜書き換えること。
まず、「[DNSサーバ名]」については2箇所。「SOA」に続くところと、「NS」に続くところに記述する箇所がある。ここに、DNSサーバのサーバ名を記入するのである。
なお、注意点がある。ここの記述するDNSサーバ名は、厳密に正しいFQDN名でなければならない。仮にサーバ名が「dns-server」で、ドメイン名が「mysection.mycompany.co.jp」だとすると、ここに記述するのは
dns-server.mysection.mycompany.co.jp.
ということになる。末尾のピリオド「.」まで必要なのでくれぐれも忘れないように。
また、「[管理者のメールアドレス]」についてはちょっと特殊で、メールアドレスをそのまま記述するのではなく、メールアドレスに含まれる「@」(アットマーク)を「.」(ピリオド)に置き換えて記述することになる。たとえば、管理者のメールアドレスが「admin@mycompany.co.jp」だとすると、ここに記述するのは「admin.mycompany.co.jp.」ということになる。そしてここでも、末尾のピリオドは必須になるので注意されたい。
この内容を適切に記述したファイルには、適切な名前をつけて/var/namedに保存しておく。
なお、歴史的な経緯からか、「db.127.0.0.zone」とかいう名前をつける人が多いとか?「db.127.0.0」というケースもあるようだ。
最後に、/var/named配下のディレクトリやファイルのオーナーをnamed:namedに変更することを忘れないように。chown named:named -R /var/namedということになろうか。
手順③:DNSサーバソフトウェアのconfファイル作成
/etc/named.confを作成する。最小のconfとしては概ね以下の通り。
こんな感じ。
手順④:DNSサーバの起動とチェック
service named start
で起動してみて、nslookupやdigで名前が解決できることを確認してみよう。
DNS。
私の記憶が確かなら、このblogはご家庭のネットワークでLinuxなサーバを活用するぞーみたいな内容を書く…という趣旨だったと思うんだけど(笑)。で、ご家庭でDNSが必要になる局面があるか?と聞かれると、それはちょっと無いんじゃないかな…と、自覚しているのではあるが、ご家庭をちょっと飛び出して小さな会社くらいだったらあるかもしれない。(笑)
という訳で、DNSについてちょこっと書いてしまおうかなと思う。(笑)
DNSの構築や維持には基本的なネットワークに関する知識が絶対に必要で、これを無くしてはDNSの管理なんておぼつかないが、そこから説明を始めたら大変なことになってしまうので(教科書級だ!)、そこはあえてバッサリと割愛し、「ネットワークについては一定水準の基礎知識を十分に有している」と勝手に仮定して話を進めることにしたい。(笑)
ただ、DNSの管理~と言っても、実は大して難しい話ではなくて、「ちょっぴり面倒なだけ」なのである。(笑)なので、ネットワークの知識が~と言っても、何か資格が取れちゃう級の知識とかまでは必要ない。だから追々勉強してもらう程度でも良いような気はする。
では、まずはじめにDNSの構築から。
広い意味での「DNSの構築」としては
手順①:DNSサーバソフトウェアのインストール
手順②:「ゾーンデータ」の作成
手順③:DNSサーバソフトウェアのconfファイル作成
手順④:DNSサーバの起動とチェック
というよくある手順を踏むことになる。
そして、今回ここで使用する「DNSサーバソフトウェア」は、「BIND」のバージョン9をチョイス。歴史あるDNSサーバソフトである。(笑)「バインド」と読めばよいかな?
BINDは超有名で、もはや「DNSといったらBIND」、「BINDといったらDNS」というくらい押しも押されぬ超大物級であるから、BINDのインストールといえばもう、yumコマンドでサクッとインストールできてしまうのである。ラクチンラクチン。というわけで、インストール&セットアップをしてみよう!
手順①:DNSサーバソフトウェアのインストール
yum install bind
以上。終了!(笑)
手順②:「ゾーンデータ」の作成
続いて、「ゾーンデータ」を作成する。
「ゾーンデータ」とはなんぞや?
…それは、「ドメイン名」と「IPアドレス」との対応を指定したデータのこと。まあ、要するに「/etc/hostsのすごいバージョン」と思ってもらって差し支えないと思う。(笑)
たとえば、/etc/hostsに
192.168.1.1 takamiya-jinja 192.168.1.2 ryoou-highschool 192.168.1.3 kasukabe-station
とか書いてあったとする。すると、「takamiya-jinja」といえば「192.168.1.1」というIPアドレスのことだし、「ryoou-highschool」といえば「192.168.1.2」というIPアドレスのことを指し示す。一方、「192.168.1.1」というIPアドレスは「takamiya-jinja」という名前になるし、「192.168.1.3」というIPアドレスには「kasukabe-station」という名前がついているよ…という意味になる。
DNSにおいてもこれと似たような機能を持つが、その割り当ての詳しい内容を記述したファイルのことを「ゾーンデータ」と呼んでいるのである。
その「ゾーンデータ」は、自分が管理している「ゾーン」の中については原則的に全て知っている必要がある。その「ゾーン」について全て知っているサーバのことを、「権威を持つサーバ」とか呼んだりする。
ただし、権威を持っていたとしても「委任」という関係を持つ別のサーバに管理を委託していたりすることもあるので、「権威を持つサーバ」が本当に100%全てを把握しているか?というと結構例外もあったりする。
しかしまあ、ここではそんな広域なゾーンについてはここで記述するつもりは無いので(笑)、まずは割と末端のゾーンについてか、「権威を持つサーバ」が100%把握していると理解してもらいたい。
で、細かい話は全部横においておくとしても、ほぼ全てのDNSサーバが備えておくことになる「ゾーンデータ」をここで準備する。細かい話にあたる部分は、アーティクルを改めて説明することにするので、そちらに期待してもらいたい。(笑)
手順②の1:「ゾーンデータ」の作成:ルートヒントデータを用意する
DNSサーバは、自分自身で管理している(権威を持っている)ゾーン以外に対する問い合わせにも華麗に応答してみせる必要がある。たとえば、自宅や会社組織内のPCがYahoo!Japanにアクセスしたいという事もあるはずで、そのような時には http://www.yahoo.co.jp/ の「www.yahoo.co.jp」の名前からIPアドレスを解決してやる必要がある。
しかし、「www.yahoo.co.jp」は、ヤフージャパン社が権威を持ったDNSサーバを持っていてそちらでしっかり管理していることでしょう。また、別のサーバ名・ドメイン名は別の組織がしかるべき方法でしかるべき管理をしているはずです。
で、ドメインごとにどのサーバが権威を持っているサーバか…という情報をいちいち抱え込んでしまうと膨大な量の情報をみんな管理しなければならなくなってしまうし、みんながバラバラに管理しだすと誰かが悪さをしたりしてもわからなくなってしまうとか他にもいろいろとデメリットが生じてしまうことでしょう。
このため、DNS世界の親玉…ともいうべきサーバが存在しています。これを「ルートサーバ」と呼んでいる。(「ルートネームサーバ」とか「ルートヒントサーバ」とかいう人もいるが、要するに同じもの)
そのサーバに関する情報は、個別に確保しておく必要がある。(そして、たまに更新する必要が生じる)
まず、ftpコマンドで、「ftp.rs.internic.net」に接続する。(IPアドレスで 198.41.0.6 を指定しても構わない模様)
anonymous アカウントでログインできる。
ログインすると、「domain」というディレクトリの中に、「named.root」というファイルが置かれているので、これをGETコマンドでダウンロードする。(中身はテキストファイル)
ダウンロードしたファイルは、「/var/named/db.cache」として保存しておく。
手順②の2:「ゾーンデータ」の作成:「ローカルループバック」アドレスからの逆引き設定用ゾーンファイルを作成する
続いて、ローカルループバックアドレスからの逆引き設定用ゾーンファイルを作成する。
念のため、用語の説明を加えておく。
今、「逆引き」という言葉が現れた。これは、IPアドレスからサーバ名を求める行為のことをいう。
この「ローカルループバックアドレス」からの逆引き設定用ゾーンファイルは、通常はほぼテンプレート化されていることが多いので、まずは以下の内容をほぼそのまま使ってもらえばよいと思う。
ただし、「[DNSサーバ名]」と、「[管理者のメールアドレス]」については適宜書き換えること。
$TTL 1d @ IN SOA [DNSサーバ名] [管理者のメールアドレス] ( 1 3h 1h 1w 1h ) IN NS [DNSサーバ名] 1 IN PTR localhost.
まず、「[DNSサーバ名]」については2箇所。「SOA」に続くところと、「NS」に続くところに記述する箇所がある。ここに、DNSサーバのサーバ名を記入するのである。
なお、注意点がある。ここの記述するDNSサーバ名は、厳密に正しいFQDN名でなければならない。仮にサーバ名が「dns-server」で、ドメイン名が「mysection.mycompany.co.jp」だとすると、ここに記述するのは
dns-server.mysection.mycompany.co.jp.
ということになる。末尾のピリオド「.」まで必要なのでくれぐれも忘れないように。
また、「[管理者のメールアドレス]」についてはちょっと特殊で、メールアドレスをそのまま記述するのではなく、メールアドレスに含まれる「@」(アットマーク)を「.」(ピリオド)に置き換えて記述することになる。たとえば、管理者のメールアドレスが「admin@mycompany.co.jp」だとすると、ここに記述するのは「admin.mycompany.co.jp.」ということになる。そしてここでも、末尾のピリオドは必須になるので注意されたい。
この内容を適切に記述したファイルには、適切な名前をつけて/var/namedに保存しておく。
なお、歴史的な経緯からか、「db.127.0.0.zone」とかいう名前をつける人が多いとか?「db.127.0.0」というケースもあるようだ。
最後に、/var/named配下のディレクトリやファイルのオーナーをnamed:namedに変更することを忘れないように。chown named:named -R /var/namedということになろうか。
手順③:DNSサーバソフトウェアのconfファイル作成
/etc/named.confを作成する。最小のconfとしては概ね以下の通り。
options { directory "/var/named"; }; recursion yes; zone "." in { type hint; file "db.cache"; }; zone " 0.0.127.in-addr.arpa" in { type master; file "db.127.0.0.zone"; };
こんな感じ。
手順④:DNSサーバの起動とチェック
service named start
で起動してみて、nslookupやdigで名前が解決できることを確認してみよう。
コメント 0