新建 Hyper-V 虚拟交换机

1.打开Hyper-V功能, 重启Windows

2.重启后, 打开Hyper-V虚拟交换机

新建一个外部交换机, 选择你连接互联网的以太网/无线网, 命名为LAN(其他的名字也可以, 自己在后面相应修改)

修改wsl网络模式为桥接

3.修改.wslconfig, 添加以下内容

.wslconfig文件 在 C:\Users\yourusername 下, 如果没有, 自行创建

如果需要改成和宿主机同样的IP, 则修改为 networkingmode=mirrored

.wslconfig 的解释

[wsl2]
vmSwitch=LAN
networkingMode=bridged
ipv6=false
dhcp=false

修改完.wslconfig文件后, 重启一下wsl, 大概等待10秒后, 开启wsl

wsl --shutdown
wsl

第三步, 修改静态IP

4.切换到wsl中, 这里以Ubuntu为例, 编辑/etc/wsl.conf

sudo nano /etc/wsl.conf

添加以下内容

[Match]
Name=eth*
 
[Network]
DHCP=ipv4

5.重启一下 wsl 服务

wsl --shutdown

也重启一下网络服务

sudo systemctl restart systemd-networkd.service

6.新建netplan网络配置文件

sudo nano /etc/netplan/ubuntu-config.yaml

填入以下内容, 这里的 192.168.1.10/24 修改为自己想要的静态IP地址

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.10/24 # IP地址 根据您需要的IP地址调整
      routes:
        - to: default
          via: 192.168.1.1  # 网关地址 根据您的网关地址调整
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4, 192.168.1.1]  # DNS服务器地址 根据需要调整

设置权限, 使其只能被root用户访问 (不设置也行, 不设置系统会警告你...)

chmod 600 /etc/netplan/ubuntu-config.yaml

7.应用网络设置

sudo netplan apply

可能会看到以下警告, 因为wsl修改了网络模式, 警告是正常的, 不用管

WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running.

8.重启 或 刷新网络设置

reboot
sudo systemctl restart systemd-networkd.service

9.查看IP地址

ip addr show

看到以下输出, 说明静态IP设置成功

ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> 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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 5e:bb:f6:9e:ee:fa brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever

DNS 设置

sudo nano /etc/resolv.conf

填入以下内容

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 192.168.1.1 # DNS服务器地址 根据需要调整

重启网络服务

sudo systemctl restart systemd-networkd.service

检查网络连接

ping google.com
PING google.com (142.250.76.110) 56(84) bytes of data.
64 bytes from syd09s24-in-f14.1e100.net (142.250.76.110): icmp_seq=1 ttl=118 time=1.17 ms
64 bytes from syd09s24-in-f14.1e100.net (142.250.76.110): icmp_seq=2 ttl=118 time=1.69 ms
64 bytes from syd09s24-in-f14.1e100.net (142.250.76.110): icmp_seq=3 ttl=118 time=1.66 ms
64 bytes from syd09s24-in-f14.1e100.net (142.250.76.110): icmp_seq=4 ttl=118 time=0.807 ms

看到ping成功, 则说明没有问题

如果输出ping: google.com: Temporary failure in name resolution 说明DNS设置有问题