私の考えはこのようなものです:
接続している外部VPNサービスがあります。しかし、そのvpn接続を使用するローカルプロキシサーバーをセットアップして、そのプロキシを介して接続するアプリケーションがvpnを使用するようにすることは可能ですか?これはLinuxシステムに適用されます。
ヒントとリンクは大歓迎です!
編集:ユースケース:おそらくこれを行う別の方法があります。
Router #1 - Connects by the default net provided by ISP
Router #2 - Connects by PPTP VPN to another 'ISP'
ネットワーク内のクライアントは、デフォルトで通常のルーター#1に接続されており、すべてのトラフィックはそれによって処理されます。クライアントには、ルーター#2のプロキシ経由で接続し、VPNトンネルの最後に到達する別のブラウザー(Opera)があります。
これは明確になりますか?
あなたが説明した状況は ありえない (実行中のアプリケーションはシステムルーティングテーブルを上書きできません)オプションがいくつかある場合があります。
man ssh_config
DynamicForward ローカルマシンのTCPポートが セキュアチャネルを介して転送されることを指定し、アプリケーションプロトコルを使用して決定します リモートマシンからの接続先。 引数は[bind_address:] portである必要があります。IPv6アドレスは、アドレスを角かっこで囲むことで指定できます または、代替のsyn- tax:[bind_address /] portを使用します。デフォルトでは、ローカルポートはGatewayPorts設定に応じて ダンスでバインドされます。ただし、明示的なbind_address は、接続を特定のアドレスにバインドするために使用できます。「localhost」の bind_addressは、リスニングポートが ローカル使用のみにバインドされ、空のアドレスまたは「*」であることを示します。ポート がすべてのインターフェイスから使用可能であることを示します。 現在、SOCKS4およびSOCKS5プロトコルがサポートされており、ssh(1)は SOCKSサーバーとして機能します。複数の転送を指定でき、追加の転送をコマンドラインで指定できます。スーパーユーザー のみが特権ポートを転送できます。
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
エボラ!
多分私はあなたの質問を理解していませんでしたが、これを試してください: