FreeBSDでDNSサーバーを構成する

画像

多くの場合、取得したDNS名に対する外部ユーザーのリクエストに対応できるだけでなく、ローカルネットワーク上のユーザーリクエストにも対応できる独自のDNSサーバーを導入するという疑問が生じます。 このようなタスクは、FreeBSD OSを使用して比較的簡単に解決できます。

チャレンジ:

FreeBSDを実行しているバインドDNSサーバーを設定して、内部ネットワーク上のクライアント要求を処理し、セカンダリDNSサーバーに転送する機能を使用して、直接および逆DNSゾーンを処理します。 サーバー上のすべてのゾーンのタイプはマスターです。つまり、このサーバーはすべてのゾーンに対して信頼できる回答を提供します。

与えられた:

1. DNSサーバーの内部IPアドレスは192.168.0.1/24です
2. DNSサーバーの外部IPアドレスは10.10.10.1/24です。
3.セカンダリサーバーのIPアドレスは10.10.10.2/24です。
4.直接DNSゾーン-test.dom
5.逆引きDNSゾーン-10.10.10.in-addr.arpa

解決策:

1. /etc/rc.confファイルに、システム起動時にDNSサーバーの開始を登録します

named_enable=”YES”

2.構成ファイル/etc/namedb/named.confを次の形式にします。

acl ACCESS { 127.0.0.1; 192.168.0.0/24; 10.10.10.0/24; };

options {
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
listen-on { 127.0.0.1; 10.10.10.1; };
allow-recursion { ACCESS; };
allow-transfer { 10.10.10.2; };
transfer-source 10.10.10.1;
version "Bind DNS Server";
};

logging {
category lame-servers { null; };
};

zone "." {
type hint;
file "named.root";
};

zone "localhost" {
type master;
file "master/localhost";
};

zone "0.0.127.in-addr.arpa" {
type master;
file "master/0.0.127.in-addr.arpa";
};

zone "test.dom" {
type master;
file "master/test.dom";
allow-query { any; };
};

zone "10.10.10.in-addr.arpa" {
type master;
file "master/10.10.10.in-addr.arpa";
allow-query { any; };
};


どこで:

acl -ACCESSという名前のアクセスリストと、DNSサーバーの使用が許可されているネットワークの説明。
ディレクトリ -作業ディレクトリのバインド
pid-file -PIDファイルの配置
dump-file -DUMPファイルの配置
statistics- file-統計ファイルの配置
listen-on -Bindがリクエストを「リッスン」するインターフェースのIPアドレスを指定します
allow-recursion-再帰的なサーバー要求が許可されるアクセスリストを指定します
allow-transfer-ゾーンの転送先のセカンダリDNSサーバーのIPアドレスを指定します
transfer- source-ゾーン転送を許可するIPインターフェースを指定します
version -DNSサーバーのバージョンを指定します
logging-ロギング制限を指定します
ゾーン「。」 -ルートDNSサーバーを記述するゾーンは、操作に必要です。 /etc/namedb/named.rootに保存されます
ゾーン「localhost」 -ローカルサーバーを記述する直接ゾーンが操作に必要です。 / etc / namedb / master / localhostに保存
zone "0.0.127.in-addr.arpa" -ローカルサーバーを記述する逆ゾーンは、操作に必要です。 /etc/namedb/master/0.0.127.in-addr.arpaに保存されます
zone "test.dom" -直接ゾーン。 これは/etc/namedb/master/test.domファイルに保存されます。ゾーンのマスターコピーはallow-queryを使用してサーバーに保存されるため、全員がポーリングできるようにします。
ゾーン「10.10.10.in-addr.arpa」は逆ゾーンです。 ファイル/etc/namedb/master/10.10.10.in-addr.arpaに保存されます。 ゾーンのマスターコピーはallow-queryを使用してサーバーに保存されるため、誰もがポーリングできるようにします。

3.ゾーンファイルを構成する

3.1。 ゾーン「。」 -デフォルトで残す

3.2。 ゾーン「localhost」 。 構成ファイル/ etc / namedb / master / localhostは 、次の形式に縮小されます。

$TTL 3600

@ IN SOA localhost. root.localhost. (
2009070601 ; Serial
3600 ; Refresh
600 ; Retry
2419200 ; Expire
86400 ) ; Minimum

IN NS localhost.

IN A 127.0.0.1


3.3。 ゾーン「0.0.127.in-addr.arpa」 構成ファイル/etc/namedb/master/0.0.127.in-addr.arpaは 、次の形式に縮小されます。

$TTL 3600

@ IN SOA localhost. root.localhost. (
2009070601 ; Serial
3600 ; Refresh
600 ; Retry
2419200 ; Expire
86400 ) ; Minimum

IN NS localhost.

1 IN PTR localhost.


3.4。 ゾーン「test.dom」 。 構成ファイル/etc/namedb/master/test.domは 、次の形式に縮小されます。

$TTL 3600
@ IN SOA ns1.test.dom. hostmaster.test.dom. (
2009082801 ; Serial
3600 ; Refresh
600 ; Retry
2419200 ; Expire
86400 ) ; Minimum

IN NS ns1.test.dom.
IN NS ns2.test.dom.

@ IN A 10.10.10.1

ns1 IN A 10.10.10.1
ns2 IN A 10.10.10.2


3.5。 ゾーン「10.10.10.in-addr.arpa」 構成ファイル/etc/namedb/master/10.10.10.in-addr.arpaは 、次の形式に縮小されます。

$TTL 3600
@ IN SOA ns1.test.dom. hostmaster.test.dom. (
2009082801 ; Serial
3600 ; Refresh
600 ; Retry
2419200 ; Expire
86400 ) ; Minimum

IN NS ns1.test.dom.
IN NS ns2.test.dom.

1 IN PTR ns1.test.dom.
2 IN PTR ns2.test.dom.


たとえば、test.domゾーンの上から下の場合:

-秒単位の期間を示す時間、レコードをキャッシュに保存する期間。
-@-ゾーン名-置換文字、IN-レコードクラスインターネット-デフォルト値、SOA-ゾーンのグローバル変数の説明、ns1.test.dom。 このゾーンのDNSサーバーの名前、hostmaster.test.domです。 -このゾーンのDNSサーバー管理者の住所。 @記号の代わりに、「。」記号が区切り文字として使用されます
-レコード変更のシリアル番号。 セカンダリサーバーによってゾーンを再読み取りするには、変更するたびに、最後の数字を1増やす必要があります。
-セカンダリDNSサーバーがゾーンの読み取りを試行するまでの時間
-リフレッシュで指定された期間中にセカンダリサーバーがプライマリDNSサーバーに接続できなかった場合に、セカンダリサーバーがゾーンの再読み取りを試みるまでの時間
-これらのゾーンがこのサーバーに対して権限を失った時間を示します。 セカンダリサーバーによって使用されます。
-キャッシュにゾーンデータを保存する有効期間を示す古い属性。
-このゾーンのプライマリDNSサーバーのDNSの表示
-このゾーンのセカンダリDNSサーバーの表示
-このゾーンのノードの説明

4.次のコマンドを使用してDNSサーバーを管理します。

freebsd# /etc/rc.d/named start | stop | restart | status

オプション:

最も一般的に使用されるDNSレコードのタイプ:

A-ネットワーク内のノードのIPアドレスへの書き込み
NS -DNSサーバー上の記録
CNAME-ノードの正規名の記録
PTR-逆ゾーンで使用されるドメイン名へのポインタを記録
MX-メールルーティングを決定するためのレコード

パフォーマンスをテストするには、 dignslookupなどのツールを使用できます

掘り出しの使用例:

freebsd# dig @localhost test.dom ANY

コマンドの意味-localhostサーバーを使用して、test.domゾーンにANYタイプのエントリを表示する

; <<>> DiG 9.4.3-P2 <<>> @localhost test.dom ANY
; (2 servers found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35560
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 10, AUTHORITY: 0, ADDITIONAL: 2

;; QUESTION SECTION:
;test.dom. IN ANY

;; ANSWER SECTION:
test.dom. 3600 IN A 10.10.10.1
test.dom. 3600 IN SOA ns1.test.dom. hostmaster.test.dom. 2009082801 3600 600 2419200 86400
test.dom. 3600 IN NS ns1.test.dom.
test.dom. 3600 IN NS ns2.test.dom.

;; ADDITIONAL SECTION:
ns1.test.dom. 3600 IN A 10.10.10.1
ns2.test.dom. 54886 IN A 10.10.10.2

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Aug 30 23:04:41 2009
;; MSG SIZE rcvd: 330


nslookupの使用例:

freebsd# nslookup
> test.dom
Server: 127.0.0.1
Address: 127.0.0.1#53

Name: test.dom
Address: 10.10.10.1
>


私の意見では、診断にdigを使用する方がより柔軟ですが、nslookupの使用方法を完全に知っている人は同じことを言うでしょう。 DNSを設定するための素晴らしいガイドもお勧めします

Source: https://habr.com/ru/post/J68350/


All Articles