192.jpゾーンを立てました。
- VPS内にプライマリDNSサーバとしてNSDを立て、ゾーンの編集など管理を行う
- さくらインターネットのネームサーバをセカンダリサーバにし、一般に公開する
DNSの設定
VPS内に構築するDNSは外部から見えないため、よく使われるBINDでも良いのですが、ものは試しでNSDを使うことにしました。
NSDはFedoraリポジトリに置かれているため、DNFで入れました。
$ sudo dnf install nsd
その上で、ゾーンファイルとゾーン設定ファイルを作成します。ここではゾーン設定ファイルを示すのみで、ゾーンファイルは省略します。
$ cat /etc/nsd/conf.d/192.jp.zone.conf
zone:
name: 192.jp
zonefile: /etc/nsd/conf.d/192.jp.zone
notify: 210.188.224.9 NOKEY # ns1.sakura.ad.jp
notify: 210.224.172.13 NOKEY # ns2.sakura.ad.jp
provide-xfr: 210.188.224.9 NOKEY # ns1.sakura.ad.jp
provide-xfr: 210.224.172.13 NOKEY # ns2.sakura.ad.jp
outgoing-interface: 153.127.66.42
ゾーン更新時の通知先を指定するnotify、および許可するゾーン転送サーバを指定するprivide-xfrで指定しているIPアドレスはドキュメントに書かれているものになります。
※ プライマリネームサーバにて弊社ネームサーバ(210.188.224.9 / 210.224.172.13)からの問い合わせを許可するように設定してください。
ネームサーバ利用申請 – さくらのサポート情報
セカンダリDNSサーバのみ公開
続いてVPS内のDNSサーバを一般に公開せず、セカンダリDNSサーバのみアクセス可能にします。Fedora 32での標準的なパケットフィルタであるFirewalldを使って対応しました。
まずIPアドレスベースで通信の許可を設定します。Firewalldではzoneを分けることで設定しますので、dns-secondaryというゾーンを作成し、送信元IPアドレスを設定しました。これによりセカンダリDNSサーバからの問い合わせ通信はdns-secondaryで処理されます。そしてこのゾーンにdnsサービスの許可を指定します。具体的には次のコマンドを実行しています。
$ sudo firewall-cmd --permanent --new-zone=dns-secondary
$ sudo systemctl reload firewalld
$ sudo firewall-cmd --zone=dns-secondary --add-source=210.188.224.9
$ sudo firewall-cmd --zone=dns-secondary --add-source=210.224.172.13
$ sudo firewall-cmd --zone=dns-secondary --add-service=dns
ここまでの変更は直ちに反映されますので、この状態で次の確認を行いました。
- セカンダリDNSサーバからのDNS問い合わせへ応答していること(tcpdumpを使って確認)
- ほかのホストからDNS応答がないこと(手元から確認)
接続の確認が終わったら設定ファイルへ書き出し、サーバの再起動以降も通信許可設定が適用される設定とします。
$ sudo firewall-cmd --runtime-to-permanent
以上で設定を終えました。
Leave a Reply