Mikrotik gre tunnel key

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Настройка туннелей GRE и IPIP на роутерах Mikrotik

Настройка туннелей GRE и IPIP на роутерах Mikrotik

Одна из наиболее часто решаемых системным администратором задач — объединение нескольких сетей в единое пространство, для обеспечения совместной работы с общими ресурсами (site-to-site). Обычно для этих целей используется VPN, тип которого большой роли не играет. Но именно для данной задачи более предпочтительно использовать IPIP или GRE-туннели, особенно если вам требуется хорошая пропускная способность соединения. В данной статье мы расскажем об особенностях настройки и использования данного вида подключений.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Сначала коротко о протоколах. GRE (Generic Routing Encapsulation — общая инкапсуляция маршрутов) — протокол инкапсуляции, разработан компанией Cisco и предназначен для инкапсуляции пакетов сетевого уровня (L3) в IP-пакеты. IPIP (IP Encapsulation within IP — инкапсуляция IP в IP) во многом похож на GRE, но работает только с IPv4-трафиком. Наиболее популярным и используемым протоколом является GRE, его поддержка присутствует во всех современных ОС и сетевом оборудовании. Mikrotik поддерживает оба вида туннелей.

Туннели, созданные с помощью данных протоколов, не имеют никаких механизмов обеспечения безопасности (шифрование, аутентификация), поэтому в чистом виде они практически не используются. Для обеспечения нужного уровня безопасности используется IPsec, поверх которого уже разворачивается GRE или IPIP-туннель ( GRE over IPsec, IPIP over IPsec). Далее, говоря о данном типе туннелей мы будем подразумевать ввиду именно их.

Еще одна особенность указанных протоколов — они работают без сохранения состояния соединения (stateless) и понять в каком состоянии находится туннель невозможно. Мы можем только настроить обе стороны и проверить передачу данных между ними. Кроме очевидных минусов такое решение имеет и свои плюсы, GRE или IPIP-интерфейсы являются статичными и присутствуют в системе вне зависимости от состояния туннелей, что облегчает настройку маршрутизации. А состояние туннеля позволяют контролировать механизмы RouterOS, которые с заданной периодичностью умеют проверять доступность его второго конца.

Ни GRE, ни IPIP не используют порты, поэтому они не могут преодолеть NAT, это требует от обоих узлов иметь выделенные IP-адреса или находиться в одной сети. Проблема NAT частично снимается при использовании IPsec, за счет использования протокола NAT-T, но требование выделенных адресов узлов остается. Кроме того, по этой причине вы не сможете установить более одного GRE или IPIP-соединения между узлами.

Итак, подведем коротко итог: для использования GRE или IPIP-туннелей вам потребуются выделенные IP-адреса с обоих сторон и для защиты передаваемых данных обязательно использовать IPsec. Что касается оборудования, то предпочтительно использовать роутеры с аппаратной поддержкой шифрования — hEX, RB3011/4011 и все остальные модели на базе процессоров ARM. В этом случае вполне достижима пропускная способность туннеля на уровне 300-400 МБит/с. На остальных моделях роутеров (MIPSBE, SMIPS) вы получите не более 30-40 МБит/с. Подробнее об этом вы можете прочитать здесь.

Далее мы будем придерживаться следующей схемы:

Согласно которой у нас имеются две условные сети: A — 192.168.111.0/24, внешний IP-адрес 198.51.100.1 и B — 192.168.222.0/24, внешний адрес 203.0.113.1. Между ними мы будем поднимать GRE или IPIP-туннель с внутренними адресами 10.10.10.1 и 10.10.10.2.

Читайте также:  Mikrotik разрешить весь трафик

Настройка GRE-туннеля

Открываем Winbox и переходим в Interfaces — Interface где добавляем новый интерфейс с типом GRE Tunnel, в открывшемся окне заполняем поля: Local Address — внешний IP-адрес этого роутера, Remote Address — внешний IP-адрес противоположного роутера, IPsec Secret — общий ключ IPsec, рекомендуется использовать длинную случайную строку из цифр, букв в обоих регистрах и спецсимволов. Также обязательно снимите флаг Allow Fast Path.

В терминале это можно выполнить командой:

Полностью аналогичную настройку выполняем и на втором роутере, только меняем местами Local Address и Remote Address, после чего туннель должен перейти в рабочее состояние. За отслеживание состояние туннеля отвечает параметр Keepalive, по умолчанию он предполагает десять попыток с интервалов в 10 секунд, если за это время с противоположной стороны не будет получен ответ, то туннель будет считаться неработоспособным.

Важный момент связан с настройками IPsec, RouterOS использует для туннелей настройки по умолчанию и нет возможности это переопределить, поэтому на обоих роутерах профили default в IP — IPsec — Proposals и Profiles должны иметь одинаковые настройки.

В противном случае вы будете получать ошибку при согласовании параметров IPsec:

Если все сделано правильно, то в Interfaces — Interface напротив туннеля появится флаг R — running, что означает, что туннель находится в рабочем состоянии.

Настройка IPIP-туннеля

Настройка данного вида туннеля ничем не отличается от GRE, также переходим в Interfaces — Interface и добавляем новый интерфейс с типом IP Tunnel. Указываем все те же параметры: Local Address — внешний IP-адрес этого роутера, Remote Address — внешний IP-адрес противоположного роутера, IPsec Secret — общий ключ IPsec, также снимаем флаг Allow Fast Path.

В терминале это же действие:

Затем дублируем настройки на второй роутер, заменяя местами Local Address и Remote Address, также учитываем все то, что было сказано выше о настройках IPsec.

Настройка маршрутизации

Итак, туннель поднят, теперь нужно пустить в него трафик между сетями. Прежде всего присвоим адреса туннельным интерфейсам. Согласно схеме со стороны роутера А это будет 10.10.10.1, а со стороны роутера B — 10.10.10.2. Переходим в IP — Addresses и добавляем новый адрес: Address — 10.10.10.1/24 — именно так, с указанием префикса (/24, что соответствует маске 255.255.255.0), в противном случае сеть у вас работать не будет. В поле Interface указываем имя интерфейса GRE или IPIP-туннеля.

В терминале для этого же действия выполните команду:

Где вместо interface=gre-tunnel1 укажите имя собственного туннельного интерфейса.

Аналогичные настройки следует выполнить и на втором роутере.

Теперь приступим к указанию маршрутов, для роутера A нам нужно указать маршрут к сети 192.168.222.0/24 через туннель. Переходим в IP — Routes и создаем новый маршрут. В качестве Dst. Address указываем сеть назначения — 192.168.222.0/24, в поле Gateway указываем шлюз в эту сеть — противоположный конец туннеля, который имеет адрес 10.10.10.2, после того как мы нажмем Apply в поле рядом со шлюзом появится исходящий интерфейс, в качестве которого будет выступать наш туннель.

В терминале:

На втором роутере делаем аналогичные настройки с учетом IP-адреса роутера и сети назначения.

После чего пробуем получить из одной сети доступ к узлу другой. Если все сделано правильно, то попытка увенчается успехом.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Читайте также:  Роутер или точка доступа для квартиры

Дополнительные материалы:

Mikrotik

The Dude

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Или подпишись на наш Телеграм-канал:

Источник

Introduction

Sub-menu: /interface gre
Standards: RFC1701

GRE (Generic Routing Encapsulation) is a tunneling protocol that was originally developed by Cisco. It can encapsulate a wide variety of protocols creating a virtual point-to-point link.

GRE is the same as IPIP and EoIP which were originally developed as stateless tunnels. This means that if the remote end of the tunnel goes down, all traffic that was routed over the tunnels will get blackholed. To solve this problem, RouterOS has added a ‘keepalive’ feature for GRE tunnels.

GRE tunnel adds a 24 byte overhead (4-byte gre header + 20-byte IP header). GRE tunnel can forward only IP and IPv6 packets (ethernet type 800 and 86dd). Do not use the «Check gateway» option «arp» when a GRE tunnel is used as a route gateway.

Properties

Property Description
allow-fast-path (yes | no; Default: yes) Whether to allow FastPath processing. Must be disabled if IPsec tunneling is used.
clamp-tcp-mss (yes | no; Default: yes) Controls whether to change MSS size for received TCP SYN packets. When enabled, a router will change the MSS size for received TCP SYN packets if the current MSS size exceeds the tunnel interface MTU (taking into account the TCP/IP overhead). The received encapsulated packet will still contain the original MSS, and only after decapsulation the MSS is changed.
comment (string; Default: ) Short description of the tunnel.
disabled (yes | no; Default: no) Enables/disables tunnel.
dont-fragment (inherit | no; Default: no) Whether to include DF bit in related packets.
dscp (inherit | integer [0-63]; Default: ) Set dscp value in Gre header to a fixed value or inherit from dscp value taken from tunnelled traffic
ipsec-secret (string; Default: ) When secret is specified, router adds dynamic IPsec peer to remote-address with pre-shared key and policy (by default phase2 uses sha1/aes128cbc).
keepalive (integer[/time],integer 0..4294967295; Default: 10s,10) Tunnel keepalive parameter sets the time interval in which the tunnel running flag will remain even if the remote end of tunnel goes down. If configured time,retries fail, interface running flag is removed. Parameters are written in following format: KeepaliveInterval,KeepaliveRetries where KeepaliveInterval is time interval and KeepaliveRetries — number of retry attempts. By default keepalive is set to 10 seconds and 10 retries.
l2mtu (integer [0..65536]; Default: 65535) Layer2 Maximum transmission unit.
local-address (IP; Default: 0.0.0.0) IP address that will be used for local tunnel end. If set to 0.0.0.0 then IP address of outgoing interface will be used.
mtu (integer [0..65536]; Default: 1476) Layer3 Maximum transmission unit.
name (string; Default: ) Name of the tunnel.
remote-address (IP; Default: ) IP address of remote tunnel end.

Setup example

The goal of this example is to get Layer 3 connectivity between two remote sites over the internet

We have two sites, Site1 with local network range 10.1.101.0/24 and Site2 with local network range 10.1.202.0/24.

The first step is to create GRE tunnels. A router on site 1:

A router on site 2:

As you can see tunnel configuration is quite simple.

In this example, a keepalive is not configured, so tunnel interface will have a running flag even if remote tunnel end is not reachable

Now we just need to set up tunnel addresses and proper routing. A router on site 1:

Читайте также:  Что значит значок замок на роутере

A router on site 2:

At this point, both sites have Layer 3 connectivity over the GRE tunnel.

Источник

Manual:Interface/Gre

Applies to RouterOS: v5+

Contents

Summary

Sub-menu: /interface gre
Standards: GRE RFC 1701

GRE (Generic Routing Encapsulation) is a tunnelling protocol that was originally developed by Cisco. It can encapsulate a wide variety of protocols creating a virtual point-to-point link.

GRE is the same as IPIP and EoIP which were originally developed as stateless tunnels. Which means that if the remote end of the tunnel goes down, all traffic that was routed over the tunnels will gets blackholed. To solve this problem, RouterOS have added ‘keepalive’ feature for GRE tunnels.

GRE tunnel adds a 24 byte overhead (4-byte gre header + 20-byte IP header).

Note: GRE tunnel can forward only IP and IPv6 packets (ethernet type 800 and 86dd). Do not use «Check gateway» option «arp» when GRE tunnel is used as route gateway.

Properties

Property Description
clamp-tcp-mss (yes | no; Default: yes) Controls whether to change MSS size for received TCP SYN packets. When enabled, a router will change the MSS size for received TCP SYN packets if the current MSS size exceeds the tunnel interface MTU (taking into account the TCP/IP overhead).The received encapsulated packet will still contain the original MSS, and only after decapsulation the MSS is changed.
comment (string; Default: ) Short description of the tunnel.
disabled (yes | no; Default: no) Enables/disables tunnel.
dont-fragment (inherit | no; Default: no)
dscp (inherit | integer [0-63]; Default: ) Set dscp value in Gre header to a fixed value or inherit from dscp value taken from tunnelled traffic
ipsec-secret (string; Default: ) When secret is specified, router adds dynamic ipsec peer to remote-address with pre-shared key and policy with default values (by default phase2 uses sha1/aes128cbc).
keepalive (integer[/time],integer 0..4294967295; Default: 10s,10) Tunnel keepalive parameter sets the time interval in which the tunnel running flag will remain even if the remote end of tunnel goes down. If configured time,retries fail, interface running flag is removed. Parameters are written in following format: KeepaliveInterval,KeepaliveRetries where KeepaliveInterval is time interval and KeepaliveRetries — number of retry attempts. By default keepalive is set to 10 seconds and 10 retries.
l2mtu (integer [0..65536]; Default: 65535) Layer2 Maximum transmission unit.
local-address (IP; Default: 0.0.0.0) IP address that will be used for local tunnel end. If set to 0.0.0.0 then IP address of outgoing interface will be used.
mtu (integer [0..65536]; Default: 1476) Layer3 Maximum transmission unit.
name (string; Default: ) Name of the tunnel.
remote-address (IP; Default: ) IP address of remote tunnel end.

Setup examples

The goal of this example is to get Layer 3 connectivity between two remote sites over the internet.

We have two sites, Site1 with local network range 10.1.101.0/24 and Site2 with local network range 10.1.202.0/24.

First step is to create GRE tunnels. Router on site 1:

Router on site 2:

As you can see tunnel configuration is quite simple.

Note: In this example keepalive is not configured, so tunnel interface will have running flag even if remote tunnel end is not reachable

Now we just need to set up tunnel addresses and proper routing. Router on site 1:

Router on site 2:

At this point both sites have Layer 3 connectivity over GRE tunnel.

Источник