ルーターがあります。複数のインターフェースがあります。そのうちの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です。
何を提供しますか?