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 на виртуальной машине 1, разрешенный для конечной точки службы PSC.
  • Выполнение списка gsutil на виртуальной машине 2 разрешено на общедоступном сайте googleapis.com
  • Используйте Tcpdump для проверки разрешения DNS

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

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

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

Вы можете создать несколько конечных точек Private Service Connect в одной сети VPC. Нет ограничений на пропускную способность для конкретной конечной точки. Поскольку конечные точки 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 Книги, которые не поддерживаются 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 на облачных маршрутизаторах, управляющих виртуальными локальными сетями, пакеты, отправляемые из локальных систем в конечные точки, маршрутизируются через виртуальные локальные сети с использованием ECMP.

5e142c2fbf6f010e.png

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

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

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

Виртуальная машина с внешним 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-клиенты Private Google Access .

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

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

2ac275eb86f26338.png

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

Вариант использования Codelab —

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

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

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

Самостоятельная настройка среды

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

MrEseyJH4tg9PuS3GzJa72onCqawwQiRm04c0YjnpR6WD3IciP1ICDh5e5RoxrG3tc5y44_Ynn9GB0Igjo3sTE0BlsAnCxJdhXn7egP3tX4rkzkub7ZCjOKc70kJvl07REnmPb3TGg

HgKQ1sLCGDGbz0e3RCc-FNa3fQliCtq67H-Oj9jzzYn_upkmNN1lOMQrQm8Jdvo6EEYAvSwDEjpH37bIG9ouBJcmS_xFYV1IHJoyAhsasS1SfYtZkO-RBwWPXRrr3Zt4r31ETcjJeQ

KHAY2ncSMFGZ2vGxcMEcNoIy_cuWGCaWAsrH0KsOVwkV5e93Ypfcq3sQ_HPIrV-NSocegQN2PnRUku_CVi1MM89O6qHIU6E32ZypJPxojkbRTJXET5JvtskiIXgzFMk18-4NnNjzCJA

Запомните идентификатор проекта — уникальное имя для всех проектов 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 Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лабораторной работе можно выполнять с помощью простого браузера.

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. Создайте конечную точку Private Service Connect.

При настройке 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 и любых подключенных локальных сетей.

Private Service Connect для DNS соответствует соглашению об именах: SERVICE-ENDPOINT.p.googleapis.com. В приведенном выше примере «хранилище» — это СЕРВИС, а «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-запись

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), используемую для проверки подключения частной службы.

Из 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), используемую для проверки общедоступного Googleapis.

Из вкладки 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 SSH в psc-instance-2 через 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: HOST Storage.googleapis.com используется для разрешения DNS.

<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 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, обновляя файл VM 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
  • Создана конечная точка Private Service Connect.
  • Создал сегмент облачного хранилища.
  • Созданы частные зоны Cloud DNS.
  • Обновлен файл конфигурации BOTO.
  • Создал NAT GW.
  • Выполните список gsutil на виртуальной машине 1, который разрешается для вашей конечной точки службы PSC.
  • Выполните список gsutil на виртуальной машине 2, который разрешается на общедоступном сайте googleapis.com.
  • Используйте Tcpdump для проверки разрешения DNS