سؤال كيف يمكنني جعل حركة مرور Windows VPN توجيه انتقائي (حسب شبكة الوجهة)؟


أرغب في استخدام Windows VPN ولكن فقط لشبكة معينة ، بحيث لا يتولى اتصال الشبكة بالكامل.

على سبيل المثال ، بدلاً من أن تصبح الشبكة الافتراضية الافتراضية هي المسار الافتراضي ، اجعلها فقط الطريق المؤدي إلى 192.168.123.0/24

(أستطيع أن أرى أن هناك حلاً لهذا لـ Ubuntu في هذا السؤال، ولكن في بعض الأحيان لا بد لي من القيام بذلك على ويندوز أيضا)

هل يمكن أتمتة ذلك حتى عندما أقوم بالاتصال بشبكة VPN؟


129
2017-07-24 09:33


الأصل


هل هناك سؤال متعلق بتصفية مجموعة من المواقع من خلال VPN؟ يبدو أن الإجابات هنا ستعمل فقط في حالة وجود موقع واحد خلف VPN. أنا في الصين وتم حظر ما يقرب من نصف المواقع التي أريد استخدامها ، لذا يجب أن تمر عبر VPN ، ولكن المواقع الأخرى تكون أسرع / أكثر سلاسة دون VPN. - hippietrail
تقدمت وسألت سؤالا جديدا: superuser.com/questions/925947 - hippietrail


الأجوبة:


يمكنك إيقاف الاستيلاء على اتصالك بالكامل عن طريق الذهاب إلى خصائص VPN ، Networking التبويب، Internet Protocol (TCP/IP) الخصائص، Advanced، إلغاء تحديد Use default gateway on remote network. هذا قد أو قد لا يترك الطريق إلى 192.168.123.0/24 اعتمادا على إعداد خادم VPN. إذا لم يحدث ذلك ، فستضطر إلى إضافة المسار يدويًا في كل مرة ، على الرغم من إمكانية وضعه في ملف دفعي.

لإضافة المسار يدويًا ، قم بتشغيل (كمسؤول):

route -p add 192.168.0.12 mask 255.255.255.255 10.100.100.254

هذا المثال سيجعل استمرار (ليس من الضروري لتشغيل الأمر بعد إعادة التشغيل) الطريق إلى IP 192.168.0.12 من خلال بوابة VPN 10.100.100.254.

المزيد عن هذا في http://technet.microsoft.com/en-us/library/bb878117.aspx


129
2017-07-24 11:11



"يجب عليك إضافة الطريق يدويًا" ... كيف؟ كيف شخص ما القوة ، دعنا نقول ، "192.168.10.123" للذهاب من خلال الشبكات الافتراضية الخاصة ، ولكن لا شيء آخر؟ - Timothy Khouri
شخصيا ، وجدت مجرد إيقاف تشغيل خانة الاختيار كان كافيا. لم يكن لدي لإضافة أي طرق. لقد تحققت من كل شيء يسير حيث أتوقعه عبر العديد من المتتبعين. - eidylon
نفس الشيء ، كان مربع الاختيار هذا كل ما هو مطلوب. - Luk
الرجاء التوضيح. ما هي حركة المرور التي يتم توجيهها عبر VPN؟ هل هو مجرد حركة مستهدفة IP لملقم VPN؟ على سبيل المثال ، إذا انتقل اتصال الشبكة الظاهرية الخاصة إلى "my.domain.com" ، فهل يعني ذلك أن جميع الزيارات على العميل إلى "my.domain.com" تمر عبر الشبكة الظاهرية الخاصة ، وكل شيء آخر ينتقل إلى البوابة الافتراضية؟ - Triynko
استخدمت أمر "route route" ، وتحققت من أن مسارات Windows 7 التي تم إنشاؤها كانت خاطئة. لم يكن يرسل حركة المرور الموجهة إلى IP VPN الخاص بي إلى VPN ... بدلاً من ذلك كان يرسله إلى بلدي البوابة المحلية. كان هناك أيضا بعض الإدخالات الدائرية في الجدول. قمت بحذف المسار الذي أنشأه Windows ، ثم أضفنا الطريق الصحيح يدويًا حتى يستخدم إدخال عنوان IP لخادم VPN الخاص بي بوابة VPN وعنوان IP المحلي الخاص بالعميل للواجهة. تم توجيه حركة المرور إلى خادم VPN بنجاح عبر نفق VPN ، ولم تتأثر جميع الزيارات الأخرى كما هو متوقع. يعمل جيدا. - Triynko


لقد استخدمت بنجاح @ TRS-80تقنية لتحقيق ذلك.

أنا أعمل من المنزل وأضطر إلى VPN على شبكة الشركة لبريدي الإلكتروني (أكره بريد الويب !!).

في الوقت نفسه ، يجب أن أكون دائمًا أتصفح المعلومات وأحتاج أيضًا إلى youtube لموسيقاي الخلفية ... الآن أنت بالتأكيد لا تريد بث YouTube من VPN لأن هذا يجعله يبدو وكأنه غناء روبوت !!! :)

كل ما فعلته كان يتبع @ TRS-80:

خصائص VPN ، علامة تبويب الشبكة ، "بروتوكول الإنترنت (TCP / IP)"   الخصائص ، متقدمة ، إلغاء تحديد "استخدام العبّارة الافتراضية على الشبكة البعيدة"

ثم فعلت ذلك:

تحت علامة التبويب DNS ، ضع علامة على "تسجيل عناوين الاتصالات هذه في DNS"

كل يعمل بسلاسة!


18
2018-02-28 16:05





لا يعني منح هذه الإجابة طلبك ، ولكني أستخدم جهاز VM خصيصًا لهذا الغرض. وبهذه الطريقة يتم تقييد الشبكة داخل جهاز VM فقط بواسطة المسارات.

قد تجد بعض الإجابات الأفضل من قبل أشخاص آخرين ولكن على الأقل قد يعطيك هذا شيئًا يعتبره حلاً سهلاً بعد إنشاء VM.


8
2017-07-24 10:09



هذا حل جيد شريطة أن يتمكن جهازك من التعامل معه بشكل جيد. - Enigma


لقد وجدت أنه بحاجة إلى نقطة واجهة مباشرة في الأمر التوجيه. وبدونه ، ستستخدم 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".


7
2017-09-25 05:41



هذا العمل بالنسبة لي كذلك. لمعرفة الواجهة التي تحتاج إليها فقط قم بتنفيذ أمر "route print" وتحقق من الخطوط الأولى التي تعرض قائمة الواجهات المتاحة (ابحث عن VPN الخاص بك وافحص IF الخاص به - سيكون في العمود الأول). - Funbit
هناك مقالة رائعة حول هذا: حلقة الوصل. باستخدام 0.0.0.0 كالبوابة الافتراضية يبدو أن IP يعمل بشكل جيد أيضًا ، لذلك لا يلزم تعديله عند التغيير. سيكون أمرا رائعا أن تدرج في هذا الجواب ، لأن ايمو هو أكثر فائدة من الأعلى. - lpd


إذا كان لديك كل من IPV4 و IPV6 ، عليك إلغاء تحديد "استخدام العبّارة الافتراضية على الشبكة البعيدة" في كلا المكانين ، حتى إذا كنت تستخدم IPV4 فقط


4
2017-07-29 09:03





إذا كنت تستخدم CMAK وقمت بإعداد ملف توجيه يمكن للعميل تنزيله ... ستقوم Windows بتنزيل ملف التوجيه وضبط المسارات بالشكل المناسب. هناك خيارات لإزالة المسار الافتراضي ... وإضافة العديد من الطرق الثابتة & مثل. هذا هو المعروف باسم نفق انقسمت راجع للشغل.

هناك طريقة جيدة للكيفية هنا: http://blogs.technet.com/b/rrasblog/archive/2007/06/11/split-tunnelling-using-cmak.aspx


3
2018-03-28 18:32





أريد أن أضيف حلا للمزيج. يعمل على shell UNIX بنظام Cygwin على Windows 7 أو أحدث ولكن يجب أن يعمل أيضًا مع MSYS2 و Bash-on-Windows [WSL] بعد إنشاء 14986 أو Busybox for Windows). يجب أن يعمل مع امتيازات المسؤول.

يحتوي على بعض الإعدادات ويحاول اكتشاف بعض الأشياء التي لم تقم بتعيينها بشكل صريح. كما أنه يقوم بتعيين رقم الواجهة (IF) بشكل صريح لمواجهة بعض المشكلات التي واجهها بعض المستخدمين (مثلي) مع الحلول الأخرى هنا.

#!/bin/sh

# these three settings are required
adapter_name='VPN Connection'
username=
password=

# This setting here might be important because it's about the target network
# and in some cases it can't be properly determined automatically so this might
# be then worth setting.
# Format is in CIDR notation with the network address and a forward slash and
# the amount of network bits
target_network=192.168.0.0/24

# the IP you will get on the target network, also the VPN gateway on your
# local machine, you normally don't need to set this as the script tries to
# detect it
ip=

# optional setting for metric which normally shouldn't be necessary,
# except in te very rare cases where it should be set to a value lower than all
# other routes that might match the target network
metric=

# experimental setting to delete routes to the target network prior and after
# should normally not be needed unless this script fails and you get error
# messages like 'The route addition failed: The object already exists.'
route_cleanup=F

prog_name=${0##*/}

msg() {
  printf '%s: %s\n' "$prog_name" "$*"
}

die() {
  msg "$*" >&2
  exit 1
}

[ "$adapter_name" ] || die "Adapter name not set!"
[ "$username" ]     || die "Username not set!"
[ "$password" ]     || die "Password not set!"

if [ "$(uname -o)" != 'MS/Windows' ]; then
  id -G | grep -qE '\<0|544\>' || die 'Not running with admin rights.'
fi

msg "Disconnecting any existing connection that might exist."
rasdial.exe "$adapter_name" /d

msg "Connecting"
rasdial.exe "$adapter_name" "$username" "$password"

if [ ! "$ip" ]; then
  msg "Getting IP address on target network."
  ip=$(netsh.exe interface ip show config name="$adapter_name" |
    grep -a 'IP Address' | awk -F'[: ]+' '{print $4}')

  [ "$ip" ] || die 'Could not get IP! Exiting.'

  msg "Detected IP address as '$ip'."
fi

if [ ! "$target_network" ]; then
  msg "Getting target network."
  target_network=$(netsh.exe interface ip show config name="$adapter_name" |
    grep -a 'Subnet Prefix' | awk -F'[: ]+' '{print $4}')

  [ "$target_network" ] || die 'Could not get target network! Exiting.'

  msg "Detected target network as '$target_network'."
fi

msg "Getting VPN interface number."
if=$(ROUTE.EXE print -4 | grep -a "$adapter_name" |
  awk -F. '{gsub(" ", "");print $1}')

[ "$if" ] || die 'Could not get interface number! Exiting.'

msg "Detected VPN interface number as '$if'."

if [ "$route_cleanup" = T ]; then
  msg "Deleting any potentially already existing routes for the target network."
  ROUTE.EXE delete "$target_network"
fi

msg "Adding route for target network."
if [ "$metric" ]; then
  ROUTE.EXE add "$target_network" "$ip" IF "$if" Metric "$metric"
else
  ROUTE.EXE add "$target_network" "$ip" IF "$if"
fi

msg "VPN should be up now."
msg "Press enter to make it stop."
read -r _

if [ "$route_cleanup" = T ]; then
  msg "Deleting route."
  ROUTE.EXE delete "$target_network"
fi

msg "Disconnecting."
rasdial.exe "$adapter_name" /d

# msg "Press enter to exit."
# read -r _

exit 0

تجدر الإشارة أيضًا إلى أنه قد يكون من الضروري تعيين مقياس منخفض يدويًا أو خلافًا لذلك سيطابق المسار الافتراضي قبل حركة المرور المخصصة للشبكة الظاهرية الخاصة. يمكنك القيام بذلك بالانتقال إلى إعداد المهايئ حيث تفتح "… الخصائص" عنصر القائمة لمحول VPN → "الشبكات" علامة التبويب → "إصدار بروتوكول الإنترنت 4 (TCP / IP)" خصائص → "المتقدمة" → وهناك قمت بإلغاء تحديد "مقياس تلقائي" خانة الاختيار (بالإضافة إلى "استخدام العبّارة الافتراضية ..." بالطبع) وتعيين القيمة في "مقياس الواجهة:" الحقل إلى قيمة أقل من المسار الافتراضي (انظر ROUTE.EXE -4 print انتاج).


2
2017-10-26 15:29





استعمال إضافة VpnConnectionRoute cmdlet في ويندوز 8+.

Add-VpnConnectionRoute -ConnectionName 'My VPN Connection' -DestinationPrefix 192.168.123.0/24

2
2018-01-26 07:11



هذا عمل تماما بالنسبة لي على نظام التشغيل Windows 10. - x-ray


قديم قليلا ولكنني وجدت طريقة للقيام بذلك باستخدام جهاز آخر. لدي جهاز كمبيوتر محمول حيث أقوم بإعداد اتصال VPN وهناك هناك إعداد FreeProxy مع Socks5 ..

ثم أقوم بإعداد Firefox على جهاز العميل الخاص بي لاستخدام الخادم الوكيل للكمبيوتر المحمول .. والنتيجة هي أنه إذا كنت أستخدم FireFox أو أي شيء تم إعداده لاستخدام بروكسي Socks5 ، فسوف يستخدم VPN ، وإلا فإنه يستخدم التوجيه القياسي ..


1
2018-04-20 19:46





يمكنك استخدام شيء من هذا القبيل netcatcher - فقط أضف جميع الطرق التي تحتاجها مرة واحدة ونسيانها. سيقوم تلقائيًا بإضافة المسارات وحذفها عند توصيل جلسة عمل VPN أو فصلها. إذا تم الحصول على عنوان IP VPN الخاص بك بشكل ديناميكي (DHCP) سوف يلتقطه netcatcher وتحديث المسارات بالطريقة الصحيحة.


1
2017-08-30 09:23



إذا كان هذا شيء كتبته فأنت بحاجة إلى الكشف عنه anseko.com/about.html نرى التعليمات - Jeff Atwood


من المنتدى الروسي: http://forum.ixbt.com/topic.cgi؟id=14:43549

حفظ كملف (على سبيل المثال: vpn_route.vbs) وبعد الأمر تنفيذ VPN فبن

cscript vpn_route.vbs

vpn_route.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

1
2018-02-18 16:37