UMGUM.COM 

Linux + GRE ( Соединение двух Linux-станций простейшим GRE-туннелем. )

11 апреля 2015  (обновлено 3 февраля 2019)

OS: Linux.

Задача: соединить две Linux-станции простейшим туннелем, поддерживающим инкапсуляцию в том числе и широковещательного трафика - это GRE (Generic Routing Encapsulation).


Возможно понадобится загрузить модуль поддержки GRE-протокола:

# modprobe ip_gre

Прежде чем приступать к добавлению нового туннеля, есть смысл просмотреть список уже установленных:

# ip tunnel list

Активируем виртуальный интерфейс GRE-туннеля, указывая при этом IP-адреса, между которыми передаётся инкапсулированный трафик:

# ip tunnel add tund0 mode gre local 123.45.67.89 remote 123.45.90.90

Задаём IP-адрес виртуальному интерфейсу GRE-туннеля:

# ip addr add 10.172.1.253/30 dev tund0

Активируем (поднимаем) виртуальный интерфейс GRE-туннеля:

# ip link set tund0 up

Очевидно, что на стороне принимающей туннельное соединение, потребуется провести аналогичные вышеприведённым операции, учитывая смену ролей "local" и "remote" адресов. Кроме того, не забываем про разрешающие правила для защитных экранов на пути туннеля.

Простейший способ проверить, установился ли GRE-туннель - пустить серию ICMP-пакетов на адреса виртуальных GRE-интерфейсов посредством утилиты "ping" (более информативный вывод у "mtr", но её потребуется инсталлировать отдельно).

Конечно же, туннель с поддержкой инкапсуляции широковещательного трафика и протоколов маршрутизации создают не для связи всего двух компьютеров. Мы соединяем межсетевые маршрутизаторы, на которых должна быть активирована функциональность пересылки пакетов между интерфейсами:

# sysctl net.ipv4.ip_forward=1

Добавляем правило маршрутизации, отправляющее в GRE-туннель трафик, адресованный удалённой сети:

# route add -net 192.168.123.0 netmask 255.255.255.0 gw 10.172.1.254

Важно знать, что нельзя задать GRE-туннелю напрашивающееся по началу имя "gre0", "tunl0" или "sit0" - они зарезервированы в коде модуля ядра как "base devices" и применяются по умолчанию для обработки пакетов протокола, не попавших в другие явно обозначенные интерфейсы. Эти вспомогательные интерфейсы автоматически создаются при работе с протоколом.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )