2017-05-09 4 views
0

ubuntu:16.04docker image에서 파생 된 도커 이미지를 만들고이 이미지를 기반으로 컨테이너를 시작했습니다. 이 컨테이너 내에서 tcpdump을 사용하여 GRE 패킷 캡처를 시도했습니다. 이Docker Ubuntu 16.04 LTS - tcpdump를 사용하여 GRE 패킷을 캡처합니다.

tcpdump: unknown ip proto 'gre' 

어떤 생각을 고정 할 수있는 방법 : I는 컨테이너 내에서 tcpdump -i <interface> proto gre을 실행할 때, 나는 다음과 같은 오류가 발생합니다?

참고 : 컨테이너는 (즉, 컨테이너는 --net="host"으로 시작) 호스트 네트워킹 스택 미리

감사를 사용합니다.

+0

Docker 파일 표시 – user2915097

답변

0

pcap-filter man 페이지에 따르면, 만 다음 PROTOS 지정할 수 있습니다 FDDI, 그럴, 무선 랜, IP, IP6, ARP, RARP,에테르데넷, tcpudp.

그러나,이 대신 같은 슬라이스 연산자를 사용할 수 있습니다 : 당신이 RFC791 Section 3.1을 참조하면, 당신은 IP 헤더의 프로토콜 필드는 헤더의 10 바이트 것을 볼 수 "ip[9:1]=47"

, 또는 오프셋 9에 위치한 1 바이트 필드 (ip[9:1])를 분리합니다. RFC2784, Section 4에 지정된 (및 프로토콜 번호 47 IANA 함께 등록 기간)로서 또한, GRE 프로토콜 47

NOTES이다

  • 동안 PCAP 필터 및 tcpdump 매뉴얼 페이지 돈 ' 슬라이스 연산자를 사용하여 [] 연산자를 설명하면 wireshark-filter 매뉴얼 페이지에서이 용어를 사용하므로 여기서도이 용어를 사용합니다.
  • tcpdump 예에서는 Wireshark가 두 개의 등호 부호 ==을 사용하는 반면, 예제에서는 단일 등호 =을 사용합니다. 실제로, 둘 다 작동하므로 둘 중 하나를 자유롭게 사용하십시오.
  • 단일 바이트에만 관심이 있으므로 슬라이더 연산자 내에서 길이 값을 지정하지 않아도됩니다. "ip[9]==47"도 마찬가지로 작동합니다.
+0

크리스토퍼에게 감사드립니다. 몇 가지 요점 : (i) 호스트 컴퓨터 (도커 컨테이너가 실행되는)에서'proto gre' 필터를 사용하여 tcpdump를 실행할 수 있습니다. (ii) 도미노에서'proto 47 '로 바꾸면 괜찮습니다. – jithinpt

+0

"ip proto 47"을 시도했지만 테스트에서 실패했습니다.tcpdump/libpcap의 이전 버전을 실행 중일 수 있습니다 (지금은 확인할 수 없습니다). 어떤 버전의 tcpdump/libpcap가 호스트 컴퓨터와 도커 내에서 실행되고 있습니까? –

+0

또한 "ip proto gre"가 작동하면 pcap-filter 설명서를 업데이트해야하는 것처럼 보일 것입니다. –