IPSec: Mikrotik и Juniper

Я уже писал как настроить IPSec между Cisco и Mikrotik. С тех пор утекло много воды, но, периодически, возникает необходимость задружить Микротик с чем-нибудь. Иногда даже по IPSec. Сегодня будем дружить с Juniper SRX.
mkt2srx
Кратенько, буквально в режиме how-to хочу рассказать как их подружить через ipsec site-to-site. На стороне Juniper настраиваем route-based VPN. На обеих сторонах будем использовать DST/SRC-NAT чтобы жизнь медом не казалась.

Настройки достаточно стандартны, никаких извращений (пока). Я привожу только секцию настройки IPSec (ну и NAT). Предполагается, что ip-связность между устройствами у вас уже есть (например, через провайдерский VPN или интернет).

Как настраивать IPSec в Juniper я тоже уже писал, так что подробно останавливаться не буду.

Конфиг джунипера:

set security ike proposal ike-phase1-proposal-1 description ike-phase1-proposal1
set security ike proposal ike-phase1-proposal-1 authentication-method pre-shared-keys
set security ike proposal ike-phase1-proposal-1 dh-group group5
set security ike proposal ike-phase1-proposal-1 authentication-algorithm sha1
set security ike proposal ike-phase1-proposal-1 encryption-algorithm 3des-cbc
set security ike proposal ike-phase1-proposal-1 lifetime-seconds 86400

set security ike policy snake-policy mode main
set security ike policy snake-policy description "Mikrotik Tunnel"
set security ike policy snake-policy proposals ike-phase1-proposal-1
set security ike policy snake-policy pre-shared-key ascii-text "VerySecretPa$$word"

set security ike gateway snake-gw ike-policy snake-policy
set security ike gateway snake-gw address 1.1.1.2
set security ike gateway snake-gw external-interface lo0.2

set security ipsec proposal 3DES-SHA1-3600 description ipsec-phase2-proposal
set security ipsec proposal 3DES-SHA1-3600 protocol esp
set security ipsec proposal 3DES-SHA1-3600 authentication-algorithm hmac-sha1-96
set security ipsec proposal 3DES-SHA1-3600 encryption-algorithm 3des-cbc
set security ipsec proposal 3DES-SHA1-3600 lifetime-seconds 3600
set security ipsec policy 3DES-SHA1-3600-policy description ipsec-phase2-policy
set security ipsec policy 3DES-SHA1-3600-policy proposals 3DES-SHA1-3600

set security ipsec vpn snake bind-interface st0.99
set security ipsec vpn snake df-bit clear
set security ipsec vpn snake ike gateway snake-gw
set security ipsec vpn snake ike proxy-identity local 172.20.0.99/32
set security ipsec vpn snake ike proxy-identity remote 192.168.99.0/24
set security ipsec vpn snake ike proxy-identity service any
set security ipsec vpn snake ike ipsec-policy 3DES-SHA1-3600-policy
set security ipsec vpn snake establish-tunnels immediately

set interfaces st0 unit 99 description vpn_snake
set interfaces st0 unit 99 multipoint
set interfaces st0 unit 99 family inet address 172.27.99.254/24
set interfaces st0 unit 99 family inet next-hop-tunnel 172.27.99.1 ipsec-vpn snake

set routing-options static route 192.168.99.0/24 next-hop 172.27.99.1
set security zones security-zone VPN interfaces st0.99

set security address-book global address auchakin 172.18.10.10/32
set security address-book global address snake-home 192.168.99.0/24

set security nat source pool vpn_snake address 172.20.0.99/32 to 172.20.0.99/32
set security nat source rule-set SNAT-OFFICE-TO-VPN rule snake match source-address-name VPN_ALLOW
set security nat source rule-set SNAT-OFFICE-TO-VPN rule snake match destination-address-name ps2snake_nat_DST
set security nat source rule-set SNAT-OFFICE-TO-VPN rule snake then source-nat pool vpn_snake

#proxy-arp, необходим для dst-nat
set security nat proxy-arp interface st0.99 address 172.20.0.99/32
#Правила для DST-NAT
set security nat destination rule-set DNAT-VPN-TO-OFFICE rule SNAKE match destination-address 172.20.0.99/32
set security nat destination rule-set DNAT-VPN-TO-OFFICE rule SNAKE then destination-nat pool vpn_snake
set security nat destination pool vpn_snake address 172.18.10.10

set security policies from-zone VPN to-zone OFFICE policy server-access match source-address snake-home
set security policies from-zone VPN to-zone OFFICE policy server-access match destination-address auchakin
set security policies from-zone VPN to-zone OFFICE policy server-access match application any
set security policies from-zone VPN to-zone OFFICE policy server-access then permit

Конфиг микротика. Опять же, мало чем отличается от прошлой статьи. Тут, главное, правильно описать policy, а также NAT (если будете его настраивать) и маршрутизацию. Также имейте в виду, что туннель может подняться не сразу, и тут джуниперовская возможность “автоподжига” может и не сработать.

/ip ipsec proposal
set [ find default=yes ] enc-algorithms=3des
add enc-algorithms=3des name=ps-srx550
/ip ipsec peer
add address=2.2.2.2/32 dh-group=modp1536 enc-algorithm=3des generate-policy=port-override secret="VerySecretPa$$word"
/ip ipsec policy
set 0 disabled=yes
add dst-address=172.20.0.99/32 level=unique priority=10 proposal=ps-srx550 sa-dst-address=2.2.2.2 sa-src-address=1.1.1.2 src-address=192.168.99.0/24 tunnel=yes

/ip firewall nat
add chain=srcnat dst-address=172.20.0.99 src-address=192.168.99.0/24
add action=src-nat chain=srcnat dst-address=172.20.0.99 src-address=192.168.88.0/24 to-addresses=192.168.99.0/24
add action=netmap chain=dstnat dst-address=192.168.99.0/24 src-address=172.20.254.99 to-addresses=192.168.88.0/24

После этого “поджигаем” туннель и проверяем, что связность по туннелю установлена. Это может произойти не сразу, в течение пары минут. Если не завелось – советую проверить настройки, а также версию RouterOS.

Удачи 😉

14 Comments

  1. Добрый день, а можно соединить netscreenOS с routerOS?
    на SSG немного различаются настройки с SRX, и никак не удается поднять туннель

    1. У меня под рукой нет SSG, так что не могу проверить.
      Но в целом не вижу больших проблем… главное удостовериться, что настройки точно совпадают на обеих сторонах

      1. можете объяснить про PFS Group в микротике, если я выбираю на Джунипере PFS Group 2 на микротике все по другому

  2. В стороне Джунипера в логах есть информативное сообщение IKE айпи адрес Phase 2 msg ID a1c7b413: Completed negotiations with SPI 559e155e, tunnel ID 61, and lifetime 3600 seconds/0 KB.
    но туннель не поднимается
    На стороне микротика installed SAs показывает соединение
    в чем проблема может быть

    1. Все банально, на самом деле, это частая проблема, не может джунипер правильно определить состояния линка. Например, у меня есть два канала впн, где на стороне джунипера стоит состояние Ready, хотя, по факту, туннель работает и трафик идет.

  3. на стороне джунипера вы пишете:
    set interfaces st0 unit 99 family inet next-hop-tunnel 172.27.99.1 ipsec-vpn snake
    set routing-options static route 192.168.99.0/24 next-hop 172.27.99.1

    Но на стороне микротика адрес 172.27.99.1 не сконфигурен.
    Как оно работает?
    Я попробовал по Вашему конфигу чуть поменяв под свои реалии – у меня IPSEC поднимается но трафик через него не идет.

    1. 172.27.99.1 прописывается на Juniper. Собственно, это route-based ipsec, и это один из способов его организации на SRX.

      1. а где конкретно он прописывается? По вашему конфигу получается, что на SRX прописан 172.27.99.254, а .1 должен быть на Микротике, где его нет.

        1. Да, я понял о чём вы. Действительно, получается непрозрачно.
          Если у вас достаточно новый софт (15.1 и выше), то вы можете использовать traffic-selectors, тогда на st0 нужен будет только саб-интерфейс, а маршрут добавится автоматически при поднятии туннеля.

  4. Зачем NAT в туннеле? это создание дополнительных проблем, особенно с телефонией. Тем более, с обеих сторон – серые IP адреса.
    Указывать туннельный интерфейс не надо

    Микротик не может указать несколько подсетей в src(или я не знаю, как), но связка cisco-juniper в таких случаях делается через traffic selector (возможно, придется обновить JunOS)

    из-за отсутствия туннельного интерфейса на микротике в такой конфигурации нет возможности использовать динамическую маршрутизацию, поэтому нужен GRE over ipsec, тогда используется туннель точка-точка (адрес/32 адрес/32).

    промежуточные варианты (как этот) – не лучшее решение

    1. Можно и без NAT, но у меня было пересечение домашней и рабочей сети, поэтому пришлось делать. Но можно и без него, разумеется.

      Какой src вы имели в виду? Если в ipsec – ну так на каждую сеть своя policy, в джунипере и циске ровно точно так же. В Cisco это будет запись в acl, в джунипере свой ts (начиная с 12.46, емнип).

      Необходимость динамики я тут не поднимал, но при необходимости да, нужен будет OSPF (хотя мне тут рядом утверждают, что и без него заведётся, но сам не проверял).

      Лучшее или нет – будет полностью зависеть от ситуации. Можете лучше – дерзайте! Кто ж останавливает.

Leave a Reply