четверг, 23 января 2014 г.

Тест корректного проброса портов

Привет.
С бетки 23 во флайлинк встроена функция тестирования доступности указанных в конфигурации портов со стороны внешнего сервера.
зеленые иконки, будут говорить о корректной настройки сетевой части.






 






раньше этой функцией занимался скрипт http://flylinkdc.com/test.php
но у него был недостаток - он не поддерживал тест UDP порта, т.к. со стороны сервер нельзя узнать
долетел пакет до клиента или нет.
В текущей реализации это исправлено.
Алгоритм работы такой
1. Клиент шлет на сервер json с указанием портов, какие нужно проверить
{
 "CID":"S7IVMBQPT23U3WN2AONV2UTAPL3NGA6GARBXXXA",
 "tcp": [  {  "port":15234 } ], "udp": [  {  "port":16237  },  {   "port":22094  } ]
}
2. Сервер получает запрос и запускает нитку выполняющую обратную передачу специального пакета на указанные порты  

посылка имеет формат $FLY-TEST-PORT S7IVMBQPT23U3WN2AONV2UTAPL3NGA6GARBXXXA91.192.99.251:15234|
3. Слушающие сокеты на стороне флая обрабатывают такую посылку, сравнивают CID и зажигают лампочки зеленым цветом.
Пока сильно не распространилось - критикуйте реализацию, может что-то криво или не учел чего...а может что-то добавить
бонусом этого запроса является получения вашего внешнего WAN IP
соответственно обращенеи к http://checkip.dyndns.com не требуется.

Следующим шагом  для помощи проблем в районе сети будет детект открытости приложения в фаерволе винды а также его автоматическое добавление.
подобное уже реализовано в мастере первичной настройке.
но я нашел немного другую реализацию в гугл-хроме 
chromium\home\src_tarball\tarball\chromium\src\third_party\libjingle\source\talk\base\winfirewall.*
попробую ее.
Отправить комментарий