Blog/content/posts/2024/network/tinc.md

131 lines
3.2 KiB
Markdown
Raw Permalink Normal View History

2024-12-19 05:44:03 +03:00
---
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
Всё будет работать, демон перезапускать нет необходимости.