L2TP/IPSEC подключение и маршруты

Рассмотрим подключение на примере ОС Windows.

А именно какие маршруты добавляются и как с этим жить.

Итак в свойствах подключения есть:

 

В случае если у нас установлен флаг - "Использовать основной шлюз в удаленной сети" то все что не попадает в нашу локальную подсеть будет отправлено удаленному шлюзу - а это значит что и доступ в интернет должен быть на той стороне настроен для удаленных клиентов, и мы так же теряем доступ к собственным ресурсам через наш локальный шлюз. Иногда это даже хорошо но чаще нет.
Флаг же "Отключить добавление маршрутов на основе класса" наоборот если снят то происходит следующее:
Если пул из которого выдаются адреса удаленным клиентам например 10.100.101.0/25
То в нашу таблицу маршрутизации будет добавлен маршрут 10.0.0.0/8 через удаленный шлюз потому что это сеть класса A и если все удаленные сети тоже класса А (ну они конечно могут быть на основе масок) то все они будут доступны и без галки - "Использовать основной шлюз в удаленной сети" а вот если пул например 192.168.101.0/24 то беда, потому что это сеть класса C ну и добавиться маршрут на сеть 192.168.101.0/24.
 
Хуже всего если вы не хотите чтоб весь трафик клиентов шел через вас включая интернет трафик, у вас на стороне L2TP/IPSEC сервера есть сети как 10.XX.XX.XX так и 192.XX.XX.XX
Тогда придется добавлять маршруты вручную на ПК удаленного пользователя.
Например таким PowerShell скриптом:

#Add list of the networks which accessible via interface, divide by commas
$remnets2 = @("192.168.151.0/24","192.168.152.0/24")

#Specify adapter name
$adaptername = "UserGateTEST"

#Set next parameter to 1 if You want to add route with next hop
$setroutewithnexthop = 0

#PolicyStore ActiveStore or PersistentStore
$PolisyStore = "PersistentStore"

#----------------------------------------------------------------------------------------------------------------------------------------------
$defaultGatewayNadp = ""

#find adapter
$ifindex = Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.InterfaceAlias -match $adaptername } | Select-Object -ExpandProperty ifIndex
$ifindexrcount = $ifindex.count
if($ifindexrcount -gt 0){
    $defaultGatewayNadp = (Get-NetIPConfiguration -InterfaceIndex 15).ipv4defaultgateway.NextHop
    Write-Output "Connection found"
    #if network list is not empty
    if($remnets2.count -gt 0){
        #find and delete current route
        foreach($remnet in $remnets2){
            [Array]$rarr = Get-NetRoute | Where-Object {$_.DestinationPrefix -like $remnet}
            foreach($delnet in $rarr){
                Write-Output $delnet
                Remove-NetRoute -DestinationPrefix $remnet -Confirm:$False
            }
        }
       
        #add route
        foreach($remnet in $remnets2){
            if($setroutewithnexthop -gt 0){
                Write-Output "Add route with NextHop"
                if($PolisyStore -eq "PersistentStore"){
                    New-NetRoute -DestinationPrefix $remnet -NextHop $defaultGatewayNadp -InterfaceIndex $ifindex
                }else{
                    New-NetRoute -PolicyStore $PolisyStore -DestinationPrefix $remnet -NextHop $defaultGatewayNadp -InterfaceIndex $ifindex
                }
               
            }else{
                Write-Output "Add route without NextHop"
                if($PolisyStore -eq "PersistentStore"){
                    New-NetRoute -DestinationPrefix $remnet -InterfaceIndex $ifindex
                }else{
                    New-NetRoute -PolicyStore $PolisyStore -DestinationPrefix $remnet -InterfaceIndex $ifindex
                }
            }
        }
    }
}else{
    Write-Output "Connection $adaptername not found"
}

Тут надо отметить несколько параметров:

$adaptername - Это имя вашего VPN соединения

$remnets2 - список сетей на которые нужно создать маршруты - указываются списком через запятую как в примере выше

$PolisyStore - может принимать два значения - ActiveStore или PersistentStore

в первом случае маршрут не сохраняется даже после реконнекта - это хорошо если у вас есть такие же сети где-то еще.

Во втором случае маршрут остается даже после перезагрузки.

 

Комментарии

Популярные сообщения