"Короткий" посібник для нобіїв, як я, які мало знають про мережі. Тут не багато нового, але резюме всіх хороших варіантів, описаних у попередніх відповідях та в інших пов'язаних темах. Вся процедура складається з 3 основних етапів:
1) Зробіть, щоб увесь трафік НЕ проходив через VPN. Для цього потрібно зняти Use default gateway on remote network
прапорець у налаштуваннях VPN. Зніміть цей прапорець для IPv4 та IPv6. Зазвичай я просто відключаю протокол IPv6 повністю для підключення VPN.
(!) Можливо (якщо іноді) зняти прапорець, що прапорець буде достатньо для нормальної роботи - на мій досвід, необхідні маршрути (які спрямовуватимуть необхідний трафік через VPN) можуть бути додані автоматично після встановлення з'єднання VPN. Я точно не знаю, де і як налаштовані ці правила, але такий сценарій існує - ймовірно, це певна магія, яку роблять адміністратори мережі VPN.
2) Здійснюйте лише необхідний трафік через VPN. Для цього потрібно визначити маршрути. Тут у вас є 3 варіанти:
2.1) Додати постійний маршрут через шлюз VPN:
route -p add a.b.c.d/<CIDR> w.x.y.z
або route -p add a.b.c.d mask e.f.g.h w.x.y.z
де 'шлюз VPN' = 'ваш IP в мережі VPN' = w.x.y.z
і цільова адреса / мережа = a.b.c.d
. Ви можете знайти w.x.y.z
, виконавши ipconfig
і шукаючи ім'я свого VPN-з'єднання, або, якщо ви використовуєте PowerShell, ви можете отримати компактний висновок шляхом виконання ipconfig | grep -A5 PPP
(який виведе 5 рядків після знаходження кожного з'єднання PPP).
Мінуси: вам доведеться заново створити маршрути, якщо ваш VPN IP зміниться.
2.2) Додати постійний маршрут через мережевий інтерфейс VPN:
route -p add a.b.c.d/<CIDR> 0.0.0.0 IF <interface number>
де a.b.c.d
є цільова адреса / мережа та interface number
є ідентифікатором вашого VPN-з'єднання. Цей ідентифікатор може бути знайдений шляхом виконання netstat -rn
, або, для більш компактного виведення, netstat -rn | grep -A10 'Interface List'
.
Плюси: не потрібно нічого змінювати, якщо ваша VPN-адреса ( w.x.y.z
) зміниться.
Мінуси: потрібно видалити маршрути з новим ідентифікатором, якщо ви видалите VPN-з'єднання.
2.3) Використовуйте командлет PowerShell:
Add-VpnConnectionRoute -ConnectionName '<VPN connection name>' -DestinationPrefix a.b.c.d/<CIDR>
Плюси: необхідні маршрути додаються щоразу, коли VPN-з'єднання встановлюється та видаляється кожного разу при відключенні.
Мінуси: немає Get-VpnConnectionRoutes
командлету, тому керувати цими правилами може бути важко.
3) Перевірте та переконайтеся, що роботи маршрутизації, як очікувалося!
Якщо ви додали стійкі маршрути, ви можете перевірити їх, виконавши netstat -rn | grep -A10 'Persistent Routes'
.
І, нарешті, запустіть кілька tracert
команд як проти IP-адрес, до яких слід отримати доступ через VPN, так і проти тих, які повинні працювати без VPN.