LINUX.ORG.RU
ФорумTalks

STUN в psi


0

0

Вот. намутил патч для psi, чтобы сабж поддерживал (для передачи файлов. Теперь не надо вписывать руками внешний IP постоянно). Естественно к UPnP это отношения не имеет. Порты надо руками пробросить.

Давайте - тестите :)

http://flyspray.psi-im.org/task/861?getfile=145

★★☆☆☆

Немного не в тему, но...

Покурил http://ru.wikipedia.org/wiki/STUN и не понял какой смысл в этом самом STUN. Роутеры давно уже понимают "как бы соединения" UDP, для этого отпадает. Через NAT до компа внутри сети таким макаром также не достучишься. В чём смысл-то?

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

смысл в том, что если оба сидят за натом ни один из них не знает IP на который надо соединится.

И инициатор (или приемник, не помню точно) передачи должен сообщить свой адрес. Так вот раньше надо было этот адрес вбивать руками. Или dyndns юзать. А поддержка STUN эту проблему решает. Программа сама может определить свой внешний IP.

dikiy ★★☆☆☆
() автор топика
Ответ на: комментарий от anonymous

Через NAT как раз достучаться можно. Для этого надо только лишь порт пробросить (или через UPnP, но это не кошерно). Это как раз не проблема.

dikiy ★★☆☆☆
() автор топика
Ответ на: комментарий от shahid

>Скомпилил с патчем и запустил. А дальше что делать-то?

Дальше в настройках у тебя появились поля STUN server и STUN port.

в качестве первого можешь выбрать любой публичный STUN сервер (например stun.ekiga.net) А в качестве второго обычно выступает 3478.

Правда пока я еще не добавил сообщения об ошибках, если сервер не доступен. Оно тогда просто молчит.

Попробуй теперь покидаться файлами с кем-то (ну и порт нужно, естественно пробросить на котором psi слушает).

Если ты не за натом, то эта фича тебе не нужна. должно и так работать. Но потестить все равно будет неплохо. Как оно себя будет вести.

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

> Если ты не за натом

NAT есть, цепочка - примерно четыре роутера(( Что-то я неправильно написал спеку: вот первая ошибка:

In file included from stun.cpp:35:
packet.h:23:18: error: defs.h: Нет такого файла или каталога
stun.cpp: In function ‘char* getmappedaddress(const char*, int)’:
stun.cpp:42: warning: unused variable ‘c’
make[1]: *** [.obj/stun.o] Ошибка 1
make[1]: *** Ожидание завершения заданий...
make[1]: *** [.obj/packet.o] Ошибка 1

#include "defs.h"
Удалил этот инклюд, ибо не нашел ни одного defs.h ни в сорцах, ни в /usr/include. Авось заработает)

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

> Через NAT как раз достучаться можно. Для этого надо только лишь порт пробросить (или через UPnP, но это не кошерно).

Так "порт пробросить" это и есть главная проблема, когда ты за NAT и этим NAT не можешь управлять. Если у тебя проброс порта уже есть, зачем остальные ухищрения? И так же всё работать должно, если программе одного порта на вход хватает.

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

>In file included from stun.cpp:35: packet.h:23:18: error: defs.h: Нет такого файла или каталога

http://flyspray.psi-im.org/task/861?getfile=146

fixed.

>NAT есть, цепочка - примерно четыре роутера((

надо на каждом пробросить порт. то есть по цепочке внутрь.

dikiy ★★☆☆☆
() автор топика
Ответ на: комментарий от anonymous

>Так "порт пробросить" это и есть главная проблема, когда ты за NAT и этим NAT не можешь управлять. Если у тебя проброс порта уже есть, зачем остальные ухищрения? И так же всё работать должно, если программе одного порта на вход хватает.

нет. пробросить порт - это только пол дела. Это довольно просто. Я уже писал здесь http://www.linux.org.ru/jump-message.jsp?msgid=3294261&cid=3294468

А если порт не пробросить, то есессно вообще ничего работать не будет.

dikiy ★★☆☆☆
() автор топика
Ответ на: комментарий от isden

>почему?

Потому что проброс портов с помощью UPnP - rip. Это сводит на нет любой файрволл. Так что реализовывать то, что скоро уйдет в небытие - глупо.

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