Linux 上の特定のコマンドで使用するゲートウェイを選択する

Linux 上の特定のコマンドで使用するゲートウェイを選択する

インターネットへの接続を提供する複数のネットワーク インターフェイスがあります。インターネット アクセスに使用するインターフェイスはroute add default gw ...いつでも変更できます。

ただし、特定のコマンドに対してのみゲートウェイを選択することは可能ですか? たとえば、1 つのプロセスで GSM モデム リンクを使用し、システムが他のすべてのインターネット要求に対してイーサネット リンクを使用するようにすることができます。

答え1

と別のユーザーを使用して、それを実行できますiptables。コマンドで使用するインターフェイスの IP アドレスが で、1.2.3.4名前がでeth1、ゲートウェイが であると仮定します1.2.3.1

1) 新しいユーザーを作成します。

adduser user2

2) そのユーザーから送信されるパケットをマークします。

iptables -t mangle -A OUTPUT -m owner --uid-owner user2 -j MARK --set-mark 42

3) これらのパッケージに IP アドレスを適用します。

iptables -t nat -A POSTROUTING -o eth1 -m mark --mark 42 -j SNAT --to-source 1.2.3.4

4) マークされたパケットをeth1のゲートウェイ経由でルーティングします。

ip rule add fwmark 42 table 42
ip route add default via 1.2.3.1 dev eth1 table 42

5) 新しいユーザーとしてコマンドを実行します。

sudo -u user2 ping example.com

ping example.com1.2.3.1システムのデフォルト ゲートウェイではなくゲートウェイ経由でルーティングされるようになりました。

関連情報