- Настройка GRE туннеля в Linux подробный гайд по настройке и использованию
- Настройка проксирования внешнего адреса через GRE туннель между Linux серверами
- GRE туннель – пример настройки на Linux роутере
- Настройка сервера
- Настройка клиента
- Настройка маршрутизации
- Заключение
- Видео:
- pFsense #12 Настройка тоннеля GRE между двумя pfsense.
Настройка 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, чтобы выключить его.
Настройка проксирования внешнего адреса через GRE туннель между Linux серверами
Для настройки проксирования внешнего адреса через GRE туннель на Linux серверах необходимо выполнить следующие шаги:
- Установите пакеты, необходимые для работы с GRE-туннелями, используя следующую команду:
- Настройте GRE-туннель на обоих серверах, указав исходный и целевой IP-адреса. Например, для сервера 1:
- Настройте IP-адрес туннеля на каждом сервере:
- Активируйте туннель на обоих серверах:
- Настройте таблицу маршрутизации для перенаправления трафика через туннель:
- Настройте правило маршрутизации для применения таблицы маршрутизации к туннелю:
- Настройте проксирование портов на сервере 1:
- Настройте проксирование портов на сервере 2 с использованием iptunnel:
- Настройте маршрутизацию на сервере 2:
- Настройте правило маршрутизации на сервере 2:
- Проверьте работоспособность проксирования, отправив тестовый запрос через внешний адрес сервера 1:
sudo apt-get install iproute2
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
— интерфейс сетевого соединения между серверами.
sudo ip addr add адр1ес_next_hop_ip dev gre-tunnel
Здесь адрес_next_hop_ip
— это IP-адрес следующего узла на пути туннеля.
sudo ip link set gre-tunnel up
sudo ip route add prefix default via адрес_next_hop_ip dev gre-tunnel table table_id
Здесь table_id
— это идентификатор таблицы маршрутизации, который можно выбрать любым числом.
sudo ip rule add from адр1ес_local_ip table table_id
Здесь адрес_local_ip
— это IP-адрес сервера 1.
sudo iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport порт -j SNAT --to-source адрес_next_hop_ip
Здесь порт
— это номер порта, который будет проксироваться, адрес_next_hop_ip
— IP-адрес следующего узла на пути туннеля.
sudo iptunnel add gre-tunnel mode gre local сервер2_ip remote сервер1_ip ttl 255
sudo ip route add prefix default via сервер1_ip dev gre-tunnel table table_id
sudo ip rule add from сервер2_ip table table_id
wget --header "Host: ваш_домен" http://адрес_внешнего_сервера
Здесь ваш_домен
— это ваш домен, по которому будет происходить запрос, адрес_внешнего_сервера
— адрес внешнего сервера.
Теперь проксирование внешнего адреса через 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 туннель между серверами.
Заключение
GRE туннель позволяет создавать виртуальные сетевые интерфейсы между серверами с использованием протокола GRE. Пример настройки GRE туннеля на Linux роутере показывает, как настроить и использовать GRE туннель для передачи трафика между серверами.
Видео:
pFsense #12 Настройка тоннеля GRE между двумя pfsense.
pFsense #12 Настройка тоннеля GRE между двумя pfsense. by Иван Глазков 13,563 views 6 years ago 20 minutes