Найти в Дзене

Домашний VPN сервер на роутере

Всем привет! Бывают моменты, когда нужно и хочется подключиться к домашнему компу или сетевому архиву, или к телевизору (попугать домашних барабашкой ;))... В данной статье я расскажу как это можно настроить. Приятного прочтения!

Я сетевой инженер в большой компании, пишу статьи про сетевое оборудование, сетевые технологии и околоАЙТИшные темы. Рассматриваю возможности разного оборудования, вместе с вами продолжаю изучать разный функционал и привожу конкретные примеры того, что сделано и как сделано. Это не призыв к действию и не точный мануал - в моих статьях бывают ошибки, которые я всегда готов обсудить в комментариях. Прошу следовать правилам платформы, не нарушать законодательство РФ, не оскорблять других людей и все будет норм!
Моя тележка - добро пожаловать!

Прежде всего, давайте разберемся в двух словах, что такое VPN. VPN (Virtual Private Network) - виртуальная частная сеть. Это сеть, которая устанавливается между несколькими клиентами общей сети интернет, объединенных единым ключом шифрования. Виртуальная она потому, что в сети интернет много клиентов, а объединены только некоторые. Частная потому, что вы задаете определенные параметры для шифрования трафика, внутренней маршрутизации и аутентификации.

Зачем и как нам может потребоваться возможность подключения к домашним устройствам?! Конечно, вариаций тут можно накидать очень много, но основное, я считаю - это нежелание использовать облачные сервисы, которые продолжают себя компрометировать день ото дня. Например, вот очередной пример.

Мы, как-то, не особенно задумываемся о том, куда эти умные устройства подключаются, какую информацию собирают о нас производители этих устройств. Вспомним скандал с камерами Xiaomi "видеоняня", когда они передавали в облако нешифрованную картинку и кто угодно мог подключиться и подсмотреть за вами и ребенком... Нужно это? Думаю, даже если рассуждать, что ничего страшного в этом нет, то неприятный осадок все-равно останется. А иметь приложение на телефоне и подключаться самому, когда надо - хочется.

-2

Устройств, управляемых через интернет становится все больше. В загородных домах, например, это позволяет даже экономить на электричестве: отключая отопление в доме, пока там никого нет, и заранее включая его, чтобы к вашему приезду он уже опять был протоплен. Камеры, умные глазки, датчики утечки воды, дыма, сигнализации, свет...

-3

Как правило, у всех подобных систем есть альтернативный "облачному" - локальный вариант подключения. Что означает, что никто кроме вас и вашей локальной сети не имеет к ним доступа. Но, если выключить им выход в интернет, то и вы не сможете, сидя на работе, что-либо посмотреть на камерах и информация с датчиков дыма до вас так же не дойдет... Что печально. Данный момент мы сейчас исправим!

-4

Прежде чем перейти к непосредственно настройкам микротика, надо понять как работает маршрутизация в сети. В двух словах, как обычно, просто! Внутренний адрес сети, например, 192.168.88.11 - это, т.н. серый адрес. Это означает, что вы выходите в сеть через маршрутизатор/роутер, который скрывает внутренние адреса от внешней сети интернет, т.е. роутер конвертирует внутренние адреса в свой внешний адрес и все запросы отсылает в сеть интернет со своего внешнего адреса. Практически всегда ваш домашний роутер имеет на внешнем интерфейсе серый адрес, которые предоставляет провайдер, а у провайдера есть свой роутер, который конвертирует запросы от вашего роутера и ваших соседей и т.д. уже в свой внешний адрес... Получается двойная конвертация, иногда бывает тройная и больше - на работоспособности это никак не сказывается лишь немногим увеличивая время отклика. Вспомнились старые фильмы про хакеров, когда они сидели за несколькими фаерволами, которые "хорошие парни" должны были "сломать"? :)

-5

Вот! Чтобы иметь возможность с работы или мобильного телефона подключиться к своему роутеру - у него должен быть либо белый адрес, который можно вбить из любого устройства в интернет и перейти к вашему роутеру, либо проброшен отдельный порт с внешнего адреса вашего провайдера к вашему роутеру. Первый вариант практичнее и опаснее, т.к. открывает все порты вашего устройства и его смогут взломать из интернет, а второй более дешевый и чуть более безопасный, т.к. открывает для внешних атак только выделенный порт(ы).

Тут сложно что-то советовать - смотрите сами, что вы в итоге хотите получить и чего добиться, ну и рассчитывайте бюджет. Только одно (но!) - иногда провайдеры предоставляют услугу проброски не любого порта, а какого-то левого, например, 12312... Этот нюанс надо будет учитывать при настройке - я далее на это укажу.

-6

Самые распространенные протоколы для подключения к VPN: PPTP, PPPoE, L2TP, SSTP, OpenVPN и IPSec. Подробно разбирать их не вижу смысла, но, если вкратце, то они отличаются криптостойкостью и типом подключения. Кому интересно - подготовил небольшое резюме по ним:

PPTP (Point-to-Point Tunneling Protocol)

Cisco первой реализовала PPTP и позже лицензировала эту технологию корпорации Microsoft. PPTP удалось добиться популярности благодаря тому, что это первый протокол туннелирования, который был поддержан корпорацией Microsoft. Все версии Microsoft Windows, начиная с Windows 95, включают в свой состав PPTP-клиент, однако существует ограничение на два одновременных исходящих соединения. PPTP помещает (инкапсулирует) кадры PPP в IP-пакеты для передачи по глобальной IP-сети, например Интернет. PPTP может также использоваться для организации туннеля между двумя локальными сетями. РРТР использует дополнительное TCP-соединение для обслуживания туннеля.

PPPoE (Point-to-point protocol over Ethernet)

PPPoE — это туннелирующий протокол, который позволяет настраивать (или инкапсулировать) IP или другие протоколы, которые настраиваются на PPP, через соединения Ethernet, но с программными возможностями PPP-соединений, и поэтому используется для виртуальных «звонков» на соседнюю Ethernet-машину и устанавливает соединение точку, которое используется для транспортировки IP-пакетов, работающее с возможностями PPP. Это позволяет применять традиционное ориентированное ПО для настройки соединения, которое использует не последовательный канал, а пакетно-ориентированную сеть (как Ethernet), чтобы организовать классическое соединение с логином, паролем для Интернет-соединений. Также IP-адрес по другую сторону соединения назначается, только когда PPPoE-соединение открыто, допуская динамическое переиспользование IP-адресов. Стандартное MTU протокола ниже, чем на стандартном Ethernet (Ethernet — 1500 байт; PPPoE — 1492 байт), что иногда вызывает проблемы с плохо настроенными межсетевыми экранами.

L2TP (Layer 2 Tunneling Protocol)

Главное достоинство L2TP состоит в том, что этот протокол позволяет создавать туннель не только в сетях IP, но и в таких, как ATM, X.25 и Frame Relay. Несмотря на то, что L2TP действует наподобие протокола канального уровня модели OSI, на самом деле он является протоколом сеансового уровня и использует зарегистрированный UDP-порт 1701. L2TP использует два вида пакетов: управляющие и информационные сообщения. Управляющие сообщения используются при установлении, поддержании и аннулировании туннелей и вызовов. Информационные сообщения используются для инкапсуляции PPP-кадров, пересылаемых по туннелю. Управляющие сообщения используют надежный управляющий канал в пределах L2TP, чтобы гарантировать доставку. Информационные сообщения при потере не пересылаются повторно.

SSTP (Secure Socket Tunneling Protocol)

SSTP - это форма туннеля виртуальной частной сети (VPN), который обеспечивает механизм передачи трафика PPP по каналу SSL/TLS. SSL/TLS обеспечивает безопасность на транспортном уровне с согласованием ключей, шифрованием и проверкой целостности трафика. Использование SSL/TLS через TCP-порт 443 (по умолчанию порт может быть изменен) позволяет SSTP проходить практически через все брандмауэры и прокси-серверы, за исключением аутентифицированных веб-прокси.

OVPN (Open Virtual Private Network)

OpenVPN — свободная реализация технологии виртуальной частной сети (VPN) с открытым исходным кодом для создания зашифрованных каналoв типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT и сетевым экраном, без необходимости изменения их настроек. Для обеспечения безопасности управляющего канала и потока данных OpenVPN использует библиотеку OpenSSL. Это позволяет задействовать весь набор алгоритмов шифрования, доступных в данной библиотеке. Также может использоваться пакетная аутентификация HMAC для обеспечения большей безопасности, и аппаратное ускорение для улучшения производительности шифрования.

IPsec (Internet Protocol Security)

IPsec - это набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP. Позволяет осуществлять подтверждение подлинности (аутентификацию), проверку целостности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами в сети Интернет. В основном применяется для организации VPN-соединений. Первоначально сеть Интернет была создана как безопасная среда передачи данных между военными. Так как с ней работал только определённый круг лиц, людей образованных и имеющих представления о политике безопасности, то явной нужды построения защищённых протоколов не было. Безопасность организовывалась на уровне физической изоляции объектов от посторонних лиц, и это было оправдано, когда к сети имело доступ ограниченное число машин.

-7

Основное различие, с которым вы столкнетесь - это какие устройства, какой протокол поддерживают. Например, в айфоне встроенные 3 клиента: IPSec, IKEv2 и L2TP, а Windows 10 поддерживает PPTP, L2TP, IKEv2 и SSTP. IPSec, кстати, является дополнительным протоколом к L2TP, например. Т.е. настраивая L2TP, можно усилить его дополнительно IPSec'ом. Так многие и делают, настраивая межофисную связь. Но, тут главное как с солью - не переборщить. Каждый алгоритм шифрования не только обеспечивает свою основную функцию защиты вашего трафика, но и нагружает ЦП роутеров и клиентских устройств. Поэтому надо трезво оценивать свою значимость для условных хакеров и их заинтересованность взламывать именно ваш VPN. Это как с угоном машины: если на вашей целая куча механических замков, сигнализация с gsm и обратной связью, секретки на дисках и замок на капоте и коробке, то угонщик выберет соседнее авто без этих комплексов, но и вам свои замки придется постоянно открывать, закрывать и платить за сим-карту... Все хорошо в меру. Хороша ложка к обеду, как говорится. А для домашнего VPNа я лично предлагаю остановиться на L2TP (с IPSec и без оного). Выбор прост - этот клиент присутствует почти в каждой железке, на которой вы захотите подключиться к домашней сети. PPTP уже совсем старый, тот же SSTP и OVPN не работает на мобильниках, а IPSec и OVPN надо устанавливать отдельным клиентом.

-8

Конфиг без IPSec

  1. /interface bridge add auto-mac=yes name=vpn_net
  2. /ip address add address=192.168.100.1/24 interface=vpn_net network=192.168.100.0
  3. /ip pool add name=VPNPool ranges=192.168.100.100-192.168.100.110
  4. /ppp profile
  5. add change-tcp-mss=yes dns-server=77.88.8.7 local-address=192.168.100.1 name=l2tp remote-address=VPNPool use-encryption=yes
  6. /interface l2tp-server server
  7. set authentication=mschap2 default-profile=l2tp enabled=yes max-mru=1400 max-mtu=1400
  8. /ppp secret
  9. add name=vpnuser1 password=vpnuser%1 profile=l2tp
  10. /ip firewall filter
  11. add action=accept chain=input comment="VPN" dst-port=500,1701,4500 in-interface=ether1 protocol=udp

Пояснения:

1-3 - создание пула адресов, которые будут получать vpn-клиенты. Может быть равным локальным адресам, а может быть другим, как предложено тут.

4-7 - создание и активация l2tp сервера без ipsec.

8-9 - создание локального логина/пароля, который будет использоваться для подключения.

10-11 - создание правила на фаерволе, которое откроет порты для удаленного подключения. Обратите внимание, что в качестве внешнего интерфейса (куда вставлен интернет на микротике) у меня отмечен порт "ether1" - вам нужно проверить так ли он называется у вас.

Данный тип подключения можно использовать, наверное, только с другими роутерами и, возможно, старыми клиентами в древних телефонах и Windows, потому что все современные клиенты, включая Windows 10/11, требуют дополнительно IPSec-ключ или сертификат.

Включаем IPSec

  1. /interface l2tp-server server
  2. set authentication=mschap2 default-profile=l2tp enabled=yes max-mru=1400 max-mtu=1400 ipsec-secret=vpnsecretpassword use-ipsec=yes

1-2 - аналог правил 6-7 включающий ipsec.

Что делать если провайдер не дает порты UDP 500, 1701, 4500, а предоставляет какие-то рандомные12333, 12334, 12335... В случае с L2TP+IPSec - это не будет работать, потому что стандартные клиенты не умеют перенаправлять трафик через другие порты, отличные от этих. Т.е. мы сможем настроить роутер, чтобы он перенаправлял внешний порт 12333, например, на внутренний 500 и это будет работать, но сам клиент (телефон, например) не сможет это сделать. А вот настроить связь с другим роутером по этим портам вполне можно (например, объединив квартиру с дачей в единую подсеть.

-9

А теперь приведу пример настройки мобильного телефона "айфон" на то, что у нас получилось.

Заходим в Настройки -> VPN -> Добавить конфигурацию VPN
Тип --> L2TP
Описание --> это для вас, назовите HomeVPN
Сервер --> наш внешний ip-адрес
Учетная запись --> vpnuser1
RSA SecurID --> оставить выключенным
Пароль --> vpnuser%1
Общий ключ --> vpnsecretpassword (для конфига с включенным IPSec, без него айфон не работает)
Для всех данных --> эта галочка будет весь интернет трафик гнать через это vpn-подключение, если снимите, то доступ будет только в сеть 192.168.100.0/24.
На данные не смотрите - просто я ленивая }|{0/7A и не хочу делать скрины с мобилы
На данные не смотрите - просто я ленивая }|{0/7A и не хочу делать скрины с мобилы

По непроверенным данным, при включении IPSec на младших моделях микротика - они сильно проседают по процессору. В данный момент проверить не на чем, но выложу скрин из интернета. Пока не подтверждаю и не опровергаю его результат. Так же можете сверять конфигурации с автором этого скрина (ссылка под фото).

https://serveradmin.ru/nastrojka-vpn-openvpn-l2tp-ipsec-server-v-mikrotik/?
https://serveradmin.ru/nastrojka-vpn-openvpn-l2tp-ipsec-server-v-mikrotik/?

Зачем мы это все делали? Аа! Так вот, когда ваш мобильный телефон установит vpn соединение, то он окажется в домашней сети. А далее хоть из Турции можно подключиться к домашней технике: камеры, датчики, отследить маршрут робот-пылесоса, поморгать светом (типа хозяева дома)... Да что угодно, на что фантазии хватит. И все это не станет достоянием облачных платформ (надо вырубить интернет для "интернет-вещей", как это сделать - в моих статьях) и не попадет на ютуб в раздел смешного видео, как вы ночью бьетесь пальцем ноги о кровать, падаете на пол, зацепляете комод, который падает на вас (а если еще звук пишется...)... Короче, не каждый может с уверенностью смотреть в завтрашний день, точнее... ну, вы поняли!

Что-то очень громоздкая статья получилась, хотя ничего толком не расписал и все старался давать в сильно урезанном виде. Надеюсь этот сумбур вас не смутит, а на возникающие вопросы постараюсь отвечать в комментариях. Подписывайтесь, лайк, если оказался полезен. Не забывайте стучаться в телегу!