Private Service Connect для API Google

1. Введение

С помощью Private Service Connect вы можете создавать частные конечные точки, используя глобальные внутренние IP-адреса в вашей сети VPC. Вы можете назначать этим внутренним IP-адресам DNS-имена с осмысленными именами, такими как storage-pscendpoint.p.googleapis.com и bigtable-adsteam.p.googleapis.com. Вместо отправки API-запросов на общедоступные конечные точки сервисов, такие как storage.googleapis.com, вы можете отправлять запросы на конечную точку Private Service Connect, которая является частной и внутренней для вашей сети VPC.

Эти имена и IP-адреса являются внутренними для вашей сети VPC и любых локальных сетей, подключенных к ней с помощью туннелей Cloud VPN или подключений Cloud Interconnect (VLAN).

Вы можете контролировать, какой трафик направляется к какой конечной точке, и демонстрировать, что трафик остается внутри Google Cloud.

Что вы узнаете

  • Примеры использования подключения частных сервисов
  • Требования к сети
  • Поддерживаемые API
  • Создайте конечную точку Private Service Connect.
  • Создайте хранилище в облаке.
  • Создание и обновление частных зон Cloud DNS
  • Создайте NAT-шлюз для доступа к общедоступным API Google.
  • Создайте и обновите конфигурационный файл BOTO.
  • Выполните команду gsutil list на виртуальной машине VM1, разрешенной относительно конечной точки вашей службы PSC.
  • Выполните команду gsutil list на виртуальной машине VM2, разрешенной в соответствии с общедоступным репозиторием googleapis.com.
  • Используйте Tcpdump для проверки разрешения DNS-запросов.

Что вам понадобится

  • Знание DNS, редакторов nano или vi.

2. Варианты использования подключения частных сервисов

В одной и той же сети VPC можно создать несколько конечных точек Private Service Connect. Ограничений по пропускной способности для конкретной конечной точки нет. Поскольку конечные точки Private Service Connect используют глобальные внутренние IP-адреса, они могут использоваться любым ресурсом в вашей сети VPC.

При наличии нескольких конечных точек вы можете указать различные сетевые пути, используя правила Cloud Router и брандмауэра.

  • Вы можете создать правила брандмауэра, чтобы запретить некоторым виртуальным машинам доступ к API Google через конечную точку Private Service Connect, разрешив при этом доступ другим виртуальным машинам.
  • На виртуальной машине можно настроить правило брандмауэра, запрещающее весь трафик в интернет; однако трафик, отправляемый на конечные точки Private Service Connect, всё равно достигнет Google.
  • Если у вас есть локальные хосты, подключенные к VPC через туннель Cloud VPN или соединение Cloud Interconnect (VLAN), вы можете отправлять некоторые запросы через туннель или VLAN, а другие — через общедоступный интернет. Такая конфигурация позволяет обходить туннель или VLAN для таких сервисов, как Google Books, которые не поддерживаются Private Google Access. Для создания такой конфигурации создайте конечную точку Private Service Connect, объявите IP-адреса конечной точки Private Service Connect с помощью пользовательских объявлений маршрутов Cloud Router и включите политику переадресации входящих запросов Cloud DNS . Приложение может отправлять некоторые запросы через туннель Cloud VPN или соединение Cloud Interconnect (VLAN), используя имя конечной точки Private Service Connect, а другие — через интернет, используя имя DNS по умолчанию.
  • Если вы подключаете свою локальную сеть к сети VPC с помощью нескольких подключений Cloud Interconnect (VLAN), вы можете отправлять часть трафика из локальной сети через одну VLAN, а остальную — через другие, как показано на рисунке 2. Это позволяет использовать собственную глобальную сеть вместо сети Google и контролировать перемещение данных в соответствии с географическими требованиями. Для создания такой конфигурации создайте две конечные точки Private Service Connect. Создайте пользовательское объявление маршрута для первой конечной точки в сессии BGP облачного маршрутизатора, управляющего первой VLAN, и создайте другое пользовательское объявление маршрута для второй конечной точки в сессии BGP облачного маршрутизатора, управляющего второй VLAN. Локальные хосты, настроенные на использование имени конечной точки Private Service Connect, отправляют трафик через соответствующее подключение Cloud Interconnect (VLAN).
  • Также можно использовать несколько подключений Cloud Interconnect (VLAN) в топологии актив/актив. Если вы объявляете один и тот же IP-адрес конечной точки Private Service Connect с помощью пользовательских объявлений маршрутов для сессий BGP на облачных маршрутизаторах, управляющих VLAN, пакеты, отправляемые с локальных систем на конечные точки, маршрутизируются между VLAN с использованием ECMP.

5e142c2fbf6f010e.png

Рисунок 1. Настраивая Private Service Connect, Cloud Router и локальные хосты, вы можете контролировать, какой канал Cloud Interconnect (VLAN) используется для отправки трафика к API Google.

3. Требования к сети

Для использования Private Service Connect экземпляры виртуальных машин (ВМ) без внешних IP-адресов должны иметь свой основной интерфейс в подсети с включенным Private Google Access.

Виртуальная машина с внешним IP-адресом может получить доступ к API и сервисам Google через конечные точки Private Service Connect независимо от того, включен ли для ее подсети доступ к частной сети Google. Подключение к конечной точке Private Service Connect осуществляется внутри сети Google.

Доступ к конечным точкам Private Service Connect из пиринговых сетей VPC невозможен.

Поддерживаемые API

При создании конечной точки Private Service Connect вы выбираете, к какому набору API вам нужен доступ: all-apis или vpc-sc.

Пакеты API предоставляют доступ к тем же API, что и VIP-клиенты с приватным доступом Google .

  • Пакет all-apis предоставляет доступ к тем же API, что и private.googleapis.com.
  • Пакет vpc-sc предоставляет доступ к тем же API, что и restricted.googleapis.com.

4. Топология Codelab и пример использования.

2ac275eb86f26338.png

Рисунок 1 - Топология Codelab

Пример использования Codelab -

Наш клиент нуждается в смешанном доступе к облачному хранилищу через частный (межсетевой) и публичный IP-адрес googleapis. Для удовлетворения требований клиента мы развернем Private Service Connect, включающий уникальный IP-адрес /32, конфигурацию BOTO и обновления DNS-записей. Виртуальная машина 1 будет использовать PSC для доступа к облачному хранилищу; в свою очередь, VM2 будет использовать публичные диапазоны IP-адресов googleapis.com через NAT-шлюз.

Все компоненты лаборатории развернуты в рамках платформы Google Cloud Platform, однако тот же сценарий использования применим и для гибридного облака, требующего разделения трафика.

5. Настройка и требования

Настройка среды для самостоятельного обучения

  1. Войдите в Cloud Console и создайте новый проект или используйте существующий. (Если у вас еще нет учетной записи Gmail или G Suite, вам необходимо ее создать .)

MrEseyJH4tg9PuS3GzJa72onCqawwQiRm04c0YjnpR6WD3IciP1ICDh5e5RoxrG3tc5y44_Ynn9GB0Igjo3sTE0BlsAnCxJdhXn7egP3tX4rkzkub7ZCjOKc70kJvl07REnmPb3TGg

HgKQ1sLCGDGbz0e3RCc-FNa3fQliCtq67H-Oj9jzzYn_upkmNN1lOMQrQm8Jdvo6EEYAvSwDEjpH37bIG9ouBJcmS_xFYV1IHJoyAhsasS1SfYtZkO-RBwWPXRrr3Zt4r31ETcjJeQ

KHAY2ncSMFGZ2vGxcMEcNoIy_cuWGCaWAsrH0KsOVwkV5e93Ypfcq3sQ_HPIrV-NSocegQN2PnRUku_CVi1MM89O6qHIU6E32ZypJPxojkbRTJXET5JvtskIXgzFMk18-4NnNjzCJA

Запомните идентификатор проекта (Project ID) — уникальное имя для всех проектов Google Cloud (указанное выше имя уже занято и вам не подойдёт, извините!). В дальнейшем в этом практическом занятии оно будет обозначаться как PROJECT_ID .

  1. Далее вам потребуется включить оплату в Cloud Console, чтобы использовать ресурсы Google Cloud.

Выполнение этого практического задания не должно стоить дорого, если вообще что-либо. Обязательно следуйте инструкциям в разделе «Очистка», где указано, как отключить ресурсы, чтобы избежать дополнительных расходов после завершения этого урока. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.

В консоли GCP щелкните значок Cloud Shell на панели инструментов в правом верхнем углу:

yEqEFRN4OGfeGJEfJplSt5sGY95BluU78i3Lk0Opo9caOYfrWUPBi_RglIfo9x078tH5Z_Obgq1wOhrEPV8k5OvMgI5e3aam1a7teXuimwTy-evcupc34_UEMmfAFkV-hnXwl559rg

Подготовка и подключение к среде займут всего несколько минут. После завершения вы должны увидеть что-то подобное:

BxRCLVCDNXX4OxwHppzaY9ghvuFTsgsozreyEHvRK9GPfsh3sW-kdwev6_gZdkX5FWPvb7M_Vp4FoyjFWwZxBMK6CLXiPwJgFbhz8Tgec-tyQR7GEdNjGMBca052yM8ga0UqzdHAmw

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог размером 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории можно выполнять с помощью обычного браузера.

6. Прежде чем начать

Включить API

Внутри Cloud Shell убедитесь, что идентификатор вашего проекта указан правильно.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

Включите все необходимые службы

gcloud services enable compute.googleapis.com
gcloud services enable servicedirectory.googleapis.com
gcloud services enable dns.googleapis.com

7. Создайте сеть VPC.

Сеть VPC

Из Cloud Shell

gcloud compute networks create psc-lab --subnet-mode custom

Выход

Created
NAME     SUBNET_MODE  BGP_ROUTING_MODE  IPV4_RANGE  GATEWAY_IPV4
psc-lab  CUSTOM       REGIONAL

Создать подсеть

Из Cloud Shell

gcloud compute networks subnets create psclab-subnet \
        --network psc-lab --range 10.0.0.0/24 --region us-central1 

–enable-private-ip-google-access

Выход

Created
NAME             REGION       NETWORK  RANGE
psclab-subnet  us-central1  psc-lab  10.0.0.0/24

Создание правил брандмауэра

Из Cloud Shell

gcloud compute firewall-rules create psclab-ssh \
        --network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20

Выход

NAME        NETWORK  DIRECTION  PRIORITY  ALLOW   DENY  DISABLED
psclab-ssh  psc-lab  INGRESS    1000      tcp:22        False

Создать экземпляр Cloud NAT

Создать облачный маршрутизатор

Из Cloud Shell

gcloud compute routers create crnat \
    --network psc-lab \
    --asn 65000 \
    --region us-central1

Создать облачный NAT

Из Cloud Shell

gcloud compute routers nats create cloudnat \
    --router=crnat \
    --auto-allocate-nat-external-ips \
    --nat-all-subnet-ip-ranges \
    --enable-logging \
    --region us-central1

8. Создайте конечную точку подключения частной службы.

При настройке IP-адреса конечной точки Private Service Connect <pscendpointip> вам потребуется указать уникальный IP-адрес, не определенный в вашей VPC.

Из Cloud Shell

gcloud beta compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=<pscendpointip> \
    --network=psc-lab

Сохраните значение 'pscendpointip' на время выполнения лабораторной работы.

(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")

pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")
echo $pscendpointip

Создайте правило переадресации для подключения конечной точки к API и сервисам Google.

Из Cloud Shell

gcloud beta compute forwarding-rules create pscendpoint \
    --global \
    --network=psc-lab \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

Перечислите настроенные конечные точки Private Service Connect.

Из Cloud Shell

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

Опишите настроенные конечные точки Private Service Connect.

Из Cloud Shell

gcloud compute forwarding-rules describe \
    pscendpoint --global

9. Создайте корзину.

Создайте сегмент Cloud Storage и замените BUCKET_NAME на уникальное глобальное имя по вашему выбору.

Из Cloud Shell

gsutil mb  -l us-central1 -b on gs://BUCKET_NAME

Сохраните значение 'BUCKET_NAME' на протяжении всего лабораторного занятия.

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

10. Настройка DNS

Предположим, у вас есть приложение, использующее Google Cloud Storage. Без Private Service Connect ваши приложения могут подключаться к адресу 'storage.googleapis.com', который по умолчанию разрешается в какой-либо публичный адрес. С Private Service Connect вы можете создавать и использовать имена, например, 'storage-psclab.p.googleapis.com'. Имена и адреса являются частными для вашей сети VPC и любых подключенных локальных сетей.

Для подключения к частной службе DNS используется соглашение об именовании SERVICE-ENDPOINT.p.googleapis.com. В приведенном выше примере "storage" — это служба, а "psclab" — конечная точка. Обязательно нужно добавить дефис между SERVICE и ENDPOINT.

Для доступа к облачному хранилищу через конечную точку Private Service Connect создайте запись DNS (A) storage-psclab.p.googleapis.com, указывающую на IP-адрес конечной точки Private Service Connect.

Создать частную зону DNS

gcloud dns --project=$projectname managed-zones create psc-dns-zone --description="" --dns-name="p.googleapis.com." --visibility="private" --networks="psc-lab"

Создать запись DNS типа A

gcloud dns --project=$projectname record-sets transaction start --zone=psc-dns-zone

gcloud dns --project=$projectname record-sets transaction add $pscendpointip --name=storage-pscendpoint.p.googleapis.com. --ttl=300 --type=A --zone=psc-dns-zone

gcloud dns --project=$projectname record-sets transaction execute --zone=psc-dns-zone

11. Создание виртуальных машин

Создайте виртуальную машину (psc-instance-1), используемую для проверки Private Service Connect.

Из Cloud Shell

  gcloud compute instances create psc-instance-1 \
    --subnet psclab-subnet \
    --zone us-central1-a \
    --image=centos-7-v20210122 \
    --image-project=centos-cloud \
    --no-address \
    --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y 

Войдите в экземпляр виртуальной машины (psc-instance-1).

Подключайтесь к виртуальной машине по SSH через Cloud Shell.

gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

Для создания дополнительных терминалов облачной оболочки нажмите кнопку + (скриншот ниже) три раза.

69ea94e1527912bb.png

Создание виртуальной машины (psc-instance-2), используемой для проверки общедоступных API Google.

На вкладке 2

  gcloud compute instances create psc-instance-2 \
    --subnet psclab-subnet \
    --zone us-central1-a \
    --image=centos-7-v20210122 \
    --image-project=centos-cloud \
    --no-address \
    --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y 

На вкладке 2 подключитесь к виртуальной машине по SSH через Cloud Shell.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"

На вкладке 3 подключитесь по SSH к экземпляру psc-instance-1 через Cloud Shell.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

На вкладке 4 Shell подключитесь к psc-instance-2 по SSH через Cloud Shell.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"

12. Проверьте существующее поведение Gsutil.

На вкладке 4 (psc-instance-2) запустите tcpdump и отслеживайте DNS-трафик.

sudo tcpdump -vv -i eth0 port 53

Проверьте DNS-запрос к сегменту хранилища на вкладке 2 (psc-instance-2).

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME
gsutil -D ls gs://$BUCKET_NAME

Проверьте отладочную информацию gsutil: для разрешения DNS используется хост storage.googleapis.com.

<snip>
send: 'GET /storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nauthorization: Bearer ya29.c.KpkB7wfaMjfc_WXEKCeNF4Md0fEHnfDU7tqBf3cd0u43yEmYXqj8fX_X5wWdNdDVH6k1EkjeAeIJDzKGvyjPOkf1Io2kVeUqYX69sDv53huW1NslffjAHKchbZ0CP3Cg83TS3Pa55jLcuE0TLbYycVrgSbD3H90LaapUGbWD3kj4IsJLf9J8R98Bqobu8HZwwqk92hlZ4zVzRqOM\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>

На вкладке 4 (psc-instance-2) убедитесь, что при доступе к хранилищу используются публичные DNS-записи A от GoogleAPI.com.

metadata.google.internal.domain > psc-instance-2.c.yourprojectname.internal.33973: [udp sum ok] 36442 q: A? storage.googleapis.com. 11/0/0 storage.googleapis.com. A 108.177.111.128, storage.googleapis.com. A 142.250.128.128, storage.googleapis.com. A 74.125.70.128, storage.googleapis.com. A 74.125.201.128, storage.googleapis.com. A 64.233.183.128, storage.googleapis.com. A 173.194.198.128, storage.googleapis.com. A 172.217.219.128, storage.googleapis.com. A 142.250.136.128, storage.googleapis.com. A 209.85.234.128, storage.googleapis.com. A 172.217.212.128, storage.googleapis.com. A 172.217.214.128

13. Изменить поведение Gsutil.

Напомним, что на предыдущем шаге вы создали частную DNS-зону и запись A, сопоставленную с IP-адресом конечной точки PSC. На следующем шаге мы будем управлять работой gsutil, обновив файл BOTO виртуальной машины на экземпляре psc-instance-1.

Просмотреть конфигурацию BOTO по умолчанию можно на терминале экземпляра виртуальной машины во вкладке 1 (psc-instance-1).

[psc-instance ~]$ more  /etc/boto.cfg

Результат (ваш project_id будет отличаться)

[GSUtil]
default_project_id  = 234086459238
default_api_version = 2

[GoogleCompute]
service_account = default

Обновите конфигурацию BOTO с помощью nano или VI Editor, обязательно скопируйте и вставьте все записи.

Пример: sudo nano /etc/boto.cfg

или

Пример: sudo vi /etc/boto.cfg

Вкладка терминала экземпляра виртуальной машины 1 (psc-instance-1)

[Credentials]
gs_host = storage-pscendpoint.p.googleapis.com
gs_host_header = storage.googleapis.com
gs_json_host = storage-pscendpoint.p.googleapis.com
gs_json_host_header = www.googleapis.com

Проверьте конфигурацию; порядок раздела [Учетные данные] имеет решающее значение для поиска DNS.

more /etc/boto.cfg
[Credentials]
gs_host = storage-pscendpoint.p.googleapis.com
gs_host_header = storage.googleapis.com
gs_json_host = storage-pscendpoint.p.googleapis.com
gs_json_host_header = www.googleapis.com

[GSUtil]
default_project_id  = 234086459238
default_api_version = 2

[GoogleCompute]
service_account = default

14. Проверьте обновленное поведение поиска gsutil.

На вкладке 3 (psc-instance-1) запустите tcpdump и отслеживайте DNS-трафик.

sudo tcpdump -vv -i eth0 port 53

Проверьте поиск по утилите gsutil в хранилище на вкладке 1 (psc-instance-1)

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

gsutil -D ls gs://$BUCKET_NAME

Журналы отладки подтверждают доступность хранилища через конечную точку Private Service Connect "pscendpoint".

Выход:

<snip>
INFO 0131 22:14:18.795986 base_api.py] Making http GET to https://storage-pscendpoint.p.googleapis.com/storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000
INFO 0131 22:14:18.796415 base_api.py] Headers: {u'Host': 'www.googleapis.com',
 'accept': 'application/json',
 'accept-encoding': 'gzip, deflate',
 'content-length': '0',
 'user-agent': 'apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0'}
INFO 0131 22:14:18.796502 base_api.py] Body: (none)
connect: (storage-pscendpoint.p.googleapis.com, 443)
send: 'GET /storage/v1/b/psc-bucket/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\ncontent-length: 0\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\nhost: www.googleapis.com\r\nauthorization: Bearer ya29.c.KpkB7wd3XWiYeRyTuth5_HPlNV-hPwc2Nn7RSIeMpzrpa_j4EsMPl2m_mDGKAcGHvYIgiC5bT2UVQirAPpSbbpToa6G6lkaBbH5SZwHwgNXYfisp5Ww1UjXe4rTa69a_Wp0WesafcwPNnYzDo3xf5VGh3iGhySA04kTXuyT--MgOU8U-XLII2LJQxUWlV8KEdrvyCuqRb-jsDdk_\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>

На вкладке 3 (psc-instance-1) убедитесь, что IP-адрес вашей конечной точки PSC совпадает с записью DNS A, используемой при попытке доступа к вашему хранилищу.

@psc-instance-1 ~]$ sudo tcpdump -vv -i eth0 port 53
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
05:02:33.936256 IP (tos 0x0, ttl 64, id 55416, offset 0, flags [DF], proto UDP (17), length 82)
    psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0xcceb!] 34796+ A? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.936269 IP (tos 0x0, ttl 64, id 55417, offset 0, flags [DF], proto UDP (17), length 82)
    psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0x3ebd!] 5632+ AAAA? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.944018 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 98)
    metadata.google.internal.domain > psc-instance-1.c.yourprojectname.42296: [udp sum ok] 34796 q: A? storage-pscendpoint.p.googleapis.com. 1/0/0 storage-pscendpoint.p.googleapis.com. A 10.10.110.10 (70)
05:02:33.946005 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 175)

Убедитесь, что IP-адрес конечной точки Private Service Connect теперь используется для разрешения DNS-запросов.

Из вкладки 1

nslookup storage-pscendpoint.p.googleapis.com

Выход

@psc-instance ~]$ nslookup storage-pscendpoint.p.googleapis.com
Server:         169.254.169.254
Address:        169.254.169.254#53

Non-authoritative answer:
Name:   storage-pscendpoint.p.googleapis.com
Address: <pscip>

15. Этапы очистки

Выход из виртуальной машины (все вкладки)

exit

Из одного терминала Cloud Shell удалите компоненты лаборатории.

gcloud compute routers nats delete cloudnat --router=crnat --region=us-central1 --quiet

gcloud compute routers delete crnat --region=us-central1 --quiet

gcloud beta compute forwarding-rules delete pscendpoint --global --quiet

gcloud beta compute addresses delete psc-ip --global --quiet

gsutil rm -r gs://$BUCKET_NAME

gcloud compute instances delete psc-instance-1 --zone=us-central1-a --quiet

gcloud compute instances delete psc-instance-2 --zone=us-central1-a --quiet

gcloud compute firewall-rules delete psclab-ssh --quiet

gcloud compute networks subnets delete psclab-subnet --region us-central1 --quiet

gcloud compute networks delete psc-lab --quiet

В консоли убедитесь, что вы просматриваете правильный проект, затем выберите «Сетевые службы» → «Облачный DNS».

d0ed4bd585006e45.png

Найдите и щелкните по 'psc-dns-zone'

903532e68a262111.png

Выберите набор записей 'storage-pscendpoint.p.googleapis.com', затем нажмите «Удалить наборы записей».

e89394b43ddb5ce2.png

Нажмите «Удалить зону», чтобы завершить очистку лаборатории.

b2a612d7b3a80030.png

16. Поздравляем!

Поздравляем с завершением практического занятия!

Что мы рассмотрели

  • Примеры использования подключения частных сервисов
  • Требования к сети
  • Поддерживаемые API
  • Создана конечная точка подключения частной службы.
  • Создан облачный накопитель.
  • Созданы частные зоны Cloud DNS.
  • Обновлен конфигурационный файл BOTO.
  • Создан NAT-шлюз.
  • Выполните команду gsutil list на виртуальной машине VM1, которая разрешается в конечную точку вашей службы PSC.
  • Выполните команду gsutil list на виртуальной машине VM2, которая разрешается в публичный googleapis.com.
  • Используйте Tcpdump для проверки разрешения DNS-запросов.