IP-адрес на GKE для выхода в приложение GAE - 0.0.0.0, а не IPv4 с Cloud NAT.

Прошло много времени после того, как я опубликовал связанный с этим вопрос. Ссылка

Теперь проблема изменилась. Используя ту же процедуру для настройки кластера и NAT, приложение GAE показывает 0.0.0.0, а не IPv6-адрес.

※ Приложение GAE использует настроенный домен.

В случае, если исходящая связь осуществляется с локальным сервером, сервер показывает статический IP-адрес, установленный NAT.

Есть ли какие-нибудь изменения во внутренней сети Google? Я хотел бы знать, как избежать этой проблемы, если мне нужен точный статический IP-адрес.

1.create a VPC

gcloud compute networks create ${vpc_name}\
--project=${project_id}\
--bgp-routing-mode=regional\
--subnet-mode=custom
2. create a subnet

gcloud compute networks subnets create ${subnet_name}\
--project=${project_id}\
--region=${region}\
--network=${vpc_name}\
--range=192.168.0.0/16
3. create an external static IP

gcloud compute addresses create ${external_ip_name}\
--region=${region}
4. create a route

gcloud compute routers create ${router_name}\
--region=${region}\
--network=${vpc_name}\
--asn=65001
5. create a nat

gcloud compute routers nats create ${nat_name}\
--region=${region}\
--router=${router_name}\
--nat-external-ip-pool="${external_ip}"\
--nat-all-subnet-ip-ranges

6. make a cluster

gcloud container clusters create ${gke_cluster_name}\
--project=${project_id}\
--zone=${zone}\
--network=${vpc_name}\
--subnetwork=${subnet_name}\
--enable-ip-alias\
--enable-private-nodes\
--master-ipv4-cidr=172.16.0.0/28\
--enable-master-authorized-networks\
--master-authorized-networks=0.0.0.0/0\
--no-enable-legacy-authorization\
--no-enable-basic-auth\
--no-issue-client-certificate\
--num-nodes=${NUM_NODE}\
--enable-autoscaling --max-nodes=${MAX_NUM} --min-nodes=${MIN_NUM}\
--scopes="cloud-platform"

7. deploy an application to the cluster and confirm the IP

Сделайте https-соединение от приложения к другому приложению gcp-проекта. И определите IP-адрес исходного запроса как «REMOTE_ADDR».


comment
Похоже, ссылка [1] не работает. Не могли бы вы подробнее рассказать, в чем проблема? [1] stackoverflow.com/questions/54247963/   -  person Raynel A.S    schedule 17.02.2020
comment
К сожалению, как вы говорите, ссылка [1] вам недоступна. Проблема в том, что статический IP-адрес типа IPv4, установленный NAT, является типом IPv6 с HTTP-соединением от GKE к GAE (возможно, IPv6 преобразован в IPv6 в соответствии с внутренним правилом Google). Явление, похоже, изменилось, что было Преобразование IPv6 в адрес 0.0.0.0. Я ожидал, что IP-адрес относится к типу IPv4, но эти явления не такие, как я ожидал. Может ли приложение GAE обнаружить удаленный адрес через http-соединение от GKE, на котором установлен статический IP-адрес?   -  person Delta    schedule 18.02.2020
comment
Не уверен, что это соответствует исходному вопросу, но я заметил в GAE также некоторую активность IP 0.0.0.0 в моих журналах / приложении и попросил Google изучить это на Issueetracker.google.com/issues/156093633, в котором Google недавно изменил статус на" Не исправлять "(предполагаемое поведение).   -  person mdxs    schedule 26.05.2020


Ответы (1)


Спасибо за ваше разъяснение. Итак, в основном это то, что у нас есть:

Частный GKE -> Cloud NAT -> Внешний балансировщик нагрузки GAE -> GAE

и приложение в GAE видит адрес ipv6

Когда вы используете Cloud NAT, Google Private Access включен по умолчанию, поэтому запросы от вашего VPC к GAE будут использовать Private Access.

Private Access будет использовать внутреннюю сеть Google для маршрутизации запроса, чтобы гарантировать, что общедоступный Интернет не используется. Чтобы правильно маршрутизировать это, мы используем IPv6.

Чтобы объяснить адрес IPv6:

Google использует установленный префикс NAT64: fda3: e722: ac3: 10 :: / 64. Это значение постоянно во всех сетях GCP VPC. Последние 32 бита преобразуются непосредственно из внутреннего IP-адреса хоста, выполняющего запрос. Он преобразуется из двоичного в шестнадцатеричный (т.е. 10.132.0.5 в десятичном -> 0x0a840005 в шестнадцатеричном).

Средняя часть между префиксом NAT64 и последними 32 битами - это уникальный идентификатор вашего VPC. Этот идентификатор уникален для каждой сети VPC, поэтому у вас может быть более одного идентификатора для каждого проекта.

В настоящее время нет возможности заранее предсказать этот идентификатор. Лучший способ получить эту информацию - отправить запрос в GAE через частный доступ и принять к сведению IPv6, указанный в качестве источника. Адрес IPv6 доступен в ответе сервера и в журналах Stackdriver.

Используя эту информацию, вы сможете надлежащим образом поддерживать свой белый список для приложений, размещенных на GAE.

При этом, если вы видите, что IPv4-адреса из модулей GKE отображаются как 0.0.0.0 в приложении GAE. Я призываю вас сообщить об этом, используя эту ссылку.

person Raynel A.S    schedule 18.02.2020
comment
Спасибо за вежливое объяснение. Эта информация очень полезна для меня. Сообщу об этом случае по ссылке. - person Delta; 21.02.2020