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