2009-07-24 09:33:51 +0000 2009-07-24 09:33:51 +0000
143
143

Windows VPNのルートを選択的トラフィック(宛先ネットワーク別)にするにはどうしたらいいでしょうか

Windows VPNを使いたいのですが、特定のネットワークだけを対象にして、ネットワーク全体の接続を引き継がないようにしたいのですが

例えば… VPNがデフォルトルートになる代わりに、192.168.123.0/24のルートだけにする

(私はUbuntu この質問ではのためのソリューションがあることを見ることができますが、時々私はあまりにもWindows上でこれをしなければならないことがあります)

VPNに接続するたびにそれがこれを行うように、これを自動化することはできますか?

回答 (13)

143
143
143
2009-07-24 11:11:52 +0000

VPNのプロパティ、Networkingタブ、Internet Protocol (TCP/IP)プロパティ、AdvancedUse default gateway on remote networkのチェックを外すことで、接続全体を引き継ぐことをオフにすることができます。これにより、VPNサーバの設定によっては、192.168.123.0/24へのルートが残る場合と残らない場合があります。

手動でルートを追加するには、(管理者として):

route -p add 192.168.0.12 mask 255.255.255.255 10.100.100.254

この例では、VPNゲートウェイ192.168.0.12を経由してIP10.100.100.254へのルートを永続的に(再起動後にコマンドを実行する必要はありません)作成します。

20
20
20
2011-02-28 16:05:03 +0000

私は@TRS-80さんのテクニックを使って、これを達成することに成功しました。

私は自宅で仕事をしていますが、メールのために会社のネットワークにVPN接続しなければなりません。今、あなたは間違いなく、それはそれが歌うロボットのように聞こえるようになりますので、VPNからyoutubeをストリーミングすることを望んでいません! 私は@TRS-80に従っていました:

VPNのプロパティ、ネットワーキングタブ、 “インターネットプロトコル(TCP/IP)"プロパティ、高度な、チェックを外して "リモートネットワーク上のデフォルトゲートウェイを使用して”

してから私自身をやった:

DNSタブの下で、チェックを入れて “DNSにこの接続アドレスを登録”

すべての作品はシームレスに動作します!

9
9
9
2009-07-24 10:09:15 +0000

この回答はあなたの要求を反映したものではありませんが、私はこの目的のために特別にVMを使用しています。この方法では、VM内のネットワークだけがルートによって制限されます。

他の人のより良い答えが見つかるかもしれませんが、少なくともこれはVMを作成した後の簡単な解決策なので、検討すべきことがあるかもしれません。

7
7
7
2013-09-25 05:41:53 +0000

私はそれがルートコマンドで直接インターフェイスを指定する必要があることを発見しました。これがないと、WindowsはVPNではなく、メインのネットワークカードのインターフェースを使うことになります。私の場合は、

route -p add 192.168.10.187 mask 255.255.255.255 0.0.0.0 IF 26
:: ^destination ^mask ^gateway ^interface

のように見えますが、「IF 26」に注意してください。

6
6
6
2018-01-26 07:11:32 +0000

Windows 8+ で Add-VpnConnectionRoute cmdlet を使用します。

4
4
4
2011-07-29 09:03:55 +0000

IPV4 と IPV6 の両方を使用している場合は、IPV4 のみを使用している場合でも、両方の場所で “リモートネットワークでデフォルトのゲートウェイを使用する” のチェックを外す必要があります。

3
3
3
2011-03-28 18:32:39 +0000

CMAKを使用して、クライアントがダウンロードできるルーティングファイルを設定すると…windowsはルーティングファイルをダウンロードして、適切なルートを調整します。デフォルトのルートを削除したり、静的なルートを追加したりするオプションがあります。これはスプリットトンネルとして知られています。 http://blogs.technet.com/b/rrasblog/archive/2007/06/11/split-tunnelling-using-cmak.aspx

2
2
2
2015-10-26 15:29:33 +0000

私のソリューションを追加したいと思います。Windows 7 以降の Cygwin を搭載した UNIX シェル上で動作しますが、MSYS2、ビルド 14986 以降の Bash-on-Windows [WSL]、または Windows 用の Busybox でも動作するはずです)。管理者権限で実行する必要があります。

いくつかの設定があり、明示的に設定していないものを検出しようとします。それはまた、(私のような)いくつかのユーザーが(ここでの他のソリューションで持っていた)いくつかの問題に対抗するために、明示的にインターフェイス番号(IF)を設定します。これを行うには、アダプタの設定で VPN アダプタの “… Properties” メニュー項目を開きます → “ネットワーク” タブ → “インターネットプロトコルバージョン 4 (TCP/IP)” Properties → “詳細設定” → そこで “自動メトリック” チェックボックスのチェックを外し (もちろん “デフォルトゲートウェイを使用 ….” に加えて)、“Interface metric:” フィールドの値をデフォルトルートより低い値に設定します (ROUTE.EXE -4 print の出力を参照してください)。

1
1
1
2010-04-20 19:46:26 +0000

少し古いですが、別のマシンを使ってこれを行う方法を見つけました。VPN接続を設定したラップトップを持っていて、そこにFreeProxyとSocks5を設定しています…

それからラップトップのプロキシサーバを使うためにクライアントマシンにFirefoxを設定しました。

1
1
1
2011-08-30 09:23:19 +0000

netcatcher ](http://www.anseko.com/netcatcherpro.html)のようなものを使用することができます - 必要なすべてのルートを一度に追加して、それを忘れます。VPNセッションを接続したり切断したりすると、自動的にルートを追加したり削除したりします。VPN の IP アドレスが動的に取得されている場合 (DHCP)、netcatcher はそれをキャッチして正しい方法でルートを更新します。

1
1
1
2013-02-18 16:37:51 +0000

ロシアのフォーラムから。 http://forum.ixbt.com/topic.cgi?id=14:43549

ファイルとして保存してください (ex: vpn_route.vbs) and after vpn connected execute command “` cscript vpnroute.vbs ”`

strComputer = "."
strMACAddress = "MAC of VPN interface here (example 00:45:55:00:00:00)"
strTarget = "route target here (example 192.168.123.0)"
strMask = "mask here (example 255.255.255.0)"
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery _
    ("Select * From Win32_NetworkAdapterConfiguration Where MACAddress = '" & strMACAddress & "'")
For Each objItem in colItems
strIP = objItem.IPAddress(0)
Next
Set objShell = CreateObject("WScript.Shell")
objShell.Run "route add " & strTarget & " mask " & strMask & " " & strIP
``` vpn接続された後 実行コマンド 

&001
1
1
1
2019-08-07 13:42:20 +0000

ネットワークについてあまり知らない私のような初心者のための「短い」ガイド。ここではあまり新しいものではありませんが、以前の回答や他の関連するスレッドで説明されているすべての良いオプションの要約。全体の手順は、3つの基本的な手順で構成されています:

*1) すべてのトラフィックをVPNを経由しないようにします。このチェックボックスは、IPv4とIPv6の両方のチェックを外す必要があります。通常は、VPN接続のためにIPv6プロトコルを完全に無効にしています。

(!) このチェックを外すだけで通常の作業ができる場合もありますが、私の経験上、VPN接続が確立した後に必要な経路(VPN経由で必要なトラフィックを誘導する経路)が自動的に追加されることがあります。このようなルールがどこでどのように設定されているのか正確にはわかりませんが、そのようなシナリオは存在します。) このためには、ルートを定義する必要があります。2.1) VPN ゲートウェイを経由して恒久的なルートを追加する:

Use default gateway on remote network または route -p add a.b.c.d/<CIDR> w.x.y.z

ここで、「VPN ゲートウェイ」=「VPN ネットワーク上のあなたの IP」=「route -p add a.b.c.d mask e.f.g.h w.x.y.z」、ターゲットアドレス/ネットワーク=「w.x.y.z」とする。a.b.c.dを実行してVPN接続名を探せばw.x.y.zを見つけることができますし、PowerShellを使っている場合はipconfigを実行することでコンパクトな出力を得ることができます(各PPP接続を見つけた後に5行ずつ出力されます)。

2.2) VPN ネットワークインターフェースを介して恒久的なルートを追加する:

ipconfig | grep -A5 PPP

ここで、route -p add a.b.c.d/<CIDR> 0.0.0.0 IF <interface number> はターゲットのアドレス/ネットワーク、a.b.c.d は VPN 接続の識別子です。この ID は interface number を実行することで見つけることができます。

長所: VPN アドレス (netstat -rn) が変わっても何も変更する必要がありません。 3) PowerShellコマンドレットを使う:

netstat -rn | grep -A10 'Interface List'

長所: VPN接続が確立される度に必要なルートが追加され、切断される度に削除される

短所: w.x.y.z cmdletがないので、これらのルールを管理するのが大変かもしれません。) ルーティングが期待通りに動作することを確認してください!**

永続的なルートを追加した場合は、Add-VpnConnectionRoute -ConnectionName '<VPN connection name>' -DestinationPrefix a.b.c.d/<CIDR>を実行して確認してください。

最後に、VPN経由でアクセスされるはずのIPアドレスと、VPNなしで動作するはずのIPアドレスの両方に対して、いくつかのGet-VpnConnectionRoutesコマンドを実行してください。

1
1
1
2010-10-11 21:31:43 +0000

これは、追加のプログラム、バッチファイル、またはコマンドラインを使用せずにWindowsで行うことはできません。別の方法としては、VPN を実行できる仮想マシン (または物理マシン) を手に入れることができます。あるプログラムからのトラフィックを VPN インタフェースにルーティングし、他のすべてのプログラムをデフォルトの NIC インタフェースにルーティングすることがどれほど難しいことなのでしょうか? そのために仮想マシン全体をセットアップする必要があるのでしょうか? そして、Linuxではそれは可能ですが、その解決策もあまりエレガントではありません。私は同じテーマのスレッドの数十に出くわしました。誰かがこの馬鹿げたことに気づいて何かしてくれることを願っています。(Windows 8 で! )

この解決策は 無属性バッチファイル からのものです。

Instructions for Windows 7

このスクリプトは再起動するまで、VPN に接続してトラフィックをルーティングします。ネットワークと共有センターを開く 2. VPN接続のプロパティを開きます 3. 007]タブをクリックします。IPv4 と 6 の両方の場合: 1. route add をクリックしてください。route -p add をクリックします。5.前の手順で開いたものをすべて閉じます。 6.以下のバッチスクリプトを編集して保存します。管理者として実行する

スクリプト内の以下を置き換える必要があります:

  • Networking を作成した VPN 接続の名前に置き換える
  • Properties を VPN のユーザー名に置き換える
  • Advanced を VPN のパスワードに置き換える
  • Use default gateway[...] を VPN 経由でルーティングしたい IP アドレスに置き換える (より多くのアドレスをルーティングしたい場合は、ターゲットが使用される 3 行を単純に複製してください)

_注意してください。 パスワードをファイルに保存したくない場合は、<VPN><USER>に置き換えて、スクリプトの1行目の後に次のように追加します。

スクリプト

@echo off
@echo make sure to be disconnected!
rasdial <VPN> /d
@echo start to connect to vpn
rasdial <VPN> <USER> <PASS>
netsh interface ip show config name="<VPN>" | findstr "IP" > ip.dat
set /p ip= < ip.dat
del ip.dat
set ip=%ip:~-12%
@echo VPN IP is %ip%

set target=<TARGET>
@echo Add route for %target%
route add %target% mask 255.255.255.255 %ip%

timeout /T 3 > nul