BINDを使ってLAN向けDNSサーバを作ろう!
ここでは、BINDを使ったLAN内用DNSの構築手順について掲載してあります。
非固定IPの場合、外部向けのDNSを立てることができないので、今回はLAN内でのみ参照をするDNSサーバを構築します。
尚、説明で使用しているドメイン"mhserv.info"やネットワークアドレス"192.168.200"は各自の環境に合わせて変更してください。
DNSとは…?
ブラウザで「http://142.250.207.4/」に接続すると、一体どこに繋がるでしょうか?
試してみると分かりますが、これはGoogleのトップページに繋がります。しかし、これでは覚えづらい、分かりづらい、どこに繋がるか分からず不安、と良い事なしですよね。
そこで、「http://www.google.com/」なんてURL(名前:ドメイン)を付けてあげます。このURLを見れば、どこに繋がるかだいたい分かりますね。
このように、IPアドレスとドメインを相互変換するシステムのことをDNS(Domain Name System)といいます。
BINDとは…?
Berkeley Internet Name Domainの略で、世界で最も普及しているDNSサーバです。
BINDのインストール
BINDと関連のパッケージをインストールします。
[root@al9 ~]# dnf -y install bind
Installed:
bind-32:9.16.23-14.el9_3.x86_64 bind-dnssec-doc-32:9.16.23-14.el9_3.noarch
bind-dnssec-utils-32:9.16.23-14.el9_3.x86_64
bind-libs-32:9.16.23-14.el9_3.x86_64 bind-license-32:9.16.23-14.el9_3.noarch
bind-utils-32:9.16.23-14.el9_3.x86_64 fstrm-0.6.1-3.el9.x86_64
libmaxminddb-1.5.2-3.el9.x86_64 libuv-1:1.42.0-1.el9.x86_64
protobuf-c-1.3.3-13.el9.x86_64 python3-bind-32:9.16.23-14.el9_3.noarch
Complete!
BINDの設定
BINDの設定ファイルを編集します。
赤字の部分を追記しましょう。
[root@co ~]# vi /etc/named.conf
options { # listen-on port 53 { 127.0.0.1; }; # listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; localnets; }; # 追記ここから allow-recursion { localhost; localnets; }; allow-transfer { localhost; localnets; }; forwarders { 192.168.200.1;(ルータのアドレス) }; version "unknown"; # 追記ここまで recursion yes; dnssec-enable yes; dnssec-validation yes; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; include "/etc/crypto-policies/back-ends/bind.config"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; # 追記ここから include "/var/named/named.mhserv.info(取得したドメイン).zone"; # 追記ここまで };
LAN内向けゾーン定義ファイルの作成
BINDが参照するLAN内でのゾーン定義ファイルを作成し、以下を入力します。
赤字の部分は、ご自身の環境(ドメインやIPアドレス)に合わせてください。
[root@al9 ~]# vi /var/named/named.mhserv.info.zone
zone "mhserv.info" {
type master;
file "mhserv.info.db";
};
zone "200.168.192.in-addr.arpa" {
type master;
file "200.168.192.in-addr.arpa.db";
};
LAN内向け正引きゾーンDBの作成
ドメインからIPアドレスを参照する正引きゾーンの一覧を作成します。
ドメインの後ろにピリオド"."が付くので、忘れずに記入してください。
設定の内容についての詳しい説明はWebOS Goodies様の記事がとても参考になります。
[root@al9 ~]# vi /var/named/mhserv.info.db
$TTL 86400 @ IN SOA mhserv.info. root.mhserv.info.( 2024011201 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS mhserv.info. IN MX 10 mhserv.info. @ IN A 192.168.200.242 * IN A 192.168.200.242
LAN内向け逆引きゾーンDBの作成
続いて、IPアドレスからドメインを参照する逆引きゾーンの一覧を作成します。
こちらもドメインの後ろにピリオド"."が付くので、忘れずに記入してください。
[root@al9 ~]# vi /var/named/200.168.192.in-addr.arpa.db
$TTL 86400 @ IN SOA mhserv.info. root.mhserv.info.( 2024011201 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS mhserv.info. 242 IN PTR mhserv.info.
BINDの起動
設定が終わったら、BINDを起動します。
[root@al9 ~]# systemctl enable --now named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
[root@al9 ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; preset: disabled) Active: active (running) since Fri 2024-01-12 17:19:47 JST; 10s ago Process: 5106 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS) Process: 5108 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 5109 (named) Tasks: 6 (limit: 23048) Memory: 24.6M CPU: 239ms CGroup: /system.slice/named.service mq5109 /usr/sbin/named -u named -c /etc/named.conf
サーバ機のDNSを変更
サーバのDNSを自分自身を参照するように変更します。
まずは、ネットワークアダプタの名前を確認しましょう。
[root@al9 ~]# nmcli device
DEVICE TYPE STATE CONNECTION
ens18 ethernet connected ens18
lo loopback connected (externally) lo
今回は"接続済み"になっている"ens18"が対象のネットワークになります。
DNSサーバの割り振りを以下の通り変更します。
- プライマリ : 127.0.0.1(自分)
- セカンダリ : 192.168.200.1(ルーター)
[root@al9 ~]# nmcli connection modify ens18 ipv4.dns "127.0.0.1 192.168.200.1"
設定を反映するため、ネットワークマネージャーを再起動します。
[root@al9 ~]# systemctl restart NetworkManager
[root@al9 ~]# nmcli device show ens18
GENERAL.DEVICE: ens18
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 0A:1D:E0:81:51:E4
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: ens18
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.200.242/24
IP4.GATEWAY: 192.168.200.1
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 192.168.200.1, mt = 100
IP4.ROUTE[2]: dst = 192.168.200.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]: 127.0.0.1
IP4.DNS[2]: 192.168.200.1
IP6.GATEWAY: --
動作確認
それでは、DNSが正しく設定ができているかどうか確認しましょう。
まずは正引きから。
[root@al9 ~]# dig mhserv.info
; <<>> DiG 9.16.23-RH <<>> mhserv.info ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 11926 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 765ce62880df9bc00100000065a0f704e901565d827cafc4 (good) ;; QUESTION SECTION: ;mhserv.info. IN A ;; ANSWER SECTION: mhserv.info. 86400 IN A 192.168.200.242 ;; AUTHORITY SECTION: mhserv.info. 86400 IN NS mhserv.info. ;; Query time: 418 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jan 12 17:23:32 JST 2024
;; MSG SIZE rcvd: 68
続いて逆引きです。
[root@al9 ~]# dig -x 192.168.200.242
; <<>> DiG 9.16.23-RH <<>> -x 192.168.200.242 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 64605 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: e4d1ce34b5bebea30100000065a0f765f9f0fd5e77073806 (good) ;; QUESTION SECTION: ;242.200.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 242.200.168.192.in-addr.arpa. 86400 IN PTR mhserv.info. ;; AUTHORITY SECTION: 200.168.192.in-addr.arpa. 86400 IN NS mhserv.info. ;; ADDITIONAL SECTION: mhserv.info. 86400 IN A 192.168.200.242 ;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jan 12 17:25:09 JST 2024
;; MSG SIZE rcvd: 140
それぞれ、設定したIPアドレスとホスト名が表示されればOKです。
LAN内でDNSサーバを使用する
ファイアウォールの設定
他の端末からアクセスできるよう、ファイアウォールの設定をしておきます。
[root@al9 ~]# firewall-cmd --permanent --add-service=dns
success
[root@al9 ~]# firewall-cmd --reload
success
WindowsでのDNSの設定
Windows機でネットワークインターフェースにDNSの設定を行います。
動作確認
DNSサーバを設定したWindows機で、IPアドレスやドメインが引けるかを確認します。
今回新しく登場したコマンド
- dig
[広告]
トップページ
AlmaLinux 9
○インストール準備
○仮想化準備(VMware)
○仮想化準備(Hyper-V)
○仮想化準備(Proxmox)
○基本操作
○導入
○セキュリティ対策
○Dynamic DNS
○NTPサーバ
○データベース
○WEBサーバ
○FTPサーバ
○メールサーバ
○DNSサーバ
○ブログシステム
○その他