アプリケーション開発ポータルサイト
ServerNote.NET
カテゴリー【WindowsUbuntu
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
POSTED BY
2023-09-08

Windows11+WSL2でUbuntuを使う【1】インストール

WSLを外部からアクセスできるサーバーとして使いたいので、ホストWindowsと同格のネットワークのIPをもらうブリッジ接続を設定し、さらにネットワーク内固定IPを設定する。

Hyper-Vシステムを有効にする

デフォルトではインストールされていないが、Windows11 ProにはHyper-Vが付属する。まずこれを有効にする。

コントロールパネル→プログラム→Windowsの機能の有効化または無効化

トップレベルの「Hyper-V」項目にチェックを入れる。(その下サブツリーすべてにチェックが入る)。

で「OK」としてインストール、必要な変更が完了しました→今すぐ再起動

再起動後、

コントロールパネル→システムとセキュリティ→Windowsツール→Hyper-Vマネージャーを開く

左ペインのマシン名をクリックして、右の「操作」パネルにある「仮想スイッチマネージャー」を起動

新しい仮想ネットワークスイッチ→仮想スイッチの作成→「外部」を選択し「仮想スイッチの作成」

名前「External」などとする。
「接続の種類」を「外部ネットワーク」を選択し、
プルダウンは物理ネットワークアダプターを選ぶ(Intel Proなど)。
「管理オペレーティングシステムにこのネットワークアダプターの共有を許可する」をチェック。

「OK」で閉じて、ネットワーク設定を更新する。一時的にネットが遮断される可能性あり。

コマンドプロンプトを起動して、

ipconfig

イーサネット アダプター vEthernet (External):

などと、物理ネットワークアダプタに、設定した「External」がついていればOK。

ホームフォルダ直下に.wslconfigファイルを作成

通常であれば、

C:\Users\hogeuser\.wslconfig

というWSLに対する指示ファイルを手動作成する。以下の内容を書く。

[wsl2]
networkingMode=bridged
vmSwitch=External
dhcp=true
ipv6=true

ipv6が不要なら、ipv6行は記述しなくてよい。

WSLを再起動しブリッジネットワークの確認をする

スタート→ PowerShell右クリック→管理者として実行
PowerShell 7.3.6

wsl --shutdown
wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Stopped         2
wsl

とし、WSLの再起動をする。そのままプロンプトに入るので、IPがもらえているか確認する。

ip a

1: lo: <loopback> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <broadcast> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 5c:bb:f6:9e:ee:fa brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.9/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2405:6580:cd40:4f00:5ebb:f6ff:fe9e:eefa/64 scope global dynamic mngtmpaddr
       valid_lft 14254sec preferred_lft 12454sec
    inet6 fe80::5ebb:f6ff:fe9e:eefa/64 scope link
       valid_lft forever preferred_lft forever
</broadcast></loopback>

eth0に、ちゃんと192.168.1.9/24という、ホストWindowsと同格のネットワークIPがもらえていることを確認。
これで、別のマシンから192.168.1.9=WSLにアクセスできることになる。

固定IPの設定を行う

このままだと起動のたびにIPが変わってしまうので、WSL内で固定IP設定記述ファイルを設置する。

/etc/netplan/99-static-ip.yaml

sudo -s
cd /etc/netplan
cat > 99-static-ip.yaml

内容は以下のような感じ

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      dhcp6: true
      addresses:
        - 192.168.1.33/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 192.168.1.1

ホストネットワークのゲートウェイ、DNSサーバがともに192.168.1.1である場合の設定。
192.168.1.33を固定IPとしている。dhcp4: falseとするのがポイント。

ネットワークに反映する。

sudo -s
netplan apply

WARNING: systemd-networkd is not running, output will be incomplete.

Failed to reload network settings: No such file or directory
Falling back to a hard restart of systemd-networkd.service

なんかエラーが出てしまった。これ、どうやらsystemd-networkdが立ち上がってないぞ、ということっぽいが、そんなことあり得るのだろうか・・??

systemctl status systemd-networkd

● systemd-networkd.service - Network Configuration
     Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled-runtime; vendor preset: enabled)
     Active: active (running) since Fri 2023-09-08 18:05:52 JST; 46min ago
TriggeredBy: ● systemd-networkd.socket
       Docs: man:systemd-networkd.service(8)
   Main PID: 644 (systemd-network)
     Status: "Processing requests..."
      Tasks: 1 (limit: 19166)
     Memory: 2.8M
     CGroup: /system.slice/systemd-networkd.service
             └─644 /lib/systemd/systemd-networkd

Sep 08 18:05:52 Artria-Win systemd[1]: Starting Network Configuration...
Sep 08 18:05:52 Artria-Win systemd-networkd[644]: eth0: Link UP
Sep 08 18:05:52 Artria-Win systemd-networkd[644]: eth0: Gained carrier
Sep 08 18:05:52 Artria-Win systemd-networkd[644]: lo: Link UP
Sep 08 18:05:52 Artria-Win systemd-networkd[644]: lo: Gained carrier
Sep 08 18:05:52 Artria-Win systemd-networkd[644]: eth0: Gained IPv6LL
Sep 08 18:05:52 Artria-Win systemd-networkd[644]: Enumeration completed
Sep 08 18:05:52 Artria-Win systemd[1]: Started Network Configuration.

ps aux | grep systemd

root          46  0.0  0.0  47820 15284 ?        S<s root ss systemd message snote pts s grep>

systemd-networkdは存在している。もう一度やってみた。

<pre>
netplan apply
今度は何もエラー無く完了。さて、固定IPが付与されているか見てみる。
 ip a

1: lo: <loopback> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <broadcast> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 5c:bb:f6:9e:ee:fa brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.33/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2405:6580:cd40:4f00:5ebb:f6ff:fe9e:eefa/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 14360sec preferred_lft 12560sec
    inet6 fe80::5ebb:f6ff:fe9e:eefa/64 scope link
       valid_lft forever preferred_lft forever
</broadcast></loopback>
99-static-ip.yamlのとおりに設定されている。ゲートウェイへPINGしてみてチェック。
ping 192.168.1.1

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=1.22 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=1.18 ms
^C
--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.179/1.201/1.223/0.022 ms
問題なし。どうもWSLってデーモンが自動で立ち上がってくれないことがある。networkdもそれか…?次回以降でそのあたりの自動起動まわりも要調査ですね。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

【キーワード検索】