🏴‍☠️
Сашка ☕
Blog  Tags 
💀 🔵 🔴

🕸️ Mesh VPN через Tinc

Опубликовано: 19 декабря 2024 г.

Подготовка рабочей директории

Создание директорий новой сети.

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

Всё будет работать, демон перезапускать нет необходимости.