【问题标题】:send UDP to client behind a nat using STUN使用 STUN 将 UDP 发送到 nat 后面的客户端
【发布时间】:2016-10-27 13:57:34
【问题描述】:

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

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

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
  1. 在服务器端,我执行以下命令,echo "hello" | nc -w1 -u 41.224.250.29 22944。

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

【问题讨论】:

  • 那是什么眩晕客户端?它不是“stun-client”linux 包中的那个。

标签: udp stun


【解决方案1】:

你需要匹配两边的端口,并在获得你的公共 ip 和端口后做一个打孔步骤。

您运行了一个在本地端口 22948 上侦听服务器的 stun 客户端(侦听端口 3478)。你从那个端口向你的服务器发送了一个 stun 绑定请求。

服务器回复了一个响应,表明您的公共 ip:port 是
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

【讨论】:

    【解决方案2】:

    在服务器端,我执行以下,echo "hello" | nc -w1 -u 41.224.250.29 22944

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多