我在运行 keepalived 的主管节点上有以下设置:
- 本机 IP 10.65.5.72
- 贵宾 10.65.5.230
- 为端口 80 和 443 启用 keepalived DR 模式
我正在调试一个问题,我无法从主管节点本身访问 IPVS 服务,在此过程中注意到 IPVS 流量似乎没有经过 netfilter。为了验证,我在 iptables 中的原始表中设置了以下规则:
Chain PREROUTING (policy ACCEPT 143K packets, 133M bytes)
pkts bytes target prot opt in out source destination
1 60 MARK all -- * * 10.65.5.72 10.65.5.230 MARK and 0xffffffff
然后我就跑了
nc -v -s 10.65.5.72 10.65.5.230 80
我期望数据包计数器会增加,但是没有。
如果我将 nc 命令中的端口号更改为 80 和 443 以外的任何值,那么计数器做增量。
同时,我确实看到了数据包计数器在输出中增加
ipvsadm -L -n --stats
当我运行前面提到的 nc 命令时,它应该表明已经生成了一个到达某处的数据包。
这是 ipvs 的预期行为吗?从我在互联网上找到的资料来看,ipvs 流量似乎应该通过 netfilter。是什么导致了我看到的行为?
答案1
回答我自己的问题,如http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.LVS-DR.html,
当数据包 CIP->VIP 到达导向器时,它将作为第 2 层数据包放入 OUTPUT 链中,其中目标为真实服务器的 MAC 地址。
在将相同的规则添加到 OUTPUT 链后,我确实看到数据包符合规则。