SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы

Назад

tinc: Установка, настройка и использование


Метки: tinc vpn fedora dnf nftables nft /etc/tmpfiles.d/tinc.conf /etc/tmpfiles.d tmpfiles.d systemd-tmpfiles systemctl

Установка

Fedora

dnf -y install tinc

Ubuntu

apt-get install tinc

Настройка

mkdir -p /etc/tinc/specialistoff.net/hosts
cd -p /etc/tinc/specialistoff.net
touch tinc.conf tinc-down tinc-up
chmod +x tinc-down tinc-up

Генерация ключей

tincd -n specialistoff.net -K

Создание конфигурационного файла

Mode = switch
Name = peer01
Interface = mesh-vpn
AddressFamily = ipv4
Cipher = aes-256-cbc
PMTUDiscovery = yes
ConnectTo = peer02
ConnectTo = peer03

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

Файл tinc-up

#!/bin/bash

set -e

ip link set $INTERFACE up
ip addr add 192.168.0.1/16 dev $INTERFACE

Файл tinc-down

#!/bin/bash

set -e

ip addr del 192.168.0.1/24 dev $INTERFACE
ip link set $INTERFACE down

nftables

cat << EOF | nft -f -
table ip filter {
    set mesh-vpn { 
        type ipv4_addr
        elements = {
            IP
        }
    }

    chain input {
        ip saddr @mesh-vpn tcp dport 655 accept comment "Accept tinc on TCP port 655";
        ip saddr @mesh-vpn udp dport 655 accept comment "Accept tinc on UDP port 655";
    }
}
EOF
nft add set filter mesh-vpn \{ type ipv4_addr \; \}
nft -n -a list chain inet filter input

Посмотреть номер правила, после которого добавлять новые

Для каждого узла должен быть файл hosts/peer01

Address = ExternalIP
TCPonly = yes

-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----

Запуск

tincd --net specialistoff.net --no-detach

Изменения в файле /etc/systemd/system/tinc@.service

[Unit]
Description=Tinc net %i
Documentation=info:tinc
Documentation=man:tinc(8) man:tinc.conf(5)
Documentation=http://tinc-vpn.org/docs/
PartOf=tinc.service
ReloadPropagatedFrom=tinc.service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
WorkingDirectory=/etc/tinc/%i
ExecStart=/usr/sbin/tincd --net %i --logfile /var/log/tinc/%i.log --no-detach
ExecReload=/usr/sbin/tincd --net %i -kHUP
KillMode=mixed
Restart=on-failure
RestartSec=5
TimeoutStopSec=5

[Install]
WantedBy=multi-user.target

Создаём директорию для логов. Можно так

mkdir /var/log/tinc

Но лучше через /etc/tmpfiles.d/tinc.conf

d /var/log/tinc 0755 root root -

Автозапуск

systemd-tmpfiles --create
systemctl daemon-reload systemctl enable tinc@specialistoff.net systemctl start tinc@specialistoff.net

Использование

Проблемы

Иногда остаётся мусор от

Removed "/etc/systemd/system/tinc.service.wants/tinc@specialistoff.net.service".