Wie kann verhindert werden, dass beschädigte Ausgabepakete die Standardroute verwenden?

Wie kann verhindert werden, dass beschädigte Ausgabepakete die Standardroute verwenden?

Ich habe einen Router. Er hat mehrere Schnittstellen. Eine davon ist das VPN namens vpn0, eine ist die Standardroute zur physischen Schnittstelle namens out0 und eine Eingangsschnittstelle in0.

Pakete von in0 mit Zielport 993 dürfen nie auf out0 platziert werden. Ich mache das, indem ich die Pakete folgendermaßen markiere:

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

und um die Weiterleitung auf out0 zu deaktivieren, gehe ich wie folgt vor:

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

Das Problem, das ich habe, betrifft die Ausgabepakete, die vom Host kommen. Um Pakete aus VPN0 zu verstümmeln, habe ich diese Regeln:

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    

Das funktioniert ziemlich gut. Das passiert nur, wenn vpn0 nicht funktioniert. Ich habe versucht, die Regel hinzuzufügen:

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

Dadurch werden jedoch Pakete gelöscht, die über das VPN hinausgehen würden. Ich habe dies überprüft, indem ich DROP in ein LOG geändert habe und die Ausgangsschnittstelle out0 und nicht vpn0 ist.

Was gibt?

verwandte Informationen