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 連接的前提下,管理員權限打開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上執行命令即可。
總結
以上是生活随笔為你收集整理的WSL(ubuntu) 和Cisco Anyconnect存在的网络连接异常问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端之vue样式
- 下一篇: 安卓rom制作,你知道的有多少