좋은 질문입니다.
실제로 tcpdump 는 IN 도중에 와이어 (및 NIC의 경우) 다음에 발견 된 첫 번째 소프트웨어 이고 OUT 에있는 마지막 소프트웨어 입니다.
Wire -> NIC -> tcpdump -> netfilter/iptables
iptables -> tcpdump -> NIC -> Wire
따라서 모든 패킷이 인터페이스에 도달하고 모든 패킷이 인터페이스를 떠나는 것을 볼 수 있습니다. tcpdump에서 볼 수 있듯이 포트 53에 대한 패킷은 응답을 얻지 못하므로 iptables 규칙이 올바르게 구성되었는지 확인했습니다.
편집하다
아마도 몇 가지 세부 사항을 추가해야 할 것입니다. tcpdump 는 패킷 소켓 을 생성하는 라이브러리 인 libpcap을 기반으로 합니다 . 네트워크 스택에서 규칙적인 패킷이 수신되면, 커널은 먼저 새로 도착한 패킷에 관심이있는 패킷 소켓이 있는지 확인하고 패킷 소켓이 있으면 해당 패킷 소켓으로 패킷을 전달합니다. ETH_P_ALL 옵션을 선택하면 모든 프로토콜이 패킷 소켓을 통과합니다.
libpcap의의 옵션을 가진 하나의 패킷 소켓이 활성화 구현은, 자신의 사용을 위해 사본을 유지하고, 먼저 건네 포함이 일반적인 방법으로 커널에 의해 처리되는 네트워크 스택, 위에 패킷 다시 복제 넷 필터 커널을 iptables의 공백 대응 . 나가는 길에 같은 순서로 ( 즉 , 첫 번째 넷 필터가 패킷 소켓을 통과 한 후 마지막으로 통과) 같은 방식으로 진행됩니다.
이것은 해킹되기 쉬운가? 하지만 물론. 방화벽이 손에 닿기 전에 libpcap 을 사용하여 루트킷으로 향하는 통신을 가로채는 개념 증명 루트킷이 있습니다. 그러나 간단한 구글 쿼리 가 libpcap 에서도 트래픽을 숨기고있는 작업 코드를 발굴한다는 사실과 비교할 때조차도이 말도 안됩니다 . 그러나 대부분의 전문가들은 네트워크 패킷 필터를 디버깅 할 때 장점이 단점보다 훨씬 크다고 생각합니다.