Wolf
Roman Grossi
Tobishua
Digital nomad and originality

Буквально несколько абзацев о том, как просто сделать GRE-туннель в Linux потратив на это всего 5 минут.

Я использую GRE, чтобы иметь доступ со своего виртуального VPN сервера во внутреннюю сеть моего физического сервера и всех виртуальных серверов на нём. Для GRE не понадобится установка каких-либо пакетов и много времени.

Для начала разрешим на обоих серверах, между которыми делаем туннель использование GRE. Для этого необходимо добавить соответствующие правила iptables:

iptables -A INPUT -p gre -j ACCEPT

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

iptables -A INPUT -p gre -s X.X.X.X -j ACCEPT

для того, чтобы принимать GRE только с IP-адреса X.X.X.X

После этого создадим скрипт для подключения к GRE на первом сервере. Я использую именно скрипт для того, чтобы автоматически поднимать туннель при перезагрузке сервера:

#!/bin/sh -e

# Удаляем туннель если он уже существует
ip tunnel del tun1
# Добавляем туннель где 198.51.100.10 - адрес удалённого сервера, а 203.0.113.15 - адрес этого сервера
ip tunnel add tun1 mode gre remote 198.51.100.10 local 203.0.113.15 dev eth0
# Делаем pointopoint подключение
ifconfig tun1 10.100.0.10 pointopoint 10.100.0.100
# Добавляем роутинг
route add -net 10.100.0.0 netmask 255.255.255.0 gw 10.100.0.100
# Дополнительный маршрут (если не нужен, то можно и без него)
route add -net 172.16.0.0 netmask 255.255.255.0 gw 10.100.0.100

Маршрутов можно добавить сколько угодно, при это в качестве gw у всех указываем удалённые локальный адрес сервера в нашем GRE-туннеле (в примере 10.100.0.100

 

Теперь создадим скрипт на втором сервере:

#!/bin/sh -e
 
ip tunnel add tun1 mode gre remote 203.0.113.15 local 198.51.100.10 dev eth1
ifconfig tun1 10.100.0.100 pointopoint 10.100.0.10

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

Комментарии к этому хорошему посту: