WSL2+docker そして外部通信がブロックされてしまう問題対策

WSL2からホストのネットワークと独立して、起動時に仮想アダプタを生成してそこからインターネットに接続します。ところが、カスペルスキーやSymantecのサードパーティー製ファイアウォールがこの通信をブロックしてしまいます。

暫定回避策

Win10のホストとの通信はできるので、squidなどのプロキシサーバーをホスト上で稼働させて、WSL2=>squid=>internetというプロキシ環境下で当面使うことにします。(はやく修正してくれ!)

Squid for windowsのインストール

https://squid.diladele.com/

インストールすると、デフォルトでは3128番ポートでsquidがサービスとして稼働します。今回はデフォルトで稼働させます。

WSL2のプロキシ設定

.bashrcにプロキシの設定を行います。

> vi ~/.bashrc

export http_proxy="http://<windows host ip address>:3128"
export https_proxy="http://<windows host ip address>:3128"

> source ~/.bashrc

sudoでプロキシ設定を引き継ぐ

コマンド引数で環境変数を引き継ぐ場合

> sudo -E apt update

面倒な場合、以下のようにすると、sudo時のユーザに環境変数の値を引き継ぐ設定を行う

> cd /etc/sudoers.d
> sudo vi myuser

Defaults env_keep += "PATH"
Defaults env_keep += "http_proxy"
Defaults env_keep += "https_proxy"

念のためコンソール等再起動して以下で通信できればOK

> sudo apt update
> sudo upgrade
> sudo apt install xxxx

docker のプロキシ設定

WSL2からWindows版Dockerをインストールしなくても、本物Linuxと同じようにインストールができます。

https://docs.docker.com/engine/install/ubuntu/

> sudo apt-get remove docker docker-engine docker.io containerd runc
> sudo apt-get update

> sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

> curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

> sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

> sudo apt-get update
> sudo apt-get install docker-ce docker-ce-cli containerd.io
> sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
> sudo chmod +x /usr/local/bin/docker-compose

dockerグループにユーザを追加して、dockerを起動する

> sudo gpasswd -a $USER docker

> sudo service docker start

が、しかしdockerでイメージを取得するときもやはりプロキシ設定が必要になります。

> sudo vi /etc/default/docker

export http_proxy="http://<windows host ip address>:3128"

dockerを再起動して、hello-worldコンテナを取得&実行できればOK

> sudo service docker restart
> docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.
:

> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        5 months ago        13.3kB