2024年4月18日木曜日

Windows の WSL2 でてっとり早くインターネットに接続する方法

Windows の WSL2 でてっとり早くインターネットに接続する方法

概要

WSL2 はデフォルトだと NAT 接続になります
またネットワークアダプタは WSL2 専用のネットワークアダプタになるため例えば複数のネットワークアダプタがあり通常作業は別のネットワークアダプタから通信する場合には全くインターネットに接続できなくなります

ネット上の記事だと DNS の接続を変更したりプロキシの設定を変更したりすれば何とかなる記事が多くありますがそもそもネットワークが別で普段使っているネットワークに疎通できないのであれば普段使っている DNS やプロキシへもそもそもアクセスできないので意味がありません

今回はそんなときに簡単に WSL2 からインターネットにアクセスすることができる設定を紹介します

環境

  • WSL2 (Ubuntu 22.04)
  • Windows10 22H2

解決方法: ネットワークアダプタの共有設定を使う

Windows のネットワークアダプタには他のネットワークアダプタからの通信を共有する機能があります
これを使用することで普段使っているネットワークアダプタに対して WSL2 で作成されたネットワークアダプタからの通信を許可することでインターネットに接続できるようにします

まずはネットワークアダプタの設定から行います
普段使っているネットワークアダプタのプロパティを開き「共有」を選択します
するとネットワークを共有するアダプタを選択する画面になるので WSL2 が作成した「vEthernet (WSL)」を選択します

ちなみに自分の通常のネットワークは Wi-Fi アダプタになるので Wi-Fi アダプタに対して共有を設定を行っています

vEthernet (WSL) は以下のような表示です

WSL 側の設定

ネットワークを共有すると vEthernet (WSL) の IP アドレス帯が変わります
なのでこの IP を WSL (Ubuntu) に設定してあげます

  • sudo ip addr add 192.168.137.10/24 dev eth0
  • sudo ip route delete default
  • sudo ip route add default via 192.168.137.1

既存のネットワークに 192.168.137.10 という IP を付与しデフォルトゲートウェイを 192.168.137.1 にしているだけです
おそらくネットワーク共有すると同じ IP 帯になるはずなのでそのままコピペして Ubuntu で実行すれば OK です

DNS の設定

WSL2 の場合デフォルトだと vEthernet (WSL) の共有前のアドレスが DNS に設定されています
これはもう使わないので外部の DNS を使います

  • vim /etc/resolv.conf
nameserver 8.8.8.8

動作確認

これで apt update などもできるようになります

この構成の問題点

今回共有したネットワークは本当に普段使っているネットワークで自宅のマシンやスマホ、Chromecast などが存在しているネットワークになります
自宅のホームルータを抜けてインターネットに接続する経路になります

もしその経路ではなく VPN などを張っていて職場やプライベートな環境に WSL2 から通信したい場合にはこの方法ではできません
なぜなら共有しているネットワークアダプタが VPN 用のネットワークではなくただの自宅ネットワークだからです

もし WSL2 から VPN の経路も使いたい場合には VPN 用のネットワークアダプタにも vEthernet (WSL) からのアクセスを許可してあげれば OK です
ただその場合には外部に出るネットワークと VPN に行くネットワークの2つになるので適切に経路を設定してあげないとうまく動作しないので注意しましょう

Windows のネットワーク共有は1つのアダプタに対してのみから行えないようなのでどちらか一方のネットワークを使うしかないようです

最後に

WSL2 でプロキシなどの設定をせずにインターネットに接続する方法を紹介しました

インターネット以外のネットワークにも接続したい場合には更に工夫が必要なので注意しましょう
WSL2 にはブリッジ接続もあるようなのですそれを試すのもありかもしれません
また今回は無線だったのでネットワーク共有を使いましたが有線ネットワークだと今回の共有設定などはしなくても動くかもしれません

参考サイト

0 件のコメント:

コメントを投稿