Я использую OpenVPN для управления сетью между несколькими компьютерами, но для этого нужен центральный сервер, и все данные должны проходить через него. Кроме того, изменение центрального сервера потенциально означает обновление всей сети.
Я ищу децентрализованную (P2P) VPN-сеть с открытым исходным кодом, для которой не требуется центральный сервер. Требования:
Сначала я думал, что решение для вас — Tor , но это открытая сеть: любой может присоединиться, поэтому ваше требование «безопасности» не работает.
Поэтому я бы посоветовал взглянуть на tinc . Это p2p VPN, в которой одноранговые узлы аутентифицируются с помощью открытых ключей и поддерживают некоторую трансверсальность NAT, хотя это может не так хорошо справляться с хостами, меняющими адреса, потому что они жестко запрограммированы в конфигурации. Он также имеет полную поддержку IPv6. Краткий праймер:
apt-get install tinc
mkdir -p /etc/tinc/net0/hosts
cat >> /etc/tinc/net0/tinc.conf <<EOF
Name = host
Mode = switch
Address = host.example.com
EOF
tinc -n net0 generate-keys
cat >> /etc/tinc/net0/tinc-up <<EOF
ifconfig $INTERFACE 172.16.242.43 netmask 255.255.255.255 up
EOF
chmod +x /etc/tinc/net0/tinc-up
tincd -d4 -D -n net0
Сделайте это на каждом хосте, изменяя tinc.conf
и tinc-up
при необходимости. Каталог hosts
содержит копии каждого хоста tinc.conf
, и совместное использование этой конфигурации выходит за рамки допустимого (например, я использовал git).
Также обратите внимание, что у Tinc были серьезные проблемы с безопасностью, и мне не ясно, надежна ли система безопасности.
Если бы я начал с нуля сейчас, я бы посмотрел на Wireguard , который имеет лучшую поддержку роуминга и надежную криптографию. Их быстрый старт превосходен и в основном сводится к:
apt install wireguard-dkms wireguard-tools
ip link add dev wg0 type wireguard
ip address add dev wg0 10.0.0.1/8
umask 077
wg genkey | tee /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key
wg set wg0 listen-port 51820 private-key /etc/wireguard/private.key peer $(cat /etc/wireguard/peers/peer0.pub) allowed-ips 10.0.0.2/32 endpoint 192.0.2.1:51820
ip link set up dev wg0
Это предполагает, что у другого уже есть открытый ключ, сгенерированный и сохраненный в /etc/wireguard/peers/peer0.pub
. Этот одноранговый узел должен быть доступен 192.0.2.1
и иметь конфигурацию, аналогичную 10.0.0.2
назначенной на wg0
интерфейсе.
Веселиться!