OpenVPN and NAT Outbound



  • Здравствуйте господа.
    Прошу помощи в решении одной проблемы.

    Офис "A" локальная сеть 192.168.1.0/24
    Офис "B" локальная сеть 172.16.0.0/12
    Они соеденены по GRE over IPSec тунелю
    Так же есть клиенты которые подключаются по OpenVPN тунелю к Офису "А" 10.0.8.0/24

    Политика фаервола офиса "B" заключается в том, что к нему может идти трафик только от IP адресов сети офиса "A" 192.168.1.0/24 и поменять эту политику нельзя.
    Вся проблема в том что клиенты OpenVPN не могут попасть в локальную сеть офиса "B"
    Маршруты у клиентов прописаны.

    Я знаю что решение простейшее, но реализовать не получается, сижу туплю уже неделю. Если я правильно понимаю, то надо смотреть в сторону NAT Outbound, но что-то корректные правила создать не получается. Хожу вокруг да около, но свой затуп понять не могу  :(
    Буду признателен за помощь и развернутый ответ.



  • Решение не так уж и очевидно. Попробуйте вот что:

    Создайте Virtual IP типа Other на GRE интерфейсе и задайте в нем какой-нибудь адрес не используемый в локальной сети (например 192.168.1.254/32). Затем сделайте правило в NAT Outbound:

    GRE1   	10.0.8.0/24 	* 	* 	* 	192.168.1.254 	* 	NO
    


  • Скорее всего вы имели в виду, создать Virtual IP на LAN интерфейсе, т.к. на GRE вылазит ошибка.

    The following input errors were detected:

    The interface chosen for the VIP has no IPv4 or IPv6 address configured so it cannot be used as a parent for the VIP.

    В итоге подменить IP на 192.168.1.254, получилось.
    Но всплыла другая проблема.
    Посредством tcpdump'a на GRE интерфейсе, выяснилось, что данные попадают в GRE туннель в не зашифрованном виде (хотя все остальные данные из LAN шифруются) и соответственно на шлюзе офиса "B" они фильтруются.
    Как заставить IPSec шифровать эти данные перед отправкой в туннель?



  • Покажите настройки IPSEC на pfSense



  • Прикрепил.








  • GRE over IPSec тунелю

    Погодите, у вас же GRE внутри IPSec бегает ? Т.е. сперва поднимается IPSec-туннель, а внутри него уже GRE-туннель ?
    Если это так, то GRE-трафик получается защищен, т.к. нах-ся внутри IPSec.



  • В данной ситуации создается GRE интерфейс и все данные которые по нему идут, заворачиваются в ESP пакеты.
    Возможно вы правы, правильнее было бы написать IPSec over GRE.




  • @Pritorius:

    …все данные которые по нему идут, заворачиваются в ESP пакеты.

    Ну, как видим, не все. По сути у вас сейчас два не вложенных друг в друга туннеля - IPSec и GRE. Через какой из них пойдет трафик определяется только системными маршрутами. Между тем, GRE-туннель вам не нужен, т. к. IPSec в туннельном режиме (вот как у вас) обеспечивает тот же функционал что и GRE + шифрование. Когда говорят "GRE over IPSec" обычно имеют ввиду GRE-туннель обернутый в IPSec-транспорт, где первый дает связность локальных сетей, а второй - защиту.

    Возвращаясь к вопросу о клиентах OpenVPN, удаляйте этот виртуальный IP и его правило NAT. Удаляйте все static и policy routes, напрвляющие трафик в GRE, если таковые есть. Создавайте новую phase 2 в IPSec для подсети клиентов OpenVPN (Local Network) и там же в "In case you need NAT/BINAT on this network specify the address to be translated" делайте ей NAT в 192.168.1.254.



  • rubic - большое спасибо вам за помощь и развернутые ответы !
    Понял свои ошибки и благодаря вам, более подробнее стал понимать принципы работы VPN. И заодно разобрался с правилами NAT Outbound.

    Вопрос решен. Еще раз Спасибо!  ;)


Log in to reply