ローカルマシンでのドメインまわりの検証のための設定色々
基本、自分メモです。実際に利用される場合は、AtYourOwnRiskでお願いします。
やりたいこと
ドメインを偽装して、自分の開発環境にアクセスする。
- 他の人に迷惑かけたいのでなく、あくまで検証用。検証が終わったらすぐに設定を戻したりする。
自分の場合では、作っているウェブアプリケーションで発行するCookie/localStorageまわりの検証をする。
できるだけクロスブラウザでテストする必要があるので、いろんなところからローカルマシン上の開発環境にアクセスさせる必要がある。
- ローカルマシンはMac
- 開発環境はMac上で動いている。VMwareFusionからのlinux。
- 検証は、Macのブラウザ、Windows(Macと同一ネットワーク内にあるPC)のブラウザ、スマホ。
- スマホからの検証は、Macの「ネットワーク共有」なる機能を使用して、アクセスする。
開発環境のIPアドレスは: 203.0.113.72
- 開発環境のローカルIPは: 192.0.2.72
- 検証したいドメインは: example.jp(サブドメインなし)、sub.example.jp(サブドメインつき)
実現方法 -> このエントリーの本題
各検証用のデバイス別に、以下の3種類の実現方法をそれぞれで使用する。
- Mac上のhostsファイルをいじる
- ローカルマシンのMacで検証するとき用。
- Windows上のhostsファイルをいじる
- Windowsからの検証をするとき用。ほぼMacと同じ。
- DNS(named)を起動する
- スマホからの検証用。スマホ内でhostsファイルを書き換えられないので、DNSの参照を(できるだけローカルに)いじって、実現。
それでは、1つずつ。
Mac上のhostsファイルをいじる
おおよそ、/etc/hosts
にファイルがあるだろう想定。
以下のように追記する。(Terminal.app で viとかで。sudoしたりして。)
192.0.2.72 example.jp 192.0.2.72 sub.example.jp
ファイルを保存すれば向き先が変わっているはず。
検証を終えるときは、以下のどちらかの方法で対応。 - 追記した行を消す。 - コメントアウトする。( # )
Windows上のhostsファイルをいじる
Windowsの場合、hostsファイルはおおよそ、c:\Windows\system32\drivers\etc\hosts
にあるだろうと。
編集は、とりあえずメモ帳を例に出すと、、、
- WindowsXPの場合
- 普通に編集可能。( notepad c:\Windows\system32\drivers\etc\hosts )とかでできた想定。
- Windows7とかの場合
- 編集に権限まわりがからむ。なので、
- スタートメニュー > アクセサリ > メモ帳 を、右クリックして「管理者として実行」(Run As Administrator)
- メモ帳が開いたら、ファイルを開くで
c:\Windows\system32\drivers\etc\
に移動。 - .txtなファイルでないので、「全てのファイル」を見れるようにして、開く。
追記内容は、開発環境のあるMacとは別のPCなので、、、
203.0.113.72 example.jp 203.0.113.72 sub.example.jp
検証を終えるときの対応方法はMacと同じなので割愛。
DNS(named)を起動する
- あくまで、検証用途にDNSの設定をする。
運用とかは考えないのでテンポラリな設定しかしないし、検証が終わったらすぐに使うの止める。
mac(10.7と10.8で使ってみた)
- BIND9
ここから先は教えていただきました -> id:masa_matya ++
BINDの役割の設定
今回は、役割の設定の中でも、DNSのコンテンツサーバーの設定をする。(自分が管理するzone情報をかえすよという設定)
DNSキャッシュサーバーについての設定は特にしない。運用するのでなく、公開するのでもなく、特定ドメインについての検証作業用なので、必要な名前解決さえされればOK。セキュリティリスクを負わないためにも無用なことはしない。
/etc/named.conf
に、以下のように追記する。
(もともとファイルがある前提なので、前後に色々設定が既に書かれているはず。zoneの書式を真似しつつ。。。)
zone "example.jp" IN { type master; file "example.jp.zone"; allow-update { none; }; };
zone情報の追加
zone情報のファイルは、/etc/named.conf
の options > directory
に書いてある。デフォルトでは、 /var/named
? 多分。
ということで、指定されているディレクトリに移動。
/etc/named.conf
についきしたファイル名(example.jp.zone
)でファイルを作成して記述。
$TTL 300 example.jp. IN SOA ns009.example.jp. root.example.jp. ( 2012122715 ;Serial 7200 ;Refresh 3600 ;Retry 1209600 ;Expire 180 ;Minimum TTL ) IN NS ns009.example.jp. @ IN A 203.0.113.72 sub IN A 203.0.113.72 ns009 IN A 203.0.113.72
(ざっくりな書き方ですみませんm( )m)
後半で向き先の指定をします。検証用なので、全部Aな感じですが。
あとは、起動(今回は、テンポラリにしか使わないので、デーモンにもしないし、自動起動もしないです。sudoとかは個別に。)
named -g
起動したら、digとかで確認します。
dig @{設定したマシンのIPアドレス} example.jp
スマホからのアクセス
スマホでネットワーク共有のMacに接続するのは、単純に無線LANを選択すれば終わり。
そのままだとDNSは、設定したものを見てくれないので、一手間。
- DNSの設定をしたMacで、
iPhoneの場合、iPhone側でも設定を変更できるけど、Androidでそれができないので、大元のMacで変更をする。
2013.07.23 追記
- 上記だけでは反映されないことがある。
- その場合には、ネットワーク共有を一度offにした後に再度onにする。
レアケース: DNSサーバが特殊な場合
例えば、通常時に参照しているDNSサーバーが社内イントラ用とかで、社内ネットワーク内の名前解決の設定がされている場合、ここまでの設定で、そのDNSが見られなくなる。
故に、一手間。
/etc/named.conf
のoptions内に、通常時に参照しているDNSサーバーのIPアドレスを追記する。
options { // 以下追記内容 forwarders { 203.0.113.71; }; // ここまで }
これをしないと、名前解決できないURLが発生し得る。 これでも発生する問題は、、、調べておきますm( )m
検証おわるときは?
その他
- なんか以下のようなエラーがでる。
sudo named -g 02-Jul-2013 10:07:14.036 starting BIND 9.7.6-P1 -g 02-Jul-2013 10:07:14.036 built with ... 02-Jul-2013 10:07:14.036 ---------------------------------------------------- 02-Jul-2013 10:07:14.036 BIND 9 is maintained by Internet Systems Consortium, 02-Jul-2013 10:07:14.036 Inc. (ISC), a non-profit 501(c)(3) public-benefit 02-Jul-2013 10:07:14.036 corporation. Support and training for BIND 9 are 02-Jul-2013 10:07:14.036 available at https://www.isc.org/support 02-Jul-2013 10:07:14.036 ---------------------------------------------------- 02-Jul-2013 10:07:14.037 using up to 4096 sockets 02-Jul-2013 10:07:14.061 loading configuration from '/private/etc/named.conf' 02-Jul-2013 10:07:14.061 /private/etc/named.conf:4: open: /etc/rndc.key: file not found 02-Jul-2013 10:07:14.061 loading configuration: file not found 02-Jul-2013 10:07:14.061 exiting (due to fatal error)
/etc/rndc.key
なるファイルがないので生成。
(rndcはBINDを制御するツール)
- Firewallで53番ポートを閉じていたら。。。
- 53番番ポートを開いてください。