6年後、私はこの質問にたどり着き、受け入れられた答えに基づいてほとんどがっかりしました。今日では、ポリシー ルーティングを使用するため、複雑ではありません。すべての詳細は、この同じサイト (https://serverfault.com/a/389004/70774) で入手できます。
私の場合、最初に VPN がデフォルト ルートでないことを確認する必要がありました。どのようにそれを達成するかは、使用している接続マネージャーの種類によって異なります。
プロキシ (tinyproxy) は独自のユーザーで実行されているため、このユーザーからのすべてのパッケージをコマンドでマークします
iptables -t mangle -A OUTPUT -m owner --uid-owner 125 -j MARK --set-mark 2
どこで 125
tinyproxy ユーザーの uid と 2
です。 後で照合する任意の数値です。
次に、特定のテーブルを使用して、2
でマークされたすべてのリクエストをルーティングするようルーティング システムに指示します。 .
ip rule add fwmark 2 table 3
繰り返しますが、3
は任意の数にすぎません。未使用のテーブルを選択するように注意してください (ip route list table 3
で選択したテーブルに何かがあるかどうかを確認してください) ).
次に、テーブル 3
に入力します 私のデフォルトルートで:
ip route add default dev ppp0 via proto static scope link metric 1024
最後のステップは、マスカレード ルールを作成することでしたが、その必要性を完全には理解していません:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
ほら!