VPNにアクセスしているのですが、全てではなく一部の用途にのみ使用したいのですが、どうすればよいでしょうか?
例えば VPNに接続している場合、OperaとNewsbinだけにVPN接続を使用させたい。他のすべてのアプリケーションは、f.e. Outlookのように、通常のインターネット接続を使用する必要があります(VPNが接続されている間/開いている間)
残念ながらこれは不可能ですが、私は完全に確信がありません。したがって、私の質問:それは可能ですか?
60 None 2011-06-07
いや、そうじゃない。普通の方法では無理だルーティングはルーティングです。ルーティングはOSIモデルの下の方で動作します。あなたが何をする必要があるかというと、アプリケーションレベル(上位)で認識する必要があるので、あなたが使用しているプログラムなどを検出することができます。通常のルータでは、アプリケーションやポート番号に基づいてルートを設定することはできません
私はそれが可能だと思います。ルーターはポートを見ることができるので、ポート番号でフィルタリングして、トラフィックを別のルートに送ることができます。彼らは安いものではないし、彼らは多くの設定を必要とするビジネス ルーターであり、私はあなたが何か家庭用のシンプルなものをしたいと推測しています
要約すると、それはこの機能と家庭用のあなたの泥沼の標準的なものを必要とするであろうルータであっても、ビジネスは、これらの機能をサポートしていません。Cisco と Sonicwalls の高度なラインだけがこれらの機能を提供します
-4 Mucker 2011-06-10
これは、少なくともLinuxでは可能です(BSDやOS Xでも可能だと思います)。以下のようにすることができます
- すべてのVPNトラフィックのためのexraユーザーを作成します
- VPN経由のデフォルトルートを1つ追加して、余分なルーティングテーブルを作成します
- 特定のユーザー ID から発信されるすべてのトラフィックに対して、他のルーティングテーブルを使用するように Iptables を介して Netfilter を構成します
- VPN を使用するアプリケーションを自分のユーザの下で実行します。例えば’sudo’で
上記の手順を実行するためのスクリプトがあります こちら または別のガイドがあります こちら
ここでは、VPN経由で送信をルーティングするための詳細なガイドを紹介します(自前のVPNサーバを使用します)
45 Freeaqingme 2013-09-12
あなたはこれを達成するためにWindowsファイアウォールを使用することができます(あなたがWin 7またはVistaを使用している場合) – 私はこの上でガイドを書いた
通常通りにVPNに接続してください
ネットワークと共有センターを開く – タスクバーのインターネット接続アイコンを右クリックし、「ネットワークと共有センターを開く」を選択します(下記参照)
アクティブなネットワークの表示」の下には、(少なくとも)2つのネットワークが表示されているはずです – あなたのVPN接続と、「ネットワーク」(別名ISP接続)と呼ばれるものです。VPNが「パブリックネットワーク」であり、ISP接続が「ホームネットワーク」であることを確認してください。どちらかの接続を変更する必要がある場合は、それをクリックすると、オプションウィンドウが表示されます(下記参照)
コントロールパネルに移動し、[システムとセキュリティ] をクリックします(下記参照)
表示されたウィンドウで、「Windows ファイアウォール」をクリックします(以下を参照)
Windows ファイアウォール] ウィンドウで、左側のペインの [詳細設定] をクリックします (下図を参照)。 注: ファイアウォールの設定を変更するには、管理者としてログインする必要があります
Windows ファイアウォールと高度なセキュリティ」というタイトルのウィンドウが表示されます。このウィンドウで、[受信ルール] をクリックします(以下を参照)
右側のペインに、新しいルールのオプションが表示されます。それをクリックします(下図参照)
新しい受信ルールウィザード(表示されるはずです)で、次の操作を行います
プログラム] を選択し、[次へ] をクリックします
VPN接続以外のすべてのトラフィックをブロックするプログラムを選択し、[次へ] をクリックします
接続をブロックを選択します
ドメインとプライベートにチェックを入れます。Publicがチェックされていないことを確認してください
アウトバウンドルールについては、ステップ9を繰り返します
20 pramble 2011-07-07
これを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 を保存し、そうしないと route-nopull
でプッシュされたルートと一緒に削除されます。このオプションは OpenVPN 2.4 からサポートされていますが、もし OpenVPN 2.3 (Windows XP の最新リリース) を使用する必要がある場合は、代わりにハードコードされた IP を持つ dhcp-option DNS x.x.x.x
行を 2 行追加しなければなりません
script-security 2
でスクリプトを許可する
up
script:
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
down
script:
taskkill /f /im 3proxy.exe
このように、この設定でVPNに接続すると、3proxy.exe
の処理が開始され、1080
ポートでDNS解決機能を持つローカルホスト限定のSOCKS5プロキシが動作します
7 user 2017-05-29
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 などと一致する可能性があります) を使用します
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
また、ソース記事の中には、あなたのニーズに合わせたラッパースクリプトがあります
5 PocketSam 2017-10-25
仮想マシン経由でVPNにアクセスするだけ
- VMを作成して、VMの中から
- 選択した」アプリケーションをインストールします
- VPNの設定
ホストマシンから使用するのではなく、VMから「選択された」アプリケーションを使用します
追伸:ホストマシンを経由してVMにネットワークアクセスできるようにする必要があります
2 drowa 2018-01-16
linux上でopenVPNを使用している場合、VPNShiftが見事に動作します
1 thouliha 2018-07-12
私はこれは私が出くわしたばかりの遅い返事であることを知っているが、それが誰かに関連している場合に備えて、私はVPNを介して仕事のトラフィックを実行したいが、私の個人的なトラフィックが彼らのプロキシサーバーなどを経由してルーティングされたくないという同じ状況を持っていました。私は当時Win7を使っていましたが、彼らのシステムの多くはWinXPを使っていました。最終的には仕事用に2台目のPCを用意してくれたので、問題は解決しましたが(スイッチボックスを両方のPCに接続して、行ったり来たりすることができました)、それ以前は仕事用のOSとして設定した仮想XPを使っていました…。私は仕事に接続するために、仮想マシンからVPNで接続していたのですが、それによって私の個人的なOSのトラフィックは仕事上の制限やスパイから解放されました
0 Warren Colvett 2019-09-12