
インターネットへの接続を提供する複数のネットワーク インターフェイスがあります。インターネット アクセスに使用するインターフェイスは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.com
1.2.3.1
システムのデフォルト ゲートウェイではなくゲートウェイ経由でルーティングされるようになりました。