Kubernetes

為什麼 bgp OPEN 消息會獲取 Connect Socket: Connection reset by peer when node is on a different subnet/gateway

  • September 30, 2021

我的網路設置:

Kubernetes 網路設置

使用此設置,只有同一子網上的節點可以建立 bgp 連接。其他節點(進行完整的 3 次 tcp 握手)響應 hte OPEN 消息

$$ FIN, ACK $$然後一個$$ RST $$因此,我的 <- 中的對等消息重置連接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                    |
+--------------+-------------------+-------+----------+--------------------------------+

我從控制器 3 (10.0.3.100) 到 node4 (10.0.2.102) 的握手 + OPEN 消息的wireshark 轉儲

10.0.3.100 和 10.0.2.102 之間的

Wireshark bgp 跟踪 10.0.0.4(10.0.3.100) 和 10.0.2.102 之間的 Wireshark bgp 跟踪

也許問題是節點 4 看到的數據來自 10.0.0.4 而不是 10.0.3.100?

什麼有效

  1. 從所有節點Ping到所有節點OK
  2. nc 埠 179 到所有節點成功
  3. Wireshark 顯示從控制器 3 到節點 4 的完整 TCP 握手

設置

  1. Kubernetes 1.21.1(通過 kubespray 安裝)
  2. Calico 3.9(kubespray 中的預設設置)
  3. 所有網關都是 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 的靜態路由。
  4. 在 wan 和 lan 上的數據中心路由器上禁用防火牆 沒有在任何 pfSense 盒子上啟用 NAT。(ipsec vpn 的 NAT 在主網關的 wan 埠上)
  5. 據我所知,我在所有子網中的所有節點之間都有完整的 IP 連接

我錯誤地認為 pfSense Auto NAT 僅適用於 IPsec 通道,當我禁用所有出站 NAT 規則生成時,它開始按預期工作。不了解我的 pfSense 路由器中的設置是我的錯。

引用自:https://serverfault.com/questions/1079008