2
1

More than 3 years have passed since last update.

macでSSTP接続するために、Windowsにsquidを入れてproxyにした話

Last updated at Posted at 2020-09-05

なぜこんなことをしたのか

発端は、この方と同じような状況です。
VPNがsoftetherで作成されたのが発端でした。

当初はiSSTPが信頼できるアプリケーションなのかが判断つかなかったので、softetherのL2TP接続でmacから接続できないか、VPN作成側に依頼をしていました。

残念ながら接続はうまくいかず、結局iSSTPを導入して接続してみました。

  • CONNECTを連打しないと繋がらない
  • つながっても速度が異常に遅い
  • macの調子が悪いので再起動したら、Appleマークが出て起動に時間がかかる

など不安なことが多く発生し、「家にWindowsがあるのだからこれをproxyにして接続できるはずだ」という思いつきから始まりました。

Windowsをproxyサーバーにする

まずWindowsをどうproxyサーバーにすればいいかです。
導入の手間が最小のdockerイメージに、何かないかを探してみたところ、ちょうどよさそうな sameersbn/docker-squidがみつかりました。

以下の手順でdockerを導入し、Windowsをproxyサーバー化します。

1.Windowsに docker for Windows のインストール
2.Windowsの power shell を開く
3.以下のコマンドでdockerイメージを起動

docker run --name squid -d --restart=always --publish 3128:3128  sameersbn/squid:3.5.27-2

これで、power shellから

curl example.com -Proxy localhost:3128

でプロキシ経由でアクセスできるか試したのですが、エラーが発生。。。

以下のコマンドでsquidのログを確認。

docker exec -it squid tail -f /var/log/squid/access.log

すると

...(略)... 172.17.0.1 TCP_DENIED/403 ...(略)...

というエラーが出ていました。

このエラーをググってこの方の記事に辿り着き、squid.confにhttp_accessaclの指定がないとダメそうだなとわかりました。

dockerイメージのsquid.confの差し替え

まずコンテナ内の既存のconfをホストにコピーします。

docker cp squid:/etc/squid/squid.conf .

コピーしたsquid.confに、ログに出力されていたIPを通すように以下を追記します。

acl docker src 172.17.0.1
http_access allow docker

変更したconfでdockerを再起動します。
($pwdに関してはこの方の記事を参考)

# 既存に動作しているイメージを削除
docker rm -f squid

# pwdの指定
$pwd = "/$((pwd).Drive.Name.ToLowerInvariant())/$((pwd).Path.Replace('\', '/').Substring(3))"

# conf付きでイメージ起動
docker run --name squid -d --restart=always \
  --publish 3128:3128 \
  --volume ${pwd}/squid.conf:/etc/squid/squid.conf \
  sameersbn/squid:3.5.27-2

これで先ほどの以下のコマンドが成功するようになりました。

curl example.com -Proxy localhost:3128

macのproxyにWindowsを指定する

ここの公式の説明を参考に、

ネットワーク環境設定 > WiFi > 詳細 > プロキシ

  • Webプロキシ(HTTP)
  • 保護されたWebプロキシ(HTTPS)

それぞれに {WindowsのIPアドレス}:3128 を指定することで、proxyの設定は完了です。

これでブラウザからはVPN経由で接続でき、アクセス元のIP制限がされているWebページがmacから閲覧できるようになりました。

gitもproxy経由で接続する

本プロジェクトのgitも接続元IPが制限されていました。

上記のmacの設定では、gitはproxyを経由しないので、この方の記事を参考に、以下の指定をします。

git config --global http.[https://{gitドメイン}/].proxy http://{WindowsのIPアドレス}:3128

これで git clone でソースを落としてくることができるようになりました。

まとめ

同じように困っている方の助けになれば嬉しいです。

macからsoftetherにL2TPで接続する方法を教えてください 泣

2
1
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
2
1