Стабильный мультиплеер без вылетов через OpenVPN!

Sid Meier's Civilization V2.8k views31 favorites5 min readRussianby OwlUpdated 27 Oct, 2018View on Steam ↗

Что может помешать создать VPN.

Есть вещи, которые могут вам помешать:
1. Динамический IP
С динамическим IP VPN не реализовать, поэтому придётся делать статический IP (например, в роутере или другим способом).
2. Закрыты порты
Если вы проделали действия, которые должны открыть порты, но они все равно не открываются, тогда загляните сюда https://portforward.com/help/portcheck.htm, скачайте программу и следуйте инструкции на странице. Если в ходе проверки, которую вы как раз и выполняете, Port Check Result будет зеленый, не огорчайтесь раньше времени, шансы у вас есть! В противном случае шансы невелики.
3. Брандмауэр/Firewall
В основном он мешает тем, кто создает VPN и будет хостом сервера в игре. Самый простой способ - отключить хотя бы на тот промежуток времени, когда вы будете играть по локальной сети.
4. Антивирусы
Если будут мешать, отключайте.
5. Не админ компуктера
Думаю, не нужно объяснять.


Скачиваем и устанавливаем программу OpenVPN.

1. Скачиваем
Ссылка - https://openvpn.net/community-downloads/. Жмём кнопку "SEE DETAILS", в открывшемся списке находим Windows installer (NSIS) и скачиваем.

2. Установка
Если вы создаёте VPN, важно поставить галочку "EasyRSA 2 Certificate Management Scripts". Если вы будете присоединяться к VPN, галочка не важна. В Advanced все могут оставить только галочку "OpenVPN File Associations". Путь к месту установки желательно "проложить" без кириллицы.

Создание VPN. Часть 1.

1. Открываем папку, где установлена программа (OpenVPN).
2. В папке bin будет находиться файл openvpn.exe, которому в свойствах надо поставить галочку "Запускать эту программу от имени администратора"
3. Затем возвращаемся и ищем папку Easy-rsa. Открываем и запускаем там init-config.bat.
4. Появится новый файл vars.bat, который открываем блокнотом.
Cтрочку rem set "PATH=%PATH%;C:\Program Files\OpenVPN\bin" исправляем на set "PATH=%PATH%;<Путь к папке OpenVPN>\OpenVPN\bin"

Также меняем set HOME=%ProgramFiles%\OpenVPN\easy-rsa на set HOME=<Путь к папке OpenVPN>\OpenVPN\easy-rsa

В самом конце меняем 4 строчки
set KEY_COUNTRY=US
set KEY_PROVINCE=CA
set KEY_CITY=SanFrancisco
set KEY_ORG=OpenVPN

на следующие (в первой строчке после = всегда идут 2 прописные буквы, в остальных не важно, главное писать все на английском)

set KEY_COUNTRY=RU
set KEY_PROVINCE=Moscow
set KEY_CITY=Moscow
set KEY_ORG=MyOpenVPN

Сохраняем и закрываем.

5. Запускаем командную строку (СMD) от имени администратора.
Пишем следующие команды:
cd <Путь к папке OpenVPN>\OpenVPN\easy-rsa\
vars
clean-all
vars
build-ca
(Вас просят ввести Country Name и т.д. Просто жмите пробел, пока запросы не перестанут поступать.)
vars
build-dh
(Сгенерируется файл, просто ждите.)
vars
build-key-server server
(Жмете пробел до тех пор, пока не появится строчка "Sign the certificate?" набираем y. Тоже самое сделать для следующей строчки.)

6. Теперь вы должны создать файлы для каждого человека, который будет присоединяться к VPN и будет игроком на вашем сервере.
vars
build-key client1
(жмите пробел, пропуская все)
Для каждого следующего делаем тоже самое, только не забываем менять цифры (client2, client3). В папке easy-rsa недавно появилась папка "keys", в которой сгенерированы файлы, о которых позже.

Если в ходе написания команд вы что-то сделали неправильно, удалите в папке "keys" все файлы и начните заново с пункта 5.

Создание VPN. Часть 2.

1. Открываем блокнот и создаем новый текстовый документ для сервера
Вставляем следующее (если dh у вас другое, поменяйте):

port 1194
proto tcp
dev tap
dev-node server
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
client-to-client
keepalive 10 120
cipher AES-256-CBC
persist-key
persist-tun
verb 6

Сохраняем как Server.ovpn в папку, где у вас будет храниться сервер. Также скидываем туда файлы из папки "keys": ca.crt, server.crt, server.key, dh2048.pem

2. Создаём ещё один текстовый документ для клиентов

client
dev tap
dev-node server
proto tcp
remote <IP-адрес (создателя сервера)> 1194
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
verb 6

Сохраняем как Client.ovpn в папку, где храниться сервер.

3. Скидываем каждому клиенту файлы любым удобным вам способом (Skype, Discord, Email и т.д).
Файлов 4 (1 создан через блокнот, остальные лежат в папке "keys"):
Client.ovpn
ca.crt
client<цифра для каждого клиента своя>.crt
client<цифра для каждого клиента своя>.key

Не забудьте сказать клиентам, чтобы отредактировали Client.ovpn, изменив эти строчки согласно файлам, которые они получили:
cert client1.crt
key client1.key

Запуск VPN и подключение клиентов к нему.

1. Все идут в параметры адаптера/сетевые подключения и переименовывают адаптер "TAP-Windows Adapter V9" на server.

2. Затем открывают свойства этого адаптера и меняют в протоколах IP версии 4 и 6 метрику интерфейса (нажмите кнопку Дополнительно) c автоматической на ручную , выставив значение 5.

3. Далее создатель VPN запускает Server.ovpn, нажав сначала правой кнопкой мыши по файлу, а затем по команде "Start OpenVPN on this config file" и ждёт пока загрузится программа до этого момента.

4. Теперь клиенты запускают Client.ovpn таким же образом, как Server.ovpn. Внимательно за логами Client.ovpn. Если там строчки не генерируются каждую секунду, а в последней строчке написано "Press any key to continue...", значит в чем-то вы ошиблись (или тот, кто делал Client.ovpn). Ещё может быть такой случай:
Это могут быть: проделки Брандмауэра/Firewall'a/Антивируса на стороне клиента/сервера, неправильный IP-адрес сервера (если IP-адрес роутера стоял, значит поменяйте на ваш реальный). А ещё могут быть закрыты порты у того, кто серв запустил. В самом начале руководства я писал об этом. Если отключение Брандмауэра/Firewall'a и прочие вещи не работают, значит не судьба вам быть сервером. Можете скинуть файлы сервера и Server.ovpn кому-нибудь другому, а сами станьте клиентом.
Если же Client.ovpn начинает быстро и без остановки генерировать различные строки и в то же время наблюдается и в Server.ovpn, значит всё получилось!

Запуск сервера в Sid Meier's Civilization V и другое.

  • Принцип создания сервера тот же, что и для обычной игры по сети через сервера Steam, только через локальную сеть. Тот, кто запустил сервер, создаёт игру, а те, кто подключились к серверу, видят игру и могут заходить.
  • Пускай клиенты проверят через командную строку соединение с сервером:
    ping 10.8.0.1
    Высчитайте для себя среднее значение между минимальным и максимальным ms. Чем оно выше, тем больше вероятность, того что вы будете вылетать. Также на вылеты влияtт сворачивание игры кем-либо из участников партии. Если вам без сворачиваний никак не обойтись, запускайте игру в оконном режиме.
  • Помимо Sid Meier's Civilization V вы можете играть в другие игры по локальной сети, главное помните - адрес сервера 10.8.0.1, а все остальные клиенты 10.8.0.2 и т.д если будете подключаться по TCP/IP.
  • Если вы хотите изменить код Server.ovpn/Client.ovpn, посмотрите примеры (samples), которые сделали разработчики (<Путь к папке OpenVPN>\OpenVPN\sample-config). Будет полезно заглянуть в раздел "Список использованных источников". Там можно подчерпнуть знаний и, например, адаптировать это руководство на другие ОС.

Список использованных источников.

  1. https://forums.civfanatics.com/threads/multiplayer-using-openvpn-0-disconnects.482925/ - гайд, который вдохновил на создание этого руководства.
  2. https://community.openvpn.net/openvpn/wiki - официальная википедия
  3. https://openvpn.net/community-resources/how-to/ - Howto (руководство по созданию VPN)
  4. http://lithium.opennet.ru/articles/openvpn/openvpn-howto.html - перевод HOWTO + примеры клиента и сервера (samples).

This guide was created by its original author on the Steam Community. Are you the author and want it removed? Request removal.