iptables: 잘못된 대상 IP를 가진 중복 UDP 패킷

iptables: 잘못된 대상 IP를 가진 중복 UDP 패킷

나는 다음과 같은 설정을 가지고 있습니다 :

  • 데이터 소스(IP 192.168.178.1)는 UDP 패킷을 서버로 보냅니다.
  • 서버(Debian)는 UDP 데이터(IP 192.168.178.10, 포트 4000) 를 수집하고 처리합니다.
  • PC(Windows 10)는 UDP 데이터(IP 192.168.178.22, 포트 4000) 를 모니터링해야 합니다.

아이디어는 UDP 데이터를 복사하여 사용하는 것입니다 iptabels. 규칙은 Debian 서버(IP 192.168.178.10)에 설정됩니다.

iptables -t mangle -A PREROUTING -p udp --dport 4000 -j TEE --gateway 192.168.178.22 

효과는 다음과 같습니다:

  • 서버는 여전히 UDP 데이터를 수신하고 처리합니다(정상).
  • PC에서도 데이터를 수신하지만잘못된대상 IP. 따라서 모니터링 소프트웨어는 이 데이터를 처리하지 않습니다.

PC에서 Wireshark는 대상 주소가 PC의 IP(.22)가 아니라 서버의 IP(.10)임을 보여줍니다.

Internet Protocol Version 4, Src: 192.168.178.1, Dst: 192.168.178.10

이제 두 가지, 어쩌면 세 가지 질문이 있습니다.

  • 전달된 UDP 패킷의 대상 IP 주소가 일치하지 않기 때문에 PC가 전달된 UDP 패킷을 수신하는 이유는 무엇입니까?
  • iptables 규칙의 IP 주소를 PC의 IP 주소로 변경하는 방법은 무엇입니까? 어쩌면 POSTROUTING에 대한 규칙을 추가해야 할까요?
  • 체크섬을 업데이트해야 합니까?

답변1

이 문제에 대해 다음과 같은 해결책을 찾았습니다.

  1. 대상이 아닌 소스에서 UDP 패킷을 복사합니다. 이 규칙은 PC(.22)에서 나가는 모든 UDP 패킷을 복사하여 서버(.10)로 보냅니다.

    sudo iptables -t mangle -A OUTPUT -p udp -d 192.168.178.22 --dport 4000 -j TEE --gateway 192.168.178.10

  2. 서버에서 대상 주소는 여전히 PC의 주소이므로 서버의 IP 주소로 변경해야 합니다.

    sudo iptables -t nat -A PREROUTING -p udp --dport 4000 -j NETMAP --to 192.168.178.10

이제 서버와 PC 모두 올바른 대상 주소가 포함된 UDP 패킷을 수신하므로 소프트웨어는 데이터를 수락합니다.

관련 정보