0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NTT-PCのVPSと自宅DNSで、DNSのスレーブ・マスタを構成する

Last updated at Posted at 2019-10-16

前回まで
自宅にあるサーバ類を、ipv6で外部公開しようと思うが、PUBLICに公開するのではなく、セキュアな自分専用のDNSを作り上げたい。

PLAN:ゾーン転送

  • VPSをDNSのスレーブとし、自宅DNSをマスタとして構成する。平文のゾーン情報を起きたくないのもあるけど、今仕事でやっていることなので、POCも兼ねて。
  • 自宅はipv6プラスで、PORT53を公開することができないので、許可範囲内の別PORTを使う。
  • 外部のDNSは、DNS問合はデフォルトポート(53)とし、ゾーン転送は上記の53ではないPORT(本事例では、11111)で行う。

PLAN:bind設定

  • VPSにあるslaveのDNSは、キャッシュサーバとして動作させるとともに、自分勝手ドメインの未公認権威サーバ(slave)とする。
  • 自分勝手ドメインのmasterは、前述の通り自宅DNS。

設定例

  1. master側のDNS
  2. slave側のDNS
  3. 自宅HOME-GWのNAPT(ポートフォワード)
  4. その他ハマりポイント
  5. ゾーン情報の更新

1.master側

/etc/named.conf
# master側(ipv6+のHGW内部)
options {
        listen-on port 11111 { any; };

zone "myzone"     {
    type master;
    file "/etc/named/db.myzone";
    allow-transfer  { www.xxx.yyy.zzz; };
    also-notify     { www.xxx.yyy.zzz; };
};

2.slave側

/etc/named.conf
# slave側(VPSサーバ)
options {
    listen-on port 53 { any; };

zone "myzone"     {
    type            slave;
    file            "/var/named/slaves/sv.myzone";
    masters         PORT 11111 { aaa.bbb.ccc.ddd; };
    allow-transfer  { none; }; // 再転送は禁止
 };
  • aaa.bbb.ccc.dddはmaster(自宅HOME-GWのグローバルアドレス)のIPアドレス

3.HOME-GWの設定

masterで公開するPORT(上記例では 11111)のフォワード先を、自宅DNS(プライベートアドレス)に設定する。tcp,udpの両方を設定。

4.その他ハマりポイント

直接のDNS設定ではないが、ハマったこと。

  • fiewalld. 特にmaster側(自宅DNS)はデフォルトではないPORTを開けるので。
  • FWの許可。HOME-GWの後ろに置いたFWの許可もれ。
  • slave側のゾーンファイルの置き場所。bindのログ(named.run)を見たら、permisson deniedとかになっていた。ディレクトリ権限を設定したもだめ。結局、ディレクトリを変更しOK。
  • /etc/named/sv.myzone はゾーン転送がNG。スレーブ側のデフォルト /var/named/slaves/sv.myzone に変更したらOKになった。

5.ゾーン情報の更新

マスタ側でゾーン情報を変更し、スレーブと同期する。
ゾーン「myzone」を更新する例

(1). ゾーン情報の更新

ゾーン情報を更新する。SOAのSerialを更新(増加)すること。

/etc/named/db.myzone
@ IN  SOA ns0.myzone. postmaster.myzone. (
     2019102701   ; Serial
            24h   ; Refresh スレーブサーバが更新の有無をチェックする周期

(2). 更新したゾーン情報をリロード:マスタ

# rndc reload myzone

(3). マスタ側から更新

マスタからスレーブに更新を通知し、同期する。

# rndc notify myzone

(4). スレーブ側から更新

スレーブ側からゾーン情報を取得し、同期する。

# rndc retransfer myzone

ゾーン転送のシーケンス

master側からnotifyをしてゾーン転送する際の、通信プロトコルを調べた結果。自宅側はゾーン転送に使うPORTを、tcp,udpとも開ける必要がある。

master側から nofity した場合

master
自宅
direction slave
VPS
what
*/tcp -> 53/tcp notify
*/tcp <- 53/tcp notify*-
11111/udp <- **/udp
11111/udp -> **/udp
11111/tcp <- ****/tcp SYN
11111/tcp -> ****/tcp SYN+ACK
11111/tcp <- ****/tcp ACK
11111/tcp <-> ****/tcp 転送

slave側から retransfer した場合

master
自宅
direction slave
VPS
what
11111/udp <- **/udp
11111/udp -> **/udp
11111/tcp <- ****/tcp SYN
11111/tcp -> ****/tcp SYN+ACK
11111/tcp <- ****/tcp ACK
11111/tcp <-> ****/tcp 転送

ただのDNS-query(クライアント〜リゾルバ)

client direction DNS-server what
*/udp -> 53/udp A? query.fqdn.jp.
*/udp <- 53/udp A www.xxx.yyy.zzz

この時、リゾルははルートから再帰問合をガツガツやっている。

slave-DNSをキャッシュサーバとして動作させる設定

/etc/named.conf
# 
    recursion yes;
    allow-recursion { any; };
#
    forward    only;
    forwarders { 8.8.8.8; };

resursion yes
●キャッシュサーバとして動作させるので、yes

forward only
●only : キャッシュサーバとするが、自分では何もせず他に任せたい。フォワーダから回答できないときは、エラー
○first : フォワーダから回答がない場合は、自分で反復問合をする。?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?