[freebsd] Нагруженный VPN сервер
skeletor
skeletor at lissyara.su
Thu Oct 4 22:01:25 EEST 2018
04.10.2018 20:56, Eugene Grosbein пишет:
> 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 пролазит через интернет без проблем.
В теории оно возможно так и есть. На практике, совсем иначе. Итог - GRE
не проходит. Причин может быть много, и разбираться с каждым клиентом
почему у него не проходит GRE - ещё то занятие.
Тесты мои проходили около 2-х лет назад.
>
>>>> - l2tp: что бы использовать без ipsec'a, нужно лезть в реестр винды
>>> Не нужно, начиная с Windows Vista есть галка в свойствах VPN-подключения.
>> Я на 7-ке не нашёл это галочки. Подскажите, как она выглядит/называется?
>
> У меня уже нет Vista и семерок, и на Win 8.1 я тоже её не нашел.
> Может быть, я ошибся насчет галки или перепутал с чем другим за давностью времён,
> но это и неважно - l2tp/ipsec нынче работает без проблем.
>
с ipsec может и без проблем работает, но вот без него (а разговор был
именно об 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, всё работает из коробки.
>
Да, я пробовал на FreeBSD 9.X/10.X, Собственно, после этого отпала вся
охота с ним возится.
>> Точно такая-же весёлая проблема и сервера за NAT'ом.
>
> Это больше проблема виндоклиентов, которым надо редактировать реестр (и то один параметр),
> но в контексте FreeBSD на маршрутизаторе она вообще не актуальна.
>
>> А ещё, дебаг - просто песня, понять-то что не так, не всегда можно, а если и можно, то непонятно как решить.
>> Может когда-то давно это и было просто, когда все сетапили по одному мануалу, но сейчас, ИМХО, уже далеко не так просто.
>>
>> Теперь OpenVPN. Есть конфиг сервера, есть такой же конфиг
>> (где такие же cipher'ы, такие же параметры компрессии, такие же наборы сертификатов,...)
>> клиента. Всё! Вы просто отдаёте его клиенту и неважно на каком девайсе он запущен,
>> оно а 99% будет работать. Идём дальше, openvpn прекрасно работает за NAT'ом,
>> как клиент, так и сервер. Порог вхождения настроек значительно ниже, чем у IPSec'a. Дебаг и поиск проблем гораздо удобнее.
>
> Это всё можно сформулировать короче - вы умеете готовить openvpn (есть опыт), но не умеете готовить IPSEC.
> Нынче это совсем не сложно.
>
> Кроме того, у openvpn есть свои недостатки. Он не совместим ни с чем, кроме самого себя
> (попробуйте запустить его на Cisco ASA, например; а вот IPSEC там есть) и иногда
> не совместим с собственными старыми версиями. Он гоняет трафик через userland
> и поэтому на порядок сильнее нагружает процессор. Его авторы слабо разбираются
> в сетях и реально легко его использовать только в простейших сетевых конфигурациях.
>
> Запустить протоколы динамической маршрутизации через туннели openvpn,
> интегрировать их в SNMP-мониторинг по-отдельности или в какую другую систему
> управления сетевыми интерфейсами задача весьма нетривиальная и в некоторых
> случаях вообще не решаемая.
>
>
Недостатки есть у всего, но вместе с тем его преимущества значительно
перевешивают его недостатки. И это совсем не означает, что его нужно
пихать везде (где он не сильно подходит). Просто в данном контексте,
ИМХО, он подходит больше. У ТС'а не было задач по интеграции SNMP или
динамической маршрутизации.
Насчёт версий несовместимости - не совсем правда. Вся загвоздка может
быть в переименовании параметра, что решается просто выкладке новой
версии конфига.
И да, мне так и не удалось победить IPsec как VPN сервер для множества
клиентов (соединение точка-точка между *nix системами с некоторыми
усилиями всё же удавалось поднять), особенно Windows. Зато с этой целью
справился openvpn.
Повторюсь ещё раз: если бы мне поставили задачу поднять VPN сервер на
500-1000 клиентов, я бы не задумываясь выбрал бы openvpn, что бы потом
не разбираться почему у кого-то не работает.
More information about the freebsd
mailing list