ホスト名の解決

設定

  • 参考サイト
  • 参考サイト
  • 参考サイト
  • 参考サイト
  • 参考サイト
  • 参考サイト
  • resolv.confは,DNSサーバのIPアドレスを指定する設定ファイルだ
  • searchだと複数のドメインを書けて、与えられたホスト名に対してリストを順に適用して解決を図るということらしい
  • domainとsearchは排他的に作用するらしいので、複数のサブドメインをresolv.confで解決したいならsearchで、それ以外のケースではdomainで指定するというのが正しい使い方

domainは,ホスト名を省略して通信を試みたときに,domainに書いたドメインをくっつけて通信を試みるらしい searchはdomainと基本的に同じ役割を果たすが,domainは一つしか登録できないのに対し searchは複数(3つ)まで登録しておける. searchとdomainの共存はできないのでどちらか片方のみ記述しておく

  • /etc/hostsは,IPアドレスとホスト名をローカルで解決するためのファイルらしい
  • /etc/host.confには,/etc/hostsでの名前解決とDNSサーバでの名前解決のどちらを先に行うかを設定する
  • vi /etc/host.conf

orderの行について. hostsは/etc/hostsを指し,bindはDNSサーバを指す. orderの行が,hosts,bindならば/etc/hostsで名前解決を試みた後にDNSサーバで名前解決を行う

  • multi on

192.168.1.1 usugw.usu.usupi.org 10.0.0.1 usugw.usu.usupi.org と、usugw の IP アドレスが複数登録されているとき、host.conf に multi on と書いておけば、両方の IP アドレスを返してくれます。 (multi の指定がなければ、最初の IP アドレスだけを返します。)

host

  • host www.ckenko25.jp 8.8.8.8 google dns で

外部に名前解決を依頼する

  • /etc/resolve.conf に nameserver=8.8.8.8 のように記述する

内部の名前解決

  • /etc/hosts に 192.168.1.x xs35vl3.ckenko25.jp xs35vl3 これで名前でpingできる

hostnameの表示

  • ホストネームの表示はhostname

ネットワークを再起動する

  • /etc/init.d/networking restart

名前解決が正しく行われているかを確認する方法

  • ping IPアドレス
  • ping ホスト名

bind9

設定ファイルのnamed.confは事実上空っぽで、以下の三ファイルをインクルードする仕様。一つのファイルにいくつもの設定をごちゃごちゃ書くよりもわかりやすい。

named.conf.options # BINDの基本設定

named.conf.default-zones # ルートサーバやローカルなどデフォルトのゾーン設定

named.conf.local # ユーザーが追加するゾーンの設定

named.conf.options は BIND全体のオプションを設定

vi /etc/bind/named.conf   ← BIND 9 の設定ファイルを編集する

// include “/etc/bind/named.conf.default-zones”;   ← コメントアウト

include “/etc/bind/named.conf.internal-zones”;   ← 内部用ファイルの追加 include “/etc/bind/named.conf.external-zones”;   ← 外部用ファイルの追加 ゾーン転送は最もオーソドックスな手法です。

スレーブはマスターのゾーンデータが更新されていることを確認すると、ゾーンデータのダウンロードと再構築を行って、更新されたゾーンデータを有効にします。その際、マスター・サーバ更新の有無はゾーンデータのSOAレコード中のSerialで判定します。Serialの値が大きくなっていれば更新されたと見なし、ゾーン転送(AXFR)を開始します。 シリアル番号 増加していればゾーン転送を開始します。西暦(4けた)+月(2けた)+日(2けた)+インクリメント値(2けた)が使用されることが多く、32bit値で格納されるため最大値は「4294967295」になります。この値を超えるとゾーンデータの読み込みに失敗するため、注意が必要です。

forwardersで指定する.これが無いとルートサーバに検索に行くことになるが,それは性能的,マナー的に凶悪だ //forwardersの記述が無いと、BIND は自分で名前解決できない場合に直接ルートサーバに名前解決を求める

//forwardersにプロバイダのDNS サーバを指定する事により、名前解決のパフォーマンスが向上する forwarders{ //ルーター経由接続環境の場合はルーターのIPアドレスを指定 xxx.xxx.xxx.xxx; //PPPoE接続環境の場合はプロバイダから通知されたDNSサーバー(プライマリ)のIPアドレスを指定 xxx.xxx.xxx.xxx; //PPPoE接続環境の場合はプロバイダから通知されたDNSサーバー(セカンダリ)のIPアドレスを指定 xxx.xxx.xxx.xxx; }; }; //bindを使用する範囲を指定 //指定されない場合は、すべてのホストから受け付ける。 allow-query { 127.0.0.1; 192.168.1.0/24; }; //ルートのゾーン設定 //自分の知らないドメインのホストを聞かれたときにこのルートサーバーに聞きにいくことで名前解決を行います。 zone “.” IN { //hintはルートサーバを表す type hint; //ルートサーバのファイル file “named.ca”; }; irectory “/var/cache/bind”; directoryサブステートメントはサーバの作業ディレクトリを指定する。 /var/cache/bindが指定されている。 設定ファイルの中で絶対パスで指定しないものはこのディレクトリからの相対パスになる。 文法チェック bindには文法チェックのコマンドがある。 $ sudo named-checkconf 何も表示しなければ文法的なエラーはない。 $TTL 86400 @ IN SOA ns.localdomain. root.ns.localdomain. ( 1 ; serial 1800 ; refresh (30 minutes) 900 ; retry (15 minutes) 604800 ; expire (1 week) 1300 ; minimum (30 minutes) ) IN NS ns.localdomain. ns IN A 192.168.1.1 $TTLは別のDNSがこの情報をどれくらいの期間キャッシュするかを指定する。 単位を指定しない場合は数値は秒になる。 86400秒は1日になる。 次の行からSOAレコードの記述になる。 (ゾーンファイルの最初のレコードはSOAレコードにする。) ゾーンサーバ名、管理者のアドレス、シリアル番号、リフレッシュ時間 、リトライ時間、期限切れ時間、最小フィールドを指定する。 @はドメインに置き換わる。 シリアル番号はゾーンファイルを編集する度に増加させる。 セカンダリサーバはリフレッシュ時間の間隔でシリアル番号をチェックする。 シリアル番号が更新されていたらゾーン情報を転送する。 マスタゾーンサーバにアクセス出来ない場合、リトライ時間の間隔でアクセスを試す。 アクセス出来ないまま期限切れ時間が経過するとセカンダリサーバはゾーン情報を破棄する。 最小フィールドの意味は過去から変化してきた。(RFC2308) 今は否定的な答え(NXDOMAIN)のキャッシュの有効期限になる。 NSレコードはドメインで権威があるネームサーバを指定する。 NSレコードは行の先頭に1文字以上の空白が必要。 Aレコードはホスト名からIPv4のアドレスを引くためのレコードになる。 正引きのゾーンファイルの文法チェックする。 named-checkzone ドメイン ゾーンファイルでチェックすることが出来る BIND9 は、View機能(internal/externalのzone設定)が使えるため、ローカルLAN側のDNS と インターネット側のDNS をまとめて設定できて大変便利です DNSサーバは2ヶ所以上の設定が望ましいです(プライマリDNSとセカンダリDNS:負荷分散とDNSサーバ落ちの対策です)。 通常は、自サイトでプライマリDNSを立ち上げ、他のサイト(プロバイダや知人サイト)のDNSに セカンダリDNSを引き受けてもらいます。

dig結果 resolv.confでnameserver=192.168.1.1を指定

root@debian:/home/ckenko25# dig www.ckenko25.jp

; <<>> DiG 9.7.3 <<>> www.ckenko25.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29593
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4

;; QUESTION SECTION:
;www.ckenko25.jp.               IN      A

;; ANSWER SECTION:
www.ckenko25.jp.        300     IN      A       58.188.125.214

;; AUTHORITY SECTION:
ckenko25.jp.            78978   IN      NS      ns1.mydns.jp.
ckenko25.jp.            78978   IN      NS      ns0.mydns.jp.

;; ADDITIONAL SECTION:
ns0.mydns.jp.           133     IN      A       210.197.74.300
ns0.mydns.jp.           133     IN      AAAA    3001:278:1033:4::74:300
ns1.mydns.jp.           27      IN      A       210.197.74.301
ns1.mydns.jp.           27      IN      AAAA    3001:278:1033:4::74:301

;; Query time: 22 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Nov 23 09:06:16 3013
;; MSG SIZE  rcvd: 179

bind9

  • /etc/init.d/bind9 restart bindの再起動

/etc/resolv.confの役割

  • nameserverに指定してdnsサーバーを変更できる

nameserver ネームサーバのIPアドレス domain ドメイン名 search 検索リスト 最低必要なのが,nameserver です.これで,ネームサーバを指定します. nameserver 192.168.1.1 nameserver 192.168.1.2 などのように,複数指定することも可能です. この場合,まず 192.168.1.1 へ問い合わせます.解決できなければ, 次に 192.168.1.2 へ問い合わせます. ちなみに,3台まで指定できるようです. domain は,自分が所属しているドメイン名を指定します.すると,DNS を引く時に, このドメイン名を付加して解決しようとしてくれます. domain ckenko25.jp と指定しておいて,www にアクセスしようとすると,ckenko25.jp を付加して, www.ckenko25.jp で DNS を引いてくれます. search は,domain を複数指定できるようにしたものです. 指定したドメインを順に付加して,DNS を引いてくれます. search ckenko25.jp one.ckenko25.jp と指定しておいて,www にアクセスしようとすると,まず ckenko25.jp を付加した www.ckenko25.jp で DNS を引き,解決できなければ, one.ckenko25.jp を付加した www.one.ckenko25.jp で DNS を引きます. nameserver は,近い順に,できるだけ複数指定する. よく利用するドメインが複数ある場合は,search で,それらを指定する. 1つだけなら,domain を使用する.

/etc/named.conf

1) viewセクションの存在 BIND9.xの便利な新機能の一つに、viewセクションの存在が挙げられる。viewセクションとは、参照元のIPアドレスによって、異なった名前解決をすることができる機能である。これにより、1つのnamedを起動させるだけで、ローカルIPアドレスを持つLAN上のDNSサーバーと、グローバルIPアドレスを持つインターネット上のDNSサーバーを兼ねることができる view “internal” と view “external” を定義するが、 必ず “internal” を先に記述すること。 named は問い合わせを受け取ると、 各 view をそれが定義された順に検索し、 それぞれの match-client と比較し、 最初に適合した view の内容を使って返答する。 内向き外向き両方に対応するということは、 内向きの顔と外向きの顔を作らないといけないということ。 viewとはその顔に相当するもので、view “internal”とするとinternalという名前のviewができる。 match-clients そのviewを使用するかどうかの判定基準を書く。 具体的には、該当するIPアドレスかaclの名前を書く。 internalでは最初に定義したlocalnetを指定している。 つまり、ローカルだと判断できるIPにはこちらのviewを使うわけだ。 externalではanyと書いてある。 これは「すべて」という意味で、viewのmatch判定は上から順に行われるので 「internalに含まれない残り全てのクライアント」がexternalに該当することになる。 aclは、クライアントの振り分けをするためのグループ設定。「localnetというグループに所属している」と判断される  match-clietnsステートメントではviewの対象となるクライアントを限定するために使用します。通常は、内向けDNSの場合は、ローカルネットワークを指定し、外向けDNSは、”any”と指定し、外部ネットワークを許可します。 recursion: BINDにはキャッシュサーバとしての機能もあって、 他のDNSに再帰的に問い合わせてくれるということもする。 しかし、相手を選ばずそういうサービスをしていては負荷がたまらんので、 原則として内向きの相手にだけ再帰を許す。 internalではyes, externalではnoになっているのはそういうわけ。 DNSサーバーには、再帰的な問い合わせという機能があります。再帰的な問い合わせを可能にしている場合、外部からの問い合わせに対して名前解決を行うようになりますが、自ホストと関係のないサーバーの問い合わせに対してわざわざ手を貸してあげる必要はありません。DNSサーバーは、あくまで自ホストのために設置しているわけであって他人の名前解決のために設置しているわけではありません。したがって、内部からの問い合わせに対しては再帰問い合わせを許可し、外部からの問い合わせに対しては拒否するようにしてください。  また、再帰問い合わせを可能な状態にしておくと、DNSの問い合わせ結果が詐称されることもあり(キャッシュ汚染攻撃)、悪用されるとドメイン名を乗っ取られたり、DoS攻撃の対象ともなりえます。仮にDNSのキャッシュが汚染された場合、細工を施された応答を返すことで、結果的に本来のものとは全く異なる応答が返されることになります。なので、セキュリティ対策のためにも”recursion no”とすることをお勧めいたします。 zone: ここで、このDNSサーバがどのようなドメインに権威(名前解決する権利)を持つかを記述する。 まず必須となるのが、「ルートネームサーバ」というものに対する記述。 zone “.”となっているのがそれで、これがないとnamedが起動しない罠。 これは、自分では解決できないドメインが問い合わせされた場合、 「俺わかんねーからこの人たちに聞いて」と責任逃れをするためのもの。 viewに設定されたzone情報は、そのview条件にマッチしたクライアントのみに適用されます。同じzoneだとしても、そのzoneに対してview毎に異なる設定がされていればクライアントには異なる応答が返ることになります。 「type master」は、「俺がこのドメインのプライマリDNSだぜ」という宣言。 そうすると自分が持っているゾーンファイルを使うことになるので、fileにそのファイル名を記述する。 まず気になるのが「1.168.192.in-addr.arpa」の部分。 これは、全てのIPアドレスに暗黙的に付与される「仮想ドメイン」とでもいうもので、 「192.168.1.1」→「1.1.168.192.in-addr.arpa」というルールに基いている。 IPアドレスを逆にして、最上位ドメインの「in-addr.arpa」を付けるわけだ。 IPアドレスを問い合わせる場合、この仮想ドメインでリクエストが来ることになる $TTL [有効期限] @ IN SOA [DNSサーバ名] [rootメールアドレス] ( [シリアル番号] [refresh待機時間] [retry時間] [最大有効期限] [最小有効期限] ) ドメインごとに変更する必要があるのは、 「DNSサーバ名」「rootメールアドレス」の部分。 「DNSサーバ名」には、プライマリDNSのFQDNの末尾に.を付けたもの 「rootメールアドレス」には、rootへのメールアドレスの@を.にし、末尾にも.を付けたものを書く。 ちなみにrootメールアドレスは実際に存在しなくても良い。 重要なのは後半部分。 まず、レコードの種類が6種類あることの説明。 NS : ネームサーバの指定 A : ドメインのIPアドレス指定(IPV4) AAAA : ドメインのIPアドレス指定(IPV6) CNAME: A,AAAAレコードのエイリアス指定 PTR : IPアドレスのドメイン指定 MX : ドメインのメールサーバ指定 次に、1レコードのフォーマット。 [サブドメイン] IN [種類] [値] 「サブドメイン」には「www1」「dns1」などを書く。 なお、サブドメインがない、つまりドメイン全体への指定は、 サブドメイン部分を空白にする、もしくは「@」と書くことで実現できる。 この例では、NSレコードのサブドメインを空白にすることで 全てのサブドメインのDNSサーバを一括指定している。 以上のルールを基に、定義したいサブドメインを全て記述する。 原則的には「NS→MX→[A,AAAA,CNAME/PTR]」の順に書くと良い。 なお、PTRレコードのサブドメインは、 「IPアドレスを逆にしたもの」の「最初」なので、「IPアドレスの末尾」となる。 ここまでがゾーンファイルの書き方になる。 ゾーンファイルを作成するのはプライマリDNSにのみ。 セカンダリはプライマリから自動的に持ってくる。 namedがそれぞれ動作したら、digを使って確認する。 まずはLAN内のマシンから dig @192.168.1.x www.ckenko25.jp のように、DNSサーバ(@192.168.1.x)を直接指定して、プライマリとセカンダリそれぞれを確認する。 また、外部のDNSから dig @8.8.8.8 www.ckenko25.jp 自分のルーターを指定すれば詳細なグローバル情報が得られる

文法チェック

逆引きのゾーンファイルの文法チェックする。 ドメインはzoneセンテンスで指定した記述になる。

named-checkconf
named-checkzone 1.168.192.in-addr.arpa /etc/bind/ckenko25.jp.rev
zone 1.168.192.in-addr.arpa/IN: loaded serial 1
OK

外部からDNSサーバーチェック http://www.dnsreport.com/

スレーブの設定方法

スレーブの設定方法

スレーブサーバの作成はとても簡単です。

まず、スレーブとするサーバにDNSサーバを構築します。
参照)『DNSサーバの構築(BIND) 』http://kajuhome.com/bind.shtml

例)マスタサーバ「192.168.1.5」、スレーブサーバ「192.168.1.6」とした場合

設定ファイル「/etc/named.conf」の正引き・逆引きゾーンの設定を以下の様に変更します。
# vi /etc/named.conf
// 正引きゾーンの指定
zone "kajuhome.com" IN {
    type を slaveに指定
    type slave;
    マスタサーバのIPアドレスを指定
    masters { 192.168.1.5};
    スレーブ用のゾーンファイル名
    file "kajuhome.com.slave.db";
};
// 逆引きゾーンの指定(説明は正引きに同じ)
zone "1.168.192.in-addr.arpa" IN {
    type slave;
    masters { 192.168.1.5};
    file "1.168.192.in-addr.arpa.slave.db";
};

マスタ側の「/etc/resolv.conf」内にスレーブサーバのIPアドレスを追加します。

# vi /etc/resolv.conf
nameserver 192.168.1.5
nameserver 192.168.1.6


備考)DHCPサーバを構築してクライアントにスレーブサーバも通知したい場合は、
DHCPサーバ設定ファイル「/etc/dhcpd.conf」の「option domain-name-servers」に、
サーバのIPを","カンマで区切り追加します。
# vi /etc/dhcpd.conf
option domain-name-servers 192.168.1.5 , 192.168.1.6;

digコマンドによるDNSゾーン転送の確認 [ネットワーク]

スレーブサーバから以下のコマンドでゾーン転送の可否を確認できる。

 dig @マスターサーバのIPアドレス example.jp axfr

example.jp はゾーン名

スレーブの設定方法

DNSゾーン転送をslave側から強制実施
rndc retransfer ckenko25.jp

ゾーン情報を変更した時にスレーブに通知される条件

正引きゾーンと逆引きゾーンのシリアル番号を増番しないとだめ

スレーブゾーンファイルの場所

スレーブゾーンファイルは/var/cache/bind内に作られる

関連広告記事
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク