LoginSignup
9

More than 1 year has passed since last update.

posted at

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

最新の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も可

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
What you can do with signing up
9