Маршрутизация подсети IPv4 через IPIP

5dc5a13dbea8508a65c27e61b65d7faa

Туннель IPIP, как можно понять из его названия — это туннель, работающий в режиме «IP over IP» (RFC 2003).

Такие туннели обычно используются для соединения двух внутренних IPv4-подсетей через общедоступную IPv4-сеть (интернет). Использование IPIP создаёт минимальную дополнительную нагрузку на систему, но по такому туннелю можно выполнять только однонаправленную передачу данных (unicast). То есть, построив подобный туннель, нельзя будет использовать его для групповой передачи данных (multicast).

IPIP-туннели поддерживают режимы «IP over IP» и «MPLS over IP».

И сегодня в данный статье напишу, как можно маршрутизировать подсеть IPv4, например на сервер для VDS серверов с другого сервера.

IP донор (сервер, с которого будем прокидывать подсеть): x.x.x.67
Подсеть: z.z.z.2/28
IP сервера (принимающий прокинутую подсеть): y.y.y.80
Оба сервера на Ubuntu 22.04(Можно использовать любой дистрибутив, который вам удобен)

И так, для начала откройте терминал сервера донора и выполните такие команды:
Включаем модуль ipip

1. modprobe ipip
Разрешаем пересылку пакетов
2. echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p

3. apt install net-tools
(RHEL — yum install net-tools)
4. iptunnel add ipip1 mode ipip local x.x.x.67 remote y.y.y.80 ttl 255
5. ip link set ipip1 up
6. ip route add z.z.z.2/28 dev ipip1

Все минимальные настройки воспроизвели на сервере доноре.

Приступаем к настройке на принимающем сервере.

Включаем модуль ipip
1. modprobe ipip
Разрешаем пересылку пакетов
2. echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p
3. apt install net-tools
(RHEL — yum install net-tools)
4. iptunnel add ipip1 mode ipip remote x.x.x.67 local y.y.y.80 ttl 255
5. ip link set ipip1 up
6. ip rule add from z.z.z.2/28 table 888
7. ip route add default dev ipip1 table 888
8. ip route add z.z.z.2/28 dev vmbr0 table 888
9. ip addr add z.z.z.2/28 dev vmbr0
Адрес z.z.z.2 будет использоваться как шлюз для VDS (Например на VMmanager 6)
Туннель построен и подсеть успешно проброшена на сервер.

Проверить можете используя команду mtr z.z.z.2 (Установить можно командой apt install mtr или RHEL yum install mtr)

Иногда возникает проблема на VDS, что терминал может отваливаться или иметь нестабильное соединение, это чаще всего связано с не верным значением MTU.

Для начала вам стоит с сервера (принимающего) подобрать верное значение MTU командой:
ping -M do -s 1500 x.x.x.67

Если видите, что пакеты не проходят, то выполняйте команду с постоянным понижением значения MTU на 2 (ping -M do -s 1498 x.x.x.67 и т.д) пока не увидите, что пакеты стали проходить. Далее установите значение MTU на сетевой интерфейс IPIP, команда:
ip link set mtu 1498 dev ipip1
(У вас будет свое значение MTU)

Так вы стабилизируете сетевое соединение.

Надеюсь данная статья облегчит некоторые задачи для вас.

PS: В данной статье не учитываются ваши настройки правил на файрволлах.

Для написания статьи использовались официальные документации и некоторые статьи на Хабр.

© Habrahabr.ru