2017-05-11 2 views
1

저는 소프트와 서버 사이의 TCP 통신에 몇 가지 버그가 있습니다. 제한 시간 라우터 에서 자동으로은 클라이언트에 알리지 않고 연결을 닫습니다 (일반적으로 FIN 패킷으로 이루어짐). 이 상황에서iptables를 사용하여 끊어진 연결을 에뮬레이트하기

내 tcpdump를 로그 :

소프트 시도 열 관련 메시지를 밀어. 서버에서

09:29:41.438050 IP CLIENTIP.33668 > SERVERIP.8101: Flags [P.], seq 163:228, ack 144, win 229, options [nop,nop,TS val 96713087 ecr 4169733508], length 65

은 (실제로 중간) 측이 연결이 이미 재설정 패키지와 함께 깨진 및 서버 answeres했다.

09:29:41.447415 IP SERVERIP.8101 > CLIENTIP.33668: Flags [R], seq 3072817047, win 0, length 0

나는이 사건을 디버깅하려고하지만,이 situtation는 꽤 긴 시간 초과 후 happenes.

제 생각에는 iptables를 사용하여이 상황을 에뮬레이션했습니다.

sudo iptables -t nat -D OUTPUT -p tcp --destination-port 8101 -j DNAT --to-destination SERVERIP:8102

그러나이 규칙은 새로운 TCP 연결을 위해 작동하지만 난 이미 설정된 연결에 패킷 콘텐츠를 변경해야하는 내 클라이언트에 대한 예를 들어, 변경 대상 포트하십시오. 누군가가 tcpdump 규칙을 모든 패키지의 대상 포트에 쓰는 방법을 알고 있습니까?

답변

1

netem과 같은 것을 사용하여 지연 또는 드롭 패킷을 추가 했습니까? 나는 그것이 당신을 위해 iptables보다 잘 작동한다고 생각합니다.

+0

감사합니다. 흥미 롭지 만이 RST 패킷을 생성 할 가능성을 발견하지 못했습니다 (자동 연결 삭제). 실제로는 libpcap 응용 프로그램에 대한 간단한 작업입니다. – Oleg

관련 문제