Tinc VPN. Простое соединение сетей через VPN

Когда встает задача соединить несколько сетей в одну то на выбор есть много технологий и средств для того чтобы это сделать, в том числе и аппаратные. Но если это требуется сделать срочно и в качестве шлюзов сети используются Linux машины то можно воспользоваться интересным решением — Tinc VPN. Он позволяет построить VPN канал за несколько минут и с использованием всего одного открытого порта, который можно указать в настройках. Приступим к объединению сетей.

Схема подключения Tinc VPN

tinc_vpn_1.jpg
Для начала поставим нужный нам пакет (на каждом шлюзе):

Далее создадим виртуальный интерфейс с требуемыми параметрами. Для этого отредактируем /etc/network/interfaces.
Первом шлюзу мы назначим адрес: 172.30.0.1/24 второму, соответственно, 172.30.0.2/24

Конфигурация виртуального интерфейса первого шлюза:

Второй шлюз аналогично, но с адресом 172.30.0.2

Объяснение параметров:
iface tap0 inet static — объявляем, что адреса будут заданы вручную.
address 172.30.0.1 — задаем первому VPN серверу адрес 172.30.0.1
netmask 255.255.255.0 — маска для VPN сети (в данном случае используется /24, но можно сделать меньше)
pre-up ip tuntap add dev $IFACE mode tap — создаем tap адаптер, прежде чем его включить.
post-down ip tuntap del dev $IFACE mode tap — при выключении уничтожаем адаптер.

Виртуальный адаптер для Tinc VPN создан и готов к работе (остается только перезапустить сетевые службы).

Соответственно для второго шлюза создаем такие же записи, но с адресом 172.30.0.2.

Перейдем к непосредственной настройке Tinc VPN.
Для этого, первым делом, отредактируем /etc/tinc/nets.boot на первом и втором шлюзе,
дописав в него строчку с названием нашей сети (сети из этого списка будут запускаться автоматически при старте демона).

Tinc VPN хранит настройки VPN сетей в отдельных папках. Поэтому создадим требуемую структуру папок для нашей VPN сети (на первом и втором шлюзе).

Теперь нам нужно создать файл конфигурации (на двух хостах):

и отредактировать его (будем считать, что у нас первый шлюз подключается ко второму):

Соответственно второй шлюз у нас является принимающим соединение и его конфигурационный файл будет выглядеть так:

Name = blackdiver_a — имя хоста для VPN подключения
Interface = tap0 — интерфес виртуальной сети
Mode = switch — используем режим коммутатора
MaxTimeout = 120 — максимальный таймаут до переподключения
PriorityInheritance = yes — использовать UDP для транспорта
ConnectTo = blackdiver_b — точка подключения.

Далее генерируем ключи для всех хостов:

На выходе получим 2 файла:
/etc/tinc/perfect/rsa_key.priv — приватный ключ
/etc/tinc/perfect/hosts/blackdiver_a (blackdiver_b для второго хоста) публичные ключи для обмена между серверами.

Далее эти ключами нужно обменяться между серверами (скопировав их в папку /etc/tinc/perfect/hosts/) и в переданной копии добавить адрес подключения
Пример получившегося файла:

——BEGIN RSA PUBLIC KEY——
MIICCgKCAgEAnmj2mHHwNKghO+d16stt3Lj4ZhL9CSvlJNz9CvfIE5L1/dpKZLLS
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/uETrXu1a9h9+q7zrMFi2qH6r3OkPs3UMw3mupr0/tc10MZ9ZrZuJPsCAwEAAQ==
——END RSA PUBLIC KEY——

Перезапускаем демона.

через несколько секунд туннель должен подняться.

Остается только добавить маршрутизацию между сетями.

Для первого шлюза:

Для второго:

Сеть поднята и готова.

Остается только сделать автоматическое добавление маршрутов при перезагрузке.

Например это можно сделать добавив данные команды в post-up параметр адаптера tap0 в файле /etc/network/interfaces:

На этом настройка полностью закончена.

Предупреждение: конфигурация не оптимальна из-за использования tap интерфейса. Он эмулирует L2 уровень целиком, в связи с чем работает с большими потерями в скорости. При возможности лучше использовать другие типы соединений, например IpSec. Преимущества данного метода в использовании только одного порта для связи, что бывает полезно при различных ограничениях провайдера (например обрезается GRE).

Заказать создание и поддержку безопасной IT-инфраструктуры любой сложности

Быть уверенным в своей IT-инфраструктуре — это быть уверенным в завтрашнем дне.

Для того, чтобы сделать заказ:

Заполните форму обратной связи и мы обязательно с вам свяжемся:
Форма обратной связи
Позвоните нам по телефону:
+7(909)952-44-33
Напишите нам на электронную почту:
order@blackdiver.net
Напишите нам в Telegram:
Telegram
Другие способы связи Вы сможете найти в разделе Контакты.