Как настроить тунель на Hetzner по GRE ?

Сама статья
1. Настройка на сервере роутере. (Тут должны быть непосредственно прикреплены подсети и AlmaLinux (На момент тестов – 8.9))

1.1 Включаем ip forward в файле “/etc/sysctl.conf”
Для этого выполняем команду:
nano /etc/sysctl.conf
Добавляем в файл значение “net.ipv4.ip_forward=1”
Сохраняем файл, выполняем команду:
sysctl -p
ВАЖНО! Если пропустите хоть один шаг, в дальнейшем туннель может рассыпаться.

1.2 Устанавливаем пакеты “net-tools, iptables, iproute2” (Вместо iproute2 может быть iproute) (Здесь он нам нужен для iptunnel и роутов)
Для этого выполняем команду:
apt install net-tools iptables iproute2

1.3 Поднимаем сам GRE, MTU не трогаем, оно для нас полностью подходит.
Для этого выполняем команды:
sudo modprobe ip_gre
lsmod | grep gre
СВЕРЯЕМСЯ! Вывод после выполнения команд должен быть такой:
ip_gre                          0
gre                               1 ip_gre
Снова необходимо выполнить команды, которые поднимут GRE туннель:
iptunnel add gre1 mode gre local <strong>ROUTER_IP</strong> remote <strong>NODE_IP</strong> ttl 255
ip addr add 192.168.5.1/30 dev gre1
ip link set gre1 up
ВНИМАНИЕ! Здесь необходимо заменить “ROUTER_IP” на IPv4 адрес вашего сервера-роутера, а NODE_IP на IPv4 адрес вашей ноды куда необходимо перенести подсеть.
Выполняем следующую команду:
ip a
СВЕРЯЕМСЯ! Вывод после выполнения команды должен содержать данную информацию:
gre1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN group default qlen 1
        link/gre SERVER_IP peer NODE_IP
        inet 192.168.5.1/30 scope global gre1
              valid_lft forever preferred_lft forever
1.4 Добавляем роут подсети и работаем с firewall ОС:
Выполняем следующую команду:
ip route add x.x.x.x/y via 192.168.5.2 dev gre1
ВНИМАНИЕ! Здесь необходимо заменить “x.x.x.x/y” на вашу подсеть, вовсе не обязательно иметь или переносить /24, это может быть любая от /30? например – 1.1.1.168/29.
1.5 Отключаем нахуй все firewall в нашем AlmaLinux, выполняя следующую команду:
systemctl disable --now firewalld
Теперь проверяем через команду ip a, чтобы подсеть x.x.x.x/y не осталась на каком-либо сетевом интерфейсе сервера-роутера. Если IP-Адреса или подсеть осталась на каком-либо интерфейсе удаляем их через команду:
ip a del x.x.x.x/y dev INTERFACE
ВНИМАНИЕ! Здесь необходимо заменить “x.x.x.x/y” на вашу подсеть, например 1.1.1.168/29, а “INTERFACE” на имя сетевого интерфейса, где находятся данные IP-Адреса, например ens3.

КОНЕЦ НАСТРОЙКИ РОУТЕРА + ВАЖНОЕ! Изменения пропадают с рестартом сервера-роутера! Поэтому надо сохранить их либо в etc/network/interfaces, либо в условный rc.local (Не очень рекомендую). Сохранить необходимо данные с пунктов 1.3 и 1.4, остальное делается разово и не требует повторений.
2. Настройка на ноде или узле, кому как привычнее. (Необходима ОС AlmaLinux (На момент тестов – 8.9))
2.1 Включаем ip forward в файле “/etc/sysctl.conf”
Для этого выполняем команду:
nano /etc/sysctl.conf
Добавляем в файл значение “net.ipv4.ip_forward=1”
Сохраняем файл, выполняем команду:
sysctl -p
ВАЖНО! Если пропустите хоть один шаг, в дальнейшем туннель может рассыпаться.

2.2 Устанавливаем пакеты “net-tools, iptables, iproute2” (Вместо iproute2 может быть iproute) (Здесь он нам нужен для iptunnel и роутов)
Для этого выполняем команду:
apt install net-tools iptables iproute2

2.3 Поднимаем сам GRE, MTU не трогаем, оно для нас полностью подходит.
Для этого выполняем команды:
sudo modprobe ip_gre
lsmod | grep gre
СВЕРЯЕМСЯ! Вывод после выполнения команд должен быть такой:
ip_gre                          0
gre                               1 ip_gre
Снова необходимо выполнить команды, которые поднимут GRE туннель:
iptunnel add gre1 mode gre local NODE_IP remote ROUTER_IP ttl 255
ip addr add 192.168.5.2/30 dev gre1
ip link set gre1 up
ВНИМАНИЕ! Здесь необходимо заменить “ROUTER_IP” на IPv4 адрес вашего сервера-роутера, а NODE_IP на IPv4 адрес вашей ноды куда необходимо перенести подсеть.

2.4 Добавляем роуты и айпишники на узел и сам узел в VMmanager 6:
Для этого выполняем команду:
echo 100 vm >> /etc/iproute2/rt_tables
Отлично, теперь добавляем узел/ноду в VMmanager 6 с типом сети – Маршрутизация и айпи адресами из подсети +1 (ЭТО ВАЖНО)
Пример: если у нас подсеть 1.1.1.168/29, тогда в VMmanager 6 мы добавляем адресное пространство 1.1.1.169-1.1.1.175.
После добавления узла переходим в ssh и выполняем команды:
ip rule add from x.x.x.x/y table vm
ip route add 0.0.0.0/0 via 192.168.5.1 dev gre1 table vm
ip route add x.x.x.x/y dev vmbr0 table vm
ip addr add x.x.x.x/y dev vmbr0
ВНИМАНИЕ! Здесь необходимо заменить “x.x.x.x/y” на вашу подсеть, например – 1.1.1.168/29.

2.5 Добавляем разрешение для форвардов, выполняя следующие команды:
iptables -A FORWARD -i gre1 -o vmbr0 -j ACCEPT
iptables -A FORWARD -i vmbr0 -o gre1 -j ACCEPT

КОНЕЦ НАСТРОЙКИ НОДЫ/УЗЛА + ВАЖНОЕ! Изменения пропадают с рестартом сервера! Поэтому надо сохранить их либо в etc/network/interfaces, либо в условный rc.local (Не очень рекомендую). Сохранить необходимо данные с пунктов 2.3, 2.4 и 2.5, остальное делается разово и не требует повторений. ВАЖНО Х2: выполнять “echo 100 vm >> /etc/iproute2/rt_tables” из пункта 2.4 повторно не надо.

Читать дальше