물리적 TAP 장치를 사용하여 머신 A -> B에서 흐르는 포트 4500을 대상으로 하는 UDP 패키지를 스니핑하고 로컬 포트의 머신 C에서 스니핑된 패키지를 수신하고 싶습니다(이미지 참조).
TAP 장치 정보: 이는 A와 B 사이에 배치되는 물리적 장치입니다. A와 B 사이의 트래픽은 전혀 수정되지 않지만 패키지는 시스템 C의 TAP 출력 인터페이스로도 전송됩니다(C에서 수신된 패키지는 TAP가 수정을 수행하지 않기 때문에 여전히 B로 주소 지정됨)
내 목표와 같은 클라이언트 프로그램에서 머신 C의 포트 4500을 대상으로 하는 모든 데이터를 수신하는 것입니다 netcat
.
문제분명히 C의 NIC에서 수신된 패키지는 C를 대상으로 하지 않으므로 패키지는 OSi 모델의 애플리케이션 계층에 가까운 위치에 도달하기 전에 삭제됩니다.
이미 시도한 것은 nftables
패키지를 리디렉션하는 데 사용하는 것이었지만 내 netcat은 여전히 메시지를 받지 못합니다. 누군가 내가 뭘 잘못하고 있는지 도와주거나 이 문제를 해결하는 가장 좋은 방법을 제안할 수 있나요?
nft 'add chain nat udpredirect { type nat hook prerouting priority -101 ; policy accept ; }'
nft 'add rule ip nat PREROUTING udp dport 4500 redirect'
답변1
대답은 여기에 있습니다:https://serverfault.com/a/1125704/570881
커널이 패키지를 삭제하기 전에 이미 패키지를 수정하려면 netdev 제품군을 사용해야 합니다.