Пиринговые VPN. tinc

Пиринговые VPN. tinc

2026-01-15 · 3 мин. для прочтения

Пиринговые VPN. tinc.

Содержание

1 Общая информация

1.1 Android

1.2 Особенности

  • Распределенная топология (нет необходимости в отдельном сервере VPN).
  • Работает поверх сетей любой топологии, в том числе за NAT и поверх других VPN.
  • Поддерживает активное соединение даже после переключения сети (например с wi-fi на 4g) или при входе и выходе из других VPN.
  • Реализации для большинства операционных систем.

2 Версии

  • Две версии:
    • tinc-1.0, стабильная (все операции по обмену ключами делаются вручную);
    • tinc-1.1 (большая часть операций автоматизирована).
  • Для автоматизации операций для tinc-1.0. можно использовать проект tinc-boot.

2.1 tinc-boot

3 Установка

3.1 Gentoo

  • Находится в основном репозитории:
    emerge --ask net-vpn/tinc
    

4 Настройка tinc 1.1

4.1 Обозначения

  • <VPNNAME> : имя, которое вы хотите присвоить вашей сети.
  • <IPNET> внутренняя IP сеть для сети <VPNNAME>.
  • <IPNET> внутренний IP адрес, который вы хотите присвоить вашему текущему устройству.
    • Распределение IP-адресов в режиме маршрутизатора (по умолчанию) осуществляется вручную, поэтому вам необходимо следить за назначенными адресами.
  • <FQDNORIP> : полное доменное имя или IP-адрес хоста, который вы настраиваете.
  • <HOSTNAME> : имя хоста.

4.2 Брандмауэр

  • Открыть порт 655/udp.
  • firewalld:
    firewall-cmd --add-service=tinc --permanent
    firewall-cmd --reload
    

4.3 Настройка интерфейса Linux

  • Настраивается на всех машинах.
  • Создайте файл запуска интерфейса:
    sudo cat>/etc/tinc/${VPNNAME}/tinc-up <<EOL
    #!/bin/bash
    
    ip link set \${INTERFACE} up
    ## Change this address per-host to match the hosts/hostname file!
    ip addr add <IP>/32 dev \${INTERFACE}
    ip route add <IPNET> dev \${INTERFACE}
    
    ## add domain per interface
    resolvectl domain ${VPNNAME} ~${VPNNAME}.internal
    EOL
    
  • Создайте файл остановки интерфейса:
    sudo cat>/etc/tinc/${VPNNAME}/tinc-down <<EOL
    #!/bin/bash
    
    ip route del <IPNET> dev \${INTERFACE}
    
    # Change this address per-host to match the hosts/hostname file!
    ip addr del <IP>/32 dev \${INTERFACE}
    
    ip link set \${INTERFACE} down
    EOL
    

4.4 Первая машина

  • Машина должна иметь внешний IP-адрес.

4.4.1 Создание сети

  • Создайте сеть:
    sudo tinc -n <VPNNAME> init <HOSTNAME>
    
  • Запустите сервер с включённой отладкой:
    sudo tincd -n <VPNNAME> -D -d3
    
  • Подключите сеть:
    sudo tinc -n <VPNNAME> add subnet <IP>/32
    
  • Подключите текущую машину:
    sudo tinc -n <VPNNAME> add address=<FQDNORIP>
    

4.5 Подключение других устройств

  • В следующих командах замените <CLIENTNAME> именем, которое вы хотите присвоить устройству.
  • Сгенерируйте ссылку-приглашение на компьютере, к которому вы хотите подключиться:
    sudo tinc -n <VPNNAME> invite <CLIENTNAME>
    
  • Это выведет <INVITEURL>.
  • Подключитесь к приглашению:
    sudo tinc join <INVITEURL>
    
  • Подключитесь к VPN (с отладкой):
    sudo tincd -n <VPNNAME>
    
  • Подключите хост:
    sudo tinc -n <VPNNAME> add subnet <IP>/32
    
  • Создайте скрипты для интерфейса.
  • Остановите демон и поместите его в автозагрузку:
    systemctl enable --now tinc@<VPNAME>.service
    
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Мои научные интересы включают физику, администрирование Unix и сетей.