2026-09-16
Настройка IPsec Site-to-Site VPN между двумя Mikrotik

MikroTik RouterBoard RB260GS

Настройка IPsec Site-to-Site VPN между двумя Mikrotik

IPsec site-to-site — классика для объединения двух офисов в одну сеть. В отличие от WireGuard, IPsec работает в любой версии RouterOS (включая 6.x) и совместим с большинством производителей. Разберём настройку туннеля между двумя роутерами Mikrotik по схеме «сеть 1 ↔ сеть 2».


Схема и договорённости

Параметр Офис 1 (RU) Офис 2 (MSK)
Публичный IP 1.1.1.1 2.2.2.2
LAN сеть 192.168.10.0/24 192.168.20.0/24
LAN IP роутера 192.168.10.1 192.168.20.1
Pre-shared key (PSK) VerySecretKey123! тот же

ПСK должен быть одинаковым на обеих сторонах. Используйте длинную случайную строку.


Часть 1. Офис 1 (серверная сторона)

Шаг 1. Настраиваем IPsec peer

/ip ipsec peer add 
    address=2.2.2.2 
    name=peer_msk 
    secret="VerySecretKey123!" 
    verify-certificate=no 
    dh-group=modp2048 
    enc-algorithm=aes-256 
    hash-algorithm=sha256 
    lifetime=1d 
    proposal-check=obey 
    exchange-mode=ike2
  • address — публичный IP или DNS второй стороны
  • exchange-mode=ike2 — современный, быстрый; если вторая сторона не поддерживает IKEv2 — ставьте main
  • dh-group=modp2048, aes-256, sha256 — согласованная с обеих сторон криптография

Шаг 2. Настраиваем IPsec identity

/ip ipsec identity add 
    peer=peer_msk 
    auth-method=pre-shared-key 
    secret="VerySecretKey123!" 
    policy-template-group=default

Метка policy-template-group=default важна — так для каждой пары подсетей автоматически создаются SA с темплейтом.

Шаг 3. Прописываем policy (какие сети шифровать)

/ip ipsec policy add 
    peer=peer_msk 
    tunnel=yes 
    src-address=192.168.10.0/24 
    dst-address=192.168.20.0/24 
    action=encrypt 
    level=require

Шаг 4. Открываем порты IPsec

/ip firewall nat add chain=srcnat 
    src-address=192.168.10.0/24 dst-address=192.168.20.0/24 
    action=accept 
    comment="no masq to VPN"
/ip firewall filter add chain=input 
    protocol=ipsec-esp action=accept 
    comment="Allow IPsec ESP"
/ip firewall filter add chain=input 
    protocol=udp dst-port=500,4500 action=accept 
    comment="Allow IKE"

Первое правило критично: NAT не должен маскаредить трафик между VPN-сетями, иначе туннель поднимется, но пакеты не пройдут.


Часть 2. Офис 2 (клиентская сторона)

Всё симметрично, только адреса меняются местами:

/ip ipsec peer add 
    address=1.1.1.1 
    name=peer_ru 
    secret="VerySecretKey123!" 
    verify-certificate=no 
    dh-group=modp2048 
    enc-algorithm=aes-256 
    hash-algorithm=sha256 
    lifetime=1d 
    proposal-check=obey 
    exchange-mode=ike2

/ip ipsec identity add 
    peer=peer_ru 
    auth-method=pre-shared-key 
    secret="VerySecretKey123!" 
    policy-template-group=default

/ip ipsec policy add 
    peer=peer_ru 
    tunnel=yes 
    src-address=192.168.20.0/24 
    dst-address=192.168.10.0/24 
    action=encrypt 
    level=require

/ip firewall nat add chain=srcnat 
    src-address=192.168.20.0/24 dst-address=192.168.10.0/24 
    action=accept 
    comment="no masq to VPN"
/ip firewall filter add chain=input 
    protocol=ipsec-esp action=accept
/ip firewall filter add chain=input 
    protocol=udp dst-port=500,4500 action=accept

Шаг 5. Проверка туннеля

Пинг через туннель

С офиса 1 пингуем внутренний IP офиса 2:

/ping 192.168.20.1

Должен быть ответ. Если нет — смотрим статусы:

Статус IPsec

/ip ipsec active-peers print
/ip ipsec policy print
/ip ipsec installed-sa print
  • В active-peers должен появиться 2.2.2.2
  • В installed-sa — пара SA для туннеля
  • В policy — счётчики bytes-in/bytes-out должны расти

Логи

/log print where topics~"ipsec"

Если туннель не поднимается

Проверьте по порядку:

  1. Порты открыты — с офиса 2 выполните tool ping src-address=...</ip> 1.1.1.1 и проверьте доступность UDP 500/4500 снаружи (tool port-scan).
  2. PSK одинаковый — перечитайте печатно: секрет совпадает на обеих сторонах.
  3. Crypto совпадаетdh-group, enc-algorithm, hash-algorithm должны быть одинаковыми с обеих сторон. Упростите до aes-128 + sha1 + modp1024 для отладки.
  4. NAT не бьёт — если за обоими роутерами офисы без публичных IP, добавьте для начального согласования IKE nat-traversal=yes в peer у обеих сторон.
  5. Логи: log print покажет, на каком шаге обрывается (ike1/ike2/quick mode).
  6. FastTrack/RAW — отключите fasttrack-правило для трафика между VPN-сетями, иначе пакеты могут не попасть в IPsec-обработку:
    routeros
    /ip firewall raw add chain=prerouting
    src-address=192.168.10.0/24 dst-address=192.168.20.0/24
    action=accept

Шпаргалка (обе стороны, поменяйте адреса местами)

/ip ipsec peer add address=<REMOTE_IP> secret="PSK" verify-certificate=no 
    dh-group=modp2048 enc-algorithm=aes-256 hash-algorithm=sha256 
    exchange-mode=ike2 lifetime=1d proposal-check=obey
/ip ipsec identity add peer=<peer> auth-method=pre-shared-key secret="PSK" 
    policy-template-group=default
/ip ipsec policy add peer=<peer> tunnel=yes 
    src-address=<LOCAL_LAN>/24 dst-address=<REMOTE_LAN>/24 
    action=encrypt level=require
/ip firewall nat add chain=srcnat src-address=<LOCAL_LAN>/24 
    dst-address=<REMOTE_LAN>/24 action=accept
/ip firewall filter add chain=input protocol=ipsec-esp action=accept
/ip firewall filter add chain=input protocol=udp dst-port=500,4500 action=accept

Tонкости

  • Gre поверх IPsec vs чистый IPsec: если нужен multicast/broadcast между офисами (например AD/LDAP-репликация) — рассмотрите GRE-over-IPsec. Чистый IPsec шифрует unicast только.
  • MTU туннеля 1400 (ESP добавляет ~58 байт). Если при передаче крупных файлов висят — проверьте на клиентах MSS clamping или выставите MTU 1400.
  • IKEv2 vs IKEv1: IKEv2 быстрее поднимается и надёжнее в некоторых случаях, но старые оборудования (например старые Cisco) понимают только IKEv1. Для совместимости — main.
  • DDoS-защита у ISP: некоторые провайдеры режут UDP 500/4500. Проблемный вариант — использовать NAT-T и проверить порты снаружи.

Проверено на: RouterOS 6.49+ / 7.14+.
Дата: Сентябрь 2026.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *