特定のポートを介してopenvpnをトンネリングしない方法

特定のポートを介してopenvpnをトンネリングしない方法

長時間調査して何度も試しても、特定のポートからのトラフィックがopenvpnトンネルを通過しないようにする方法はまだわかりません。私の設定は次のとおりです。

(enp0s25)<ovpn server>(tun0) <--> (tun0)<ovpn client>(enp2s0) <--> app connecting on port 10011

push "redirect-gateway def1 bypass-dhcp"ovpnサーバーは、すべてのトラフィックがトンネルを介してリダイレクトされるように、ルーティング設定をクライアントにプッシュするように構成されています。これはまさに私が望んでいてうまくいくことです。ただし、tcpポート10011がトンネルを通過しないことを望むということは...

カーネルルーティングテーブルの主な内容は次のとおりです<ovpn client>

0.0.0.0/1 via 192.168.88.9 dev tun0
default via 192.168.0.1 dev enp2s0
128.0.0.0/1 via 192.168.88.9 dev tun0  # not sure why it's there..
192.168.0.0/24 dev enp2s0  proto kernel  scope link  src 192.168.0.29
192.168.88.0/24 via 192.168.88.9 dev tun0
192.168.88.9 dev tun0  proto kernel  scope link  src 192.168.88.10

私の最近の試みは次のとおりです<ovpn client>

  1. openvpn ルーティングテーブルの定義

    default via 192.168.0.1 dev enp2s0
    192.168.0.0/24 dev enp2s0  proto kernel  scope link  src 192.168.0.29
    
  2. ルールの定義1000: from all fwmark 0x64 lookup openvpn

  3. 次の iptables mangle ルールを定義します。

    -A OUTPUT -p tcp -m tcp --sport 10011 -j MARK --set-xmark 0x64/0xffffffff
    -A OUTPUT -p tcp -m tcp --sport 10011 -j LOG --log-prefix "(OUTPUT) fwmark 100: "
    

アイデア(おそらく悪いかもしれません)は、ルーティングテーブルエントリのためにトラフィックを<ovpn client> --> app connecting on port 10011前後にトンネリングするのではなく、0.0.0.0/1 via 192.168.88.9 dev tun0非常に基本的な「ローカルネットワーク」ルーティングテーブルであるルーティングテーブルopenvpnを使用することです。

私はmangle OUTPUTを使用していましたが、これはプロセスがポート10011でデータを送信した後にPOSTROUTINGの前に来るので、これが使用に適したチェーンだと思います。

openvpnを起動し<ovpn client>てポート10011に接続しようとすると、LOG iptablesルールによって生成されたシステムログは表示されず、openvpnが停止するとログが表示され、すべてがうまく機能します。

アプリケーションから発信されるトラフィックの送信元 IP が tun0 インターフェイスの 1 つであるため、ルーティングがどこかで切断された可能性があります。

ベストアンサー1

おすすめ記事