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 , представляющую локальную среду. В вашем случае сеть on-premises-vpc не будет существовать, вместо этого будет использоваться гибридная сеть с вашим локальным центром обработки данных или облачным провайдером.
Что вы построите
В этом практическом задании вы создадите сквозную сеть IPv6, демонстрирующую локальный доступ к API облачного хранилища с использованием записи CNAME *.googleapis.com для IPv6-адреса private.googleapis.com 2600:2d00:0002:2000::/64 , как показано на рисунке 1.
Рисунок 1

Что вы узнаете
- Как создать сеть VPC с поддержкой двух стеков технологий.
- Как создать высокодоступный VPN с использованием IPv6
- Как обновить DNS для доступа к приватному доступу Google.
- Как установить и подтвердить подключение к приватному Google Access
Что вам понадобится
- Проект Google Cloud
2. Прежде чем начать
Обновите проект, чтобы он поддерживал практическое занятие.
В этом практическом занятии используется переменная `$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.

Создайте транзитную сеть 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. Создайте локальную сеть.

Данная сеть 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. Создайте VPN высокой доступности для транзитной VPC и локальной VPC.
Создайте шлюз HA VPN для transit-vpc.

При создании каждого шлюза автоматически выделяются два внешних IPv4-адреса, по одному для каждого интерфейса шлюза. Запишите эти IP-адреса для дальнейшего использования на этапах настройки.
Внутри Cloud Shell создайте шлюз HA VPN с типом стека IPV4_IPV6.
gcloud compute vpn-gateways create transit-vpc-vpngw \
--network=transit-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
Создайте шлюз HA VPN для локальной VPC.
Внутри Cloud Shell создайте шлюз HA VPN с типом стека IPV4_IPV6.
gcloud compute vpn-gateways create on-premises-vpc-vpngw \
--network=on-premises-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
Проверка создания шлюза HA VPN
С помощью консоли перейдите в раздел «Гибридное подключение» → «VPN» → «Шлюзы Cloud VPN».

Создайте облачный маршрутизатор для transit-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 создайте туннель tunnel0:
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 создайте туннель tunnel0:
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-туннели».

Создание сессий BGP
В этом разделе вы настраиваете интерфейсы Cloud Router и BGP-пиры.
При создании VPN-туннелей, разрешающих трафик IPv6, укажите --enable-ipv6 при выполнении команды add-bgp-peer .
Создайте BGP-интерфейс и установите пиринговое соединение для transit-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» .

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

Убедитесь, что локальная VPC не изучает маршруты через VPN высокой доступности.
В Transit-vpc отсутствует подсеть, поэтому Cloud Router не будет объявлять подсети локальной VPC. С помощью консоли перейдите в раздел Сеть VPC → Сети VPC → Локальная VPC → МАРШРУТЫ.
6. Рекламируйте VIP-адрес IPv6 private.googleapis.com.
Для доступа к частному сервису Google Access из локальной среды вам потребуется создать пользовательское объявление маршрута из транзитной VPC. IPv6-адрес 2600:2d00:0002:2000:: будет объявлен в локальной среде и использоваться рабочими нагрузками для доступа к API Google, таким как Cloud Storage, Cloud BigQuery и Cloud Bigtable, после обновления локального DNS.
В этом практическом задании вы включите доступ к большинству API и сервисов Google, независимо от того, поддерживаются ли они средствами управления сервисами VPC.
В консоли перейдите в раздел «Гибридное подключение» → «Облачные маршрутизаторы» → transit-vpc-cr-us-central1, затем выберите «Редактировать».

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

Убедитесь, что локальная VPC изучает маршруты IPv6.
Теперь, когда IPv6-адрес private.googleapis.com VIP-адрес объявлен транзитным VPC, локальный VPC получит динамические маршруты IPv6 для этого VIP-адреса. Используя консоль, перейдите в раздел Сеть VPC → Сети VPC → Локальный VPC → МАРШРУТЫ.
Обратите внимание на маршруты IPv6, объявляемые транзитным VPC:

7. Установите связь с API Google, используя частный доступ Google.
В следующем разделе мы получим доступ к облачному хранилищу и проверим подключение к нему, используя IPv6-адрес private.googleapis.com. Для этого нам необходимо выполнить следующие действия в локальной виртуальной частной сети (vPC).
- Создайте правило входящего трафика брандмауэра, разрешающее доступ по SSH через Identity Aware Proxy (IAP).
- Создайте облачный маршрутизатор и облачный NAT для загрузки tcpdump и dnsutils.
- Создайте частную облачную 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).
Создайте тестовый экземпляр, который будет использоваться для проверки и подтверждения подключения к виртуальному IP-адресу private.googleapis.com по протоколу IPv6.
Внутри 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.

Создайте сегмент облачного хранилища.
В 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 (терминал 1) запустите tcpdump и отслеживайте DNS-трафик на порту 53.
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 2 выполните SSH-подключение к тестовому экземпляру on-premises-testbox .
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
Выполните команду dig для проверки DNS-запроса.
Внутри терминала Cloud Shell (второй) выполните команду dig против storage.googleapis.com.
dig AAAA storage.googleapis.com
Проверьте раздел ANSWER SECTION, частную DNS-зону storage.googleapis.com, запись CNAME на 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 (терминал 1) изучите дамп TCP, который дополнительно подтверждает разрешение 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)
На основании результатов анализа с помощью dig и tcpdump можно заключить, что разрешение DNS-имени для storage.googleapis.com осуществляется через 2600:2d00:2:2000:: , IPv6-адрес для private.googleapis.com.
Выполните команду gsutil list для проверки доступа к облачному хранилищу.
В терминале 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 (терминал 1) изучите дамп TCP, который дополнительно подтверждает разрешение 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)
Выйдите из операционной системы локального тестового экземпляра и вернитесь в командную строку 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 с помощью dig и облачного хранилища.
Cosmopup считает, что Codelabs — это круто!!

Что дальше?
Посмотрите некоторые из этих практических занятий по программированию...