다른 호스트에서 다른 고속 게이트웨이로 일부 트래픽을 보내는 라우팅 테이블이 있습니다.
ip route show table 88
default via 192.168.88.1 dev eno3
192.168.88.0/24 dev eno3 scope link src 192.168.88.4
그리고 설정된 패킷 태그를 기반으로 전달하는 라우팅 규칙은 다음과 같습니다.
32765: from all fwmark 0x58 lookup 88
이 연결을 통해 일부 트래픽을 라우팅하는 iptables 규칙이 있습니다.
*mangle
-A PREROUTING -p tcp -s 192.168.10.2 --sport 12345 -j MARK --set-mark 88
-A PREROUTING -p udp -s 192.168.10.2 --sport 12345 -j MARK --set-mark 88
COMMIT
이 규칙은 제대로 작동하지만 수명이 긴 연결은 태그를 잃고 결국 고속 게이트웨이 대신 기본 게이트웨이를 통해 라우팅됩니다.
규칙을 CONNMARK로 설정해 보았습니다.
-A PREROUTING -p tcp -s 192.168.10.2 --sport 12345 -j CONNMARK --set-mark 88
-A PREROUTING -p udp -s 192.168.10.2 --sport 12345 -j CONNMARK --set-mark 88
패킷은 표시되어 있지만( 그림 참조 iptables -L -vv -t mangle
) 잘못된 게이트웨이에서 전송되었습니다.
내 문제를 어떻게 해결할 수 있나요? 저는 데비안을 사용하고 있습니다.
근본적인 문제는 소스 포트 12345 및 소스 호스트 1.2.3.4에 대한 모든 연결과 해당 연결 수명의 모든 후속 콘텐츠가 이 게이트웨이에서 시작되어야 한다는 것입니다.
관련 트래픽은 주로 UDP입니다.