Доступ к API Google с локальных хостов с использованием адресов IPv6.

1. Введение

Частный доступ Google для локальных хостов позволяет локальным системам подключаться к API и сервисам Google путем маршрутизации трафика через туннель Cloud VPN или подключение VLAN для Cloud Interconnect . Частный доступ Google для локальных хостов — это альтернатива подключению к API и службам Google через Интернет.

Частный доступ Google для локальных хостов требует, чтобы вы направляли запросы к API Google на виртуальные IP-адреса (VIP). Для IPv6 используются следующие IP-адреса:

  • Для Private.googleapis.com: 2600:2d00:0002:2000::/64.
  • Для Restricted.googleapis.com: 2600:2d00:0002:1000::/64.

Выбранный вами VIP определяет, к каким услугам вы сможете получить доступ. В этой лаборатории кода мы будем использовать Private.googleapis.com. Дополнительную информацию см. в разделе Параметры домена .

В этой лаборатории кода описывается, как включить частный доступ Google для локальных хостов, использующих адреса IPv6 . Вы настроите сеть VPC под названием on-premises-vpc для представления локальной среды. Для вашего развертывания локальный виртуальный компьютер не будет существовать, вместо этого будет использоваться гибридная сеть с вашим локальным центром обработки данных или облачным провайдером.

Что ты построишь

В этой лабораторной работе вы собираетесь построить сквозную сеть IPv6, которая демонстрирует локальный доступ к API облачного хранилища с использованием CNAME *.googleapis.com к IPv6-адресу Private.googleapis.com 2600:2d00:0002:2000::/64 , как показано на рисунке 1.

Рисунок 1

a0fc56abf24f3535.png

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

  • Как создать сеть VPC с двойным стеком
  • Как создать HA VPN с IPv6
  • Как обновить DNS для доступа к частному доступу Google
  • Как установить и проверить подключение к частному доступу к Google Access

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

  • Облачный проект Google

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

Обновите проект для поддержки лаборатории кода.

В этом Codelab используются переменные $variables для облегчения реализации конфигурации gcloud в Cloud Shell.

Внутри Cloud Shell выполните следующие действия:

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

3. Создайте транзитный vpc.

f6932f551b5acac0.png

Создайте транзитную сеть VPC

Внутри Cloud Shell выполните следующие действия:

gcloud compute networks create transit-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional

4. Создайте локальную сеть.

58d75cbc9cb20a51.png

Эта сеть VPC представляет собой локальную среду.

Создайте локальную сеть VPC.

Внутри Cloud Shell выполните следующие действия:

gcloud compute networks create on-premises-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional

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

Внутри Cloud Shell выполните следующие действия:

gcloud compute networks subnets create on-premises-subnet1-us-central1 --project=$projectname --range=172.16.10.0/27 --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL --network=on-premises-vpc --region=us-central1

5. Создайте HA VPN для транзитного и локального vpc.

Создайте шлюз HA VPN для транзитного vpc.

a0fc56abf24f3535.png

При создании каждого шлюза автоматически выделяются два внешних адреса IPv4 — по одному для каждого интерфейса шлюза. Запишите эти IP-адреса, чтобы использовать их позже на этапах настройки.

Внутри Cloud Shell создайте шлюз HA VPN GW с типом стека IPV4_IPV6.

gcloud compute vpn-gateways create transit-vpc-vpngw \
   --network=transit-vpc\
   --region=us-central1 \
   --stack-type=IPV4_IPV6

Создайте шлюз HA VPN GW для локального vpc.

Внутри Cloud Shell создайте шлюз HA VPN GW с типом стека IPV4_IPV6.

gcloud compute vpn-gateways create on-premises-vpc-vpngw \
   --network=on-premises-vpc\
   --region=us-central1 \
   --stack-type=IPV4_IPV6

Проверка создания шлюза HA VPN GW

С помощью консоли перейдите в раздел «Гибридное подключение» → «VPN» → «ОБЛАЧНЫЕ VPN-ШЛЮЗЫ».

c8eed6ca929935bc.png

Создайте облачный маршрутизатор для транзитного vpc.

Внутри Cloud Shell создайте Cloud Router, расположенный в us-central1.

gcloud compute routers create transit-vpc-cr-us-central1 \
   --region=us-central1 \
   --network=transit-vpc\
   --asn=65001

Создайте облачный маршрутизатор для локального vpc.

Внутри Cloud Shell создайте Cloud Router, расположенный в us-central1.

gcloud compute routers create on-premises-vpc-cr-us-central1 \
   --region=us-central1 \
   --network=on-premises-vpc \
   --asn=65002

Создайте VPN-туннели для Transit-VPC.

Вы создадите два VPN-туннеля на каждом VPN-шлюзе высокой доступности.

Создать VPN-туннель0

Внутри Cloud Shell создайте туннель0:

gcloud compute vpn-tunnels create transit-vpc-tunnel0 \
    --peer-gcp-gateway on-premises-vpc-vpngw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router transit-vpc-cr-us-central1 \
    --vpn-gateway transit-vpc-vpngw \
    --interface 0

Создать VPN-туннель1

Внутри Cloud Shell создайте туннель1:

gcloud compute vpn-tunnels create transit-vpc-tunnel1 \
    --peer-gcp-gateway on-premises-vpc-vpngw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router transit-vpc-cr-us-central1 \
    --vpn-gateway transit-vpc-vpngw \
    --interface 1

Создайте VPN-туннели для локального vpc.

Вы создадите два VPN-туннеля на каждом VPN-шлюзе высокой доступности.

Создать VPN-туннель0

Внутри Cloud Shell создайте туннель0:

gcloud compute vpn-tunnels create on-premises-tunnel0 \
    --peer-gcp-gateway transit-vpc-vpngw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-premises-vpc-cr-us-central1 \
    --vpn-gateway on-premises-vpc-vpngw \
    --interface 0

Создать VPN-туннель1

Внутри Cloud Shell создайте туннель1:

gcloud compute vpn-tunnels create on-premises-tunnel1 \
    --peer-gcp-gateway transit-vpc-vpngw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-premises-vpc-cr-us-central1 \
    --vpn-gateway on-premises-vpc-vpngw \
    --interface 1

Проверка создания VPN-туннеля

С помощью консоли перейдите в раздел «Гибридное подключение» → «VPN» → «ОБЛАЧНЫЕ VPN-ТУННЕЛИ».

85fd5aef4b2c4010.png

Создание сеансов BGP

В этом разделе вы настраиваете интерфейсы Cloud Router и узлы BGP.

При создании VPN-туннелей, разрешающих трафик IPv6, укажите --enable-ipv6 при запуске команды add-bgp-peer .

Создайте интерфейс BGP и пиринг для транзитного vpc.

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface transit-vpc-cr-us-central1 \
    --interface-name if-tunnel1-to-onpremise \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel transit-vpc-tunnel0 \
    --region us-central1

Внутри Cloud Shell создайте узел BGP:

gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onpremise \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region us-central1 \
    --enable-ipv6 \
    --ipv6-nexthop-address 2600:2d00:0:3:0:0:0:1 \
    --peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:2

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface transit-vpc-cr-us-central1 \
    --interface-name if-tunnel2-to-onpremise \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel transit-vpc-tunnel1 \
    --region us-central1

Внутри Cloud Shell создайте узел BGP:

gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel2 \
    --interface if-tunnel2-to-onpremise \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region us-central1 \
    --enable-ipv6 \
    --ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11 \
    --peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12

Создайте интерфейс BGP и пиринг для локального vpc.

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface on-premises-vpc-cr-us-central1\
    --interface-name if-tunnel1-to-hub-vpc \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-premises-tunnel0 \
    --region us-central1

Внутри Cloud Shell создайте узел BGP:

gcloud compute routers add-bgp-peer on-premises-vpc-cr-us-central1 \
    --peer-name bgp-transit-vpc-tunnel0 \
    --interface if-tunnel1-to-hub-vpc \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region us-central1 \
    --enable-ipv6 \
    --ipv6-nexthop-address 2600:2d00:0:3:0:0:0:2 \
    --peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:1

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface on-premises-vpc-cr-us-central1\
    --interface-name if-tunnel2-to-hub-vpc \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-premises-tunnel1 \
    --region us-central1

Внутри Cloud Shell создайте узел BGP:

gcloud compute routers add-bgp-peer  on-premises-vpc-cr-us-central1\
    --peer-name bgp-transit-vpc-tunnel1\
    --interface if-tunnel2-to-hub-vpc \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region us-central1 \
    --enable-ipv6 \
    --ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12 \
    --peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11

Перейдите в раздел «Гибридное подключение» → VPN , чтобы просмотреть сведения о VPN-туннеле.

e100e31ea22c8124.png

Убедитесь, что транзитный vpc изучает маршруты IPv4 и IPv6 через HA VPN.

Поскольку туннели HA VPN и сеансы BGP установлены, маршруты из локального vpc изучаются из транзитного vpc. С помощью консоли перейдите в сеть VPC → Сети VPC → транзит-vpc → МАРШРУТЫ.

Обратите внимание на изученные динамические маршруты IPv4 и IPv6, показанные ниже:

216bde7d08d75ec4.png

Убедитесь, что локальный vpc не изучает маршруты через HA VPN.

Transit-vpc не имеет подсети, поэтому облачный маршрутизатор не будет объявлять какие-либо подсети локальному vpc. С помощью консоли перейдите в сеть VPC → Сети VPC → on-premises-vpc → МАРШРУТЫ.

6. Рекламируйте IPv6 VIP-адреса Private.googleapis.com.

Чтобы получить доступ к частному доступу Google из локальной среды, вам необходимо создать настраиваемое объявление маршрута из транзитного vpc. Адрес IPv6 2600:2d00:0002:2000:: будет объявлен в локальной среде и использован рабочими нагрузками для доступа к API Google, таким как Cloud Storage, Cloud BigQuery и Cloud Bigtable, после обновления локального DNS.

В этой лаборатории кода вы включите доступ через API к большинству API и сервисов Google независимо от того, поддерживаются ли они элементами управления службами VPC.

В консоли перейдите в раздел «Гибридное подключение» → «Облачные маршрутизаторы» → «transit-vpc-cr-us-central1», затем выберите «РЕДАКТИРОВАТЬ».

3e36e3b5ea741ec5.png

В разделе «Объявленные маршруты» выберите параметр «Создать пользовательские маршруты» , обновите поля на основе примера ниже, выберите «ГОТОВО», а затем нажмите «СОХРАНИТЬ».

9283aba7b214f70d.png

Убедитесь, что локальный виртуальный компьютер изучает маршруты IPv6.

Теперь, когда IPv6 Private.googleapis.com объявляется из транзитного vpc, локальный vpc узнает динамические маршруты IPv6 для этого VIP. С помощью консоли перейдите в сеть VPC → Сети VPC → on-premises-vpc → МАРШРУТЫ.

Наблюдайте за маршрутами IPv6, объявленными из Transit-VPC:

caf3b79b035b2a20.png

7. Установите связь с API Google с помощью частного доступа Google.

В следующем разделе мы получим доступ и проверим подключение к облачному хранилищу с помощью IPv6 VIP Private.googleapis.com. Для этого нам необходимо выполнить следующие действия в файле on-premises-vpc.

  • Создайте входное правило брандмауэра, чтобы разрешить доступ прокси-сервера с идентификацией личности (IAP) для доступа по SSH.
  • Создайте облачный маршрутизатор и облачный NAT для загрузки tcpdump и dnsutils.
  • Создайте частную зону Cloud DNS для googleapis.com.
  • Создайте сегмент облачного хранилища.

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

Чтобы разрешить IAP подключаться к вашим экземплярам виртуальных машин, создайте правило брандмауэра, которое:

  • Применяется ко всем экземплярам виртуальных машин, доступ к которым вы хотите сделать с помощью IAP.
  • Разрешает входящий трафик из диапазона IP 35.235.240.0/20. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP.

В Cloud Shell создайте правило брандмауэра IAP.

gcloud compute firewall-rules create ssh-iap-on-premises-vpc \
    --network on-premises-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

Облачный маршрутизатор и конфигурация NAT

Cloud NAT используется в лаборатории кода для установки пакета программного обеспечения, поскольку экземпляр виртуальной машины не имеет внешнего IP-адреса.

Внутри Cloud Shell создайте Cloud Router.

gcloud compute routers create on-premises-cr-us-central1-nat --network on-premises-vpc --region us-central1

Внутри Cloud Shell создайте шлюз NAT.

gcloud compute routers nats create on-premises-nat-us-central1 --router=on-premises-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

Создайте экземпляр теста, on-premises-testbox.

Создайте тестовый экземпляр, который будет использоваться для тестирования и проверки подключения к IPv6 VIP Private.googleapis.com.

Внутри Cloud Shell создайте экземпляр.

gcloud compute instances create on-premises-testbox \
    --project=$projectname \
    --machine-type=e2-micro \
    --stack-type=IPV4_IPV6 \
    --image-family debian-10 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=on-premises-subnet1-us-central1 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump -y
      sudo apt-get install dnsutils -y"

Создайте частную зону Cloud DNS.

Мы будем использовать Cloud DNS для создания частной зоны и записей для *.googleapis.com. Ниже приведены необходимые шаги.

В Cloud Shell создайте частную зону DNS v6-googleapis.com.

gcloud dns --project=$projectname managed-zones create v6-googleapis --description="" --dns-name="googleapis.com." --visibility="private" --networks="on-premises-vpc"

В Cloud Shell создайте запись AAAA для Private.googleapis.com. указывая на IPv6-адрес 2600:2d00:0002:2000:: .

gcloud dns --project=$projectname record-sets create private.googleapis.com. --zone="v6-googleapis" --type="AAAA" --ttl="300" --rrdatas="2600:2d00:0002:2000::"

В Cloud Shell создайте CNAME для *.googleapis.com, чтобы он указывал на Private.googleapis.com.

gcloud dns --project=$projectname record-sets create *.googleapis.com. --zone="v6-googleapis" --type="CNAME" --ttl="300" --rrdatas="private.googleapis.com."

Проверка частной зоны облачного DNS

Перейдите в Сетевые службы → Облачный DNS → v6-googleapis.

455e355195a2a48f.png

Создайте сегмент облачного хранилища.

В Cloud Shell создайте сегмент облачного хранилища и замените Bucket_name глобально уникальным именем, которое вы предпочитаете. Попробуйте другое имя, если оно уже используется.

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

8. Доступ и проверка API Google с использованием адресов IPv6.

В следующем разделе вы выполните SSH с двумя терминалами Cloud Shell . Первый терминал используется для проверки поиска IPv6 с помощью tcpdump, а второй — для доступа к корзине облачного хранилища.

Внутри Cloud Shell выполните ssh для тестирования экземпляра on-premises-testbox .

 gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"

Внутри первого терминала Cloud Shell запустите tcpdump и проверьте порт 53 на наличие DNS-трафика.

sudo tcpdump -nn -i ens4 port 53

Пример ниже.

user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53

Откройте новый терминал Cloud Shell, выбрав «+». После открытия новой вкладки обновите переменную имени проекта.

В Cloud Shell обновите переменную имени проекта.

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

Во втором Cloud Shell выполните ssh для тестирования экземпляра on-premises-testbox .

gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"

Выполните раскопку, чтобы проверить поиск DNS.

Внутри второго терминала Cloud Shell выполните поиск по Storage.googleapis.com.

dig AAAA storage.googleapis.com

Проверьте РАЗДЕЛ ОТВЕТОВ, частная зона DNS Storage.googleapis.com CNAME to Private.googleapis.com AAAA 2600:2d00:2:2000:: , пример ниже:

user@on-premises-testbox:~$ dig AAAA storage.googleapis.com

; <<>> DiG 9.11.5-P4-5.1+deb10u8-Debian <<>> AAAA storage.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2782
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;storage.googleapis.com.                IN      AAAA

;; ANSWER SECTION:
storage.googleapis.com. 300     IN      CNAME   private.googleapis.com.
private.googleapis.com. 300     IN      AAAA    2600:2d00:2:2000::

;; Query time: 9 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Mon Feb 20 01:56:33 UTC 2023
;; MSG SIZE  rcvd: 101

Внутри первого терминала Cloud Shell проверьте tcpdump, который дополнительно подтверждает разрешение DNS до AAAA 2600:2d00:2:2000:: .

user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
01:56:33.473208 IP 172.16.10.3.41476 > 169.254.169.254.53: 2782+ [1au] AAAA? storage.googleapis.com. (63)
01:56:33.482580 IP 169.254.169.254.53 > 172.16.10.3.41476: 2782 2/0/1 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (101)

На основе раскопок и tcpdump мы можем сделать вывод, что разрешение DNS для Storage.googleapis.com достигается через 2600:2d00:2:2000:: , IPv6-адрес для Private.googleapis.com.

Выполните список gsutil, чтобы подтвердить доступ к облачному хранилищу.

Внутри второго терминала Cloud Shell выполните список ранее созданного сегмента хранилища с помощью gsutil. Измените Bucket_name на сегмент, который вы создали ранее.

gsutil -d ls gs://bucket_name

Пример использования сегмента облачного хранилища codelab-ipv6 . Проверьте выходные данные отладки, указав Storage.googleapis.com и HTTP/1.1 200 OK.

user@on-premises-testbox:~$ gsutil -d ls gs://codelab-ipv6
***************************** WARNING *****************************
*** You are running gsutil with debug output enabled.
*** Be aware that debug output includes authentication credentials.
*** Make sure to remove the value of the Authorization header for
*** each HTTP request printed to the console prior to posting to
*** a public medium such as a forum post or Stack Overflow.
***************************** WARNING *****************************
gsutil version: 5.19
checksum: 49a18b9e15560adbc187bab09c51b5fd (OK)
boto version: 2.49.0
python version: 3.9.16 (main, Jan 10 2023, 02:29:25) [Clang 12.0.1 ]
OS: Linux 4.19.0-23-cloud-amd64
multiprocessing available: True
using cloud sdk: True
pass cloud sdk credentials to gsutil: True
config path(s): /etc/boto.cfg
gsutil path: /usr/lib/google-cloud-sdk/bin/gsutil
compiled crcmod: True
installed via package manager: False
editable install: False
shim enabled: False
Command being run: /usr/lib/google-cloud-sdk/platform/gsutil/gsutil -o GSUtil:default_project_id=myprojectid -o GoogleCompute:service_account=default -d ls gs://codelab-ipv6
config_file_list: ['/etc/boto.cfg']
config: [('working_dir', '/mnt/pyami'), ('debug', '0'), ('https_validate_certificates', 'true'), ('working_dir', '/mnt/pyami'), ('debug', '0'), ('default_project_id', 'myproject'), ('default_api_version', '2')]
DEBUG 0220 02:01:14.713012 multiprocess_file_storage.py] Read credential file
INFO 0220 02:01:14.714742 base_api.py] Calling method storage.objects.list with StorageObjectsListRequest: <StorageObjectsListRequest
 bucket: 'codelab-ipv6'
 delimiter: '/'
 maxResults: 1000
 projection: ProjectionValueValuesEnum(noAcl, 1)
 versions: False>
INFO 0220 02:01:14.715939 base_api.py] Making http GET to https://storage.googleapis.com/storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False
INFO 0220 02:01:14.716369 base_api.py] Headers: {'accept': 'application/json',
 'accept-encoding': 'gzip, deflate',
 'content-length': '0',
 'user-agent': 'apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled '
               'interactive/True command/ls google-cloud-sdk/416.0.0'}
INFO 0220 02:01:14.716875 base_api.py] Body: (none)
connect: (storage.googleapis.com, 443)
send: b'GET /storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nuser-agent: apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled
<SNIP>
reply: 'HTTP/1.1 200 OK\r\n'
header: X-GUploader-UploadID: ADPycdvunHlbN1WQBxDr_LefzLaH_HY1bBH22X7IxX9sF1G2Yo_7-nhYwjxUf6N7AF9Zg_JDwPxYtuNJiFutfd6qauEfohYPs7mE
header: Content-Type: application/json; charset=UTF-8
header: Date: Mon, 20 Feb 2023 02:01:14 GMT
header: Vary: Origin
header: Vary: X-Origin
header: Cache-Control: private, max-age=0, must-revalidate, no-transform
header: Expires: Mon, 20 Feb 2023 02:01:14 GMT
header: Content-Length: 3
header: Server: UploadServer
INFO 0220 02:01:14.803286 base_api.py] Response of type Objects: <Objects
 items: []
 prefixes: []>
user@on-premises-testbox:~$ 

Внутри первого терминала Cloud Shell проверьте tcpdump, который дополнительно подтверждает разрешение DNS до AAAA 2600:2d00:2:2000:: .

eepakmichael@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
02:01:14.725000 IP 172.16.10.3.48792 > 169.254.169.254.53: 7056+ A? storage.googleapis.com. (40)
02:01:14.725106 IP 172.16.10.3.48792 > 169.254.169.254.53: 50841+ AAAA? storage.googleapis.com. (40)
02:01:14.732516 IP 169.254.169.254.53 > 172.16.10.3.48792: 50841 2/0/0 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (90)

Выйдите из операционной системы экземпляра on-premises-testbox и вернитесь к приглашению Cloud Shell.

9. Очистка

Внутри Cloud Shell выполните следующие действия:

gcloud compute vpn-tunnels delete transit-vpc-tunnel0 transit-vpc-tunnel1 on-premises-tunnel1   --region=us-central1 --quiet

gcloud compute vpn-tunnels delete on-premises-tunnel0 on-premises-tunnel1 --region=us-central1 --quiet

gcloud compute vpn-gateways delete on-premises-vpc-vpngw transit-vpc-vpngw --region=us-central1 --quiet

gcloud compute routers delete transit-vpc-cr-us-central1  on-premises-vpc-cr-us-central1 on-premises-cr-us-central1-nat --region=us-central1 --quiet

gcloud compute instances delete on-premises-testbox --zone=us-central1-a --quiet

gcloud compute networks subnets delete on-premises-subnet1-us-central1 --region=us-central1 --quiet

gcloud compute firewall-rules delete ssh-iap-on-premises-vpc --quiet

gcloud compute networks delete on-premises-vpc --quiet


gcloud compute networks delete transit-vpc --quiet

gsutil rb gs://bucket_name

gcloud dns record-sets delete *.googleapis.com. \
    --type=CNAME \
    --zone=v6-googleapis
        
gcloud dns record-sets delete private.googleapis.com. \
        --type=AAAA \
        --zone=v6-googleapis
        
gcloud dns managed-zones delete v6-googleapis

10. Поздравления

Поздравляем, вы успешно настроили и подтвердили частный доступ Google по IPv6.

Вы создали транзитную и локальную инфраструктуру, а также частную зону DNS, обеспечивающую разрешение доменов Google API с использованием IPv6. Вы узнали, как тестировать и проверять доступ IPv6 с помощью раскопок и облачного хранилища.

Cosmopup считает, что кодлабы — это здорово!!

8c2a10eb841f7b01.jpeg

Что дальше?

Посмотрите некоторые из этих кодовых лабораторий...

Дальнейшее чтение и видео

Справочная документация