BINDを使ってLAN向けDNSサーバを作ろう!
ここでは、BINDを使ったLAN内用DNSの構築手順について掲載してあります。
非固定IPの場合、外部向けのDNSを立てることができないので、今回はLAN内でのみ参照をするDNSサーバを構築します。
尚、説明で使用しているドメイン"mhserv.info"やネットワークアドレス"192.168.100"は各自の環境に合わせて変更してください。
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@rl8 ~]# dnf -y install bind
インストール済み:
bind-32:9.11.36-5.el8_7.2.x86_64
完了しました!
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.100.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@rl8 ~]# vi /var/named/named.mhserv.info.zone
zone "mhserv.info" {
type master;
file "mhserv.info.db";
};
zone "100.168.192.in-addr.arpa" {
type master;
file "100.168.192.in-addr.arpa.db";
};
LAN内向け正引きゾーンDBの作成
ドメインからIPアドレスを参照する正引きゾーンの一覧を作成します。
ドメインの後ろにピリオド"."が付くので、忘れずに記入してください。
設定の内容についての詳しい説明はWebOS Goodies様の記事がとても参考になります。
[root@rl8 ~]# vi /var/named/mhserv.info.db
$TTL 86400 @ IN SOA mhserv.info. root.mhserv.info.( 2023030401 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS mhserv.info. IN MX 10 mhserv.info. @ IN A 192.168.100.201 * IN A 192.168.100.201
LAN内向け逆引きゾーンDBの作成
続いて、IPアドレスからドメインを参照する逆引きゾーンの一覧を作成します。
こちらもドメインの後ろにピリオド"."が付くので、忘れずに記入してください。
[root@rl8 ~]# vi /var/named/100.168.192.in-addr.arpa.db
$TTL 86400 @ IN SOA mhserv.info. root.mhserv.info.( 2023030401 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS mhserv.info. 201 IN PTR mhserv.info.
BINDの起動
設定が終わったら、BINDを起動します。
[root@rl8 ~]# systemctl enable --now named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
[root@rl8 ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor prese> Active: active (running) since Sat 2023-03-04 21:52:22 JST; 9s ago Process: 2942 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bi> Process: 2957 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (co> Process: 2954 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "y> Main PID: 2959 (named) Tasks: 4 (limit: 11387) Memory: 11.3M CGroup: /system.slice/named.service mq2959 /usr/sbin/named -u named -c /etc/named.conf
サーバ機のDNSを変更
サーバのDNSを自分自身を参照するように変更します。
まずは、ネットワークアダプタの名前を確認しましょう。
[root@rl8 ~]# nmcli device
DEVICE TYPE STATE CONNECTION
ens18 ethernet 接続済み ens18
lo loopback 管理無し --
今回は"接続済み"になっている"ens18"が対象のネットワークになります。
DNSサーバの割り振りを以下の通り変更します。
- プライマリ : 127.0.0.1(自分)
- セカンダリ : 192.168.100.1(ルーター)
[root@rl8 ~]# nmcli connection modify ens18 ipv4.dns "127.0.0.1 192.168.100.1"
設定を反映するため、ネットワークマネージャーを再起動します。
[root@rl8 ~]# systemctl restart NetworkManager
[root@rl8 ~]# nmcli device show ens18
GENERAL.DEVICE: ens18 GENERAL.TYPE: ethernet GENERAL.HWADDR: 46:99:ED:D2:30:64 GENERAL.MTU: 1500 GENERAL.STATE: 100 (接続済み) GENERAL.CONNECTION: ens18 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveC> WIRED-PROPERTIES.CARRIER: オン IP4.ADDRESS[1]: 192.168.100.201/24 IP4.GATEWAY: 192.168.100.1 IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 192.168.100.1, mt> IP4.ROUTE[2]: dst = 192.168.100.0/24, nh = 0.0.0.0, m> IP4.DNS[1]: 127.0.0.1 IP4.DNS[2]: 192.168.100.1
動作確認
それでは、DNSが正しく設定ができているかどうか確認しましょう。
まずは正引きから。
[root@rl8 ~]# dig mhserv.info
; <<>> DiG 9.11.36-RedHat-9.11.36-5.el8_7.2 <<>> -x 192.168.100.201 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59178 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 15ce89c9707bdad7980590ca6403455b054affa09ab5aa3c (good) ;; QUESTION SECTION: ;mhserv.info. IN A ;; ANSWER SECTION: mhserv.info. 86400 IN A 192.168.100.201 ;; AUTHORITY SECTION: mhserv.info. 86400 IN NS mhserv.info. ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: 土 3月 04 22:19:23 JST 2023 ;; MSG SIZE rcvd: 98
続いて逆引きです。
[root@rl8 ~]# dig -x 192.168.100.201
; <<>> DiG 9.11.36-RedHat-9.11.36-5.el8_7.2 <<>> -x 192.168.100.201 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59178 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 54842b667af3c5453d7e6f5d640345d577c376e967b06271 (good) ;; QUESTION SECTION: ;201.100.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 201.100.168.192.in-addr.arpa. 86400 IN PTR mhserv.info. ;; AUTHORITY SECTION: 100.168.192.in-addr.arpa. 86400 IN NS mhserv.info. ;; ADDITIONAL SECTION: mhserv.info. 86400 IN A 192.168.100.201 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: 土 3月 04 22:21:25 JST 2023 ;; MSG SIZE rcvd: 140
それぞれ、設定したIPアドレスとホスト名が表示されればOKです。
LAN内でDNSサーバを使用する
ファイアウォールの設定
他の端末からアクセスできるよう、ファイアウォールの設定をしておきます。
[root@rl8 ~]# firewall-cmd --permanent --add-service=dns
success
[root@rl8 ~]# firewall-cmd --reload
success
WindowsでのDNSの設定
Windows機でネットワークインターフェースにDNSの設定を行います。
動作確認
DNSサーバを設定したWindows機で、IPアドレスやドメインが引けるかを確認します。
今回新しく登場したコマンド
- dig
[広告]
トップページ
Rocky Linux 8
○インストール準備
○仮想化準備(VMware)
○仮想化準備(Hyper-V)
○仮想化準備(Proxmox)
○基本操作
○導入
○セキュリティ対策
○Dynamic DNS
○NTPサーバ
○データベース
○WEBサーバ
○FTPサーバ
○メールサーバ
○DNSサーバ
○ブログシステム
○オンラインストレージ
○その他