Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Изменение записи маршрута VPN в Windows 10, UniFi Network
 
Возможно, это скорее вопрос не по UniFi, а по Windows 10. У меня настроен VPN на USG, и в целом он работает нормально. Проблема в конфликте маршрутов между моей домашней сетью и рабочей.

Дома у меня настроены следующие подсети:  
10.0.1.1/24  
10.0.10.1/24  
10.0.11.1/24  
10.0.12.1/24  
10.0.13.1/24  
10.0.14.1/24  <- VPN

На работе офисная локальная сеть работает по схеме 192.168.x.x, но один из дата-центров использует подсеть 10.19.140.1/24. Проблема в том, что при подключении к VPN Windows добавляет следующий маршрут:

Network Destination        Netmask          Gateway       Interface  Metric  
10.0.0.0        255.0.0.0     10.255.255.0        10.0.14.1     26

Очевидно, этот маршрут начинает перенаправлять трафик, предназначенный для рабочего дата-центра, в мою домашнюю сеть через VPN.

Вопрос: откуда берется этот маршрут и как можно изменить его так, чтобы было несколько маршрутов для подсетей, которые реально есть у меня дома? (На самом деле даже изменение маски на 255.255.0.0, скорее всего, решило бы проблему.)

P.S. В параметрах VPN-адаптера отключена опция «Использовать шлюз по умолчанию в удаленной сети».
 
Спасибо модераторам за то, что убрали спам с моего поста 😀
 
Привет, решил добавить свои пять копеек... Я несколько часов пытался решить ту же проблему, что и у тебя. Моя сеть настроена так: VLAN1: 10.28.7.X VLAN2: 10.28.4.X VPN для работы: 10.90.90.X Мой компьютер подключён к VLAN1. Проблема в том, что когда я подключаюсь к работе через VPN, я всё ещё могу попасть в VLAN1, но не в VLAN2. Я пробовал разные варианты — менял DNS-серверы, настраивал split tunnelling, split DNS и так далее. Но, как ты и сказал, проблема в том, что при подключении VPN устанавливается следующий маршрут (посмотреть его можно через команду "route print" в PowerShell): 10.0.0.0 255.0.0.0 10.90.90.109 10.90.90.82 36 То есть все IP, кроме 10.28.7.X, начинающиеся с 10, идут через VPN. Маршрут для 10.28.7.X работал из-за следующего правила: 10.28.7.0 255.255.255.0 On-link 10.28.7.225 306 Я нашёл команду PowerShell, которая удаляет этот проблемный маршрут: route delete 10.0.0.0 После её запуска всё начало работать нормально. Чтобы автоматизировать процесс, я написал небольшой батник с этой командой. Для запуска батника каждый раз после подключения VPN я использую планировщик задач с триггером на пользовательское системное событие — источник события 'rasman', id события '20267'. Ещё нужно задать условие, чтобы задача запускалась только при подключении именно этого VPN. Помогла эта статья, но её событие не срабатывало при подключении VPN: https://www.winhelponline.com/blog/trigger-launch-program-script-connecting-to-specific-network/
 
Просто хотел напомнить по этому поводу. Мне так и не удалось настроить маршрут по умолчанию 10.0.0.0/8 через VPN, поэтому я решил переключить VPN только на сеть 192.168.200.0/24 (мой ОКР просто сошел с ума 😛). Кроме того, я использовал (с изменениями, см. ниже) скрипт из этого поста, чтобы добавить статические маршруты к VPN (вместо того чтобы мутить с DHCPINFORM).

# Варианты уровня шифрования: "NoEncryption", "Optional", "Required", "Maximum"
$vpnEncryptionLevel = "Maximum"

$vpnName = "Remote"
$vpnIpAddr = "127.0.0.1"
$vpnPreSharedKey = "XXXXXXXXXXXXXXXXXXXXXXXXXX"

$vpnDnsSuffix = "localdomain"
$vpnRoutes = @("10.0.1.0/24", "10.0.10.0/24", "10.0.11.0/24", "10.0.12.0/24", "10.0.13.0/24", "10.0.100.0/24")

# Путь к вашему файлу .pbk. Обычно находится в %AppData%
$oldPhoneBook = "C:\Users\<Ваше_имя_пользователя>\AppData\Roaming\Microsoft\Net­work\Connections\Pbk\rasphone.pbk"
$newPhoneBook = "C:\Users\<Ваше_имя_пользователя>\AppData\Roaming\Microsoft\Net­work\Connections\Pbk\rasphone_new.pbk"

# Удаление существующего VPN-подключения
$exist = Get-VpnConnection -Name $vpnName -ErrorAction silentlycontinue
if ($exist -ne $null) {
   Write-Host "Инфо: Удаляем VPN-подключение $vpnName"
   Remove-VpnConnection -Name $vpnName -Force
}

# (Пере)создание VPN-подключения
Write-Host "Инфо: Добавляем VPN-подключение $vpnName"
Add-VpnConnection -TunnelType "L2tp" -AuthenticationMethod MSChapv2 -Force -PassThru `
   -Name "$vpnName" `
   -EncryptionLevel $vpnEncryptionLevel `
   -ServerAddress $vpnIpAddr `
   -L2tpPsk "$vpnPreSharedKey" `
   -RememberCredential `
   -SplitTunneling `
   -DnsSuffix "$vpnDnsSuffix"

# Добавление маршрутов к VPN-подключению
Write-Host "Инфо: Добавляем маршруты к VPN-подключению $vpnName"
foreach ($route in $vpnRoutes) {
   Add-VpnConnectionRoute -ConnectionName $vpnName -DestinationPrefix $route -PassThru
}

# Настройка, чтобы при доступе к DFS-шаре не использовались учетные данные VPN как доменные
if (Test-Path $oldPhoneBook) {
   Get-Content $oldPhoneBook | Foreach-Object { $_.Replace("UseRasCredentials=1","UseRasCredentials=0") } | Set-Content $newPhoneBook
   if (Test-Path $newPhoneBook) {
       Remove-Item $oldPhoneBook -Force
       Rename-Item $newPhoneBook -NewName $oldPhoneBook
   }
}

Не спам...
 
Просто хотел уточнить по этому поводу. Мне так и не удалось настроить маршрут по умолчанию 10.0.0.0/8 через VPN, поэтому я решился и сменил сам VPN на 192.168.200.0/24 (мой ОКР просто взбесился 😛). Кроме того, я использовал (с небольшими правками, см. ниже) скрипт из этого поста, чтобы добавить статические маршруты к VPN (вместо хака с DHCPINFORM).

# Выбор уровня шифрования: "NoEncryption", "Optional", "Required", "Maximum"
$vpnEncryptionLevel = "Maximum"

$vpnName = "Remote"
$vpnIpAddr = "127.0.0.1"
$vpnPreSharedKey =  "XXXXXXXXXXXXXXXXXXXXXXXXXX"

$vpnDnsSuffix = "localdomain"
$vpnRoutes = @("10.0.1.0/24", "10.0.10.0/24", "10.0.11.0/24", "10.0.12.0/24", "10.0.13.0/24", "10.0.100.0/24")

# Путь к вашему .pbk файлу. Обычно находится в %AppData%
$oldPhoneBook = "C:\Users\<Your UserName>\AppData\Roaming\Microsoft\Network\Connections\Pbk\­rasphone.pbk"
$newPhoneBook = "C:\Users\<Your UserName>\AppData\Roaming\Microsoft\Network\Connections\Pbk\­rasphone_new.pbk"

# Удаляем существующее VPN-соединение
$exist = Get-VpnConnection -Name $vpnName -ErrorAction silentlycontinue
if ($exist -ne $null) {
   Write-Host "Info: Удаляю VPN-соединение $vpnName"
   Remove-VpnConnection -Name $vpnName -Force
}

# (Пере)создаём VPN-соединение
Write-Host "Info: Добавляю VPN-соединение $vpnName"
Add-VpnConnection -TunnelType "L2tp" -AuthenticationMethod MSChapv2 -Force -PassThru `
   -Name "$vpnName" `
   -EncryptionLevel $vpnEncryptionLevel `
   -ServerAddress $vpnIpAddr `
   -L2tpPsk "$vpnPreSharedKey" `
   -RememberCredential `
   -SplitTunneling `
   -DnsSuffix "$vpnDnsSuffix"

# Добавляем маршруты к VPN-соединению
Write-Host "Info: Добавляю маршруты к VPN-соединению $vpnName"
foreach ($route in $vpnRoutes) {
   Add-VpnConnectionRoute -ConnectionName $vpnName -DestinationPrefix $route -PassThru
}

# Настраиваем так, чтобы VPN-учётные данные не использовались как доменные при обращении к DFS-шаре
if (Test-Path $oldPhoneBook) {
   Get-Content $oldPhoneBook | Foreach-Object {$_.Replace("UseRasCredentials=1","UseRasCredentials=0")} | Set-Content $newPhoneBook
   if (Test-Path $newPhoneBook) {
       Remove-Item $oldPhoneBook -Force
       Rename-Item $newPhoneBook -NewName $oldPhoneBook
   }
}
 
Просто хочу узнать, как идут дела с этим вопросом. Мне так и не удалось настроить маршрутизацию по умолчанию 10.0.0.0/8 через VPN, поэтому я решился и сменил VPN только на 192.168.200.0/24 (мой ОКР просто сходит с ума 😛). Кроме того, я использовал (немного изменённый, см. ниже) скрипт из этого поста, чтобы прикрепить статические маршруты к VPN (вместо того, чтобы мудрить с DHCPINFORM).

# Выбор уровня шифрования — "NoEncryption", "Optional", "Required", "Maximum"
$vpnEncryptionLevel = "Maximum"

$vpnName = "Remote"
$vpnIpAddr = "127.0.0.1"
$vpnPreSharedKey = "XXXXXXXXXXXXXXXXXXXXXXXXXX"

$vpnDnsSuffix = "localdomain"
$vpnRoutes = @("10.0.1.0/24", "10.0.10.0/24", "10.0.11.0/24", "10.0.12.0/24", "10.0.13.0/24", "10.0.100.0/24")

# Путь к вашему файлу .pbk. Обычно находится в %AppData%
$oldPhoneBook = "C:\Users\<ВашеИмяПользователя>\AppData\Roaming\Microsoft\Netwo­rk\Connections\Pbk\rasphone.pbk"
$newPhoneBook = "C:\Users\<ВашеИмяПользователя>\AppData\Roaming\Microsoft\Netwo­rk\Connections\Pbk\rasphone_new.pbk"

# Удаляем существующее VPN-подключение
$exist = Get-VpnConnection -Name $vpnName -ErrorAction silentlycontinue
if ($exist -ne $null) {
   Write-Host "Info: Удаляю VPN-подключение $vpnName"
   Remove-VpnConnection -Name $vpnName -Force
}

# (Пере)создаём VPN-подключение
Write-Host "Info: Добавляю VPN-подключение $vpnName"
Add-VpnConnection -TunnelType "L2tp" -AuthenticationMethod MSChapv2 -Force -PassThru `
   -Name "$vpnName" `
   -EncryptionLevel $vpnEncryptionLevel `
   -ServerAddress $vpnIpAddr `
   -L2tpPsk "$vpnPreSharedKey" `
   -RememberCredential `
   -SplitTunneling `
   -DnsSuffix "$vpnDnsSuffix"

# Добавляем маршруты к VPN-подключению
Write-Host "Info: Добавляю маршруты к VPN-подключению $vpnName"
foreach ($route in $vpnRoutes) {
   Add-VpnConnectionRoute -ConnectionName $vpnName -DestinationPrefix $route -PassThru
}

# Настраиваем так, чтобы VPN-учётные данные не использовались как доменные при обращении к DFS-шаре
if (Test-Path $oldPhoneBook) {
   Get-Content $oldPhoneBook | Foreach-Object {$_.Replace("UseRasCredentials=1","UseRasCredentials=0")} | Set-Content $newPhoneBook
   if (Test-Path $newPhoneBook) {
       Remove-Item $oldPhoneBook -Force
       Rename-Item $newPhoneBook -NewName $oldPhoneBook
   }
}
 
Окей. Я немного подумал и понял, что совсем запутался. 😀 Допустим, у меня L2TP на шлюзе/подсети 192.168.x.a /24. Когда я делаю route print, вижу это с включённым шлюзом по умолчанию:

IPv4 Route Table  
============================================================­===============  
Active Routes:  
Network Destination        Netmask          Gateway       Interface  Metric  
0.0.0.0          0.0.0.0         On-link      192.168.x.a     36  
192.168.x.a  255.255.255.255         On-link      192.168.x.a    291  
255.255.255.255  255.255.255.255         On-link      192.168.x.a    291  

Без галочки «Default gateway» вижу:

IPv4 Route Table  
============================================================­===============  
Active Routes:  
Network Destination        Netmask          Gateway       Interface  Metric  
192.168.x.0    255.255.255.0     10.255.255.0     192.168.x.a     36  
192.168.x.a  255.255.255.255         On-link      192.168.x.a    291  
255.255.255.255  255.255.255.255         On-link      192.168.x.a    291  

Я подумал, может, это из-за того, что я пользуюсь сетью класса C? Поэтому поменял на твою — 10.0.14.1/24. И точно, вижу точно такую же запись в таблице.

10.0.0.0       255.0.0.0     10.255.255.0       10.0.14.1      36  

Так что я не совсем понимаю, как это изменить, но похоже, что это связано с тем, что это сеть класса A. Если ты знаешь, как передать маршруты через dhcpinform, я бы посоветовал сменить VPN-сеть на что-то из диапазона класса B или C и использовать dhcpinform для передачи нужных маршрутов.
 
Я наткнулся на этот пост https://community.ui.com/questions/9550f710-72af-42a8-b6d0-b81e7665de1f и (с незначительными изменениями в скрипте) он способен ответить на DHCPINFORM с нужными маршрутами. Проблема в том, что маршрут по умолчанию:  
Network Destination        Netmask          Gateway       Interface  Metric  
        10.0.0.0        255.0.0.0     10.255.255.0        10.0.14.1     26  
всё равно появляется. Так что, если я не разберусь, откуда он берётся, скрипт проблему не решит.
 
Пытаюсь сделать захват пакетов и вижу, что мой Windows-клиент отправляет DHCPINFORM запрос по VPN, но ответа так и не получаю. Не уверен, либо ответ не отправляется, либо я что-то неправильно ловлю и он ускользает от меня. Предполагаю второе, потому что если в настройках VPN-адаптера Windows поставить «Отключить добавление маршрутов на основе класса», то маршрут не добавляется.
 
Спасибо за предложение, @matt_L. Я думал о том, чтобы вручную добавить маршруты, но если сделать их постоянными, это повлияет на маршрутизацию при прямом подключении к сети, а не через VPN. Я видел примеры использования batch-файла для подключения к VPN с последующим добавлением маршрута, но мне это тоже кажется не очень аккуратно. Лучший вариант — чтобы USG рекламировал правильные маршруты, но я не вижу, где это регулируется. Если заглянуть в /opt/vyatta/etc/dhcpd.conf, там нет определения VPN-сети, так что полагаю, DHCP на VPN настраивается и обрабатывается отдельно.
 
Я делаю примерно то же самое, когда подключаюсь к VPN в сети с одинаковой схемой IP. Для меня — из Windows CMD:  
— Route Print -> определяю номер интерфейса  
— Route Add 192.168.xx.xx Mask 255.255.255.255 10.0.10.1 IF номер  

Так я перенаправляю нужный трафик к конкретным IP-адресам через VPN-туннель.  
В вашем случае, возможно, можно либо изменить метрику существующего маршрута, либо добавить новый. Например:  
Route Add 10.19.140.0 Mask 255.255.255.0 YourGateway IF номер
 
После дополнительных исследований похоже, что этот маршрут приходит из DHCP опции 249 (или 121). Теперь вопрос в том, где на USG эта опция настроена? Я вижу, что могу настраивать DHCP опции в контроллере в разделе Services -> DHCP -> DHCP Options, но кажется, что они применяются ко всем подключениям, тогда как, как я понимаю, опция для VPN-подключения применяется только к конкретному интерфейсу.
Страницы: 1
Читают тему (гостей: 1)