2011-10-21 2 views
2

때때로 SACK (TCP Selective Acknowledgment) 옵션을 올바르게 처리하지 않는 글리치 시스코 라우터를 디버깅해야 할 때가 있습니다. 이렇게하면 IPTABLES 포트 리디렉션 규칙을 통해 라우팅 될 때 TCP 세션이 중단됩니다.Linux 패킷 처리 스택 서브시

진단을 돕기 위해 나는이 오류를 재현 할 수있는 일련의 패킷을 구성하기 위해 파이썬 기반 유틸리티를 구성 해 왔으며 구현시 원시 소켓을 사용하여이 트릭을 수행합니다. 나는 잘 작동하는 ICMP 핑을 가지고있다. 그러나 나는 UDP 구현에 걸림돌을 쳤다. 나는 문제없이 패킷을 보내고 보내고받을 수있다. 내가보기에는 리눅스가 UDP를 좋아하지 않는다는 것이다. 패킷은 원격 시스템에서 되돌려 보내며 내 python 스크립트가 명백한 문제없이 패킷을 수신하고 처리 할 수있을지라도 항상 ICMP Destination 도달 할 수없는 패킷을 보냅니다.

내 질문 : RAW 소켓으로 작업 할 때 이러한 ICMP 오류 메시지를 무시하도록 Linux UDP 스택을 포함시킬 수 있습니까?

감사

답변

1

당신은 수신 패킷을 처리하고 단지 ICMP 포트에 연결할 수없는을 억제 할 필요가 있습니까? 그렇다면 iptables OUTPUT chain에 항목을 추가하여 삭제하십시오.

+0

재미있는 제안은 분명히 효과가있을 것이라고 생각합니다. 가능한 경우 덜 과감한 해결책을 선호합니다. –

+0

IPTABLES가 유일한 방법 일 수 있습니다. RAW 소켓은 송신 전용이며 AF_PACKET 소켓은 반환 패킷을 캡처하는 데 사용할 수는 있지만 Linux 네트워크 스택이 처리하지 못하게 할 수는 없습니다. –