IP-адрес в GKE для приложения от выхода к GAE - 0.0.0.0, а не IPv4 с облачным NAT - PullRequest
3 голосов
/ 17 февраля 2020

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

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

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

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

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

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».

1 Ответ

1 голос
/ 18 февраля 2020

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

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

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

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

Private Access будет использовать внутреннюю сеть Google для маршрутизации запроса, чтобы обеспечить publi c inte rnet не используется. Для правильной маршрутизации мы используем IPv6.

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

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

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

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

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

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

...