興味本位と、DNSについて理解を深めたいということで、自宅のローカルネットワーク内でDNSサーバーを立ててみた。
OS:Ubuntu20.04
DNSサーバーのIPアドレス:192.168.2.254
ドメイン名:dyna-local(適当)
BINDとは、DNSサーバーソフトウェア。
shellsudo apt install bind9
/etc/bind/
以下に設定ファイルが生成されている。
/etc/bind/named.conf
を確認すると、他のファイルがincludeされている。
shellinclude "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
今回は、named.conf.options
と、named.conf.default-zones
ファイルを編集する。
named.conf
ファイルは以下3つのセクションで構成されている。
BINDサーバーの基本的な動作を設定。
BINDのログ設定。ログのレベルや保存先、フォーマットなどを指定可能。
各ドメインに関するゾーン情報を設定。
以下のように設定する。
shelloptions {
directory "/var/cache/bind";
// クエリを受け入れるクライアントのIPアドレス範囲
allow-query { localhost; 192.168.1.0/24; };
// 自前で名前解決できないときの転送先
forwarders { 192.168.2.1; };
};
以下のように設定する。
shell// dyna-local の正引きの設定
zone "dyna-local.com" {
type master;
file "dyna-local.com.zone";
};
// dyna-local の逆引きの設定
zone "2.168.192.in-addr.arpa" {
type master;
file "192.168.2.zone";
};
// 他に追加したいドメインがあれば同様に追記
// 例:dyna-local.xyz の正引きの設定
zone "dyna-local.xyz" {
type master;
file "dyna-local.xyz.zone";
};
dyna-local.zone
を以下のように設定する。
shell$TTL 3600
@ IN SOA dyna-local.com. root.dyna-local.com. (
2024050401 ; Serial
3H ; Refresh
15M ; Retry
1W ; Expire
1H ) ; Negative cache TTL
; Name Servers
@ IN NS dyna-local.com.
; A Records
@ IN A 192.168.2.254
tv IN A 192.168.2.253
192.168.2.zone
を以下のように設定する。
shell$TTL 3600
@ IN SOA dyna-local.com. root.dyna-local.com. (
2024050401 ; Serial
3H ; Refresh
15M ; Retry
1W ; Expire
1H ) ; Negative cache TTL
; Name Servers
@ IN NS dyna-local.com.
; PTR Records
254 IN PTR dyna-local.com.
253 IN PTR tv.dyna-local.com.
ゾーン設定の確認。
shell$ named-checkzone 192.168.2.in-addr.arpa /etc/bind/192.168.2.zone
zone 192.168.2.in-addr.arpa/IN: loaded serial 2024050401
OK
$ named-checkzone dyna-local.com /etc/bind/dyna-local.com.zone
zone dyna-local.com/IN: loaded serial 2024050401
OK
構文の確認。
shellnamed-checkconf
shell# もし起動済みならば
sudo systemctl restart bind9 (or named)
# もし起動していなければ
sudo systemctl start bind9 (or named)
/etc/resolv.conf
にネームサーバーのIPアドレスを追加(以下例)。もともと書かれていたネームサーバーのIPアドレスは消さなくても良い。この編集は同一LAN内で、このネームサーバーを利用するクライアント全てで必要。
ローカルDNSはパブリックDNSよりも上に書かないとだめかもしれません。
shellnameserver 192.168.2.254
以下の手順で動作確認を行う。
以下のようにコマンドを実行し、ANSWER SECTION
が得られればOK。
shell$ dig @192.168.2.254 dyna-local.com
~~~
;; QUESTION SECTION:
;dyna-local.com. IN A
;; ANSWER SECTION:
dyna-local.com. 3600 IN A 192.168.2.254
~~~
shell$ dig @192.168.2.254 tv.dyna-local.com
~~~
;; QUESTION SECTION:
;tv.dyna-local.com. IN A
;; ANSWER SECTION:
tv.dyna-local.com. 3600 IN A 192.168.2.109
~~~
IPアドレスが 192.168.2.254
と 192.168.2.253
のサーバーで以下のコマンドを実行し、Webサーバーを立ち上げる。
shellpython3 -m http.server
dyna-local.com
と tv.dyna-local.com
にアクセスし、サーバーが起動できていることを確認。