LoginSignup
8
10

More than 1 year has passed since last update.

WSL2をブリッジ接続にして解決できることと出来なくなること

Posted at

最新のWSL Previewを使用すると簡単にWindowsホストにブリッジ接続できます。詳しくはWSL2ネットワークを新機能でブリッジモードに変更する(IPv6も利用可)を参照してください。

ブリッジすることで、いくつかの問題を解決できると思いますが、逆にできなくなることもあります。

今回はそのあたりをまとめておきます。

ブリッジ接続で解決すること

IPv6接続が可能になる

WSL2をIPv6ネットワークに接続するに書いたように現行のWSL2(Windows10を含む)でも、DHCPv6-PDでのプレフィクス移譲を受けてIPv6接続できます。ただし、これは接続ネットワークが複数プレフィクスを持っていて下流に委譲できるような、一例としてはNTTのフレッツ光ネクストのような環境でないと利用できません。対して、ブリッジ接続が可能になると、WindowsホストがIPv6通信できる環境であればWSLインスタンスも同様にIPv6接続が可能になります。しかも非常にお手軽です。

NATの問題が解決する

筆者は経験していないのではっきりとは申し上げられませんが、一部環境ではMTUを調整しないと通信できないという現象が発生しているようです。WSL Preview 0.47.1にてMTUの自動調整機能が入っているので、それを使えば解決できるのかもしれませんが、ブリッジ接続するとWindowsホストの内側のネットワークで生じていたNATやMTU等の問題には影響を受けなくなります。

DNSの問題が解決する

Hyper-V?ICS?HCS?で提供されるDNSサーバはEDNS0やTCPでの参照に対応していません。このため、レスポンスが大きくなるようなDNS参照を行うと結果を受け取れない問題があります。一般的な解決方法は、パブリックDNSやWindowsホストが参照するDNSサーバを/etc/resolv.confに追記することですが、ブリッジすると問題のあったWindows内部のDNSサーバは参照しません。よってこの問題も解決します。

IPアドレスがころころ変わらない

WSL2の通常のネットワークはHyper-V同様に起動するたびにネットワークがアサインされ、その中で適当なIPアドレスが割り振られます。つまり、起動するたびにIPアドレスが変わってしまいます。ブリッジ接続の場合、IPアドレスはWindowsホストと同じDHCPサーバから受け取ることになりますが、MACアドレスを指定できるので毎回同じIPアドレスを受け取ることが可能です。DHCPサーバで永続的に固定してしまうことも可能でしょう。

ポートフォワードが必要ない

WSLインスタンスでsshd等のネットワークサービスを起動した場合、PCの外部からは直接は見えない場所にあるので、他のノードからアクセスする場合にはWindowsホストにてパケットを転送しないといけません。
ブリッジしていると他のノードからもWindowsからは独立したノードとしてアクセスが可能になります。

逆にできなくなることや変わってしまうこともあります

WindowsのVPNが使えない

まずWindowsで接続したVPNが使えません。ブリッジするとWSLから外部への通信はWindowsホストを経由しません。経由しないということはWindowsホストが接続しているVPNもWSLには影響を及ぼしません。WSLインスタンス(Linux)でVPN接続を行うかブリッジを解除して通常のWinNAT経由での接続にもどせばVPNの利用は可能です。

WSLからWindowsホストのIPアドレスがわからない

WSL2では通常/etc/resolv.confのネームサーバのアドレス、あるいはデフォルトゲートウェイのアドレスがWindowsホストを指示しています。しかし、ブリッジ接続してしまうと、/etc/resolv.confはDHCPサーバが通知してきたDNSサーバ、デフォルトゲートウェイは上流のルータとなりWindowsホストがわからなくなります。ただし、Windowsコマンドが実行可能なため、ipconfig.exeやPowerShellのコマンドレットを使えばWindowsホストのIPアドレスを知ることは可能です。

ホストのネットワークアダプタが変わってしまう

クライアントPCの場合ネットワークインタフェースは通常一つしかないので、外部仮想スイッチを作成するとWindowsが使用するネットワークアダプタも作成した仮想スイッチに切り替わります。この場合、多少なりともWindowsホストのネットワークパフォーマンスに影響があるようです。実際には差が感じられなかったので、最近のWindows?ハードウェア?であれば影響はあまりないのかもしれません。気になるようならインタフェースを拡張すればWindows用と分けられます。

内部仮想スイッチと通信できない

WSL2の標準ネットワークは *.mshome.net でHyper-Vインスタンスと通信できますが、外部仮想スイッチに接続が切り替わるとDefault Switchをはじめ内部仮想スイッチとの通信ができなくなります。
.wslconfigの設定としては以下のようになっているので、複数指定できるようになれば解決するのですが、同じ項目を複数設定しても最後のものだけがが有効になります。
複数の仮想スイッチに接続出来ればVPNの問題も解決できそう?

networkingMode=bridged   ... DHCPからIPアドレス、DNSサーバ等の情報を受け取る
networkingMode=default   ... HCSからIPアドレス、DNSサーバ等の情報を受け取る

vmSwitch=<スイッチ名>     ... 任意のスイッチを指定出来るDefault Switch, WSLも可
8
10
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
8
10