VPNを介して単一のコマンドを実行せず、他のすべてのトラフィックはVPNを通過します。

VPNを介して単一のコマンドを実行せず、他のすべてのトラフィックはVPNを通過します。

VPNを使用してすべてのネットワークトラフィックを処理したいです。とは別に単一ランダムコマンドのトラフィック用。これを行う方法はありますか?

私が望むものを大まかに達成するより簡単な方法があることを知っています。たとえば、私のコマンドがsshの場合、ポート22への接続がVPNを通過しないようにルーティングを設定できます。しかし、ここには制限があります。私のコマンドが使用しているポートを知っておく必要がありますが、同時に別のSSHセッションを実行すると、VPNを通過せずに1つのコマンドしか実行したくありません。また、コマンドが使用しているポートや接続されているアドレスに関係なく動作することを望みます(これまでのところどこでも例を見つけることができませんでした)。

ありがとうございます!

答え1

さまざまなパスに対してコマンドを実行する1つの方法は、iptablesとポリシールーティングを使用することです。コマンドを実行するために新しいユーザー(またはグループ)を作成できます。

mangleiptables 所有者モジュールを使用してテーブルにトラフィックを表示します。この例では、トラフィックは識別子でタグ付けされます。10ユーザー向けノブプーン:

iptables -t mangle -A OUTPUT -m owner --uid novpn -j MARK --set-mark 10

新しいルーティングテーブルの作成(テーブル100) タグ付きトラフィックにデフォルトルートとルールを設定し、タグ付きトラフィックに新しいルーティングテーブルを適用します。

ip route add table 100 default via *DEFAULTGW*
ip rule add fwmark 10 table 100
ip route flush cache

VPN経由でルーティングされていないコマンドを実行するには、suなどを使用して新しいnovpnユーザーとしてコマンドを実行できます。

コマンドを実行するために新しいユーザーを作成することが許可されていない場合は、別のユーザーを設定できます。ネットワークネームスペースコマンドを実行する独自のパスがあります。

関連情報