본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 NGFW(Firepower Next-Generation Firewall)에서 클러스터 설정을 해결하는 방법에 대해 설명합니다.
Cisco에서는 다음 항목에 대해 알고 있는 것이 좋습니다(링크는 관련 정보 섹션 참조).
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
이 문서에서 다루는 대부분의 항목은 ASA(Adaptive Security Appliance) 클러스터 트러블슈팅에도 완전하게 적용됩니다.
클러스터 구축의 컨피그레이션 부분은 FMC 및 FXOS 컨피그레이션 가이드에서 다룹니다.
firepower 41xx 또는 93xx 시리즈에서 전송 패킷을 처리하는 방법을 이해하는 것이 중요합니다.
Firepower 어플라이언스는 전송 흐름에 대한 가시성을 제공하는 여러 캡처 지점을 제공합니다. 문제를 해결하고 클러스터를 활성화하면 다음과 같은 주요 문제가 발생합니다.
이 다이어그램은 2유닛 클러스터(예: FP941xx/FP9300)를 보여줍니다.
비대칭 TCP 연결 설정의 경우 TCP SYN, SYN/ACK 교환은 다음과 같습니다.
전달 트래픽
반환 트래픽
이 시나리오에 대한 자세한 내용은 Cluster Connection Establishment Case Studies(클러스터 연결 설정 사례 연구)의 관련 섹션을 참조하십시오.
이 패킷 교환을 기반으로 가능한 모든 클러스터 캡처 포인트는 다음과 같습니다.
전달 트래픽(예: TCP SYN) 캡처의 경우
반환 트래픽(예: TCP SYN/ACK) 캡처의 경우
클러스터 캡처를 활성화하는 방법
FXOS 캡처
이 프로세스는 FXOS Config Guide: Packet Capture에 설명되어 있습니다.
참고: FXOS 캡처는 내부 스위치 관점에서 인그레스 방향으로만 수행할 수 있습니다.
데이터 플레인 캡처
모든 클러스터 멤버에서 캡처를 활성화하는 권장 방법은 cluster exec 명령을 사용하는 것입니다.
3-유닛 클러스터를 고려합니다.
모든 클러스터 유닛에 활성 캡처가 있는지 확인하려면 다음 명령을 사용합니다.
firepower# cluster exec show capture
unit-1-1(LOCAL):******************************************************
unit-2-1:*************************************************************
unit-3-1:*************************************************************
firepower#
Po1.201(INSIDE)의 모든 유닛에서 데이터 플레인 캡처를 활성화하려면 다음을 수행합니다.
firepower# cluster exec capture CAPI interface INSIDE
캡처 필터를 지정하고, 트래픽이 많을 것으로 예상되는 경우 캡처 버퍼를 늘리는 것이 좋습니다.
firepower# cluster exec capture CAPI buffer 33554432 interface INSIDE match tcp host 192.168.240.50 host 192.168.241.50 eq 80
확인
firepower# cluster exec show capture
unit-1-1(LOCAL):******************************************************
capture CAPI type raw-data buffer 33554432 interface INSIDE [Capturing - 5140 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
unit-2-1:*************************************************************
capture CAPI type raw-data buffer 33554432 interface INSIDE [Capturing - 260 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
unit-3-1:*************************************************************
capture CAPI type raw-data buffer 33554432 interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
모든 캡처의 내용을 보려면(이 출력은 매우 길 수 있음)
firepower# terminal pager 24
firepower# cluster exec show capture CAPI
unit-1-1(LOCAL):******************************************************
21 packets captured
1: 11:33:09.879226 802.1Q vlan#201 P0 192.168.240.50.45456 > 192.168.241.50.80: S 2225395909:2225395909(0) win 29200 <mss 1460,sackOK,timestamp 1110209649 0,nop,wscale 7>
2: 11:33:09.880401 802.1Q vlan#201 P0 192.168.241.50.80 > 192.168.240.50.45456: S 719653963:719653963(0) ack 2225395910 win 28960 <mss 1380,sackOK,timestamp 1120565119 1110209649,nop,wscale 7>
3: 11:33:09.880691 802.1Q vlan#201 P0 192.168.240.50.45456 > 192.168.241.50.80: . ack 719653964 win 229 <nop,nop,timestamp 1110209650 1120565119>
4: 11:33:09.880783 802.1Q vlan#201 P0 192.168.240.50.45456 > 192.168.241.50.80: P 2225395910:2225396054(144) ack 719653964 win 229 <nop,nop,timestamp 1110209650 1120565119>
unit-2-1:*************************************************************
0 packet captured
0 packet shown
unit-3-1:*************************************************************
0 packet captured
0 packet shown
추적 캡처
각 유닛의 데이터 플레인에서 인그레스 패킷을 처리하는 방법을 보려면 trace 키워드를 사용합니다. 그러면 처음 50개의 인그레스 패킷이 추적됩니다. 최대 1000개의 인그레스 패킷을 추적할 수 있습니다.
참고: 하나의 인터페이스에 여러 캡처가 적용된 경우 단일 패킷을 한 번만 추적할 수 있습니다.
모든 클러스터 유닛의 인터페이스 OUTSIDE에서 첫 1,000개의 인그레스 패킷을 추적하려면
firepower# cluster exec cap CAPO int OUTSIDE buff 33554432 trace trace-count 1000 match tcp host 192.168.240.50 host 192.168.241.50 eq www
관심 플로우를 캡처한 후에는 각 유닛의 관심 패킷을 추적해야 합니다. 기억해야 할 중요한 것은 특정 패킷을 유닛-1-1에 #1 수 있지만 다른 유닛에 #2 수 있다는 것입니다.
이 예에서는 SYN/ACK가 unit-2-1에서는 패킷 #2, unit-3-1에서는 패킷 #1을 확인할 수 있습니다.
firepower# cluster exec show capture CAPO | include S.*ack
unit-1-1(LOCAL):******************************************************
1: 12:58:31.117700 802.1Q vlan#202 P0 192.168.240.50.45468 > 192.168.241.50.80: S 441626016:441626016(0) win 29200 <mss 1380,sackOK,timestamp 1115330849 0,nop,wscale 7>
2: 12:58:31.118341 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.45468: S 301658077:301658077(0) ack 441626017 win 28960 <mss 1460,sackOK,timestamp 1125686319 1115330849,nop,wscale 7>
unit-2-1:*************************************************************
unit-3-1:*************************************************************
1: 12:58:31.111429 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.45468: S 301658077:301658077(0) ack 441626017 win 28960 <mss 1460,sackOK,timestamp 1125686319 1115330849,nop,wscale 7>
로컬 유닛에서 패킷 #2(SYN/ACK)를 추적하려면 다음을 수행합니다.
firepower# cluster exec show cap CAPO packet-number 2 trace
unit-1-1(LOCAL):******************************************************
2: 12:58:31.118341 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.45468: S 301658077:301658077(0) ack 441626017 win 28960 <mss 1460,sackOK,timestamp 1125686319 1115330849,nop,wscale 7>
Phase: 1
Type: CAPTURE
Subtype:
Result: ALLOW
Config:
Additional Information:
MAC Access list
...
원격 유닛에서 동일한 패킷(SYN/ACK)을 추적하려면
firepower# cluster exec unit unit-3-1 show cap CAPO packet-number 1 trace
1: 12:58:31.111429 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.45468: S 301658077:301658077(0) ack 441626017 win 28960 <mss 1460,sackOK,timestamp 1125686319 1115330849,nop,wscale 7>
Phase: 1
Type: CAPTURE
Subtype:
Result: ALLOW
Config:
Additional Information:
MAC Access list
...
CCL 캡처
CCL 링크(모든 장치에서)에서 캡처를 활성화하려면
firepower# cluster exec capture CCL interface cluster
unit-1-1(LOCAL):******************************************************
unit-2-1:*************************************************************
unit-3-1:*************************************************************
다시 삽입 숨기기
기본적으로 데이터 플레인 데이터 인터페이스에서 활성화된 캡처는 모든 패킷을 표시합니다.
재삽입된 패킷을 표시하지 않으려면 reinject-hide 옵션을 사용합니다. 이는 플로우가 비대칭적인지 확인하려는 경우 유용할 수 있습니다.
firepower# cluster exec capture CAPI_RH reinject-hide interface INSIDE match tcp host 192.168.240.50 host 192.168.241.50 eq 80
이 캡처는 로컬 유닛이 실제로 특정 인터페이스에서 다른 클러스터 유닛이 아닌 물리적 네트워크로부터 직접 수신한 것을 보여줍니다.
ASP 삭제
특정 흐름에 대한 소프트웨어 삭제를 확인하려면 asp-drop capture를 활성화할 수 있습니다. 초점을 두어야 할 삭제 이유를 모를 경우 all 키워드를 사용합니다. 또한 패킷 페이로드에 관심이 없는 경우 headers-only 키워드를 지정할 수 있습니다. 이렇게 하면 20-30배 많은 패킷을 캡처할 수 있습니다.
firepower# cluster exec cap ASP type asp-drop all buffer 33554432 headers-only
unit-1-1(LOCAL):******************************************************
unit-2-1:*************************************************************
unit-3-1:*************************************************************
또한 ASP 캡처에서 원하는 IP를 지정할 수 있습니다.
firepower# cluster exec cap ASP type asp-drop all buffer 33554432 headers-only match ip host 192.0.2.100 any
캡처 지우기
모든 클러스터 단위로 실행되는 모든 캡처의 버퍼를 지웁니다. 이렇게 하면 캡처가 중지되지 않고 버퍼만 지워집니다.
firepower# cluster exec clear capture /all
unit-1-1(LOCAL):******************************************************
unit-2-1:*************************************************************
unit-3-1:*************************************************************
캡처 중지
모든 클러스터 유닛에서 활성 캡처를 중지하는 방법에는 두 가지가 있습니다. 나중에 다시 시작할 수 있습니다.
방법 1
firepower# cluster exec cap CAPI stop
unit-1-1(LOCAL):******************************************************
unit-2-1:*************************************************************
unit-3-1:*************************************************************
다시 시작하려면
firepower# cluster exec no capture CAPI stop
unit-1-1(LOCAL):******************************************************
unit-2-1:*************************************************************
unit-3-1:*************************************************************
2단계
firepower# cluster exec no capture CAPI interface INSIDE
unit-1-1(LOCAL):******************************************************
unit-2-1:*************************************************************
unit-3-1:*************************************************************
다시 시작하려면
firepower# cluster exec capture CAPI interface INSIDE
unit-1-1(LOCAL):******************************************************
unit-2-1:*************************************************************
unit-3-1:*************************************************************
캡처 수집
캡처를 내보내는 방법에는 여러 가지가 있습니다.
방법 1 - 원격 서버로
이렇게 하면 데이터 플레인에서 원격 서버(예: TFTP)로 캡처를 업로드할 수 있습니다. 소스 유닛을 반영하도록 캡처 이름이 자동으로 변경됩니다.
firepower# cluster exec copy /pcap capture:CAPI tftp://192.168.240.55/CAPI.pcap
unit-1-1(LOCAL):******************************************************
Source capture name [CAPI]?
Address or name of remote host [192.168.240.55]?
Destination filename [CAPI.pcap]?
INFO: Destination filename is changed to unit-1-1_CAPI.pcap !!!!!!!
81 packets copied in 0.40 secs
unit-2-1:*************************************************************
INFO: Destination filename is changed to unit-2-1_CAPI.pcap !
unit-3-1:*************************************************************
INFO: Destination filename is changed to unit-3-1_CAPI.pcap !
업로드된 pcap 파일:
Way 2 - FMC에서 캡처 가져오기
이 방법은 FTD에만 적용됩니다. 먼저 캡처를 FTD 디스크에 복사합니다.
firepower# cluster exec copy /pcap capture:CAPI disk0:CAPI.pcap
unit-1-1(LOCAL):******************************************************
Source capture name [CAPI]?
Destination filename [CAPI.pcap]?
!!!!!
62 packets copied in 0.0 secs
expert 모드에서 파일을 /mnt/disk0/에서 /ngfw/var/common/ 디렉토리로 복사합니다.
> expert
admin@firepower:~$ cd /mnt/disk0
admin@firepower:/mnt/disk0$ sudo cp CAPI.pcap /ngfw/var/common
마지막으로 FMC에서 System > Health > Monitor 섹션으로 이동합니다. View System & Troubleshoot Details(시스템 및 문제 해결 세부사항 보기) > Advanced Troubleshooting(고급 문제 해결)을 선택하고 캡처 파일을 가져옵니다.
캡처 삭제
모든 클러스터 유닛에서 캡처를 제거하려면 다음 명령을 사용합니다.
firepower# cluster exec no capture CAPI
unit-1-1(LOCAL):******************************************************
unit-2-1:*************************************************************
unit-3-1:*************************************************************
오프로드된 플로우
FP41xx/FP9300에서 플로우는 정적(예: Fastpath 규칙) 또는 동적으로 HW Accelerator로 오프로드될 수 있습니다. 플로우 오프로드에 대한 자세한 내용은 다음 문서를 참조하십시오.
플로우가 오프로드되면 일부 패킷만 FTD 데이터 플레인을 통과합니다. 나머지는 HW 가속기(Smart NIC)에서 처리합니다.
캡처 관점에서 보면, 이는 FTD 데이터 플레인 레벨 캡처만 활성화할 경우 디바이스를 통과하는 모든 패킷이 표시되지 않음을 의미합니다. 이 경우 FXOS 섀시 레벨 캡처도 활성화해야 합니다.
CCL에서 캡처를 수행하면 클러스터 유닛에서 서로 다른 유형의 메시지를 교환하는 것을 확인할 수 있습니다. 관심 분야:
프로토콜 |
설명 |
UDP 49495 |
클러스터 하트비트(킵얼라이브) · L3 브로드캐스트(255.255.255.255) · 이러한 패킷은 모든 클러스터 유닛에서 상태 점검 보류 시간 값의 1/3로 전송됩니다. · 캡처에 표시된 모든 UDP 49495 패킷이 하트비트는 아닙니다 · 하트비트에는 시퀀스 번호가 포함됩니다. |
UDP 4193 |
클러스터 제어 프로토콜 데이터 경로 메시지 · 유니캐스트 · 이러한 패킷에는 플로우 소유자, 디렉터, 백업 소유자 등에 대한 정보(메타데이터)가 포함됩니다. 예: · 새 플로우가 생성되면 소유자로부터 디렉터로 '클러스터 추가' 메시지가 전송됩니다. · 플로우가 종료되면 소유자로부터 디렉터로 '클러스터 삭제' 메시지가 전송됩니다. |
데이터 패킷 |
클러스터를 통과하는 다양한 트래픽 흐름에 속하는 데이터 패킷 |
클러스터 하트비트
하트비트 메시지 외에도 특정 시나리오에서 CCL을 통해 교환되는 다수의 클러스터 제어 메시지가 있습니다. 일부는 유니캐스트 메시지이고 다른 일부는 브로드캐스트입니다.
CLUSTER_QUIT_REASON_PRIMARY_UNIT_HC
유닛이 제어 노드에서 3개의 연속 하트비트 메시지를 잃을 때마다 CCL을 통해 CLUSTER_QUIT_REASON_PRIMARY_UNIT_HC 메시지를 생성합니다. 이 메시지는 다음과 같습니다.
Q. CLUSTER_QUIT_REASON_PRIMARY_UNIT_HC의 목적은 무엇입니까?
A. unit-3-1(Site-B)의 관점에서 볼 때 사이트 A에서 unit-1-1 및 unit-2-1에 대한 연결이 모두 끊기므로 가능한 한 빨리 구성원 목록에서 제거해야 합니다. 그렇지 않으면 unit-2-1이 여전히 구성원 목록에 있고 unit-2-1이 연결의 디렉터인 경우 패킷이 손실될 수 있으며 unit-2-1에 대한 흐름 쿼리가 실패합니다.
CLUSTER_QUIT_REASON_UNIT_HC
제어 노드는 데이터 노드에서 3개의 연속 하트비트 메시지를 잃을 때마다 CCL을 통해 CLUSTER_QUIT_REASON_UNIT_HC 메시지를 전송합니다. 이 메시지는 유니캐스트입니다.
CLUSTER_QUIT_REASON_STRAY_MEMBER
분할 파티션이 피어 파티션과 다시 연결되면, 새로운 데이터 노드는 우세 제어 유닛에 의해 미처 멤버로 취급되며 CLUSTER_QUIT_REASON_STRAY_MEMBER를 이유로 하는 CCP 종료 메시지를 받습니다.
CLUSTER_QUIT_MEMBER_DROPOUT
데이터 노드에 의해 생성되고 브로드캐스트로 전송되는 브로드캐스트 메시지입니다. 유닛에서 이 메시지를 수신하면 DISABLED 상태로 이동합니다. 또한 자동 재연결은 킥오프되지 않습니다.
firepower# show cluster info trace | include DROPOUT
Nov 04 00:22:54.699 [DBUG]Receive CCP message: CCP_MSG_QUIT from unit-3-1 to unit-1-1 for reason CLUSTER_QUIT_MEMBER_DROPOUT
Nov 04 00:22:53.699 [DBUG]Receive CCP message: CCP_MSG_QUIT from unit-3-1 to unit-2-1 for reason CLUSTER_QUIT_MEMBER_DROPOUT
클러스터 내역은 다음과 같습니다.
PRIMARY DISABLED Received control message DISABLE (member dropout announcement)
중요 사항
클러스터 상태 카운터를 확인하려면 다음 명령을 사용합니다.
firepower# show cluster info health details
----------------------------------------------------------------------------------
| Unit (ID)| Heartbeat| Heartbeat| Average| Maximum| Poll|
| | count| drops| gap (ms)| slip (ms)| count|
----------------------------------------------------------------------------------
| unit-2-1 ( 1)| 650| 0| 4999| 1| 0|
| unit-3-1 ( 2)| 650| 0| 4999| 1| 0|
----------------------------------------------------------------------------------
기본 열에 대한 설명
열 |
설명 |
장치(ID) |
원격 클러스터 피어의 ID입니다. |
하트비트 수 |
CCL을 통해 원격 피어에서 받은 하트비트 수입니다. |
하트비트 삭제 |
누락된 하트비트 수입니다. 이 카운터는 수신된 하트비트 시퀀스 번호에 기초하여 계산된다. |
평균 격차 |
수신된 하트비트의 평균 시간 간격입니다. |
폴링 카운트 |
이 카운터가 3이 되면 유닛이 클러스터에서 제거됩니다. 폴링 쿼리 간격은 하트비트 간격과 동일하지만 독립적으로 실행됩니다. |
카운터를 재설정하려면 다음 명령을 사용합니다.
firepower# clear cluster info health details
Q. 하트비트 빈도를 어떻게 확인합니까?
A. 평균 간격 값을 확인합니다.
firepower# show cluster info health details
----------------------------------------------------------------------------------
| Unit (ID)| Heartbeat| Heartbeat| Average| Maximum| Poll|
| | count| drops| gap (ms)| slip (ms)| count|
----------------------------------------------------------------------------------
| unit-2-1 ( 1)| 3036| 0| 999| 1| 0|
----------------------------------------------------------------------------------
Q. FTD에서 클러스터 보류 시간을 변경하려면 어떻게 해야 합니까?
A. FlexConfig 사용
Q. 스플릿 브레인 후 누가 제어 노드가 됩니까?
A. 우선순위가 가장 높은(가장 낮은) 장치:
firepower# show run cluster | include priority
priority 9
자세한 내용은 HC 실패 시나리오 1을 참조하십시오.
클러스터 HC 메커니즘 시각화
표시형 타이머: 최소값과 최대값은 마지막으로 수신된 CCL 패킷 도착에 따라 달라집니다.
보류 시간 |
쿼리 검사 폴링 (빈도) |
최소 탐지 시간 |
최대 탐지 시간 |
3초(기본값) |
~1초 |
~3.01초 |
~3.99초 |
4초 |
~1.33초 |
~4.01초 |
~5.32초 |
5초 |
~1.66초 |
~5.01초 |
~6.65초 |
6초 |
~2초 |
~6.01초 |
~7.99초 |
7초 |
~2.33초 |
~7.01초 |
~9.32초 |
8초 |
~2.66초 |
~8.01초 |
~10.65초 |
이 섹션의 목표는 다음을 시연하는 것입니다.
토폴로지
클러스터 컨피그레이션
Unit-1-1 |
Unit-2-1 |
Unit-3-1 |
cluster group GROUP1 |
cluster group GROUP1 |
cluster group GROUP1 |
클러스터 상태
Unit-1-1 |
Unit-2-1 |
Unit-3-1 |
firepower# show cluster info |
firepower# show cluster info |
firepower# show cluster info |
시나리오 1
양방향으로 ~4초 이상 CCL 통신 손실이 발생했습니다.
실패 전
FTD1 |
FTD2 |
FTD3 |
사이트 A |
사이트 A |
사이트 B |
제어 노드 |
데이터 노드 |
데이터 노드 |
복구 후(유닛 역할이 변경되지 않음)
FTD1 |
FTD2 |
FTD3 |
사이트 A |
사이트 A |
사이트 B |
제어 노드 |
데이터 노드 |
데이터 노드 |
분석
실패(CCL 통신이 끊김).
unit-3-1의 데이터 플레인 콘솔 메시지:
firepower#
WARNING: dynamic routing is not supported on management interface when cluster interface-mode is 'spanned'.
If dynamic routing is configured on any management interface, please remove it.
Cluster unit unit-3-1 transitioned from SECONDARY to PRIMARY
Cluster disable is performing cleanup..done.
All data interfaces have been shutdown due to clustering being disabled.
To recover either enable clustering or remove cluster group configuration.
Unit-1-1 클러스터 추적 로그:
firepower# show cluster info trace | include unit-3-1
Nov 02 09:38:14.239 [INFO]Notify chassis de-bundle port for blade unit-3-1, stack 0x000055a8918307fb 0x000055a8917fc6e8 0x000055a8917f79b5
Nov 02 09:38:14.239 [INFO]FTD - CD proxy received state notification (DISABLED) from unit unit-3-1
Nov 02 09:38:14.239 [DBUG]Send CCP message to all: CCP_MSG_QUIT from unit-1-1 to unit-3-1 for reason CLUSTER_QUIT_MEMBER_DROPOUT
Nov 02 09:38:14.239 [INFO]Notify chassis de-bundle port for blade unit-3-1, stack 0x000055a8917eb596 0x000055a8917f4838 0x000055a891abef9d
Nov 02 09:38:14.239 [DBUG]Send CCP message to id 1: CCP_MSG_QUIT from unit-1-1 to unit-3-1 for reason CLUSTER_QUIT_REASON_UNIT_HC
Nov 02 09:38:14.239 [CRIT]Received heartbeat event 'SECONDARY heartbeat failure' for member unit-3-1 (ID: 1).
스플릿 브레인
Unit-1-1 |
Unit-2-1 |
Unit-3-1 |
firepower# show cluster info |
firepower# show cluster info |
firepower# show cluster info |
클러스터 기록
Unit-1-1 |
Unit-2-1 |
Unit-3-1 |
이벤트 없음 |
이벤트 없음 |
09:38:16 UTC Nov 2 2020 |
CCL 통신 복원
Unit-1-1은 현재 제어 노드를 탐지하며, unit-1-1의 우선순위가 더 높기 때문에 유닛-3-1에 CLUSTER_QUIT_REASON_STRAY_MEMBER 메시지를 보내 새 선택 프로세스를 트리거합니다. 결국 unit-3-1은 데이터 노드로 다시 합류하게 된다.
스플릿 파티션이 피어 파티션과 다시 연결되면, 데이터 노드는 우세 제어 노드에 의해 스트레이 멤버로 취급되며 CLUSTER_QUIT_REASON_STRAY_MEMBER를 이유로 하는 CCP quit 메시지를 받습니다.
Unit-3-1 console logs show:
Cluster unit unit-3-1 transitioned from PRIMARY to DISABLED
The 3DES/AES algorithms require a Encryption-3DES-AES activation key.
Detected Cluster Primart.
Beginning configuration replication from Primary.
WARNING: Local user database is empty and there are still 'aaa' commands for 'LOCAL'.
..
Cryptochecksum (changed): a9ed686f 8e2e689c 2553a104 7a2bd33a
End configuration replication from Primary.
Cluster unit unit-3-1 transitioned from DISABLED to SECONDARY
두 유닛(unit-1-1 및 unit-3-1) 모두 클러스터 로그에 표시됩니다.
firepower# show cluster info trace | include retain
Nov 03 21:20:23.019 [CRIT]Found a split cluster with both unit-1-1 and unit-3-1 as primary units. Primary role retained by unit-1-1, unit-3-1 will leave then join as a secondary
Nov 03 21:20:23.019 [CRIT]Found a split cluster with both unit-1-1 and unit-3-1 as primary units. Primary role retained by unit-1-1, unit-3-1 will leave then join as a secondary
스플릿 브레인에 대해 생성되는 syslog 메시지도 있습니다.
firepower# show log | include 747016
Nov 03 2020 21:20:23: %FTD-4-747016: Clustering: Found a split cluster with both unit-1-1 and unit-3-1 as primary units. Primary role retained by unit-1-1, unit-3-1 will leave then join as a secondary
Nov 03 2020 21:20:23: %FTD-4-747016: Clustering: Found a split cluster with both unit-1-1 and unit-3-1 as primary units. Primary role retained by unit-1-1, unit-3-1 will leave then join as a secondary
클러스터 기록
Unit-1-1 |
Unit-2-1 |
Unit-3-1 |
이벤트 없음 |
이벤트 없음 |
09:47:33 UTC Nov 2 2020 |
시나리오 2
양방향으로 ~3-4초 동안 CCL 통신 손실이 발생했습니다.
실패 전
FTD1 |
FTD2 |
FTD3 |
사이트 A |
사이트 A |
사이트 B |
제어 노드 |
데이터 노드 |
데이터 노드 |
복구 후(유닛 역할이 변경되지 않음)
FTD1 |
FTD2 |
FTD3 |
사이트 A |
사이트 A |
사이트 B |
제어 노드 |
데이터 노드 |
데이터 노드 |
분석
이벤트 1: 제어 노드는 유닛 3-1에서 3개의 HC를 손실하고 유닛 3-1에 메시지를 보내 클러스터를 나갑니다.
이벤트 2: CCL이 매우 빠르게 복구되었고 제어 노드의 CLUSTER_QUIT_REASON_STRAY_MEMBER 메시지가 원격 측에 전달되었습니다. Unit-3-1은 DISABLED 모드로 직접 전환되며 스플릿 브레인(split-brain)이 없습니다.
unit-1-1(control)에서 다음을 볼 수 있습니다.
firepower#
Asking SECONDARY unit unit-3-1 to quit because it failed unit health-check.
Forcing stray member unit-3-1 to leave the cluster
unit-3-1(데이터 노드)에서 다음을 볼 수 있습니다.
firepower#
Cluster disable is performing cleanup..done.
All data interfaces have been shutdown due to clustering being disabled. To recover either enable clustering or remove cluster group configuration.
Cluster unit unit-3-1 transitioned from SECONDARY to DISABLED
클러스터 유닛 unit-3-1이 DISABLED 상태로 전환되었으며 CCL 통신이 복원되면 데이터 노드로 다시 연결됩니다.
firepower# show cluster history
20:58:40 UTC Nov 1 2020
SECONDARY DISABLED Received control message DISABLE (stray member)
20:58:45 UTC Nov 1 2020
DISABLED ELECTION Enabled from CLI
20:58:45 UTC Nov 1 2020
ELECTION SECONDARY_COLD Received cluster control message
20:58:45 UTC Nov 1 2020
SECONDARY_COLD SECONDARY_APP_SYNC Client progression done
20:59:33 UTC Nov 1 2020
SECONDARY_APP_SYNC SECONDARY_CONFIG SECONDARY application configuration sync done
20:59:44 UTC Nov 1 2020
SECONDARY_CONFIG SECONDARY_FILESYS Configuration replication finished
20:59:45 UTC Nov 1 2020
SECONDARY_FILESYS SECONDARY_BULK_SYNC Client progression done
21:00:09 UTC Nov 1 2020
SECONDARY_BULK_SYNC SECONDARY Client progression done
시나리오 3
양방향으로 ~3-4초 동안 CCL 통신 손실이 발생했습니다.
실패하기 전에요
FTD1 |
FTD2 |
FTD3 |
사이트 A |
사이트 A |
사이트 B |
제어 노드 |
데이터 노드 |
데이터 노드 |
복구 후(제어 노드가 변경됨).
FTD1 |
FTD2 |
FTD3 |
사이트 A |
사이트 A |
사이트 B |
데이터 노드 |
제어 노드 |
데이터 노드 |
분석
CCL 복구.
클러스터 기록
Unit-1-1 |
Unit-2-1 |
Unit-3-1 |
19:53:09 UTC Nov 2 2020 |
19:53:06 UTC Nov 2 2020 |
19:53:06 UTC Nov 2 2020 |
시나리오 4
~3~4초 동안 CCL 통신 손실
실패 전
FTD1 |
FTD2 |
FTD3 |
사이트 A |
사이트 A |
사이트 B |
제어 노드 |
데이터 노드 |
데이터 노드 |
복구 후(제어 노드가 사이트를 변경함)
FTD1 |
FTD2 |
FTD3 |
사이트 A |
사이트 A |
사이트 B |
데이터 노드 |
데이터 노드 |
제어 노드 |
분석
실패
같은 실패의 다른 취향. 이 경우 unit-1-1도 unit-3-1로부터 3개의 HC 메시지를 받지 못했고, 일단 새 keepalive가 생기고 나면 STRAY 메시지를 사용하여 unit-3-1을 종료하려고 했지만 메시지가 유닛-3-1에 전달되지 않았습니다.
참고: 5단계에서 CCL이 복구되지 않으면 사이트 A에서 FTD1이 새 제어 노드가 되고 CCL 복구 후 새 선택에서 승리합니다.
유닛 1-1의 Syslog 메시지:
firepower# show log | include 747
Nov 03 2020 23:13:08: %FTD-7-747005: Clustering: State machine notify event CLUSTER_EVENT_MEMBER_STATE (unit-3-1,DISABLED,0x0000000000000000)
Nov 03 2020 23:13:09: %FTD-4-747015: Clustering: Forcing stray member unit-3-1 to leave the cluster
Nov 03 2020 23:13:09: %FTD-7-747005: Clustering: State machine notify event CLUSTER_EVENT_MEMBER_STATE (unit-2-1,DISABLED,0x0000000000000000)
Nov 03 2020 23:13:10: %FTD-4-747015: Clustering: Forcing stray member unit-3-1 to leave the cluster
Nov 03 2020 23:13:10: %FTD-6-747004: Clustering: State machine changed from state PRIMARY to DISABLED
Nov 03 2020 23:13:12: %FTD-7-747006: Clustering: State machine is at state DISABLED
Nov 03 2020 23:13:12: %FTD-7-747005: Clustering: State machine notify event CLUSTER_EVENT_MY_STATE (state DISABLED,0x0000000000000000,0x0000000000000000)
Nov 03 2020 23:13:18: %FTD-6-747004: Clustering: State machine changed from state ELECTION to ONCALL
유닛 1-1의 클러스터 추적 로그:
firepower# show cluster info trace | include QUIT
Nov 03 23:13:10.789 [DBUG]Send CCP message to all: CCP_MSG_QUIT from unit-1-1 for reason CLUSTER_QUIT_REASON_RETIREMENT
Nov 03 23:13:10.769 [DBUG]Receive CCP message: CCP_MSG_QUIT from unit-3-1 to unit-1-1 for reason CLUSTER_QUIT_REASON_PRIMARY_UNIT_HC
Nov 03 23:13:10.769 [DBUG]Send CCP message to id 1: CCP_MSG_QUIT from unit-1-1 to unit-3-1 for reason CLUSTER_QUIT_REASON_STRAY_MEMBER
Nov 03 23:13:09.789 [DBUG]Receive CCP message: CCP_MSG_QUIT from unit-2-1 for reason CLUSTER_QUIT_REASON_RETIREMENT
Nov 03 23:13:09.769 [DBUG]Send CCP message to id 1: CCP_MSG_QUIT from unit-1-1 to unit-3-1 for reason CLUSTER_QUIT_REASON_STRAY_MEMBER
Nov 03 23:13:08.559 [DBUG]Send CCP message to all: CCP_MSG_QUIT from unit-1-1 to unit-3-1 for reason CLUSTER_QUIT_MEMBER_DROPOUT
Nov 03 23:13:08.559 [DBUG]Send CCP message to id 1: CCP_MSG_QUIT from unit-1-1 to unit-3-1 for reason CLUSTER_QUIT_REASON_UNIT_HC
유닛 3-1의 Syslog 메시지:
firepower# show log | include 747
Nov 03 2020 23:13:09: %FTD-7-747005: Clustering: State machine notify event CLUSTER_EVENT_MEMBER_STATE (unit-2-1,DISABLED,0x0000000000000000)
Nov 03 2020 23:13:10: %FTD-7-747005: Clustering: State machine notify event CLUSTER_EVENT_MEMBER_STATE (unit-1-1,DISABLED,0x0000000000000000)
Nov 03 2020 23:13:10: %FTD-6-747004: Clustering: State machine changed from state SECONDARY to PRIMARY
Nov 03 2020 23:13:10: %FTD-6-747004: Clustering: State machine changed from state PRIMARY_FAST to PRIMARY_DRAIN
Nov 03 2020 23:13:10: %FTD-6-747004: Clustering: State machine changed from state PRIMARY_DRAIN to PRIMARY_CONFIG
Nov 03 2020 23:13:10: %FTD-6-747004: Clustering: State machine changed from state PRIMARY_CONFIG to PRIMARY_POST_CONFIG
Nov 03 2020 23:13:10: %FTD-7-747006: Clustering: State machine is at state PRIMARY_POST_CONFIG
Nov 03 2020 23:13:10: %FTD-6-747004: Clustering: State machine changed from state PRIMARY_POST_CONFIG to PRIMARY
Nov 03 2020 23:13:10: %FTD-7-747006: Clustering: State machine is at state PRIMARY
클러스터 기록
Unit-1-1 |
Unit-2-1 |
Unit-3-1 |
23:13:13 UTC Nov 3 2020 |
23:13:12 UTC Nov 3 2020 |
23:13:10 UTC Nov 3 2020 |
시나리오 5
실패 전
FTD1 |
FTD2 |
FTD3 |
사이트 A |
사이트 A |
사이트 B |
제어 노드 |
데이터 노드 |
데이터 노드 |
복구 후(변경 사항 없음)
FTD1 |
FTD2 |
FTD3 |
사이트 A |
사이트 A |
사이트 B |
제어 노드 |
데이터 노드 |
데이터 노드 |
실패
Unit-3-1은 unit-1-1과 unit-2-1 모두에 QUIT 메시지를 보냈지만 연결 문제로 인해 unit-2-1만 QUIT 메시지를 받았습니다.
Unit-1-1 클러스터 추적 로그:
firepower# show cluster info trace | include QUIT
Nov 04 00:52:10.429 [DBUG]Receive CCP message: CCP_MSG_QUIT from unit-3-1 for reason CLUSTER_QUIT_REASON_RETIREMENT
Nov 04 00:51:47.059 [DBUG]Receive CCP message: CCP_MSG_QUIT from unit-2-1 for reason CLUSTER_QUIT_REASON_RETIREMENT
Nov 04 00:51:45.429 [DBUG]Send CCP message to all: CCP_MSG_QUIT from unit-1-1 to unit-3-1 for reason CLUSTER_QUIT_MEMBER_DROPOUT
Nov 04 00:51:45.429 [DBUG]Send CCP message to unit-3-1(1): CCP_MSG_QUIT from unit-1-1 to unit-3-1 for reason CLUSTER_QUIT_REASON_UNIT_HC
Unit-2-1 클러스터 추적 로그:
firepower# show cluster info trace | include QUIT
Nov 04 00:52:10.389 [DBUG]Receive CCP message: CCP_MSG_QUIT from unit-3-1 for reason CLUSTER_QUIT_REASON_RETIREMENT
Nov 04 00:51:47.019 [DBUG]Send CCP message to all: CCP_MSG_QUIT from unit-2-1 for reason CLUSTER_QUIT_REASON_RETIREMENT
Nov 04 00:51:46.999 [DBUG]Receive CCP message: CCP_MSG_QUIT from unit-3-1 to unit-2-1 for reason CLUSTER_QUIT_REASON_PRIMARY_UNIT_HC
Nov 04 00:51:45.389 [DBUG]Receive CCP message: CCP_MSG_QUIT from unit-1-1 to unit-3-1 for reason CLUSTER_QUIT_MEMBER_DROPOUT
클러스터 기록
Unit-1-1 |
Unit-2-1 |
Unit-3-1 |
이벤트 없음 |
00:51:50 UTC Nov 4 2020 |
00:51:47 UTC Nov 4 2020 |
NGFW 캡처 포인트
NGFW는 다음과 같은 점에서 캡처 기능을 제공합니다.
클러스터에서 데이터 경로 문제를 해결할 때 대부분의 경우 사용되는 캡처 지점은 FXOS 및 FTD 데이터 플레인 엔진 캡처입니다.
NGFW 캡처에 대한 자세한 내용은 다음 문서를 참조하십시오.
클러스터 유닛 플로우 역할 기본 사항
클러스터를 통해 다음과 같은 요인에 따라 다양한 방식으로 연결을 설정할 수 있습니다.
흐름 역할 |
설명 |
플래그 |
소유자 |
일반적으로 연결을 처음 수신하는 유닛입니다 |
UIO |
이사 |
전달자의 소유자 조회 요청을 처리하는 장치입니다. |
Y |
백업 소유자 |
이사가 소유자와 동일한 단위가 아닌 한, 이사가 백업 소유자이기도 합니다. 소유자가 자신을 디렉터로 선택하면 별도의 백업 소유자가 선택됩니다. |
Y(디렉터도 백업 소유자인 경우) y(디렉터가 백업 소유자가 아닌 경우) |
전달자 |
소유자에게 패킷을 전달하는 유닛 |
z |
조각 소유자 |
프래그먼트된 트래픽을 처리하는 유닛 |
- |
섀시 백업 |
섀시 간 클러스터에서 디렉터/백업 및 소유자 플로우가 모두 동일한 섀시의 유닛에서 소유하는 경우 다른 섀시 중 하나의 유닛이 보조 백업/디렉터가 됩니다. 이 역할은 블레이드가 2개 이상인 Firepower 9300 Series의 섀시 간 클러스터와 관련이 있습니다. |
w |
클러스터 연결 설정 사례 연구
다음 섹션에서는 클러스터를 통해 연결을 설정하는 몇 가지 방법을 보여 주는 다양한 사례 연구를 다룹니다. 목표는 다음과 같습니다.
토폴로지
클러스터 유닛 및 ID:
Unit-1-1 |
Unit-2-1 |
Unit-3-1 |
Cluster GROUP1: On |
Unit "unit-2-1" in state SECONDARY |
Unit "unit-3-1" in state SECONDARY |
클러스터 캡처 사용:
cluster exec cap CAPI int INSIDE buffer 33554432 match tcp host 192.168.240.50 host 192.168.241.50 eq 80
cluster exec cap CAPO int OUTSIDE buffer 33554432 match tcp host 192.168.240.50 host 192.168.241.50 eq 80
cluster exec cap CAPI_RH reinject-hide int INSIDE buffer 33554432 match tcp host 192.168.240.50 host 192.168.241.50 eq 80
cluster exec cap CAPO_RH reinject-hide int OUTSIDE buffer 33554432 match tcp host 192.168.240.50 host 192.168.241.50 eq 80
cluster exec cap CCL int cluster buffer 33554432
참고: 이러한 테스트는 클러스터를 통과하는 트래픽을 최소화하면서 랩 환경에서 실행되었습니다. 프로덕션 환경에서는 가능한 한 특정 캡처 필터(예: 대상 포트 및 가능한 경우 소스 포트)로 사용하여 캡처의 '노이즈'를 최소화하려고 합니다.
사례 연구 1. 대칭 트래픽(소유자도 책임자)
관찰 1. reinject-hide는 unit-1-1에서만 show 패킷을 캡처합니다. 이는 양방향의 흐름이 unit-1-1(대칭 트래픽)을 거쳤음을 의미합니다.
firepower# cluster exec show cap
unit-1-1(LOCAL):******************************************************
capture CCL type raw-data interface cluster [Capturing - 33513 bytes]
capture CAPI type raw-data buffer 33554432 trace interface INSIDE [Buffer Full - 33553914 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq 80
capture CAPO type raw-data buffer 33554432 trace interface OUTSIDE [Buffer Full - 33553914 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq 80
capture CAPI_RH type raw-data reinject-hide buffer 33554432 interface INSIDE [Buffer Full - 33553914 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq 80
capture CAPO_RH type raw-data reinject-hide buffer 33554432 interface OUTSIDE [Buffer Full - 33553914 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq 80
unit-2-1:*************************************************************
capture CCL type raw-data interface cluster [Capturing - 23245 bytes]
capture CAPI type raw-data buffer 33554432 trace interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq 80
capture CAPO type raw-data buffer 33554432 trace interface OUTSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq 80
capture CAPI_RH type raw-data reinject-hide buffer 33554432 interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq 80
capture CAPO_RH type raw-data reinject-hide buffer 33554432 interface OUTSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq 80
unit-3-1:*************************************************************
capture CCL type raw-data interface cluster [Capturing - 24815 bytes]
capture CAPI type raw-data buffer 33554432 trace interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq 80
capture CAPO type raw-data buffer 33554432 trace interface OUTSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq 80
capture CAPI_RH type raw-data reinject-hide buffer 33554432 interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq 80
capture CAPO_RH type raw-data reinject-hide buffer 33554432 interface OUTSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq 80
관찰 2. 소스 포트 45954이 있는 플로우에 대한 연결 플래그 분석
firepower# cluster exec show conn
unit-1-1(LOCAL):******************************************************
22 in use, 25 most used
Cluster:
fwd connections: 0 in use, 1 most used
dir connections: 0 in use, 122 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 1 enabled, 0 in effect, 2 most enabled, 1 most in effect
TCP OUTSIDE 192.168.241.50:80 INSIDE 192.168.240.50:45954, idle 0:00:00, bytes 487413076, flags UIO N1
unit-2-1:*************************************************************
22 in use, 271 most used
Cluster:
fwd connections: 0 in use, 2 most used
dir connections: 0 in use, 2 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 1 enabled, 0 in effect, 249 most enabled, 0 most in effect
unit-3-1:*************************************************************
17 in use, 20 most used
Cluster:
fwd connections: 1 in use, 2 most used
dir connections: 1 in use, 127 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 1 most enabled, 0 most in effect
TCP OUTSIDE 192.168.241.50:443 NP Identity Ifc 192.168.240.50:39698, idle 0:00:23, bytes 0, flags z
TCP OUTSIDE 192.168.241.50:80 INSIDE 192.168.240.50:45954, idle 0:00:06, bytes 0, flags y
단위 |
플래그 |
메모 |
Unit-1-1 |
UIO |
· Flow Owner(플로우 소유자) - 디바이스가 플로우를 처리합니다. · Director - unit-3-1은 'y'를 갖고 'Y'는 갖고 있지 않으므로 이 플로우의 디렉터로 unit-1-1이 선택되었음을 의미합니다. 그리하여 소유자이기도 하므로 백업 소유자로 다른 유닛(이 사건 unit-3-1)을 선출하였다 |
Unit-2-1 |
- |
- |
Unit-3-1 |
y |
장치가 백업 소유자입니다. |
이는 다음과 같이 시각화할 수 있습니다.
관찰 3. Capture with trace(추적을 사용하여 캡처)는 두 방향이 모두 unit-1-1을 통해서만 이루어진다는 것을 보여줍니다.
1단계. 소스 포트를 기반으로 모든 클러스터 유닛에서 관심 있는 플로우 및 패킷을 식별합니다.
firepower# cluster exec show capture CAPI | i 45954
unit-1-1(LOCAL):******************************************************
1: 08:42:09.362697 802.1Q vlan#201 P0 192.168.240.50.45954 > 192.168.241.50.80: S 992089269:992089269(0) win 29200 <mss 1460,sackOK,timestamp 495153655 0,nop,wscale 7>
2: 08:42:09.363521 802.1Q vlan#201 P0 192.168.241.50.80 > 192.168.240.50.45954: S 4042762409:4042762409(0) ack 992089270 win 28960 <mss 1380,sackOK,timestamp 505509125 495153655,nop,wscale 7>
3: 08:42:09.363827 802.1Q vlan#201 P0 192.168.240.50.45954 > 192.168.241.50.80: . ack 4042762410 win 229 <nop,nop,timestamp 495153657 505509125>
…
unit-2-1:*************************************************************
unit-3-1:*************************************************************
firepower# cluster exec show capture CAPO | i 45954
unit-1-1(LOCAL):******************************************************
1: 08:42:09.362987 802.1Q vlan#202 P0 192.168.240.50.45954 > 192.168.241.50.80: S 2732339016:2732339016(0) win 29200 <mss 1380,sackOK,timestamp 495153655 0,nop,wscale 7>
2: 08:42:09.363415 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.45954: S 3603655982:3603655982(0) ack 2732339017 win 28960 <mss 1460,sackOK,timestamp 505509125 495153655,nop,wscale 7>
3: 08:42:09.363903 802.1Q vlan#202 P0 192.168.240.50.45954 > 192.168.241.50.80: . ack 3603655983 win 229 <nop,nop,timestamp 495153657 505509125>
…
unit-2-1:*************************************************************
unit-3-1:*************************************************************
2단계. 이는 TCP 플로우 추적이므로 3방향 핸드셰이크 패킷을 추적합니다. 이 출력에서 볼 수 있듯이 unit-1-1이 소유자입니다. 간소화하기 위해 관련되지 않은 추적 단계는 생략됩니다.
firepower# show cap CAPI packet-number 1 trace
25985 packets captured
1: 08:42:09.362697 802.1Q vlan#201 P0 192.168.240.50.45954 > 192.168.241.50.80: S 992089269:992089269(0) win 29200 <mss 1460,sackOK,timestamp 495153655 0,nop,wscale 7>
...
Phase: 4
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'INSIDE'
Flow type: NO FLOW
I (0) got initial, attempting ownership.
Phase: 5
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'INSIDE'
Flow type: NO FLOW
I (0) am becoming owner
...
반환 트래픽(TCP SYN/ACK):
firepower# show capture CAPO packet-number 2 trace
25985 packets captured
2: 08:42:09.363415 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.45954: S 3603655982:3603655982(0) ack 2732339017 win 28960 <mss 1460,sackOK,timestamp 505509125 495153655,nop,wscale 7>
...
Phase: 3
Type: FLOW-LOOKUP
Subtype:
Result: ALLOW
Config:
Additional Information:
Found flow with id 9364, using existing flow
관찰 4. FTD 데이터 플레인 syslog는 모든 유닛에서 연결 생성 및 종료를 표시합니다.
firepower# cluster exec show log | include 45954
unit-1-1(LOCAL):******************************************************
Dec 01 2020 08:42:09: %FTD-6-302013: Built inbound TCP connection 9364 for INSIDE:192.168.240.50/45954 (192.168.240.50/45954) to OUTSIDE:192.168.241.50/80 (192.168.241.50/80)
Dec 01 2020 08:42:18: %FTD-6-302014: Teardown TCP connection 9364 for INSIDE:192.168.240.50/45954 to OUTSIDE:192.168.241.50/80 duration 0:00:08 bytes 1024000440 TCP FINs from INSIDE
unit-2-1:*************************************************************
unit-3-1:*************************************************************
Dec 01 2020 08:42:09: %FTD-6-302022: Built backup stub TCP connection for INSIDE:192.168.240.50/45954 (192.168.240.50/45954) to OUTSIDE:192.168.241.50/80 (192.168.241.50/80)
Dec 01 2020 08:42:18: %FTD-6-302023: Teardown backup TCP connection for INSIDE:192.168.240.50/45954 to OUTSIDE:192.168.241.50/80 duration 0:00:08 forwarded bytes 0 Cluster flow with CLU closed on owner
사례 연구 2. 대칭 트래픽(디렉터와 다른 소유자)
관찰 1. 사장님과 주인이 다릅니다.
소스 포트 46278의 흐름에 대한 연결 플래그 분석
firepower# cluster exec show conn
unit-1-1(LOCAL):******************************************************
23 in use, 25 most used
Cluster:
fwd connections: 0 in use, 1 most used
dir connections: 0 in use, 122 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 2 enabled, 0 in effect, 4 most enabled, 1 most in effect
TCP OUTSIDE 192.168.241.50:80 INSIDE 192.168.240.50:46278, idle 0:00:00, bytes 508848268, flags UIO N1
TCP OUTSIDE 192.168.241.50:80 INSIDE 192.168.240.50:46276, idle 0:00:03, bytes 0, flags aA N1
unit-2-1:*************************************************************
21 in use, 271 most used
Cluster:
fwd connections: 0 in use, 2 most used
dir connections: 0 in use, 2 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 249 most enabled, 0 most in effect
unit-3-1:*************************************************************
17 in use, 20 most used
Cluster:
fwd connections: 1 in use, 5 most used
dir connections: 1 in use, 127 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 1 most enabled, 0 most in effect
TCP OUTSIDE 192.168.241.50:80 NP Identity Ifc 192.168.240.50:46276, idle 0:00:02, bytes 0, flags z
TCP OUTSIDE 192.168.241.50:80 INSIDE 192.168.240.50:46278, idle 0:00:06, bytes 0, flags Y
단위 |
플래그 |
메모 |
Unit-1-1 |
UIO |
· Flow Owner(플로우 소유자) - 디바이스가 플로우를 처리합니다. |
Unit-2-1 |
- |
- |
Unit-3-1 |
Y |
· 디렉터 및 백업 소유자 - 유닛 3-1에는 플래그 Y(디렉터)가 있습니다. |
이는 다음과 같이 시각화할 수 있습니다.
관찰 2. Capture with trace(추적을 사용하여 캡처)는 두 방향이 모두 unit-1-1을 통해서만 진행됨을 보여줍니다.
1단계. 사례 연구 1과 동일한 접근 방식을 사용하여 소스 포트를 기반으로 모든 클러스터 유닛에서 관심 있는 플로우 및 패킷을 식별합니다.
firepower# cluster exec show cap CAPI | include 46278
unit-1-1(LOCAL):******************************************************
3: 11:01:44.841631 802.1Q vlan#201 P0 192.168.240.50.46278 > 192.168.241.50.80: S 1972783998:1972783998(0) win 29200 <mss 1460,sackOK,timestamp 503529072 0,nop,wscale 7>
4: 11:01:44.842317 802.1Q vlan#201 P0 192.168.241.50.80 > 192.168.240.50.46278: S 3524167695:3524167695(0) ack 1972783999 win 28960 <mss 1380,sackOK,timestamp 513884542 503529072,nop,wscale 7>
5: 11:01:44.842592 802.1Q vlan#201 P0 192.168.240.50.46278 > 192.168.241.50.80: . ack 3524167696 win 229 <nop,nop,timestamp 503529073 513884542>
…
unit-2-1:*************************************************************
unit-3-1:*************************************************************
firepower#
외부 인터페이스에서 캡처:
firepower# cluster exec show cap CAPO | include 46278
unit-1-1(LOCAL):******************************************************
3: 11:01:44.841921 802.1Q vlan#202 P0 192.168.240.50.46278 > 192.168.241.50.80: S 2153055699:2153055699(0) win 29200 <mss 1380,sackOK,timestamp 503529072 0,nop,wscale 7>
4: 11:01:44.842226 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.46278: S 3382481337:3382481337(0) ack 2153055700 win 28960 <mss 1460,sackOK,timestamp 513884542 503529072,nop,wscale 7>
5: 11:01:44.842638 802.1Q vlan#202 P0 192.168.240.50.46278 > 192.168.241.50.80: . ack 3382481338 win 229 <nop,nop,timestamp 503529073 513884542>
unit-2-1:*************************************************************
unit-3-1:*************************************************************
firepower#
2단계. 인그레스 패킷에 집중(TCP SYN 및 TCP SYN/ACK):
firepower# cluster exec show cap CAPI packet-number 3 trace
unit-1-1(LOCAL):******************************************************
824 packets captured
3: 11:01:44.841631 802.1Q vlan#201 P0 192.168.240.50.46278 > 192.168.241.50.80: S 1972783998:1972783998(0) win 29200 <mss 1460,sackOK,timestamp 503529072 0,nop,wscale 7>
…
Phase: 4
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'INSIDE'
Flow type: NO FLOW
I (0) got initial, attempting ownership.
Phase: 5
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'INSIDE'
Flow type: NO FLOW
I (0) am becoming owner
unit-1-1에서 SYN/ACK 추적:
firepower# cluster exec show cap CAPO packet-number 4 trace
unit-1-1(LOCAL):******************************************************
4: 11:01:44.842226 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.46278: S 3382481337:3382481337(0) ack 2153055700 win 28960 <mss 1460,sackOK,timestamp 513884542 503529072,nop,wscale 7>
Phase: 3
Type: FLOW-LOOKUP
Subtype:
Result: ALLOW
Config:
Additional Information:
Found flow with id 9583, using existing flow
관찰 3. FTD 데이터 플레인 syslog는 소유자 및 백업 소유자에 대한 연결 생성 및 종료를 표시합니다.
firepower# cluster exec show log | include 46278
unit-1-1(LOCAL):******************************************************
Dec 01 2020 11:01:44: %FTD-6-302013: Built inbound TCP connection 9583 for INSIDE:192.168.240.50/46278 (192.168.240.50/46278) to OUTSIDE:192.168.241.50/80 (192.168.241.50/80)
Dec 01 2020 11:01:53: %FTD-6-302014: Teardown TCP connection 9583 for INSIDE:192.168.240.50/46278 to OUTSIDE:192.168.241.50/80 duration 0:00:08 bytes 1024001808 TCP FINs from INSIDE
unit-2-1:*************************************************************
unit-3-1:*************************************************************
Dec 01 2020 11:01:44: %FTD-6-302022: Built director stub TCP connection for INSIDE:192.168.240.50/46278 (192.168.240.50/46278) to OUTSIDE:192.168.241.50/80 (192.168.241.50/80)
Dec 01 2020 11:01:53: %FTD-6-302023: Teardown director TCP connection for INSIDE:192.168.240.50/46278 to OUTSIDE:192.168.241.50/80 duration 0:00:08 forwarded bytes 0 Cluster flow with CLU closed on owner
사례 연구 3. 비대칭 트래픽(디렉터가 트래픽을 전달함).
관찰 1. reinject-hide는 unit-1-1 및 unit-2-1의 show 패킷을 캡처합니다(비대칭 흐름).
firepower# cluster exec show cap
unit-1-1(LOCAL):******************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Buffer Full - 33554320 bytes]
capture CAPI type raw-data buffer 100000 trace interface INSIDE [Buffer Full - 98552 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO type raw-data buffer 100000 trace interface OUTSIDE [Buffer Full - 98552 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPI_RH type raw-data reinject-hide buffer 100000 interface INSIDE [Buffer Full - 98552 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO_RH type raw-data reinject-hide buffer 100000 interface OUTSIDE [Buffer Full - 99932 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
unit-2-1:*************************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Buffer Full - 33553268 bytes]
capture CAPI type raw-data buffer 100000 trace interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO type raw-data buffer 100000 trace interface OUTSIDE [Buffer Full - 99052 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPI_RH type raw-data reinject-hide buffer 100000 interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO_RH type raw-data reinject-hide buffer 100000 interface OUTSIDE [Buffer Full - 99052 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
unit-3-1:*************************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Capturing - 53815 bytes]
capture CAPI type raw-data buffer 100000 trace interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO type raw-data buffer 100000 trace interface OUTSIDE [Capturing - 658 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPI_RH type raw-data reinject-hide buffer 100000 interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO_RH type raw-data reinject-hide buffer 100000 interface OUTSIDE [Capturing - 658 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
관찰 2. 소스 포트 46502의 흐름에 대한 연결 플래그 분석
firepower# cluster exec show conn
unit-1-1(LOCAL):******************************************************
23 in use, 25 most used
Cluster:
fwd connections: 0 in use, 1 most used
dir connections: 0 in use, 122 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 2 enabled, 0 in effect, 4 most enabled, 1 most in effect
TCP OUTSIDE 192.168.241.50:80 INSIDE 192.168.240.50:46502, idle 0:00:00, bytes 448760236, flags UIO N1
TCP OUTSIDE 192.168.241.50:80 INSIDE 192.168.240.50:46500, idle 0:00:06, bytes 0, flags aA N1
unit-2-1:*************************************************************
21 in use, 271 most used
Cluster:
fwd connections: 0 in use, 2 most used
dir connections: 1 in use, 2 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 249 most enabled, 0 most in effect
TCP OUTSIDE 192.168.241.50:80 INSIDE 192.168.240.50:46502, idle 0:00:00, bytes 0, flags Y
unit-3-1:*************************************************************
17 in use, 20 most used
Cluster:
fwd connections: 1 in use, 5 most used
dir connections: 0 in use, 127 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 1 most enabled, 0 most in effect
단위 |
플래그 |
메모 |
Unit-1-1 |
UIO |
· Flow Owner(플로우 소유자) - 디바이스가 플로우를 처리합니다. |
Unit-2-1 |
Y |
· Director - unit-2-1에는 'Y' 플래그가 있으므로 이 플로우의 Director로 unit-2-1이 선택되었음을 의미합니다. · 백업 소유자 · 마지막으로, 이 출력에서 명확하지 않지만 show capture 및 show log 출력에서 유닛-2-1이 소유자에게 이 플로우를 전달하는 것이 분명합니다(이 시나리오에서는 기술적으로 전달자로 간주되지 않지만). 참고: 유닛에는 디렉터(Y 흐름)와 전달자(Z 흐름)가 모두 포함될 수 없으며, 이 두 역할은 함께 사용할 수 없습니다. 디렉터(Y 흐름)는 여전히 트래픽을 전달할 수 있습니다. 이 사례 연구의 뒷부분에 나오는 show log 출력을 참조하십시오. |
Unit-3-1 |
- |
- |
이는 다음과 같이 시각화할 수 있습니다.
관찰 3. Capture with trace는 비대칭 트래픽과 unit-2-1에서 unit-1-1로의 리디렉션을 보여줍니다.
1단계. 관심 흐름에 속하는 패킷을 식별합니다(포트 46502).
firepower# cluster exec show capture CAPI | include 46502
unit-1-1(LOCAL):******************************************************
3: 12:58:33.356121 802.1Q vlan#201 P0 192.168.240.50.46502 > 192.168.241.50.80: S 4124514680:4124514680(0) win 29200 <mss 1460,sackOK,timestamp 510537534 0,nop,wscale 7>
4: 12:58:33.357037 802.1Q vlan#201 P0 192.168.241.50.80 > 192.168.240.50.46502: S 883000451:883000451(0) ack 4124514681 win 28960 <mss 1380,sackOK,timestamp 520893004 510537534,nop,wscale 7>
5: 12:58:33.357357 802.1Q vlan#201 P0 192.168.240.50.46502 > 192.168.241.50.80: . ack 883000452 win 229 <nop,nop,timestamp 510537536 520893004>
unit-2-1:*************************************************************
unit-3-1:*************************************************************
반환 방향:
firepower# cluster exec show capture CAPO | include 46502
unit-1-1(LOCAL):******************************************************
3: 12:58:33.356426 802.1Q vlan#202 P0 192.168.240.50.46502 > 192.168.241.50.80: S 1434968587:1434968587(0) win 29200 <mss 1380,sackOK,timestamp 510537534 0,nop,wscale 7>
4: 12:58:33.356915 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.46502: S 4257314722:4257314722(0) ack 1434968588 win 28960 <mss 1460,sackOK,timestamp 520893004 510537534,nop,wscale 7>
5: 12:58:33.357403 802.1Q vlan#202 P0 192.168.240.50.46502 > 192.168.241.50.80: . ack 4257314723 win 229 <nop,nop,timestamp 510537536 520893004>
unit-2-1:*************************************************************
1: 12:58:33.359249 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.46502: S 4257314722:4257314722(0) ack 1434968588 win 28960 <mss 1460,sackOK,timestamp 520893004 510537534,nop,wscale 7>
2: 12:58:33.360302 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.46502: . ack 1434968736 win 235 <nop,nop,timestamp 520893005 510537536>
3: 12:58:33.361004 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.46502: . 4257314723:4257316091(1368) ack 1434968736 win 235 <nop,nop,timestamp 520893006 510537536>
…
unit-3-1:*************************************************************
2단계. 패킷 추적 기본적으로 처음 50개의 인그레스 패킷만 추적됩니다. 간소화하기 위해 관련되지 않은 추적 단계는 생략됩니다.
Unit-1-1(소유자):
firepower# cluster exec show capture CAPI packet-number 3 trace
unit-1-1(LOCAL):******************************************************
3: 12:58:33.356121 802.1Q vlan#201 P0 192.168.240.50.46502 > 192.168.241.50.80: S 4124514680:4124514680(0) win 29200 <mss 1460,sackOK,timestamp 510537534 0,nop,wscale 7>
...
Phase: 4
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'INSIDE'
Flow type: NO FLOW
I (0) got initial, attempting ownership.
Phase: 5
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'INSIDE'
Flow type: NO FLOW
I (0) am becoming owner
Unit-2-1(전달자)
반환 트래픽(TCP SYN/ACK) 관심 유닛은 유닛-2-1입니다. 유닛-2-1은 디렉터/백업 소유자이며 트래픽을 소유자에게 전달합니다.
firepower# cluster exec unit unit-2-1 show capture CAPO packet-number 1 trace
1: 12:58:33.359249 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.46502: S 4257314722:4257314722(0) ack 1434968588 win 28960 <mss 1460,sackOK,timestamp 520893004 510537534,nop,wscale 7>
...
Phase: 4
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'OUTSIDE'
Flow type: NO FLOW
I (1) got initial, attempting ownership.
Phase: 5
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'OUTSIDE'
Flow type: NO FLOW
I (1) am early redirecting to (0) due to matching action (-1).
관찰 4. FTD 데이터 플레인 syslog는 모든 유닛에서 연결 생성 및 종료를 표시합니다.
firepower# cluster exec show log | i 46502
unit-1-1(LOCAL):******************************************************
Dec 01 2020 12:58:33: %FTD-6-302013: Built inbound TCP connection 9742 for INSIDE:192.168.240.50/46502 (192.168.240.50/46502) to OUTSIDE:192.168.241.50/80 (192.168.241.50/80)
Dec 01 2020 12:59:02: %FTD-6-302014: Teardown TCP connection 9742 for INSIDE:192.168.240.50/46502 to OUTSIDE:192.168.241.50/80 duration 0:00:28 bytes 2048000440 TCP FINs from INSIDE
unit-2-1:*************************************************************
Dec 01 2020 12:58:33: %FTD-6-302022: Built forwarder stub TCP connection for OUTSIDE:192.168.241.50/80 (192.168.241.50/80) to unknown:192.168.240.50/46502 (192.168.240.50/46502)
Dec 01 2020 12:58:33: %FTD-6-302023: Teardown forwarder TCP connection for OUTSIDE:192.168.241.50/80 to unknown:192.168.240.50/46502 duration 0:00:00 forwarded bytes 0 Forwarding or redirect flow removed to create director or backup flow
Dec 01 2020 12:58:33: %FTD-6-302022: Built director stub TCP connection for INSIDE:192.168.240.50/46502 (192.168.240.50/46502) to OUTSIDE:192.168.241.50/80 (192.168.241.50/80)
Dec 01 2020 12:59:02: %FTD-6-302023: Teardown director TCP connection for INSIDE:192.168.240.50/46502 to OUTSIDE:192.168.241.50/80 duration 0:00:28 forwarded bytes 2048316300 Cluster flow with CLU closed on owner
unit-3-1:*************************************************************
firepower#
사례 연구 4. 비대칭 트래픽(소유자가 디렉터)
관찰 1. reinject-hide는 unit-1-1 및 unit-2-1의 show 패킷을 캡처합니다(비대칭 흐름).
firepower# cluster exec show cap
unit-1-1(LOCAL):******************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Buffer Full - 33554229 bytes]
capture CAPI type raw-data buffer 100000 trace interface INSIDE [Buffer Full - 98974 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO type raw-data buffer 100000 trace interface OUTSIDE [Buffer Full - 98974 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPI_RH type raw-data reinject-hide buffer 100000 interface INSIDE [Buffer Full - 98974 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO_RH type raw-data reinject-hide buffer 100000 interface OUTSIDE [Buffer Full - 99924 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
unit-2-1:*************************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Buffer Full - 33552925 bytes]
capture CAPI type raw-data buffer 100000 trace interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO type raw-data buffer 100000 trace interface OUTSIDE [Buffer Full - 99052 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPI_RH type raw-data reinject-hide buffer 100000 interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO_RH type raw-data reinject-hide buffer 100000 interface OUTSIDE [Buffer Full - 99052 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
unit-3-1:*************************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Capturing - 227690 bytes]
capture CAPI type raw-data buffer 100000 trace interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO type raw-data buffer 100000 trace interface OUTSIDE [Capturing - 4754 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPI_RH type raw-data reinject-hide buffer 100000 interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO_RH type raw-data reinject-hide buffer 100000 interface OUTSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
관찰 2. 소스 포트 46916의 흐름에 대한 연결 플래그 분석
firepower# cluster exec show conn
unit-1-1(LOCAL):******************************************************
23 in use, 25 most used
Cluster:
fwd connections: 0 in use, 1 most used
dir connections: 0 in use, 122 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 1 enabled, 0 in effect, 4 most enabled, 1 most in effect
TCP OUTSIDE 192.168.241.50:80 INSIDE 192.168.240.50:46916, idle 0:00:00, bytes 414682616, flags UIO N1
unit-2-1:*************************************************************
21 in use, 271 most used
Cluster:
fwd connections: 1 in use, 2 most used
dir connections: 0 in use, 2 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 249 most enabled, 0 most in effect
TCP OUTSIDE 192.168.241.50:80 NP Identity Ifc 192.168.240.50:46916, idle 0:00:00, bytes 0, flags z
unit-3-1:*************************************************************
17 in use, 20 most used
Cluster:
fwd connections: 0 in use, 5 most used
dir connections: 1 in use, 127 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 1 most enabled, 0 most in effect
TCP OUTSIDE 192.168.241.50:80 INSIDE 192.168.240.50:46916, idle 0:00:04, bytes 0, flags y
단위 |
플래그 |
메모 |
Unit-1-1 |
UIO |
· Flow Owner(플로우 소유자) - 디바이스가 플로우를 처리합니다. · Director - unit-3-1은 'y'를 갖고 'Y'는 갖고 있지 않으므로 이 플로우의 디렉터로 unit-1-1이 선택되었음을 의미합니다. 그리하여 소유자이기도 하므로 백업 소유자로 다른 유닛(이 사건 unit-3-1)을 선출하였다 |
Unit-2-1 |
z |
· 전달자 |
Unit-3-1 |
y |
- 백업 소유자 |
이는 다음과 같이 시각화할 수 있습니다.
관찰 3. Capture with trace는 비대칭 트래픽과 unit-2-1에서 unit-1-1로의 리디렉션을 보여줍니다.
Unit-2-1(전달자)
firepower# cluster exec unit unit-2-1 show capture CAPO packet-number 1 trace
1: 16:11:33.653164 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.46916: S 1331019196:1331019196(0) ack 3089755618 win 28960 <mss 1460,sackOK,timestamp 532473211 522117741,nop,wscale 7>
...
Phase: 4
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'OUTSIDE'
Flow type: NO FLOW
I (1) got initial, attempting ownership.
Phase: 5
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'OUTSIDE'
Flow type: NO FLOW
I (1) am early redirecting to (0) due to matching action (-1).
관찰 4. FTD 데이터 플레인 syslog는 모든 유닛에서 연결 생성 및 종료를 표시합니다.
firepower# cluster exec show log | i 46916
unit-1-1(LOCAL):******************************************************
Dec 01 2020 16:11:33: %FTD-6-302013: Built inbound TCP connection 10023 for INSIDE:192.168.240.50/46916 (192.168.240.50/46916) to OUTSIDE:192.168.241.50/80 (192.168.241.50/80)
Dec 01 2020 16:11:42: %FTD-6-302014: Teardown TCP connection 10023 for INSIDE:192.168.240.50/46916 to OUTSIDE:192.168.241.50/80 duration 0:00:09 bytes 1024010016 TCP FINs from INSIDE
unit-2-1:*************************************************************
Dec 01 2020 16:11:33: %FTD-6-302022: Built forwarder stub TCP connection for OUTSIDE:192.168.241.50/80 (192.168.241.50/80) to unknown:192.168.240.50/46916 (192.168.240.50/46916)
Dec 01 2020 16:11:42: %FTD-6-302023: Teardown forwarder TCP connection for OUTSIDE:192.168.241.50/80 to unknown:192.168.240.50/46916 duration 0:00:09 forwarded bytes 1024009868 Cluster flow with CLU closed on owner
unit-3-1:*************************************************************
Dec 01 2020 16:11:33: %FTD-6-302022: Built backup stub TCP connection for INSIDE:192.168.240.50/46916 (192.168.240.50/46916) to OUTSIDE:192.168.241.50/80 (192.168.241.50/80)
Dec 01 2020 16:11:42: %FTD-6-302023: Teardown backup TCP connection for INSIDE:192.168.240.50/46916 to OUTSIDE:192.168.241.50/80 duration 0:00:09 forwarded bytes 0 Cluster flow with CLU closed on owner
사례 연구 5. 비대칭 트래픽(소유자가 디렉터와 다름)
관찰 1. reinject-hide는 unit-1-1 및 unit-2-1의 show 패킷을 캡처합니다(비대칭 흐름).
firepower# cluster exec show cap
unit-1-1(LOCAL):******************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Buffer Full - 33553207 bytes]
capture CAPI type raw-data buffer 100000 trace interface INSIDE [Buffer Full - 99396 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO type raw-data buffer 100000 trace interface OUTSIDE [Buffer Full - 99224 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPI_RH type raw-data reinject-hide buffer 100000 interface INSIDE [Buffer Full - 99396 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO_RH type raw-data reinject-hide buffer 100000 interface OUTSIDE [Buffer Full - 99928 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
unit-2-1:*************************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Buffer Full - 33554251 bytes]
capture CAPI type raw-data buffer 100000 trace interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO type raw-data buffer 100000 trace interface OUTSIDE [Buffer Full - 99052 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPI_RH type raw-data reinject-hide buffer 100000 interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO_RH type raw-data reinject-hide buffer 100000 interface OUTSIDE [Buffer Full - 99052 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
unit-3-1:*************************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Capturing - 131925 bytes]
capture CAPI type raw-data buffer 100000 trace interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO type raw-data buffer 100000 trace interface OUTSIDE [Capturing - 2592 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPI_RH type raw-data reinject-hide buffer 100000 interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
capture CAPO_RH type raw-data reinject-hide buffer 100000 interface OUTSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.241.50 eq www
관찰 2. 소스 포트 46994의 흐름에 대한 연결 플래그 분석:
firepower# cluster exec show conn
unit-1-1(LOCAL):******************************************************
23 in use, 25 most used
Cluster:
fwd connections: 0 in use, 1 most used
dir connections: 0 in use, 122 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 1 enabled, 0 in effect, 4 most enabled, 1 most in effect
TCP OUTSIDE 192.168.241.50:80 INSIDE 192.168.240.50:46994, idle 0:00:00, bytes 406028640, flags UIO N1
unit-2-1:*************************************************************
22 in use, 271 most used
Cluster:
fwd connections: 1 in use, 2 most used
dir connections: 0 in use, 2 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 249 most enabled, 0 most in effect
TCP OUTSIDE 192.168.241.50:80 NP Identity Ifc 192.168.240.50:46994, idle 0:00:00, bytes 0, flags z
unit-3-1:*************************************************************
17 in use, 20 most used
Cluster:
fwd connections: 2 in use, 5 most used
dir connections: 1 in use, 127 most used
centralized connections: 0 in use, 0 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 1 most enabled, 0 most in effect
TCP OUTSIDE 192.168.241.50:80 INSIDE 192.168.240.50:46994, idle 0:00:05, bytes 0, flags Y
단위 |
플래그 |
메모 |
Unit-1-1 |
UIO |
· Flow Owner(플로우 소유자) - 디바이스가 플로우를 처리합니다. |
Unit-2-1 |
z |
· 전달자 |
Unit-3-1 |
Y |
· 백업 소유자 · 디렉터 |
이는 다음과 같이 시각화할 수 있습니다.
관찰 3. Capture with trace는 비대칭 트래픽과 unit-2-1에서 unit-1-1로의 리디렉션을 보여줍니다.
Unit-1-1(소유자)
firepower# cluster exec show cap CAPI packet-number 1 trace
unit-1-1(LOCAL):******************************************************
…
Phase: 4
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'INSIDE'
Flow type: NO FLOW
I (0) got initial, attempting ownership.
Phase: 5
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'INSIDE'
Flow type: NO FLOW
I (0) am becoming owner
Unit-2-1(전달자)
firepower# cluster exec unit unit-2-1 show cap CAPO packet-number 1 trace
1: 16:46:44.232074 802.1Q vlan#202 P0 192.168.241.50.80 > 192.168.240.50.46994: S 2863659376:2863659376(0) ack 2879616990 win 28960 <mss 1460,sackOK,timestamp 534583774 524228304,nop,wscale 7>
…
Phase: 4
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'OUTSIDE'
Flow type: NO FLOW
I (1) got initial, attempting ownership.
Phase: 5
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'OUTSIDE'
Flow type: NO FLOW
I (1) am early redirecting to (0) due to matching action (-1).
관찰 4. FTD 데이터 플레인 syslog는 모든 유닛에서 연결 생성 및 종료를 표시합니다.
firepower# cluster exec show log | i 46994
unit-1-1(LOCAL):******************************************************
Dec 01 2020 16:46:44: %FTD-6-302013: Built inbound TCP connection 10080 for INSIDE:192.168.240.50/46994 (192.168.240.50/46994) to OUTSIDE:192.168.241.50/80 (192.168.241.50/80)
Dec 01 2020 16:46:53: %FTD-6-302014: Teardown TCP connection 10080 for INSIDE:192.168.240.50/46994 to OUTSIDE:192.168.241.50/80 duration 0:00:09 bytes 1024000440 TCP FINs from INSIDE
unit-2-1:*************************************************************
Dec 01 2020 16:46:44: %FTD-6-302022: Built forwarder stub TCP connection for OUTSIDE:192.168.241.50/80 (192.168.241.50/80) to unknown:192.168.240.50/46994 (192.168.240.50/46994)
Dec 01 2020 16:46:53: %FTD-6-302023: Teardown forwarder TCP connection for OUTSIDE:192.168.241.50/80 to unknown:192.168.240.50/46994 duration 0:00:09 forwarded bytes 1024000292 Cluster flow with CLU closed on owner
unit-3-1:*************************************************************
Dec 01 2020 16:46:44: %FTD-6-302022: Built director stub TCP connection for INSIDE:192.168.240.50/46994 (192.168.240.50/46994) to OUTSIDE:192.168.241.50/80 (192.168.241.50/80)
Dec 01 2020 16:46:53: %FTD-6-302023: Teardown director TCP connection for INSIDE:192.168.240.50/46994 to OUTSIDE:192.168.241.50/80 duration 0:00:09 forwarded bytes 0 Cluster flow with CLU closed on owner
다음 사례 연구에서는 인라인 집합이 있는 클러스터를 기반으로 하는 토폴로지를 사용합니다.
사례 연구 6. 비대칭 트래픽(Inline-set, 소유자가 디렉터)
관찰 1. reinject-hide는 unit-1-1 및 unit-2-1(비대칭 흐름)의 show 패킷을 캡처합니다. 또한 소유자는 unit-2-1입니다(reinject-hide 캡처에 대해 INSIDE 및 OUTSIDE 인터페이스 모두에 패킷이 있는 반면, unit-1-1에는 OUTSIDE에만 패킷이 있습니다).
firepower# cluster exec show cap
unit-1-1(LOCAL):******************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Buffer Full - 33553253 bytes]
capture CAPO type raw-data trace interface OUTSIDE [Buffer Full - 523432 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPI type raw-data trace interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPO_RH type raw-data reinject-hide interface OUTSIDE [Buffer Full - 523432 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPI_RH type raw-data reinject-hide interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
unit-2-1:*************************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Buffer Full - 33554312 bytes]
capture CAPO type raw-data trace interface OUTSIDE [Buffer Full - 523782 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPI type raw-data trace interface INSIDE [Buffer Full - 523782 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPO_RH type raw-data reinject-hide interface OUTSIDE [Buffer Full - 524218 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPI_RH type raw-data reinject-hide interface INSIDE [Buffer Full - 523782 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
unit-3-1:*************************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Capturing - 53118 bytes]
capture CAPO type raw-data trace interface OUTSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPI type raw-data trace interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPO_RH type raw-data reinject-hide interface OUTSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPI_RH type raw-data reinject-hide interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
관찰 2. 소스 포트 51844의 흐름에 대한 연결 플래그 분석
firepower# cluster exec show conn addr 192.168.240.51
unit-1-1(LOCAL):******************************************************
30 in use, 102 most used
Cluster:
fwd connections: 1 in use, 1 most used
dir connections: 2 in use, 122 most used
centralized connections: 3 in use, 39 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 4 most enabled, 1 most in effect
TCP OUTSIDE 192.168.240.51:80 NP Identity Ifc 192.168.240.50:51844, idle 0:00:00, bytes 0, flags z
unit-2-1:*************************************************************
23 in use, 271 most used
Cluster:
fwd connections: 0 in use, 2 most used
dir connections: 4 in use, 26 most used
centralized connections: 0 in use, 14 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 249 most enabled, 0 most in effect
TCP OUTSIDE 192.168.240.51:80 INSIDE 192.168.240.50:51844, idle 0:00:00, bytes 231214400, flags b N
unit-3-1:*************************************************************
20 in use, 55 most used
Cluster:
fwd connections: 0 in use, 5 most used
dir connections: 1 in use, 127 most used
centralized connections: 0 in use, 24 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 1 most enabled, 0 most in effect
TCP OUTSIDE 192.168.240.51:80 INSIDE 192.168.240.50:51844, idle 0:00:01, bytes 0, flags y
단위 |
플래그 |
메모 |
Unit-1-1 |
z |
· 전달자 |
Unit-2-1 |
b N |
· Flow Owner(플로우 소유자) - 디바이스가 플로우를 처리합니다. |
Unit-3-1 |
y |
· 백업 소유자 |
이는 다음과 같이 시각화할 수 있습니다.
관찰 3. Capture with trace는 비대칭 트래픽과 unit-1-1에서 unit-2-1로의 리디렉션을 보여줍니다.
Unit-2-1(소유자/책임자)
firepower# cluster exec unit unit-2-1 show cap CAPI packet-number 1 trace
1: 18:10:12.842912 192.168.240.50.51844 > 192.168.240.51.80: S 4082593463:4082593463(0) win 29200 <mss 1460,sackOK,timestamp 76258053 0,nop,wscale 7>
Phase: 1
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'INSIDE'
Flow type: NO FLOW
I (1) got initial, attempting ownership.
Phase: 2
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'INSIDE'
Flow type: NO FLOW
I (1) am becoming owner
Unit-1-1(전달자)
firepower# cluster exec show cap CAPO packet-number 1 trace
unit-1-1(LOCAL):******************************************************
1: 18:10:12.842317 192.168.240.51.80 > 192.168.240.50.51844: S 2339579109:2339579109(0) ack 4082593464 win 28960 <mss 1460,sackOK,timestamp 513139467 76258053,nop,wscale 7>
Phase: 1
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'OUTSIDE'
Flow type: NO FLOW
I (0) am asking director (1).
반환 트래픽(TCP SYN/ACK)
Unit-2-1(소유자/책임자)
firepower# cluster exec unit unit-2-1 show cap CAPO packet-number 2 trace
2: 18:10:12.843660 192.168.240.51.80 > 192.168.240.50.51844: S 2339579109:2339579109(0) ack 4082593464 win 28960 <mss 1460,sackOK,timestamp 513139467 76258053,nop,wscale 7>
Phase: 1
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'OUTSIDE'
Flow type: FULL
I (1) am owner, update sender (0).
Phase: 2
Type: FLOW-LOOKUP
Subtype:
Result: ALLOW
Config:
Additional Information:
Found flow with id 7109, using existing flow
관찰 4. FTD 데이터 플레인 syslog는 모든 유닛에서 연결 생성 및 종료를 표시합니다.
firepower# cluster exec show log | include 51844
unit-1-1(LOCAL):******************************************************
Dec 02 2020 18:10:12: %FTD-6-302022: Built forwarder stub TCP connection for OUTSIDE:192.168.240.51/80 (192.168.240.51/80) to unknown:192.168.240.50/51844 (192.168.240.50/51844)
Dec 02 2020 18:10:22: %FTD-6-302023: Teardown forwarder TCP connection for OUTSIDE:192.168.240.51/80 to unknown:192.168.240.50/51844 duration 0:00:09 forwarded bytes 1024001740 Cluster flow with CLU closed on owner
unit-2-1:*************************************************************
Dec 02 2020 18:10:12: %FTD-6-302303: Built TCP state-bypass connection 7109 from INSIDE:192.168.240.50/51844 (192.168.240.50/51844) to OUTSIDE:192.168.240.51/80 (192.168.240.51/80)
Dec 02 2020 18:10:22: %FTD-6-302304: Teardown TCP state-bypass connection 7109 from INSIDE:192.168.240.50/51844 to OUTSIDE:192.168.240.51/80 duration 0:00:09 bytes 1024001888 TCP FINs
unit-3-1:*************************************************************
Dec 02 2020 18:10:12: %FTD-6-302022: Built backup stub TCP connection for INSIDE:192.168.240.50/51844 (192.168.240.50/51844) to OUTSIDE:192.168.240.51/80 (192.168.240.51/80)
Dec 02 2020 18:10:22: %FTD-6-302023: Teardown backup TCP connection for INSIDE:192.168.240.50/51844 to OUTSIDE:192.168.240.51/80 duration 0:00:09 forwarded bytes 0 Cluster flow with CLU closed on owner
사례 연구 7. 비대칭 트래픽(Inline-set, 소유자가 디렉터와 다름)
소유자는 unit-2-1입니다(reinject-hide 캡처에 대해 INSIDE 및 OUTSIDE 인터페이스에 패킷이 있는 반면, unit-3-1에는 OUTSIDE에만 패킷이 있습니다).
firepower# cluster exec show cap
unit-1-1(LOCAL):******************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Capturing - 13902 bytes]
capture CAPO type raw-data trace interface OUTSIDE [Capturing - 90 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPI type raw-data trace interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPO_RH type raw-data reinject-hide interface OUTSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPI_RH type raw-data reinject-hide interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
unit-2-1:*************************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Buffer Full - 33553936 bytes]
capture CAPO type raw-data trace interface OUTSIDE [Buffer Full - 523126 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPI type raw-data trace interface INSIDE [Buffer Full - 523126 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPO_RH type raw-data reinject-hide interface OUTSIDE [Buffer Full - 524230 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPI_RH type raw-data reinject-hide interface INSIDE [Buffer Full - 523126 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
unit-3-1:*************************************************************
capture CCL type raw-data buffer 33554432 interface cluster [Buffer Full - 33553566 bytes]
capture CAPO type raw-data trace interface OUTSIDE [Buffer Full - 523522 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPI type raw-data trace interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPO_RH type raw-data reinject-hide interface OUTSIDE [Buffer Full - 523432 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
capture CAPI_RH type raw-data reinject-hide interface INSIDE [Capturing - 0 bytes]
match tcp host 192.168.240.50 host 192.168.240.51 eq www
관찰 2. 소스 포트 59210의 흐름에 대한 연결 플래그 분석
firepower# cluster exec show conn addr 192.168.240.51
unit-1-1(LOCAL):******************************************************
25 in use, 102 most used
Cluster:
fwd connections: 0 in use, 1 most used
dir connections: 2 in use, 122 most used
centralized connections: 0 in use, 39 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 4 most enabled, 1 most in effect
TCP OUTSIDE 192.168.240.51:80 INSIDE 192.168.240.50:59210, idle 0:00:03, bytes 0, flags Y
unit-2-1:*************************************************************
21 in use, 271 most used
Cluster:
fwd connections: 0 in use, 2 most used
dir connections: 0 in use, 28 most used
centralized connections: 0 in use, 14 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 249 most enabled, 0 most in effect
TCP OUTSIDE 192.168.240.51:80 INSIDE 192.168.240.50:59210, idle 0:00:00, bytes 610132872, flags b N
unit-3-1:*************************************************************
19 in use, 55 most used
Cluster:
fwd connections: 1 in use, 5 most used
dir connections: 0 in use, 127 most used
centralized connections: 0 in use, 24 most used
VPN redirect connections: 0 in use, 0 most used
Inspect Snort:
preserve-connection: 0 enabled, 0 in effect, 1 most enabled, 0 most in effect
TCP OUTSIDE 192.168.240.51:80 NP Identity Ifc 192.168.240.50:59210, idle 0:00:00, bytes 0, flags z
단위 |
플래그 |
메모 |
Unit-1-1 |
Y |
· 디렉터 / 백업 소유자 |
Unit-2-1 |
b N |
· Flow Owner(플로우 소유자) - 디바이스가 플로우를 처리합니다. |
Unit-3-1 |
z |
· 전달자 |
이는 다음과 같이 시각화할 수 있습니다.
참고: 2단계(CCL을 통한 패킷)가 4단계(데이터 트래픽)보다 먼저 발생하는 것이 중요합니다. 다른 경우(예를 들어, 경합 상태), 감독은 흐름을 인식하지 못한다. 따라서 인라인 집합이므로 패킷을 목적지로 전달합니다. 인터페이스가 인라인 집합에 없는 경우 데이터 패킷이 삭제됩니다.
관찰 3. Capture with trace(추적을 통한 캡처)는 CCL을 통한 비대칭 트래픽과 교환을 보여줍니다.
전달 트래픽(TCP SYN)
Unit-2-1(소유자)
firepower# cluster exec unit unit-2-1 show cap CAPI packet-number 1 trace
1: 09:19:49.760702 192.168.240.50.59210 > 192.168.240.51.80: S 4110299695:4110299695(0) win 29200 <mss 1460,sackOK,timestamp 130834570 0,nop,wscale 7>
Phase: 1
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'INSIDE'
Flow type: NO FLOW
I (1) got initial, attempting ownership.
Phase: 2
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'INSIDE'
Flow type: NO FLOW
I (1) am becoming owner
반환 트래픽(TCP SYN/ACK)
Unit-3-1(ID 2 - 전달자)은 CCL을 통해 패킷을 unit-1-1(ID 0 - 디렉터)로 전송합니다.
firepower# cluster exec unit unit-3-1 show cap CAPO packet-number 1 trace
1: 09:19:49.760336 192.168.240.51.80 > 192.168.240.50.59210: S 4209225081:4209225081(0) ack 4110299696 win 28960 <mss 1460,sackOK,timestamp 567715984 130834570,nop,wscale 7>
Phase: 1
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'OUTSIDE'
Flow type: NO FLOW
I (2) am asking director (0).
Unit-1-1(디렉터) - Unit-1-1(ID 0)은 플로우 소유자가 unit-2-1(ID 1)임을 알고 CCL을 통해 패킷을 다시 unit-3-1(ID 2 - 전달자)로 전송합니다.
firepower# cluster exec show cap CAPO packet-number 1 trace
unit-1-1(LOCAL):******************************************************
1: 09:19:49.761038 192.168.240.51.80 > 192.168.240.50.59210: S 4209225081:4209225081(0) ack 4110299696 win 28960 <mss 1460,sackOK,timestamp 567715984 130834570,nop,wscale 7>
Phase: 1
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'OUTSIDE'
Flow type: STUB
I (0) am director, valid owner (1), update sender (2).
Unit-3-1(ID 2 - 전달자)은 CCL을 통해 패킷을 가져와 unit-2-1(ID 1 - 소유자)로 전송합니다.
firepower# cluster exec unit unit-3-1 show cap CAPO packet-number 2 trace
...
2: 09:19:49.761008 192.168.240.51.80 > 192.168.240.50.59210: S 4209225081:4209225081(0) ack 4110299696 win 28960 <mss 1460,sackOK,timestamp 567715984 130834570,nop,wscale 7>
Phase: 1
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'OUTSIDE'
Flow type: STUB
I (2) am becoming forwarder to (1), sender (0).
소유자는 패킷을 다시 거부하고 목적지로 전달합니다.
firepower# cluster exec unit unit-2-1 show cap CAPO packet-number 2 trace
2: 09:19:49.775701 192.168.240.51.80 > 192.168.240.50.59210: S 4209225081:4209225081(0) ack 4110299696 win 28960 <mss 1460,sackOK,timestamp 567715984 130834570,nop,wscale 7>
Phase: 1
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'OUTSIDE'
Flow type: FULL
I (1) am owner, sender (2).
관찰 4. FTD 데이터 플레인 syslog는 모든 유닛에서 연결 생성 및 종료를 표시합니다.
firepower# cluster exec show log | i 59210
unit-1-1(LOCAL):******************************************************
Dec 03 2020 09:19:49: %FTD-6-302022: Built director stub TCP connection for INSIDE:192.168.240.50/59210 (192.168.240.50/59210) to OUTSIDE:192.168.240.51/80 (192.168.240.51/80)
Dec 03 2020 09:19:59: %FTD-6-302023: Teardown director TCP connection for INSIDE:192.168.240.50/59210 to OUTSIDE:192.168.240.51/80 duration 0:00:09 forwarded bytes 0 Cluster flow with CLU closed on owner
unit-2-1:*************************************************************
Dec 03 2020 09:19:49: %FTD-6-302303: Built TCP state-bypass connection 14483 from INSIDE:192.168.240.50/59210 (192.168.240.50/59210) to OUTSIDE:192.168.240.51/80 (192.168.240.51/80)
Dec 03 2020 09:19:59: %FTD-6-302304: Teardown TCP state-bypass connection 14483 from INSIDE:192.168.240.50/59210 to OUTSIDE:192.168.240.51/80 duration 0:00:09 bytes 1024003336 TCP FINs
unit-3-1:*************************************************************
Dec 03 2020 09:19:49: %FTD-6-302022: Built forwarder stub TCP connection for OUTSIDE:192.168.240.51/80 (192.168.240.51/80) to unknown:192.168.240.50/59210 (192.168.240.50/59210)
Dec 03 2020 09:19:59: %FTD-6-302023: Teardown forwarder TCP connection for OUTSIDE:192.168.240.51/80 to unknown:192.168.240.50/59210 duration 0:00:09 forwarded bytes 1024003188 Cluster flow with CLU closed on owner
클러스터 문제는 다음과 같이 분류할 수 있습니다.
중요한 구성 고려 사항
클러스터 IP 불균형의 원인이 되는 로우 포트(low-port)에서 비롯된 트래픽으로 인해 높은 PAT 풀 범위 사용
FTD는 PAT IP를 범위로 분할하고 xlate를 동일한 소스 범위로 유지하려고 시도합니다. 이 표에서는 소스 포트가 동일한 소스 범위 내의 전역 포트로 변환되는 방법을 보여줍니다.
원래 소스 포트 |
변환된 소스 포트 |
1-511 |
1-511 |
512-1023 |
512-1023 |
1024-65535 |
1024-65535 |
소스 포트 범위가 꽉 찼고 해당 범위에서 새 PAT xlate를 할당해야 하는 경우 FTD는 다음 IP로 이동하여 해당 소스 포트 범위에 대한 새 변환을 할당합니다.
증상
클러스터를 지나는 NAT된 트래픽의 연결 문제
확인
# show nat pool
FTD 데이터 플레인 로그에 PAT 풀 소진이 표시됩니다.
Dec 9 09:00:00 192.0.2.10 FTD-FW %ASA-3-202010: PAT pool exhausted. Unable to create TCP connection from Inside:192.0.2.150/49464 to Outside:192.0.2.250/20015
Dec 9 09:00:00 192.0.2.10 FTD-FW %ASA-3-202010: PAT pool exhausted. Unable to create TCP connection from Inside:192.0.2.148/54141 to Outside:192.0.2.251/443
완화
NAT Flat Port Range(NAT 플랫 포트 범위)를 구성하고 Reserve Ports(예약 포트)를 포함합니다.
또한, post-6.7/9.15.1에서는 노드가 PAT가 적용되는 대규모 백그라운드 트래픽으로 클러스터를 나가거나 클러스터에 가입하는 경우에만 포트 블록 분배가 불균형하게 될 수 있습니다. 포트 블록이 해제되어 노드 간에 재배포되는 경우에만 복구됩니다.
포트 블록 기반 배포를 사용하면, 노드가 pb-1, pb-2 ... pb-10과 같은 10개의 포트 블록으로 할당됩니다. 노드는 항상 첫 번째 사용 가능한 포트 블록에서 시작하여 고갈될 때까지 임의의 포트를 할당합니다. 해당 지점까지의 모든 포트 블록이 모두 소진된 경우에만 할당이 다음 포트 블록으로 이동합니다.
예를 들어, 호스트가 512개의 연결을 설정하면 유닛에서는 pb-1의 모든 512개 연결에 대해 매핑된 포트를 임의로 할당합니다. 이제 이 512개의 연결이 모두 활성 상태일 때 pb-1이 모두 소진되어 호스트가 513번째 연결을 설정하면 pb-2로 이동하여 호스트에서 임의의 포트를 할당합니다. 다시 513개의 연결 중 10번째 연결이 완료되었고 pb-1에서 사용 가능한 포트 하나가 제거되었다고 가정합니다. 이때 호스트가 514번째 연결을 설정하면, pb-1에는 10번째 연결 제거의 일부로 릴리스된 자유 포트가 있으므로 클러스터 유닛에서는 pb-2가 아닌 pb-1에서 매핑된 포트를 할당합니다.
가장 중요한 점은 여유 포트가 있는 첫 번째 가용 포트 블록에서 할당이 수행되므로, 정상적으로 로드된 시스템에서 마지막 포트 블록을 항상 재배포할 수 있습니다. 또한 PAT는 일반적으로 단기간 연결에 사용됩니다. 포트 블록이 더 짧은 시간에 이용 가능하게 될 확률은 매우 높다. 따라서 포트 블록 기반 풀 배포를 통해 풀 배포가 균형을 유지하는 데 필요한 시간을 개선할 수 있습니다.
그러나 pb-1에서 pb-10까지의 모든 포트 블록이 모두 소진되거나 각 포트 블록이 장기간 연결을 위해 포트를 보유하는 경우 포트 블록이 신속하게 해제되어 재배포되지 않습니다. 이러한 경우 가장 덜 파괴적인 접근 방식은 다음과 같습니다.
경고: 이로 인해 관련 연결이 중단됩니다.
다른 대상으로 리디렉션할 때 듀얼 채널 웹 사이트(예: 웹 메일, 뱅킹 등) 또는 SSO 웹 사이트로 이동할 수 없습니다.
증상
듀얼 채널 웹 사이트(예: 웹 메일, 은행 웹 사이트 등)를 찾아볼 수 없습니다. 사용자가 클라이언트가 두 번째 소켓/연결을 열도록 요구하는 웹 사이트에 연결하고 두 번째 연결이 첫 번째 연결을 해시된 것과 다른 클러스터 멤버에 해시되고 트래픽이 IP PAT 풀을 사용하는 경우, 서버가 다른 공용 IP 주소에서 연결을 수신할 때 트래픽이 재설정됩니다.
확인
데이터 플레인 클러스터 캡처를 통해 영향을 받는 전송 흐름이 어떻게 처리되는지 확인합니다. 이 경우 TCP 재설정은 대상 웹 사이트에서 제공됩니다.
완화(6.7 이전/9.15.1)
이더 채널 로드 밸런싱 알고리즘 정보:
풀에 충분한 PAT IP가 없기 때문에 제어 노드로 전송된 모든 트래픽으로 인해 클러스터 성능이 저하됩니다.
증상
클러스터에 PAT IP가 부족하여 데이터 노드에 사용 가능한 IP를 할당할 수 없습니다. 따라서 PAT 컨피그레이션의 대상이 되는 모든 트래픽이 처리를 위해 제어 노드로 전달됩니다.
확인
show nat pool cluster 명령을 사용하여 각 유닛에 대한 할당을 보고 모두 풀에 하나 이상의 IP를 소유하고 있는지 확인합니다.
완화
6.7/9.15.1 이전의 경우 클러스터의 노드 수와 최소 같은 크기의 PAT 풀이 있어야 합니다. PAT 풀이 있는 6.7/9.15.1 이후에서는 모든 PAT 풀 IP에서 포트 블록을 할당합니다. PAT 풀 사용량이 너무 많아 풀이 자주 소진되는 경우 PAT 풀 크기를 늘려야 합니다(FAQ 섹션 참조).
xlate가 세션당 활성화되지 않았기 때문에 제어 노드로 전송된 모든 트래픽으로 인해 성능이 저하됩니다.
증상
많은 고속 UDP 백업 흐름이 클러스터 제어 노드를 통해 처리되므로 성능에 영향을 줄 수 있습니다.
배경
PAT를 사용하는 데이터 노드에서는 세션당 활성화된 xlate를 사용하는 연결만 처리할 수 있습니다. show run all xlate 명령을 사용하여 xlate per-session 컨피그레이션을 확인합니다.
Per-Session Enabled는 연결된 연결이 끊어질 때 xlate가 즉시 해제됨을 의미합니다. 이렇게 하면 연결이 PAT를 받을 때 초당 연결 성능이 향상됩니다. 비 세션당 xlate는 연결된 연결이 끊긴 후 30초 더 기다립니다. 연결 속도가 충분히 높으면 각 글로벌 IP에서 사용 가능한 65k TCP/UDP 포트를 단시간에 모두 사용할 수 있습니다.
기본적으로 모든 TCP 트래픽은 xlate당 활성화되며 UDP DNS 트래픽만 세션당 활성화됩니다. 즉, 모든 비 DNS UDP 트래픽이 처리를 위해 제어 노드로 전달됩니다.
확인
클러스터 유닛 간의 연결 및 패킷 배포를 확인하려면 다음 명령을 사용합니다.
firepower# show cluster info conn-distribution
firepower# show cluster info packet-distribution
firepower# show cluster info load-monitor
UDP 연결을 소유하는 클러스터 노드를 확인하려면 cluster exec show conn 명령을 사용합니다.
firepower# cluster exec show conn
이 명령을 사용하여 클러스터 노드 간 풀 사용을 이해할 수 있습니다.
firepower# cluster exec show nat pool ip| in UDP
완화
관심 트래픽(예: UDP)에 대한 세션당 PAT(세션당 permit udp 명령)를 구성합니다. ICMP의 경우 기본 다중 세션 PAT에서 변경할 수 없으므로 PAT가 구성된 경우 ICMP 트래픽은 제어 노드에서 항상 처리됩니다.
노드가 클러스터를 나가거나 조인할 때 PAT 풀 분배가 불균형해집니다.
증상
확인
%ASA-3-202010: NAT pool exhausted. Unable to create TCP connection from inside:192.0.2.1/2239 to outside:192.0.2.150/80
완화
증상
클러스터에서 PAT하는 트래픽의 주요 연결 문제. 이는 FTD 데이터 플레인이 설계별로 전역 NAT 주소에 대해 GARP를 전송하지 않기 때문입니다.
확인
직접 연결된 디바이스의 ARP 테이블에는 제어 노드 변경 후 클러스터 데이터 인터페이스의 MAC 주소가 다르게 표시됩니다.
root@kali2:~/tests# arp -a
? (192.168.240.1) at f4:db:e6:33:44:2e [ether] on eth0
root@kali2:~/tests# arp -a
? (192.168.240.1) at f4:db:e6:9e:3d:0e [ether] on eth0
완화
클러스터 데이터 인터페이스에 정적(가상) MAC을 구성합니다.
PAT가 실패한 연결
증상
클러스터에서 PAT하는 트래픽에 대한 연결 문제.
확인/완화
firepower# debug nat 2
nat: no free blocks available to reserve for 192.168.241.59, proto 17
nat: no free blocks available to reserve for 192.168.241.59, proto 17
nat: no free blocks available to reserve for 192.168.241.58, proto 17
nat: no free blocks available to reserve for 192.168.241.58, proto 17
nat: no free blocks available to reserve for 192.168.241.57, proto 17
디버그를 중지하려면
firepower# un all
ASA 및 FTD 클러스터링 PAT 개선(9.15 이후 및 6.7)
무엇이 바뀌었습니까?
PAT 작업이 다시 설계되었습니다. 개별 IP는 더 이상 각 클러스터 멤버에 배포되지 않습니다. 그 대신 PAT IP는 포트 블록으로 분할되고 IP 고착성 작업과 함께 클러스터 멤버 간에 균등하게(가능한 한 많이) 분배됩니다.
새 설계에서는 다음과 같은 제한을 해결합니다(이전 섹션 참조).
기술적으로 기본 1-511, 512-1023 및 1024-65535 포트 범위 대신, 이제 PAT의 기본 포트 범위로 1024-65535이 있습니다. 이 기본 범위는 일반 PAT에 대한 특권 포트 범위 1~1023을 포함하도록 확장할 수 있습니다('include-reserve' 옵션).
FTD 6.7의 PAT 풀 컨피그레이션의 예입니다. 자세한 내용은 컨피그레이션 가이드의 관련 섹션을 참조하십시오.
PAT에 대한 추가 트러블슈팅 정보
FTD 데이터 플레인 syslog(post-6.7/9.15.1)
클러스터 노드의 고정 IP에서 모든 포트가 소진되고 할당이 사용 가능한 다음 IP로 이동하는 경우 고정 무효화 syslog가 생성됩니다. 예를 들면 다음과 같습니다.
%ASA-4-305021: Ports exhausted in pre-allocated PAT pool IP 192.0.2.100 for host 198.51.100.100 Allocating from new PAT pool IP 203.0.113.100.
풀 불균형 syslog는 클러스터에 참가할 때 노드에 생성되며 다음과 같이 포트 블록의 일부 또는 동일하지 않은 공유를 가져오지 않습니다.
%ASA-4-305022: Cluster unit ASA-4 has been allocated 0 port blocks for PAT usage. All units should have at least 32 port blocks.
%ASA-4-305022: Cluster unit ASA-4 has been allocated 12 port blocks for PAT usage. All units should have at least 32 port blocks.
명령 표시
풀 배포 상태
show nat pool cluster summary 출력에서 각 PAT IP 주소에 대해 균형 잡힌 배포 시나리오에서 노드 전체에서 1개 이상의 포트 블록 차이가 없어야 합니다. 균형 잡힌 불균형 포트 블록 분배의 예.
firepower# show nat pool cluster summary
port-blocks count display order: total, unit-1-1, unit-2-1, unit-3-1
IP OUTSIDE:ip_192.168.241.57-59 192.168.241.57 (126 - 42 / 42 / 42)
IP OUTSIDE:ip_192.168.241.57-59 192.168.241.58 (126 - 42 / 42 / 42)
IP OUTSIDE:ip_192.168.241.57-59 192.168.241.59 (126 - 42 / 42 / 42)
분배 불균형:
firepower# show nat pool cluster summary
port-blocks count display order: total, unit-1-1, unit-4-1, unit-2-1, unit-3-1
IP outside:src_map 192.0.2.100 (128 - 32 / 22 / 38 / 36)
풀 소유권 상태
show nat pool cluster 출력에는 소유자 또는 UNKNOWN으로 백업하는 단일 포트 블록이 없어야 합니다. 하나가 있으면 풀 소유권 통신에 문제가 있음을 나타냅니다. 예:
firepower# show nat pool cluster | in
[3072-3583], owner unit-4-1, backup <UNKNOWN>
[56832-57343], owner <UNKNOWN>, backup <UNKNOWN>
[10240-10751], owner unit-2-1, backup <UNKNOWN>
포트 블록에서 포트 할당 어카운팅
show nat pool 명령은 추가 옵션으로 개선되어 자세한 정보와 필터링된 출력을 표시합니다. 예:
firepower# show nat pool detail
TCP PAT pool INSIDE, address 192.168.240.1, range 1-1023, allocated 0
TCP PAT pool INSIDE, address 192.168.240.1, range 1024-65535, allocated 18
UDP PAT pool INSIDE, address 192.168.240.1, range 1-1023, allocated 0
UDP PAT pool INSIDE, address 192.168.240.1, range 1024-65535, allocated 20
TCP PAT pool OUTSIDE, address 192.168.241.1, range 1-1023, allocated 0
TCP PAT pool OUTSIDE, address 192.168.241.1, range 1024-65535, allocated 18
UDP PAT pool OUTSIDE, address 192.168.241.1, range 1-1023, allocated 0
UDP PAT pool OUTSIDE, address 192.168.241.1, range 1024-65535, allocated 20
UDP PAT pool OUTSIDE, address 192.168.241.58
range 1024-1535, allocated 512
range 1536-2047, allocated 512
range 2048-2559, allocated 512
range 2560-3071, allocated 512
...
unit-2-1:*************************************************************
UDP PAT pool OUTSIDE, address 192.168.241.57
range 1024-1535, allocated 512 *
range 1536-2047, allocated 512 *
range 2048-2559, allocated 512 *
'*'는 백업된 포트 블록임을 나타냅니다.
이 문제를 해결하려면 clear xlate global <ip> gport <start-end> 명령을 사용하여 필요한 노드로 재배포하기 위해 다른 노드의 일부 포트 블록을 수동으로 지웁니다.
수동으로 트리거된 포트 블록 재배포
firepower# show nat pool detail | i 19968
range 19968-20479, allocated 512
range 19968-20479, allocated 512
range 19968-20479, allocated 512
firepower# clear xlate global 192.168.241.57 gport 19968-20479
INFO: 1074 xlates deleted
포스트 6.7/9.15.1 PAT 자주 묻는 질문(FAQ)
Q. 클러스터에서 사용 가능한 유닛 수에 사용 가능한 IP 수가 있는 경우에도 유닛당 IP 1개를 옵션으로 사용할 수 있습니까?
A. 더 이상 그렇지 않으며, IP 주소 기반 풀 분배 체계와 포트 블록 기반 풀 분배 체계 사이를 전환하기 위한 토글(toggle)이 없습니다.
IP 주소 기반 풀 배포의 이전 체계는 호스트의 여러 연결(단일 애플리케이션 트랜잭션의 일부)이 클러스터의 여러 노드로 로드 밸런싱되는 다중 세션 애플리케이션 오류를 발생시켰으며, 이에 따라 서로 다른 매핑된 IP 주소로 변환되어 대상 서버가 다른 엔티티에서 소싱한 것으로 표시됩니다.
또한 새 포트 블록 기반 배포 구성에서는 단일 PAT IP 주소만큼 낮게 작업할 수 있지만 항상 PAT가 필요한 연결 수를 기준으로 충분한 PAT IP 주소를 사용하는 것이 좋습니다.
Q. 클러스터에 대한 PAT 풀의 IP 주소 풀이 남아 있습니까?
A. 네, 가능합니다. 모든 PAT 풀 IP의 포트 블록은 클러스터 노드 전체에 분산됩니다.
Q. PAT 풀에 대해 여러 IP 주소를 사용하는 경우, 각 IP 주소당 각 멤버에 제공되는 동일한 포트 블록입니까?
A. 아니요. 각 IP는 독립적으로 배포됩니다.
Q. 모든 클러스터 노드에는 모든 공용 IP가 있지만 포트의 하위 집합만 있습니까? 그렇다면 소스 IP가 동일한 공용 IP를 사용할 때마다 보장되는 것일까요?
A. 정확합니다. 각 PAT IP는 각 노드에서 부분적으로 소유합니다. 선택한 공용 IP가 노드에서 소진되면 스티커 IP를 보존할 수 없음을 나타내는 syslog가 생성되고 할당이 사용 가능한 다음 공용 IP로 이동합니다. 독립형, HA 또는 클러스터 구축의 경우, IP 고착성은 항상 풀 가용성에 따라 최선의 노력을 기울입니다.
Q. 모든 것이 PAT 풀의 단일 IP 주소를 기반으로 합니까? 그러나 PAT 풀의 IP 주소가 두 개 이상 사용되는 경우에는 적용되지 않습니까?
A. PAT 풀의 여러 IP 주소에도 적용됩니다. PAT 풀에 있는 모든 IP의 포트 블록은 클러스터 노드 전체에 분산됩니다. PAT 풀의 모든 IP 주소는 클러스터의 모든 멤버에서 분할됩니다. 따라서 PAT 풀에 주소의 클래스 C가 있는 경우 모든 클러스터 멤버에는 각 PAT 풀 주소의 포트 풀이 있습니다.
Q. CGNAT와 연동됩니까?
A. 예. CGNAT도 지원됩니다. 블록 할당 PAT라고도 하는 CGNAT의 기본 블록 크기는 '512'이며 xlate 블록 할당 크기 CLI를 통해 수정할 수 있습니다. 일반 동적 PAT(non-CGNAT)의 경우, 블록 크기는 항상 '512'로 고정되어 구성할 수 없습니다.
Q. 유닛이 클러스터를 벗어나면 제어 노드는 포트 블록 범위를 다른 유닛에 할당하거나 그대로 유지합니까?
A. 각 포트 블록에는 소유자 및 백업이 있습니다. xlate는 포트 블록에서 생성될 때마다 포트 블록 백업 노드에도 복제됩니다. 노드가 클러스터를 떠나면 백업 노드는 모든 포트 블록 및 모든 현재 연결을 소유합니다. 백업 노드는 이러한 추가 포트 블록의 소유자가 되었으므로 해당 노드에 대해 새 백업을 선택하고 모든 현재 xlate를 해당 노드에 복제하여 오류 시나리오를 처리합니다.
Q. 해당 경고를 기준으로 고착성을 적용하기 위해 취할 수 있는 조치는 무엇입니까?
A. 끈적임을 유지할 수 없는 이유는 두 가지다.
이유-1: 노드 중 하나에서 다른 노드보다 연결 수가 더 많으므로 트래픽이 잘못 로드 밸런싱되어 특정 스티커 IP 소진이 발생합니다. 트래픽이 클러스터 노드 전체에 고르게 분산되도록 하는 경우 이 문제를 해결할 수 있습니다. 예를 들어, FPR41xx 클러스터에서 연결된 스위치의 로드 밸런싱 알고리즘을 조정합니다. FPR9300 클러스터에서 섀시 전체의 블레이드 수가 동일한지 확인합니다.
이유-2: PAT 풀 사용량이 매우 많아 풀이 자주 소모됩니다. 이를 해결하려면 PAT 풀 크기를 늘립니다.
Q. extended 키워드에 대한 지원은 어떻게 처리됩니까? 이 명령은 오류를 표시하고 업그레이드 중에 전체 NAT 명령이 추가되지 않게 합니까, 아니면 extended 키워드를 제거하고 경고를 표시합니까?
A. PAT 확장 옵션은 ASA 9.15.1/FP 6.7 이상의 클러스터에서 지원되지 않습니다. 컨피그레이션 옵션은 CLI/ASDM/CSM/FMC에서 제거되지 않습니다. 업그레이드를 통해 직접 또는 간접적으로 구성할 경우 경고 메시지가 표시되고, 컨피그레이션이 승인되지만 PAT의 확장된 기능이 작동한다는 것을 볼 수 없습니다.
Q. 동시 접속과 동일한 수의 번역입니까?
A. Pre-6.7/9.15.1에서는 1-65535이었지만, 소스 포트가 1-1024 범위에서 많이 사용되지 않으므로 1024-65535(64512 conn)이 됩니다. Post-6.7/9.15.1 구현에서는 'flat'이 기본 동작으로 1024-65535입니다. 그러나 1-1024를 사용하려면 "include-reserve" 옵션을 사용할 수 있습니다.
Q. 노드가 클러스터에 다시 조인하는 경우 이전 백업 노드가 백업으로 사용되고 해당 백업 노드는 이전 포트 블록을 제공합니까?
A. 해당 시점의 포트 블록 가용성에 따라 달라집니다. 노드가 클러스터를 벗어나면 해당 포트 블록이 모두 백업 노드로 이동됩니다. 그런 다음 자유 포트 블록을 축적하고 필수 노드에 배포하는 제어 노드입니다.
Q. 제어 노드의 상태가 변경되면 새 제어 노드를 선택합니까, 아니면 PAT 블록 할당이 유지됩니까, 아니면 새 제어 노드를 기준으로 포트 블록이 재할당됩니까?
A. 새 제어 노드는 어떤 블록이 할당되었는지, 어떤 블록이 무료이며 어떤 블록에서 시작되는지를 파악합니다.
Q. xlate의 최대 수는 이 새 동작을 사용하는 최대 동시 연결 수와 같습니까?
A. 예. 최대 xlate 수는 PAT 포트의 가용성에 따라 달라집니다. 최대 동시 연결 수와는 상관이 없습니다. 주소 1개만 허용할 경우 가능한 연결65535 있습니다. 더 필요한 경우 더 많은 IP 주소를 할당해야 합니다. 충분한 주소/포트가 있는 경우 최대 동시 연결에 도달할 수 있습니다.
Q. 새 클러스터 멤버가 추가될 때 포트 블록 할당의 프로세스는 무엇입니까? 재부팅 때문에 클러스터 멤버가 추가되면 어떻게 됩니까?
A. 포트 블록은 항상 제어 노드에 의해 분배됩니다. 포트 블록은 사용 가능한 포트 블록이 있는 경우에만 새 노드에 할당됩니다. 사용 가능한 포트 블록은 포트 블록 내의 매핑된 포트를 통해 어떤 연결도 제공되지 않음을 의미합니다.
또한 다시 조인할 때 각 노드는 소유할 수 있는 블록 수를 다시 계산합니다. 노드가 예정보다 많은 블록을 보유할 경우, 제어 노드가 사용 가능해질 때 추가 포트 블록을 릴리스합니다. 그런 다음 제어 노드는 새로 조인된 데이터 노드에 할당합니다.
Q. TCP 및 UDP 프로토콜 또는 SCTP만 지원됩니까?
A. SCTP는 동적 PAT에서 지원되지 않았습니다. SCTP 트래픽의 경우 고정 네트워크 객체 NAT만 사용하는 것이 좋습니다.
Q. 노드에 블록 포트가 부족하면 패킷을 삭제하고 사용 가능한 다음 IP 블록을 사용하지 않습니까?
A. 아니요, 바로 떨어지지 않습니다. 다음 PAT IP에서 사용 가능한 포트 블록을 사용합니다. 모든 PAT IP의 모든 포트 블록이 모두 소진되면 트래픽이 삭제됩니다.
Q. 클러스터 업그레이드 창에서 제어 노드의 오버로드를 방지하려면 제어 노드에서 모든 연결이 처리될 때까지 기다리는 것보다 이전에 수동으로 새 제어(예: 4유닛 클러스터 업그레이드의 중간 단계)를 선택하는 것이 더 나은가요?
A. 컨트롤을 마지막으로 업데이트해야 합니다. 이는 제어 노드가 최신 버전을 실행할 때 모든 노드가 최신 버전을 실행하지 않는 한 풀 배포를 시작하지 않기 때문입니다. 또한 업그레이드가 실행되면 최신 버전의 모든 데이터 노드가 이전 버전을 실행하는 경우 제어 노드의 풀 배포 메시지를 무시합니다.
이를 자세히 설명하려면 4개의 노드 A, B, C, D를 A와 함께 제어로 사용하는 클러스터 구축을 고려하십시오. 일반적인 무중단 업그레이드 단계는 다음과 같습니다.
a. PAT 컨피그레이션 처리
b. 각 PAT IP를 포트 블록으로 나눕니다.
c. 모든 포트 블록이 할당되지 않은 상태입니다.
d. 컨트롤에서 받은 클러스터 PAT 메시지의 이전 버전을 무시합니다.
e. 모든 PAT 연결을 기본으로 리디렉션합니다.
4. 마찬가지로 새 버전의 다른 노드를 표시합니다.
5. A유닛의 컨트롤을 다시 로드합니다. 제어를 위한 백업이 없으므로 모든 기존 연결이 삭제됩니다
6. 새 컨트롤에서 포트 블록의 배포를 새 형식으로 시작합니다
7. 'A' 유닛이 다시 합류하여 포트 블록 분배 메시지를 수락하고 처리할 수 있습니다.
증상
사이트 간 클러스터 구축에서는 하나의 특정 사이트(사이트-로컬 트래픽)에서 처리해야 하는 프래그먼트된 패킷을 다른 사이트의 유닛으로 전송할 수 있습니다. 이러한 사이트 중 하나에는 프래그먼트 소유자가 있을 수 있기 때문입니다.
클러스터 논리에서는 프래그먼트된 패킷과의 연결에 대해 추가 역할, 즉 프래그먼트 오너가 정의됩니다.
프래그먼트화된 패킷의 경우 프래그먼트를 수신하는 클러스터 유닛은 프래그먼트 소스 IP 주소, 목적지 IP 주소, 패킷 ID의 해시를 기반으로 프래그먼트 소유자를 결정합니다. 그런 다음 모든 프래그먼트는 클러스터 제어 링크를 통해 프래그먼트 소유자에게 전달됩니다. 첫 번째 프래그먼트에만 스위치 부하 균형 해시에 사용되는 5-튜플이 포함되므로 프래그먼트는 다른 클러스터 유닛으로 부하 균형을 이룰 수 있습니다. 다른 프래그먼트는 소스 및 대상 포트를 포함하지 않으며 다른 클러스터 유닛으로 로드 밸런싱될 수 있습니다. 프래그먼트 소유자는 소스/목적지 IP 주소 및 포트의 해시를 기반으로 디렉터를 결정할 수 있도록 패킷을 일시적으로 리어셈블합니다. 새 연결인 경우 조각 소유자가 연결 소유자가 됩니다. 기존 연결인 경우 프래그먼트 소유자는 모든 프래그먼트를 클러스터 제어 링크를 통해 연결 소유자에게 전달합니다. 그러면 연결 소유자가 모든 조각을 다시 어셈블합니다.
클라이언트에서 서버로의 조각화된 ICMP 에코 요청의 흐름과 함께 이 토폴로지를 고려하십시오.
작업의 순서를 이해하기 위해 trace 옵션으로 구성된 내부, 외부 및 클러스터 제어 링크 인터페이스에서 클러스터 전반의 패킷 캡처가 있습니다. 또한 inside 인터페이스에 reinject-hide 옵션이 포함된 패킷 캡처가 구성됩니다.
firepower# cluster exec capture capi interface inside trace match icmp any any
firepower# cluster exec capture capir interface inside reinject-hide trace match icmp any any
firepower# cluster exec capture capo interface outside trace match icmp any any
firepower# cluster exec capture capccl interface cluster trace match icmp any any
클러스터 내의 작업 순서:
1. 사이트 1의 unit-1-1은 조각화된 ICMP 에코 요청 패킷을 수신합니다.
firepower# cluster exec show cap capir
unit-1-1(LOCAL):******************************************************
2 packets captured
1: 20:13:58.227801 802.1Q vlan#10 P0 192.0.2.10 > 203.0.113.10 icmp: echo request
2: 20:13:58.227832 802.1Q vlan#10 P0
2 packets shown
2. unit-1-1은 사이트 2에서 유닛-2-2를 프래그먼트 소유자로 선택하고 프래그먼트된 패킷을 전송합니다.
유닛-1-1에서 유닛-2-2로 전송된 패킷의 목적지 MAC 주소는 유닛-2-2의 CCL 링크의 MAC 주소입니다.
firepower# show cap capccl packet-number 1 detail
7 packets captured
1: 20:13:58.227817 0015.c500.018f 0015.c500.029f 0x0800 Length: 1509
192.0.2.10 > 203.0.113.10 icmp: echo request (wrong icmp csum) (frag 46772:1475@0+) (ttl 3)
1 packet shown
firepower# show cap capccl packet-number 2 detail
7 packets captured
2: 20:13:58.227832 0015.c500.018f 0015.c500.029f 0x0800 Length: 637
192.0.2.10 > 203.0.113.10 (frag 46772:603@1480) (ttl 3)
1 packet shown
firepower# cluster exec show interface po48 | i MAC
unit-1-1(LOCAL):******************************************************
MAC address 0015.c500.018f, MTU 1500
unit-1-2:*************************************************************
MAC address 0015.c500.019f, MTU 1500
unit-2-2:*************************************************************
MAC address 0015.c500.029f, MTU 1500
unit-1-3:*************************************************************
MAC address 0015.c500.016f, MTU 1500
unit-2-1:*************************************************************
MAC address 0015.c500.028f, MTU 1500
unit-2-3:*************************************************************
MAC address 0015.c500.026f, MTU 1500
3. unit-2-2는 프래그먼트된 패킷을 수신하고 리어셈블하며 흐름의 소유자가 됩니다.
firepower# cluster exec unit unit-2-2 show capture capccl packet-number 1 trace
11 packets captured
1: 20:13:58.231845 192.0.2.10 > 203.0.113.10 icmp: echo request
Phase: 1
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'inside'
Flow type: NO FLOW
I (2) received a FWD_FRAG_TO_FRAG_OWNER from (0).
Phase: 2
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'inside'
Flow type: NO FLOW
I (2) have reassembled a packet and am processing it.
Phase: 3
Type: CAPTURE
Subtype:
Result: ALLOW
Config:
Additional Information:
MAC Access list
Phase: 4
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
MAC Access list
Phase: 5
Type: ROUTE-LOOKUP
Subtype: No ECMP load balancing
Result: ALLOW
Config:
Additional Information:
Destination is locally connected. No ECMP load balancing.
Found next-hop 203.0.113.10 using egress ifc outside(vrfid:0)
Phase: 6
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'inside'
Flow type: NO FLOW
I (2) am becoming owner
Phase: 7
Type: ACCESS-LIST
Subtype: log
Result: ALLOW
Config:
access-group CSM_FW_ACL_ global
access-list CSM_FW_ACL_ advanced trust ip any any rule-id 268435460 event-log flow-end
access-list CSM_FW_ACL_ remark rule-id 268435460: PREFILTER POLICY: igasimov_prefilter1
access-list CSM_FW_ACL_ remark rule-id 268435460: RULE: r1
Additional Information:
...
Phase: 19
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 1719, packet dispatched to next module
...
Result:
input-interface: cluster(vrfid:0)
input-status: up
input-line-status: up
output-interface: outside(vrfid:0)
output-status: up
output-line-status: up
Action: allow
1 packet shown
firepower# cluster exec unit unit-2-2 show capture capccl packet-number 2 trace
11 packets captured
2: 20:13:58.231875
Phase: 1
Type: CLUSTER-EVENT
Subtype:
Result: ALLOW
Config:
Additional Information:
Input interface: 'inside'
Flow type: NO FLOW
I (2) received a FWD_FRAG_TO_FRAG_OWNER from (0).
Result:
input-interface: cluster(vrfid:0)
input-status: up
input-line-status: up
Action: allow
1 packet shown
4. unit-2-2는 보안 정책에 따라 패킷을 허용하고 외부 인터페이스를 통해 사이트 2에서 사이트 1로 패킷을 전송합니다.
firepower# cluster exec unit unit-2-2 show cap capo
2 packets captured
1: 20:13:58.232058 802.1Q vlan#20 P0 192.0.2.10 > 203.0.113.10 icmp: echo request
2: 20:13:58.232058 802.1Q vlan#20 P0
관찰/주의 사항
Interface: inside
Configuration: Size: 200, Chain: 24, Timeout: 5, Reassembly: virtual
Run-time stats: Queue: 0, Full assembly: 0
Drops: Size overflow: 0, Timeout: 0,
Chain overflow: 0, Fragment queue threshold exceeded: 0,
Small fragments: 0, Invalid IP len: 0,
Reassembly overlap: 0, Fraghead alloc failed: 0,
SGT mismatch: 0, Block alloc failed: 0,
Invalid IPV6 header: 0, Passenger flow assembly failed: 0
클러스터 구축에서 프래그먼트 소유자 또는 연결 소유자는 프래그먼트된 패킷을 프래그먼트 대기열에 넣습니다. 프래그먼트 큐 크기는 fragment size <size> <nameif> 명령으로 구성된 Size 카운터 값(기본값 200)에 의해 제한됩니다. 프래그먼트 대기열 크기가 Size의 2/3에 도달하면 프래그먼트 대기열 임계값이 초과된 것으로 간주되고 현재 프래그먼트 체인의 일부가 아닌 새 프래그먼트가 삭제됩니다. 이 경우 Fragment queue threshold exceeded가 증가하고 syslog 메시지 FTD-3-209006이 생성됩니다.firepower# show fragment inside
Interface: inside
Configuration: Size: 200, Chain: 24, Timeout: 5, Reassembly: virtual
Run-time stats: Queue: 133, Full assembly: 0
Drops: Size overflow: 0, Timeout: 8178,
Chain overflow: 0, Fragment queue threshold exceeded: 40802,
Small fragments: 0, Invalid IP len: 0,
Reassembly overlap: 9673, Fraghead alloc failed: 0,
SGT mismatch: 0, Block alloc failed: 0,
Invalid IPV6 header: 0, Passenger flow assembly failed: 0
%FTD-3-209006: Fragment queue threshold exceeded, dropped TCP fragment from 192.0.2.10/21456 to 203.0.113.10/443 on inside interface.
이를 해결하려면 Firepower Management Center > Devices > Device Management > [Edit Device] > Interfaces > [Interface] > Advanced > Security Configuration > Override Default Fragment Setting, save configuration and deploy policies에서 크기를 늘립니다. 그런 다음 show fragment 명령 출력 및 syslog 메시지 FTD-3-209006 발생에서 Queue 카운터를 모니터링합니다.
ACI 포드의 활성 L4 체크섬 확인으로 인해 클러스터를 통한 간헐적인 연결 문제
증상
완화
증상
유닛이 클러스터에 가입할 수 없으며 이 메시지가 표시됩니다.
The SECONDARY has left the cluster because application configuration sync is timed out on this unit. Disabling cluster now!
Cluster disable is performing cleanup..done.
Unit unit-2-1 is quitting due to system failure for 1 time(s) (last failure is SECONDARY application configuration sync timeout). Rejoin will be attempted after 5 minutes.
All data interfaces have been shutdown due to clustering being disabled. To recover either enable clustering or remove cluster group configuration.
확인/완화
firepower# show interface
Interface Port-channel1 "Inside", is up, line protocol is up
Hardware is EtherSVI, BW 40000 Mbps, DLY 10 usec
MAC address 3890.a5f1.aa5e, MTU 9084
Interface Port-channel48 "cluster", is up, line protocol is up
Hardware is EtherSVI, BW 40000 Mbps, DLY 10 usec
Description: Clustering Interface
MAC address 0015.c500.028f, MTU 9184
IP address 127.2.2.1, subnet mask 255.255.0.
firepower# ping 127.2.1.1 size 9184
Switch# show interface
port-channel12 is up
admin state is up,
Hardware: Port-Channel, address: 7069.5a3a.7976 (bia 7069.5a3a.7976)
MTU 9084 bytes, BW 40000000 Kbit , DLY 10 usec
port-channel13 is up
admin state is up,
Hardware: Port-Channel, address: 7069.5a3a.7967 (bia 7069.5a3a.7967)
MTU 9084 bytes, BW 40000000 Kbit , DLY 10 use
증상
유닛이 클러스터에 가입할 수 없으며 이 메시지가 표시됩니다.
Interface mismatch between cluster primary and joining unit unit-2-1. unit-2-1 aborting cluster join.
Cluster disable is performing cleanup..done.
Unit unit-2-1 is quitting due to system failure for 1 time(s) (last failure is Internal clustering error). Rejoin will be attempted after 5 minutes.
All data interfaces have been shutdown due to clustering being disabled. To recover either enable clustering or remove cluster group configuration.
확인/완화
각 섀시의 FCM GUI에 로그인하고 Interfaces(인터페이스) 탭으로 이동하여 모든 클러스터 멤버의 인터페이스 컨피그레이션이 동일한지 확인합니다.
증상
클러스터에는 여러 개의 제어 유닛이 있습니다. 다음 토폴로지를 고려하십시오.
섀시 1:
firepower# show cluster info
Cluster ftd_cluster1: On
Interface mode: spanned
This is "unit-1-1" in state PRIMARY
ID : 0
Site ID : 1
Version : 9.15(1)
Serial No.: FLM2103TU5H
CCL IP : 127.2.1.1
CCL MAC : 0015.c500.018f
Last join : 07:30:25 UTC Dec 14 2020
Last leave: N/A
Other members in the cluster:
Unit "unit-1-2" in state SECONDARY
ID : 1
Site ID : 1
Version : 9.15(1)
Serial No.: FLM2103TU4D
CCL IP : 127.2.1.2
CCL MAC : 0015.c500.019f
Last join : 07:30:26 UTC Dec 14 2020
Last leave: N/A
Unit "unit-1-3" in state SECONDARY
ID : 3
Site ID : 1
Version : 9.15(1)
Serial No.: FLM2102THJT
CCL IP : 127.2.1.3
CCL MAC : 0015.c500.016f
Last join : 07:31:49 UTC Dec 14 2020
Last leave: N/A
섀시 2:
firepower# show cluster info
Cluster ftd_cluster1: On
Interface mode: spanned
This is "unit-2-1" in state PRIMARY
ID : 4
Site ID : 1
Version : 9.15(1)
Serial No.: FLM2103TUN1
CCL IP : 127.2.2.1
CCL MAC : 0015.c500.028f
Last join : 11:21:56 UTC Dec 23 2020
Last leave: 11:18:51 UTC Dec 23 2020
Other members in the cluster:
Unit "unit-2-2" in state SECONDARY
ID : 2
Site ID : 1
Version : 9.15(1)
Serial No.: FLM2102THR9
CCL IP : 127.2.2.2
CCL MAC : 0015.c500.029f
Last join : 11:18:58 UTC Dec 23 2020
Last leave: 22:28:01 UTC Dec 22 2020
Unit "unit-2-3" in state SECONDARY
ID : 5
Site ID : 1
Version : 9.15(1)
Serial No.: FLM2103TUML
CCL IP : 127.2.2.3
CCL MAC : 0015.c500.026f
Last join : 11:20:26 UTC Dec 23 2020
Last leave: 22:28:00 UTC Dec 22 2020
확인
firepower# ping 127.2.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 127.2.1.1, timeout is 2 seconds:
?????
Success rate is 0 percent (0/5)
firepower# show arp
cluster 127.2.2.3 0015.c500.026f 1
cluster 127.2.2.2 0015.c500.029f 1
firepower# capture capccl interface cluster
firepower# show capture capccl | i 127.2.1.1
2: 12:10:57.652310 arp who-has 127.2.1.1 tell 127.2.2.1
41: 12:11:02.652859 arp who-has 127.2.1.1 tell 127.2.2.1
74: 12:11:07.653439 arp who-has 127.2.1.1 tell 127.2.2.1
97: 12:11:12.654018 arp who-has 127.2.1.1 tell 127.2.2.1
126: 12:11:17.654568 arp who-has 127.2.1.1 tell 127.2.2.1
151: 12:11:22.655148 arp who-has 127.2.1.1 tell 127.2.2.1
174: 12:11:27.655697 arp who-has 127.2.1.1 tell 127.2.2.1
완화
다음은 샘플 스위치 컨피그레이션입니다.
Nexus# show run int po48-49
interface port-channel48
description FPR1
switchport access vlan 48
vpc 48
interface port-channel49
description FPR2
switchport access vlan 48
vpc 49
Nexus# show vlan id 48
VLAN Name Status Ports
---- ----------- --------- -------------------------------
48 CCL active Po48, Po49, Po100, Eth1/53, Eth1/54
VLAN Type Vlan-mode
---- ----- ----------
48 enet CE
1 Po1 up success success 10,20
48 Po48 up success success 48
49 Po49 up success success 48
Nexus1# show vpc brief
Legend:
(*) - local vPC is down, forwarding via vPC peer-link
vPC domain id : 1
Peer status : peer adjacency formed ok
vPC keep-alive status : peer is alive
Configuration consistency status : success
Per-vlan consistency status : success
Type-2 consistency status : success
vPC role : primary
Number of vPCs configured : 3
Peer Gateway : Disabled
Dual-active excluded VLANs : -
Graceful Consistency Check : Enabled
Auto-recovery status : Disabled
Delay-restore status : Timer is off.(timeout = 30s)
Delay-restore SVI status : Timer is off.(timeout = 10s)
vPC Peer-link status
---------------------------------------------------------------------
id Port Status Active vlans
-- ---- ------ --------------------------------------------------
1 Po100 up 1,10,20,48-49,148
vPC status
----------------------------------------------------------------------
id Port Status Consistency Reason Active vlans
-- ---- ------ ----------- ------ ------------
1 Po1 up success success 10,20
48 Po48 up success success 48
49 Po49 up success success 48
증상
하나 이상의 데이터 포트 채널 인터페이스가 일시 중단됩니다. 관리상 활성화된 데이터 인터페이스가 일시 중단되면 인터페이스 상태 확인 실패로 인해 동일한 섀시의 모든 클러스터 유닛이 클러스터에서 제외됩니다.
다음 토폴로지를 고려하십시오.
확인
firepower#
Beginning configuration replication to SECONDARY unit-2-2
End Configuration Replication to SECONDARY.
Asking SECONDARY unit unit-2-2 to quit because it failed interface health check 4 times (last failure on Port-channel1). Clustering must be manually enabled on the unit to rejoin.
firepower# Unit is kicked out from cluster because of interface health check failure.
Cluster disable is performing cleanup..done.
All data interfaces have been shutdown due to clustering being disabled. To recover either enable clustering or remove cluster group configuration.
Cluster unit unit-2-1 transitioned from SECONDARY to DISABLED
firepower# show cluster history
==========================================================================
From State To State Reason
==========================================================================
12:59:37 UTC Dec 23 2020
ONCALL SECONDARY_COLD Received cluster control message
12:59:37 UTC Dec 23 2020
SECONDARY_COLD SECONDARY_APP_SYNC Client progression done
13:00:23 UTC Dec 23 2020
SECONDARY_APP_SYNC SECONDARY_CONFIG SECONDARY application configuration sync done
13:00:35 UTC Dec 23 2020
SECONDARY_CONFIG SECONDARY_FILESYS Configuration replication finished
13:00:36 UTC Dec 23 2020
SECONDARY_FILESYS SECONDARY_BULK_SYNC Client progression done
13:01:35 UTC Dec 23 2020
SECONDARY_BULK_SYNC DISABLED Received control message DISABLE (interface health check failure)
firepower# show cluster info trace module hc
Dec 23 13:01:36.636 [INFO]cluster_fsm_clear_np_flows: The clustering re-enable timer is started to expire in 598000 ms.
Dec 23 13:01:32.115 [INFO]cluster_fsm_disable: The clustering re-enable timer is stopped.
Dec 23 13:01:32.115 [INFO]Interface Port-channel1 is down
FPR2(fxos)# show port-channel summary
Flags: D - Down P - Up in port-channel (members)
I - Individual H - Hot-standby (LACP only)
s - Suspended r - Module-removed
S - Switched R - Routed
U - Up (port-channel)
M - Not in use. Min-links not met
--------------------------------------------------------------------------
Group Port-Channel Type Protocol Member Ports
--------------------------------------------------------------------------
1 Po1(SD) Eth LACP Eth2/1(s) Eth2/2(s) Eth2/3(s) Eth2/4(s)
48 Po48(SU) Eth LACP Eth3/1(P) Eth3/2(P) Eth3/3(P) Eth3/4(P)
완화
증상
유닛이 클러스터를 나갑니다.
확인/완화
firepower# show cluster history
FPR4150# connect local-mgmt
FPR4150 (local-mgmt)# dir cores
클러스터 유닛의 /ngfw 파티션의 디스크 사용률이 94%에 도달하는 경우 유닛에서 클러스터를 종료합니다. 디스크 사용률 검사는 3초마다 수행됩니다.
> show disk
Filesystem Size Used Avail Use% Mounted on
rootfs 81G 421M 80G 1% /
devtmpfs 81G 1.9G 79G 3% /dev
tmpfs 94G 1.8M 94G 1% /run
tmpfs 94G 2.2M 94G 1% /var/volatile
/dev/sda1 1.5G 156M 1.4G 11% /mnt/boot
/dev/sda2 978M 28M 900M 3% /opt/cisco/config
/dev/sda3 4.6G 88M 4.2G 3% /opt/cisco/platform/logs
/dev/sda5 50G 52M 47G 1% /var/data/cores
/dev/sda6 191G 191G 13M 100% /ngfw
cgroup_root 94G 0 94G 0% /dev/cgroups
이 경우 show cluster history 출력에는 다음이 표시됩니다.
15:36:10 UTC May 19 2021
PRIMARY Event: Primary unit unit-1-1 is quitting
due to diskstatus Application health check failure, and
primary's application state is down
또는
14:07:26 CEST May 18 2021
SECONDARY DISABLED Received control message DISABLE (application health check failure)
실패를 확인하는 또 다른 방법은 다음과 같습니다.
firepower# show cluster info health
Member ID to name mapping:
0 - unit-1-1(myself) 1 - unit-2-1
0 1
Port-channel48 up up
Ethernet1/1 up up
Port-channel12 up up
Port-channel13 up up
Unit overall healthy healthy
Service health status:
0 1
diskstatus (monitor on) down down
snort (monitor on) up up
Cluster overall healthy
또한 디스크가 ~100%인 경우, 일부 디스크 공간이 해제될 때까지 유닛이 클러스터에 다시 가입하는 데 어려움이 있을 수 있습니다.
각 클러스터 유닛에서는 5분마다 로컬 및 피어 유닛에서 CPU 및 메모리 사용률을 확인합니다. 사용률이 시스템 임계값보다 높은 경우(LINA CPU 50% 또는 LINA 메모리 59%) 다음 위치에 정보 메시지가 표시됩니다.
firepower# more log/cluster_trace.log | i CPU
May 20 16:18:06.614 [INFO][CPU load 87% | memory load 37%] of module 1 in chassis 1 (unit-1-1) exceeds overflow protection threshold [CPU 50% | Memory 59%]. System may be oversubscribed on member failure.
May 20 16:18:06.614 [INFO][CPU load 87% | memory load 37%] of chassis 1 exceeds overflow protection threshold [CPU 50% | Memory 59%]. System may be oversubscribed on chassis failure.
May 20 16:23:06.644 [INFO][CPU load 84% | memory load 35%] of module 1 in chassis 1 (unit-1-1) exceeds overflow protection threshold [CPU 50% | Memory 59%]. System may be oversubscribed on member failure.
이 메시지는 유닛 오류가 발생할 경우 다른 유닛 리소스가 초과 서브스크립션될 수 있음을 나타냅니다.
6.3 이전 FMC 릴리스의 동작
6.3 이후 FMC
최소 지원 관리자 |
관리되는 디바이스 |
최소 지원 관리되는 디바이스 버전 필요 |
참고 |
FMC 6.3 |
FP9300 및 FP4100에서만 FTD 클러스터 |
6.2.0 |
이는 FMC 기능에만 해당됩니다 |
경고: FTD에서 클러스터가 형성된 후에는 자동 등록이 시작될 때까지 기다려야 합니다. 클러스터 노드를 수동으로 등록(Add Device)하지 말고 Reconcile 옵션을 사용해야 합니다.
증상
노드 등록 실패
완화
어떤 이유로든 데이터 노드 등록이 실패하면 2가지 옵션이 있습니다.
개정 | 게시 날짜 | 의견 |
---|---|---|
2.0 |
28-Jun-2023 |
대체 텍스트를 추가했습니다.
편향된 언어를 대체했습니다.
업데이트된 브랜딩 요구 사항, SEO, 기계 번역, 스타일 요구 사항, 문법 및 서식. |
1.0 |
26-Jan-2021 |
최초 릴리스 |