
Среда
- Ubuntu 18.04.3 LTS
- ZeroTier 1.4.6 (последний стабильный пакет)
- Wine 4.17 (последний пакет разработки)
Я пытаюсь организовать сеанс Red Alert 3 LAN (используя Wine) на своей системе и хотел бы использовать zerotier, поскольку я использую настройку CGNAT.
Zerotier отлично работает, подключаясь к другим системам в той же сети (zerotier). Но я не могу видеть других игроков в сетевом лобби. Используя Wireshark, я смог обнаружить, что пакеты udp, необходимые RA3 для правильной работы, передавались только на интерфейс LAN и вообще не пересылались на сетевой интерфейс zerotier.
Моя следующая попытка(и) заключалась в использовании инструмента, заставляющего Wine использовать интерфейс нулевого уровня.
- небольшая программа связывания на языке C, которую можно загрузить с помощью LD_PRELOAD
- использование скрипта для создания пространств имен и привязки к ним интерфейсов
-
Причины, по которым они потерпели неудачу в том же порядке:
Потому что он не поддерживал UDP
- Поначалу это работало. Но это было нестабильно и непоследовательно. Иногда другой игрок видел меня в лобби, но я не мог видеть его. А иногда было наоборот. Кроме того, мне приходилось запускать это как root, что не очень хорошо при использовании Wine. Так что эта опция не помогла, но помогла мне понять несколько вещей.
- Он смог привязаться к этому интерфейсу, но, к сожалению, я не смог использовать тот же IP (он генерирует другой IP в той же подсети), и я не получил вывод, как при использовании варианта № 2. Я даже попытался добавить IP-адрес в сетевой интерфейс нулевого уровня из
my.zerotier.com
пользовательского интерфейса. Это не помогло.
Кроме этого я пробовал много конфигураций iptables, но это не помогло. Я также включил пересылку ipv4 через sysctl. Я все еще думаю, что это можно решить через iptables.Этотэто последняя попытка, которую я имею на данный момент (в виде bash-скрипта)