1 views
実現する機能
外部から自宅サーバー「http://ufuso.dip.jp」にアクセスすると、プロバイダーから提供されているルーター(192.168.24.1)がちゃんと自宅サーバー(192.168.24.240)に繋いでくれますが、自宅のWindowsノートパソコン(192.168.24.3)から自宅サーバー「http://ufuso.dip.jp」にアクセスすると繋いでくれません。ドメインufuso.dip.jpがIPアドレス192.168.24.240と同じパソコンのものだよと教えてくれるDNSサーバー(BIND)が家庭内LAN内には無いからです。
そこで、自宅サーバーに自宅のWindowsノートパソコンやiPhone5sからアクセスできるように自宅用のDNSサーバー(内部DNSサーバー)を構築してIPアドレス(192.168.24.240)だけではなく、ufuso.dip.jpでもアクセスできるようにしました。
事前準備
※ieServer.Net(無料)やDynamic DO!.jp(無料)やお名前.com(有料)などからドメインを取得済であること
BIND導入手順
1 BINDインストール
[root@ufuso ~]# yum -y install bind ← bindインストール インストール: bind.x86_64 32:9.9.4-14.el7 完了しました! |
2 BIND設定
[root@ufuso ~]# echo OPTIONS="-4" >> /etc/sysconfig/named ← IPv4のみ有効にする(error (network unreachable) resolvingというエラーログの 出力抑止) [root@ufuso ~]# vi /etc/named.conf ← BIND設定ファイル編集 // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { #listen-on port 53 { 127.0.0.1; }; ← 行頭に#を追加して無効化 #listen-on-v6 port 53 { ::1; }; ← 行頭に#を追加して無効化 version "unknown"; ← bindのバージョン情報の非表示化 listen-on-v6 { none; }; 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; 192.168.24.0/24; }; ← サーバーと同じネット ワーク内からの問合せも許可 /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; forwarders{ 192.168.24.1; ← ルーター経由接続環境の場合なのでルーターのIP アドレスを指定。 106.187.2.33; ← プロバイダから通知されたDNSサーバー(プライマリ) のIPアドレスを指定 106.187.2.41; ← プロバイダから通知されたDNSサーバー(セカンダリ) のIPアドレスを指定 }; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view "internal" { match-clients { localhost; 192.168.24.0/24; ← サーバーと同じネットワークを追加 }; zone "." IN { type hint; file "named.ca"; }; zone "ufuso.dip.jp" IN { ← 正引きゾーン名「ufuso.dip.jp」を指定 type master; file "ufuso.dip.jp.lan"; ← 正引き設定情報の保存ファイル名を指定 allow-update { none; }; }; zone "24.168.192.in-addr.arpa" IN { ← 逆引きゾーン名「24.168.192 .in-addr.arpa」を指定 type master; file "24.168.192.db"; ← 逆引き設定情報の保存ファイル名を指定 allow-update { none; }; }; include "/etc/named.rfc1912.zones"; }; |
3 内部向け正引きゾーンデータベース(ドメイン名⇒IPアドレス)作成
[root@ufuso ~]# vi /var/named/ufuso.dip.jp.lan ← 正引きゾーンデータベース作成 $TTL 86400 @ IN SOA ufuso.dip.jp. root.ufuso.dip.jp. ( 2011071001 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) IN NS ufuso.dip.jp. ← ネームサーバー定義 IN A 192.168.24.240 ← サーバーのプライベートIPを指定(ufuso.dip.jp用) IN MX 10 ufuso.dip.jp. ← メールサーバー定義 IN A 192.168.24.240 ← サーバーのプライベートIPを指定(*.ufuso.dip.jp用) |
4 内部向け逆引きゾーンデータベース(IPアドレス⇒ドメイン名)作成
[root@ufuso ~]# vi /var/named/24.168.192.db ← 逆引きゾーンデータベース作成 $TTL 86400 @ IN SOA ufuso.dip.jp. root.ufuso.dip.jp. ( 2011071001 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) IN NS ufuso.dip.jp. ← ネームサーバー定義 IN PTR ufuso.dip.jp. ← IPアドレスに関連付けるホスト名を定義 IN A 255.255.255.0 ← ドメインが属する範囲の定義 240 IN PTR ufuso.dip.jp. ← IPアドレスに関連付けるホスト名を定義 |
5 BIND起動
[root@ufuso ~]# systemctl start named ← BIND起動 [root@ufuso ~]# systemctl enable named ← BIND自動起動設定 ln -s '/usr/lib/systemd/system/named.service' '/etc/systemd/system/multi-user.target.wants/named.service' |
6 本サーバーをDNSサーバーとして登録
赤枠1のネットワークアイコンをクリックして、接続しているifcfgの名称を確認します。下図では赤枠2になります。
[root@ufuso ~]# cd /etc/sysconfig/network-scripts ← network-scriptsフォルダへ移動 [root@ufuso network-scripts]# vi ifcfg-enp2s0 ← enp2s0ファイルの編集 DEVICE=eth0 HWADDR=90:E6:BA:C9:DE:B3 TYPE=Ethernet UUID=1a318fab-faa0-4487-832e-3000d65b7b81 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.24.240 PREFIX=24 GATEWAY=192.168.24.1 DNS1=192.168.24.240 ← 本機を第1DNSサーバーとして追記 DOMAIN=ufuso.dip.jp DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" DNS2=192.168.24.1 ← ルーターを第2DNSサーバーにする [root@ufuso network-scripts]# cd ← network-scriptsフォルダから移動 [root@ufuso ~]# systemctl restart network ← networkの再起動 |
7 UDPの53番ポートとTCPの53番ポートをオープンする
ルーターの設定で、UDPの53番ポートとTCPの53番ポートへのアクセスをサーバーに転送するようにする。下図はauひかりのルーターでの設定例。
8 BIND確認(クライアントがWindowsの場合。下のやり方でうまく行かない場合はこちら)
C:>nslookup ← nslookup起動 Default Server: ufuso.dip.jp Address: 192.168.24.240 > ufuso.dip.jp ← サーバーの正引きテスト Server: ufuso.dip.jp Address: 192.168.24.240 Name: ufuso.dip.jp Address: 192.168.24.240 ← IPアドレスが返ってきた > 192.168.24.240 ← サーバーの逆引きテスト Server: ufuso.dip.jp Address: 192.168.24.240 Name: ufuso.dip.jp ← ドメイン名が返ってきた Address: 192.168.24.240 > exit ← nslookup停止 C:> |
9 BIND確認(クライアントがLinuxの場合)
[root@ufuso ~]# dig ufuso.dip.jp ← サーバーの正引きテスト ; > DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 > ufuso.dip.jp ;; global options: +cmd ;; Got answer: ;; ->>HEADER ← IPアドレスが 返ってきた;; AUTHORITY SECTION: ufuso.dip.jp. 86400 IN NS ufuso.dip.jp. ;; Query time: 0 msec ;; SERVER: 192.168.24.240#53(192.168.24.240) ;; WHEN: Sun Dec 15 15:25:51 2013 ;; MSG SIZE rcvd: 60 [root@ufuso ~]# dig -x 192.168.24.240 ← サーバーの逆引きテスト ; > DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 > -x 192.168.24.240 ;; global options: +cmd ;; Got answer: ;; ->>HEADER ← ドメイン名が 返ってきた ;; AUTHORITY SECTION: 24.168.192.in-addr.arpa. 86400 IN NS ufuso.dip.jp. ;; ADDITIONAL SECTION: ufuso.dip.jp. 86400 IN A 192.168.24.240 ;; Query time: 0 msec ;; SERVER: 192.168.24.240#53(192.168.24.240) ;; WHEN: Sun Dec 15 15:26:01 2013 ;; MSG SIZE rcvd: 101 |
10 chroot環境への移行
[root@ufuso ~]# yum -y install bind-chroot ← chrootのインストール Installed: bind-chroot.x86_64 32:9.8.2-0.17.rc1.el6_4.6 Complete! [root@ufuso ~]# /usr/libexec/setup-named-chroot.sh /var/named/chroot on ← chrootの起動 [root@ufuso ~]# systemctl stop named ← namedの停止 [root@ufuso ~]# systemctl disable named ← namedの自動起動停止 rm '/etc/systemd/system/multi-user.target.wants/named.service' [root@ufuso ~]# systemctl start named-chroot ← chrootの起動 [root@ufuso ~]# systemctl enable named-chroot ← chrootの自動起動設定 ln -s '/usr/lib/systemd/system/named-chroot.service' '/etc/systemd/system/multi-user.target.wants/named-chroot.service' [root@ufuso ~]# ll /var/named/chroot/etc ← chroot環境への移行確認 合計 24 -rw-r--r--. 1 root root 331 7月 21 12:39 localtime drwxr-x---. 2 root named 6 6月 10 17:13 named -rw-r-----. 1 root named 2209 7月 21 12:16 named.conf -rw-r--r--. 1 root named 2389 6月 10 17:13 named.iscdlv.key -rw-r-----. 1 root named 931 6月 21 2007 named.rfc1912.zones -rw-r--r--. 1 root named 487 7月 19 2010 named.root.key drwxr-x---. 3 root named 24 7月 21 12:39 pki -rw-r-----. 1 root named 77 7月 21 12:33 rndc.key [root@ufuso ~]# ll /var/named/chroot/var/named ← chroot環境への移行確認 合計 24 -rw-r--r--. 1 root root 346 7月 21 12:32 24.168.192.db drwxr-x---. 7 root named 56 7月 21 12:39 chroot drwxrwx---. 2 named named 22 7月 21 12:33 data drwxrwx---. 2 named named 83 7月 21 12:39 dynamic -rw-r-----. 1 root named 2076 1月 28 2013 named.ca -rw-r-----. 1 root named 152 12月 15 2009 named.empty -rw-r-----. 1 root named 152 6月 21 2007 named.localhost -rw-r-----. 1 root named 168 12月 15 2009 named.loopback drwxrwx---. 2 named named 6 6月 10 17:13 slaves -rw-r--r--. 1 root root 348 7月 21 12:32 ufuso.dip.jp.lan |