VyOS. Установка tinc

2026-10-24 · 2 мин. для прочтения
blog computer-science

VyOS. Установка tinc.

Содержание

1 Дополнительное ПО в VyOS

  • При обновлении через vyos upgrade, add system image фактически устанавливается новый образ системы.
  • Поэтому пакеты, установленные через apt, и файлы в /usr, /usr/local не переживают обновление.
  • Постоянно сохраняется пользовательский каталог /config.
  • Будем ставить в следующую иерархию:
    /config/opt/tinc/
    ├── sbin/
    │ ├── tinc
    │ └── tincd
    ├── etc/
    │ └── tinc/
    │ └── /
    ├── systemd/
    │ └── tinc@.service
    └── var/
    
  • Пути:
    /config/opt/tinc/
    /config/opt/tinc/sbin/tincd
    /config/opt/tinc/etc/tinc/tinc.conf
    /config/opt/tinc/etc/tinc/hosts/
    /config/opt/tinc/systemd/tinc@.service
    

2 Скачать пакет

  • Создадим каталог:
sudo mkdir -p /config/opt/tinc
  • Скачаем пакет:
    mkdir /tmp/tinc
    cd /tmp/tinc
    wget https://mirror.yandex.ru/debian/pool/main/t/tinc/tinc_1.1~pre18-1+b1_amd64.deb
    wget https://mirror.yandex.ru/debian/pool/main/m/miniupnpc/libminiupnpc17_2.2.4-1+b1_amd64.deb
    
  • Распакуем пакет:
    dpkg --extract tinc_1.1~pre18-1+b1_amd64.deb .
    dpkg --extract libminiupnpc17_2.2.4-1+b1_amd64.deb .
    
  • Скопируем файлы:
    sudo cp -R {etc,lib,usr} /config/opt/tinc
    sudo mkdir -p /config/opt/tinc/etc/tinc
    

3 Создать systemd unit

  • Создадим шаблонный unit tinc@.service, чтобы можно было запускать несколько сетей:
sudo mkdir -p /config/opt/tinc/systemd

sudo tee /config/opt/tinc/systemd/tinc@.service >/dev/null <<'EOF'
[Unit]
Description=tinc VPN network %i
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
Environment=PATH=/usr/sbin:/usr/bin:/sbin:/bin
Environment="LD_LIBRARY_PATH=/config/opt/tinc/usr/lib/x86_64-linux-gnu"
ExecStartPre=-/sbin/modprobe tun
ExecStart=/config/opt/tinc/usr/sbin/tincd -n %i -c /config/opt/tinc/etc/tinc/%i -D
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5
SyslogIdentifier=tinc-%i

[Install]
WantedBy=multi-user.target
EOF

4 Скрипт восстановления

  • Этот скрипт будет копировать unit в /run/systemd/system и запускать все найденные сети tinc.
sudo tee /config/scripts/tinc-restore.sh >/dev/null <<'EOF'
#!/bin/sh

TINC=/config/opt/tinc
UNIT_SRC=$TINC/systemd/tinc@.service
UNIT_DST=/run/systemd/system/tinc@.service

[ -x "$TINC/usr/sbin/tincd" ] || exit 0
[ -f "$UNIT_SRC" ] || exit 0

install -d /run/systemd/system
install -m 0644 "$UNIT_SRC" "$UNIT_DST"

systemctl daemon-reload

for d in "$TINC/etc/tinc"/*/; do
    [ -f "${d}tinc.conf" ] || continue
    net=$(basename "$d")
    systemctl --no-block start "tinc@$net" || true
done
EOF

sudo chmod 755 /config/scripts/tinc-restore.sh

5 Подключить скрипт к загрузке VyOS

  • В VyOS есть пользовательский скрипт:
/config/scripts/vyos-postconfig-bootup.script
  • Он сохраняется в /config и переживает обновления.
  • Нужно сделать так, чтобы он вызывал tinc-restore.sh.
  • Добавьте в него строку:
/config/scripts/tinc-restore.sh

6 Сконфигурите сеть

  • VPN. Настройка tinc
  • Для вызова tinc используйте (замените $VPNNAME на имя сети):
    /config/opt/tinc/usr/sbin/tinc -c /config/opt/tinc/etc/tinc/$VPNNAME
    
  • Для вызова tincd используйте:
    LD_LIBRARY_PATH=/config/opt/tinc/usr/lib/x86_64-linux-gnu /config/opt/tinc/usr/sbin/tincd -c /config/opt/tinc/etc/tinc/$VPNNAME -n $VPNNAME -D
    

7 Проверить запуск вручную

  • Запустите скрипт вручную:
sudo /config/scripts/tinc-restore.sh

Если у вас есть сеть, например vpn1, проверьте:

systemctl status tinc@vpn1
journalctl -u tinc@vpn1 -n 50 --no-pager

8 После обновления системы

  • После vyos upgrade или установки нового образа:
    • /config останется;
    • /config/opt/tinc/sbin/tincd останется;
    • /config/scripts/tinc-restore.sh останется;
    • при загрузке VyOS выполнит vyos-postconfig-bootup.script;
    • тот восстановит systemd unit и запустит ваши сети.
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы. Научные интересы относятся к области теоретической физики и математического моделирования.