WSL2设置局域网网访问

本文介绍了如何在Windows环境下,通过netsh命令设置和管理WSL2虚拟机的端口转发,以实现外部访问WSL2内部服务。步骤包括查看WSL2 IP地址,设置端口转发规则,并验证转发状态。此外,还提供了删除端口转发的命令,以及遇到问题时可能需要检查的入站规则配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://www.cnblogs.com/guiyishanren/p/15763057.html

1、准备工作就绪,查看wsl2虚拟机的ip

ip addr show eth0

2、设置端口转发(需要管理员权限运行POWERSHELL)

格式
netsh interface portproxy add v4tov4 listenport=【宿主机windows平台监听端口】 listenaddress=0.0.0.0 connectport=【wsl2平台监听端口】 connectaddress=【wsl2平台ip】protocol=tcp



netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.30.144.91 protocol=tcp
或
netsh interface portproxy add v4tov4 listenport=80 listenaddress=* connectport=80 connectaddress=172.30.144.91 protocol=tcp

各项参数需根据实际情况进行调整

然后查看下端口转发状态:

netsh interface portproxy show all

在这里插入图片描述
如图所示端口转发成功。
找个在局域网的电脑访问一下本机的局域网ip地址测试即可。

到此我的同事可以成功访问了。

不成功的话可能需要配置下入站规则试试。

3、删除端口转发

格式
netsh interface portproxy delete v4tov4 listenport=【宿主机windows平台监听端口】 listenaddress=0.0.0.0

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=*
或
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=0.0.0.0

注意
写的是0.0.0.0删的时候也需要是0.0.0.0进行对应,不然会提示找不到文件。

### WSL 网络访问配置与故障排除 WSL(Windows Subsystem for Linux)的网络访问问题通常涉及其版本(WSL 1 或 WSL 2)、网络适配器配置以及宿主机的网络环境。以下是对WSL网络访问配置及常见故障排除的详细说明。 #### WSL 版本与网络访问特性 WSL 2 使用了一个虚拟化以太适配器,该适配器具有独立的IP地址[^2]。这意味着WSL 2实例的网络行为更接近于传统虚拟机,而WSL 1则直接使用宿主机的网络栈[^1]。因此,WSL 2网络配置可能需要额外的步骤来确保正常通信。 #### 配置WSL网络访问 1. **检查WSL版本** 确认当前使用的WSL版本是否为WSL 2,因为WSL 2网络访问方式有所不同。可以通过以下命令检查: ```bash wsl --list --verbose ``` 如果需要将某个发行版升级到WSL 2,可以运行: ```bash wsl --set-version <发行版名称> 2 ``` 2. **获取WSL的IP地址** 在WSL 2中,可以通过以下命令获取其内部IP地址: ```bash hostname -I ``` 或者在PowerShell中执行以下命令查看分配给WSL 2的IP地址: ```powershell wsl hostname -I ``` 3. **启用IPv6支持(如果需要)** 如果应用程序需要IPv6支持,可以按照以下步骤启用: - 在WSL中编辑`/etc/wsl.conf`文件,添加以下内容: ```ini [network] generateResolvConf = false ``` - 手动配置`/etc/resolv.conf`文件以包含正确的DNS服务器信息。 - 确保宿主机已启用IPv6支持,并通过以下命令测试: ```bash ping6 -c 4 ipv6.google.com ``` #### 故障排除常见问题 1. **无法访问外部网络** 如果WSL无法访问外部网络,可能是由于DNS配置错误或防火墙规则限制。尝试以下方法: - 检查`/etc/resolv.conf`文件中的DNS服务器配置是否正确。 - 在宿主机上临时禁用防火墙以测试连接性: ```powershell netsh advfirewall set allprofiles state off ``` 2. **宿主机无法访问WSL服务** 如果宿主机无法访问WSL 2中运行的服务(如Web服务器),需要确保WSL 2的IP地址正确配置,并开放相应的端口。例如,在WSL中启动一个HTTP服务后,可以通过以下方式访问: - 获取WSL 2的IP地址并从宿主机浏览器访问:`http://<WSL_IP>:端口号` - 如果需要固定IP地址,可以通过修改虚拟交换机的DHCP设置实现。 3. **跨平台网络通信问题** 如果需要WSL与其他设备在同一局域网中通信,建议检查宿主机的网络适配器设置,确保WSL 2的虚拟网络适配器能够正确获取局域网IP地址。 #### 示例代码:在WSL中运行并访问服务 以下是一个简单的Python HTTP服务器示例,展示如何在WSL中运行服务并从宿主机访问: ```python from http.server import HTTPServer, BaseHTTPRequestHandler class SimpleHTTPRequestHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.end_headers() self.wfile.write(b'Hello, WSL!') if __name__ == '__main__': server_address = ('', 8000) # 绑定所有接口 httpd = HTTPServer(server_address, SimpleHTTPRequestHandler) print("Server running on port 8000") httpd.serve_forever() ``` 运行上述代码后,可以从宿主机浏览器访问`http://<WSL_IP>:8000`。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值