Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Stun клиент не работает

руслан тагиров Знаток (420), на голосовании 1 год назад
Периодически у меня появляется желание пробросить порт через нат, обычно я это делаю через нгрок, но я не оставляю попыток сделать это напрямую - webrtc же это может делать почему я нет. Примерно раз в полгода я пытаюсь безуспешно использовать для этого публичные стан сервера от гугл, но у меня ничего не выходит.
Типа вот я подключаюсь к стан серверу и прошу выдать пару адрес-порт он образно говорит что вот твой порт например мапится в 95.25.1.89 18689, я запускаю неткат чтобы проверить но не могу подключиться.
Просчитался, но где?

лог стан сервера:

 STUN client version 0.97 
Opened port 1901 with fd 3
Opened port 1902 with fd 4
Encoding stun message:
Encoding ChangeRequest: 0

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 4

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 2

About to send msg of len 28 to 212.227.67.34:3478
Received stun message: 88 bytes
MappedAddress = 95.25.1.89:18689
SourceAddress = 212.227.67.34:3479
ChangedAddress = 212.227.67.33:3478
XorMappedAddress = 95.25.1.89:18689
ServerName = Vovida.org 0.97
Received message of type 257 id=1
Encoding stun message:
Encoding ChangeRequest: 0

About to send msg of len 28 to 212.227.67.33:3478
Encoding stun message:
Encoding ChangeRequest: 4

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 2

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 0

About to send msg of len 28 to 95.25.1.89:18689
Received stun message: 28 bytes
ChangeRequest = 0
Received message of type 1 id=11
Received stun message: 88 bytes
MappedAddress = 95.25.1.89:18689
SourceAddress = 212.227.67.33:3478
ChangedAddress = 212.227.67.34:3479
XorMappedAddress = 95.25.1.89:18689
ServerName = Vovida.org 0.97
Received message of type 257 id=10
Encoding stun message:
Encoding ChangeRequest: 4

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 2

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 4

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 2

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 4

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 2

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 4

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 2

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 4

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 2

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 4

About to send msg of len 28 to 212.227.67.34:3478
Encoding stun message:
Encoding ChangeRequest: 2

About to send msg of len 28 to 212.227.67.34:3478
test I = 1
test II = 0
test III = 0
test I(2) = 1
is nat = 1
mapped IP same = 1
hairpin = 1
preserver port = 0
Primary: Independent Mapping, Port Dependent Filter, random port, will hairpin
Return value is 0x000006
Дополнен 1 год назад
Из логов видно что у меня Port-Restricted Cone NAT быть может это роутер не пропускает соединение?
как такое проверить?
Дополнен 1 год назад
Нет, роутер не виноват: я его отключил но все еще не могу подключиться даже зная внешний адрес и порт
Дополнен 1 год назад
Если вам нужен ответ на вопрос, на третьей моей попытке победить нат мне это удалось:
везде про порт рестриктед нат пишут что он не примет пакет если клиент не отправлял запросы на сервер. Когда я это читал я думал там какая то хитренькая схема что не всякий поймет на деле оказалось что достаточно отправить немного мусора на сервер чтобы от него можно было еще минуту принимать сообщения. Все так просто:
1. узнайте внешний порт-адрес желаемого порта
2. пошлите на сервер с желаемого порта немного чего угодно по юдп (с тсп у меня ничего не вышло не знаю почему)
3. можете принимать от сервера че угодно
А сервер может быть таким же как вы порт рестриктед над я с другом проверил это
работает
Голосование за лучший ответ
Татьяна Просветленный (36384) 1 год назад
Из лога STUN-сервера видно, что клиент успешно получил адрес и порт, но не может подключиться к ним. Возможно, проблема связана с NAT-ом, который может блокировать входящие соединения. Протокол STUN позволяет клиентам находить свой адрес общего доступа, тип NAT, за которым они находятся и порт Интернета, связываемый NAT с конкретным локальным
Однако, протокол STUN плохо работает с симметричным NAT'ом (и сервер и клиент находятся за NAT), что может быть причиной неудачного подключения
Возможно, стоит попробовать использовать другой протокол, например, TURN или ICE
Похожие вопросы