[freebsd] Нагруженный VPN сервер

Eugene Grosbein eugen at grosbein.net
Thu Oct 4 20:56:13 EEST 2018


04.10.2018 17:35, skeletor write:

>>> Учитывая, что GRE почти везде заблокирован, остаются варианты:
>> Неправда, что "GRE почти везде заблокирован" - правда, что он не пролазит через NAT
>> мобильных операторов связи (и ещё у некоторых). С публичными IP у GRE нет проблем.
> Правда, и NAT в моём случае (и не только в моём) был не при чём: тесты были и с NAT'ом и без NAT'a и на разных провайдерах.
> Осталось ещё пару провайдеров, где нормально проходит GRE, но таких единицы.

Я не верю в это и вот почему: в отсутствие NAT пакеты IP с GRE внутри
для маршрутизатора ничем вообще не отличаются от пакетов IP с TCP внутри
и роутятся точно так же и чтобы их резать, провайдеру нужно выполнять
дополнительные действия непонятно зачем, заодно нарушая RFC 1812
Requirements for IP Version 4 Routers.

Кроме NAT, я знаю только одну реальную причину, когда такое действительно может быть:
если пакеты GRE идут фрагментированными и за счёт этого маршрутизатор вынужден форвардить их
программно процессором вместо того, чтобы обрабатывать аппаратными ASIC на платформах типа
Cisco 7600 - и в таком случае GRE-фрагменты могут дропаться, но это решается отказом
от больших пакетов GRE (уменьшением MTU), чтобы они не фрагментировались.

Ну и да, ещё в ранних версиях Cisco IOS были баги, из-за которых транзитный GRE
мог тупо дропаться из-за багов в CEF, но это было очень давно.
Может быть, ваши тесты тоже уже утратили актуальность - как давно они были?
Нынешняя реальность - GRE без NAT пролазит через интернет без проблем.

>>> - l2tp: что бы использовать без ipsec'a, нужно лезть в реестр винды
>> Не нужно, начиная с Windows Vista есть галка в свойствах VPN-подключения.
> Я на 7-ке не нашёл это галочки. Подскажите, как она выглядит/называется?

У меня уже нет Vista и семерок, и на Win 8.1 я тоже её не нашел.
Может быть, я ошибся насчет галки или перепутал с чем другим за давностью времён,
но это и неважно - l2tp/ipsec нынче работает без проблем.

>> L2TP/IPSEC для клиента гораздо легче в настройке, так как клиент нынче
>> встроен практически во все платформы из коробки и нужно прописать только
>> адрес сервера, psk, логин и пароль для PPP.
>>
>> Настройка сервера (racoon) под встроенный клиент тех же платформ не сложнее настройки openvpn.

> Не соглашусь с вами, и вот почему: когда у вас в клиенте стоит поддержка IPsec и выбрать там можно только 1-2 параметра,

Вообще не нужно ничего выбирать.

> это не означаете что это просто. Это ад!!! У одного только ikev2,

Назовите клиента, который не поддерживает l2tp/ipsec с ikev1.

> у второго только ikev1,

Для l2tp/ipsec это нормально.

> у третьего поддерживаются только некоторые cipher'ы,

И этого достаточно - серверу надо просто включить все возможности.
Ну, кроме des (3des можно оставить).

> у чётвертого только сертификат,

Имя в студию.

> а у пятого только pre-shared key и всё это можно узнать только отдебажив на стороне сервера.
> И подключения каждого клиента - это квест. А, и это ещё не всё! Весёлая проблема клиентов за NAT'ом.
> Есть патчи, но у меня они не заработали (точнее патчились, но толку 0).

Это всё устаревшая информация. Начиная с FreeBSD 11.1, всё работает из коробки.

> Точно такая-же весёлая проблема и сервера за NAT'ом.

Это больше проблема виндоклиентов, которым надо редактировать реестр (и то один параметр),
но в контексте FreeBSD на маршрутизаторе она вообще не актуальна.

> А ещё, дебаг - просто песня, понять-то что не так, не всегда можно, а если и можно, то непонятно как решить.
> Может когда-то давно это и было просто, когда все сетапили по одному мануалу, но сейчас, ИМХО, уже далеко не так просто.
> 
> Теперь OpenVPN. Есть конфиг сервера, есть такой же конфиг
> (где такие же cipher'ы, такие же параметры компрессии, такие же наборы сертификатов,...)
> клиента. Всё! Вы просто отдаёте его клиенту и неважно на каком девайсе он запущен,
> оно а 99% будет работать. Идём дальше, openvpn прекрасно работает за NAT'ом,
> как клиент, так и сервер. Порог вхождения настроек значительно ниже, чем у IPSec'a. Дебаг и поиск проблем гораздо удобнее.

Это всё можно сформулировать короче - вы умеете готовить openvpn (есть опыт), но не умеете готовить IPSEC.
Нынче это совсем не сложно.

Кроме того, у openvpn есть свои недостатки. Он не совместим ни с чем, кроме самого себя
(попробуйте запустить его на Cisco ASA, например; а вот IPSEC там есть) и иногда
не совместим с собственными старыми версиями. Он гоняет трафик через userland
и поэтому на порядок сильнее нагружает процессор. Его авторы слабо разбираются
в сетях и реально легко его использовать только в простейших сетевых конфигурациях.

Запустить протоколы динамической маршрутизации через туннели openvpn,
интегрировать их в SNMP-мониторинг по-отдельности или в какую другую систему
управления сетевыми интерфейсами задача весьма нетривиальная и в некоторых
случаях вообще не решаемая.






More information about the freebsd mailing list