iptables MARK는 게이트웨이를 변경할 수 있지만 CONNMARK는 변경할 수 없습니다.

iptables MARK는 게이트웨이를 변경할 수 있지만 CONNMARK는 변경할 수 없습니다.

다른 호스트에서 다른 고속 게이트웨이로 일부 트래픽을 보내는 라우팅 테이블이 있습니다.

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입니다.

관련 정보