여기에 들어갈 수 없는 이유로 UDP 패킷 스트림(중요한 경우 네트워크 스트림 데이터)을 두 번째 대상으로 복사해야 합니다.
iptables
몇 가지 연구 끝에 'manangle 테이블'의 TEE 타겟이 정확히 다음과 같은 작업을 수행한다는 사실을 발견했습니다 .
iptables -t mangle -A PREROUTING -d 192.168.81.21 --protocol udp --destination-port 6343 -j TEE --gateway 192.168.228.2
iptables -t mangle -A PREROUTING -d 192.168.81.21 --protocol udp --destination-port 6344 -j TEE --gateway 192.168.228.2
지금 내가 겪고 있는 유일한 문제는 대상 서버가 원래 주소의 대상 헤더가 포함된 패킷을 192.168.228.2
수신 하므로 네트워크 흐름 트래픽을 수신하는 소프트웨어가 이를 수락하지 않는다는 것입니다.192.168.81.21
"명백한" 해결책은 자신만의 패킷 재작성 코드를 사용하여 iptables
대상 헤더를 올바른 값으로 재작성하는 것입니다.오직원본 패킷 대신 중복 패킷에서 발생합니다. 즉, 제가 주로 사용하는 DNAT는 PREROUTING 테이블에서만 작동하므로 더 이상 적용할 수 없으며, 이 시점에서는 일반 패킷과 중복 패킷을 구별할 수 없습니다.
명백한 것을 놓치고 있지 않는 한, 나는 붙어 있습니다. 어떤 제안이 있으십니까?
패킷의 IP 주소를 올바른 대상 서버로 변경하기 위해 POSTROUTING에 대한 규칙을 추가하는 방법이 있습니까?
답변1
복제 패킷이 전송되는 시스템에 다음 iptable 규칙을 추가하여 이 문제를 해결했습니다.
sudo iptables -t nat -A PREROUTING -p udp --dport 9003 -j NETMAP --to xx.xx.xxx.xx
이것이 하는 일은 포트로 전송된 모든 UDP 패킷의 대상 IP를 9003
개인 IP 주소로 변경하는 것입니다.