iptables-mod-tee는 WAN 인터페이스에서 나가는 트래픽을 모니터링하는 데 사용됩니다.

iptables-mod-tee는 WAN 인터페이스에서 나가는 트래픽을 모니터링하는 데 사용됩니다.

여기에 이미지 설명을 입력하세요.

192.168.0.1/24eth1LAN( )과 공용 IP 140.82.118.4( ) eth2사이에서 표준(즉시 사용 가능) NAT를 수행하는 OpenWrt 라우터(v18.06.5, r7897-9d401013fc)가 있습니다 . 라우터에는 iptables-mod-tee모듈이 로드되어 실행 중입니다.

eth2내 목표는 인터페이스에서 WAN으로 나가는 트래픽을 모니터링하는 것입니다 . 모니터링은 LAN( 위치 192.168.0.3)에 있는 "Wireshark"를 실행하는 컴퓨터에 의해 수행됩니다.

ping 8.8.8.8예를 들어, LAN에 있는 다른 컴퓨터(예: 에서)에서 == 및 ==를 보낼 192.168.0.2때 WAN 인터페이스로 나가는 IP/ICMP 에코 요청을 보고 싶습니다 .ip.src140.82.118.4ip.dst8.8.8.8eth2

다음 명령을 사용하여 "Wireshark"를 실행하는 호스트에 복제된 패킷을 보내도록 iptables를 수정했습니다.
iptables -t mangle -A POSTROUTING -o eth2 -j TEE --gateway 192.168.0.3

ip.src작동하지만 "Wireshark"는 == 192.168.0.2ip.dst== ...를 사용하여 IP/ICMP Echo 요청을 표시합니다 . 이는 SNAT(또는 위장) 이전인 것처럼 보이기 8.8.8.8때문에 잘못된 것입니다 !ip.src

내 공용 WAN 인터페이스의 IP 여야 ip.src합니다 140.82.118.4. 그렇지 않으면 8.8.8.8 hostICMP Echo 응답을 어디로 보낼지 알 수 없지만 ping 명령은 호스트로부터 ICMP Echo 응답을 받고 있기 8.8.8.8때문입니다. .

왜 이런 일이 발생하며 이를 해결하는 방법은 무엇입니까?

답변1

mangle의 POSTROUTING 규칙은 nat의 POSTROUTING 규칙보다 먼저 실행됩니다. 따라서 mangle의 POSTROUTING에서 TEE 작업을 수행할 때 소스 NAT가 발생하지 않습니다.... 아래 첨부된 iptables 다이어그램을 참조하세요.https://th.bing.com/th/id/R.aa2afe9a3c09b762af0b59c8670c7740?rik=SvxGxvrwso1veg&riu=http%3a%2f%2flinux-ip.net%2fnf%2fnfk-traversal.png&ehk=kT6op7%2bDt4yCPX1npGPAw9m WO pRiFTZsA5qJ0HMDQZo%3d&risl=&pid =ImgRaw&r=0

iptables 다이어그램

관련 정보