正在考虑使用 NLB 对两个 L3 透明设备进行负载平衡,这两个设备都监听端口 8181。但到达这些设备的流量具有任意目标 IP。当我创建 NLB 时,其 eni 默认禁用源/目标 IP 检查。我猜 NLB 不会在意传入流量的目标 IP 是否与它自己的不同。但它没有起作用,所以我不知道是我的配置问题还是 NLB 不支持这一点。
附注:您可以使用路由将任意流量推送到 NLB,目标是 NLB eni。
答案1
“您可以使用路由将任意流量推送到 NLB,目标是 NLB eni。”
或者,至少,你可以这样配置它:出现会发生什么......但我怀疑这是一个规则的怪癖,它允许您对 NAT 网关、NAT 实例和禁用 src/dest 检查的 EC2 VPN 主机执行此操作。
我很难想象 NLB 真的能做到这一点,因为连接到该 ENI 的逻辑“设备”没有预料到技术上被错误路由的流量。流量很可能会被丢弃。
禁用源/目标检查可能是 NLB 将流量发回网络的方式造成的。启动 wireshark —— 看起来很奇怪。
实例处的传入流量具有 NLB ENI 的源 MAC 地址和实例的目标 MAC,当然……但回复具有子网的默认路由器的目标 MAC。
NLB 实际上劫持了 VPC 网络中它建立的每个流的路由,允许主机实例使用默认网关将回复流量发送回连接的“真实”源,当然,默认网关实际上不会使用路由表将响应路由回源,而是将其发送回 NLB(无论如何,从逻辑上讲——您无法嗅探这部分),以便实例的 IP 可以通过 NAT 删除,ENI IP 可以通过 NAT 重新打开,然后当流量离开 VPC 时,Internet 网关会将 ENi 私有 IP 转换回公有 IP……无论如何,从概念上讲,因为 VPC 网络上都是障眼法。早期测试表明,即使子网的默认路由目标毫无意义,也无关紧要——只要它有某物作为默认路由,NLB 以这样的方式集成到 VPC 网络结构中,即流量仍按预期返回源。
在某种程度上,NLB 是一种动态双端 NAT 机制,深深嵌入网络,将流量从 ENI 地址转换为实例地址并转换回来。从这个角度来看,丢弃发往 ENI 地址以外的任何地址的流量是有道理的,因为尝试对发往随机源地址的流量进行双 NAT 似乎超出了设计范围,甚至是不可能的。
但是,为了获得更权威的答案,我认为您需要联系 AWS Support。