BINDを使ってLAN向けDNSサーバを作ろう!
ここでは、BINDを使ったLAN内用DNSの構築手順について掲載してあります。
非固定IPの場合、外部向けのDNSを立てることができないので、今回はLAN内でのみ参照をするDNSサーバを構築します。
尚、説明で使用しているドメイン"mhserv.mydns.jp"やネットワークアドレス"192.168.10"は各自の環境に合わせて変更してください。
※CentOS 7のサポートは2024年6月をもって終了していますが、旧コンテンツとしてこちらのページは残しておきます。
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@co7 ~]# yum -y install bind
インストール:
bind.x86_64 32:9.11.4-26.P2.el7_9.16
依存性関連をインストールしました:
GeoIP.x86_64 0:1.5.0-14.el7
audit-libs-python.x86_64 0:2.8.5-4.el7
bind-libs.x86_64 32:9.11.4-26.P2.el7_9.16
bind-libs-lite.x86_64 32:9.11.4-26.P2.el7_9.16
bind-license.noarch 32:9.11.4-26.P2.el7_9.16
checkpolicy.x86_64 0:2.5-8.el7
geoipupdate.x86_64 0:2.5.0-2.el7
libcgroup.x86_64 0:0.41-21.el7
libsemanage-python.x86_64 0:2.5-14.el7
policycoreutils-python.x86_64 0:2.5-34.el7
python-IPy.noarch 0:0.75-6.el7
python-ply.noarch 0:3.4-11.el7
setools-libs.x86_64 0:3.3.8-4.el7
完了しました!
BINDの設定
[root@co7 ~]# 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@co7 ~]# 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@co7 ~]# vi /var/named/mhserv.info.db
$TTL 86400 @ IN SOA mhserv.info. root.mhserv.info.( 2024070101 ; 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@co7 ~]# vi /var/named/100.168.192.in-addr.arpa.db
$TTL 86400 @ IN SOA mhserv.info. root.mhserv.info.( 2024070101 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS mhserv.info. 201 IN PTR mhserv.info.
BINDの起動
設定が終わったら、BINDを起動します。
[root@co7 ~]# systemctl enable --now named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@co7 ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled) Active: active (running) since 火 2024-07-02 22:01:09 JST; 9s ago Process: 1176 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS) Process: 1173 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) Main PID: 1178 (named) CGroup: /system.slice/named.service mq1178 /usr/sbin/named -u named -c /etc/named.conf
サーバ機のDNSを変更
サーバのDNSを自分自身を参照するように変更します。
まずは、ネットワークアダプタの名前を確認しましょう。
[root@co7 ~]# nmcli device
DEVICE TYPE STATE CONNECTION
eth0 ethernet 接続済み eth0
lo loopback 管理無し --
今回は"接続済み"になっている"eth0"が対象のネットワークになります。
DNSサーバの割り振りを以下の通り変更します。
- プライマリ : 127.0.0.1(自分)
- セカンダリ : 192.168.100.1(ルーター)
[root@co7 ~]# nmcli connection modify eth0 ipv4.dns "127.0.0.1 192.168.100.1"
設定を反映するため、ネットワークマネージャーを再起動します。
[root@co7 ~]# systemctl restart NetworkManager
[root@co7 ~]# nmcli device show eth0
GENERAL.DEVICE: eth0 GENERAL.TYPE: ethernet GENERAL.HWADDR: BC:24:11:8F:C7:79 GENERAL.MTU: 1500 GENERAL.STATE: 100 (接続済み) GENERAL.CONNECTION: eth0 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo 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, mt IP4.DNS[1]: 127.0.0.1 IP4.DNS[2]: 192.168.100.1
動作確認
それでは、DNSが正しく設定ができているかどうか確認しましょう。
[root@co7 ~]# yum -y install bind-utils
インストール:
bind-utils.x86_64 32:9.11.4-26.P2.el7_9.16
完了しました!
まずは正引きから。
[root@co7 ~]# dig mhserv.info
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> mhserv.info ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15279 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; 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: 火 7月 02 22:03:27 JST 2024 ;; MSG SIZE rcvd: 70
続いて逆引きです。
[root@co7 ~]# dig -x 192.168.100.201
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> -x 192.168.100.201 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54912 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; 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: 火 7月 02 22:04:27 JST 2024 ;; MSG SIZE rcvd: 112
それぞれ、設定したIPアドレスとホスト名が表示されればOKです。
LAN内でDNSサーバを使用する
ファイアウォールの設定
他の端末からアクセスできるよう、ファイアウォールの設定をしておきます。
[root@co7 ~]# firewall-cmd --permanent --add-service=dns
success
[root@co7 ~]# firewall-cmd --reload
success
WindowsでのDNSの設定
Windows機でネットワークインターフェースにDNSの設定を行います。
動作確認
DNSサーバを設定したWindows機で、IPアドレスやドメインが引けるかを確認します。
今回新しく登場したコマンド
- nmcli
- dig
[広告]
トップページ
CentOS 7
○準備
○仮想化準備(VMware)
○仮想化準備(Hyper-V)
○仮想化準備(Proxmox)
○基本操作
○導入
○セキュリティ対策
○Dynamic DNS
○NTPサーバ
○データベース
○WEBサーバ
○FTPサーバ
○メールサーバ
○DNSサーバ
○ブログシステム
○オンラインストレージ
○その他