はじめに
海外に居るため、一部国内のコンテンツが見れない。
さくらVPSに外部プロキシサーバを立てて、国内コンテンツを普通に見たい。
PC ---- ルータ ---- プロキシサーバ(さくらVPS) ---- Webサーバ
インストール
$ sudo yum install squid … ============================================================================================================= パッケージ アーキテクチャ バージョン リポジトリー 容量 ============================================================================================================= インストールしています: squid x86_64 7:3.1.23-16.el6_8.4 updates 1.8 M 依存性関連でのインストールをします。: libtool-ltdl x86_64 2.2.6-15.5.el6 base 44 k トランザクションの要約 ============================================================================================================= インストール 2 パッケージ 総ダウンロード容量: 1.9 M インストール済み容量: 6.4 M これでいいですか? [y/N]y パッケージをダウンロードしています: (1/2): libtool-ltdl-2.2.6-15.5.el6.x86_64.rpm | 44 kB 00:00 (2/2): squid-3.1.23-16.el6_8.4.x86_64.rpm | 1.8 MB 00:00 ------------------------------------------------------------------------------------------------------------- 合計 3.7 MB/s | 1.9 MB 00:00 …
2016/06/02現在、squid : Optimising Web Delivery によると最新は3.5.19とのことなので若干古い。
squid.confの設定
/etc/squid/squid.conf
を編集する。
ルータからのアクセスを許可する為、自宅のIPアドレスを調べ許可IPアドレスとして登録する。 確認には先達に従い、 確認くん を使う。
# 元々あるhttp_access deny allの上に追記すること。 acl indoor src xxx.xxx.xxx.xxx/32 http_access allow indoor http_access deny all
ポート番号はデフォルトから別の番号に変更する。
12345
は例なので適宜お好みで。
# Squid normally listens to port 3128 #http_port 3128 http_port 12345
プロキシサーバ経由であることを隠蔽する為、以下のオプションをファイル末尾に追記する。
# ローカルのIPアドレスを隠蔽 forwarded_for off # リクエストヘッダのプロキシ情報を隠蔽 header_access X-Forwarded-For deny all header_access Via deny all header_access Cache-Control deny all
設定が完了したら、後はいつものコマンド。
# squid起動 $ sudo /etc/init.d/squid start # 自動起動設定 $ sudo chkconfig squid on
squidのバージョンによっては start
コマンド実行時にWarningが出るので適宜修正を行う。3系であれば上記設定でほぼ問題ないハズ。
iptablesの設定
iptablesによるポート制限も変更を行う。
:FWINPUT - [0:0] -A INPUT -j FWINPUT -A FORWARD -j FWINPUT -A FWINPUT -i lo -j ACCEPT -A FWINPUT -p icmp --icmp-type any -j ACCEPT -A FWINPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A FWINPUT -p tcp -m tcp --dport 12345 -s xxx.xxx.xxx.xxx -j ACCEPT -A FWINPUT -j REJECT --reject-with icmp-host-prohibited
変更完了したらiptables再読み込み。
$ sudo iptables-restore < /etc/sysconfig/iptables
(任意)アカウントによるログイン制御
第三者の不正利用を防ぐ為にアカウントによるログイン制御を行うこともできる。認証方法は多数用意されているが、Basic認証と同じ仕組みがシンプルそう... と思ったが、nginxしか使ってないのでプロキシ専用のパスワードファイルを用意する。
# パスワード生成 $ sudo htpasswd -c /etc/squid/squid-passwd <user_name> New password: Re-type new password: Adding password for user <user-name>
htpasswd
コマンドが利用できない場合には、httpd-tools
をインストールすると良い。
$ sudo yum install httpd-tools
squid-passwdファイルを作成したら、squid.confに設定を追加する。
ただし記述順序に注意。http_access
は上から順に評価される。
先述のIPアドレス指定の後に設定を追加すると、自宅ではパスワードが不要、自宅外ではパスワード認証と使い分けることができる。
if IPアドレスが自宅: 接続 elif BASIC認証OK: 接続 else: 接続不可
$ sudo vi /etc/squid/squid.conf # 元々の自宅用設定 http_access allow indoor # ここに自宅外設定を追加。 auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/squid-passwd auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours acl outdoor proxy_auth REQUIRED http_access allow outdoor # 元々の deny all 設定 http_access deny all
OS Xのプロキシ設定
システム環境設定 > ネットワーク > 詳細 > プロキシ にて、HTTPとHTTPSの設定を行うだけでよい。
設定が完了したら、ブラウザから改めて 確認くん にアクセスし、IPアドレスがさくらVPSのものに変わっていることを確認する。
もしくは sudo tail -f /var/log/squid/access.log
してlogを眺めてみる。

- 出版社/メーカー: 任天堂
- 発売日: 2015/05/28
- メディア: Video Game
- この商品を含むブログ (10件) を見る
参考
- プロキシサーバー構築(Squid) - CentOSで自宅サーバー構築 まさにこのサイトがプロキシ通さないと海外からアクセスできない。つらい。
- 5分で作るPROXYサーバー - Qiita