我试图在Amazon虚拟私有云的链接中设置这个系统。https://docs.google.com/presentation/d/1H3s9O2GnM52cfKWiyt2oK92SSCEU-K1Srz5sw2uuRhU/edit?usp=sharing
我的问题是“有没有可能让TCP服务器知道真正的TCP客户端的IP ?”我总是从负载平衡器获得ip,而不知道如何从真正的客户端获取ip。
非常感谢。
发布于 2015-03-24 04:47:03
据文档称,
代理协议 当您使用为TCP/SSL连接配置的负载均衡器时,代理协议报头将帮助您识别客户端的IP地址。因为负载平衡器拦截客户端和后端实例之间的通信,所以来自后端实例的访问日志包含负载平衡器的IP地址,而不是原始客户端。启用代理协议时,负载均衡器将添加一个人读格式报头,其中包含连接信息,如客户端的源IP地址、目标IP地址和端口号。然后将报头作为请求的一部分发送到后端实例。您可以解析请求的第一行,以检索客户端的IP地址和端口号。 代理协议行是以回车和行提要("\r\n")结尾的一行。它采取以下形式:
PROXY_STRING + single space + INET_PROTOCOL + single space + CLIENT_IP + single space + PROXY_IP + single space + CLIENT_PORT + single space + PROXY_PORT + "\r\n"下面是IPv4代理协议的一个示例。PROXY TCP4 198.51.100.22 203.0.113.7 35646 80\r\nIPv6的代理协议行采用相同的形式,除非它以更高级的TCP6 6开头,地址为IPv6格式。 下面是IPv6代理协议的一个示例。PROXY TCP6 2001:DB8::21f:5bff:febf:ce22:8a2e 2001:DB8::12f:8baa:eafc:ce29:6b2e 35646 80\r\n如果客户端与IPv6连接,则头中代理的地址将是负载均衡器的公共IPv6地址。此IPv6地址与负载均衡器的DNS名称中解析的IP地址相匹配,该IP地址以额外的ipv6 6或双堆栈为前缀。如果客户端与IPv4连接,则头中代理的地址是负载均衡器的专用IPv4地址,该地址不能通过EC2-Classc网络外的DNS查找来解析。 有关启用代理协议标头的信息,请参阅重新命名的启用或禁用代理协议支持。
https://stackoverflow.com/questions/29224736
复制相似问题