Отказоустойчивый ipsec vpn через multiwan



  • Добрый день.
    Хотел бы поинтересоваться насчёт возможности создания отказоустойчивого ipsec vpn туннеля между несколькими офисами.
    Схема сети такова:
    Офис 1 – 2 интернет канала со статическими IP. На основном провайдере скорость 1Gbps, на резервном 100Mbps.

    Офис 2 – аналогично первому.

    Офис 3 – 1 канал со статическим IP (резервный канал планируется в ближайшее время).

    Что пока сделано:

    1. В офисе 1 и 2 настроен MultiWAN. И поднят туннель между основными каналами интернета.
      Когда один из каналов падает, приходится лезть и менять ip на vpn туннеле вручную.
    2. Создал А-записи на внешнем DNS, где VPNOffice1.domain.ru – IP-адреса первого офиса, VPNoffice2.domain.ru -  IP-адреса второго офиса. Но пока не могу понять, может ли мне это как-то помочь для поднятия отказоустойчивого IPSEC.


  • Доброе
    Вар 1

    Если возможно, то исп. OpenVPN вместо IPSEC. Для faiover можно исп. несколько директив remote в конф. файле одной из сторон.
    Т.е. постоянно у вас будет поднят только один линк между офисами. При пропадании линка коннект будет идти на др. адрес.
    Но вот возращаться при появлении связи на основной он не будет :(

    Вар 2
    Поднять два линка одновременно с разных интрефейсов. Т.е., Оф1_ВАН1 ->Оф2_ВАН1 и Оф1_ВАН2 ->Оф2_ВАН2 (или как вам удобнее)
    После объявить эти впн явными интерфейсами ovpnc1 и ovpnc2 и создать из них группу failover .
    Далее в правилах fw на ЛАН создать самым первым правило , где в src - lan net, dst - удаленная лок. сеть за клиентом , а gw будет группа впн failover, созданная ранее.

    Вар 3
    Как вариант 2 до создания группы failover плюс настроить дин. марш-цию с пом. ospf. Можно исп. и Ipsec (tun) Оч. неплохой вариант.



  • Огромное спасибо.
    Всё понятно, кроме как

    объявить впн явными интерфейсами ovpnc1 и ovpnc2



  • Поднимаете оба впн канала.
    Заходите в Assign interfaces и создаете их там.



  • Возможно я не там ищу, но не вижу как создать тут ещё интерфейс.
    Оба туннеля в данный момент подняты.




  • Добавляете в верном месте. Непонятно, почему OVPN недоступны.
    У меня это выглядит так в 2.3.х (клиент) и 2.2.6 (сервер):






  • @Igor:

    Возможно я не там ищу, но не вижу как создать тут ещё интерфейс.
    Оба туннеля в данный момент подняты.

    Настройки openvpn покажите. И Status -> Interfaces также.

    P.s. Или же у вас ipsec подняты ?



  • Прошу прощения.  ::)  Решил, что OpenVPN только в первом варианте.

    Тогда буду настраивать по третьему варианту. Пока не знаю, что такое OSPF, но буду разбираться.
    Если не получится, то попробую OpenVPN.

    Получается, IPSEC в режим транспорт перевести, поверх поднять GRE туннели, а затем настраивать OSPF.



  • Добрый вечер!

    Решил перейти на Openvpn.
    Поднял 2 туннеля pki между офисами оф1ван1-оф2ван1 и оф1ван2-оф2ван2 с настройками точь-в-точь,  как в инструкции из этого топика https://forum.pfsense.org/index.php?topic=59081.0

    Оба туннеля точно работоспособны, пробовал запускать их по отдельности.

    Совместно тоже поднимаются, трафик идёт по одному из них.
    Решил попробовать использовать ospf. Настройки ospf взял из инструкции в  теме по Openvpn psk (
    https://forum.pfsense.org/index.php?topic=58846.0 ).  Опять же, скопировал всё в точности, только где RID использовал свой внешний ip wan1 и в disable redistribution подсети провайдера поменял на свои… Но динамическая маршрутизиция не работает.

    Куда копать, что сделал не так?



  • "После объявить эти впн явными интерфейсами ovpnc1 и ovpnc2 и создать из них группу failover .
    Далее в правилах fw на ЛАН создать самым первым правило , где в src - lan net, dst - удаленная лок. сеть за клиентом , а gw будет группа впн failover, созданная ранее."

    Этот вариант тоже пробовал.
    Но тут вообще странно. После отключения WAN1, у меня вообще перестал работать и инет и связь с центральным офисом.
    Но этот вариант для меня менее предпочтительный, чем с ospf.



  • Доброе.
    Версия пф ? Галка в S_ystem: Advanced: Miscellaneous : Load Balancing_  на Enable default gateway switching стоит?

    Покажите скрины настроек fw на LAN , openvpn (оба) и явно созданных ovpn-интерфейсах (оба).
    А также System: Gateway Groups: Groups



  • 2.3.2-RELEASE-p1
    Галка стоит.

    В данный момент я "разрушил" группу openvpn шлюзов. Воссоздал на скринах как было настроено.
    Скриншоты правил fw на LAN тоже поправил в фото-редакторе, чтобы показать как оно было настроено, т.к. в данную минуту это правило выключено.

    ![LAN Rules CLI.JPG](/public/imported_attachments/1/LAN Rules CLI.JPG)
    ![LAN Rules CLI.JPG_thumb](/public/imported_attachments/1/LAN Rules CLI.JPG_thumb)
    ![LAN Rules SER.JPG](/public/imported_attachments/1/LAN Rules SER.JPG)
    ![LAN Rules SER.JPG_thumb](/public/imported_attachments/1/LAN Rules SER.JPG_thumb)



























  • И ещё скину настройки OSPF на тот момент, когда пытался настроить динамическую маршрутизацию (в данный момент выключил сервис)

    На момент снятия скринов интерфейсы OPENVPN не были объявлены явно










  • Руководство дало мне последние выходные на исправление ситуации с отказоустойчивостью vpn.

    В общем, в выходные буду пробовать хоть как-то её организовать.

    Если по скринам можно сказать, что именно у меня неверно, то очень прошу подсказать. Если нужно что-то ещё выложить или оформить иначе то, что уже вылжено - пишите.



  • Доброе
    С ospf пока не надо мучаться. Настройте просто с пом. создания отдельн. явных ovpn-интерфейсов.
    После объедените их в Группу failover (loadbalance) и исп. ее в правилах fw на LAN.



  • Настроил через ospf.
    Основная ошибка - то, что были указаны локальная и удалённая подсеть в настройках сервера ovpn.  И добавлен маршрут в client specific overrides. Одним словом, вся маршрутизиция должна быть только через ospf.
    Также пришлось повозиться с тем, что клиент при падении основного канала не поднимался обратно, выдавая ошибку Unable to contact daemon Service not running?.

    Единственное, что пока напрягает - скорость vpn канала не поднимается выше 10мбит/с, через ipsec была в районе 35-40 мбит.
    Если кто знает, как ускорить - подскажите, пожалуйста.



  • Доброе.
    Можно скрины настроек ospf ?

    Единственное, что пока напрягает - скорость vpn канала не поднимается выше 10мбит/с, через ipsec была в районе 35-40 мбит.
    Если кто знает, как ускорить - подскажите, пожалуйста.

    1. Исп. только UDP
    2. В настр. впн-сервера (-ов) , если тип опенвпн Remotes Access в Адвансед добавить :

    sndbuf 100000;
    rcvbuf 100000;
    push "sndbuf 100000";
    push "rcvbuf 100000";
    

    Если тип p2p, то в Адвансед :

    sndbuf 100000;
    rcvbuf 100000;

    И передернуть впн.



  • А какова загрузка CPU для pf на концах туннеля?



  • Скрины приложил, Router ID замазал на всякий.

    Добавление 10.0.8.1/32 , 10.0.9.1/32 и т.д. нужно для исправления ошибки "Unable to contact daemon Service not running?. " при подъёме туннеля после появления инета на WANах.
    Настройки скринов интерфейсов выкладывать не буду - там просто туннель, метрика и зона. Для интерфейса LAN метрика отсутствует.

    sndbuf 100000;
    rcvbuf 100000;

    • попробую добавить на выходных, спасибо.

    Камень грузится на 10-20%.






  • Доброе.
    Спасибо за скрины ospf.

    Настройки скринов интерфейсов выкладывать не буду - там просто туннель, метрика и зона. Для интерфейса LAN метрика отсутствует

    Все же можно выложить , если не затруднит ?

    Router ID замазал на всякий.

    Router ID - это внешний ip?



  • Ок, держи скрины интерфейсов с клиента. На сервере всё аналогично.

    Значения Router ID по идее могут быть вообще любыми, но они обязательно должны отличаться друг от друга. Во время тестов пробовал значения 0.0.0.1 и 0.0.0.2 и всё работало.

    UPD: галочка Accept Filter появилась в результате  попыток исправить ошибку "ошибки "Unable to contact daemon Service not running?. " Скорее всего она не нужна, т.к. пока я не добавил 10.0.8.1/32 , 10.0.9.1/32 и т.д. в Disable Acceptance ошибка не исчезла.








  • @pigbrother:

    А какова загрузка CPU для pf на концах туннеля?

    Немного не в тему.
    Обновил pf до 2.3.2_1 х64.
    Установил\обновил клиента Windows прямо из Client Export Utility. Получил скорость копирования по SMB 50Мбит.
    До этого на 2.2.6 как и у вас было не более 15 Мбит.

    Настройки сервера на всякий случай

    dev ovpns5
    verb 1
    dev-type tun
    tun-ipv6
    dev-node /dev/tun5
    writepid /var/run/openvpn_server5.pid
    #user nobody
    #group nobody
    script-security 3
    daemon
    keepalive 10 60
    ping-timer-rem
    persist-tun
    persist-key
    proto udp
    cipher AES-128-CBC
    auth SHA1
    up /usr/local/sbin/ovpn-linkup
    down /usr/local/sbin/ovpn-linkdown
    client-connect /usr/local/sbin/openvpn.attributes.sh
    client-disconnect /usr/local/sbin/openvpn.attributes.sh
    local 
    tls-server
    server 
    client-config-dir /var/etc/openvpn-csc/server5
    username-as-common-name
    auth-user-pass-verify "/usr/local/sbin/ovpn_auth_verify user 'Local Database' true server5" via-env
    tls-verify "/usr/local/sbin/ovpn_auth_verify tls 'ra-ovpns-cert' 1"
    lport 
    management /var/etc/openvpn/server5.sock unix
    push "route "
    push "route "
    ca /var/etc/openvpn/server5.ca 
    cert /var/etc/openvpn/server5.cert 
    key /var/etc/openvpn/server5.key 
    dh /etc/dh-parameters.1024
    crl-verify /var/etc/openvpn/server5.crl-verify 
    tls-auth /var/etc/openvpn/server5.tls-auth 0
    persist-remote-ip
    float
    topology subnet
    reneg-sec 0
    ifconfig-pool-persist /var/games/ips.list 0
    
    

    Hardware Crypto  отключено.



  • Ребята, насчёт скорости прошу прошения. Сейчас скорость не 10 Мбит/c, а 10 Мбайт/c. Ну и на IPsec была соотв 35-40 МБайт/c.

    pigbrother,
    pf у меня уже 2.3.2_1 х64, а клиентом выступает второй pf тоже на 2.3.2_1 х64.

    С настройками сервера поиграюсь) Надеюсь, что хватит добавления "sndbuf 100000; rcvbuf 100000;"  В целом настройки схожи с вашими. Пробовал менять шифрование с AES-256-CBC на AES-128-CBC - ничего не поменялось.
    Причём на туннеле между медленными резервными WAN (по 100 мбит каждый) скорость в районе 8Мбайт,а на быстрых Гигабитных каналах - около 10Мбайт.



  • Рискнул попробовать применить директивы "sndbuf 100000; rcvbuf 100000; " сейчас.
    На скорости никак не отразилось - в процессе передачи файла размером примерно 4ГБ  она менялась от 8.3 МБ/c до 10.7 МБ/c. Нагрузка на камень в процессе передачи была от 30 до 41% на сервере и от 19 до 28 на клиенте pf ( на клиенте чуть помощнее проц)



  • @Igor:

    Рискнул попробовать применить директивы "sndbuf 100000; rcvbuf 100000; " сейчас.
    На скорости никак не отразилось - в процессе передачи файла размером примерно 4ГБ  она менялась от 8.3 МБ/c до 10.7 МБ/c. Нагрузка на камень в процессе передачи была от 30 до 41% на сервере и от 19 до 28 на клиенте pf ( на клиенте чуть помощнее проц)

    CPU многоядерный?Проценты смотрели в дашбоарде?
    Гляньте нагрузку в top.
    OpenVPN - однопоточное приложение,один инстанс - одно ядро. Вполне возможно оно грузит это ядро на 100%, а дашбоард показывает суммарное потребления CPU всеми ядрами.
    Неплохая статья:
    Optimizing performance on gigabit networks
    Правда про Linux, но в данном случае это не важно.
    https://community.openvpn.net/openvpn/wiki/Gigabit_Networks_Linux#no1



  • 2 Igor Filth
    Попробуйте вкл. аппаратную поддержку шифрования для Openvpn (как советовал ув. pigbrother).

    https://forum.pfsense.org/index.php?topic=120625.0



  • @werter:

    2 Igor Filth
    Попробуйте вкл. аппаратную поддержку шифрования для Openvpn (как советовал ув. pigbrother).

    https://forum.pfsense.org/index.php?topic=120625.0

    Я пока от нее отказался. Не знаю, с ней ли было связано - но pf после переезда на новую платформу и включения аппаратной поддержки pf стал неадекватно себя вести. Не уверен, что дело в ее включении, пока набираю статистику. После обязательно поэкспериментирую опять.

    По поводу загрузки CPU - без аппаратной поддержки 50 Мбит Openvpn загружают одно ядро Celeron N3150 на 40%.
    При этом сам pf неплохо себя чувствует на оставшихся 3-х ядрах. При прибл. 100 Мбит Openvpn явно съел бы одно ядро полностью.



  • 2 werter
    Попробую включить и потестировать  на выходных.

    На всякий случай напишу конфиг своего сервера: 2 процессора Xeon E5620, 8 гб оперативки, sas диски в 10 RAID (ST3600057SS), pf крутится на виртуалке HV 2012R2.

    pigbrother
    Если несложно напишите в чём именно была неадекватность, чтобы я сразу обратил на это внимание?

    P.S. Сегодня руководство дало согласие выделить определённую сумму на новые 1U сервера для шлюзов, если это поможет поднять скорость хотя бы до 450-500 Мбит/c. Хотелось бы понять какой процессор для этого выбрать - с большей частотой или также обратить внимание на количество ядер. Лучше брать xeon? Или может быть собрать сервер на обычных i5-i7?



  • Если несложно напишите в чём именно была неадекватность, чтобы я сразу обратил на это внимание?

    У меня нет опыта с таким VPN-трафиком, но свои предположения постараюсь изложить подробнее.
    Цифры загрузки CPU вы смотрите в дашбоарде (главной странице) pfSense? Если так, то вы видите усредненную загрузку всех ядер процессора.

    OpenVPN - однопоточное приложение, если грубо - один экземпляр OpenVPN сервера или клиента - одно ядро. Массивный трафик вполне способен это ядро загрузить полностью и проявится ограничение скорости. Контролировать загрузку CPU при работе OVPN надо в консоли - или локально на pfSense, или через SSH, предварительно SSH включив в настройках pfSense.
    В консоли - пункт 8 - Shell.
    Затем набрать top
    в выводе top наблюдать сколько ядер и на сколько загружает процесс openvpn

    P.S. Сегодня руководство дало согласие выделить определённую сумму на новые 1U сервера для шлюзов, если это поможет поднять скорость хотя бы до 450-500 Мбит/c. Хотелось бы понять какой процессор для этого выбрать - с большей частотой или также обратить внимание на количество ядер. Лучше брать xeon? Или может быть собрать сервер на обычных i5-i7?

    Я уже приводил ссылку:
    https://community.openvpn.net/openvpn/wiki/Gigabit_Networks_Linux#no1
    450-500 Мбит/c - почти предел для OpenVPN.
    Как вариант, вероятно - поднимать несколько серверов на разных портах, на удаленной стороне - несколко клиентов и распределять нагрузку между ними.

    Процессоры выбирайте какие позволяет бюджет, удостоверьтесь в поддержке ими AES-NI,
    https://doc.pfsense.org/index.php/Are_cryptographic_accelerators_supported
    пока OpenVPN с AES-NI использует не очень эффективно, но ситуация меняется.

    pf крутится на виртуалке HV 2012R2.
    Соберите тестовый стенд на голом железе. Желательно - с хорошими сетевыми картами. Прогонять такой трафик через виртуальные сетевые карты и коммутаторы для гипервизора задача непростая, плюс поддержка AES-NI в виртуальную машину с хоста, скорее всего, не переносится.



  • Я бы посмотрел в сторону чего-то из совсем свежего на Intel Kaby Lake.

    pf крутится на виртуалке HV 2012R2.

    Посмотрите в сторону Proxmox + software zfs raid 10 (из коробки) - универсальное bare metal решение. Управление из веб-гуи (html 5), бэкапы из коробки и по расписанию (!), кластер из коробки, zfs (copy-on-write) и все это даром.

    Зачем вам Вин в кач-ве гипервизора? Зациклились все на этом гипер-в :'(

    P.s. Еще и NAS бы настроил на nas4free (http://2gusia.livejournal.com/tag/nas4free)



  • Еще пара ссылок на тему:
    https://forum.pfsense.org/index.php?topic=35669.0

    Looks like when you setup multiple openvpn instances it sets up additional processes:
    eg…
    root    38648  0.0  0.2  5116  3516  ??  Ss    6:18PM  0:00.00 openvpn --config /var/etc/openvpn/server2.conf
    root    40283  0.0  0.2  5116  3764  ??  Ss  11:38AM  0:04.11 openvpn --config /var/etc/openvpn/server1.conf

    So in principle you could setup multiple processes this way, each listening on a different port and use the load balancer module. (From a quick google openvpn isn't multithreaded)

    https://sourceforge.net/p/openvpn/mailman/message/27365978/



  • Позаимствовал на время у сотрудников 2 более-менее мощных компьютера (процессоры i5-4690 и i3-4130)
    Поднял на них hyper-v и pfsense.
    Скорость ovpn туннеля поднялась, но незначительно - до 14 МБ/с. Процессор на  i3 при этом нагрузился порядочно (~80%). Смотрел через ssh top’ом.
    Пробовал отключать шифрование, включать аппаратную поддержку – на скорость это не влияло вообще никак.

    Затем поставил PF на эти же компьютеры, но без hyper-v – скорость более 50 МБ/c, нагрузка на i3 примерно 60%.

    Теперь отвечу почему hyper-v. Решение руководства. Якобы, на винде всё проще.
    Сейчас уже заменить на proxmox немного проблематично – нужно всё полностью протестировать; показать руководству и убедить, что так лучше; научить человека, который меня замещает им пользоваться и поехать «в командировку» в выходной день всё это дело развернуть и настроить.



  • @Igor:

    Теперь отвечу почему hyper-v. Решение руководства. Якобы, на винде всё проще.

    Это они гипер-в в "чистом" виде не видели (а не как роль вин-сервера). В чистом виде - также ком. строка (powershell).
    Вы его таким покажите рук-ву :)

    Скорость ovpn туннеля поднялась, но незначительно - до 14 МБ/с

    Поколение вирт. маш. гипер-в - второе ? Сетевая - не legacy ?

    P.s. Осталось попробовать vmware esxi и xen.



  • А чего тогда freeBSD используют то? Ну и настраивали бы все на голой винде, там тоже все есть, каналы будут работать винда-винда, там L2TP помоему в нативе, только работает через одно место, да и глючит частенько… Я както пробовал ради интереса, за сутки канал раз 10 упал.
    Предложите им такой вариант, пусть понюхают, как винда на самом деле работает в данных решениях.
    Простите за офтоп...



  • Это они гипер-в в "чистом" виде не видели (а не как роль вин-сервера). В чистом виде - также ком. строка (powershell).
    Вы его таким покажите рук-ву :)

    Так оно в чистом виде и используется) Чтобы бесплатно было)

    Поколение вирт. маш. гипер-в - второе ? Сетевая - не legacy ?

    Поколение первое. Не стал пока со вторым разбираться для невиндовых os. Но могу и на втором развернуть. Сетевая не legacy.



  • Для начала было бы неплохо протестировать скорости на proxmox.
    нагрузка на i3 примерно 60%
    Странно. На "железном" pf 50 Мбит OpenVPN  нагружают Celeron N3150 менее, чем на 50%.
    Кстати, а просто 50 Мбит не OpenVPN трафика насколько загружают CPU?
    Если ощутимо - виноваты сетевые карты\обработка прерываний.

    Смотреть так:

    top -aSH

    12 root      -92    -    0K  640K WAIT    0 769:24  4.20% [intr{irq268: igb2[/b]:que}]



  • pigbrother

    50 Мегабайт, а не мегабит  ;)

    Ставлю proxmox на свой стенд



  • @Igor:

    pigbrother

    50 Мегабайт, а не мегабит  ;)

    Ставлю proxmox на свой стенд

    Тогда другое дело  ;D



  • @Igor:

    pigbrother

    50 Мегабайт, а не мегабит  ;)

    Ставлю proxmox на свой стенд

    Нихаха себе канал… 400 мегабит. Для чего используете такую мощь, если не секрет?
    Интересно будет посомотреть что его потянет. Ждемс.



  • Вероятно тестировалось через LAN
    Если нет - возможно это в пределах одного провайдера\пиринга.
    Мой домашний провайдер в таких условиях дает до 1 Гигабита. Правда, не всегда.  ;)