2011-06-07 12:51:27 +0000 2011-06-07 12:51:27 +0000
44
44

選択したアプリケーションでのみVPN接続を使用する

VPNにアクセスしていますが、すべてのアプリケーションではなく、一部のアプリケーションにのみVPNを使用したいのですが、どうすればよいでしょうか?

例: VPNに接続した場合、OperaとNewsbinだけにVPN接続を使用させたい。Outlook などの他のすべてのアプリケーションは、通常のインターネット接続を使用してください(VPN が接続されている間/開いている間)。

これは不可能だと思いますが、完全にはわかりません。そこで質問なのですが、これは可能なのでしょうか?

回答 (8)

37
37
37
2013-09-12 01:28:23 +0000

これは、少なくとも Linux 上では可能です (BSD と OS X でも可能だと思います)。以下のようにすることができます:

  • すべての VPN トラフィックに対して exra ユーザを作成する。
  • VPN経由のデフォルトルートを1つ持つ追加のルーティングテーブルを作成する。
  • 特定のユーザー ID から発信されるすべてのトラフィックに対して、他のルーティングテーブルを使用するように Iptables を介して Netfilter を設定する。
  • VPN を使用するアプリケーションを自分のユーザーの下で実行します。例えば、「sudo」で実行します。

上記の手順を実行するためのスクリプト こちら または別のガイド こちら があります。

VPN経由の転送をルーティングするための詳細なガイドがあります(自分が所有しているVPNサーバを使用しています)。

14
14
14
2011-07-07 16:01:13 +0000

これを実現するためにWindowsファイアウォールを使用することができます(Win 7またはVistaを使用している場合) - これについてのガイドを書きました

  1. 通常通りに VPN に接続します。

  2. ネットワークと共有センターを開く - タスクバーのインターネット接続アイコンを右クリックし、「ネットワークと共有センターを開く」を選択します(下記参照)

  3. 「アクティブなネットワークの表示」の下に(少なくとも)2つのネットワークが表示されているはずです - あなたのVPN接続と、「ネットワーク」と呼ばれるネットワーク(別名ISP接続)。VPN接続が「パブリックネットワーク」であり、ISP接続が「ホームネットワーク」であることを確認してください。どちらかの接続を変更する必要がある場合は、その接続をクリックすると、オプションウィンドウが表示されます(下記参照)。

  4. コントロールパネルに移動し、[システムとセキュリティ]をクリックします(下記参照)。

5.表示されるウィンドウで、「Windows ファイアウォール」(下記参照)をクリックします。

  1. Windows ファイアウォール] ウィンドウで、左側のペインの [詳細設定] をクリックします(後述)。注: ファイアウォール設定を変更するには、管理者としてログインする必要があります。

7 「Windows ファイアウォールと高度なセキュリティ」というタイトルのウィンドウが表示されます。このウィンドウで、[受信ルール]をクリックします(以下を参照)。

  1. 右側のペインに、新しいルールのオプションが表示されます。これをクリックします(以下を参照)。

  2. 新しい受信ルールウィザード(表示されるはずです)で、以下の操作を行います。

  3. 送信ルールについては、ステップ9を繰り返します。

5
5
5
2017-05-29 07:03:30 +0000

これをWindowsでやってみました。発信するネットワークパッケージをVPNのインターフェースにバインドするというアイデアです。これには ForceBindIP を使うことを提案していますが、 この回答 のおかげでプロキシを使うというアイデアが出てきました。この方法の欠点は、アプリがプロキシをサポートしていなければならないか、プロキシファイヤーを使わなければならないことです( ここ ここ を参照してください)。この方法の利点は、FoxyProxyProxyや類似のアドオンを使って、ブラウザでのVPNの使用を特定のドメインに制限できることです。

私はSOCKSモードで 3proxy を使用し、その外部インターフェースをVPNのIPにバインドしています。VPN接続にはOpenVPNを使用しています。

私の.ovpnファイル(client, dev tun)には、以下の行を追加しました。

route-nopull
route 0.0.0.0 0.0.0.0 vpn_gateway
pull-filter ignore "dhcp-option DNS "
script-security 2
up 'c:\path\to\up.cmd'
down 'c:\path\to\down.cmd'

route-nopull サーバーからのルートを無視するために、以下の行を追加しました。あなたの場合、代わりに redirect-gateway をコメントアウトする必要があるかもしれません。

route このインターフェイスにルートを追加するには、この行がないとアプリがバインドされていても使用されません。

pull-filter でプッシュされたDNSを保存します。このオプションは OpenVPN 2.4 からサポートされていますが、OpenVPN 2.3 (Windows XP の最新リリース) を使用する必要がある場合は、代わりにハードコードされた IP を含む 2 行の route-nopull を追加する必要があります。

dhcp-option DNS x.x.x.x はスクリプトを許可するためのものです。

script-security 2 スクリプト。

cd %~dp0
echo auth none> 3proxy-openvpn.conf
echo internal 127.0.0.1>> 3proxy-openvpn.conf
echo external %4>> 3proxy-openvpn.conf
echo socks>> 3proxy-openvpn.conf
start /b 3proxy.exe 3proxy-openvpn.conf

up script.

taskkill /f /im 3proxy.exe

このように、この設定を使用してVPNに接続すると、downプロセスが開始され、DNS解決機能を持つローカルホスト限定のSOCKS5プロキシが3proxy.exeポート上で実行されます。

4
4
4
2017-10-25 10:36:54 +0000

GNU/Linux上のネットワーク名前空間を使って行うことができます。

別々の名前空間で OpenVPN と単一のアプリケーションを実行する方法は以下の通りです:

ネットネットワーク名前空間を作成します。

ip netns add myvpn

ネームスペースでループバックインターフェースを開始します (そうしないと多くのことが期待通りに動作しません…)

ip netns exec myvpn ip addr add 127.0.0.1/8 dev lo
ip netns exec myvpn ip link set lo up

OpenVPN (ネームスペース内) が実際のネットワークにアクセスできるように仮想ネットワークインターフェースを作成します。を設定し、ネームスペース内のインターフェイス(vpn1)がネームスペース外のインターフェイス(vpn0)をそのデフォルトゲートウェイとして使用するように構成する

ip link add vpn0 type veth peer name vpn1
ip link set vpn0 up
ip link set vpn1 netns myvpn up
ip addr add 10.200.200.1/24 dev vpn0
ip netns exec myvpn ip addr add 10.200.200.2/24 dev vpn1
ip netns exec myvpn ip route add default via 10.200.200.1 dev vpn1

ネームスペース内のインターフェイスのIPv4ルーティングとNATを有効にする。デフォルトのインターフェイスは無線インターフェイスなので、アウトプットには iptables で wl+ (wlan0, wlp3s0 などと一致する可能性があります) を使用します。 )を使用しています。有線インターフェイスを使用している場合は、おそらく en+ (ブリッジドインターフェイスの場合は br+) を使用するべきでしょう。

iptables -A INPUT \! -i vpn0 -s 10.200.200.0/24 -j DROP
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o wl+ -j MASQUERADE
sysctl -q net.ipv4.ip_forward=1

ネームスペース内で使用するネームサーバを設定する

mkdir -p /etc/netns/myvpn
echo 'nameserver 8.8.8.8' > /etc/netns/myvpn/resolv.conf

ほぼ完了。これで、名前空間

ip netns exec myvpn ping www.google.com

最後に名前空間

ip netns exec myvpn openvpn --config /etc/openvpn/myvpn.conf

最後に名前空間

while ! ip netns exec myvpn ip a show dev tun0 up; do sleep .5; done
ip netns exec myvpn sudo -u $MYSELF popcorntime

tun0 を起動したら、お望みのプログラムを起動する準備ができました!

0x1&

SOURCE article.

また、ソース記事にはあなたのニーズに合わせたラッパースクリプトがあります。

1
1
1
2018-07-12 16:19:29 +0000

linux上でopenVPNを使用している場合は、 VPNShift がきれいに動作します。

0
0
0
2019-09-12 14:47:21 +0000

私はこれは私が出くわしたばかりの遅い返事であることを知っているが、それが誰かに関連している場合に備えて、私はVPNを介して仕事のトラフィックを実行したいが、私の個人的なトラフィックが彼らのプロキシサーバーなどを経由してルーティングされたくないという同じ状況を持っていました。私は当時Win7を使っていましたが、彼らのシステムの多くはWinXPを使っていました。最終的には仕事用に2台目のPCを用意してくれたので、問題は解決しましたが(スイッチボックスを両方のPCに接続して、行ったり来たりすることができました)、それ以前は仕事用のOSとして設定した仮想XPを使っていました…。私は仕事に接続するために、仮想マシンからVPNで接続していたのですが、それによって私の個人的なOSのトラフィックは仕事上の制限やスパイから解放されました。

0
0
0
2018-01-16 01:54:06 +0000

仮想マシンからVPNにアクセスするだけ。

1.VMを作成して、その中から 2. 選択した」アプリケーションをインストールする 3.

「選択された」アプリケーションをホストマシンから使用するのではなく、仮想マシンから「選択された」アプリケーションを使用する。

追伸: もちろん、ホストマシンを経由してVMにネットワークアクセスを与える必要があります。

-1
-1
-1
2011-06-10 22:32:46 +0000

いや、そうじゃない。通常の手段ではない ルーティングはルーティングです。ルーティングはOSIモデルの下の方で動作します。あなたが何をする必要があるかというと、アプリケーションレベル(上位)で認識する必要があるので、あなたが使用しているプログラムなどを検出することができます。通常のルータでは、アプリケーションやポート番号に基づいてルートを設定することはできません。

でも可能だと思います。ルータはポートを見ることができるので、ポート番号でフィルタリングして、異なるルートでトラフィックを送ることができます。でも安くはないし、ビジネス用のルーターだから設定がたくさん必要だし、家庭用にはシンプルなものがいいんじゃないかな?

要約すると、この機能を必要とするのはルーターであり、家庭用の標準的なものは、ビジネス用であってもこれらの機能をサポートしていません。CiscoとSonicwallsの高度なラインだけがこれらの機能を提供しています。