Tinc — это адаптер виртуальной частной сети (VPN) с открытым исходным кодом, который обеспечивает простой способ создания частной одноранговой (P2P) ячеистой сети в Linux, Windows и macOS. Подобно OpenVPN и Wireguard, он может объединить несколько компьютеров в разных сетевых топологиях в единую виртуальную локальную сеть. Здесь мы покажем вам преимущества использования Tinc, а также способы установки и создания простой ячеистой сети на основе Tinc.
Contents
Зачем использовать Tinc вместо Wireguard и OpenVPN?
Одним из уникальных преимуществ Тинк по сравнению с другими демонами VPN является то, что он спроектирован как ячеистая сеть. Это значит, что, в отличие от Wireguard , он легко адаптируется к изменениям условий сети. Это делает его более устойчивым, особенно для компьютеров с плохим сетевым подключением.
Помимо этого, Tinc обладает большинством функций, которые можно ожидать от традиционного VPN, такого как ОпенВПН . Это включает в себя возможность проходить через среду NAT, создавать зашифрованные туннели и связывать приложения, работающие только в локальной сети.
Наконец, 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 в других дистрибутивах Linux, используйте соответствующий менеджер пакетов для этой системы. Например, мне нужно запустить sudo dnf install tinc
, чтобы загрузить программу в Fedora.
Убедитесь, что вы правильно установили Tinc, открыв сеанс терминала и запустив tincd --version
.
Создание базовой ячеистой сети с помощью 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
Примечание. Некоторые дистрибутивы 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-адрес вашего компьютера, если вы хотите создать общедоступную 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
Сгенерируйте пару ключей для узла Tinc, запустивtincd:
sudo tincd -n mynetwork --generate-keys=4096
Дважды нажмите Enter, чтобы принять местоположение по умолчанию для сохранения как частных, так и открытых ключей на вашем узле Tinc.
Добавление первого клиента Tinc
Чтобы добавить новый клиент Tinc, сначала убедитесь, что вы правильно установили Tinc на втором компьютере.
Создайте структуру каталогов для вашей конфигурации Tinc, используя mkdir -p
.
Используйте свой любимый текстовый редактор, чтобы создать файл конфигурации для вашего клиента 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-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 Mesh
Теперь у вас есть два правильно настроенных демона Tinc. Однако вам все равно необходимо связать эти два демона Tinc, чтобы создать P2P VPN в Linux. Для этого вам необходимо скопировать файл конфигурации хостов с вашего узла Tinc на ваш клиент и наоборот.
Начните с открытия сеанса терминала вашего узла и перехода в его каталог «/etc/tinc/mynetwork/hosts»:
cd /etc/tinc/mynetwork/hosts
Скопируйте файл конфигурации в этот каталог и передайте его своему клиенту. В моем случае я буду использовать объект для отправки этого файла через ssh:
scp ./mynode YOUR-CLIENT-IP-ADDRESS:~
Примечание. Хотя в этом примере я использовал scp, вы также можете перенести их вручную с помощью флэш-накопителей.
Перейдите на свой клиентский компьютер и скопируйте файл хостов, который вы только что перенесли, в папку клиента «/etc/tinc/mynetwork/hosts»:
sudo cp -v ~/mynode /etc/tinc/mynetwork/hosts/
После этого запустите scp на стороне клиентского компьютера, чтобы передать файл хостов обратно на ваш узел:
scp /etc/tinc/mynetwork/hosts/myclient YOUR-NODE-IP-ADDRESS:~
Скопируйте файл хостов вашего клиента в каталог хостов вашего узла:
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 будет работать при запуске системы:
sudo systemctl enable --now tinc@mynetwork.service
Изучение того, как создать собственную ячеистую P2P-VPN в Linux с помощью Tinc, — это лишь первый шаг в изучении этого чудесного мира компьютерных сетей. Подробно познакомьтесь с тонкостями этой технологии, просмотрев наш подробный обзор VPN .
Изображение предоставлено: Гроутика через Unsplash . Все изменения и скриншоты Рамсеса Реда.