Как выполнить p2p за 2 нац? - PullRequest
       47

Как выполнить p2p за 2 нац?

1 голос
/ 10 декабря 2010

Я пытаюсь отправить "привет" между двумя клиентами, каждый из которых находится за брандмауэром NAT, но безуспешно.На данный момент все в порядке с перфорацией по протоколу UDP или TCP.

клиент A, ожидающий 'hello p':

set -- $( wget -qO- http://www.pschmidt.it/screenshooter/ss3.php | awk '{print $1, $2}'); echo $1 $2 $3 $4; `nc -l -v $2 ` & sudo hping3 -2 -c 30 -s $2 -p $4 $3

клиент B отправляет привет p:

set -- $( wget -qO- http://www.pschmidt.it/screenshooter/ss3.php | awk '{print $1, $2}'); echo $1 $2 $3 $4; sudo hping3 -2 -c 30 -s $2 -p $4 $3; echo "hello p" | nc -p $2 -u $3 $4

К сожалению, ничего не получено.

Реализация вдохновлена ​​http://www.brynosaurus.com/pub/net/p2pnat/

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Вам необходимо выяснить, с каким типом NAT вы имеете дело. «Симметричная» терминология устарела. Вы можете прочитать соответствующую главу из книги Practical JXTA II, доступной онлайн от scribd.

Техника, которую вы описываете в своем вопросе, никогда не сработает, если ни у кого из ваших коллег нет публичного адреса. Решение этой проблемы является более сложным и не всегда возможно.

1 голос
/ 10 декабря 2010

Итак, оба ли NAT ограниченные конусы NAT ? Отказывают ли они в доступе к порту, когда ничего не выходило на этот / к источнику запроса раньше?

Вам необходимо отправить пакет с одного хоста на другой с правильными адресами и портами, чтобы NAT затем принимали входящие запросы, даже если это запросы, а не ответы.

Как пример:

ПК1 - NAT1 - сеть - NAT2 - ПК2

ПК1 хочет получить доступ к ПК2 через порт 10.

ПК2 отправляет запрос на ПК1 с портом источника 10 (который заблокирован NAT1). ПК1 отправляет запрос на ПК2 на порт 10, который затем не блокируется и будет отвечать.

...