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