Я пытаюсь настроить VPN в стиле «road warrior», чтобы иметь доступ к устройствам дома в локальной сети (файловый шаринг, удалённый рабочий стол и т.д.), когда я вне дома, но при этом не открывать эти сервисы в большой и страшный Интернет. После настройки и попытки тестирования я могу успешно подключаться с iPhone 6s, Android-планшета с версией 7.0 и настольного компьютера с Windows 7 (на нём нет Wi-Fi, поэтому я не могу использовать его как точку доступа) по локальной сети. Однако при попытке подключиться извне получается странная ситуация: iPhone 6s по сотовой сети — неудача Android 7.0 планшет, подключённый по Wi-Fi к личной точке доступа iPhone 6s (через сотовую сеть) — успешно Убогий китайский ноутбук на Windows 10 — неудача Я добавил расширенное логирование debug/ipsec/l2tp и вижу много сообщений (в том числе попытки подключения и этапы переговоров), но ничего явно указывающего на ошибку или очевидный способ исправления. Моё предположение — дело в шифровании или аутентификации, но опций шифрования и аутентификации много и разбросаны по разным разделам (IP/IPSec/Peers, PPP/L2TPServer/Authentication, PPP/Profiles/Default), так что мне сложно наугад что-то менять и тестировать. В моей конфигурации используется новый RB951G-2HnD с RouterOS версии 6.34.6 (bugfix). Он подключён напрямую к Интернету, WAN-IP — публичный. В сети нет других шлюзов, коммутаторов и прочего. Для начальной настройки я использовал только «Quick Set» (настроил беспроводную сеть, включил UPnP, поменял локальные IP). Потом я следовал этим инструкциям по настройке L2TP: http://wiki.mikrotik.com/wiki/Manual:Interface/L2TP#L2TP.2FIpSec_setup Два правила firewall, созданные в конце инструкции, я переместил на позиции 3 и 4 выше правила «drop all from WAN». IP роутера — *.1, DHCP для LAN — диапазон *.100-199, в PPP-профиле локальный адрес *.200, удалённый адрес берется из пула *.210-.244. Все эти параметры работают нормально, если подключаться к VPN из локалки. В iOS-конфигурации выбран тип L2TP с правильным логином/паролем/общим ключом. Как я уже говорил, на андроид-планшете при подключении через точку доступа iPhone всё работает. Если кто-то может помочь или подсказать направление для решения — буду очень признателен. Я прочитал всё, что смог найти в Wiki и Google, но так и не наткнулся на подсказки, приближающие к решению. Я вполне открыт к использованию другой конфигурации, если она окажется более подходящей. Изначально я успешно настроил PPTP через простой мастер в Quick Set, но PPTP устарел и перестаёт поддерживаться на iOS/macOS. Мне нужно, чтобы всё работало со всеми основными устройствами (Windows 7+, Android, iOS, macOS). Идеально — «из коробки», но я не против использовать стороннее приложение. Мой сценарий использования довольно простой, поэтому хочется чего-то простого и безофигенно небезопасного.
Приведённый выше пример предназначен для сервера с публичным IP и клиентов с приватными IP, находящимися за одним или двумя NAT. Адрес aa.bb.cc.dd — это публичный IP сервера.
Можно указать 0.0.0.0/0 в публичном IP, но я проверял и пингануть ничего, кроме интерфейса моей LAN на Mikrotik, не получается при подключении через L2TP/IPsec.
konrad@MacBook-Pro [~/] ping 10.5.0.120 PING 10.5.0.120 (10.5.0.120): 56 data bytes 64 bytes from 10.5.0.120: icmp_seq=0 ttl=64 time=23.296 ms
— Статистика ping 10.5.0.120 — 1 пакет отправлен, 1 пакет получен, 0.0% потерь время туда-обратно min/avg/max/stddev = 23.296/23.296/23.296/0.000 ms
konrad@MacBook-Pro [~/] ping 10.5.0.149 PING 10.5.0.149 (10.5.0.149): 56 data bytes Таймаут запроса для icmp_seq 0 Таймаут запроса для icmp_seq 1
Это совсем другой вопрос! Нужно убедиться, что маршрутизация настроена правильно везде. Помести VPN в отдельную подсеть, проверь, чтобы правила переадресации на роутере разрешали такой трафик, и убедись, что системы, к которым хочешь подключиться, знают: чтобы попасть в эту сеть, нужно идти через твой роутер (это можно настроить через маршрут по умолчанию, но такая схема сработает только если подсеть VPN не пересекается с их локальной подсетью). Есть разные ухищрения, чтобы обойти это, но я бы не советовал. Лучше сразу сделай нормальный план сети.
Я уверен, что составил хороший план сети. Я бы не просил о помощи, если бы ничего не делал. Я использовал туториалы, читал, но всё равно не работает. Моя маршрутизация:
Flags: X - отключено, A - активно, D - динамическое, C - подключено, S - статическое, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - недоступно, P - запрещено
DST-ADDRESS PREF-SRC GATEWAY DISTANCE 0 ADS 0.0.0.0/0 xx.xx.xx.1 1 1 ADS 10.0.0.0/8 10.5.0.1 1 2 A S ;;; [Маршрут к provider1 / часть сети /9] 10.0.0.0/9 10.5.0.120 ether2 1 3 ADC 10.5.0.0/22 10.5.0.120 ether2 0 4 A S ;;; [Маршрут к provider2] 10.128.0.0/9 ether2 1 5 ADC xx.xx.xx.xx/22 xx.xx.xx.xx ether1 0 6 ADC 172.16.0.253/32 172.16.0.254 0
Мой роутер — 10.5.0.120 с адресом 172.16.0.254 для L2TP/IPsec. 10.128.0.0/9 — это инфраструктура GCP, а 10.0.0.0/9 — инфраструктура сети, частью которой является mikrotik.
На GCP настроена маршрутизация для 10.0.0.0/9 и 172.16.0.0/24 через туннель GCP, установленный с mikrotik через IPsec S2S туннель. Также настроены правила файрвола, разрешающие трафик с 10.0.0.0/9 и 172.16.0.0/24. То же самое на mikrotik:
Любой сервер в 10.0.0.0/9 после добавления статической маршрутизации к 10.128.0.0/9 через 10.5.0.120 видит узлы GCP в этой сети. И наоборот, с GCP видны все серверы за mikrotik в 10.0.0.0/9.
Но есть проблема с C2S, когда пользователь подключается к mikrotik: VPN-пользователь из 172.16.0.0/24 не видит хосты из сети 10.128.0.0/9, и наоборот, с GCP при попытке пропинговать 172.16.0.254 (VPN-сервер mikrotik) или подключённого VPN-пользователя ответа нет.