VPN на домашнем роутере: быстро и надежно

Блог им. Kirill Kochetkov / / комментарии

Обычно беспроводные роутеры используются для предоставления доступа к Интернет различным домашним устройствам. Но иногда требуется решить и в определенном смысле противоположную задачу – реализовать удаленный доступ к размещенным в домашней сети сервисам и системам. Традиционный вариант решения этой задачи обычно состоит из трех шагов – использовать сервис динамического DNS для автоматического определения внешнего IP-адреса роутера, назначить в параметрах сервиса DHCP роутера выделение фиксированного адреса для нужного клиента и создать правило трансляции портов для требуемого сервиса на этом клиенте. Заметим, что удаленный доступ в большинстве случаев возможен только при наличии «белого»/«внешнего» адреса на WAN-интерфейсе роутера (подробнее см. в статье), а DDNS может не требоваться, если ваш провайдер предоставляет фиксированный IP-адрес.


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


Помочь справиться с этими вопросами помогут технологии VPN – виртуальных частных сетей. Они позволяют создать безопасное соединение между удаленным клиентом или локальной сетью и сразу всей сетью за роутером. То есть вам будет достаточно один раз настроить этот сервис и при подключении к нему клиент будет вести себя так, как будто он находится в локальной сети. Заметим, что эта схема тоже требует внешнего адреса на роутере и, кроме того, имеет некоторые ограничения связанные с использованием имен систем и других сервисов.


В прошивках многих современных роутеров среднего и верхнего сегмента предусмотрен встроенный сервер VPN. Чаще всего он работает с протоколами PPTP и OpenVPN. Первый является популярным вариантом, который был разработан более 15-ти лет назад при участии крупных ИТ-компаний, включая Microsoft. Его клиент встроен во многие современные ОС и мобильные устройства, что упрощает реализацию. Однако считается, что в этом решении не очень хорошо решаются вопросы безопасности. Скорость защищенного соединения для этого протокола в зависимости от производительности платформы роутера обычно составляет 30-50 Мбит/с, на самых быстрых устройствах мы встречали и 80 Мбит/с (см. например статью).


OpenVPN является свободной реализацией VPN сходного возраста и выпускается по лицензии GNU GPL. Клиенты для него есть для большинства платформ, включая мобильные. Серверы можно встретить во многих альтернативных прошивках для роутеров, а также в оригинальных версиях от производителей оборудования. Минусом этого протокола является требование значительных вычислительных ресурсов для обеспечения высокой скорости работы, так что 40-50 Мбит/с можно получить только на решениях верхнего сегмента (см. например).


Еще один вариант, который чаще связывают с «серьезными» решениями безопасных сетевых коммуникаций, –  IPsec (см. статью). Его история началась немного раньше и сегодня его можно встретить во многих продуктах удаленного доступа корпоративного уровня.



Тем не менее, относительно недавно его реализация появилась и в таком явно массовом оборудовании, как роутеры серии Zyxel Keenetic. Используемый в них программный модуль позволяет реализовать безопасные сценарии удаленного доступа, а также объединения сетей без сложных настроек. Кроме того, он совместим с решениями серии ZyWall. К плюсам этого производителя стоит отнести удобную базу знаний с подробными статьями о реализации типовых сценариев. По данной теме можно обратить внимание на статьи по объединению двух сетей и подключению клиента с Windows. Приводить подробные скриншоты настроек не имеет смысла, поскольку они есть по указанным ссылкам. Отметим только что все просто и понятно.



Учитывая ресурсоемкость используемых в данном сценарии алгоритмов, важным является вопрос производительности такого решения. Для его изучения были выбраны три модели роутеров последнего поколения – топовые Keenetic Ultra II и Keenetic Giga III, а также бюджетный Keenetic Start II. Первые два имеют процессоры MediaTek серии MT7621, по 256 МБ оперативной памяти и по 128 МБ флэшпамяти, гигабитные сетевые порты, два диапазона Wi-Fi, поддержку 802.11ac, порт USB 3.0. При этом в старшей используется чип с двумя ядрами, работающими на частоте 880 МГц, а во второй – такой же чип, но только с одним ядром. А третий роутер оборудован 100 Мбит/с портами (причем в количестве двух штук – один WAN и один LAN) и однодиапазонным беспроводным модулем. Процессор в нем используется MT7628N с одним ядром и частотой 575 МГц, а объем оперативной памяти составляет 64 МБ. С точки зрения программных возможностей, связанных с IPsec, устройства не отличаются.


На все три роутера были установлены прошивки из ветки бета версий v2.07(xxxx.2)B2. Режим подключения к сети Интернет на всех устройствах выбирался самый простой – IPoE. Работа с другими вариантам, скорее всего, приведет к снижению результатов. На следующих двух графиках приводятся результаты тестирования пар с разными настройками параметров соединения – Ultra II и Giga III, Ultra II и Start II. В первой устройства в целом сравнимы по скорости (правда у старшего два ядра), а во второй ограничения будут от младшей модели. Направление указано относительно второго устройства. Использовались сценарии передачи, приема и одновременной передачи и приема данных между подключенными к роутерам клиентами.



 


 


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


Однако, как мы помним по другим сходным ресурсоемким сценариям (например, обработке видео), существенный рост производительности на специализированных задачах можно получить благодаря использованию выделенных блоков чипов, «заточенных» на эффективную работу с определенными алгоритмами. Что интересно, в современных SoC от MediaTek такие как раз присутствуют и программисты компании в недавних обновлениях прошивок реализовали эту возможность.


 


При этом максимальный эффект можно получить на чипах MT7621 и RT6856, а на MT7628 поддерживаются не все режимы. Посмотрим, что изменится при использовании данного блока. Для его включения используем команду в консоли, как на скриншоте.


 


Старшая пара показывает скорость в 200 Мбит/с и более, что еще раз подтверждает правильность идеи создания специализированных блоков для определенных стандартных алгоритмов, которые существенно производительнее универсальных ядер.


 


Для младшей однокристальной системы эффект менее заметен, но и здесь можно отметить увеличение скорости в два раза для некоторых конфигураций.


Посмотрим теперь, насколько хорошо устройства справятся с обслуживанием подключений с достаточно быстрого компьютера с процессором Intel Core i5 и ОС Windows 8.1 x64 (описание настройки соединения доступно по ссылке выше). В роли условных серверов (в соединениях IPsec участники в определенном смысле равноправны) выступили старший Keenetic Ultra II и младший Keenetic Start II.


 


Топовый роутер в некоторых конфигурациях разгоняется более чем до 300 Мбит/с. Так что видимо второе ядро процессора помогает и в этом сценарии. Впрочем, на практике для достижения этих результатов вам понадобится и соответствующие Интернет-каналы.


 


Результаты Keenetic Start II по понятным причинам практически не отличаются от того, что мы видели выше.


Стоит заметить, что использование оптимизации не сказалось на стабильности соединения. Все участники успешно выдержали все тесты без каких-либо замечаний.


Проведенные тесты еще раз подтвердили, что современные продукты сегмента ИТ представляют собой программно-аппаратные комплексы и эффективность решения ими поставленных задач существенно зависит не только от установленного «железа», но и эффективной программной реализации его возможностей.


Пока я проводил тесты, оказалось, что компания в последних отладочных прошивках серии 2.08 для энтузиастов реализовала еще одну полезную возможность, позволяющую использовать сервис IPsec с мобильными клиентами. Описанный выше сценарий создания профиля соединения требовал постоянных IP-адресов с двух сторон соединения, что для смартфонов в обычных ситуациях не встречается. Подробности и инструкции можно прочитать в этих ветках: Android, iOS/OS X, Windows (Cisco VPN Client).


В настоящий момент этот режим не полностью поддерживается в Web-интерфейсе, однако это не помешало провести несколько быстрых тестов с Keenetic Giga III. С Apple iPhone 5S реальная скорость составила 5-10 Мбит/с в зависимости от направления, а Xiaomi Mi5 оказался побыстрее – 10-15 Мбит/с (оба устройства подключались через Wi-Fi). Штатный клиент Cisco IPsec в OS X 10.11 на современной системе показал 110 Мбит/с на передачу и 240 Мбит/с на прием (при использовании гигабитной локальной сети и с учетом описанной выше операции по настройке роутера в консоли). Windows с известным, хотя и уже не поддерживающимся клиентом Cisco VPN Client, работала также достаточно быстро – 140 Мбит/с на передачу и 150 Мбит/с на прием. Таким образом, данная реализация IPsec явно может быть интересна широкому кругу пользователей для реализации быстрого и безопасного удаленного доступа к своей локальной сети с мобильных устройств и компьютеров из любой точки мира.

14 комментариев

mpanius
Я что-то путаю, или у провайдера «Билайн» всегда подключение идет через VPN? Раньше шло через PPTP, теперь через L2TP. Пункт «IPsec» в моем TP-Link также есть. 

И вопрос — а есть ли роутеры, которые позволяют подконнектится к провайдеру по PPTP/L2TP и поднять уже внутри этого соединения VPN туннель? При этом, пустить для определенных портов трафик через VPN, а для других — в обход. Потому что сейчас у меня вся связка работает частично на компе (сам по себе туннель).  
Kirill Kochetkov
Билайн сейчас переходит на IPoE. Но описанный сценарий не про подключение роутера к провайдеру.
Большинство роутеров, что мне встречались, включая упомянутые в материале, позволяют поднимать туннели поверх VPN соединений к провайдеру.
С портами сложнее. Какая конкретно задача стоит?
Arc64
Вот что происходит, когда уважаемый Padavan переходит на работу в Zyxel, иначе фиг бы что появилось.
Vlad Aris
ну да, вот намедни сдуру решил обновить свою ультру, так матерюсь счас не подецки — нормально работающий до этого встроенный торрент стал дико глючить и подвешивать весь роутер, с какими только бубнами уже не прыгал… вот теперь знаю кому «спасибо» сказать, эти падаваны уже достали…
Arc64
Так откатитесь, кто мешает. А на уважаемых професионалов поносом не исходите, не доросли еще совсем с прошивками разбираться, у вас бубны не из тех мест растут.
Последний раз редактировалось
Vlad Aris
то что в вашем понимании профи у вас явная деформация понятий — это ваша проблема, а для меня взявшего ПК в руки ещё в восьмидесятом году, когда работал в большом ВЦ — всё это мелкая глючная шушера, которую надо учить розгами за каждое такое обновление, чтобы не пакостили… пакостники;))
Arc64
А вы мой в профиль смотрели?  Я тоже немолодой. И прежде чем исходить поносом, привели бы настройки своего роутера в студию, какой диск, какая фс, объём диска. И вообще я не верю в работу на вц, специалисты ТОЧНО знают что роутер НЕ торрент качалка! А поносом исходить самое простое, если в роутерах ничего не понимаете.
Vlad Aris
вуйка, ты дурак?! заметь я еще знак вопроса поставил, хотя очевидно что можно без него...
ЗЫ. то что этот роутер торрент-качалка разрекламировано большими буквами на самой коробке продукта, так что твои претензии опять же к зухелю…
Arc64
Это претензии к дуракам, которые верят рекламе. Так что насчет логов, где там торрент крашится?
Belkunt Kuntoyarov
У меня тоже Ultra, тоже имел несчастье обновится на Бэту 2.6, да еще прикупил DECT Plus (собственно ради телефонии и обновлял), так вот полностью согласен сVlad Aris и прошивка глюкавая и USB довесок этот никчемное «г», замахнулись они на многое, только пока «жидко обкакались прилюдно». То VPN отваливается, то торренты падают (я вообще выключил все эти довески, ради стабильности...), то вообще неизвестно что происходит, телефония просто не работает без пинков и постоянных перезагрузок трубок. Я это к тому, что если нет в руках роутера купленного за херову тучу денег и брошеного ради новой ультры, для которой та же сырая 2.6 в релизе а 2.7 это тот еще сурприз, я про 2.8 вообще просто умолчу. так как только там есть надежда получить какое то подобие телефонии (Cat-iq только там+куча багов) и то года через два, судя по скорости разработки. К тому времени уже выйдет DECT Plus v2 и все будут с первым свистком кинуты, а команда разработки тем временем вместо доведения до приемлемого состояния прошивок и поддержки моделей прошлого поколения, занимаются развлекаловом и прикручиваением всяких свистелок и перделок в виде нужного 1% гиков IPse
Вот такие падаваны. Пичалька.
Belkunt Kuntoyarov
Хочу рассказать об опыте покупки DECT Plus

1. Теряет DECT-трубку при перезагрузке интернетцентра: входящий звонок и далее обрыв, потеря трубкой базы (проявляется не на всех трубках, помогает перезагрузка трубки но не всегда и надежность такого телефона равна «0»)

2. Нет индикации времени имени трубки и списка вызовов, так как недостаточно иметь поддержку GAP, нужна еще поддержка CAT-iq v2, но она есть не во всех трубках и точно ее нет в прошивке кинетика и появится она осенью 2016 года, и то это не точно а скорее всего а может и не появится, так как обещают ее в версии 2.08, которая в данны момент просто нерабочая ну совсем...
!!! НИКТО не написал в рекламе DECT Plus, что при покупке я получу в итоге телефон без пропущенных вызовов, времени. просто пустой экран и все.

3. Трубки при входящем вызове выдают вместо привычного трель-пауза-трель непрерывный звонок, это настолько бесит, что даже словами не передать! Тоесть для моей трубы выбор из 20 трелей и мелодий сократился только до 4 мелодий, которые оформлены в виде «музыки» — Решения тоже не предвидится.

Имея Keenetic Ultra, повелся на обещания рекламы ZyXEL и почти год ждал обновление прошивки для своего топового роутера (линейка обновилась в сентябре 2015 года, в продажу поступил роутер Ultra 2 и соответсвенно первая Ultra была сразу же брошена!)

На форуме forum.keenetic.net сразу встречает надпись, которая полностью характеризует отношение разработчиков к покупателям,
цитирую:

«Кратко о том, чем мы здесь занимаемся, и чего от нас ждать   16.08.2016»
"… но если все разработчики будут еще и с Антошами Уральскими общаться напрямую вместо специально обученного отдела техподдержки — никакого прогресса не будет — у нас просто не останется времени на исполнение прямых обязанностей. ..."

Вот так.

Крайне не рекомендую к покупке владельцам роутеров поизводства до 2016 года, так как только у вас есть призрачная надежда на выпуск обновления и доведения до полу-рабочего состояния сего чуда-устройства. Перед покупкой проверьте свою трубку на совместимость со стандартом CAT-iq v2, без этого смотреть вам в пустой экран без индикации времени, имени трубки и пропущенных вызовов...

Kirill Kochetkov
Имхо для подобных обсуждений здесь не самое удачное место. Есть, например, ветка в форуме iXBT.com forum.ixbt.com/topic.cgi?id=14:63096.
Что касается VPN PPTP, лично у меня никаких замечаний к нему нет. Просто работает и внимания к себе не требует.
alexsh66
Есть решение для которого уже не нужен внешний IP адрес — SoftEtherVPN и технология в нем VPN Azure www.softether.org/4-docs/2-howto/6.VPN_Server_Behind_NAT_or_Firewall/2.VPN_Azure, SoftEtherVPN работает на множестве платформ в т.ч. и на OpenWRT
Последний раз редактировалось
Kirill Kochetkov
Ничего нового в таком «обходе» серых адресов нет. Подключаться через внешний сервер можно с большинством реализаций VPN. Просто здесь внешний релей «входит в комплект».
Что касается самого проекта, то основная тема статьи — повышение эффективности благодаря использованию особенностей платформы. Такое на для этого кода никто делать не будет, так что действительно высокие скорости на встраиваемых платформах для него недоступны.