回答:
いいえ、そうではありません。まあ通常の手段を使用していません。ルーティングはルーティングです。ルーティングは、OSIモデルの下位で動作します。発生する必要があるのは、アプリケーションレベル(上位)で認識し、使用しているプログラムなどを検出できるようにすることです。通常のルーターでは、アプリケーションまたはポート番号に基づいてルートを構成することはできません。
可能だと思います。ルーターはポートを見ることができるため、ポート番号でフィルタリングして、異なるルートにトラフィックを送信できます。これを行うことができるCiscoルーターを使用して、少し前に何かを読んでいると確信しています。それらは安くはありませんが、多くの設定が必要なビジネスルーターであり、家庭用にシンプルなものが欲しいと思います。
要約すると、この機能を必要とするのはルーターであり、自宅での使用には沼地の標準的なものであり、ビジネスでもこれらの機能をサポートしていません。これらの機能を提供するのは、CiscoおよびSonicwallの高度なラインのみです。
少なくともLinuxでこれを実現することは可能です(そして、BSDとOS Xでも考えています)。あなたはそうすることができます:
上記の手順を実行するためのスクリプトがここにあるか、別のガイドがここにあります。
これは、VPNを介した転送のルーティングに関する詳細なガイドです(所有するVPNサーバーを使用)
Windowsファイアウォールを使用してこれを実現できます(Win 7またはVistaを使用している場合)- これに関するガイドを作成しました
通常どおりVPNに接続します。
ネットワークと共有センターを開きます-タスクバーのインターネット接続アイコンを右クリックして、「ネットワークと共有センターを開く」を選択します(以下を参照)
(少なくとも)「アクティブなネットワークの表示」の下に2つのネットワークが表示されます-VPN接続と「ネットワーク」と呼ばれる1つ-別名ISP接続。VPNが「パブリックネットワーク」であり、ISP接続が「ホームネットワーク」であることを確認してください。いずれかの接続を変更する必要がある場合は、それをクリックすると、オプションウィンドウが表示されます(以下を参照)。
コントロールパネルに移動し、[システムとセキュリティ]をクリックします(以下を参照)。
結果のウィンドウで、[Windowsファイアウォール]をクリックします(以下を参照)。
[Windowsファイアウォール]ウィンドウで、左ペインの[詳細設定]をクリックします(以下を参照)。注:ファイアウォール設定を変更するには、管理者としてログインする必要があります。
セキュリティが強化されたWindowsファイアウォールというタイトルのウィンドウが表示されます。このウィンドウで、[受信の規則]をクリックします(以下を参照)。
右側のペインに、新しいルールのオプションが表示されます。クリックします(以下を参照)。
新しい着信規則ウィザード(表示されるはずです)で、次の手順を実行します。
[プログラム]を選択し、[次へ]をクリックします。
VPN接続を除くすべてのトラフィックをブロックするプログラムを選択し、[次へ]をクリックします。
[接続をブロック]を選択します。
ドメインとプライベートにチェックマークを付けます。Publicにチェックマークが付いていないことを確認してください。
送信規則について手順9を繰り返します。
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
最後に名前空間で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
また、ソース記事にラッパースクリプトがあり、ニーズに合わせて調整できます。
Windowsでこれを実行しました。目的は、発信ネットワークパッケージをVPNのインターフェイスにバインドすることです。人々はこのためにForceBindIPを提案しますが、この答えのおかげで、プロキシを使用するアイデアを思いつきました。この方法の欠点は、アプリでプロキシをサポートする必要があるか、プロキシを使用する必要があることです(こちらとこちらをご覧ください)。利点は、この方法で、FoxyProxyまたは同様のアドオンを使用して、ブラウザーでのVPNの使用を特定のドメインに制限できることです。
SOCKSモードで3proxyを使用し、その外部インターフェイスをVPNのIPにバインドします。OpenVPNはVPN接続に使用されます。
.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の最新リリース)に固執する必要がある場合は、dhcp-option DNS x.x.x.x
代わりにハードコードされたIPを含む2 行を追加する必要があります。
script-security 2
スクリプトを許可します。
up
スクリプト:
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
スクリプト:
taskkill /f /im 3proxy.exe
したがって、この構成を使用してVPNに接続すると、3proxy.exe
プロセスが開始され、DNS解決機能を備えたローカルホスト限定のSOCKS5プロキシが1080
ポートで実行されますlocalhost:1080
。SOCKSプロキシを使用するようにアプリを構成するだけです。
Options error: option 'route' cannot be used in this context ([PUSH-OPTIONS])
していOptions error: option 'redirect-gateway' cannot be used in this context ([PUSH-OPTIONS])
ます。それでもなお、このソリューションは機能します。上下スクリプトのアポストロフィをスキップする場合は、二重バックスラッシュを使用しますc:\\path\\to\\script
仮想マシンを介してVPNにアクセスするだけです。
ホストマシンから使用するのではなく、VMから選択したアプリケーションを使用します。
PSもちろん、ホストマシンを介してVMへのネットワークアクセスを許可する必要があります。
これは私がちょうど出くわした遅れた返信であることがわかっていますが、誰かに関係がある場合は、VPNを介して仕事用トラフィックを実行したいが、自分のトラフィックを彼らにルーティングさせたくないという同じ状況がありましたプロキシサーバーなど。そのため、私は当時Win7を実行していましたが、彼らはまだ多くのシステムでWinXPを実行していました。最終的に彼らは私に問題を解決する仕事のために実行する2番目のPCを与えました(両方のPCにフックされたスイッチボックスが前後にジャンプするだけでした)が、これの前に私は私の仕事OSとして設定した仮想XPを実行しました。上記のVMからVPNに接続して仕事に接続すると、個人のOSトラフィックが仕事の制限やスパイから解放されます。