破損した発信パケットがデフォルトパスを使用するのを防ぐ方法は何ですか?

破損した発信パケットがデフォルトパスを使用するのを防ぐ方法は何ですか?

ルーターがあります。複数のインターフェースがあります。そのうちの1つはvpn0というVPNで、1つは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です。

何を提供しますか?

関連情報