Proxyサーバを使っていろいろ実験をしたいと思ったのでAWSのEC2 Ubuntuのインスタンス上でSquidでProxyを立てた時のメモ

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を食らってるのかもしれません。

dazn_deny


ちなみに、先日紹介したAblenetのVPS経由だとDAZNはきちんと表示されました。(2020年10月時点)
一方で、AWSに立てたインスタンスからだとDAZNは上記のProxy経由と同じように、NOT AVAILBLEになります。DAZNはProxyかどうかの判断もしているのと、アクセス元がAWSのIPアドレスの場合などに対してもガードしているようです。