【技術メモ】CentOSにsquidをyumでインストール+設定手順

技術

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をインストールして、クライアント側はそのサーバーへ接続する設定にすればよいことが分かったかと思います。

そんなに難しいことではないので(悪用しなければ)やってみましょう!

悪用厳禁!