NAT 헤어핀/루프백을 구현하기 위해 tcp에 구멍 뚫기

NAT 헤어핀/루프백을 구현하기 위해 tcp에 구멍 뚫기

이 게시물을 기반으로 Python 홀 펀칭 패키지를 테스트하려고 합니다.https://bford.info/pub/net/p2pnat/

홀 펀칭 프로세스는 여러 네트워크 설정에서 작동하지만 최종 사용 사례(다중 레벨 NAT 뒤의 3.5개 피어)에서만 어려움을 겪었습니다.

다음과 같은 네트워크가 있다고 가정해 보겠습니다.

                  | 
                  | 11.0.0.1
             ___[eth0]___
               **NAT0**
             ___[eth1]___
                  | 192.168.0.1
                  |
               (switch)
                /    \
               /      \
  192.168.0.2 /        \ 192.168.0.3
        __[eth0]__   __[eth0]__
         **NATA**     **NATB**
        __[eth1]__   __[eth1]__
192.168.10.1|            |192.168.11.1
            |            |
192.168.10.2|            |192.168.11.2
        __[eth0]__   __[eth0]__
        **NodeA**    **NodeB**

머리핀 추가하고싶다NAT0왜냐하면 이것이 문제를 일으킬 것이라고 생각하기 때문입니다. 그런데 PAT(=NAT)의 Public Port를 모르기 때문에 PREROUTING어떻게 구성해야 하는지 모르겠습니다 . POSTROUTING따라서 어떤 패킷이 해당 시스템에 속해 있는지 알 수 없습니다.노스 타워또는NATB-d 11.0.0.1이제 어느 공용 포트가 속하는지 알고 싶다면 대상 IP를 확인하면 됩니다.노스 타워그리고NATB패키지를 올바른 로컬 컴퓨터로 보낼 수 있습니다.

흥미롭게도 단일 NAT 레이어만 사용하도록 할 수 있었습니다(헤어핀을 전혀 구성하지 않은 상태에서).

아마도 관련 질문

NAT 반사(NAT 루프백)는 어떻게 작동하나요?

그러나 이 경우 공용 IP로 향하는 모든 (로컬) 트래픽은 단일 시스템으로 라우팅됩니다. 제 경우에는 공용 포트를 기반으로 다른 컴퓨터로 패킷을 라우팅하고 싶습니다.

관련 정보