web-dev-qa-db-ja.com

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

私はVPNにアクセスでき、すべてではなく一部のアプリケーションにのみ使用したいと考えています。

例えば:
VPNに接続する場合、OperaとNewsbinのアプリケーションだけがそのVPN接続を使用したいと思います。 f.eなどの他のすべてのアプリケーションOutlookは、通常のインターネット接続を使用する必要があります(VPNが接続されている/開いている間)。

これは不可能ですが、よくわかりません。だから私の質問:それは実行可能ですか?

34
user18861

少なくともLinux上でこれを達成することは可能です(そして私はBSDとOS Xについても考えています)。あなたはそうすることができます:

  • すべてのVPNトラフィック用のexraユーザーを作成します。
  • VPNを介した1つのデフォルトルートを持つ追加のルーティングテーブルを作成します。
  • 特定のユーザーIDから発信されるすべてのトラフィックに他のルーティングテーブルを使用するようにiptablesでNetfilterを設定します。
  • 自分のユーザーでVPNを使用する必要があるアプリケーションを実行します。たとえば「Sudo」などです。

上記の手順を実行するためのスクリプト はこちら 、または別のガイド はこちら ).

こちらが(あなたが所有しているVPNサーバーを使って)VPN経由で転送をルーティングするための 詳細なガイド です。

33
Freeaqingme

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

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

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

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

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

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

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

  7. セキュリティが強化されたWindowsファイアウォールというタイトルのウィンドウが表示されます。このウィンドウで、[受信の規則]をクリックします(下記参照)。

  8. 右側のペインに、新しいルールのオプションが表示されます。クリックしてください(下記参照)。

  9. New Inbound Rule Wizard(表示されるはず)で、次の手順を実行します。

    • プログラムを選択して次へをクリックします。

    • VPN接続を除くすべてのトラフィックをブロックしたいプログラムを選択し、[次へ]をクリックします。

    • 接続をブロックを選択します。

    • ドメインとプライベートを選択します。 Publicがチェックされていないことを確認してください。

  10. アウトバウンドルールに対して手順9を繰り返します。

14
pramble

あなたがLinuxを使っていて、openVPNを使っているなら、 VPNShift はきれいに動きます。

1
thouliha

仮想マシンを介してVPNにアクセスするだけです。

  1. 次にVMを作成し、次にVMの内側から...
  2. 「選択した」アプリケーションをインストールする
  3. VPNを設定する

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

P.Sもちろん、ホストマシンを介してVMへのネットワークアクセスを許可する必要があります。

0
drowa

あなたは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が実際のネットワークにアクセスできるようにする仮想ネットワークインタフェースを作成し、名前空間外のインタフェース(vpn0)をデフォルトゲートウェイとして使用するように名前空間(vpn1)のインタフェースを設定

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

最後に名前空間でOpenVPNを起動します

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

Tun0が名前空間で起動したら、必要なプログラムを起動する準備が整いました。

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

SOURCE記事。

また、ソース記事には、ニーズに合わせて調整できるラッパースクリプトがあります。

0
PocketSam