Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 20 из 32

Тема: Игра вдвоем с 1 IP

  1. #1
    Освоившийся
    Регистрация
    17.05.2010
    Сообщений
    237
    <b>Как играть нескольким игрокам с 1 внешним ip в одной игре</b><br /><br />Кто не знает, что такое NAT и имеет ли эта статья к нему вообще отношение - может почитать <a href="http://ru.wikibooks.org/wiki/Порт" target="_blank">это</a> и <a href="http://ru.wikibooks.org/wiki/Порт/NAT" target="_blank">это</a>.<br /><br /><a href="http://harpywar.com/?a=articles&b=1&c=0&d=27&lang=ru" target="_blank">Соединение в Battle.Net играх</a>.<br /><br /><br /><br /><br />Для War 3 все сравнительно просто - те, кто сидят за 1 ip, не должны хостить игру. Starcraft и War 2 же требуют соединения между всеми клиентами.<br /><br />Причина проблем вот в чем.<br /><br />Желающий зайти в игру клиент получает <i>внешний</i> iport других клиентов от сервера или хоста и пытается с ними соединиться. Даже если этот клиент находится в той же локалке (за тем же NAT-ом), что и джойнящийся - он все равно пытается установить соединение с внешним ip NAT рутера, т.к. он просто не знает про существование NAT-а. Проблема в том, что в RFC для NAT не описано, как NAT должен обрабатывать такую ситуацию (иногда это называют <i>NAT loopback</i>), и несмотря на то, что подавляющее большинство прошивок сделаны на базе линупса, который сам по себе эти соединения разрешает - среди производителей рутеров &quot;кто как хочет, тот так и др...&quot;, т.е. рутер их или разрешает, или нет. Это ничем не лечится (если нет возможности поставить альтернативную прошивку вроде DD-WRT / OpenWRT), только заменой рутера на тот, который это может.<br /><br />Единственное, что можно в такой ситуации сделать - это протестировать, какие модели рутеров с какими версиями прошивки разрешают соединения на свой внешний ip из внутренней сети, а какие нет, и покупать рутер, который это разрешает.<br /><br /><b>Developers, Developers, Developers!</b><br /><br />Идеальным способом было бы как сделано <a href="http://nattest.net.in.tum.de/?mod=start" target="_blank">здесь</a> - <a href="http://nattest.net.in.tum.de/?mod=results" target="_blank">база данных</a> по рутерам + программа-тестер, которая эту базу заполняет. Соответственно, ищется разработчик для нее и для серверной части. Программа желательно должна быть на нативном (компилируемым) языке, т.е. не требующим дополнительных библиотек вроде Java или .Net. С алгоритмом тестирования и серверной частью могу помочь.<br /><br />Все, что тут написано, относится не только к Battle.Net играм - оно относится к любой ситуации, когда клиенты соединяются друг с другом и они могут оказаться за одним и тем же NAT-ом, например, различные p2p программы, интернет телефония. С точки зрения совместимости с программами, которые не знают про существование NAT, было бы гораздо правильнее такие соединения разрешать. Можно ли как-то написать петицию к производителям NAT рутеров? <br /><br /><b>Алгоритм проверки.</b><br />1. Тестируем портмаппинг снаружи. Сервисов для этого навалом, как на сайтах p2p файлообменников, так и на <a href="http://www.portforward.com/help/portcheck.htm" target="_blank">portforward.com</a> (там могут проверять отдельно UDP). Если добавить поддержку UPnP, можно пытаться открыть порт самому. Если порт закрыт, заканчиваем, иначе переходим к 2. Хотя можно оставить портмэппинг на совести юзера и предложить юзеру перейти к 2, на случай, если у него инета нет или с ним чето не то.<br />2. Если 1. сработал, открываем новый сокет, и с него проверяем портмэппинг изнутри. Если соединение работает в <b>обе</b> стороны, то все работает, иначе нет.<br />3. Открываем юзеру окно с результатами теста (или сразу страницу в браузере). Предлагаем ему вбить туда данные рутера (их можно прочесть опять же через UPnP) и потом отправляем на сайт.<br /><br /><b>Более простой алгоритм ручной проверки.</b><br />1. Качаем Blue&#039;s port tool (что-то вроде netcat с GUI). <a href="http://s51.radikal.ru/i133/1002/e6/555bcdb02f9a.gif" target="_blank">GIFRAR</a>, сохранить на диск и открыть винраром.<br />2. Запускаем. В графе port пишем порт, ставим галку на TCP. Жмем на listen. Соответствующий порт должен быть открыт на рутере.<br />3. Проверяем, открыт ли порт снаружи. <a href="http://www.yougetsignal.com/tools/open-ports/" target="_blank">http://www.yougetsignal.com/tools/open-ports/</a> - здесь заодно можно узнать и свой внешний ip. Если порт открыт - читаем дальше.<br />4. Запускаем браузер, пишем в адресной строке http://внешний_ip:порт/. В окне Port tool должно появиться что-то вроде <br /><!--code1--><div class="scriptcode"><!--ecode1-->GET / HTTP/1.1<br />blabla<br /><!--code2--></div><!--ecode2--><br />Если появилось - поздравляю, все работает. Нет - ну и суда нет.<br /><br /><b>Алгоритм ручной проверки.</b><br />1. <a href="http://joncraton.org/media/files/nc111nt.zip" target="_blank">Качаем netcat</a>.<br />2. Открываем 2 консоли.<br />В 1й пишем: <i>nc -L -p 6112</i> <br />(Программа слушает порт 6112 TCP. Он может быть любым, должен быть прокинут на рутере и не занят. Для UDP добавьте <i>-u</i>)<br />3. Во 2й пишем: <i>nc external_ip 6112</i> <br />Вместо external_ip пишем свой внешний ip, его можно узнать тут: 2ip.ru. Для UDP опять добавьте <i>-u</i>)<br />4. Если программа не вышла, попробуйте что-то написать в окно и нажать Enter. Текст должен появиться во втором окне. Напишите что-то во втором окне - текст должен появиться в первом окне. Если получилось, поздравляю, у вас все работает.<br />Если хоть 1 шаг не работает - значит нефарт, играть вам не светит.<br /><br />Апдейты будут,скорее всего <a href="http://forums.harpywar.com/viewtopic.php?id=298" target="_blank">здесь</a><br /><br />Э, а чего картинки не работают?

  2. #2
    Освоившийся
    Регистрация
    17.05.2010
    Сообщений
    113
    увы, картинки не работают =(

  3. #3
    Новобранец
    Регистрация
    17.05.2010
    Сообщений
    30
    я конечно не особо в этом разбирался, но не проще будет если один комп будет юзать Freecap или Sockscap и будет пускать пакеты Starcraft&#039;а через прокси-сервер?

  4. #4
    Освоившийся
    Регистрация
    17.05.2010
    Сообщений
    237
    skver, вот разберись сначала. У меня игровой трафик через прокси пустить пока не получилось. Кстати, у кого получится - напишите.<br /><br />Хз почему здесь картинки не работают. Перейди по первой ссылке, там все есть. Или вставь адрес картинки в браузер.<br />

  5. #5
    Освоившийся Аватар для Max Payne
    Регистрация
    17.05.2010
    Адрес
    Kyiv, Ukraine
    Сообщений
    284
    Возможно плохо понял проблему. И не читал коменты. Но:<br />1. Открываешь 6112 и 6113 порты на роутере<br />2. На второй машине: regedit, открываем HKEY_CURRENT_USERSoftwareBattle.netConfiguration, создаем ключ типа DWORD, переименовываем в Game Data Port, ставим десятичное значение, например 6113. Затем открываем этот порт (TCP и UDP) в настройках роутера/фаерволла.<br /><br />З.Ы. NAT насколько я знаю поддерживается на всех роутерах, не? О_о<br />З.Ы.Ы. У меня у самого включен НАТ. Собсно все работает ОК.<br />З.Ы.Ы.Ы. Друг с братом играет по Бнету через роутер + НАТ, с одной машины.<br />Возможно это объясняется тем, что <!--QuoteBegin--><div class="quote"><!--QuoteEBegin-->что подавляющее большинство прошивок сделаны на базе линупса, который сам по себе эти соединения разрешает - среди производителей рутеров &quot;кто как хочет, тот так и др...&quot;, т.е. рутер их или разрешает, или нет<!--QuoteEnd--></div><!--QuoteEEnd--><br />Сори что если не то написал
    My name is Payne, Max Payne...

  6. #6
    Новобранец
    Регистрация
    17.05.2010
    Сообщений
    70
    <b>Max*Payne</b>,<br />а какой роутер у Вас, не подскажете? и версию прошивки, если можно...<br /><br />Если я правильно понял первый пост, не на всех роутерах с такой настройкой, как у Вас, компы смогут соединяться друг с другом, и Вам с роутером повезло)). А то, какие из них все-таки это могут, надо смотреть в табличке <a href="http://nattest.net.in.tum.de/?mod=results" target="_blank">база данных</a>. Правда, не понял, какой из параметров этой таблички отвечает за эту возможность... Если не затруднит, ololoe, поясните.<br /><br />А не подскажете что-то вроде netcat под винды? ) через telnet можно как-то такое соединение замутить? <br /><br />upd(14:47) не получилось через telnet, там порт не больше 1024 можно поставить. Чем бы еще проверить можно?

  7. #7
    Освоившийся
    Регистрация
    17.05.2010
    Сообщений
    237
    <!--QuoteBegin ilp --><div class="title_quote">Цитата: ilp</div><div class="quote"><!--QuoteEBegin-->Если я правильно понял первый пост, не на всех роутерах с такой настройкой, как у Вас, компы смогут соединяться друг с другом, и Вам с роутером повезло)).<!--QuoteEnd--></div><!--QuoteEEnd--><br />Правильно.<br /><br /><!--QuoteBegin ilp --><div class="title_quote">Цитата: ilp</div><div class="quote"><!--QuoteEBegin-->А то, какие из них все-таки это могут, надо смотреть в табличке база данных. Правда, не понял, какой из параметров этой таблички отвечает за эту возможность... <!--QuoteEnd--></div><!--QuoteEEnd--><br />Такой базы данных пока нет (по крайней мере, я не нашел). Но если сделать программу-тестер, которая будет тестировать рутер и отправлять результаты на сайт, и серверную часть, то можно сделать такую базу, в которой можно будет посмотреть, какой рутер это поддерживает (эту возможность иногда называют NAT loopback), а какой нет. Кстати, это проблема не только для старкрафта, а еще и для warcraft 3 (меньше), opensim итд, так что база будет нужна не только 3,5 старкрафт юзерам <br /><br /><!--QuoteBegin ilp --><div class="title_quote">Цитата: ilp</div><div class="quote"><!--QuoteEBegin-->А не подскажете что-то вроде netcat под винды? ) через telnet можно как-то такое соединение замутить? <!--QuoteEnd--></div><!--QuoteEEnd--><br /><a href="http://joncraton.org/media/files/nc111nt.zip" target="_blank">http://joncraton.org/media/files/nc111nt.zip</a> неткат под винду. Использовать так (для тех, кто не умеет работать в консоли):<br />- Распаковать архив<br />- пуск - выполнить - cmd<br />- перетягиваем экзешник в консоль<br />- дописываем параметры<br />Аналогично во 2й консоли.

  8. #8
    А что делать если внешний ip один но раздача интернета ведется с &quot;центрального компьютера&quot;(не роутер) , когда заходиш на 1 серв из батлнета двумя игроками из этой сетки начинает жутко лагать пока кто то один не отключится <!--smile:sad--><img style="vertical-align: middle;border: none;" alt="sad" src="http://sc2tv.ru/engine/data/emoticons/sad.gif" /><!--/smile-->

  9. #9
    Освоившийся
    Регистрация
    17.05.2010
    Сообщений
    237
    Этот &quot;центральный компьютер&quot; и есть рутер. Рутер не обязательно должен быть девайсом, он вполне может быть обычным PC. Посмотреть можно так: в консоли пишешь ipconfig (можно посмотреть и твой ip в панели управления). Default gateway (шлюз по умолчанию) - это и есть твой рутер. Так что 90%, что написанное имеет к тебе отношение.

  10. #10
    а почему консоль неткат вылетает при любом действии ???

  11. #11
    Новобранец
    Регистрация
    17.05.2010
    Сообщений
    70
    <!--QuoteBegin titserg --><div class="title_quote">Цитата: titserg</div><div class="quote"><!--QuoteEBegin-->а почему консоль неткат вылетает при любом действии ???<!--QuoteEnd--></div><!--QuoteEEnd--><br />виндовая? скорее всего потому, что открываете её не из cmd, а из пуск-выполнить.<br />Если нет, тогда что значит &quot;вылетает&quot;?<br /><br />Кстати, ololoe, спасибо за netcat под винду.<br />asus wl520gu с олеговской прошивкой прекрасно пропускает такие соединения

  12. #12
    Освоившийся
    Регистрация
    17.05.2010
    Сообщений
    237
    <!--QuoteBegin ilp --><div class="title_quote">Цитата: ilp</div><div class="quote"><!--QuoteEBegin-->Кстати, ololoe, спасибо за netcat под винду.asus wl520gu с олеговской прошивкой прекрасно пропускает такие соединения<!--QuoteEnd--></div><!--QuoteEEnd--><br />Пожалуйста. Олеговская прошивка это что?<br /><br />Отредактировал статью, теперь тестировать проще.<br /><br />С чего-то вдруг заработало на D-Link DIR-300, я то думал на нем не катит.

  13. #13
    Новобранец
    Регистрация
    17.05.2010
    Сообщений
    70
    <!--QuoteBegin ololoe --><div class="title_quote">Цитата: ololoe</div><div class="quote"><!--QuoteEBegin-->Олеговская прошивка это что?<!--QuoteEnd--></div><!--QuoteEEnd--><br />это неофициальная прошивка для асусов серии wl500g, разработанная <a href="http://wl500g.info/showthread.php?t=2704" target="_blank">Олегом</a>, скачать прошивки можно на <a href="http://wl500g.dyndns.org/" target="_blank">его сайте</a>.<br />сейчас он их уже не делает, оставил исходники для других энтузиастов, их выкладывают на http://wl500g.info<br /><br />кстати, на этом сайте был вариант этой прошивки для dir300, надо только поискать.

  14. #14
    Освоившийся
    Регистрация
    17.05.2010
    Сообщений
    237
    На DIR-300 вроде DD-WRT работает. Как она по сравнению с той, о которой ты пишешь?<br /><br />Dlink не мой, так что перешивать я его и не собирался.<br /><br />Кстати эта самая DD-WRT у меня недавно жидко обосралась. За 3+ лет абсолютный минимум изменений, я задрался уже перешивать - все равно гимору много, а изменений минимум.

  15. #15
    Короче я недавно приобрел как раз тот роутер о котором вы говорите выше - DIR-300<br /><br />делал по этой инструкции<br /><br />Более простой алгоритм ручной проверки. (там чето с Blue&#039;s port tool)<br /><br />ну вроде все заработало только с 3 -раза (хотя на сайте писалось чтто порт открыт в первую попытку)<br /><br />ololoe спс за темку ( хотя я недоконца понял все эти механизмы) вроде заработало !!!

  16. #16
    Освоившийся
    Регистрация
    17.05.2010
    Сообщений
    237
    Пока тестера нет, предлагаю:<br /><br />каждый проверяет свой рутер, как написано в статье, и постит модель рутера, желательно версию прошивки, и результаты.

  17. #17
    Освоившийся Аватар для Max Payne
    Регистрация
    17.05.2010
    Адрес
    Kyiv, Ukraine
    Сообщений
    284
    через Portforward - порт открыт как ТСП так и ЮДП.<br />через порт-тул- при запросе на адрес роутера и порт мозилла пишет &quot;проблема при загрузке страницы, блабла&quot;, сам порт-тул молчит.<br /><br />роутер - ZyXEL P-600 серии (модель P660RT2), прошивка: V3.40(AXN.1) | 07/24/2007... Старая сцук))))
    My name is Payne, Max Payne...

  18. #18
    Освоившийся
    Регистрация
    17.05.2010
    Сообщений
    237
    <!--QuoteBegin Max*Payne --><div class="title_quote">Цитата: Max*Payne</div><div class="quote"><!--QuoteEBegin-->через Portforward - порт открыт как ТСП так и ЮДП.через порт-тул- при запросе на адрес роутера и порт мозилла пишет &quot;проблема при загрузке страницы, блабла&quot;, сам порт-тул молчит.<!--QuoteEnd--></div><!--QuoteEEnd--><br />Значит, у тебя NAT loopback не работает и с 1 ип играть не сможешь.

  19. #19
    ololoe<br />помоги плз<br /><br />все было хорошо - играли на одном сервере без лагов и тут один комп зависает (((<br /><br />а после этого никакие настройки не помогают - лаги вернулись

  20. #20
    Освоившийся
    Регистрация
    17.05.2010
    Сообщений
    237
    <b>titserg</b>, опиши конфигурацию сетки. На чем стоит NAT. Порты проброшены?

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •