AWS Squid on EC2로 프록시 서버 구축
이번에는 Public VPC에 프록시 서버를 도입하여보다 안전한 인터넷 연결 환경을 실현하고 싶습니다.
이번에 이용하는 프록시 서버 소프트웨어는 Squid 입니다. Squid는 웹 프록시, 캐시 프록시, 역방향 프록시로도 사용할 수 있습니다.
환경 구성
모든 EC2는 Windows Server 2012를 사용하며 Crawler Bot은 C#으로 제작되었습니다.
인스턴스
Private IP
설명
sample-proxy-ec2
10.100.0.19
프록시 서버
sample-private-ec2
10.100.1.12
CrawlerBot 서버
Squid 설치
Squid는 Unix 기반 시스템에서 작동하도록 설계되었지만 Windows 용 Squid의 경우 squid-cache wiki에서 찾을 수 있습니다.
squid.msi를 다운로드하여 실행하고 마법사를 따라 설치합니다.
설치 후 시작되고 Desktop의 오른쪽 하단에 아이콘이 표시되고 마우스 오른쪽 버튼을 클릭하면 설정 메뉴가 표시됩니다.
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"를 새로 추가
프로토콜 및 포트에서 로컬 포트를 3128에서 8080으로 수정
2. SecurityGroup
sample-proxy-ec2의 SecurityGroup을 열고 Inbound 규칙에 8080 추가
소통 확인
먼저 IE의 인터넷 옵션 – 연결 탭에서 LAN 설정을 클릭하여 Squid를 통해 설정합니다.
안전하게 인터넷 접속이 가능했습니다.
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());
}
}
}
}
참고 기사
Reference
이 문제에 관하여(AWS Squid on EC2로 프록시 서버 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tanj/items/b6a2547ca7615a3c5fd2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)