squidとは?
squidとはキャッシュサーバ兼プロキシサーバーです。
Squid(スクウィッド)はプロキシ (Proxy) サーバ、ウェブキャッシュサーバなどに利用されるフリーソフトウェア。GPLでライセンスされている。 Squidの用途は、重複リクエストに対したキャッシュ応答によるウェブサーバの高速化や、ネットワーク資源を共有する人々が行うWorld Wide WebやDNSなどの様々なネットワーククエリのキャッシュなど、多岐にわたる。元来はUnix系のコンピュータで動作させる目的で設計されている。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
とある事情(高速に通信したい、接続元IPを偽装したいなど)でどこかのサーバーを経由したい時などに利用します。
プロキシ(Proxy)とは「代理」の意味である。インターネット関連で用いられる場合は、特に内部ネットワークからインターネット接続を行う際、高速なアクセスや安全な通信などを確保するための中継サーバ「プロキシサーバ」を指す。
プロキシはクライアントとサーバの間に存在し、情報元のサーバに対してはクライアントの情報を受け取る、クライアントに対してはサーバの働きをする(HTTPプロキシの場合)。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
それではsquidのインストールと設定の解説に入っていきましょう。
環境
- サーバ側:CentOS 6.7
- クライアント側:CentOS 6.6
サーバー側にsquidのインストール
- yumでsquidをインストール
$ yum -y install squid
- 設定ファイル編集
$ vi /etc/squid/squid.conf
acl CONNECT method CONNECT
# 追記 (ACLの定義追加で接続元を設定)
acl wan src xxx.xxx.xxx.xxx
# 追記 (定義したACLの許可)
http_access allow wan
# 変更(8080はバッティングしやすいので他を推奨)
http_port 8080
# 最終行に追記 (匿名サーバー化)
request_header_access Referer deny all
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
# ホスト名定義(必要に応じて)
visible_hostname proxy.server
# クライアント情報を表示しない
forwarded_for off
- squidの起動
$ /etc/rc.d/init.d/squid start
Starting squid: [ OK ]
- サーバ起動時にsquidを自動起動するようにchkconfigに追加
$ chkconfig squid on
クライアント側の設定(CentOS6.6)
$ vi /etc/profile
# 最終行に追記 (プロキシサーバーを環境変数に設定)
MY_PROXY_URL="111.222.333.444:8080"
HTTP_PROXY=$MY_PROXY_URL
HTTPS_PROXY=$MY_PROXY_URL
FTP_PROXY=$MY_PROXY_URL
http_proxy=$MY_PROXY_URL
https_proxy=$MY_PROXY_URL
ftp_proxy=$MY_PROXY_URL
export HTTP_PROXY HTTPS_PROXY FTP_PROXY http_proxy https_proxy ftp_proxy
- 設定の反映
$ source /etc/profile
- 疎通確認
- グローバルIPを確認してプロキシサーバ側のIPが表示されればOK
$ curl inet-ip.info
111.222.333.444
補足
- Javaでプロキシサーバを通す場合
// プロキシの情報を設定
System.setProperty("proxySet", "true");
System.setProperty("proxyHost", "111.222.333.444");
System.setProperty("proxyPort", "8080");
// 以下の通信は上で設定したプロキシが利用される
URL url = new URL("http://www.yahoo.co.jp/")
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
まとめ
サーバー側にsquidをインストールして、クライアント側はそのサーバーへ接続する設定にすればよいことが分かったかと思います。
そんなに難しいことではないので(悪用しなければ)やってみましょう!
悪用厳禁!