이 문서에서는 AnyConnect 클라이언트가 정확히 1분 내에 ASA(Adaptive Security Appliance)에 다시 연결할 수 있는 특정 시나리오에 대해 설명합니다.사용자는 AnyConnect가 다시 연결될 때까지 TLS(Transport Layer Security) 터널을 통해 트래픽을 수신할 수 없습니다.이는 이 문서에서 설명하는 몇 가지 다른 요소에 따라 달라집니다.
이 예에서는 AnyConnect 클라이언트가 ASA에 다시 연결되면 표시됩니다.
이 syslog는 ASA에서 표시됩니다.
%ASA-6-722036: Group <ac_users_group> User <vpn> IP <10.1.75.111>
Transmitting large packet 1418 (threshold 1347).
이 문제와 관련하여 다음 DART(Diagnostics and Reporting Tool) 로그가 표시됩니다.
******************************************
Date : 11/16/2013
Time : 01:28:50
Type : Warning
Source : acvpnagent
Description : Reconfigure reason code 16:
New MTU configuration.
******************************************
Date : 11/16/2013
Time : 01:28:50
Type : Information
Source : acvpnagent
Description : The entire VPN connection is being reconfigured.
******************************************
Date : 11/16/2013
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/2013
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(Datagram Transport Layer Security) 터널을 만들지 못한 것입니다.이는 두 가지 이유 때문일 수 있습니다.
DTLS는 경로 어딘가에 차단됨
기본이 아닌 DTLS 포트 사용
ASA Release 9.x 및 AnyConnect Release 3.x부터 클라이언트/ASA 간의 TLS/DTLS에 대해 협상되는 고유한 MTU(Maximum Transition Unit) 형식으로 최적화가 도입되었습니다.이전에는 클라이언트가 TLS/DTLS를 모두 포함했으며 최적화보다 낮은 대략적인 MTU를 도출했습니다.이제 ASA는 TLS/DTLS 모두에 대한 캡슐화 오버헤드를 계산하고 그에 따라 MTU 값을 파생시킵니다.
DTLS가 활성화된 경우, 클라이언트는 최적의 성능을 보장하기 위해 VPN 어댑터(DTLS 터널이 설정되기 전에 활성화되고 경로/필터 시행에 필요함)에 DTLS MTU(이 경우 1418)를 적용합니다.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 터널을 통해 전송할 수 있습니다.
세 번째 옵션은 다음과 같이 MSS(Maximum Segment Size)를 1460으로 설정하는 것입니다.
sysopt conn tcpmss 1460
이 경우 TLS MTU는 DTLS MTU 1418(AES/SHA1/LZS)보다 큰 1427(RC4/SHA1)이 됩니다. 이렇게 하면 ASA에서 AnyConnect 클라이언트로 TCP를 사용하는 문제를 해결해야 합니다(MSS 덕분에). 그러나 ASA에서 AnyConnect 클라이언트로 이동하는 대규모 UDP 트래픽은 낮은 AnyConnect 클라이언트 MTU 1418로 인해 AnyConnect 클라이언트에서 삭제되므로 이로 인해 발생할 수 있습니다.sysopt conn tcpmss가 수정되면 LAN-to-LAN(L2L) IPSec VPN 터널과 같은 다른 기능에 영향을 줄 수 있습니다.
DTLS 오류의 또 다른 잠재적인 원인은 WebVPN이 활성화된 후 기본값이 아닌 포트에서 DTLS를 활성화하는 것입니다(예: webvpn enable outside 명령을 입력한 경우). 이는 Cisco 버그 ID CSCuh61321이 원인이며 릴리스 9.x에서 ASA가 기본이 아닌 포트를 클라이언트에 푸시하지만 계속해서 기본 포트를 수신합니다.따라서 DTLS가 구축되지 않고 AnyConnect가 재연결됩니다.
webvpn
port 444
enable outside
dtls port 444
anyconnect enable
ciscoasa(config-webvpn)# show asp table socket
Protocol Socket State Local Address Foreign Address
SSL 0001fc08 LISTEN 172.16.11.1:444 0.0.0.0:*
DTLS 00020dc8 LISTEN 172.16.11.1:443 0.0.0.0:*
TLS 터널이 설정되면 클라이언트는 포트 444에 대한 DTLS 터널을 설정하려고 시도합니다.
문제를 일으키는 명령 및 열린 ASP(Accelerated Security Path) 테이블 소켓의 순서는 다음과 같습니다.
WebVPN 소켓이 활성화되지 않은 상태에서 시작합니다.
ciscoasa(config)# show run webvpn
webvpn
anyconnect image disk0:/anyconnect-win-3.1.04066-k9.pkg 1
anyconnect enable
ciscoasa(config)# show asp table socket
Protocol Socket State Local Address Foreign Address
ciscoasa(config)#
TLS 포트를 444로 변경하고 WebVPN을 활성화합니다.
ciscoasa(config-webvpn)# show run webvpn
webvpn
port 444
enable outside
anyconnect image disk0:/anyconnect-win-3.1.04066-k9.pkg 1
anyconnect enable
ciscoasa(config-webvpn)# show asp tabl socket
Protocol Socket State Local Address Foreign Address
SSL 0001fc08 LISTEN 172.16.11.1:444 0.0.0.0:*
DTLS 00020dc8 LISTEN 172.16.11.1:443 0.0.0.0:*
DTLS 포트를 444로 변경합니다.
ciscoasa(config-webvpn)# dtls port 444
ciscoasa(config-webvpn)#
ciscoasa(config-webvpn)# show run webvpn
webvpn
port 444
enable outside
dtls port 444
anyconnect image disk0:/anyconnect-win-3.1.04066-k9.pkg 1
anyconnect enable
ciscoasa(config-webvpn)# show asp table socket
Protocol Socket State Local Address Foreign Address
SSL 0001fc08 LISTEN 172.16.11.1:444 0.0.0.0:*
DTLS 00020dc8 LISTEN 172.16.11.1:443 0.0.0.0:*
이 문제에 대한 해결 방법은 다음 순서를 따르는 것입니다.
WebVPN을 비활성화합니다.
DTLS 포트를 입력합니다.
WebVPN을 활성화합니다.
이 동작은 릴리스 8.4.x 버전에는 존재하지 않습니다. 여기서 컨피그레이션을 입력한 직후 DTLS 소켓이 구성된 포트로 업데이트됩니다.
ASA 릴리스 8.4.6:
ciscoasa(config-webvpn)# port 444
ciscoasa(config-webvpn)# enable outside
ciscoasa(config-webvpn)# show asp table socket
Protocol Socket Local Address Foreign Address State
SSL 0000bf2f 172.16.11.1:444 0.0.0.0:* LISTEN
DTLS 0000d5df 172.16.11.1:443 0.0.0.0:* LISTEN
ciscoasa(config-webvpn)# dtls port 444
ciscoasa(config-webvpn)#
ciscoasa(config-webvpn)# show asp table socket
Protocol Socket Local Address Foreign Address State
SSL 0000bf2f 172.16.11.1:444 0.0.0.0:* LISTEN
DTLS 0000eb5f 172.16.11.1:444 0.0.0.0:* LISTEN << changed immediately
이러한 암호가 구성되어 있다고 가정합니다.
ssl encryption rc4-sha1 aes128-sha1 aes256-sha1
이 경우 다음과 같은 일련의 이벤트가 발생합니다.
1380 - 5 (TLS header) - 8 (CSTP) - 0 (padding) - 20 (HASH) = 1347
%ASA-6-722036: Group <ac_users_group> User <vpn> IP <10.1.75.111>및 은(는) mp-svc-no-fragment-ASP 삭제 사유를 사용하여 패킷을 삭제합니다.
Transmitting large packet 1418 (threshold 1347)
%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
재연결 동작 및 타이머에 대한 자세한 내용은 AnyConnect FAQ:터널, 재연결 동작 및 비활성 타이머
Cisco 버그 ID CSCuh61321 AC 3.1:ASA가 대체 DTLS 포트를 잘못 처리하여 다시 연결합니다.