맹글링된 출력 패킷이 기본 경로를 사용하는 것을 어떻게 중지합니까?

맹글링된 출력 패킷이 기본 경로를 사용하는 것을 어떻게 중지합니까?

라우터가 있습니다. 몇 가지 인터페이스가 있습니다. 그 중 하나는 vpn0이라는 VPN이고, 하나는 out0이라는 물리적 인터페이스에 대한 기본 경로이며, 입력 인터페이스 in0입니다.

대상 포트가 993인 in0의 패킷은 절대로 out0에 배치되지 않습니다. 나는 패킷을 다음과 같이 표시하여 이를 수행합니다.

iptables -t mangle -A PREROUTING -i in0 -p tcp --dport 993 -j MASK --set-mark 100
iptables -t mangle -A PREROUTING -i in0 -p tcp --dport 993 -j CONNMARK --save-mark

out0에서 전달을 비활성화하려면 다음을 수행합니다.

iptables -A FORWARD -i in0 ! -o vpn0 --match-mark 100 -j DROP -m conntrack --ctstate NEW

내가 겪고 있는 문제는 호스트에서 나오는 출력 패킷에 있습니다. vpn0에서 패킷을 엉망으로 만들기 위해 다음 규칙이 있습니다.

iptables -t mangle  -A OUTPUT --protocol tcp --dport 993 --jump MARK --set-mark 100
iptables -t mangle -A OUTPUT --protocol tcp --dport 993 --jump CONNMARK --save-mark
iptables -t mangle -A OUTPUT --protocol tcp --dport 993 --jump RETURN    

꽤 잘 작동합니다. vpn0이 작동하지 않을 때만 발생합니다. 규칙을 추가해 보았습니다.

iptables -A OUTPUT --protocol tcp --dport 993 -o out0 --match mark  --mark 100  --jump DROP -m conntrack --ctstate NEW

하지만 이는 VPN에서 나오는 패킷을 삭제합니다. DROP을 LOG로 변경하여 이를 확인했는데 출력 인터페이스가 vpn0이 아닌 out0입니다.

무엇을 제공합니까?

관련 정보