如果coturn的external-ip仅用于aws?

时间:2019-05-16 12:07:28

标签: stun coturn

https://github.com/coturn/coturn/blob/c4477bfddd2cd51de1ad37032ca88330f3c44ed6/docker/coturn/turnserver.conf#L100

在turnserver.conf中,如果external-ip仅用于AWS,我会看到一个“ For Amazon EC2 users”的世界? 我让stun服务器在k8s集群中运行,然后通过nodeport服务将其公开到公共网络,但是stun返回的srflx是网关地址,而不是我设置的external-ip。我的k8s集群在阿里云上运行。 希望有人能帮助我解决这个问题,谢谢!!!

1 个答案:

答案 0 :(得分:0)

AWS EC2实例大部分在NAT之后运行。即使您已通过AWS控制台分配了公共IP地址(例如1.2.3.4),该实例也只知道其专用网络,并且不知道分配给它的公共IP地址。也就是说,该实例认为其IP地址为172.31.5.6,因为这是操作系统在引导时发现的。通过端口转发,可以将某些TCP和UDP端口从公共IP地址转发到运行EC2实例的专用IP地址。

对于大多数在AWS EC2实例上运行的服务来说,这通常不是问题。在STUN完全以“ 2 IP地址和2端口模式”运行的情况下,如果客户端要进行NAT行为和过滤测试,则服务器需要将其备用IP地址通告给客户端。但是STUN服务器发回172.31.5.7作为其备用IP地址是不正确的-客户端自私有以来就无法访问该IP地址。

类似于TURN,在进行端口分配时,服务器需要将EC2实例的公共IP地址发回给分配它的客户端。如果客户端请求TURN端口与另一个对等方共享,那将是很糟糕的-仅用于TURN服务器发送回172.31.5.6

因此,对于要在NAT后面托管的STUN或TURN服务器,需要一组命令行参数或配置参数来告知服务器其“真实” IP地址是什么。 STUN / TURN软件将使用这些IP地址将响应发送回客户端。