Настройка PeerVPN

PeerVPN это программа, которая поможет создать отказоустойчивую децентрализованную виртуальную p2p сеть между компьютерами через интернет, при этом она очень проста в настройке.

Если вы хотите поиграть с друзьями в игру по интернету, но в игра расчитана на локальную сеть, то программа peervpn позволит вам создать локальную сеть через интернет, чтобы поиграть с друзьями. Это opensource аналог Hamachi, для которого не нужен центральный сервер.

Возможности:

  1. Для настройки достаточно указать название и пароль сети, а также адреса одного или более пиров, уже подключенных к сети.
  2. Работает через NAT с помощью технологии relay.
  3. Отказоустойчивость. Если один из узлов, включая сервер, отключается, сеть продолжает свою работу.
  4. Для работы сети достаточно подключиться к одному из пиров в сети. После прохождения авторизации, ip адрес нового пира становится известен всем участникам сети.
  5. Сервер не обязателен, но желателен, для большей отказоустойчивости.
  6. Через виртуальную сеть можно настроить сеть между серверами или сотрудниками в офисе, а также играть в игры с друзьями, которые требуют локальной сети и не предназначены для игры в интернет.
  7. Программа является Opensource и кроссплатформенной под Windows и Linux.

Установка и настройка

PeerVPN требует, доверия ко всем узлам и участникам виртуальной сети. PeerVPN не предназначеная для анонимности. Пир, к которому происходит первоначальное подключение, должен обладать публичным IP адресом с доступным портом. Также у этого пира должен быть включен relay, чтобы клиенты за NAT смогли через него делать переадресацию. PeerVPN рекомендуется использовать для небольших сетей.

За уникальностью виртуальных IP адресов придется следить вручную. У каждого участника должен быть уникальный IP адрес.

Чтобы установить программу, скачайте архив peervpn.0.44.7z. Он содержит скомпилированные версии для Windows и Ubuntu, а также TAP драйвер.

MD5 суммы файлов:

5488fc9b970d407b096b46019b39681f *peervpn.0.44.7z
abd97f5eccd57fc6e238b56f31b51152 *peervpn.32bit.exe
21cf504fb92519971642de766dd005e3 *peervpn.64bit.exe
2aea51743ac7ae751d97f7f4eff78a62 *peervpn.ubuntu.18.04

Для Windows

Скачайте этот архив и распакуйте его на рабочий стол, или в другую папку.. Скачать архиватор 7zip можно по ссылке.

Вам нужно будет установить TAP Driver. Зайдите в папку TAP-Drivers и выберите для Win7 или Win10. Для XP используйте версию 9.9.2. Если у вас установлен OpenVPN, то ставить TAP драйвер не нужен, потому что он уже идет в программе openvpn.

После установки драйвера, вам нужно будет переименовать TAP адаптер в peervpn0. Зайдите в центр управления сетями и общим доступом, в раздел Изменение параметров адаптера. И переимеуйте ваш TAP адаптер.

Далее перейдите в папку архива, и откройте файл config.windows.txt

Содержимое файла:

ifconfig4 10.5.1.15/16
#initpeers 10.0.5.1 17000 10.0.5.2 17000
networkname mysecretnetwork
psk secretpassword

interface peervpn0
port 17000
enableipv4 yes
enableipv6 no
enabletunneling yes
enablerelay yes

# Раскоментируйте только для Linux
#user peervpn
#group peervpn
#chroot /tmp

Вам нужно будет указать свои значения

ifconfig4 – Это ваш внутренний IP, который будет создан в виртуальной сети. Должен быть уникальным.
interface - Название TAP адаптера, который переименовали
initpeers – К кому подключаться. Укажите публичные IP адреса серверов или друзей вместе с портом.
networkname - Название вашей виртуальной сети.
psk – Секретный пароль от вашей сети.
peervpn0 – Это dev устройство сети, которое переименовали
user, group - Под каким пользователем запускать программу
chroot - папка, которой будет ограничена программа
enablerelay - разрешить пропускать через ноду трафик, предназначенный для других участников. Следует включать на серверах, и ключевых нодах. Позволяет подключиться к участникам, которые находятся за NAT.
enabletunneling - включает тунель, обмен трафиком между другими участниками сети через TAP интерфейс. Если указано false, то нода учавствует только в обнаружении других участников. Обмениваться трафиком она не сможет.

Об остальных значениях можно посмотреть в файле example/peervpn.conf.example

После того, как вы задали значения, запустите от имени администратора файл start.32bit.bat или start.64bit.bat в зависимости от разрядности Windows системы.

Для Linux

Создайте пользователей:

groupadd peervpn
useradd -r -M -N -g peervpn peervpn

Пропишите в iptables правила:

iptables -I INPUT -p tcp -m tcp --dport 10502 -j ACCEPT
iptables -I INPUT -p udp -m udp --dport 10502 -j ACCEPT
iptables -I INPUT -i peervpn0 -j ACCEPT

Скачайте архив peervpn.0.44.7z. Разархивируйте его в папку.

Отредактируйте файл config.linux.txt

Для Linux в конфиге дополнительно нужно указать:

user peervpn
group peervpn
chroot /tmp

Запустите скрипт start.ubuntu.18.04.sh

Генерация ключа

Сгенерировать ключ можно командой:

openssl rand -base64 256 | tr -d '\n' && echo

Автозапуск в Linux

Скопируйте скомпилированный версию в папку /usr/local/sbin/peervpn. Создайте конфиг /etc/peervpn.conf.

Создайте файл /etc/systemd/system/peervpn.service

[Unit]
Description=PeerVPN network service
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/sbin/peervpn /etc/peervpn.conf

[Install]
WantedBy=multi-user.target

Запустите сервис:

systemctl start peervpn.service
systemctl enable peervpn.service

Посмотрите логи:

journalctl -f -u peervpn

Компиляция peervpn под Linux

Установите необходимые программы:

sudo apt install libssl1.0-dev libcrypto++-dev zlib1g-dev uml-utilities
mkdir –p ~/src
cd ~/src

Скомилируйте программу

git clone https://github.com/bayrell-os/peervpn
cd peervpn
git checkout eb35174277fbf745c5ee0d5875d659dad819adfc
make

В папке вы получите исполняемый файл peervpn

Компиляция peervpn под Windows

Чтобы скомпилировать по Windows нужна программа mingw64. Это программа поставляется вместе с программой msys2.

Скачайте и установите программу с сайта https://www.msys2.org/

Она установится в папку C:\msys64. Запустите файл C:\msys64\msys2.exe.

Откроется консоль. Вам нужно будет выполнить следующие команды:

pacman -Syu
pacman -S mingw-w64-x86_64-gcc mingw-w64-i686-gcc nano mc git perl

Они установят 64 и 32 битный компилятор mingw.

Windows 64

Запустите C:\msys64\mingw64.exe

проверьте переменные среды

echo $PATH

/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

whereis cc

cc: /mingw64/bin/cc.exe

Скомпилируйте Openssl версии 1.0

cd ~
git clone https://github.com/openssl/openssl/ openssl-64
cd openssl-64
git checkout OpenSSL_1_0_2u
./Configure --prefix=/mingw64/opt/openssl-1.0 mingw64
make
make install

Скачайте peervpn

cd ~
git clone https://github.com/peervpn/peervpn peervpn-64
cd peervpn-64
git checkout eb35174277fbf745c5ee0d5875d659dad819adfc

Внесите изменения в файл Makefile

CFLAGS+=-O2 -I/mingw64/opt/openssl-1.0/include
LDFLAGS+=-L/mingw64/opt/openssl-1.0/lib
LIBS+=-lcrypto -lz

all: peervpn
peervpn: peervpn.o
        $(CC) $(LDFLAGS) peervpn.o $(LIBS) -o $@
peervpn.o: peervpn.c

install:
        install peervpn /usr/local/sbin/peervpn
clean:
        rm -f peervpn peervpn.o

Скомпилируйте peervpn

make

Windows 32

Запустите C:\msys64\mingw32.exe

проверьте переменные среды

echo $PATH

/mingw32/bin:/usr/local/bin:/usr/bin:/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

whereis cc

cc: /mingw32/bin/cc.exe

Скомпилируйте Openssl версии 1.0

cd ~
git clone https://github.com/openssl/openssl/ openssl-32
cd openssl-32
git checkout OpenSSL_1_0_2u
./Configure --prefix=/mingw32/opt/openssl-1.0 mingw
make
make install

Скачайте peervpn

cd ~
git clone https://github.com/peervpn/peervpn peervpn-32
cd peervpn-32
git checkout eb35174277fbf745c5ee0d5875d659dad819adfc

Внесите изменения в файл Makefile

CFLAGS+=-O2 -I/mingw32/opt/openssl-1.0/include
LDFLAGS+=-L/mingw32/opt/openssl-1.0/lib
LIBS+=-lcrypto -lz

all: peervpn
peervpn: peervpn.o
        $(CC) $(LDFLAGS) peervpn.o $(LIBS) -o $@
peervpn.o: peervpn.c

install:
        install peervpn /usr/local/sbin/peervpn
clean:
        rm -f peervpn peervpn.o

Скомпилируйте peervpn

make

Ссылки

  1. https://peervpn.net/
  2. http://www.mingw-w64.org/doku.php/download
  3. https://code.visualstudio.com/docs/languages/cpp
  4. https://librebay.blogspot.com/2018/12/install-msys2-for-windows.html
  5. Список Full-Mesh VPN решений