本番環境と開発環境の2つのインスタンスを実行しているサーバーアプリケーションがあります。
prod.example.com (10.0.0.1)
dev.example.com (10.0.0.2)
サードパーティが、prod.example.com
を指すようにハードコードされたクライアントアプリケーションを作成しました。しかし、これらのリクエストをdev.example.com
サーバーに送信したいので、サードパーティのソースコードにアクセスできません。
クライアントとサーバーが実行されているLANに(一時的に)アクセスできるので、dnsmasq
を使用してprod.example.com
を10.0.0.2
に解決できます。この時点で、ここでの作業は完了です。クライアントアプリケーションは(無意識のうちに)開発サーバーと通信します(またはそう思っていました)。
次の設定をdnsmasq.conf
に追加するところまで来ました。
address=/prod.example.com/10.0.0.2
..これは機能しますが、他のすべてのドメインが解決されないという副作用があります。
どうすればケーキを食べて食べることができますか?
この行を/etc/dnsmasq.conf
に追加します。
addn-hosts=/etc/dnsmasq.hosts
次に、ドメイン名を/etc/dnsmasq.hosts
に挿入します。
10.0.0.1 prod.example.com.
10.0.0.2 dev.example.com.
ドメイン名の末尾のピリオドを忘れないでください。ローカルホスト名ではなく、TLDとしてマークします。
いつものように、構成を変更した後、dnsmasq
を再起動します。
Sudo service dnsmasq restart