Windows環境で開発をしていて、動作確認のためにベーシック認証付きのフォワードプロキシが必要になりました。フォワードプロキシでは Squid がよく使われますが、ここでは tinyproxy を使ってプロキシサーバーを立てて対応しました。
環境
- Windows 10 22H2
- Ubuntu 22.04.1 LTS (GNU/Linux 5.15.79.1-microsoft-standard-WSL2 x86_64)
WSL2の環境の構築については、以下のページなどに書かれています。
https://learn.microsoft.com/ja-jp/windows/wsl/install
tinyproxyのインストール
Ubuntuのパッケージが提供されていますので、そのままインストールします。(あらかじめ apt update
しておきましょう)
$ sudo apt install tinyproxy
設定ファイルの編集
ここではベーシック認証を設定するほか、プライベートアドレスからのアクセス許可を設定します。
sudo vi /etc/tinyproxy/tinyproxy.conf
- プライベートアドレスからのアクセス許可
以下の部分のコメントアウトを解除します。必要に応じて範囲を絞ってもいいと思います。
Allow 192.168.0.0/16
Allow 172.16.0.0/12
Allow 10.0.0.0/8
- ベーシック認証
コメントアウトされているBasicAuth
に続けて、必要なユーザー・パスワードを書きます。平文でOKです。
#BasicAuth user password
BasicAuth user1 hogehoge
BasicAuth user2 fugafuga
起動
ここでは動作確認用なので、単純に起動します。
$ sudo tinyproxy
停止は、私は単純に以下のような感じで kill
していました。
$ ps -ef | grep tinyproxy
tinypro+ 2570 65 0 15:35 ? 00:00:00 tinyproxy
$ sudo kill 2570
WSL2のportproxy
WSLではWSLで起動したプロセスに対してネットワーク側からアクセスできましたが、WSL2ではローカルのIPアドレスが付与され、ネットワーク側からアクセスできません。そのため管理者のPowerShellから以下のようなコマンドを実行してアクセスできるようにします。
> netsh interface portproxy add v4tov4 listenport=8888 listenaddress=0.0.0.0 connectport=8888 connectaddress=172.31.xxx.xxx
なお、 connectaddress
はWSL2に付与されたアドレスです。WSL2の中で ip address show eth0
コマンドなどで取得します。
このアドレス、PC再起動ごとに変わってしまうのが面倒だったりしますが、動作確認用なので気にしないでおきます。
以下のページを見たところ、この辺は今後改良されていくかもしれません。
https://learn.microsoft.com/ja-jp/windows/wsl/networking
最後に
動作確認用なので、できるだけ簡単にできる方法を選んでみた感じです。
ほかにもっと簡単な方法が、などあればコメントいただけるとうれしいです。