因此,在我的吊舱中,我无法看到保持客户机IP的代理协议。尝试过数据包嗅探器和tcpdump,但没有看到协议保存了客户机IP。
有人能告诉我如何验证代理协议是否保存了客户端IP吗?
请参考下面提到的负载均衡器。它有一个名为“支持K8s-proxyprotocol”的策略,它应用于实例端口31431上的'BackendServerDescriptions‘。
我观察到的一件事是,例如,在'ListenerDescriptions‘中,端口31431策略名是空的。若要使代理协议按预期工作,是否需要在侦听器描述中对侦听器策略应用“K8s-proxyprotocol启用”?
有人能确认下面的配置是否足以使代理协议保留源IP或必须执行额外的配置吗?
"LoadBalancerDescriptions": [
{
"Subnets": [
"subnet-1",
"subnet-2",
"subnet-2"
],
"CanonicalHostedZoneNameID": "******",
"CanonicalHostedZoneName": "*************",
"ListenerDescriptions": [
{
"Listener": {
"InstancePort": 31431,
"LoadBalancerPort": 4334,
"Protocol": "TCP",
"InstanceProtocol": "TCP"
},
"PolicyNames": []
}
],
"HealthCheck": {
"HealthyThreshold": 2,
"Interval": 10,
"Target": "TCP:31499",
"Timeout": 5,
"UnhealthyThreshold": 6
},
"VPCId": "vpc-***********",
"BackendServerDescriptions": [
{
"InstancePort": 31431,
"PolicyNames": [
"k8s-proxyprotocol-enabled"
]
}
],
"Instances": [
{
"InstanceId": "i-085ece5ecf"
},
{
"InstanceId": "i-0b4741cf"
},
{
"InstanceId": "i-03aea99"
}
],
"DNSName": "***************************",
"SecurityGroups": [
"sg-********"
],
"Policies": {
"LBCookieStickinessPolicies": [],
"AppCookieStickinessPolicies": [],
"OtherPolicies": [
"k8s-proxyprotocol-enabled"
]
},
"LoadBalancerName": "a1df476de2aa011e9aabe0af927e6700",
"CreatedTime": "2019-02-07T06:18:01.020Z",
"AvailabilityZones": [
"us-east-1a",
"us-east-1b",
"us-east-1c"
],
"Scheme": "internet-facing",
"SourceSecurityGroup": {
"OwnerAlias": "906391276258",
"GroupName": "k8s-elb-a1df476de2aa011e9aabe0af927e6700"
}
}
]发布于 2019-02-08 18:37:28
是的,设置这个注释就足以在负载均衡器级别(ELB )启用代理协议v1。
service.beta.kubernetes.io/aws-load-balancer-proxy-protocol:"*“
我正在通过带有上述注释的LoadBalancer服务类型公开入口-nginx控制器,当将日志级别设置为调试运行它时,我可以看到每个客户端请求都保留真实的源IP:
172.20.32.78 - 172.20.32.78 -08/20b/2019:18:02:43 +0000“代理TCP4 xxx.xx 172.20.xx.xxx 42795 80”400 157 -“0 0.172 []
Xxx.xx-是我的私人ip地址,不是LB地址。
另一件事是在so的后端启用代理协议,以便它能够正确地理解转发的客户端请求(以下是尼克斯的步骤)。
https://stackoverflow.com/questions/54567880
复制相似问题