在亚马逊,我看到了一个“亚马逊EC2用户”的世界,如果外部ip只用于亚马逊网络服务?我让stun服务器在k8s集群中运行,然后通过nodeport服务将其公开给公共网络,但是stun返回的srflx是一个网关地址,而不是我设置的外部ip。我的k8s集群运行在阿里云上。我希望有人能帮我解决这个问题,谢谢!
发布于 2019-05-18 15:05:43
亚马逊网络服务EC2实例在很大程度上是在NAT之后运行的。即使您已经通过亚马逊网络服务控制台分配了一个公共IP地址(例如1.2.3.4),实例也只知道它所在的私有网络,而不知道分配给它的公共IP地址。也就是说,实例认为它的IP地址是172.31.5.6,因为这是操作系统在引导时发现的。通过端口转发,可以将某些TCP和UDP端口从公网IP地址转发到运行EC2实例的内网IP地址。
对于在亚马逊网络服务EC2实例上运行的大多数服务来说,这通常不是问题。当STUN在完全"2个IP地址和2个端口模式“下运行时,如果客户端想要执行NAT行为和过滤测试,服务器需要将其备用IP地址通告回客户端。但是对于STUN服务器来说,将172.31.5.7作为其替代IP发回是不正确的,因为客户端无法到达该IP,因为它是私有的。
同样,当发生端口分配时,服务器需要将EC2接口的公共IP地址发送回分配它的客户端。如果客户端请求一个TURN端口与另一个对等体共享,这将是不好的-仅对于TURN服务器发送回172.31.5.6。
因此,对于要在NAT后面托管的STUN或TURN服务器,需要一组命令行参数或配置参数来告诉服务器它的“真实”IP地址是什么。STUN/TURN软件将使用这些IP地址将响应发送回客户端。
https://stackoverflow.com/questions/56168176
复制相似问题