Mikrotik: Настраиваем тоннель GRE между Mikrotik и Ubuntu

Курс «Настройка оборудования MikroTik»

Освоить MikroTik вы можете с помощью онлайн-курса «Настройка оборудования MikroTik». В курсе изучаются все темы из официальной программы MTCNA. Автор – официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто еще не держал его в руках. В состав входят 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Узнать подробности

Почему именно GRE: легко, просто, удобно. А в сочетании с IPSEC довольно безопасно.

Исходные данные:

  • XXX.XXX.XXX.XXX - белый IP Mikrotik
  • YYY.YYY.YYY.YYY - белый IP сервера с Ubuntu
  • 172.16.1.1 - внутренний адрес тоннеля на сервере с Ubuntu
  • 172.16.1.2 - внутренний адрес тоннеля на Mikrotik

Создаем новый тоннель: Interfaces → GRE Tunnel, заполняем настройки:

  • Name: GRE1
  • Local Address: XXX.XXX.XXX.XXX
  • Remote Address: YYY.YYY.YYY.YYY
  • DSCP: inherit
  • Don't fragment: no
  • Clamp TCP MSS: yes

Назначаем интерфейсу адрес:

IP → Addresses:

  • Address: 172.16.1.2/24
  • Interface: GRE1

Разрешаем ходить пакетам:

IP → Firewall → Filter Rules, добавляем новое правило:

  • Chain: input
  • Src Address: YYY.YYY.YYY.YYY
  • Protocol: 47(gre)
  • Action: accept

В файле /etc/network/interfaces добавляем интерфейс tun1 в самый конец файла:

 iface tun1 inet static
    address 172.16.1.1
    netmask 255.255.255.0
    pre-up iptunnel add tun1 mode gre local YYY.YYY.YYY.YYY remote XXX.XXX.XXX.XXX ttl 255
    up ifconfig tun1 multicast
    pointopoint 172.16.1.2
    post-down iptunnel del tun1

Даем команду на поднятие тоннеля:

sudo ifup tun1

Проверяем - тоннель должен подняться. Для проверки можно попинговать внутренние IP 172.16.1.1 и 172.16.1.2 соответственно.

В тоннеле GRE по умолчанию нет никакой шифрации, т.е. данные ходят в открытом виде и все можно прекрасно посмотреть любым сниффером (tcpdump, wireshark). Для обеспечения безопасности необходимо настроить IPSEC.

Исходные данные:

  • Ключ шифрования: VerySecretChipherKey

IP → IPsec → Proposals

Изменяем default:

  • Auth Algorithms: sha256
  • Encr Algorithms: aes-128 cbc, aes-192 cbc, aes-256 cbc
  • Lifetime: 00:30:00
  • PFS Group: modp1024

А в свойствах GRE-тоннеля настраиваем:

  • IPsec Secret: VerySecretChipherKey

Для Ubuntu и прочих линуксов есть несколько пакетов: racoon и несколько форков *swan (StrongSwan, LibreSwan, OpenSwan). Я остановился на StrongSwan - т.к. он мне больше понравился и в сети много готовых примеров.

Установка проста:

sudo apt install strongswan

Редактируем файл конфигурации /etc/ipsec.conf

# ipsec.conf - strongSwan IPsec configuration file

config setup
    charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"

conn %default
#    keyexchange=ikev2

conn mikrotik
    # Try connect on daemon start
    auto=start

    # Authentication by PSK (see ipsec.secret)
    authby=secret

    # Disable compression
    compress=no

    # Re-dial setings
    closeaction=clear
    dpddelay=30s
    dpdtimeout=150s
    dpdaction=restart

    # ESP Authentication settings (Phase 2)
    esp=aes128-sha256-modp1024,aes192-sha256-modp1024,aes256-sha256-modp1024

    # UDP redirects
    forceencaps=no

    # IKE Authentication and keyring settings (Phase 1)
    ike=aes128-sha256-modp1024,aes192-sha256-modp1024,aes256-sha256-modp1024
    ikelifetime=86400s
    keyingtries=%forever
    lifetime=1800s

    # Internet Key Exchange (IKE) version
    # Default: Charon - ikev2, Pluto: ikev1
    keyexchange=ikev1

    # connection type
    type=transport

    # Peers
    left=XXX.XXX.XXX.XXX
    right=YYY.YYY.YYY.YYY

    # Protocol type. May not work in numeric then need set 'gre'
    leftprotoport=47
    rightprotoport=47

Добавляем ключ шифрования в файл /etc/ipsec.secrets

YYY.YYY.YYY.YYY XXX.XXX.XXX.XXX : PSK VerySecretChipherKey

Перезапускаем IPSEC:

sudo ipsec restart

Проверяем /var/log/syslog на Ubuntu и командой

ipsec status

На Mikrotik смотрим Log и IP → IPsec → Peers

Если есть проблемы при работе с тоннелем - желательно уменьшить MTU до 1435 на обоих концах туннеля.

Mikrotik: Изменить в свойствах GRE-тоннеля MTU на 1435

Ubuntu: В файле /etc/network/interfaces добавить строку в настройку интерфейса tun1

mtu 1435

Так же может понадобиться настройка firewall на Микротике и Ubuntu, но тут уж сам настраивает под себя.

Чтобы с Микротика все благополучно проходило через тоннель необходимо сделать маскарадинг:

IP → Firewall → NAT со следующими настройками:

  • Chain: srcnat
  • Out Interface: GRE1
  • Action: Accept
  • software/mikrotik/mikrotik-ubuntu-gre.txt
  • Последнее изменение: 2022/09/15 20:17
  • 127.0.0.1