如何使用 Cisco Anyconnect 在 WSL 2 中获得网络和 X11 转发?
Posted
技术标签:
【中文标题】如何使用 Cisco Anyconnect 在 WSL 2 中获得网络和 X11 转发?【英文标题】:How can I get networking AND X11 forwarding in WSL 2 with Cisco Anyconnect? 【发布时间】:2021-02-02 00:33:44 【问题描述】:所以我可以在 WSL2 中使用 X11 转发,例如 How to set up working X11 forwarding on WSL2。然后,在连接到 Cisco AnyConnect 服务器后,我遇到了让网络正常运行的问题,但我使用 WSL 2 Cisco AnyConnect Networking Workaround 解决了这个问题。这包括手动设置 /etc/resolv.conf 以包含我需要的 DNS 名称服务器,尽管 X11 的 DISPLAY 变量应该通过 this answer 设置到 X11 问题。
但是一旦我连接到 AnyConnect,我就不能再转发 X11 应用程序,甚至包括 vim,除非我添加 -X
参数(看起来很奇怪,但我知道什么)。这些应用程序不会在显示设置中显示错误,它们只是不显示。一旦我从 *** 断开连接,相同的命令就可以正常工作。无论需要进行何种网络设置,都会发生这种情况,因此我认为它仅与 AnyConnect 本身有关,但也许我需要运行其他 Powershell 命令才能使显示正常工作?有什么想法吗?
【问题讨论】:
【参考方案1】:我在 WSL2 环境中也有同样的担忧。通过 Cisco AnyConnect 打开 *** 连接后,我在 DISPLAY 环境变量中为 X11 转发设置的默认网络接口(我从 /etc/resolv.conf 检索到 - 与 the one you pointed out 相同的方法)不再可访问。
然后我寻找任何可以从 WSL2 端 ping 通的 Windows 网络接口,并且可以访问 6000 端口(因为该端口似乎是默认使用的用于与 VcXsrv 等 X 服务器建立 X11 连接的端口)。幸运的是,我发现在 *** 上为 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="<***_ip_address>:0"
就是这样,我可以再次享受 X11 转发!
【讨论】:
以上是关于如何使用 Cisco Anyconnect 在 WSL 2 中获得网络和 X11 转发?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Cisco *** AnyConnect 时无法让 docker-machine 与 virtualbox 一起使用