流量未通过 VPN 从远程网络路由回 GKE 集群

流量未通过 VPN 从远程网络路由回 GKE 集群

(跟进GKE pod 通过 VPN 连接吗?

我正在尝试使用 GCE VPN 将 GKE 集群连接到 Cisco ASA 5510 的远程网络。从 GKE pod 10.248.0.26 到远程节点 10.99.193.115 的 ping 到达 10.99.193.115,ASA 说回显回复通过隧道返回到 GKE。但是,10.248.0.26 上的 tcpdump 显示没有收到回复。

Google Cloud Console 报告的防火墙和路由:

Name    Source tag / IP range   Allowed protocols / ports   Target tags

default-allow-icmp  0.0.0.0/0   icmp    Apply to all targets
default-allow-internal  10.240.0.0/16   tcp:1-65535; udp:1-65535; icmp  Apply to all targets
default-allow-ssh   0.0.0.0/0   tcp:22  Apply to all targets
gke-zecluster-d6cc7a55-all  10.248.0.0/14   tcp; udp; icmp;     Apply to all targets
gke-zecluster-d6cc7a55-ssh  <public_ip>/32  tcp:22  gke-zecluster-d6cc7a55-node
gke-zecluster-d6cc7a55-vms  10.240.0.0/16   tcp:1-65535; udp:1-65535; icmp  gke-zecluster-d6cc7a55-node
k8s-fw-a1a92183fb18e11e5be3442010af0001     0.0.0.0/0   tcp:80,443  gke-zecluster-d6cc7a55-node
k8s-fw-a1aa3fe95b18e11e5be3442010af0001     0.0.0.0/0   tcp:2003    gke-zecluster-d6cc7a55-node

Name    Destination IP ranges   Priority    Instance tags   Next hop

default-route-3eed071cad0670e8  0.0.0.0/0   1000    None    Default internet gateway
default-route-7a9ddc4457c714a0  10.240.0.0/16   1000    None    Virtual network
gke-zecluster-d6cc7a55-7b61213c-b187-11e5-be34-42010af00015     10.248.0.0/24   1000    None    gke-zecluster-d6cc7a55-node-j4jx (Zone ze-zone-1)
gke-zecluster-d6cc7a55-7ec5f7a9-b187-11e5-be34-42010af00015     10.248.1.0/24   1000    None    gke-zecluster-d6cc7a55-node-rluf (Zone ze-zone-1)
vpn-1-tunnel-1-route-1  10.99.0.0/16    1000    None    

我可以打开一些日志来查看发生了什么吗?据我所知,VPN 没有提到有关此流量的任何相关信息,仅:

15:24:51.058 sending DPD request
15:24:51.058 generating INFORMATIONAL_V1 request 3069408857 [ HASH N(DPD) ]
15:24:51.058 sending packet: from <gce-vpn-ip>[500] to <asa-ip>[500] (92 bytes)
15:24:51.092 received packet: from <asa-ip>[500] to <gce-vpn-ip>[500] (92 bytes)
15:24:51.092 parsed INFORMATIONAL_V1 request 146600869 [ HASH N(DPD_ACK) ]

如果我修改 VPN 隧道(GCE VPN、ASA),使 GCE 端的默认网络为 10.240.0.0/16,则流量在两个方向上都可以正确传输。

我认为这是一个路由问题,但是什么呢?路由 10.248.0.0/24 不应该将流量发送回 GKE 节点吗?还是我必须以某种方式将 GKE 网络声明为网络?

答案1

如果 IP 地址10.248.0.26属于 GKE 节点,那么为了ping在 GKE 节点和远程节点之间执行操作,您将需要在10.248.0.26/24网络上添加防火墙规则,以允许从远程源传入 GKE 节点或该网络中的所有目标的流量。

答案2

最后,我不得不选择其他选项。设置 spec.hostNetwork 选项将 pod 推送到节点地址空间 10.240.0.0/16,VPN 可以正常工作。

据我所知,当您创建 GKE 集群时,会为 pod 地址空间设置一些“神奇”的网络,但就 VPN 而言,它似乎没有正确的路由。Karman 可能是正确的,但我找不到任何方法可以为 pod 声明一个明确的虚拟网络来粘贴防火墙规则。简单地将它们粘贴在默认网络上似乎没有帮助。

创建新的非传统网络没有帮助,因为 GKE 拒绝在现有虚拟网络中创建具有 pod 地址的集群,而 GCE SDN 拒绝为 GKE 已声明的地址空间创建虚拟子网。

相关内容