LoginSignup
2
4

More than 1 year has passed since last update.

WSL2で簡易プロキシサーバーを立てる

Posted at

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

最後に

動作確認用なので、できるだけ簡単にできる方法を選んでみた感じです。
ほかにもっと簡単な方法が、などあればコメントいただけるとうれしいです。

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