GRE туннель

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