LINUX.ORG.RU
ФорумAdmin

openvpn и emperor: battle for dune, настройка сети

 ,


0

2

Играем в игрушку с друзьями. Раньше все это было через хамачи, работало неплохо, сейчас появилась потребность сделать все это через openvpn. На домашнем серваке настроил openvpn. Само подключение работает, пинг между всеми клиентами проходит, бродкаст тоже вроде пашет. Естесственно в игре указано использовать именно эту сеть. Но при входе в лобби (там где показываются игроки и созданные игры в локальной сети), игроки и созданные игры не отображаются. Ткните носом, что делаю не так, устал уже

Конфиги:

server.conf

port 1194
duplicate-cn
client-to-client
proto udp
mode server
dev tap
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
server 192.168.10.0 255.255.255.0
push "route-gateway 192.168.10.1"
route add -net 192.168.1.0 dev tap
keepalive 10 120
user nobody
group nogroup
persist-key
persist-tun
verb 4
mute 20
tls-server
;client-config-dir /etc/openvpn/ccd
log-append /var/log/openvpn.log
route 192.168.10.0 255.255.255.0
ifconfig 192.168.10.1 255.255.255.0
push "redirect-gateway defl"

client.conf

remote address.org 1194
client
dev tap
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
verb 4
mute 20

#ifconfig

tap0      Link encap:Ethernet  HWaddr fe:9e:6f:b4:af:0b  
          inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::fc9e:6fff:feb4:af0b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1279 errors:0 dropped:1017 overruns:0 frame:0
          TX packets:84 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:388503 (379.3 KiB)  TX bytes:9725 (9.4 KiB)

Броадкаст вряд-ли по умолчанию ходить будет. Тебе надо сбриджевать интерфейс локалки и этот tap0 для объединения LAN-сегментов если нужен именно броадкаст.

blind_oracle ★★★★★ ()
Ответ на: комментарий от blind_oracle

Надо что бы игрушка работала только для клиентов openvpn. Для этого разве нужно бриджевать eth и tap?

northbear ()
Ответ на: комментарий от blind_oracle

разрешал на клиентских машинах ответ на ping запросы через broadcast, все откликались

northbear ()

Показывай все интерфейсы, а не только vpn.
Игра под Linux или Windows?

zgen ★★★★★ ()
Ответ на: комментарий от zgen

wine. через хамачи все четко. openvpn ни в какую. Только что проверил broadcast еще раз (уже ни в чем не уверен), но все ок, ответы идут

northbear ()
Ответ на: комментарий от northbear

Сделайте bridge с локальным интерфейсом для теста, если заработает - то будет ясно, где (и как) искать ответ.

iptables -nvL
заодно покажите.

В wine я не специалист. Надеюсь там нет сетевых прокладок.

zgen ★★★★★ ()
Последнее исправление: zgen (всего исправлений: 1)
Ответ на: комментарий от zgen

iptables чисты как слеза, я их еще не настраивал (все равно проверил)

Возможно, это косяк wine. Достал второй ноут, запустил так же через вино игрушку, попытался по локалке соединиться и получил индейскую народную хижину в ответ. Выходит проблема не в openvpn. Почему же тогда это чудо работает через хамач? А может дело в том, что при тестах с хамачей была задействована машина с виндой... Завтра попробую, посмотрим что будет. Логики пока не видно

northbear ()
Ответ на: комментарий от northbear

Логики пока не видно

Очень даже видно. Надо идти сеть в wine настраивать.

zgen ★★★★★ ()
Ответ на: комментарий от zgen

Не слыхал чтоб в вине можно было сеть настраивать. Но думаю что проблема должна быть связана с ним

northbear ()

<offtop> ох, как я залипал в westwood'овские стратежки в своё время. </offtop>

По теме: броадкаст броадкасту рознь. Есть широковещательный в подсети и широковещательный на физическом уровне. Первый зависит от адреса сети с маской, например, подсеть 192.168.0.0/24 будет иметь широковещательный адрес 192.168.0.255, а вот универсальный ipv4 широковещательный адрес будет 255.255.255.255 (для всех подсетей). В виндах тех времён и в частности emperor/C&C преобладает применение второго варианта, а вот линукс следует стандартам и по-умолчанию пользует 192.168.0.255 для подсети. Вот на этой несостыковке возникает проблема реализации в wine, не все игры адекватно работают. Что можно сделать - попробовать прописать ручками маршрут 255.255.255.255/32 на нужный интерфейс в линуксе.

Ещё нюанс, я не знаю, как openvpn реализует L2 подключения. Если на сервере, к которому подключаются клиенты для каждого из них создаётся отдельный интерфейс, то все эти интерфейсы нужно объединить в bridge. Если же интерфейс один на всех, то ничего делать не надо, скорее всего всем занимается openvpn.

nickleiten ★★★ ()
Последнее исправление: nickleiten (всего исправлений: 2)
Ответ на: комментарий от nickleiten

1. Про broadcst'ы. Действительно, в openvpn broadcast адрес отличен от того что в хамаче. В хамаче он 25.255.255.255, в openvpn (у меня в подсети) 192.168.10.255

2. Openvpn всем рулит, интерфейсы не создаются

Чтоже, попробую решить маршрутизацией.

northbear ()
Ответ на: комментарий от northbear

broadcast хамачи вообщето соответствует маске подсети

ham0      Link encap:Ethernet  HWaddr 7a:79:19:28:19:33  
          inet addr:25.40.25.51  Bcast:25.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1404  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:43 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 B)  TX bytes:7550 (7.3 KiB)

Как и broadcast моей подстети соответствует маске моей подсети.

tap0      Link encap:Ethernet  HWaddr e6:a8:a0:46:34:4d  
          inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:5710 (5.5 KiB)
Никакого 255.255.255.255/32 hamachi не использует, но при этом все работает. Чудеса...

northbear ()
Ответ на: комментарий от northbear

Посмотрите tcpdump'ом при включённой игре, какие пакеты (адреса) приходят и уходят. Желательно и с винды и с линукса, чтоб увидеть разницу. Я уже не помню деталей, давно было, но я решил такую же проблему и помню, что загвоздка именно в broadcast'ах.

Насчёт непосредственно 255.255.255.255 адреса, а он не должен светиться на интерфейсе, в винде он тоже не светится. Вся проблема в sockopt SO_BROADCAST, который выставляется при создании socket'а в программе. И если не указать адрес подсети в винде, она выставляет destination 255.255.255.255, возможно, есть какие-то ещё подводные камни, глубоко в детали погружался, мне достаточно было увидеть эту разницу в поведении. А в линуксе и SO_BROADCAST выставляет подсеть из интерфейса и если ручками в сокете не указать злополучный 255.255.255.255 винда может не сработать. Не помню точно в каком направлени возникала проблема. Допускаю, что в том же hamachi предусмотрели на уровне интерфейса подмену адресов.

PS честно, просто влом сейчас распаковывать игру и заниматься этим, вспоминать детали :)

nickleiten ★★★ ()
Последнее исправление: nickleiten (всего исправлений: 2)
Ответ на: комментарий от anonymous

Хочу поблагодарить всех за то, что помогли разобраться. Все заработало и я счастлив)

А помогло следующее: на серваке добавил broadcast

route add -host 255.255.255.255/32 <interface>

проверил, машины стали отзываться на ICMP echo, зашел в игрушку, поигрался с выбором подсети в настройках и все заработало. Надо сказать, что работает только если выбрать подсеть с адресом 127.12.34.х . Откуда она берется, неизвестно, но какая разница) все работает

Надеюсь это поможет еще кому-то и у него не будет так болеть моск

northbear ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.