디버깅 목적으로 Linux 가상 인터페이스에서 트래픽을 캡처하고 싶습니다. 내가 실험 한 veth
, tun
그리고 dummy
유형 인터페이스; 세 가지 모두에서 나는 tcpdump
아무것도 보여주지 못하는 데 어려움을 겪고 있습니다.
다음은 더미 인터페이스를 설정하는 방법입니다.
ip link add dummy10 type dummy
ip addr add 99.99.99.1 dev dummy10
ip link set dummy10 up
한 터미널에서 다음을 시청하십시오 tcpdump
.
tcpdump -i dummy10
잠시 후 다음과 nc
같이 들으십시오 .
nc -l 99.99.99.1 2048
세 번째로 다음을 사용하여 HTTP 요청을 작성하십시오 curl
.
curl http://99.99.99.1:2048/
터미널 2에서는 curl
요청 의 데이터를 볼 수 있지만에는 아무것도 표시되지 않습니다 tcpdump
.
툰 / 탭 튜토리얼 관계를 설명 커널이 실제로 하나가 로컬 인터페이스에서 작동되는 모든 패킷을 보낼 수있는 몇 가지 상황 :
우리는 tshark의 결과를 보면 아무것도 볼 수 없습니다. 인터페이스를 통과하는 트래픽이 없습니다. 인터페이스의 IP 주소를 핑 (ping)하고 있기 때문에 운영 체제는 패킷을 "전선으로"전송할 필요가없고 커널 자체가 이러한 핑에 응답한다고 결정합니다. 생각해 보면 다른 인터페이스의 IP 주소 (예 : eth0)를 핑 (ping)하면 정확히 어떤 일이 발생합니다. 패킷이 전송되지 않습니다. 이것은 분명하게 들릴지 모르지만 처음에는 혼란의 원인이 될 수 있습니다 (나에게있어서).
그러나 이것이 TCP 데이터 패킷에 어떻게 적용되는지 알기가 어렵습니다.
어쩌면 tcpdump
다른 방식 인터페이스에 바인딩해야 하는가?