GCE에서 Squid를 사용하는 Proxy Server 입법

특정 사이트에 대한 접근이 특정 IP 주소로 차단된 것이 아니라 IP 주소가 예약되어 있기 때문에 Proxy 서버를 구축하여 해결하고자 합니다. 그래서 이번에 GCE에 Squid라는 Proxy 서버라는 간단한 소프트웨어가 있어서 이 소프트웨어를 사용했습니다.다음은 당시의 절차를 소개한다.

Squid 소개


Squid는 HTTP, HTTPS, FTP 등에 대응하는 caching proxy입니다.캐시와 자주 방문하는 사이트를 다시 사용하면 대역폭을 줄이고 응답 시간을 높일 수 있다.Squid는 광범위한 액세스 제어 기능을 갖추고 있어 서버의 기능을 향상시킬 수 있다.UNIX 및 Windows에서 실행되며 GNUGPL에서 라이센스를 받을 수 있습니다.

VM 인스턴스 만들기


※ 기재된 곳은 특별한 변경이 없습니다.
  • 이름
  • 구역
  • asia-northeast1(도쿄)
  • 구역
  • asia-northeast1-b
  • 기계의 구조
  • 기계족
  • 범용
  • 시리즈
  • E2
  • 기계 유형
  • e2-micro(2vCPU, 1GB 스토리지)
  • 부팅 디스크
  • OS
  • Ubuntu
  • 버전
  • Ubuntu 20.04 LTS
  • 부트 디스크 종류
  • 밸런스 지속 디스크
  • 크기
  • 10
  • 액세스 범위
  • 기본 액세스 허용
  • 방화벽
  • HTTP 비즈니스 허용
  • HTTPS 비즈니스 허용
  • 외부 IP의 예약 및 응용


    방문지 등에 IP 제한을 두는 등 특정 IP 주소를 프록시 서버에 적용하려면 VPC 네트워크→외부 IP 주소 중 예약 후 적용할 VM 인스턴스를 선택해 대응한다.

    VM 인스턴스에 SSH 연결


    생성된 VM 인스턴스의 SSH 버튼에서 gcloud 명령을 가져와 실행하고 인스턴스에 연결하십시오.

    Squid 설정


    Squid 설치


    sudo apt install squid
    
    설치 완료 후 버전 확인
    sudo squid -v
    

    squid.conf 설정


    초기 설정을 보고 싶다면 아래 명령을 통해 확인할 수 있다.
    $ grep -v '^#' /etc/squid/squid.conf | grep -v '^$'
    acl localnet src 0.0.0.1-0.255.255.255	# RFC 1122 "this" network (LAN)
    acl localnet src 10.0.0.0/8		# RFC 1918 local private network (LAN)
    acl localnet src 100.64.0.0/10		# RFC 6598 shared address space (CGN)
    acl localnet src 169.254.0.0/16 	# RFC 3927 link-local (directly plugged) machines
    acl localnet src 172.16.0.0/12		# RFC 1918 local private network (LAN)
    acl localnet src 192.168.0.0/16		# RFC 1918 local private network (LAN)
    acl localnet src fc00::/7       	# RFC 4193 local private network range
    acl localnet src fe80::/10      	# RFC 4291 link-local (directly plugged) machines
    acl SSL_ports port 443
    acl Safe_ports port 80		# http
    acl Safe_ports port 21		# ftp
    acl Safe_ports port 443		# https
    acl Safe_ports port 70		# gopher
    acl Safe_ports port 210		# wais
    acl Safe_ports port 1025-65535	# unregistered ports
    acl Safe_ports port 280		# http-mgmt
    acl Safe_ports port 488		# gss-http
    acl Safe_ports port 591		# filemaker
    acl Safe_ports port 777		# multiling http
    acl CONNECT method CONNECT
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access allow localhost manager
    http_access deny manager
    include /etc/squid/conf.d/*
    http_access allow localhost
    http_access deny all
    http_port 3128
    coredump_dir /var/spool/squid
    refresh_pattern ^ftp:		1440	20%	10080
    refresh_pattern ^gopher:	1440	0%	1440
    refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
    refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
    refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
    refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
    refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
    refresh_pattern .		0	20%	4320
    
    이하vim 열기
    sudo vim /etc/squid/squid.conf
    
    1907행 포트 8080에서 192.168.0.2의 고객이 액세스할 수 있는 프록시 서버로 구성됩니다.
    http_port 8080
    
    제1193행은 고객의 요청 허가를 받았다.
    acl localnet src 192.168.0.0/16         # RFC 1918 local private network (LAN)
    
    전송 소스 IP로 클라이언트 IP를 1196 행에 설정합니다.
    ※ 클라이언트 IP 웹 사이트https://www.cman.jp/network/support/go_access.cgi 획득 가능
    acl src allowaddress <client ip>/255.255.255.255
    
    1392~1394 행에 방금 추가한 allowaddress 추가
    http_access allow localhost manager allowaddress
    http_access deny manager
    http_access allow allowaddress
    
    최종적으로 다음과 같다.
    $ grep -v '^#' /etc/squid/squid.conf | grep -v '^$'
    acl localnet src 0.0.0.1-0.255.255.255	# RFC 1122 "this" network (LAN)
    acl localnet src 10.0.0.0/8		# RFC 1918 local private network (LAN)
    acl localnet src 100.64.0.0/10		# RFC 6598 shared address space (CGN)
    acl localnet src 169.254.0.0/16 	# RFC 3927 link-local (directly plugged) machines
    acl localnet src 172.16.0.0/12		# RFC 1918 local private network (LAN)
    acl localnet src 192.168.0.0/16		# RFC 1918 local private network (LAN)
    acl localnet src fc00::/7       	# RFC 4193 local private network range
    acl localnet src fe80::/10      	# RFC 4291 link-local (directly plugged) machines
    acl allowaddress src <client ip>/255.255.255.255
    acl SSL_ports port 443
    acl Safe_ports port 80		# http
    acl Safe_ports port 21		# ftp
    acl Safe_ports port 443		# https
    acl Safe_ports port 70		# gopher
    acl Safe_ports port 210		# wais
    acl Safe_ports port 1025-65535	# unregistered ports
    acl Safe_ports port 280		# http-mgmt
    acl Safe_ports port 488		# gss-http
    acl Safe_ports port 591		# filemaker
    acl Safe_ports port 777		# multiling http
    acl CONNECT method CONNECT
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access allow localhost manager allowaddress
    http_access deny manager
    http_access allow allowaddress
    include /etc/squid/conf.d/*
    http_access allow localhost
    http_access deny all
    http_port 8080
    coredump_dir /var/spool/squid
    refresh_pattern ^ftp:		1440	20%	10080
    refresh_pattern ^gopher:	1440	0%	1440
    refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
    refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
    refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
    refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
    refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
    refresh_pattern .		0	20%	4320
    
    squid.이상은conf의 설정입니다.설정을 반영하기 위해 squid를 다시 불러옵니다.
    다시 불러온 후 squid.conf 오류 등이 있으면 squid가 시작되지 않습니다. 정상적으로 시작되었는지 확인하십시오
    액티브가 active라면 문제 없어요.만약 문제가 발생하면 아래에 오류 로그 등이 있을 테니 그 문제를 해결해 주세요.
    $ sudo systemctl reload squid
    

    포트 해방(방화벽 규칙 제작)


    포트에 접근할 수 있습니다.
  • 명칭(default-allow-880)
  • 로그
  • 종료
  • 네트워크
  • default
  • 비즈니스 방향
  • 상행
  • 일치시 동작
  • 라이센스
  • 목표
  • 지정된 대상 레이블
  • 타겟 레이블
  • use-8080
  • 소스 필터
  • IPv4 범위
  • 소스 IPv4 범위 전송
  • 0.0.0.0/0
  • 192.168.2.0/24

  • https://www.cman.jp/network/support/go_access.cgi 사이트를 통해 알 수 있는 IP 등
  • 프로토콜 및 포트
  • 지정된 프로토콜 및 포트
  • tcp
  • 8080
  • VM 인스턴스에 적용


    인터넷 라벨이 이미 http-serverhttps-server있다고 생각합니다. 거기에 방금 만든 use-8080를 추가해 주세요.

    고객의 포트가 비어 있는 SSH 요청인지 여부


    VM 인스턴스 생성 시 설정된 ssh의 공개 키 확인 포트 사용
    $ sudo systemctl status squid
    

    해방전


    ssh -i ~/.ssh/<file_name> -v -p 8080 <vmインスタンス外部ip>
    

    해방 후


    $ ssh -i ~/.ssh/<file_name> -v -p 8080 <vmインスタンス外部ip>
    ...
    ssh: connect to host <VMインスタンスIP> port 8080: Operation timed out
    

    Curl로 프록시 소통 확인


    200OK면 주문방송 정상 통과했으니까 소통 확인 완료!
    $ ssh -i ~/.ssh/<file_name> -v -p 8080 <vmインスタンス外部ip>
    ...
    debug1: Connection established.
    ...
    ssh_exchange_identification: Connection closed by remote host
    

    프록시 서버 사용


    프록시 서버가 시작되었으니 Chrome에서 확장된 Proxy Helper를 사용하여 클라이언트 IP와 프록시 서버를 쉽게 전환할 수 있습니다!
  • Proxy Servers
  • HTTP Proxy
  • VM 인스턴스 외부 IP
  • PORT
  • 8080
  • https://chrome.google.com/webstore/detail/proxy-helper/mnloefcpaepkpmhaoipjkpikbnkmbnic?hl=ja

    좋은 웹페이지 즐겨찾기