LoginSignup
7
11

More than 5 years have passed since last update.

クライアントの/etc/hostsとHTTP Proxyの関係

Posted at
  • クライアントでHTTP Proxyを利用した際、クライアントの/etc/hostsを書き換えても反映されなかったのでAWS上で実験して確認してみた

実験結果と考察

  • 実験結果:proxyを通るリクエストはクライアントの/etc/hostsが反映されない
  • 考察:proxyを通る場合はproxyがDNSリゾルバになりクライアントの/etc/hostsは用いられない(今一ピッタリとした説明したサイトが見つけられなかったので推測)

実験環境

  • サーバーとして以下の2つのEC2インスタンスを用意(両方とも80番ポート開放)

    • proxyサーバ
    • クライアント
  • OS:Amazon Linux AMI 2012.09.1 64bit

  • httpd-2.2.23

実験前準備

  • proxyサーバ環境を構築する
$ sudo yum install httpd -y
$ sudo vi /etc/conf/httpd.conf
# => 以下のようになるようにコメントを外す
<IfModule mod_proxy.c>
ProxyRequests On

  <Proxy *>
    Order deny,allow
    Deny from all
    Allow from all
 </Proxy>

</IfModule>
# sudo /etc/init.d/httpd start
  • クライアント環境を構築する(80番ポート開放)
$ sudo yum install httpd -y
$ echo "hogeee" | sudo tee /var/www/html/index.html
$ sudo /etc/init.d/httpd start
$ echo "[クライアントのPublicIP] www.example.com" | sudo tee -a /etc/hosts
$ curl www.example.com
hogeee

実験1(クライアントの/etc/hostsを書き換えてproxyを使ってアクセス)

  • クライアントで実行
$ export http_proxy=http://[proxyサーバのPublicIP]:80
$ curl www.example.com
# => 何も出力されない

実験2(proxyサーバの/etc/hostsを書き換えてproxyを使ってアクセス)

  • proxyサーバで実行
$ echo "[クライアントのPublicIP] www.example.com" | sudo tee -a /etc/hosts
  • クライアントで実行
$ export http_proxy=http://[proxyサーバのPublicIP]:80
$ curl www.example.com
hogeee

実験3(no_proxyを設定してproxyを使ってアクセス)

  • クライアントで実行
$ export http_proxy=http://[proxyサーバのPublicIP]:80
$ export no_proxy=www.example.com
$ curl www.example.com
hogeee
7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11