Какой выбрать выбрать VPN сервер для Android 4 клиента?
В наличии:
— Cмартфон на Android 4
— Подключение к Internet через корпоративный Wi-Fi (WPA2, AES, 802.1x PEAP с логином через AD) без прокси.
— Дома 2 сервера на выбор Ubuntu или OpenWRT, смотрящие реальным белым статическим IP в интернет.
— Прямые руки и гугл с хабром чтобы настроить VPN сервис на любом из этих серверов.
Задача:
Завернуть весь трафик (в идеале вместе с DNS, ICMP и прочими UDP) в VPN туннель до дому.
Желательно использовать стандартный VPN-клиент Android 4 который предлагает на выбор:
— PPTP (чур его!)
— L2TP/IPSec (есть выбор между PSK или RSA-ключом)
— IPSec Xauth (тоже PSK или RSA)
— Загадочный IPSec Hybrid RSA
Пичалька в том, что OpenVPN из коробки не поддерживается.
Да, при необходимости можно поставить кастомную прошивку с его поддержкой или рутовать смарт и поставить всё самому. Но пусть это будет «план Б».
А пока прошу посоветовать какой из штатных вариантов лучше и почему.
Какие преимущества (может оверхед меньше, скорость больше, сжатие есть, проще настроить… ) и какие недостатки. А также ткнуть носом по возможности в мануалы или годные статьи по предлагаемому варианту. Совсем альтернативные и оригинальные решения также рассматриваются.
PS: Что-то мне подсказывает (а точнее опыт с билайном и xl2tpd), что L2TP это тот ещё замороч. Разубедите меня, если это не так.
О, это очень хорошо! Буду пробовать.
Жаль, что только TUN, но я даже не представляю зачем бы мне мог понадобиться TAP, разве, что для WOL, но и то можно обойти. Однако для большей универсальности лучше бы всё-таки выбрать более совместимый сервер. Это я уже не для себя, а скажем для тех, кто набредёт на это вопрос в гугле и окажется с другими клиентами (под WinXP или Android 2/3 или ещё какое-нить чудо-юдо).
Рута то он может и не требует, однако учтите, что не во всех прошивках есть даже tun драйвер. Лучше посмотрите предварительно. Наиболее универсальное решение — ipsec/l2tp, но по сумме факторов openvpn поприятнее будет.
librarian, спасибо за ваш комментарий. Пошел посмотреть баги этого OpenVPN клиента, и нашел, что с моим HTC в стоковой прошивке он не работает как надо, и без рута это не исправить. Причём дело не в драйвере, а в неверной маршрутизации :(
А что за сумма факторов в пользу OpenVPN?
OpenVPN умеет форсировать передачу маршрута клиенту, то есть можно сказать клиенту какой роут делать и всё такое.
У меня есть небольшой, пока незаконченный цикл статей по настройке OpenVPN, который just works, без излишеств libc6.org/category/openvpn
У меня лично пока ipsec/l2tp настроить не получилось. То ли звёзды так складываются, то ли я инструкции и книги не те читаю.
По теме вопроса — лучшее сочетание l2tp/ipsec + rsa. psk очень небезопасно в свете высоких мощностей нынешних компов и за очень короткое время можно вполне сбрутфорсить этот ключ (а он как правило короткий).
Мы в компании сейчас как раз исследуем этот вопрос, в будущем возможно на хабре напишем про муки выбора, пока набрались такие стороны.
IPsec
Плюсы:
Построение топологии сетей отличной от звезды
Большое количество встроенных клиентов во всех OS, простота конфигурации клиентов.
OpenSwan? + KLIPS в теории позволяют создавать наиболее производительные VPN сети, поскольку позволяют подключать аппаратные шифрующие устройства.
Минусы:
Плохая работа с NAT на одной стороне, если NAT на обеих сторонах — сразу нет.
Очень, нет ОЧЕНЬ сложная конфигурация сервера. И это в OpenSwan? в книжке назвали простым, а racoon позволяет настраивать очень тонкие параметры.
Роутеры могут в принципе не пропускать IPsec, даже если у них написано что они его поддерживают, потому что у каждого стека есть свой Vendor ID и свой же список чужих Vendor ID с описанием того как с ним работать. И если какой-то узел не знает как работать — работать ничего не будет.
Достаточно долго подключается. В целом на подключение нужно где-то 1-2 секунды. Можно ускорить за счёт снижения безопасности.
OpenVPN
Плюсы:
Хорошая работа с NAT, в том числе и в конфигурациях, когда обе точки расположены за NAT.
В любой системе пакеты OpenVPN будут одинаковыми
Очень простая настройка сервера
Очень быстрое подключение
Достаточно высокая производительность (потому что udp)
Простой и понятный (по сравнению с IPsec) алгоритм шифрования SSL/TLS (по крайней мере знаешь чего от него ждать)
Минусы:
В большинстве систем необходимы административные права, чтобы установить клиент. Конфигурация клиентов тоже не очень проста, но один раз настроив всё буде работать идеально.
Топология только звезда.
L2TP/IPSec будет самым оптимальным вариантом, ибо, в случае с pptp не будет возможности подключиться по мобильной связи, провайдеры блокируют в основном GRE.
Как поднять L2TP/IPSec думаю найдете без проблем, тем более и ссылки уже есть в других ответах.
Андроид клиент из-коробки прекрасно умеет L2TP/IPSec.
Во-первых, я сомневаюсь, что без прав root Вы сможете решить задачу, т.к. установка виртуального адаптера tun наверняка потребует этих прав.
Во-вторых, VPN возможно сделать через SSH Правда, не факт, что SSH-сервера, доступные под Android смогут оказать Вам эту услугу. Но надо бы проверить. А вдруг.
Ещё можете попробовать использовать Reverse SSH tunnel. Т.е. SSH сервер ставится на домашний комп.
Но таким образом весь трафик не пробросить. Только TCP/UDP (т.к. socks5 поддерживает только их).
Ну, спасибо, конечно, за варианты, я с ssh туннелированием знаком довольно неплохо :) но данные решения нельзя назвать красивым. Всё-таки серверам не место на смартфоне. Что-же до SOCKS проксирования, то такой вариант обламывает весь кайф VPN.
Да, спасибо я в курсе про ICMP — «и прочими UDP» не стоит читать так буквально.
Как уже люди писали - используйте openvpn. А чтобы не морочиться с поддержанием vpn сервера головняками по оплате VPS или VDS, я бы подключил private tunnel - это детище openvpn. Тут все честно, заплатил 12$ и получаешь навсегда 50 ГБ траффика пока не потратишь его. 6 локаций для vpn , будут добавляться новые страны. Смотреть Здесь