Сегодня рассмотрим как поднять IPIP туннель с Ubuntu (16/18/20) на микротик. Такой туннель может пригодится например для переброса бэкапов с VDS к нам на сервер в локальной сети.
Схемка у нас будет примерно такая:
ubuntu 16 (ifupdown)
ubuntu 18/20 (netplan)
Микротик
Начнём с микротика, потому что независимо от того какую мы будет использовать ОС, на микротике не поменяется ничего. Первым делом добавляем интерфейс, для этого тыкаем кнопку Interfaces и жмём на плюсик, выбираем IP Tunnel. Заполняем поля: Name, Local Address (внешние адрес микротика), Remote Address (адрес убунты). Скрываем поле Keepalive, к сожалению опция работает только с микротиками.
Добавляем адрес, на вновь созданный интерфейс. IP — Addresses — кнопка плюс.
Я буду использовать для адресации внутри туннеля 30 подсеть. 30 подсеть допускает 2 адреса для хостов. В моём случае это 172.26.30.2 для микротика и 172.26.30.1 для убунты.
На этом настройка микротика завершена, переходим к Ubuntu. Настройка IPSEC для IPIP туннеля рассмотрена здесь.
IPIP туннель настраивается на версиях ниже 18 и 18 и выше разным образом, поэтому мы рассмотрим оба варианта
Ubuntu 16.04 (ifupdown)
Для настройки IPIP туннеля создадим файл с именем интерфейса /etc/network/interfaces.d/tun1 для этого выполним команду:
nano /etc/network/interfaces.d/tun1
И вставим в этот файл текст:
auto tun1 iface tun1 inet static address 172.26.30.1 netmask 255.255.255.252 pre-up ip tunnel add tun1 mode ipip local 98.213.46.5 remote 145.16.220.86 post-down iptunnel del tun1
Где:
-
- tun1 — название интерфейса туннеля
- 172.26.30.1 — локальный адрес внутри туннеля
- 98.213.46.5 — внешний адрес Ubuntu
- 145.16.220.86 — внешний адрес микротика
Сохраняем файл (Ctrl + O затем Ctrl + X выходим). После этого можем поднимать интерфейс командой ifup tun1. Для проверки воспользуемся командой ip a:
С этого момента пакеты между адресами 172.26.30.1 и 172.26.30.2 будут ходить по туннелю. Можем проверить коммандой ping
Но на схеме я так же указал внутреннюю подсеть за микротиком — 172.16.220.0/24. Давайте так же добавим маршрут в неё. Для этого в файл который мы только что создали, /etc/network/interfaces.d/tun1 добавим строчку:
up ip ro add 172.16.220.0/24 dev tun1
файлик после этого будет выглядеть примерно так:
auto tun1 iface tun1 inet static address 172.26.30.1 netmask 255.255.255.252 pre-up ip tunnel add tun1 mode ipip local 98.213.46.5 remote 145.16.220.86 up ip route add 172.16.220.0/24 dev tun1 post-down iptunnel del tun1
Для применения изменений передёрнем интерфейс.
ifdown tun1 ifup tun1
Проверим таблицу маршрутизации командой route -n. Должно выглядеть примерно так:
На этом всё. Пакеты будут успешно проходить. К созданному туннелю можно настроить IPSEC шифрование. Переходим к IPIP туннелю с помощью нетплана.
Ubuntu 18.04 / Ubuntu 20.04 (netplan)
Как известно, начиная с 18 версии в Ubuntu решили использовать netplan. Примеры настройки приведены — здесь. Процесс очень похож на настройку туннеля в 16 версии, отличается немного синтаксис.
Для настройки туннеля без маршрута добавим файл: /etc/netplan/02-ipip-tun1.yaml
nano /etc/netplan/02-ipip-tun1.yaml
вставляем следующий текст:
network: version: 2 tunnels: tun1: mode: ipip remote: 145.16.220.86 local: 98.213.46.5 addresses: - 172.26.30.1/30
Где:
-
- tun1 — название интерфейса туннеля
- 172.26.30.1/30 — локальный адрес внутри туннеля
- 98.213.46.5 — внешний адрес Ubuntu
- 145.16.220.86 — внешний адрес микротика
- ipip — тип туннеля.
Для применения настроек набираем:
netplan apply
Как видим настройка даже чуть проще чем в 16 версии, просто непривычно.
Для добавления маршрута внутренней сети, приводим наш ямл к следующему виду:
network: version: 2 tunnels: tun1: mode: ipip remote: 145.16.220.86 local: 98.213.46.5 addresses: - 172.26.30.1/30 routes: - to: 172.16.220.0/24 via: 172.26.30.2 on-link: true
Тут тоже всё довольно просто:
- to — куда мы добавляем маршрут;
- via — адрес шлюза;
- on-link — добавлять маршрут только после поднятия интерфейса.
Применение изменений всё той же командой netplan apply. На этот туннель так же как и в 16 версии можно повесить IPSEC.
Если остались вопросы — задавайте их в комментариях.