Назад | Перейти на главную страницу

Трафик не направляется обратно в кластер GKE из удаленной сети через VPN

(Продолжение GKE pod подключается через VPN?)

Я пытаюсь подключить кластер GKE к удаленной сети, используя GCE VPN, к Cisco ASA 5510. Пинг из модуля GKE 10.248.0.26 -> удаленный узел 10.99.193.115 прибывает в 10.99.193.115, и ASA сообщает, что эхо-ответ идет обратно через туннель до ГКЭ. Однако tcpdump на 10.248.0.26 не показывает никаких ответов.

Брандмауэр и маршрутизация по данным 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), чтобы иметь сеть по умолчанию 10.240.0.0/16 на конце GCE, трафик проходит правильно в обоих направлениях.

Я предполагаю, что это проблема маршрутизации, но что? Разве маршрут 10.248.0.0/24 не должен отправлять трафик обратно на узел GKE? Или надо как-то объявить сеть GKE сетью?

Если IP-адрес 10.248.0.26 принадлежит узлу GKE, то для выполнения ping между узлом GKE и вашим удаленным узлом вам нужно будет добавить правило брандмауэра на 10.248.0.26/24 network, чтобы разрешить входящий трафик на узел GKE или все цели в этой сети из удаленного источника.

В конце концов, пришлось выбрать другой вариант. Установка опции spec.hostNetwork помещает модуль в адресное пространство узла 10.240.0.0/16, для которого VPN работает нормально.

Насколько я могу судить, когда вы создаете кластер GKE, для адресного пространства модуля настраивается некоторая "волшебная" сеть, которая, похоже, не имеет правильной маршрутизации в отношении VPN. Возможно, что Карман прав, но я не могу найти способ объявить явную виртуальную сеть для модулей, чтобы придерживаться правил брандмауэра. Простое подключение их к сети по умолчанию, похоже, не помогает.

Создание новой не унаследованной сети не помогает, поскольку GKE отказывается создавать кластер с адресом модуля в существующей виртуальной сети, а GCE SDN отказывается создавать виртуальные подсети для адресного пространства, которое GKE уже заявило.