2017-11-20 1 views
0
Apache (ec2) --- Client (ELB) 
|      | 
|-------[1.]FIN------->| 
|      | 
|<-----[2.]FIN+ACK-----| 
|      | 
|---------ACK--------->| 
|      | 

I은 ​​패킷을 추출하기 위해 서버 (80)에 의해 방출되는도 상술 한 "[1] FIN을"원하는 포트와 FIN 시퀀스를 "시작"합니다.와이어 샤크 필터 와이어 샤크와

내가 필터를 시도했다 :

& tcp.flags.fin & tcp.srcport의 == 80

하지만 필터는 또한 추출 추가 "[2] FIN + ACK "패킷을 수신한다. "FIN"시퀀스 개시자를 고려하여 [1.] 패킷 만 필터링하는 방법은 무엇입니까?

배경 : 나는 AWS ELB와 EC2 (아파치)와 504 오류를 제거하기 위해 사투를 벌인거야

"FIN - FIN/ACK - ACK"순서가 백엔드 아파치 측에 의해 시작된다. ELB에 의해 시작 등 환경 FIN 순서에서 AWS 공식 SAIS로 이상적입니다 : http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html

https://aws.amazon.com/jp/premiumsupport/knowledge-center/504-error-classic/에 따르면, 나는 MPM (이벤트 -> 근로자) 교체 변화 시도했습니다 약간 504 오류를 감소하지 않도록 TCP_DEFER_ACCEPT을. 그러나 상황은 많이 개선되지 않습니다.

내가 생각하는 요지는 아파치가 액티브 - 클로즈 시퀀스를 시작하게하는 원인을 찾는 것일 것이다. 그래서 나는 ELB와 EC2 (아파치) 사이에서 최대 512 개의 병렬 연결 중에서 아파치에서 시작하는 FIN 패킷을 추출하려고한다. == tcp.flags.fin

+0

원인은 보존 된 HTTP 연결의 서버 측 만료 원인입니다. – EJP

+0

Apache의 KeepaliveTimeout은 120으로 설정되어 있지만 ELB 유휴 시간 초과는 60으로 설정되어 있으므로 그렇지 않습니다. –

답변

0

1 & & tcp.flags.ack == 0

  • 필터 파라미터의 존재에 대해서만 검사 tcp.flags.fin 등. 특정 매개 변수 값을 찾으려면 비교가 필요합니다. 이것이 "tcp"와 같은 필터가 TCP 패킷을 찾기 위해 작동하는 이유입니다.
  • FIN의 필터 일치는 다른 플래그를 설정하거나 설정하지 않기 때문에 필터의 일부가되어야하는 각 플래그에 대해 비교가 필요합니다.