Недавний выход baldur’s gate 3 побудил вновь вернуться к забытым технологиям. Версия игры, которую я имею, не умеет в игру по глобальной сети, но вполне способна играть по локальной сети. Отсюда возникла задача: нужно объединить 2 разнесенных компьютера в локальную сеть.
Эта проблема, на мой взгляд, может быть решена двумя способами, в зависимости от возможностей:
- У вас нет белого ip адреса, нет сервера. Вам нужны приложения для организации виртуальных локальных сетей.
- Либо же вы организуете свой ВПН, который объединит два компьютера в локальную сеть.
LogMeIn Hamachi vs Radmin VPN


Программы выглядят крайне схоже. Крайне схоже работают. Поэтому стоит найти отличия:
Hamachi
Плюсы
- Проприетарная программа
- Ранее очень популярная
- Выше стабильность
- Делает строго только то, для чего вы ее ставите
Недостатки
- Закрытый код, давно не обновляется
- Ограничение на 5 компов в комнате
- Наличие платной подписки
- Необходимо регистрироваться
Radmin
Плюсы
- Клиенты с открытым кодом
- Набирает популярность
- Большой набор утилит для работы с клиентами
- Бесплатная
- Без регистрации
- Нет ограничений на количество участников
Недостатки
- Нестабильная пересылка пакетов- они могут потеряться или повредиться
- Огромный набор утилит, которые могут сыграть злую шутку при наличии злоумышленника в сети
И главный аргумент в случае с baldur’s gate 3- стабильность работы сетевого канала. Игра попросту вылетит при поврежденном кадре, может запороть сохранение и тп. Игра в роли сервера будет работать стабильно, клиенты раз в 30 минут и чаще могут вылетать. Поэтому советую выбрать Hamachi.
Поднятие собственного OpenVPN
Способ, который оказался самым стабильным- поднять свой сервер OpenVPN. К тому же, он и для клиентов самый доступный- в большинстве случаев клиент OpenVPN стоит на компе.
Список необходимого на сервере:
- Docker compose
Создадим необходимые директории:
mkdir compose
mkdir compose/openvpn
sudo mkdir /etc/openvpn
cd compose/openvpn
touch docker-compose.yaml
Внесем в docker-compose.yaml нужные данные контейнера и параметров запуска:
version: '2'
services:
openvpn:
cap_add:
- NET_ADMIN
image: kylemanna/openvpn
container_name: openvpn
ports:
- "1194:1194/udp"
restart: always
volumes:
- /etc/openvpn:/etc/openvpn
Запустим создание конфигурации и ключей:
У нас спросят контрольную фразу (Enter PEM pass phrase) и имя сертификата (Common Name).
docker compose run --rm openvpn ovpn_genconfig -u udp://{vpn_server_address}
docker compose run --rm openvpn ovpn_initpki
Запустим контейнер, проверим что он стартует, флаг -d запускает контейнер отсоединенным- не открывает окно приложения:
docker compose up [-d]
Остановим контейнер, чтобы отредактировать файл (ctrl+c если был запушен без -d):
docker compose down
Отредактируем файл /etc/openvpn/openvpn.conf, внесем строки.
client-to-client разрешает связь клиентов между собой.
topology subnet включает адресацию по ip и маске сети.
client-to-client
topology subnet
Создадим конфиг клиента (1 пользователь = 1 конфиг клиента):
docker compose run --rm openvpn easyrsa build-client-full {client_name} nopass
Экспортируем из конфиг из контейнера в файл:
docker-compose run --rm openvpn ovpn_getclient {client_name} > {client_name}.ovpn
Логи контейнера доступны:
docker-compose logs -f
Теперь необходимо скачать конфиги клиентов, раздать участникам сети, прокинуть порт 1194 в сеть. Участникам необходимо импортировать в openvpn connect полученный конфиг. IP участника локальной сети будет отображаться как «you private ip».
