Настройка gre туннеля linux

Настройка GRE туннеля в Linux подробный гайд по настройке и использованию

Настройка GRE туннеля в Linux: подробный гайд по настройке и использованию

В сетевых системах Linux GRE (Generic Routing Encapsulation) туннель представляет собой метод создания виртуального приватного канала связи между двумя узлами в сети. GRE предоставляет возможность для безопасного транспорта трафика между удаленными сетевыми интерфейсами, используя механизм инкапсуляции пакетов. GRE туннель позволяет отправлять пакеты между удаленными системами, симулируя прямое подключение, даже если они находятся в разных сетях.

Основной протокол, который используется для GRE туннелей, это IP. То есть, GRE пакеты инкапсулируются в IP заголовок, который позволяет пересылать пакеты через сеть. Каждый GRE туннель имеет свой собственный IP адрес, называемый IP адресом туннеля. При передаче пакетов между серверами с использованием GRE туннеля, они инкапсулируются в GRE заголовок, который в свою очередь инкапсулируется в IP заголовок. Это позволяет правильно направлять пакеты через сеть.

Настройка GRE туннелей в Linux очень проста. Команды ifconfig и ip позволяют легко создавать и настраивать GRE туннели. Например, чтобы создать и настроить GRE туннель с помощью ifconfig, можно использовать следующую команду:

ifconfig gre1 xx.xx.xx.xx netmask 255.255.255.0 pointopoint yy.yy.yy.yy

В этой команде xx.xx.xx.xx — адрес самого сервера, а yy.yy.yy.yy — адрес сервера, с которым необходимо установить GRE туннель.

После создания GRE туннеля, можно использовать команду ifconfig, чтобы управлять его настройками. Например, можно выполнить команду ifconfig gre1 up, чтобы включить туннель, или ifconfig gre1 down, чтобы выключить его.

Читайте также:  Как отключить обновления на Windows 10 подробная инструкция

Настройка проксирования внешнего адреса через GRE туннель между Linux серверами

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

  1. Установите пакеты, необходимые для работы с GRE-туннелями, используя следующую команду:
  2. sudo apt-get install iproute2
  3. Настройте GRE-туннель на обоих серверах, указав исходный и целевой IP-адреса. Например, для сервера 1:
  4. sudo ip tunnel add gre-tunnel mode gre local сервер1_ip remote сервер2_ip dev eth0

    Здесь gre-tunnel — это имя туннеля, сервер1_ip — IP-адрес сервера 1, сервер2_ip — IP-адрес сервера 2, eth0 — интерфейс сетевого соединения между серверами.

  5. Настройте IP-адрес туннеля на каждом сервере:
  6. sudo ip addr add адр1ес_next_hop_ip dev gre-tunnel

    Здесь адрес_next_hop_ip — это IP-адрес следующего узла на пути туннеля.

  7. Активируйте туннель на обоих серверах:
  8. sudo ip link set gre-tunnel up
  9. Настройте таблицу маршрутизации для перенаправления трафика через туннель:
  10. sudo ip route add prefix default via адрес_next_hop_ip dev gre-tunnel table table_id

    Здесь table_id — это идентификатор таблицы маршрутизации, который можно выбрать любым числом.

  11. Настройте правило маршрутизации для применения таблицы маршрутизации к туннелю:
  12. sudo ip rule add from адр1ес_local_ip table table_id

    Здесь адрес_local_ip — это IP-адрес сервера 1.

  13. Настройте проксирование портов на сервере 1:
  14. sudo iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport порт -j SNAT --to-source адрес_next_hop_ip

    Здесь порт — это номер порта, который будет проксироваться, адрес_next_hop_ip — IP-адрес следующего узла на пути туннеля.

  15. Настройте проксирование портов на сервере 2 с использованием iptunnel:
  16. sudo iptunnel add gre-tunnel mode gre local сервер2_ip remote сервер1_ip ttl 255
  17. Настройте маршрутизацию на сервере 2:
  18. sudo ip route add prefix default via сервер1_ip dev gre-tunnel table table_id
  19. Настройте правило маршрутизации на сервере 2:
  20. sudo ip rule add from сервер2_ip table table_id
  21. Проверьте работоспособность проксирования, отправив тестовый запрос через внешний адрес сервера 1:
  22. wget --header "Host: ваш_домен" http://адрес_внешнего_сервера

    Здесь ваш_домен — это ваш домен, по которому будет происходить запрос, адрес_внешнего_сервера — адрес внешнего сервера.

Читайте также:  Как решить проблему с обновлением встроенного ПО на SSD с помощью Storage Executive

Теперь проксирование внешнего адреса через GRE туннель между Linux серверами работает. Трафик от сервера 1 будет направляться через туннель на сервер 2 и обратно, позволяя абстрагироваться от физических сетевых условий и безопасности сети.

GRE туннель – пример настройки на Linux роутере

Настройка сервера

Предположим, что на сервере с установленной GNU/Linux системой (например, Ubuntu или Debian Wheezy) имеется два интерфейса – eth0 и gre1. Для начала, настроим IP-адреса для каждого из них:

ifconfig eth0 up
ifconfig eth0 192.168.1.1 netmask 255.255.255.0
modprobe ip_gre
ip tunnel add gre1 mode gre local 192.168.1.1 remote 192.168.2.1
ifconfig gre1 up

В данном примере, мы настраиваем GRE туннель между сервером (192.168.1.1) и удаленным сервером (192.168.2.1). Также, на сервере должна быть установлена граничная таблица маршрутизации:

ip route add default via 192.168.2.1

Для проверки настроек туннеля, можно использовать команду ping и проверить соединение между серверами:

ping 192.168.2.1

Если все настройки верны, то сервер должен получить ответ от удаленного сервера.

Настройка клиента

Настройка клиента

На клиентском сервере с установленным FreeBSD (например) также имеются два интерфейса – em0 и gre2. Настройка клиентского сервера будет следующей:

ifconfig em0 up
ifconfig em0 192.168.2.1 netmask 255.255.255.0
sysctl -w net.inet.ip.forwarding=1
modprobe ip_gre
ip tunnel add gre2 mode gre local 192.168.2.1 remote 192.168.1.1
ifconfig gre2 up netmask 192.168.1.1

В данном примере, мы настраиваем GRE туннель между клиентским сервером (192.168.2.1) и удаленным сервером (192.168.1.1).

Настройка маршрутизации

Чтобы трафик между серверами проходил через созданный GRE туннель, необходимо настроить правила маршрутизации:

ip route add 192.168.1.0/24 dev gre2
ip route add 192.168.2.0/24 dev gre1

Теперь, чтобы трафик проходил через GRE туннель, требуется пробросить пакеты через граничные таблицы:

iptables -t nat -A POSTROUTING -o gre1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o gre2 -j MASQUERADE

Таким образом, мы настроили передачу пакетов через GRE туннель между серверами.

Читайте также:  Что будет за пиратский windows office

Заключение

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

Видео:

pFsense #12 Настройка тоннеля GRE между двумя pfsense.

pFsense #12 Настройка тоннеля GRE между двумя pfsense. by Иван Глазков 13,563 views 6 years ago 20 minutes

Оцените статью