2022/10/11 Updated by

Ubuntu on WSL2


[Up] Japanese English

インストール

docker をインストールするときに、WSL2 を有効にし、その上で Windows Store から Ubuntu 20.04 をインストールした


sshd の有効化

外部から ssh アクセスできるように sshd を立ち上げる。

  1. netstat コマンドを導入する
  2.   $ sudo apt install net-tools
    
  3. IP アドレスを確認する。
  4.   $ ifconfig -a
      ...(略)
      eth0: flags=4163  mtu 1500
              inet 172.21.157.41  netmask 255.255.240.0  broadcast 172.21.159.255
              inet6 fe80::215:5dff:fe98:3587  prefixlen 64  scopeid 0x20
              ether 00:15:5d:98:35:87  txqueuelen 1000  (Ethernet)
              RX packets 487  bytes 265843 (265.8 KB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 114  bytes 7900 (7.9 KB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
      lo: flags=73  mtu 65536
              inet 127.0.0.1  netmask 255.0.0.0
              inet6 ::1  prefixlen 128  scopeid 0x10
              loop  txqueuelen 1000  (Local Loopback)
              RX packets 0  bytes 0 (0.0 B)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 0  bytes 0 (0.0 B)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      ...(略)
    
  5. ネットワークの routing を確認する。
  6.   $ netstat -nr
      Kernel IP routing table
      Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
      0.0.0.0         172.21.144.1    0.0.0.0         UG        0 0          0 eth0
      172.21.144.0    0.0.0.0         255.255.240.0   U         0 0          0 eth0
    
  7. WSL2上の Ubuntu は、Windows からは仮想ネットワークで接続された別ホストとして見えていることがわかる。
  8.     Ubuntu on WSL2 : 172.21.157.41   (1010 1100 0001 0101 1001 1101 0010 1001)
        Docker host    : 172.21.144.1    (1010 1100 0001 0101 1001 0000 0000 0001)
        broadcast      : 172.21.159.255  (1010 1100 0001 0101 1001 1111 1111 1111)
        subnetmask     : 255.255.240.0   (1111 1111 1111 1111 1111 0000 0000 0000)
    
  9. Ubuntu on WSL2 で SSH サーバを起動する
  10.   $ sudo service ssh restart
    
  11. Docker host (Windows) でポートフォワーディングする。
  12. Windows の TCP 22 番ポートに来たパケットを Ubuntu on WSL2 (172.21.157.41) の 22 番ポートに転送する。

      [管理者権限のコマンドプロンプト上で]
    
      ポートフォワーディングを設定する
      % netsh.exe interface portproxy add v4tov4 listenport=22 connectaddress=172.21.157.41
    
      ポートフォワーディングを有効にする(IP Helper サービスを起動する)
      % sc.exe config iphlpsvc start=auto # ブート時の自動起動設定
      % sc.exe start  iphlpsvc            # サービスの起動
    
  13. ポートフォワーディングの設定を削除する方法
  14.   [管理者権限のコマンドプロンプト上で]
      % netsh.exe interface portproxy delete v4tov4 listenport=22
    
  15. Docker host (Windows) の SSH ポートフォワーディングを自動化する。
  16.