Создаем аналог Hamachi на примере ZeroTier для игры с друзьями по сети

от автора

Преимущества

⭐️ Нет ограничения по слотам.
⭐️ Низкий пинг — можно выбрать любую локацию, например Москва или Питер.
⭐️ Безлимитное количество сетей и устройств, ограничено только мощностью сервера.
⭐️ Нет необходимости покупать дорогостоящий сервер — достаточно арендовать сервер с минимальными ресурсами для обеспечения соединения между игроками, которые и будут выступать хостом.

Установка

Для работы панели необходимо установить Docker:

curl -fsSL https://get.docker.com -o get-docker.sh && sudo bash get-docker.sh

Создадим директорию, в которой будет находиться наше решение:

mkdir -p /srv/zerotier/

​Создадим в рабочей директории решения файл docker-compose.yml:

touch /srv/zerotier/docker-compose.yml

​Добавим в него следующее содержимое, по желанию указав необходимые параметры окружения:

services:   postgres:     image: postgres:15.2-alpine     container_name: ztnet-database     restart: unless-stopped     environment:       POSTGRES_USER: postgres       POSTGRES_PASSWORD: postgres       POSTGRES_DB: ztnet     volumes:       - postgres-data:/var/lib/postgresql/data    zerotier:     image: zyclonite/zerotier:1.14.2     hostname: zerotier     container_name: zerotier     restart: unless-stopped     volumes:       - zerotier:/var/lib/zerotier-one     cap_add:       - NET_ADMIN       - SYS_ADMIN     devices:       - /dev/net/tun:/dev/net/tun     ports:       - "9993:9993/udp"     environment:       - ZT_OVERRIDE_LOCAL_CONF=true       - ZT_ALLOW_MANAGEMENT_FROM=172.31.255.0/29    ztnet:     image: sinamics/ztnet:latest     container_name: ztnet     working_dir: /app      volumes:       - zerotier:/var/lib/zerotier-one     restart: unless-stopped     ports:       - 3000:3000     environment:       POSTGRES_HOST: postgres       POSTGRES_PORT: 5432       POSTGRES_USER: postgres       POSTGRES_PASSWORD: postgres       POSTGRES_DB: ztnet       NEXTAUTH_URL: "http://localhost:3000"       NEXTAUTH_SECRET: "random_secret"       NEXTAUTH_URL_INTERNAL: "http://ztnet:3000"     links:       - postgres     depends_on:       - postgres       - zerotier  volumes:   zerotier:   postgres-data:  networks:   default:     name: zerotier     driver: bridge     ipam:       driver: default       config:         - subnet: 172.31.255.0/29

Запуск и настройка

​Запустим командой:

docker compose -f /srv/zerotier/docker-compose.yml up -d

Входим в установленную панель по адресу http://<IP_СЕРВЕРА>:3000

​Регистрируемся, нажав на кнопку «Get started!», вводим имя пользователя, любую почту (подтверждать её не нужно) и пароль.

​После регистрации сразу откроется главный экран панели, на котором нам необходимо нажать «Create a network», для того чтобы приступить к созданию приватной сети.

Созданная сеть выглядит следующим образом:

Сетью уже можно пользоваться, но давайте разберём подробно некоторые моменты:

В правом верхнем углу имеется переключатель видимости сети: Private и Public.

Если необходимо чтобы сеть была доступна только доверенным лицам, и Вы вручную одобряли тех пользователей, которые желают присоединиться к сети – выбираем Private.

Если желаете сделать сеть доступной для свободного присоединения для всех без исключения – выбираем Public.

Вы также можете настроить префикс новой сети, выбрав один из популярных вариантов, или же задав свой, в разделе IP Assignment → Advanced.

Для примера зададим новый префикс сети с CIDR 10.0.0.0/24. Тогда укажем следующие значения:

Range start – 10.0.0.1
Range end – 10.0.0.254

Применив изменения, добавится новый route в разделе «Managed Routes». При этом желательно удалить старый route и старый префикс, в нашем случае это 10.121.15.0/24

Подключение

Устанавливаем клиент ZeroTier с официального сайта, после чего подключаемся к нашей сети.

​Жмем ПКМ по иконке ZeroTier в трее и выбираем в нём пункт «Join New network». В появившемся окне вводим ID сети, которую мы создали. Его можно найти в установленной веб-панели ZTNet на вкладке сети.

Новое подключение необходимо подтвердить на стороне панели, нажав на чекбокс около клиента, который пытается осуществить подключение. Тоже самое необходимо осуществить на стороне каждого клиента, который должен находиться в сети ZeroTier.

Эксплуатация

Проверим работоспособность нашего решения на практике:После подключения другого клиента (Ваших друзей) к сети проверим возможность подключения к нему, проверив прямой пинг до него через терминал, возьмём IP нашего друга из примера:​​ Win + R → cmd

ping 10.0.0.201

Если пинг есть — значит всё ок. Теперь мы можем использовать возможности ZeroTier для наших целей.

Майнкрафт — это моя жизнь​

Для примера создадим сервер Minecraft и проверим, сможем ли мы играть совместно с участниками сети.

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

Делимся с друзьями нашим IP клиента ZeroTier. Его можно будет найти в веб-панели ZTNet.

Просим друзей подключиться через «Прямое подключение» в списке серверов Minecraft.

Примечание: для режима игры «LAN» необходимо наличие лицензии или использование системы скинов, в нашем примере ely.by. Иначе будет ошибка «Недействительная сессия (Попробуйте перезайти в игру)»

Если подключение прошло успешно, значит всё настроено верно.

Для тех, кто не любит многобукаф

Скачать готовый скрипт установки​


ссылка на оригинал статьи https://habr.com/ru/articles/909522/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *