所以我可以在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转发回来了!