我如何使用Cisco Anyconnect在WSL 2中获得联网和X11转发?



所以我可以在WSL2中获得X11转发工作,例如,如何在WSL2上设置工作X11转发。然后,在连接到Cisco AnyConnect服务器后,我遇到了网络功能问题,但我使用WSL 2 Cisco AnyConnect网络解决方案解决了这个问题。这包括手动设置/etc/resolv.conf以包含我需要的DNS名称服务器,尽管X11的DISPLAY变量应该通过对X11问题的回答来设置。

但是一旦我连接到AnyConnect,我就不能再转发X11应用程序,其中甚至包括vim,除非我添加-X参数(看起来很奇怪,但我知道什么)。这些应用不会在显示设置中显示错误,它们只是不显示。只要我从VPN断开连接,相同的命令就可以正常工作。无论需要发生的网络设置如何,都会发生这种情况,所以我认为它只与AnyConnect本身有关,但也许我需要运行额外的Powershell命令,以便显示工作?什么好主意吗?

我在WSL2环境中也有同样的问题。一旦我通过Cisco AnyConnect打开VPN连接,我在DISPLAY环境变量中为X11转发设置的默认网络接口(我从/etc/resolv.conf中检索-与您指出的方法相同)不再可访问。

然后我从WSL2端寻找任何Windows网络接口ping-able,并且具有6000端口可达(因为这个端口似乎是默认用于与X服务器(如VcXsrv)建立X11连接的端口)。幸运的是,我发现VPN上为Windows主机打开了虚拟网络接口,符合以下条件:

Name                       : Ethernet 2
InterfaceDescription       : Cisco AnyConnect Secure Mobility Client Virtual Miniport Adapter for Windows x64
InterfaceIndex             : 4
MacAddress                 : [...]
MediaType                  : 802.3
PhysicalMediaType          : Unspecified
InterfaceOperationalStatus : Up
AdminStatus                : Up
LinkSpeed(Mbps)            : 862.4
MediaConnectionState       : Connected
ConnectorPresent           : False
DriverInformation          : [...]
为了能够从WSL2端使用它,我使用了以下Powershell命令来检索接口的IP地址:
Get-NetAdapter |
Where-Object InterfaceDescription -like "*AnyConnect*Virtual*Adapter*" | 
Get-NetIPAddress -AddressFamily IPv4 |
Select-Object -ExpandProperty IPAddress

可以包装成来自WSL2的Powershell调用,如下所示:

/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -Command '<the_command_above>'

一旦我得到这个IP地址,我只剩下用它重新导出我的DISPLAY环境变量:

export DISPLAY="<vpn_ip_address>:0"

就是这样,我又可以享受X11转发回来了!

相关内容

  • 没有找到相关文章

最新更新