• WSL(ubuntu) 和Cisco Anyconnect存在的网络连接异常问题


    有时,脚本执行对环境有要求,比如需在linux、MACOS环境下执行,windows不支持。

    由于我本机是windows,所以安装了ubuntu。在此插一句,做开发最好还是mac机,不然会很痛苦。在本机微软商店下载ubuntu,可正常使用。但连接了公司vpn(Cisco Anyconnect)后,就连不上网。导致脚本执行中断,比如镜像上传,go build等需要连网的操作。

    ping baidu.com没反应。

    经过长久查询,具体原因如下:

    Anyconnect在链接后会根据vpn服务器的配置下发路由策略和dns策略,在本地存在wsl或者docker容器的情况下,因虚拟网络策略与vpn策略冲突导致网络异常,主要由两点引起:

             1、路由优先级问题。新创建的端口metric小于veth网卡,造成路由错误。
             2、dns解析问题。未连接vpn情况下是通过本地网关递归解析,vpn连接后造成本地递归失效(按说不应该失效,怀疑有其他坑待查),走vpn分配的dns服务器做解析即可。

    解决:

            1、调整接口metric值

                  Cisco anyconnect 连接的前提下,关闭WSL,管理员权限打开PowerShell(PowerShell ISE),执行:

    Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000

                  完成后,可在WSL中ping 114.114.114.114,正常情况下已通。             

             2、设置WSL里的路由

                  a、首先获得vpn分配的dns服务器地址,在管理员权限的PowerShell中执行:

    (Get-NetAdapter | Where-Object InterfaceDescription -like "Cisco AnyConnect*" | Get-DnsClientServerAddress).ServerAddresses

                  获得:10.10.0.124

                              10.10.0.132

                 b、更新wsl里的域名配置文件,vim /etc/resolv.conf,添加上述两个ip保存即可。

                 cat /etc/resolv.conf
                     nameserver 10.10.0.124
                     nameserver 10.10.0.132

    ping baidu.com即可正常。

    我遇到的问题:本地各种尝试各种百度打不开PowerShell,要么显示由于计算机限制被取消要么就是系统管理员已阻止这个应用。PowerShell ISE也打不开。经过一番查找之后使用如下方式解决: 桌面新建一个.reg文件,内容如下:

    Windows Registry Editor Version 5.00

    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies]
    [-HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\policies]

    保存后点击,PowerShell ISE就可以以管理员权限执行了,在PowerShell ISE上执行命令即可。

  • 相关阅读:
    代码随想录刷题|动态规划理论基础 LeetCode 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
    MySQL索引原理以及SQL优化
    1.1.8 外键
    Web APIs
    flask框架+pygal+sqlit3搭建图形化业务数据分析平台
    Observability:使用 Elastic Agent 来进行 Uptime 监控
    试用程序实现不使用缓存字节数组的方法复制C盘根目录下的a,jpg到E盘下的a.jpg
    参加微软学生开发者峰会,了解Azure和GitHub……
    [Linux] TCP协议介绍(3): TCP协议的“四次挥手“过程、状态分析...
    springboot3使用pagehelper使用报错
  • 原文地址:https://blog.csdn.net/changfangyuansh/article/details/126568907