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

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

клиент A, ожидающий получить "привет 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 ответа

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

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

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

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

В качестве примера:

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

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

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

Другие вопросы по тегам