如何使用 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 一起使用

MacOS上使用Openconnect代替Cisco Anyconnect

Cisco Anyconnect *** 上的 VB 脚本

linux 下连接 Cisco AnyConnect

CISCO anyconnect ***配置

android手机cisco anyconnect怎么使用