PR

[Webmin][DNS] Webmin で簡単に内向きDNS構築

さて、特定ドメインに対してhosts が全く参照されなくなってしまった。「hosts ファイルを既定にリセットして戻す方法」も見つけたのでやってみたが直らない。

問題なのは、ネットワーク内のすべての端末に同様の設定を行っても、異なるエンジンを利用するウェブブラウザを利用しても、正しい結果が得られない。それにもかかわらず、hosts 内に記述した外の設定は読み込まれて正常に動作しているから困る。HTTP のGET に対するHOST 要求がどこかで書き換えられてしまっているのか、外部のDNS と照合して正しいIP アドレスに置き換えているのか。

hosts に記述しただけでは、ネットワークを司るシステムによって応答が異なることがある。そこで、一時的に内部DNS を作成して、hosts ではなくDNS からのレスポンスであることを強調してみることにする。

サーバー構築

ということで、CentOS を適当にインストールして構築する。

内部DNS は普段使っていないのでWebmin からBIND を操作して簡単に構築する。

ダウンロード

スポンサードリンク

インストール

Last login: Thu Jun 23 21:02:59 2011
[root@ns1 ~]# rpm -q bind

パッケージ bind はインストールされていません。
[root@ns1 ~]# wget http://www.webmin.com/download/rpm/webmin-current.rpm
--2011-06-23 23:48:16--  http://www.webmin.com/download/rpm/webmin-current.rpm
www.webmin.com をDNSに問いあわせています... 216.34.181.97
www.webmin.com|216.34.181.97|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: http://softlayer.dl.sourceforge.net/sourceforge/webadmin/webmin-1.550-1.noarch.rpm [続く]
--2011-06-23 23:48:16--  http://softlayer.dl.sourceforge.net/sourceforge/webadmin/webmin-1.550-1.noarch.rpm
softlayer.dl.sourceforge.net をDNSに問いあわせています... 74.86.229.28
softlayer.dl.sourceforge.net|74.86.229.28|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: http://downloads.sourceforge.net/sourceforge/webadmin/webmin-1.550-1.noarch.rpm?download&failedmirror=softlayer.dl.sourceforge.net [続く]
--2011-06-23 23:48:17--  http://downloads.sourceforge.net/sourceforge/webadmin/webmin-1.550-1.noarch.rpm?download&failedmirror=softlayer.dl.sourceforge.net
downloads.sourceforge.net をDNSに問いあわせています... 216.34.181.59
downloads.sourceforge.net|216.34.181.59|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 301 Moved Permanently
場所: http://downloads.sourceforge.net/project/webadmin/webmin/1.550/webmin-1.550-1.noarch.rpm?download=&failedmirror=softlayer.dl.sourceforge.net [続く]
--2011-06-23 23:48:18--  http://downloads.sourceforge.net/project/webadmin/webmin/1.550/webmin-1.550-1.noarch.rpm?download=&failedmirror=softlayer.dl.sourceforge.net
downloads.sourceforge.net:80 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: http://jaist.dl.sourceforge.net/project/webadmin/webmin/1.550/webmin-1.550-1.noarch.rpm [続く]
--2011-06-23 23:48:18--  http://jaist.dl.sourceforge.net/project/webadmin/webmin/1.550/webmin-1.550-1.noarch.rpm
jaist.dl.sourceforge.net をDNSに問いあわせています... 150.65.7.130
jaist.dl.sourceforge.net|150.65.7.130|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 16267693 (16M) [application/octet-stream]
`webmin-1.550-1.noarch.rpm' に保存中

100%[======================================>] 16,267,693   897K/s 時間 13s

2011-06-23 23:48:31 (1.21 MB/s) - `webmin-1.550-1.noarch.rpm' へ保存完了 [16267693/16267693]

[root@ns1 ~]# rpm -Uvh webmin-1.550-1.noarch.rpm
警告: webmin-1.550-1.noarch.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 11f63c51
準備中...                ########################################### [100%]
Operating system is CentOS Linux
 1:webmin                 ########################################### [100%]
Webmin install complete. You can now login to http://*****.jp:10000/
as root with your root password.
[root@ns1 ~]# chkconfig --add webmin

Webmin 初期設定

ログイン

CentOS のID /パスワードでログインする。

日本語化

Webmin > Webmin Configuration > Language からJapanese を選択する。

システム起動時の挙動設定

コマンド例ではインストール後にchkconfig で起動する設定にしたが、Webmin 上からも同様の設定が可能。

BIND のインストール

CentOS は標準でBIND がインストールされていないから、Un-used Modules > BIND DNS サーバ を選択し、

BIND を自動インストールする。

BIND 初期設定

適当に。

BIND 設定

マスターゾーン作成

マスターゾーンを作成する。

ドメインとメールアドレスを入力して作成をクリックする。

レコード追加

アドレスをクリックする。

@やwww などとIP アドレスを入力して作成。複数ある場合は繰り返す。

設定が完了したら設定を適用する。

動作確認

外部通信確認

DNS が外部と通信できるか確認する。

[root@ns1 ~]# dig yahoo.co.jp @localhost

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> yahoo.co.jp @localhost
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48939
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:
;yahoo.co.jp.                   IN      A

;; ANSWER SECTION:
yahoo.co.jp.            300     IN      A       124.83.187.140
yahoo.co.jp.            300     IN      A       203.216.243.240

;; AUTHORITY SECTION:
yahoo.co.jp.            900     IN      NS      dnsg01.yahoo.co.jp.
yahoo.co.jp.            900     IN      NS      ns04.ops.ogk.yahoo.co.jp.

;; Query time: 75 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jun 24 00:05:51 2011
;; MSG SIZE  rcvd: 109


BIND 設定前の確認

BIND 設定前には一般的に公開されているグローバルIP アドレスが返ってくれば正しい動作。

[root@ns1 ~]# dig *****.jp @localhost

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> *****.jp @localhost
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32055
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;*****.jp.                      IN      A

;; ANSWER SECTION:
*****.jp.               120     IN      A       *****.149

;; AUTHORITY SECTION:
*****.jp.               120     IN      NS      ns2.*****.com.
*****.jp.               120     IN      NS      ns1.*****.com.

;; ADDITIONAL SECTION:
ns1.*****.com.   1200    IN      A       119.*****
ns2.*****.com.   1200    IN      A       175.*****

;; Query time: 251 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jun 24 00:06:31 2011
;; MSG SIZE  rcvd: 126


BIND 設定後の動作確認

BIND を設定し、適用したあとには任意の(一般的には内部の)IP アドレスが返ってくれば正しい動作。

[root@ns1 ~]# dig *****.jp @localhost

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> *****.jp @localhost
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48711
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;*****.jp.                      IN      A

;; ANSWER SECTION:
*****.jp.               38400   IN      A       *****.19

;; AUTHORITY SECTION:
*****.jp.               38400   IN      NS      *****.jp.

;; Query time: 6 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jun 24 00:11:34 2011
;; MSG SIZE  rcvd: 60

クライアントがWindowsの場合

Windows7 やWindowsXP などは、DNS サーバーのアドレスを構築したサーバーに向けてやる。

nslookup コマンドでドメイン名からサーバーのIP アドレスを調べることができる。

結果

やっぱりダメ・・・・???ここまで来るとわからないな・・・。突然アクセスできなくなった瞬間に何があったのだろうか。ちなみに、試行錯誤している間に1度だけ意図したサーバーにアクセスできたが、その後また別のサーバーにアクセスしているようだ。ちなみに、ブラウザ拡張を利用して現在どのサーバー(IP アドレス)に接続しているかを確認できるが、表示上は目的のサーバーになっている。が、意図したサーバーに接続した場合に得られる結果とは異なっている。

ブラウザの調査用拡張機能、ping、nslookup、hosts、DNS、tracert などそれぞれ試行錯誤してみるも(複数の)ブラウザは正しい結果を出さない。筆者の設定がどこかつまらないところでコケているのか、ネットワーク内のどこかで書き換えられているのか・・。不明だ。せめて他の環境からなら正しい結果を得られるなら、筆者のメイン環境が狂っているのだろうが、内部のすべてが同様の結果を返すことから、ルーターや上位ネットワークをどうしても疑ってしまう。

※ここで設定したのは特定の問題の切り分けのためのもので、正しいDNS 構築ではないことに注意。それなりには動作すると思うけれど。

参考文献

  • 内部向けDNSサーバー構築(BIND) – CentOSで自宅サーバー構築
  • Webmin で作る Linux 自宅サーバー DNSサーバーの構築

コメント