GRE - сетевой протокол туннелирования, позволяющий соединять удаленные узлы со статическими адресами в канал через публичную сеть. Соединение происходит путём инкапсуляции пакетов различных протоколов сетевого уровня в IP-пакеты. Протокол не поддерживает шифрование данных и работает без отслеживания состояния соединения (stateless).


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


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


Настроить GRE-туннель возможно двумя способами - в Web-интерфейсе и через консоль. Рассмотрим оба способа (Инструкция по подключению к роутеру RTU)


Данный вид VPN-туннелирования при использовании двух устройств RTUx68 настраивается зеркальным образом на обоих роутерах!


1. Создание GRE-туннеля через Web-интерфейс


Чтобы создать туннель, перейдем во вкладку "Сеть - Интерфейсы" и добавим два интерфейса:


1.1. Зададим имя интерфейса (например, GREext - внешний) и выберем протокол "GRE туннель через IPv4"


1.2. Укажем необходимые параметры для подключения:

    Удаленный IPv4 или FQDN - адрес удаленного узла

    Локальный IPv4 - WAN адрес нашего роутера

    На вкладке "Дополнительные настройки" можно задать прочие необходимые параметры


1.3. Добавим второй интерфейс с названием GREint (внутренний), выберем протокол "Статический адрес" и устройство - псевдоним @GREext (если его нет, создаем как "пользовательский")


Создаем интерфейс, и далее указываем IPv4 адрес и маску сети, в данном случае - туннельный адрес


    Сохраняем и применяем параметры.


1.4. Теперь необходимо создать зону VPN в межсетевом экране, а также разрешить входящие соединения для GRE:

    Переходим в вкладку "Сеть - Межсетевой экран", создаем новую зону:


Сохраняем, применяем.


1.5. Далее, в том же Межсетевом экране переходим во вкладку "Правила для трафика" и создаем новое правило:

Протокол GRE возможно придется указать вручную как "пользовательский".


После сохранения всех параметров и настройки на обоих устройствах, туннель GRE должен автоматически "подняться".


2. Создание GRE-туннеля через ssh


Чтобы создать туннель, отредактируем файл /etc/config/network:

nano /etc/config/network 


2.1. Создание и настройка GRE-туннеля:

        Создадим внешний интерфейс GRE:

config interface 'GREext' - вводим имя интерфейса туннеля
option mtu '1476' - задаём значение MTU
option proto 'gre' - устанавливаем режим работы туннеля
option ttl '255' - задаём значение TTL
option peeraddr '172.26.19.5' - указываем адрес удаленного хоста
option ipaddr '172.26.19.15' - указываем WAN адрес нашего роутера

        Создадим внутренний(туннельный) интерфейс GRE:

config interface 'GREint' - вводим имя интерфейса туннеля
option proto 'static' - указываем статический протокол
option ipaddr '10.0.0.2' - указываем локальный туннельный адрес
option netmask '255.255.255.0' - указываем локальную маску подсети
option device '@GREext' - указываем "синоним" к внешнему интерфейсу


2.2. Настройка межсетевого экрана

        Редактируем файл /etc/config/firewall:
        nano /etc/config/firewall 


        В конце списка правил создаём новую зону VPN и задаём правила для нее:

config zone
option name 'gre' – создаём зону (gre)
option input 'ACCEPT' – входящий трафик - принимать
option output 'ACCEPT'– исходящий трафик - принимать
option forward 'ACCEPT' – перенаправление - принимать
option masq '1' – включаем маскарадинг
option network 'GREext'


        Протокол GRE использует порт (протокол) 47, его необходимо будет "открыть" для доступа к роутеру извне.

config rule 
option target 'ACCEPT'
option _name 'gre'
option src 'wan'
option proto '47'


        Настраиваем перенаправление между зонами.
        Разрешаем перенаправление в зону 
lan из зоны gre:

config forwarding
option dest 'lan'
option src 'gre'


        Разрешаем перенаправление из зоны lan в зону gre:

config forwarding
option dest 'gre'
option src 'lan'


Результат должен быть таким с обеих сторон:



Если Вам необходимо произвести шифрование и защиту данного туннеля, Вы можете воспользоваться механизмом IPSec, ознакомиться с которым можно по ссылке: IPSec шифрование в роутере RTU