디버그 패킷 수신 후 사라짐

디버그 패킷 수신 후 사라짐

나는 이 설명을 가능한 한 간단하게 만들려고 노력할 것인데, 생각할 수 있는 모든 옵션을 제거했기 때문에 막히게 됩니다.

두 명의 호스트가 있습니다. 이들을 Alice와 Bob이라고 부르겠습니다.

  • Alice에서는 10.242.0.1/32가 lo에 할당되고 Bob에서는 10.242.0.2/32가 lo에 할당됩니다.
  • Alice와 Bob 사이에는 10.242.0.101/32에서 10.242.0.102/32까지 지점 간을 제공하는 Gre 터널이 있으며, a_b_gre양쪽에서 이 인터페이스를 호출합니다.
  • 또한 Alice는 IP 주소 10.242.1.1/24를 브리지에 할당합니다.

Bob을 예로 들면, 그는 10.242.0.1/32와 10.242.1.0/24 모두 10.242.0.101/32를 통해 접근할 수 있다는 것을 알고 있습니다. 방화벽 규칙이 없으며 정책이 "수락"으로 설정되어 있습니다.

내 문제는 다음과 같습니다. Alice가 10.242.1.1의 src IP를 사용하여 10.242.0.2에 ping을 보내면 패킷이 수신되지만 라우팅되거나 응답되지 않습니다. 이제 디버깅하는 동안 시도한 많은 작업 중 일부는 다음과 같습니다.

  1. 10.242.0.101에서 10.242.0.102까지의 Ping: 잘 작동합니다.
  2. 10.242.0.1에서 10.242.0.2까지의 핑: 잘 작동함
  3. 10.242.1.1에서 10.242.0.102로 ping: 작동하지 않음
  4. tshark -pi any icmp: 도착하는 패킷을 확인하고 응답 패킷이 없는 경우
  5. tshark -i lo icmp: 패킷이 보이지 않습니다
  6. Sysctl 확인:

    net.ipv4.conf.all.forwarding = 1
    net.ipv4.ip_forward = 1
    net.ipv4.conf.all.accept_local = 1
    net.ipv4.conf.all.rp_filter = 0
    net.ipv4.conf.all.route_localnet = 1
    net.ipv4.conf.all.log_martians = 1
    
  7. iptables TRACE 규칙: TRACE: filter:INPUT:policy:1 IN=a_b_gre OUT= MAC= SRC=10.242.1.1 DST=10.242.0.2 ...입력 체인을 잘 통과했음을 나타냅니다.

  8. conntrack -L: icmp 1 29 src=10.242.1.1 dst=10.242.0.2 type=8 code=0 id=29499 [UNREPLIED] src=10.242.0.2 dst=10.242.1.1 type=0 code=0 id=29499 mark=0 use=1...그래서 확실히 도달할 것입니다... conntrack 항목을 지우는 것은 도움이 되지 않습니다.
  9. 경로 찾기 확인: 조사 결과...

    Bob # ip route get 10.242.0.2 from 10.242.0.1 iif a_b_gre
    local 10.242.0.2 from 10.242.0.1 dev lo table local
        cache <local>  iif a_b_gre
    Bob # ip route get 10.242.1.1 from 10.242.0.2 iif lo
    10.242.1.1 from 10.242.0.2 via 10.242.0.101 dev a_b_gre
        cache  iif lo
    

이제 아이디어가 없습니다. Bob은 패킷을 명확하게 수신하고 이에 대해 무엇을 해야 할지 알고 있는 것 같습니다. 그러나 무엇인가가 패킷에 응답하거나 루프백으로 라우팅하는 대신 패킷을 삭제하도록 만드는 것 같습니다. ping -I 10.242.0.1 10.242.0.2 10.242.0.3.3이 처음 두 개와 유사한 세 번째 호스트 설정에 속하는 라인을 따라 핑을 시도하고 다시 ip route get정답을 제공하려고 할 때 동일한 동작이 나타나는 것을 고려하면 전달 단계에 대해 확실히 의심스럽습니다.

아, 또한 저는 특히 주소를 NAT로 연결하고 싶지 않다는 점을 기억해야 합니다. 이는 즉각적인 문제를 해결하지만 패킷을 올바르게 라우팅하려는 목표도 무효화합니다.

그렇다면 어디서부터 시작해야 할지에 대한 아이디어가 있나요?

관련 정보