Linux虚拟服务器:NAT返回path

我试图在我的Kubernetes前设置一个LVS负载均衡器:Calico用作容器networking,因此每个容器在其主机中都有自己的networking接口。 外部IP,路由和路由规则是使用keepalived的pipe理器。 由我的主机提供商分配的每个子网都有自己的路由器。 服务器有两个物理接口连接到Internet。 外部IP在第二个接口上可用。

configuration是这样的:第一个接口有一个全局IP地址和一个默认路由。 第二个接口有一个私有IP。 它也有我的托pipe服务提供商的所有额外的IP。 由于所有来自附加IP的数据包都必须通过特定的默认网关进行路由,因此我添加了路由表和规则。

到目前为止,一切都按预期工作。 为了使Kubernetes服务在IP中可用,我在一些节点上添加了LVS。

我的问题是这样的:从互联网包到达我的Kubernetes豆荚,但他们的答案不回到互联网。 数据包消失在我的Kubernetes节点的某处。 来自我的pod的应答数据包使用pod IP作为源,并且必须由NAT重写。

当看看iptables的规则,我没有看到LVS的。 他们在哪? LVS NAT规则何时执行? 他们绑定到一个接口? 转发path和接口在NAT应答分组完成前是否已经决定?

我错过了为LVS连接启用netfilter conntrack支持。 有关LVS netfilter交互的描述,请参阅http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.filter_rules.html

这可以使用:

sysctl net.ipv4.vs.conntrack=1