GRE туннель


gre туннель является стандартом при необходимости организовать соединение точка-точка. gre позволяет туннелировать multicast и IPv6



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

GRE тоннели позволяют передавать multicast и IPv6 трафик.



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



Еще один минус — через туннель такого вида нельзя работать через NAT.



Чтобы из Linux роутера сделать узел, который мог бы быть одной из точек туннеля нужно чтобы ядро было скомпилировано с модулем ip_gre.ko.


Обычно оно используется при компиляции — проверить поддержку модуля можно так:

find /lib/modules/`uname -r` -name 'ip_gre.ko'



GRE туннель — пример настройки на Linux роутере


Изначальные данные : имеется 3 сети: сети A и B для каждой из которых выделен диапазон локальных адресов, внешняя сеть C (Internet).



Сеть A:

network 10.0.1.0
netmask 255.255.255.0
router 10.0.1.1 (адрес из диапазона 10.х.х.х назначается на роутере)

Роутер в сети С с адресом 172.16.11.12



Сеть В:

network 10.0.2.0
netmask 255.255.255.0
router 10.0.2.1 (адрес из диапазона 10.х.х.х назначается на роутере)


Роутер в сети С с адресом172.18.20.2



Настройки на роутере в сети А:

ip tunnel add netb mode gre remote 172.18.20.22 local 172.16.11.12 ttl 255


ip link set netb up


ip addr add 10.0.1.1 dev netb


ip route add 10.0.2.0/24 dev netb



Командой в первой строке создается туннель и режиме gre в сеть netb и указывается удаленный и локальный адреса устройств (ttl максимальный).  Вторая строка активирует сеть. Третья присваивает адрес роутеру в локальной сети (для более крупных сетей этот адрес может быть, например, 10.0.2.1), а четвертая задает маршрут в саму сеть netb указанием адреса с маской /24.



Пакет, который попадет в туннель будет иметь следующий вид:

gre туннель


Т.е. к данным будет добавляться 2 экземпляра заголовков с IP адресом (из приватной сети и из публичной, а также заголовок GRE их разделяющий)



Настройки на роутере в сети В задаются точно также:

ip tunnel add neta mode gre remote 172.16.11.12 local 172.18.20.22 ttl 255


ip link set neta up


ip addr add 10.0.2.1 dev neta


ip route add 10.0.1.0/24 dev neta



Чтобы удалить туннель на роутере A нужно выполнить:

ip link set netb down


ip tunnel del netb



На роутере B:

ip link set neta down


ip tunnel del neta



Читайте также про ip-ip туннели — самый простой способ туннелирования между двумя хостами.

Сказать спасибо