Proxyサーバを使っていろいろ実験をしたいと思ったのでAWSのEC2 Ubuntuのインスタンス上でSquidでProxyを立てた時のメモ
Ubuntuのインスタンスを立ち上げた後にこちらを参考にDockerをインストールします。
一連のコマンドは下記
てっとり早く動かしたい方はhttp_access allow mynetを
とすれば動きます。
匿名化設定として追加したのは下記5つ
ちなみに、このプロキシを使ってDAZNにアクセスすると下記のようにDAZN IS NOT AVAILABLE IN THIS COUNTRYとなります。つまりDAZNにはProxy認定(?)されています(笑)
(日本国内から日本国内に立てたProxyを経由してアクセスしています)
DAZNなどのコンテンツサイトはIPアドレスでNGとしている場合が多いので、AWSのIPアドレスでNGを食らってるのかもしれません。
ちなみに、先日紹介したAblenetのVPS経由だとDAZNはきちんと表示されました。(2020年10月時点)
一方で、AWSに立てたインスタンスからだとDAZNは上記のProxy経由と同じように、NOT AVAILBLEになります。DAZNはProxyかどうかの判断もしているのと、アクセス元がAWSのIPアドレスの場合などに対してもガードしているようです。
Docker環境構築
EC2のインスタンスを立ち上げるところは省略します。Ubuntuのインスタンスを立ち上げた後にこちらを参考にDockerをインストールします。
一連のコマンドは下記
sudo apt update sudo apt upgrade sudo apt-get install -y\ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io -y sudo usermod -aG docker ubuntu
squidのdocker imageをとってくる
こちらのdocker imageを使います。下記のコマンドでdocker imageをとってきます。sudo docker pull sameersbn/squid:3.5.27-2
squidの設定変更
アクセスコントロール
下記の部分は自分のアクセス元に合わせて設定してください。acl mynet src 192.168.0.10
てっとり早く動かしたい方はhttp_access allow mynetを
http_access allow all
とすれば動きます。
匿名化設定
こちらのサイトを参考に設定変更を加えていくが、squidがversionアップされているので、ディレクティブ名が変更になっているので要注意。header_accessとなっているところは、request_header_accessに変更する。匿名化設定として追加したのは下記5つ
visible_hostname none forwarded_for off
request_header_access X-FORWARDED-FOR deny all request_header_access VIA deny all request_header_access CACHE-CONTROL deny all
最終版
squid.confはとてつもなく巨大なので、コメント以外の部分を抽出するとこんな感じですacl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access deny !Safe_ports acl mynet src 192.168.0.10 http_access allow localhost http_access allow mynet visible_hostname none forwarded_for off http_port 3128 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320 request_header_access X-FORWARDED-FOR deny all request_header_access VIA deny all request_header_access CACHE-CONTROL deny all
Docker立ち上げ
Dockerを立ち上げる時に下記のコマンドのように自分の作成したsquid.confを指定して立ち上げます。ローカルのsquid.confの置き場所は自分の環境に合わせて変更してください。sudo docker run --name squid -d --rm --publish 3128:3128 -v /srv/docker/squid/cache:/var/spool/squid -v $(pwd)/etc/squid.conf:/etc/squid/squid.conf sameersbn/squid:3.5.27-2
Proxy匿名度診断
診断君で診断した結果はAまたは生IP、CACHE-CONTROLまで設定しましたが、20%の確率でプロキシかもとのこと。ちなみに、このプロキシを使ってDAZNにアクセスすると下記のようにDAZN IS NOT AVAILABLE IN THIS COUNTRYとなります。つまりDAZNにはProxy認定(?)されています(笑)
(日本国内から日本国内に立てたProxyを経由してアクセスしています)
DAZNなどのコンテンツサイトはIPアドレスでNGとしている場合が多いので、AWSのIPアドレスでNGを食らってるのかもしれません。
ちなみに、先日紹介したAblenetのVPS経由だとDAZNはきちんと表示されました。(2020年10月時点)
一方で、AWSに立てたインスタンスからだとDAZNは上記のProxy経由と同じように、NOT AVAILBLEになります。DAZNはProxyかどうかの判断もしているのと、アクセス元がAWSのIPアドレスの場合などに対してもガードしているようです。