pfSense+MikroTik = [GRE+IPsec+OSPF]+[UDP OpenVPN Push+LDAP]

Подружить pfSense и MikroTik можно, но только ради OpenVPN. Во всех остальных случаях я рекомендую полностью мигрировать с pfSense на RouterOS.

Легенда:

Имеется pfSense, который справляется с задачами здесь и сейчас. Но появились офисы, которые нужно подключить к сети за pfSense, да не просто подключить, а получить отказоустойчивость!

Проблема 1:

pfSense не умеет адекватно GRE+IPsec, к тому же OSPF работает только из пакета FRR, который вызывает только боль.

Проблема 2:

MikroTik не умеет OpenVPN udp (в 7 версии добавили), отправлять push клиентам.

Проблема 3:

На pfSense слишком много сервисов, которые практически невозможно перенести на MikroTik без простоя.

Решение:

Использовать обе системы — pfSense как основной шлюз, MikroTik для связи с остальными офисами.

Архитектура:

pfSense центр

WAN1: 1.1.1.2/30
LAN: 10.1.0.1/24
OpenVPN пользователей 10.1.1.0/24
OpenVPN расширенного доступа 10.1.2.0/24
OpenVPN полного доступа 10.1.3.0/24

MikroTik удаленные офисы

Москва

WAN1: 2.2.2.2/30
WAN2: 3.3.3.2/30
LAN: 192.168.10.1/24

Ржев

WAN1: 4.4.4.2/30
WAN2: 5.5.5.2/30
LAN: 192.168.20.1/24

Проектирование связей

Для настройки связи офис-центр нужно установить дополнительный маршрутизатор в виде MikroTik, это может быть как RouterBOARD, так и Cloud Hoster Router

Принципиальная итоговая схема

Подготовка pfSense в центре:

Пакет FRR

Устанавливается из стандартного меню с доступными пакетами
System -> Package Manager

Включить OSPF, указать Router ID
Прописать Area и аутентификацию
Включить FRR

Магия Firewall

pfSense имеет особенность блокировки tcp пакетов, которые были запрошены не через его шлюз.
Решается через правило в Firewall -> Rules -> Floating
На поиск этого решения ушло очень много времени!

Указываем LAN интерфейс с TCP
Разрешает «непонятные» пакеты

Так же можно указать маршрут статически, если не справитесь с FRR

Подготовка MikroTik в центре:

WAN: 9.9.9.2/30
LAN: 10.1.0.2/24

GRE+IPsec

/interface gre
add allow-fast-path=no keepalive=3s,3 local-address=9.9.9.9 mtu=1400 name=MSK-WAN1 remote-address=2.2.2.2
add allow-fast-path=no keepalive=3s,3 local-address=9.9.9.9 mtu=1400 name=MSK-WAN2 remote-address=3.3.3.2
add allow-fast-path=no keepalive=3s,3 local-address=9.9.9.9 mtu=1400 name=Rzhev-WAN1 remote-address=4.4.4.2
add allow-fast-path=no keepalive=3s,3 local-address=9.9.9.9 mtu=1400 name=Rzhev-WAN2 remote-address=5.5.5.2

IPsec

/ip ipsec profile
add dh-group=modp1024 enc-algorithm=3des name=ph1 nat-traversal=no
add dh-group=modp1024 enc-algorithm=aes-128 name=ph1-AES-128 nat-traversal=no
/ip ipsec peer
add address=2.2.2.2/32 exchange-mode=ike2 local-address=1.1.1.2 name=WAN1-DC profile=ph1-AES-128
add address=3.3.3.2/32 exchange-mode=ike2 local-address=1.1.1.2 name=WAN2-DC profile=ph1-AES-128
/ip ipsec proposal
add enc-algorithms=3des name=ph2
add enc-algorithms=aes-128-cbc lifetime=1h name=ph2-AES-128-CBC+SHA1
/ip ipsec identity
add peer=WAN1-DC secret=1q2w3e4r
add peer=WAN2-DC secret=1q2w3e4r
/ip ipsec policy
add dst-address=2.2.2.2/32 peer=WAN1-DC proposal=ph2-AES-128-CBC+SHA1 protocol=gre src-address=1.1.1.2/32
add dst-address=3.3.3.2/32 peer=WAN2-DC proposal=ph2-AES-128-CBC+SHA1 protocol=gre src-address=1.1.1.2/32

OSPF с зонами

/routing ospf area
add area-id=192.168.10.1 name=areaMSK
add area-id=192.168.20.1 name=areaRzhev
/routing ospf network
add area=backbone network=10.1.0.0/24
add area=areaMSK network=172.32.255.2/32
add area=areaMSK network=172.32.255.4/32
add area=areaRzhev network=172.32.255.6/32
add area=areaRzhev network=172.32.255.8/32
/routing ospf instance
set [ find default=yes ] redistribute-static=as-type-1 router-id=10.1.0.2
/routing ospf interface
add authentication=simple authentication-key=12345678 interface=bridgeLAN network-type=broadcast
add cost=10 interface=MSK-WAN1 network-type=point-to-point use-bfd=yes
add cost=11 interface=MSK-WAN2 network-type=point-to-point use-bfd=yes
add cost=10 interface=Rzhev-WAN2 network-type=point-to-point use-bfd=yes
add cost=11 interface=Rzhev-WAN2 network-type=point-to-point use-bfd=yes
/routing filter
add action=accept chain=ospf-out comment=»OpenVPN Admin» prefix=10.1.3.0/24
add action=discard chain=ospf-in prefix-length=30-32
add action=discard chain=ospf-out prefix-length=30-32
add action=discard chain=ospf-out

Адресация GRE туннелей

Как можно заметить, адресация будет использоваться вида

172.32.255.1/32-172.32.255.2/32

Сторона MikroTik не четная, сторона офисов четная

Настройка офисов MikroTik

Настройка аналогична настройке GRE+IPsec+OSPF центра

Что мы получили:

Теперь поддержка туннелей и связь с офисами забота MikroTik. Это та функция, с которой не может справиться pfSense. К тому же под OpenVPN системный администратор может заходить в сети других офисов.