簡介
本文檔描述了AnyConnect客戶端在一分鐘內重新連線到自適應安全裝置(ASA)時發生的情況。
必要條件
需求
本文件沒有特定需求。
採用元件
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
相關產品
以下產品受此問題影響:
- ASA版本9.17
- AnyConnect使用者端版本4.10
背景資訊
註:AnyConnect已重新品牌化為Cisco Secure Client。沒有其他更改,只有名稱,並且安裝過程相同。
如果AnyConnect客戶端在一分鐘內重新連線到自適應安全裝置(ASA),則在AnyConnect重新連線之前,使用者無法通過傳輸層安全(TLS)隧道接收流量。這取決於本文檔中討論的幾個其他因素。
症狀
在此示例中,AnyConnect客戶端在重新連線到ASA時顯示。
在ASA上看到此系統日誌:
%ASA-6-722036: Group <ac_users_group> User <vpn> IP <10.1.75.111>
Transmitting large packet 1418 (threshold 1347).
問題描述
出現以下Reporting
診斷程式和工具(DART)日誌時出現此問題:
******************************************
Date : 11/16/2022
Time : 01:28:50
Type : Warning
Source : acvpnagent
Description : Reconfigure reason code 16:
New MTU configuration.
******************************************
Date : 11/16/2022
Time : 01:28:50
Type : Information
Source : acvpnagent
Description : The entire VPN connection is being reconfigured.
******************************************
Date : 11/16/2022
Time : 01:28:51
Type : Information
Source : acvpnui
Description : Message type information sent to the user:
Reconnecting to 10.1.1.2...
******************************************
Date : 11/16/2022
Time : 01:28:51
Type : Warning
Source : acvpnagent
Description : A new MTU needs to be applied to the VPN network interface.
Disabling and re-enabling
the Virtual Adapter. Applications utilizing the
private network may need to be restarted.
******************************************
原因
此問題的原因是未能建立資料包傳輸層安全(DTLS)通道。這可能有兩個原因:
-
DTLS在路徑中的某個位置被阻止。
-
使用非預設DTLS埠。
DTLS在路徑中的某個位置被阻止
從ASA 9.x版和AnyConnect 4.x版開始,以客戶端/ASA之間為TLS/DTLS協商的不同最大過渡單元(MTU)的形式引入最佳化。以前,客戶端推導的估計MTU大致涵蓋了TLS/DTLS,並且明顯低於最優。現在,ASA會計算TLS/DTLS的封裝開銷並相應地匯出MTU值。
只要啟用DTLS,客戶端就會在VPN介面卡上應用DTLS MTU(在本例中為1418)(該功能在建立DTLS隧道之前啟用,並且需要執行路由/過濾器),以確保最佳效能。如果無法建立DTLS隧道或該隧道在某點被丟棄,則客戶端將故障切換到TLS,並將虛擬介面卡(VA)上的MTU調整為TLS MTU值(這需要重新連線會話級別)。
解析
為了消除這種可見的DTLS > TLS轉換,管理員可以為在建立DTLS隧道時遇到問題(例如由於防火牆限制)的使用者配置一個單獨的TLS訪問隧道組。
-
最佳選項是將AnyConnect MTU值設定為低於TLS MTU(隨後將協商)。
group-policy ac_users_group attributes
webvpn
anyconnect mtu 1300
這會使TLS和DTLS MTU值相等。在此案例中看不到重新連線。
-
第二個選項是允許分段。
group-policy ac_users_group attributes
webvpn
anyconnect ssl df-bit-ignore enable
使用分段時,可以將大型資料包(其大小超過MTU值)分段,並通過TLS隧道傳送。
-
第三個選項是將Maximum Segment Size(MSS)設定為1460,如下所示:
sysopt conn tcpmss 1460
在這種情況下,TLS MTU可以為1427(RC4/SHA1),大於DTLS MTU 1418(AES/SHA1/LZS)。這解決了從ASA到AnyConnect客戶端的TCP問題(多虧了MSS),但是從ASA到AnyConnect客戶端的大量UDP流量可能會受到此問題的影響,因為AnyConnect客戶端MTU較低,AnyConnect客戶端可能會丟棄該流量。如果修改sysopt conn tcpmss,可能會影響其他功能,例如LAN到LAN(L2L)IPSec VPN隧道。
重新連線工作流
假設已配置以下密碼:
ssl cipher tlsv1.2 custom AES256-SHA256 AES128-SHA256 DHE-RSA-AES256-SHA256
這種情況下會發生以下一系列事件:
- AnyConnect使用AES256-SHA256作為SSL加密來建立父隧道和TLS資料隧道。
- 路徑中阻止了DTLS,因此無法建立DTLS隧道。
- ASA向AnyConnect通告引數,其中包括TLS和DTLS MTU值,這是兩個獨立的值。
- 預設情況下,DTLS MTU為1418。
- TLS MTU是根據sysopt conn tcpmss值計算的(預設值為1380)。以下是TLS MTU的派生方式(如debug webvpn anyconnect輸出所示):
1380 - 5 (TLS header) - 8 (CSTP) - 0 (padding) - 20 (HASH) = 1347
- AnyConnect啟動VPN介面卡,並分配DTLS MTU給它,以預測其可以通過DTLS進行連線。
- AnyConnect客戶端現已連線,使用者將訪問特定網站。
- 瀏覽器傳送TCP SYN並在其中設定MSS = 1418-40 = 1378。
- ASA內部的HTTP伺服器傳送大小為1418的資料包。
- ASA無法將它們放入通道中,並且無法將其分段,因為它們已設定「不分段(DF)」位。
- ASA使用mp-svc-no-fragment-ASP丟棄原因列印和丟棄資料包。
%ASA-6-722036: Group <ac_users_group> User <vpn> IP <10.1.75.111>
Transmitting large packet 1418 (threshold 1347)
- 同時,ASA向傳送方傳送ICMP目的地無法到達、需要分段:
%ASA-6-602101: PMTU-D packet 1418 bytes greater than effective mtu 1347,
dest_addr=10.10.10.1, src_addr=10.48.66.200, prot=TCP
- 如果允許網際網路控制訊息通訊協定(ICMP),則傳送者會重新傳輸捨棄的封包,所有內容都會開始運作。如果ICMP被阻止,則流量在ASA上被黑洞。
- 經過多次重新傳輸後,它知道無法建立DTLS隧道,需要將新的MTU值重新分配給VPN介面卡。
- 重新連線的目的是分配新的MTU。
有關重新連線行為和計時器的詳細資訊,請參閱AnyConnect常見問題:隧道、重新連線行為和非活動計時器
相關資訊