低コストなプロキシサーバを手軽に作ってみた話

クラウド

プロキシが欲しいけど面倒な作業はしたくない…と思ってググってみると、KAGOYA CLOUDのVPS (以下、VPSとします。)を利用することで簡単にプロキシサーバを構築することが出来ると分かりました。

今回はその方法をご紹介いたします。

はじめに

KAGOYA CLOUDのアカウントが必要となります。まだ持っていない方は取得してください。

KAGOYA CLOUD Portal 新規アカウント作成

プロキシサーバとは?

今回構築するプロキシサーバはフォワードプロキシと呼ばれるものとなります。あなたのパソコンからサーバを経由してWebサイトにアクセスする時に使うサーバをフォワードプロキシサーバと呼びます。

なんらかの理由で直接あるWebサイトに接続したくない場合に使います。

  • 自分のIPを残したくない。
  • 自分のパソコンがどこにアクセスしているか隠蔽したい

等が理由として挙げられます。

VPS上にプロキシサーバーを構築

構築に必要な作業は以下の4つです。

  1. プロキシサーバ用のファイアウォールの設定
  2. CentOSのインスタンスの作成
  3. Squidのインストール
  4. Squidの設定
  5. Squidの起動
  6. 動作検証

プロキシサーバ用のファイアウォールを設定

はじめにKAGOYA CLOUD のコントロールパネルからプロキシサーバー用のファイアウォールを設定するために、以下の画面を開きます。

コントロールパネル->セキュリティ->セキュリティグループ

セキュリティグループの追加

セキュリティグループ一覧が表示されたら、セキュリティグループ追加をクリック

セキュリティグループの設定

セキュリティグループには任意の名前を入力します。

SSH接続用の設定とプロキシサーバへの接続を許可するための設定を行います。

SSH接続用の設定
プロトコルTCP
IPアクセス元のIPアドレス
ポート22
プロキシサーバ接続用の設定
プロトコルTCP
IPアクセス元のIPアドレス
ポート8080(任意のポート番号)

登録をクリックします。

CentOSのインスタンスの作成

インスタンスを作成するため、以下の画面を開きます。

コントロールパネル->インスタンス

インスタンス作成をクリックします。

インスタンスの設定

パッケージはCentOS8、アプリケーションセットアップは「なし」を選択します。
今回はお試し用のプロキシサーバのため、スペックは1コア/1GBを選択します。

ログイン認証キーを作成します。

ログイン用認証キー名に任意の名前を入力し、登録をクリックします。

しばらくするとログイン用認証キーがダウンロードされます。
SSHでログインする際に必要になりますが、再発行が出来ないため大切に保管してください。

作成したログイン用認証キーを選択します。

セキュリティグループの選択

作成したセキュリティグループを選択します。
先ほど作成した「proxy」を選択しました。

コンソールログイン用パスワード

コンソールにログインするためのパスワードを入力します。

インスタンス名の設定

インスタンス名を入力します。名称は任意となります。

インスタンス作成

インスタンス作成をクリックし、インスタンス作成を開始します。

インスタンス作成が開始すると、下記図のように処理中状態になります。通常であれば1〜2分程度でインスタンス作成処理が完了します。

インスタンス作成が完了すると、下記図のような表記に切り替わります。

Squidのインストール

はじめにCentOSのパッケージを最新の状態にします。

# dnf update

squidをインストールします。

# dnf -y install squid

Squidの設定

squidの設定ファイルを編集します。

# vi /etc/squid/squid.conf

一般的なローカル接続の設定例をコメントアウトし、プロキシサーバーへの接続を許可するIPアドレスを任意のACL(アクセス制御リスト)名で設定します。
※ もともとの記述内容から変更・追記する部分を赤マーカーで記載しています。

#
# Recommended minimum configuration:
#
 
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
#acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
#acl localnet src fc00::/7 # RFC 4193 local private network range
#acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
# 許可するIPアドレスを記載
acl accesslist src 200.10.222.50/32

Pアドレスの部分は、セキュリティで設定した、接続クライアントのIPアドレスを入力します。
※ IPアドレス末尾の /32 の部分はIPアドレスの範囲を指定しています。 /32 は1個のIPアドレスを指定します。( /24 だと256個の指定になります。)

一般的なローカル接続の許可設定をコメントアウトし、設定したACL(アクセス制御リスト)からのアクセスを許可します。

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnets
#http_access allow localhost
http_access allow accesslist

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
http_port 8080

任意のポート番号を指定します(ここでは先の手順のファイアウォールで許可したポート 8080 を指定します)。

プロキシサーバーの匿名性を高めたい場合は、設定ファイルの一番最後に以下を追記します。

# 任意のホスト名
visible_hostname unknown

# 接続端末のIPを隠蔽
forwarded_for off

# リクエストヘッダのプロキシ情報を隠蔽
header_access X-Forwarded-For deny all
header_access Via deny all
header_access Cache-Control deny all

設定ファイルの編集内容を保存します。

Squidの起動

squidを起動する前に、 firewalld の設定を行います。

# firewall-cmd --add-port=8080/tcp
success ##成功した場合の表示
# firewall-cmd --list-ports
8080/tcp ##追加したものが表示される
## firewalldを再起動
# systemctl restart firewalld.service

Squidを起動します。

# systemctl start squid

自動起動設定を追加します。

# systemctl enable squid

状態を確認します。

# systemctl status squid.service

動作検証準備

構築したプロキシサーバが正常に動作するか検証を行います。今回の場合はWebブラウザ(GoogleChrome)からの接続をプロキシサーバ経由に設定します。

画面右上のメニューから設定を開きます。

詳細設定をクリックします。

システム内の「パソコンのプロキシ設定を開く」をクリックします。

WebプロキシサーバのIPアドレスとポート番号を入力します。
ここで入力するIPアドレスは作成したCentOSインスタンスのIPアドレス、ポート番号はSquidに設定したポート番号です。

OKをクリックします。

動作検証

GoogleChromeで下記のURLにアクセスします。

確認くん


「あなたのIPアドレス(IPv4)」にプロキシサーバのIPアドレスが表示されれば成功です。

お疲れ様でした。

フォワードプロキシを使用するメリット

セキュリティが高まる

プロキシサーバが代理でアクセスすることで、各PCへの単純なアクセスよりもセキュリティの高い状態でのアクセスが可能となります。また、複数の個々からのアクセスではなく、代理による単数のアクセスとなるため、アクセス解析がされにくく、そのため匿名性が高まるという側面があります。

見せたくないコンテンツの閲覧禁止

例えば、会社でYouTubeを視聴することを禁じたい場合、インターネットへのアクセスにおいて必ずプロキシサーバを経由する仕組みを作れば、YouTubeへのアクセスが試みられても、プロキシサーバでアクセスをシャットアウトさせることができます。

キャッシュの共有

検索エンジンのトップページなど、共通して頻繁にアクセスするページがある場合においてもフォワードプロキシは有効です。プロキシサーバで社内でキャッシュの共有がなされるため、各ブラウザへの負荷が減るほか、より速いページ読み込みが可能となります。

あとがき

KagoyaCloudを利用して、出来る限り手早く低コストでフォワードプロキシを構築する方法のご紹介でした。

手軽にフォワードプロキシを使ってみたい、という方の参考になれば幸いです。

コメント

タイトルとURLをコピーしました