ГлавнаяОперационные системыLinuxКак создать легкий P2P Mesh VPN с помощью Tinc

Как создать легкий P2P Mesh VPN с помощью Tinc

Tinc — это адаптер виртуальной частной сети (VPN) с открытым исходным кодом, который обеспечивает простой способ создания частной одноранговой (P2P) ячеистой сети в Linux, Windows и macOS. Подобно OpenVPN и Wireguard, он может объединить несколько компьютеров в разных сетевых топологиях в единую виртуальную локальную сеть. Здесь мы покажем вам преимущества использования Tinc, а также способы установки и создания простой ячеистой сети на основе Tinc.

Зачем использовать Tinc вместо Wireguard и OpenVPN?

Одним из уникальных преимуществ Тинк по сравнению с другими демонами VPN является то, что он спроектирован как ячеистая сеть. Это значит, что, в отличие от Wireguard , он легко адаптируется к изменениям условий сети. Это делает его более устойчивым, особенно для компьютеров с плохим сетевым подключением.

Терминал, показывающий измерение производительности Tinc в Ubuntu.

Помимо этого, Tinc обладает большинством функций, которые можно ожидать от традиционного VPN, такого как ОпенВПН . Это включает в себя возможность проходить через среду NAT, создавать зашифрованные туннели и связывать приложения, работающие только в локальной сети.

Терминал, показывающий производительность проверки связи Tinc в Debian.

Наконец, Tinc также стремится сделать каждое ваше соединение внутри сети P2P. Это может быть либо посредством автоматического обнаружения одноранговых узлов, либо посредством координации с общедоступным сервером Tinc. В результате соединения внутри Tinc VPN становятся не только устойчивыми, но и быстрыми и отзывчивыми.

Полезно знать: все еще не определились, какой VPN выбрать? Прочтите нашу статью, в которой мы рассматриваем как Wireguard и OpenVPN сочетаются друг с другом .

Установка Tinc в Linux

Первый шаг при установке Tinc — убедиться, что ваша система обновлена. В Ubuntu выполните следующую команду:

sudo apt update && sudo apt upgrade -y

Загрузите и установите Tinc непосредственно из репозитория пакетов Ubuntu:

sudo apt install tinc

Терминал, показывающий процесс установки пакета Tinc в Ubuntu.

Чтобы установить Tinc в других дистрибутивах Linux, используйте соответствующий менеджер пакетов для этой системы. Например, мне нужно запустить sudo dnf install tinc, чтобы загрузить программу в Fedora.

Терминал, показывающий процесс установки в Fedora Linux.

Убедитесь, что вы правильно установили Tinc, открыв сеанс терминала и запустив tincd --version.

Терминал, показывающий текущую версию Tinc, работающую в Ubuntu.

Создание базовой ячеистой сети с помощью Tinc

Установив Tinc на свой компьютер, вы можете настроить свою первую сеть на базе Tinc. Создайте новую папку внутри «/etc/tinc». Он будет содержать все файлы, относящиеся к вашему узлу Tinc:

sudo mkdir -p /etc/tinc/mynetwork/hosts

Создайте новый файл конфигурации с помощью вашего любимого текстового редактора:

sudo nano /etc/tinc/mynetwork/tinc.conf

Вставьте следующий блок кода в новый файл конфигурации:

Name = mynode
Device = /dev/net/tun

Терминал, показывающий конфигурацию установки Tinc в Ubuntu.

Примечание. Некоторые дистрибутивы Linux могут изменить расположение адаптера Tun внутри «/dev». Чтобы найти его точный путь в вашей системе, запустите:

 find /dev -name *tun* -type c

Создайте текстовый файл в папке «hosts» с именем вашего узла Tinc и вставьте в него следующее:

Subnet = 192.168.11.1/32
Address = YOUR-MACHINE-IP-ADDRESS-HERE
Port = 655

Замените значение переменной «Адрес» на IP-адрес вашего компьютера. Вы можете найти это, запустив ip addr.

Терминал, выделяющий частный IP-адрес машины с Ubuntu.

Примечание. вам необходимо предоставить общедоступный IP-адрес вашего компьютера, если вы хотите создать общедоступную VPN.

Сохраните файл хостов вашего компьютера, затем создайте два файла в папке «/etc/tinc/mynetwork:»

sudo touch /etc/tinc/mynetwork/tinc-{up,down}
sudo chmod +x /etc/tinc/mynetwork/tinc-(up,down}

Откройте файл «tinc-up», затем вставьте в него следующий код Bash. Это создаст виртуальный сетевой интерфейс для Tinc и назначит IP-адрес этому интерфейсу:

#!/bin/sh
 
ip link set $INTERFACE up
ip addr add 192.168.11.1/32 dev $INTERFACE
ip route add 192.168.11.0/24 dev $INTERFACE

Сохраните файл, затем откройте файл «tinc-down» и вставьте в него следующее. Это действие противоположно «tinc-up»: оно отменяет назначение IP-адреса вашего интерфейса Tinc и удаляет этот интерфейс с вашего компьютера:

#!/bin/sh
 
ip route del 192.168.11.0/24 dev $INTERFACE
ip addr del 192.168.11.1/32 dev $INTERFACE
ip link set $INTERFACE down

Терминал, показывающий содержимое сценария уменьшения громкости в Ubuntu.

Сгенерируйте пару ключей для узла Tinc, запустивtincd:

sudo tincd -n mynetwork --generate-keys=4096

Дважды нажмите Enter, чтобы принять местоположение по умолчанию для сохранения как частных, так и открытых ключей на вашем узле Tinc.

Терминал, показывающий процесс генерации пары ключей для Tinc в Ubuntu.

Добавление первого клиента Tinc

Чтобы добавить новый клиент Tinc, сначала убедитесь, что вы правильно установили Tinc на втором компьютере.

Терминал, показывающий версию Tinc в Debian.

Создайте структуру каталогов для вашей конфигурации Tinc, используя mkdir -p.

Терминал, показывающий структуру каталогов конфигурации Tinc клиента.

Используйте свой любимый текстовый редактор, чтобы создать файл конфигурации для вашего клиента Tinc:

sudo nano /etc/tinc/mynetwork/tinc.conf

Вставьте следующие строки кода в файл конфигурации вашего второго компьютера:

Name = myclient
Device = /dev/net/tun
ConnectTo = mynode

Создайте файл с именем вашего компьютера Tinc в папке «/etc/tinc/mynetwork/hosts». В данном случае я назвал свой второй компьютер «myclient», поэтому создам файл с именем «myclient:»

sudo nano /etc/tinc/mynetwork/hosts/myclient

Вставьте следующий блок кода в новый файл хостов. Как и в случае с вашим первым узлом, он определяет сетевую конфигурацию вашего демона Tinc:

Subnet = 192.168.11.2/32
Port = 655

Сохраните новый файл хостов, затем создайте скрипты «tinc-up» и «tinc-down» на втором компьютере:

sudo touch /etc/tinc/mynetwork/tinc-{up,down}
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}

Терминал, показывающий файлы сценариев подъема и понижения с правильными битами разрешений на второй машине Tinc.

Откройте файл Tinc-up в своем любимом текстовом редакторе, а затем вставьте в него следующий блок кода:

#!/bin/sh
ip link set $INTERFACE up
ip addr add 192.168.11.2/32 dev $INTERFACE
ip route add 192.168.11.0/24 dev $INTERFACE

Сохраните файл Tinc-Up, затем откройте Tinc-Down и вставьте в него следующие строки кода:

#!/bin/sh
 
ip route del 192.168.11.0/24 dev $INTERFACE
ip addr del 192.168.11.2/32 dev $INTERFACE
ip link set $INTERFACE down

Завершите настройку клиента Tinc, сгенерировав пару ключей:

sudo tincd -n mynetwork --generate-keys=4096

Терминал, показывающий процесс генерации пары ключей на второй машине Tinc.

Управление сетью Tinc Mesh

Теперь у вас есть два правильно настроенных демона Tinc. Однако вам все равно необходимо связать эти два демона Tinc, чтобы создать P2P VPN в Linux. Для этого вам необходимо скопировать файл конфигурации хостов с вашего узла Tinc на ваш клиент и наоборот.

Начните с открытия сеанса терминала вашего узла и перехода в его каталог «/etc/tinc/mynetwork/hosts»:

cd /etc/tinc/mynetwork/hosts

Скопируйте файл конфигурации в этот каталог и передайте его своему клиенту. В моем случае я буду использовать объект для отправки этого файла через ssh:

scp ./mynode YOUR-CLIENT-IP-ADDRESS:~

Терминал, показывающий процесс переноса конфигурации клиента Tinc из одной системы в другую.

Примечание. Хотя в этом примере я использовал scp, вы также можете перенести их вручную с помощью флэш-накопителей.

Перейдите на свой клиентский компьютер и скопируйте файл хостов, который вы только что перенесли, в папку клиента «/etc/tinc/mynetwork/hosts»:

sudo cp -v ~/mynode /etc/tinc/mynetwork/hosts/

После этого запустите scp на стороне клиентского компьютера, чтобы передать файл хостов обратно на ваш узел:

scp /etc/tinc/mynetwork/hosts/myclient YOUR-NODE-IP-ADDRESS:~

Терминал, показывающий процесс передачи файла конфигурации Tinc клиента одноранговому узлу в сети.

Скопируйте файл хостов вашего клиента в каталог хостов вашего узла:

sudo cp ~/myclient /etc/tinc/mynetwork/hosts/

Кстати, вас беспокоит конфиденциальность вашей личной информации в Интернете? Узнайте, как можно улучшить конфиденциальность и безопасность вашего ПК с Linux .

Запуск сети Tinc Mesh

Запустите полностью настроенную сеть Tinc, выполнив следующую команду на каждом из ваших хостов:

sudo tincd -n mynetwork

Подтвердите, что вы можете обмениваться данными со своими узлами через интерфейс Tinc, выполнив простой запрос ping:

ping -c 5 192.168.11.2

Терминал, показывающий задержку Tinc VPN, а также сетевого устройства, работающего на Ubuntu.

И наконец, включите службу Tinc, чтобы убедиться, что ваша VPN будет работать при запуске системы:

sudo systemctl enable --now tinc@mynetwork.service

Терминал, показывающий команду включения процесса Tinc при запуске.

Изучение того, как создать собственную ячеистую P2P-VPN в Linux с помощью Tinc, — это лишь первый шаг в изучении этого чудесного мира компьютерных сетей. Подробно познакомьтесь с тонкостями этой технологии, просмотрев наш подробный обзор VPN .

Изображение предоставлено: Гроутика через Unsplash . Все изменения и скриншоты Рамсеса Реда.

ПОХОЖИЕ СТАТЬИ

Популярные записи