SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы
НазадМетки: tinc vpn fedora dnf nftables nft /etc/tmpfiles.d/tinc.conf /etc/tmpfiles.d tmpfiles.d systemd-tmpfiles systemctl
dnf -y install tinc
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".