破損した出力パケットがデフォルトルートを使用することを停止するにはどうすればよいですか?

破損した出力パケットがデフォルトルートを使用することを停止するにはどうすればよいですか?

ルーターがあります。インターフェースがいくつかあります。そのうちの 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 に変更してこれを確認しました。

何が起こったのですか?

関連情報