さて、特定ドメインに対して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サーバーの構築
コメント