Не могу понять, удаленный клиент подключается через VPN к микротику (виртуальная сеть 192.168.88.0/24), все ок, галка использовать основной шлюз в удаленной сети в настройках подключения пользователя снята. За микротиком локальная сеть 192.168.10.0/24, доступ к одному узлу которой клиент должен получить. На внутреннем интерфейсе микротика включен proxy-arp. Соответственно у клиента даем маршрут до этой локальной подсети: route add 192.168.10.0 mask 255.255.255.0 192.168.88.1 -p Доступ к узлу есть, все работает. Стоит клиенту отключиться от VPN, после повторного подключения доступ к удаленному узлу из 10-й сети уже отсутствует. При этом если руками удалить сделанный ранее маршрут и дать его снова при уже поднятом VPN-подключении - доступ появляется. По количеству пакетов в firewall микротика видно, что пока не "передернешь" route на машине удаленного клиента, ни один пакет не проходит. На ходу не могу понять в чем дело?
Уже выяснилось, что это проблема самой системы Windows, решения как такового нет. СМАК под не серверную платформу х64 я не нашел. Соединение должно подниматься автоматически после возможного разрыва автономно, без участия пользователя, поэтому делать повторные route add после следующего поднятия соединения некому.
Планировщик Windows? Например? Проверять доступность узла в 192.168.10.х раз в пять минут и в случае чего делать route?
батники я не люблю, предпочитаю vbs. В этой теме я давал пример запуска route add скриптом вот функция для проверки пинга: Код: Function Ping(sComputer) On Error Resume Next Dim oWMI, cPing, oPing Set oWMI = GetObject("winMgmts:") Set cPing = oWMI.ExecQuery("Select * from Win32_PingStatus Where Address = " & "'" & sComputer & "'") For Each oPing In cPing Ping = CBool(oPing.StatusCode = 0) Next Set oPing = Nothing Set cPing = Nothing Set oWMI = Nothing End Function
Это вы сильны, неплохо!) Если хорошо владеете программированием, поможете доработать оба ваших примера в единое целое? Функцию первоначально устанавливать связь и "перезвона" в случаях обрыва соединения отдать можно системе, а запуском скрипта с определенной периодичностью только проверять доступность узла в удаленной заданной сети. Если пинга нет, значит имел место разрыв соединения с последующим переподключением и нужно выполнить route, предварительно на всякий случай выполнив route delete rNet, наверное. Код: gwAddress = "192.168.88.1" 'адрес шлюза rNet = "192.168.10.0" ' удаленная сеть Dim WshShell Set WshShell = CreateObject("WScript.Shell") 'Проверка пинга Function Ping(sComputer) On Error Resume Next Dim oWMI, cPing, oPing Set oWMI = GetObject("winMgmts:") Set cPing = oWMI.ExecQuery("Select * from Win32_PingStatus Where Address = " & "'" & sComputer & "'") For Each oPing In cPing Ping = CBool(oPing.StatusCode = 0) Next Set oPing = Nothing Set cPing = Nothing Set oWMI = Nothing End Function ' Если пинга нет, то делаем route WshShell.Run "%comspec% /c route add " & rNet & " MASK 255.255.255.0 " & gwAddress, 0, True Set WshShell = Nothing