我的网络设置:
使用此设置,只有同一子网上的节点才能建立 bgp 连接。其他节点(执行完整的 3 路 TCP 握手)使用 [FIN, ACK] 和 [RST] 响应 OPEN 消息,因此我的calicoctl node status
<- 中的“对等重置连接”消息位于控制器 3(10.0.3.100)上
IPv4 BGP status
+--------------+-------------------+-------+----------+--------------------------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+-------------------+-------+----------+--------------------------------+
| 10.0.1.100 | node-to-node mesh | start | 07:12:01 | Connect Socket: Connection |
| | | | | closed |
| 10.0.2.100 | node-to-node mesh | start | 07:12:01 | Connect |
| 10.0.1.101 | node-to-node mesh | start | 07:12:01 | Connect Socket: Connection |
| | | | | reset by peer |
| 10.0.1.102 | node-to-node mesh | start | 07:12:01 | Connect Socket: Connection |
| | | | | reset by peer |
| 10.0.2.102 | node-to-node mesh | start | 07:12:01 | Connect Socket: Connection |
| | | | | reset by peer |
| 10.0.3.101 | node-to-node mesh | up | 07:14:13 | Established |
| 10.0.3.102 | node-to-node mesh | up | 07:12:02 | Established |
+--------------+-------------------+-------+----------+--------------------------------+
我的 wireshark 转储了从控制器 3 (10.0.3.100) 到节点 4 (10.0.2.102) 的握手 + OPEN 消息
Wireshark 10.0.3.100 和 10.0.2.102 之间的 bgp 跟踪
Wireshark 10.0.0.4(10.0.3.100) 和 10.0.2.102 之间的 bgp 跟踪
也许问题是节点 4 看到的数据来自 10.0.0.4 而不是 10.0.3.100?
什么有效
- 从所有节点 ping 所有节点均正常
- nc 端口 179 到所有节点成功
- Wireshark 显示从控制器 3 到节点 4 的完整 TCP 握手
设置
- Kubernetes 1.21.1(通过 kubespray 安装)
- Calico 3.9(kubespray 中的默认设置)
- 所有网关都是 pfSense 2.5.x,“主”网关具有通过 10.0.0.2 到 10.0.1.0/24 的静态路由、通过 10.0.0.3 到 10.0.2.0/24 的静态路由以及通过 10.0.0.4 到 10.0.3.0/24 的静态路由。
- 数据中心路由器上的广域网和局域网上的防火墙均已禁用,任何 pfSense 盒上均未启用 NAT。(ipsec vpn 的 NAT 位于主网关的广域网端口上)
- 据我所知,所有子网中的所有节点之间都有完整的 IP 连接
答案1
我错误地认为 pfSense Auto NAT 仅用于 IPsec 直通,当我禁用所有出站 NAT 规则生成时,它开始按预期工作。我的错是不了解 pfSense 路由器中的设置。