Когда встает задача соединить несколько сетей в одну то на выбор есть много технологий и средств для того чтобы это сделать, в том числе и аппаратные. Но если это требуется сделать срочно и в качестве шлюзов сети используются Linux машины то можно воспользоваться интересным решением – Tinc VPN. Он позволяет построить VPN канал за несколько минут и с использованием всего одного открытого порта, который можно указать в настройках. Приступим к объединению сетей.
Схема подключения Tinc VPN
Для начала поставим нужный нам пакет (на каждом шлюзе):
apt-get install tinc
Далее создадим виртуальный интерфейс с требуемыми параметрами. Для этого отредактируем /etc/network/interfaces.
Первом шлюзу мы назначим адрес: 172.30.0.1/24 второму, соответственно, 172.30.0.2/24
Конфигурация виртуального интерфейса первого шлюза:
auto tap0
iface tap0 inet static
address 172.30.0.1
netmask 255.255.255.0
pre-up ip tuntap add dev $IFACE mode tap
post-down ip tuntap del dev $IFACE mode tap
Второй шлюз аналогично, но с адресом 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 на первом и втором шлюзе,
дописав в него строчку с названием нашей сети (сети из этого списка будут запускаться автоматически при старте демона).
## This file contains all names of the networks to be started on system startup.
blackdiver
Tinc VPN хранит настройки VPN сетей в отдельных папках. Поэтому создадим требуемую структуру папок для нашей VPN сети (на первом и втором шлюзе).
mkdir /etc/tinc/blackdiver
mkdir /etc/tinc/blackdiver/hosts
Теперь нам нужно создать файл конфигурации (на двух хостах):
touch /etc/tinc/blackdiver/tinc.conf
и отредактировать его (будем считать, что у нас первый шлюз подключается ко второму):
Name = blackdiver_a
Interface = tap0
Mode = switch
MaxTimeout = 120
PriorityInheritance = yes
ConnectTo = blackdiver_b
Соответственно второй шлюз у нас является принимающим соединение и его конфигурационный файл будет выглядеть так:
Name = blackdiver_b
Interface = tap0
Mode = switch
MaxTimeout = 120
PriorityInheritance = yes
Name = blackdiver_a – имя хоста для VPN подключения
Interface = tap0 – интерфес виртуальной сети
Mode = switch – используем режим коммутатора
MaxTimeout = 120 – максимальный таймаут до переподключения
PriorityInheritance = yes – использовать UDP для транспорта
ConnectTo = blackdiver_b – точка подключения.
Далее генерируем ключи для всех хостов:
tincd -n blackdiver -K4096
На выходе получим 2 файла:
/etc/tinc/perfect/rsa_key.priv – приватный ключ
/etc/tinc/perfect/hosts/blackdiver_a (blackdiver_b для второго хоста) публичные ключи для обмена между серверами.
Далее эти ключами нужно обменяться между серверами (скопировав их в папку /etc/tinc/perfect/hosts/) и в переданной копии добавить адрес подключения
Пример получившегося файла:
Address = 2.2.2.2
—–BEGIN RSA PUBLIC KEY—–
MIICCgKCAgEAnmj2mHHwNKghO+d16stt3Lj4ZhL9CSvlJNz9CvfIE5L1/dpKZLLS
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/uETrXu1a9h9+q7zrMFi2qH6r3OkPs3UMw3mupr0/tc10MZ9ZrZuJPsCAwEAAQ==
—–END RSA PUBLIC KEY—–
Перезапускаем демона.
service tinc restart
через несколько секунд туннель должен подняться.
Остается только добавить маршрутизацию между сетями.
Для первого шлюза:
ip route add 10.10.1.0/24 via 172.30.0.1
Для второго:
ip route add 10.10.2.0/24 via 172.30.0.2
Сеть поднята и готова.
Остается только сделать автоматическое добавление маршрутов при перезагрузке.
Например это можно сделать добавив данные команды в post-up параметр адаптера tap0 в файле /etc/network/interfaces:
post-up ip route add 10.10.2.0/24 via 172.30.0.2
На этом настройка полностью закончена.
Предупреждение: конфигурация не оптимальна из-за использования tap интерфейса. Он эмулирует L2 уровень целиком, в связи с чем работает с большими потерями в скорости. При возможности лучше использовать другие типы соединений, например IpSec. Преимущества данного метода в использовании только одного порта для связи, что бывает полезно при различных ограничениях провайдера (например обрезается GRE).
Заказать создание и поддержку безопасной IT-инфраструктуры любой сложностиБыть уверенным в своей IT-инфраструктуре – это быть уверенным в завтрашнем дне. Для того, чтобы сделать заказ:
|