GRE туннель в Linux настраивается очень быстро. Единственное требование — наличие белых IP адресов. Туннелирование такого типа относится к типу Ethernet.
GRE туннель в Linux
Туннелирование происходит по публичной сети, поэтому нужны публичные ip адреса (про публичные и приватные диапазоны).
Через туннель хосты смогут взаимодействовать используя приватные адреса, так будто они находятся в одной сети физически.
Ниже приведён готовый к использованию шаблон, в котором нужно только подставить ip адреса
ip link add grelan type gretap local <IP1> remote <IP2>
ip link set grelan up
iptables -I INPUT -p gre -s <IP2> -j ACCEPT
ip link add grelan type gretap local <IP2> remote <IP1>
ip link set grelan up
iptables -I INPUT -p gre -s <IP1> -j ACCEPT
Пример настройки GRE туннеля
Имеем два хоста в публичной сети:
- Машина 1 с внешним адресом 1.2.3.4
- Машина 2 с внешним адресом 2.3.4.5
Адреса, которые будут у машин после создания туннеля
192.168.0.1
192.168.0.2
Машина 1:
1. Добавляем виртуальную сетевую карту-шлюз на машину 1:
ip link add grelan type gretap local 1.2.3.4 remote 2.3.4.5
Сетевой интерфейс будет видно в ip a, на можно добавлять адреса, добавлять в мост и т.п.
2. Включаем добавленную карту
ip link set grelan up
2. Если запущен IP-tables — разрешаем GRE-трафик
iptables -I INPUT -p gre -s 2.3.4.5 -j ACCEPT
Пример добавленного интерфейса в выводе ip a:
Машина 2:
На втором хосте создаем аналогичные настройки:
1. Виртуальная сетевая карта-шлюз
ip link add grelan type gretap local 2.3.4.5 remote 1.2.3.4
2. Включение карты
ip link set grelan up
3. Изменения в iptables
iptables -I INPUT -p gre -s 1.2.3.4 -j ACCEPT
GRE туннель в Linux создан,теперь нужно добавить адреса для интерфейсов и направить трафик для необходимых сетей или хостов в туннель на обеих сторонах.
Можно добавлять адреса
Машина 1:
ip addr add dev grelan 192.168.0.1/24
route add -net 192.168.0.0 netmask 255.255.255.0 gw 1.2.3.4
Машина 2:
ip addr add dev grelan 192.168.0.2/24
route add -net 192.168.0.0 netmask 255.255.255.0 gw 2.3.4.5
Для интерфейса после указания адреса, маски добавляем маршруты.
Правила будут в силе до ближайшей перезагрузки.
Чтобы изменения подгружались после перезагрузки нужно внести правила в сетевые настройки серверов. В Debian/Ubuntu изменения нужно вносить /etc/network/interfaces или в файлы в директории /etc/network/interfaces.d.
Читайте про туннели типа ip-ip