问题描述
使用wsl2时,wsl2内ubuntu22.04无法连接到atrust的代理,按照深信服社区给出的解释如下:
atrust不支持NAT模式场景下的使用。WSL相当于是windows系统自带的两种linux虚拟机,只是这个虚拟机是windows自带的子系统,可以参考https://docs.microsoft.com/zh-cn/windows/wsl/compare-versions了解WSL1和WSL2的区别。类比vmware的桥接模式和nat模式,桥接模式可以是因为他和主机相当于在一个二层网络,虚拟机可以用主机的虚拟网卡的路由;
NAT模式不行,是虚拟机和宿主主机都共用的物理网卡的ip,虚拟机的数据都会转成物理网卡的ip出去,自然不能访问隧道里面的应用。
解决办法
因为流量没有经过atrust,而是直接通过物理网卡直接发出去,所以思路为如果我们讲wsl的网卡桥接在物理网卡上,那么我们不就可以接入到atrust当中去了。
- 首先我们可以在hype v中查看wsl的网卡名称;
注意:只有当wsl2开启NAT模式的时候才会有虚拟网卡,mirror模式并不会存在虚拟网卡,因为子系统跟windows共用网络。 - 在powershell中讲wsl的虚拟网卡桥接到物理网卡当中去;
# 同时你可以通过Get-VMSwitch去知道你的wsl网卡目前的状态
Get-VMSwitch
# 将wsl虚拟网卡桥接到以太网中去,如果你的本机连接的是wifi,请将以太网修改成WIFI
Set-VMSwitch WSL -NetAdapterName 以太网
# 取消桥接
Set-VMSwitch WSL -SwitchType Internal
网上还有一些方法需要固定wsl的ip、gateway等参数,但是我使用如上命令就可以访问公司的内网了,可以使用telnet ip port进行测试。
参考文章:
https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=206013
https://zhuanlan.zhihu.com/p/488442403