added tinc guide
This commit is contained in:
parent
4e8cf1e636
commit
e6cc383d11
130
content/posts/2024/network/tinc.md
Normal file
130
content/posts/2024/network/tinc.md
Normal file
@ -0,0 +1,130 @@
|
||||
---
|
||||
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
|
||||
|
||||
Всё будет работать, демон перезапускать нет необходимости.
|
Loading…
Reference in New Issue
Block a user