Исходные данные
В качестве стенда используются два сервера, каждый из которых снабжен двумя сетевыми интерфейсам. Один интерфейс используется для подключения в общей сети серверов, второй интерфейс - для подключения к локальной сети сервера. Конфигурация:
- cервер А:
- интерфейс eth0 (интерфейс общей сети):
- IP-адрес: 192.168.27.137;
- интерфейс eth1 (интерфейс сети сервера А):
- IP-адрес: 192.168.166.237;
- сеть: 192.168.166.0/24:
- внутренний IP-адрес туннеля GRE: 10.0.1.1/30;
- cервер Б:
- интерфейс eth0:
- интерфейс eth1 (интерфейс сети сервера Б):
- IP-адрес: 192.168.17.174;
- сеть: 192.168.17.0/24:
- внутренний IP-адрес туннеля GRE: 10.0.1.2/30;
Настройка тоннеля GRE
Включение перенаправления сетевых пакетов
Независимо от выбранного далее способа настройки тоннеля GRE для его работы нужно разрешить перенаправление сетевых пакетов. Для этого на сервере А и на сервере Б:
В файле /etc/sysctl.conf раскомменировать строку:
Блок кода |
---|
net.ipv4.ip_forward=1 |
Для активации сделанных изменений выполнить команду:
Сделанные изменения будут сохраняться после перезагрузки ОС.
Настройка правил iptables
Если в правила iptables включено применение по умолчанию правила reject, то работу тоннеля GRE нужно разрешить специальным правилом. Это можно сделать выполнив на обоих серверах команду:
Command |
---|
sudo iptables -A INPUT -p gre -j ACCEPT |
Или, что более безопасно, разрешить подключение только для конкретного сервера:
На сервере А | На сервере Б |
---|
Command |
---|
sudo iptables -A INPUT -p gre -s 192.168.27.56 -j ACCEPT |
|
Command |
---|
sudo iptables -A INPUT -p gre -s 192.168.27.137 -j ACCEPT |
|
Для предотвращения проблем с передачей пакетов из-за уменьшенного на 20 байт MTU на обеих серверах можно добавить правило iptables, включающее автоматический перерасчет MSS для соединений:
Command |
---|
sudo iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu |
Настройка тоннеля GRE c помощью
графического плагинаСделанные изменения будут сохраняться после перезагрузки ОС.
Настройка тоннеля GRE c помощью интерфейса командной строки NetworkManager
Информация |
---|
Для того, чтобы команды выполялись без использования sudo, текущий пользователь дожен быть включен в группу netdev. |
Действия по настройке серверов симметричны, здесь и далее для наглядности различия в командах выделены цветом:
Шаг | На сервере А | На сервере Б |
---|
1. | Создать соединение и устройство тоннеля GRE с именем gre1. При выполнении команды будут автоматически загружены необходимые для работы GRE модули ядра. |
|
Command |
---|
nmcli con add type ip-tunnel ip-tunnel.mode gre con-name gre1 ifname gre1 \ remote 192.168.27.56 local 192.168.27.137 |
|
Command |
---|
nmcli con add type ip-tunnel ip-tunnel.mode gre con-name gre1 ifname gre1 \ remote 192.168.27.137 local 192.168.27.56 |
|
2. | Назначить созданному устройству тоннеля GRE статический IP-адрес. Команды должны выполняться в указанном прорядке, сначала присвоение адреса, потом выбор метода: |
|
Command |
---|
nmcli con mod gre1 ipv4.addresses '10.0.1.1/30' nmcli con mod gre1 ipv4.method manual |
|
Command |
---|
nmcli con mod gre1 ipv4.addresses '10.0.1.2/30' nmcli con mod gre1 ipv4.method manual |
|
3. | Создать статический маршрут для перенаправления трафика в сеть сервера Б (сеть 192.168.17.0/24): | Создать статический маршрут для перенаправления трафика в сеть сервера А (сеть 192.168.17.0/24): |
|
Command |
---|
nmcli con mod gre1 +ipv4.routes "192.168.17.0/24 10.0.1.2" |
|
Command |
---|
nmcli con mod gre1 +ipv4.routes "192.168.166.0/24 10.0.1.1" |
|
4. | Включить соединение gre1: |
|
Command |
---|
sudo nmcli con up gre1 |
|
Сделанные изменения будут сохраняться после перезагрузки ОС.
Настройка тоннеля GRE c помощью графического плагина NetworkManahet nm-connection-editor
Информация |
---|
Для того, чтобы редактирование сетевых интерфейсов было доступно без использования sudo, текущий пользователь дожен быть включен в группу netdev. |
Графический плагин NetworkManager для редактирования сетевых соединений доступен для запуска из системного трея (нажать правой кнопкой мышина иконку сетевых соединений, затем во всплавающем меню выбрать пункт "Изменить соединения")
или из командной строки командой:
Command |
---|
nm-connection-manager |
После запуска приложения для создания нового туннеля:
- Нажать значок "+";
- Выбрать тип соединения "ip-туннель";
- Нажать кнопку "Создать";
- В появившейся форме:
- Выбрать режим "GRE";
- Заполнить остальные параметры параметры (значания параметров приведены в предыдкщем разделе);
- Перейти во вкладку "Параметры IPv4";
- Нажать кнопку "Маршруты" и добавить нужные маршруты;
- Нажать кнопку "Сохранить".
Сделанные изменения будут сохраняться после перезагрузки ОС.
Настройка тоннеля GRE c помощью службы networking
Для создания тоннеля GRE с помощью службы networking:
1. Добавить в файл /etc/network/interfaces следующие строки:
На сервере А | На сервере Б |
---|
auto gre1 iface gre1 inet static address 10.0.1.1 netmask 255.255.255.252 mtu 1400 up ifconfig gre1 multicast pre-up iptunnel add gre1 mode gre remote 192.168.27.56 local 192.168.27.137 dev eth0 post-up route add -net 192.168.17.0 netmask 255.255.255.0 gw 10.0.1.2 pointopoint 10.0.1.2 post-down iptunnel del gre1 | auto gre1 iface gre1 inet static address 10.0.1.2 netmask 255.255.255.252 mtu 1400 up ifconfig gre1 multicast pre-up iptunnel add gre1 mode gre remote 192.168.27.137 local 192.168.27.56 dev eth0 post-up route add -net 192.168.166.0 netmask 255.255.255.0 gw 10.0.1.1 pointopoint 10.0.1.1 post-down iptunnel del gre1 |
2. Перезапустить службу networking:
Command |
---|
sudo systemctl restart networking |
Сделанные изменения будут сохраняться после перезагрузки ОС.
Настройка тоннеля GRE c помощью сценария
На сервере А | На сервере Б |
---|
Command |
---|
sudo ip tunnel add gre1 mode gre remote 192.168.27.56 local 192.168.27.137 dev eth0 sudo ifconfig gre1 10.0.1.1 pointopoint 10.0.1.2 sudo ifconfig gre1 mtu 1400 sudo ifconfig gre1 up sudo route add -net 192.168.17.0 netmask 255.255.255.0 gw 10.0.1.2 |
|
Command |
---|
sudo ip tunnel add gre1 mode gre remote 192.168.27.137 local 192.168.27.56 dev eth0 sudo /sbin/ifconfig gre1 10.0.1.2 pointopoint 10.0.1.1 sudo /sbin/ifconfig gre1 mtu 1400 sudo /sbin/ifconfig gre1 up sudo route add -net 192.168.166.0 netmask 255.255.255.0 gw 10.0.1.1 |
|
Примечание |
---|
Сделанные изменения не будут сохраняться после перезагрузки ОС. |
Проверка работоспособности тоннеля GRE
Проверить список имеющихся тоннелей можно командой:
Простейшую проверку работоспособнности созданного тоннеля GRE можно выполнить с помощью команды ping, отправляя пакеты на адрес интерфейса сети другого сервера (интерфейс eth1):
На сервере А | На сервере Б |
---|
Command |
---|
ping 192.168.17.174 |
|
Command |
---|
ping 192.168.166.237 |
|