如何在2个nats后面执行p2p?

时间:2010-12-10 01:23:00

标签: unix tcp udp p2p hole-punching

我正在尝试发送'你好'顺便说一下2个客户端,每个客户端都在防火墙的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

不幸的是没有收到任何信息。

受[{3}}

启发的实施

2 个答案:

答案 0 :(得分:1)

那么,两个NAT 受限制的锥形NAT ?当之前没有任何内容发送到请求源时,他们是否拒绝端口访问?

您需要使用正确的地址和端口将数据包从一个主机发送到另一个主机,以便NAT接受传入请求,即使它们是请求而非响应。

举个例子:

PC1 - NAT1 - 网络 - NAT2 - PC2

PC1想要在端口10上访问PC2。

PC2向PC1发送带有源端口10(被NAT1阻止)的请求。 PC1向PC2发送请求到端口10,然后端口10不被阻止并将被响应。

答案 1 :(得分:1)

您需要调查您正在处理哪种类型的NAT。 “对称”术语已经过时。您可以阅读scribd在线提供的Practical JXTA II书中的相应章节。

如果您的同伴都没有公共地址,那么您在问题中描述的技术将无法运作。解决这个问题更加复杂,并不总是可行。