Содержание

GRE

GRE (Generic Routing Encapsulation — общая инкапсуляция маршрутов) — протокол туннелирования сетевых пакетов, разработанный компанией CISCO Systems. Его основное назначение — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP пакеты. Номер протокола в IP — 47.

Что такое GRE туннель?

GRE туннель представляет собой соединение точка - точка, его можно считать одной из разновидностей VPN туннеля, без шифрования. Основное достоинство GRE это возможность передавать широковещательный трафик, что позволяет пропускать через такой туннель протоколы маршрутизации использующие его, IPSec — протокол защиты сетевого трафика на IP-уровне туннели в чистом виде этого не могут. Причин для организации GRE туннеля может быть множество от банальной необходимости пробросить свою сеть через чужое IP пространство до использования протоколов OSPF, RIPv2, EGRP совместно с IPSec. Так же GRE, в отличии от IPIP, может помочь пробросить немаршрутизируюмые протоколы, такие как NetBios, IPX, AppleTalk.

Различия между туннель GRE или IPIP:

Туннелирование увеличивает нагрузку на систему и сеть, потому что добавляются дополнительные IP-заголовки. Таким образом, если обычный размер пакета (MTU) в сети равен 1500 байтам, то при пересылке по туннелю, пакет будет меньше, 1476 байт для GRE и 1480 байт для IPIP. Задать MTU можно вручную или с помощью PMTUD (path MTU discovery). Основная проблема в ручной настройке MTU и/или MSS состоит в том, что по пути между вашими площадками может оказаться линк с MTU, скажем, 1300. Тут на помощь может прийти pmtud. Протокол целиком и полностью полагается на ICMP протокол диагностики перегрузки сети unreachable messages, которые должны быть разрешены на всем пути между соседями. Cisco рекомендует устанавливать MTU в 1400 байт вне зависимости от того работает GRE поверх IPSec в туннельном или в транспортном режиме.

Туннелирование подразумевает три протокола:

Как происходит инкапсуляции заголовка GRE в IP-пакет?

GRE-заголовок накладывается «поверх» стандартного IP-пакета. При этом в самом GRE-заголовке содержится так называемый Tunnel IP Header. Именно в нем содержится информация о tunnel source и tunnel destination.

Данные адреса вкладываются в основной пакет, когда он отправляется в публичную сеть. В поле Control Information оригинального IP-пакета содержатся исходные IP-адреса источника и назначения. Таким образом, локальные серые IP-адреса скрыты в пакете, а в маршрутизации участвуют только те адреса которые мы указали в tunnel source и tunnel destination. При передаче пакета в локальную сеть GRE-заголовок отбрасывается и остается «чистый» IP-пакет.

Настройка GRE туннелей в Debian GNU/Linux

GRETap (GRE Tunneling and Packet Reassembly Tool): Это утилита, которая позволяет создавать GRE-туннели на уровне ядра Linux. GRE-туннель позволяет упаковывать сетевые пакеты в другие пакеты IP для передачи через сеть, обеспечивая тем самым возможность создания виртуальной частной сети (VPN) поверх существующей сети. GRETap также обеспечивает функциональность по повторному сбору пакетов в случае их потери или повреждения в процессе передачи через GRE-туннель.

Убедитесь, что у вас установлены необходимые пакеты, включая iproute2, который содержит утилиту ip, позволяющую работать с сетевыми интерфейсами в Linux.

Настройка GRE туннелей в Debian и Ubuntu одинаковы. Имеется 2 удаленных сервера Debian 7.8 Wheezy с реальными статическими IP адресами.

Заключение

GRETap обеспечивает гибкость и надежность в сетевых архитектурах, позволяя администраторам сетей и разработчикам создавать виртуальные сетевые соединения. Помните, что обычный GRE-туннель не обеспечивает шифрования данных по умолчанию. Он предоставляет механизм для упаковки сетевых пакетов и передачи их через сеть, но без дополнительного слоя безопасности.