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