なぜこんなことをしたのか
発端は、この方と同じような状況です。
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_accessとaclの指定がないとダメそうだなとわかりました。
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で接続する方法を教えてください 泣