首页 文章

使用STUN将UDP发送到nat后面的客户端

提问于
浏览
0

我想测试stun客户端/服务器以及从服务器端向客户端发送udp流量 .

我在本地机器上运行stun客户端,得到以下结果 .

Lenovo-Z50-70:~/iop-bb$ stun -v my_stun_server
STUN client version 0.96
Opened port 22948 with fd 3
Opened port 22949 with fd 4
Encoding stun message: 
Encoding ChangeRequest: 0

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

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

About to send msg of len 28 to 212.227.107.179:3478
Received stun message: 88 bytes
MappedAddress = 41.224.250.29:22948
SourceAddress = 212.227.107.179:3478
ChangedAddress = 127.0.0.1:3479
XorMappedAddress = 41.224.250.29:22948
ServerName = Vovida.org 0.96
Received message of type 257  id=1
  • 在服务器端,执行以下命令,echo "hello" | nc -w1 -u 41.224.250.29 22944 .

但是,在客户端我没有收到数据包 . 有什么建议吗?

2 回答

  • 1

    您需要匹配两侧的端口,并在获得公共IP和端口后执行打孔步骤 .

    您运行了一个stun客户端,侦听本地端口22948到服务器(侦听端口3478) . 从该端口向您的服务器发送了一个眩晕绑定请求请求 .

    服务器响应回复,指示您的公共IP:端口是
    41.224.250.29 22948 .

    所以现在你知道你的本地ip(例如192.168.1.2)映射到41.224.250.29而你的本地端口22948映射到公共端口22948 .

    理论上,您可以开始在客户端端口22948和服务器3478之间进行通信,但是3478已经被服务器使用 . 您需要使用从STUN响应获得的相同端口进行打孔步骤 .

    与您的其他服务打孔步骤是这样的 . 客户端从端口22948发送到服务器(例如端口9876) .

    echo "hello there" | nc -p 22948 server 9876
    

    服务器可以响应:

    echo "I see you" | nc -p 9876 41.224.250.29 22948
    
  • 0

    在服务器端,执行以下命令,回显“hello”| nc -w1 -u 41.224.250.29 22944

    这是否先从该客户端收到任何数据包或使用地址“41.224.250.29 22944”?如果不是,客户端NAT将不允许此传入流量,除非它是全锥NAT . 客户端使用已准备好接收来自该外部源的任何数据包的套接字也很重要 . 基本上,您必须确保该外部源的绑定 .

相关问题