---
title: "🕸️ Mesh VPN через Tinc"
date: 2024-12-19T04:37:57+03:00
draft: false
tags: [tutorial, linux, vpn, network]
---

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

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

```sh
export NETWORK_NAME="office"  # Имя новой сети
mkdir -p /etc/tinc/$NETWORK_NAME/hosts
cd /etc/tinc/$NETWORK_NAME/
```

Создание исполняемых файлов для управления интерфейсом.

```sh
touch tinc.conf tinc-down tinc-up
chmod +x tinc-down tinc-up
```


## Настройка tinc

Следующий шаг настройка файла конфигурации демона `tincd`.

Файл `tinc.conf` на `master` _(«Основной» сервер с белым IP)_

```text
Name = master
Device = /dev/net/tun
Port = 655
```

Файл `tinc.conf` на `client` _(Клиент)_

```text
Name = client
Device = /dev/net/tun
Port = 655

ConnectTo = master
```


## Создание ключей

```sh
# Команду необходимо выполнить на обеих (всех) машинах
tincd -n $NETWORK_NAME -K
```


## Настройка хостов

`/etc/$NETWORK_NAME/hosts/master`. Адрес `1.1.1.1` заменить на белый IP сервера.

```text
Address = 1.1.1.1
Subnet = 10.0.7.1/32

# Здесь находится публичный ключ
```

`/etc/$NETWORK_NAME/hosts/client`

```text
Subnet = 10.0.7.2/32

# Здесь находится публичный ключ
```

Эти файлы должны находится на всех машинах.


## Скрипты для управления интерфейсом

Адрес `10.0.7.1` на клиентах заменить на соответствующий.

`/etc/$NETWORK_NAME/tinc-down`

```sh
#!/bin/sh
ip addr del 10.0.7.1/24 dev $INTERFACE
ip link set $INTERFACE down
```

`/etc/$NETWORK_NAME/tinc-up`

```sh
#!/bin/sh
ip link set $INTERFACE up
ip addr add 10.0.7.1/24 dev $INTERFACE
```


## Запуск

```sh
tincd -n $NETWORK_NAME -D -d3
```

* Флаг `-d3` отвечает за вывод отладочных сообщений.
* Флаг `-D` _(`no-detach`)_ отвечает за запуск демона без форка.

Если всё впорядке и сеть работает, можно активировать **systemd** сервис.

```sh
systemctl start tinc@$NETWORK_NAME.service
systemctl enable tinc@$NETWORK_NAME.service
```

## Прочее

### На клиенте сервер запущен, сервер на мастере перезапущен

Всё в порядке. Сервер `tincd` на клиенте будет пытаться переподключаться к мастер серверу, пока не наладится соединение.


### На клиенте пропал интернет, а потом появился

Всё в порядке, ничего не произойдёт. При появлении сети VPN продолжит работу.


### Добавление нового клиента на мастер сервер без перезапуска tinc

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