Настройка PeerVPN
PeerVPN это программа, которая поможет создать отказоустойчивую децентрализованную виртуальную p2p сеть между компьютерами через интернет, при этом она очень проста в настройке.
Если вы хотите поиграть с друзьями в игру по интернету, но в игра расчитана на локальную сеть, то программа peervpn позволит вам создать локальную сеть через интернет, чтобы поиграть с друзьями. Это opensource аналог Hamachi, для которого не нужен центральный сервер.
Возможности:
- Для настройки достаточно указать название и пароль сети, а также адреса одного или более пиров, уже подключенных к сети.
- Работает через NAT с помощью технологии relay.
- Отказоустойчивость. Если один из узлов, включая сервер, отключается, сеть продолжает свою работу.
- Для работы сети достаточно подключиться к одному из пиров в сети. После прохождения авторизации, ip адрес нового пира становится известен всем участникам сети.
- Сервер не обязателен, но желателен, для большей отказоустойчивости.
- Через виртуальную сеть можно настроить сеть между серверами или сотрудниками в офисе, а также играть в игры с друзьями, которые требуют локальной сети и не предназначены для игры в интернет.
- Программа является 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