问题背景
今日在Windows10系统上安装了WSL2,之后安装了Ubuntu的系统,在Ubuntu系统上安装了宝塔面板。但是发现Ubuntu与Win10之间无法进行网络通讯,面板更加无法打开。
试了各种方法,最后找到了解决方法,这里记录一下。
问题重现
终极解决办法:
sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'重置Windows网络
在Win10的PowerShell上,使用管理员命令运行如下命令:
netsh winsock reset
netsh int ip reset all
netsh winhttp reset proxy
ipconfig /flushdns之后重启Windows系统即可。
外网访问配置
通过端口转发实现外网访问WSL2中的服务:
netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=localhost
netsh interface portproxy add v4tov4 listenport=21 listenaddress=0.0.0.0 connectport=21 connectaddress=localhost
netsh interface portproxy add v4tov4 listenport=8888 listenaddress=0.0.0.0 connectport=8888 connectaddress=localhost
netsh interface portproxy add v4tov4 listenport=801 listenaddress=0.0.0.0 connectport=801 connectaddress=localhost
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=localhost注意:Win底下是不支持上述的Linux命令行的多行输入格式的,需要手动调整。
参数说明:
- listenport:表示要监听的Windows端口
- listenaddress:表示监听地址,0.0.0.0表示匹配所有地址,比如Windows既有Wifi网卡,又有有线网卡,那么访问任意两个网卡,都会被监听到,当然也可以指定其中之一的IP的地址
- connectaddress:要转发的地址,这里设置为localhost,是因为我们可以通过localhost来访问WSL2,如果暂不支持,这里需要指定为WSL2的IP地址
- connectport:要转发到的端口
端口转发管理命令
查看所有转发规则:
netsh interface portproxy show all删除指定转发规则:
netsh interface portproxy delete v4tov4 listenport=22 listenaddress=0.0.0.0安装依赖:
apt install libcares2
apt install libc-ares2Win11 WSL2无法访问Host网络
在PowerShell(管理员)中执行:
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow

发表评论 取消回复