🌐

squidとngrokを使ったプロキシの構築

2023/08/03に公開

はじめに

squidを利用してプロキシサーバを立てて、ngrokで外部公開し、プロキシ経由でのインターネットアクセス環境を構築するのに少し手間取ったのでメモがてら残しておきます。

前提

  • Docker Engineをインストールしてあること
  • ngrok導入済みであること ※ngrokもdockerで用意してもいいかもしれません。今回はホストに導入してます

手順

ファイル準備

今回はdocker-composeを利用してサクッと立ち上げました。

docker-compose.yml
version: '3'

services:
  squid:
    image: sameersbn/squid:3.5.27-2
    volumes:
      - ./squid.conf:/etc/squid/squid.conf
    ports:
      - "3128:3128"

squidの設定はお好みに合わせてください。便宜上全開放してます。

squid.conf
http_port 3128
acl all src 0.0.0.0/0.0.0.0
http_access allow all

起動

Docker立ち上げます。

docker-compose up -d

そのあと、ngrokを立ち上げます。ポイントはtcpにすること。

ngrok tcp 3128

実行後、以下表示されたら成功です。

ngrok                                                                                                         (Ctrl+C to quit)

🤯 Try the ngrok Kubernetes Ingress Controller: https://ngrok.com/s/k8s-ingress                                               

Session Status                online                                         
Account                       xxxxxx (Plan: Free)           
Update                        update available (version 3.3.2, Ctrl-U to update)                                              
Version                       3.2.2                                           
Region                        Japan (jp)
Latency                       8ms
Web Interface                 http://127.0.0.1:4040
Forwarding                    tcp://xxx.ngrok.io:17976 -> localhost:3128
Connections                   ttl     opn     rt1     rt5     p50     p90
                              6       0       0.00    0.00    0.19    0.27  

動作確認

curlで確認です。proxyオプションでngrokで解放されたURLを指定しましょう。ただし、その際はプロトコルはhttpに。

% curl  --proxy http://xxx.ngrok.io:17976 httpbin.org/ip
{
  "origin": "172.19.0.1, xxx.xxx.xxx"
}

Discussion