🕸️ Mesh VPN через Tinc
Подготовка рабочей директории
Создание директорий новой сети.
export NETWORK_NAME="office" # Имя новой сети
mkdir -p /etc/tinc/$NETWORK_NAME/hosts
cd /etc/tinc/$NETWORK_NAME/
Создание исполняемых файлов для управления интерфейсом.
touch tinc.conf tinc-down tinc-up
chmod +x tinc-down tinc-up
Настройка tinc
Следующий шаг настройка файла конфигурации демона tincd
.
Файл tinc.conf
на master
(«Основной» сервер с белым IP)
Name = master
Device = /dev/net/tun
Port = 655
Файл tinc.conf
на client
(Клиент)
Name = client
Device = /dev/net/tun
Port = 655
ConnectTo = master
Создание ключей
# Команду необходимо выполнить на обеих (всех) машинах
tincd -n $NETWORK_NAME -K
Настройка хостов
/etc/$NETWORK_NAME/hosts/master
. Адрес 1.1.1.1
заменить на белый IP сервера.
Address = 1.1.1.1
Subnet = 10.0.7.1/32
# Здесь находится публичный ключ
/etc/$NETWORK_NAME/hosts/client
Subnet = 10.0.7.2/32
# Здесь находится публичный ключ
Эти файлы должны находится на всех машинах.
Скрипты для управления интерфейсом
Адрес 10.0.7.1
на клиентах заменить на соответствующий.
/etc/$NETWORK_NAME/tinc-down
#!/bin/sh
ip addr del 10.0.7.1/24 dev $INTERFACE
ip link set $INTERFACE down
/etc/$NETWORK_NAME/tinc-up
#!/bin/sh
ip link set $INTERFACE up
ip addr add 10.0.7.1/24 dev $INTERFACE
Запуск
tincd -n $NETWORK_NAME -D -d3
- Флаг
-d3
отвечает за вывод отладочных сообщений. - Флаг
-D
(no-detach
) отвечает за запуск демона без форка.
Если всё впорядке и сеть работает, можно активировать systemd сервис.
systemctl start tinc@$NETWORK_NAME.service
systemctl enable tinc@$NETWORK_NAME.service
Прочее
На клиенте сервер запущен, сервер на мастере перезапущен
Всё в порядке. Сервер tincd
на клиенте будет пытаться переподключаться к мастер серверу, пока не наладится соединение.
На клиенте пропал интернет, а потом появился
Всё в порядке, ничего не произойдёт. При появлении сети VPN продолжит работу.
Добавление нового клиента на мастер сервер без перезапуска tinc
Всё будет работать, демон перезапускать нет необходимости.