web-dev-qa-db-ja.com

VPN接続を使用するプロキシサーバーのセットアップ

私の考えはこのようなものです:

接続している外部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)があります。

これは明確になりますか?

5
Stojg

あなたが説明した状況は ありえない (実行中のアプリケーションはシステムルーティングテーブルを上書きできません)オプションがいくつかある場合があります。

  • の設定 到達しているネットワーク上のプロキシ VPNを使用して、アプリケーションにそのプロキシをデフォルトとして使用させます。アプリケーションが使用しているプロトコルに応じて、いくつかのプロキシから選択できます。
  • 指定されたネットワーク上のホストにsshを送信し、ssh-sサービスを悪用します。 動的転送。これは基本的に、sshクライアントで作成されたSOCKSプロキシです。次に、このプロキシを使用してアプリケーションを設定するか、tsocks(Transparent Socks)を使用してアプリケーションを調整します。

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サーバーとして機能します。複数の転送を指定でき、追加の転送をコマンドラインで指定できます。スーパーユーザー
のみが特権ポートを転送できます。
0
asdmin

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

エボラ!

6
Tiago

多分私はあなたの質問を理解していませんでしたが、これを試してください:

  • サーバーをセットアップし、VPNサーバーに接続します(どのような種類のVPN?OpenVpn、PPTP?IPSec?)。
  • デフォルトGWをVPNエンドポイントにする
  • 次のようなIP転送を有効にします。 "echo 1>/proc/sys/net/ipv4/ip_forward"
  • クライアントでは、サーバーをデフォルトGWとして使用します。
0
Max