5
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS Squid on EC2でプロキシサーバ構築

Posted at

AWS VPC環境構築 ピアリング接続でPublic VPC、Private VPCをそれぞれ作成し、接続可能な環境を構築しました。Private VPCのEC2上にクローラを動かして、NATGateway通してインターネット接続しています。
今回はPublic VPC上にプロキシサーバを導入し、より安全なインターネット接続環境を実現したいです。

今回利用するプロキシサーバーソフトはSquidです。SquidはWebプロキシ、キャッシュプロキシ、リバースプロキシとしても利用できます。

##環境構成
EC2はすべてWindows Server 2012を使い、Crawler BotはC#で作られています。

インスタンス Private IP 説明
sample-proxy-ec2 10.100.0.19 プロキシサーバ
sample-private-ec2 10.100.1.12 CrawlerBotサーバ

image1.png

##Squidインストール
SquidはUnixベースのシステムで動作するように設計されいますが、Windows 版のSquid については、squid-cache wikiから辿ることができるようです。
squid.msiをダウンロードして実行しますと、ウィザードに従いインストールします。
image2.png
インストール後起動され、Desktopの右下にアイコンが表示され、右クリックすると設定メニューが表示されます。
image3.png
Open Squid Configurationでsquid.confを開き編集できます。

##Squidの設定
Open Squid Configurationでsquid.confを開き、
1.許可するネットワークを指定します

squid.conf
#
# 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 10.100.0.0/24  # Public VPC
acl localnet src 10.100.1.0/24  # Private VPC
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
...

デフォルトのネットワークをコメントアウトして、許可するネットワークを指定します。
acl localnet src 10.100.0.0/24
acl localnet src 10.100.1.0/24

2.Squidの待ち受けポート番号設定

squid.conf
...
# Squid normally listens to port 3128
# http_port 3128
http_port 8080
...

ここで8080を利用

##FirewallとSecurityGroupの設定
1. Firewall
プロキシサーバにログインし、コントロールパネルから「Windows ファイヤーウォール」をクリック、詳細設定の画面で「受信の規則」に8080のTCPルール「Squid Proxy Port」を新規追加
image4.png
プロトコルおよびポートでローカルポートを3128から8080に修正
image5.png

2. SecurityGroup
sample-proxy-ec2のSecurityGroupを開き、Inboundルールに8080を追加
image6.png

##疎通確認
まずIEのインターネットオプション – [接続]タブの、「LAN の設定」をクリックし Squid を経由する設定を行います。
image7.png
無事インターネットアクセスができました。

CrawlerBotのプログラムも特に調整なしに動いた!

SampleCrawlerBot.cs
using System;
using System.Net;
using System.Windows.Forms;
using System.IO;

namespace SampleCrawlerBot
{
    public partial class CrawlerBot : Form
    {
        private Logger logger;

        public CrawlerBot()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Crawl html from url
        /// </summary>
        public void Crawl()
        {
            logger = new Logger();
            string url = "https://office.yahoo.co.jp/";
            try
            {
                HttpWebRequest req = (HttpWebRequest)System.Net.WebRequest.Create(url);
                req.Method = "GET";

                HttpWebResponse res;
                //サーバーからの応答を受信するためのWebResponseを取得
                res = (HttpWebResponse)req.GetResponse();

                StreamReader reader = new StreamReader(res.GetResponseStream());
                
                logger.Write(reader.ReadToEnd());
                req.Abort();
            }
            catch (Exception ex)
            {
                logger.Write(ex.ToString());
            }
        }
    }
}

##参考記事

5
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?