Truy cập API Google từ máy chủ tại cơ sở bằng địa chỉ IPv6

1. Giới thiệu

Tính năng Truy cập riêng tư vào Google cho các máy chủ tại cơ sở cung cấp một cách để các hệ thống tại cơ sở kết nối với các API và dịch vụ của Google bằng cách định tuyến lưu lượng truy cập thông qua một đường hầm Cloud VPN hoặc một tệp đính kèm VLAN cho Cloud Interconnect. Private Google Access cho các máy chủ tại chỗ là một giải pháp thay thế cho việc kết nối với các API và dịch vụ của Google qua Internet.

Để sử dụng Private Google Access cho các máy chủ lưu trữ tại cơ sở, bạn phải chuyển các yêu cầu đối với API của Google đến địa chỉ IP ảo (VIP). Đối với IPv6, các địa chỉ IP sau đây được dùng:

  • Đối với private.googleapis.com: 2600:2d00:0002:2000::/64
  • Đối với restricted.googleapis.com: 2600:2d00:0002:1000::/64

VIP mà bạn chọn sẽ quyết định những dịch vụ bạn có thể sử dụng. Trong lớp học lập trình này, chúng ta sẽ sử dụng private.googleapis.com. Để biết thêm thông tin, hãy xem phần Các lựa chọn về miền.

Lớp học lập trình này mô tả cách bật Private Google Access cho các máy chủ tại chỗ sử dụng địa chỉ IPv6. Bạn sẽ thiết lập một mạng VPC có tên là on-premises-vpc để biểu thị một môi trường tại chỗ. Đối với việc triển khai của bạn, on-premises-vpc sẽ không tồn tại, thay vào đó, bạn sẽ sử dụng mạng kết hợp cho trung tâm dữ liệu tại cơ sở hoặc nhà cung cấp dịch vụ đám mây.

Sản phẩm bạn sẽ tạo ra

Trong lớp học lập trình này, bạn sẽ xây dựng một mạng IPv6 toàn diện minh hoạ quyền truy cập tại chỗ vào API bộ nhớ trên đám mây bằng cách sử dụng CNAME *.googleapis.com cho địa chỉ IPv6 private.googleapis.com 2600:2d00:0002:2000::/64 như minh hoạ trong Hình 1.

Hình 1

a0fc56abf24f3535.png

Kiến thức bạn sẽ học được

  • Cách tạo mạng VPC ngăn xếp kép
  • Cách tạo VPN có tính sẵn sàng cao bằng IPv6
  • Cách cập nhật DNS để truy cập vào Private Google Access
  • Cách thiết lập và xác thực khả năng kết nối Private Google Access

Bạn cần có

  • Dự án trên Google Cloud

2. Trước khi bắt đầu

Cập nhật dự án để hỗ trợ lớp học lập trình

Lớp học lập trình này sử dụng $variables để hỗ trợ việc triển khai cấu hình gcloud trong Cloud Shell.

Trong Cloud Shell, hãy thực hiện các bước sau:

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

3. Tạo transit-vpc

f6932f551b5acac0.png

Tạo mạng VPC trung chuyển

Trong Cloud Shell, hãy thực hiện các bước sau:

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

4. Tạo mạng tại chỗ

58d75cbc9cb20a51.png

Mạng VPC này đại diện cho một môi trường tại chỗ.

Tạo mạng VPC tại chỗ

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Tạo mạng con

Trong Cloud Shell, hãy thực hiện các bước sau:

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. Tạo VPN có tính sẵn sàng cao cho transit-vpc và on-premises-vpc

Tạo HA VPN GW cho transit-vpc

a0fc56abf24f3535.png

Khi mỗi cổng được tạo, hai địa chỉ IPv4 bên ngoài sẽ được phân bổ tự động, mỗi địa chỉ cho một giao diện cổng. Hãy ghi lại các địa chỉ IP này để sử dụng sau trong các bước định cấu hình.

Trong Cloud Shell, hãy tạo HA VPN GW bằng loại ngăn xếp IPV4_IPV6.

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

Tạo HA VPN GW cho on-premises-vpc

Trong Cloud Shell, hãy tạo HA VPN GW có kiểu ngăn xếp IPV4_IPV6

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

Xác thực việc tạo HA VPN GW

Sử dụng bảng điều khiển, chuyển đến mục Hybrid Connectivity (Kết nối kết hợp) → VPN → CLOUD VPN GATEWAYS (CỔNG VPN TRÊN ĐÁM MÂY).

c8eed6ca929935bc.png

Tạo Cloud Router cho transit-vpc

Trong Cloud Shell, hãy tạo Cloud Router nằm ở us-central1

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

Tạo Cloud Router cho on-premises-vpc

Trong Cloud Shell, hãy tạo Cloud Router nằm ở us-central1

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

Tạo đường hầm VPN cho transit-vpc

Bạn sẽ tạo 2 đường hầm VPN trên mỗi cổng HA VPN.

Tạo đường hầm VPN0

Trong Cloud Shell, hãy tạo 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

Tạo đường hầm VPN1

Trong Cloud Shell, hãy tạo tunnel1:

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

Tạo đường hầm VPN cho on-premises-vpc

Bạn sẽ tạo 2 đường hầm VPN trên mỗi cổng HA VPN.

Tạo đường hầm VPN0

Trong Cloud Shell, hãy tạo 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

Tạo đường hầm VPN1

Trong Cloud Shell, hãy tạo tunnel1:

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

Xác thực việc tạo đường hầm VPN

Sử dụng bảng điều khiển, chuyển đến mục Kết nối kết hợp → VPN → ĐƯỜNG HẦM CLOUD VPN.

85fd5aef4b2c4010.png

Tạo phiên BGP

Trong phần này, bạn sẽ định cấu hình các giao diện Cloud Router và các thiết bị ngang hàng BGP.

Khi tạo đường hầm VPN cho phép lưu lượng truy cập IPv6, hãy chỉ định --enable-ipv6 khi bạn chạy lệnh add-bgp-peer.

Tạo giao diện BGP và kết nối ngang hàng cho transit-vpc

Trong Cloud Shell, hãy tạo giao diện 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

Trong Cloud Shell, hãy tạo BGP ngang hàng:

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

Trong Cloud Shell, hãy tạo giao diện 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

Trong Cloud Shell, hãy tạo BGP ngang hàng:

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

Tạo giao diện BGP và thiết lập kết nối ngang hàng cho on-premises-vpc

Trong Cloud Shell, hãy tạo giao diện 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

Trong Cloud Shell, hãy tạo BGP ngang hàng:

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

Trong Cloud Shell, hãy tạo giao diện 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

Trong Cloud Shell, hãy tạo BGP ngang hàng:

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

Chuyển đến Hybrid Connectivity → VPN (Kết nối kết hợp → VPN) để xem thông tin chi tiết về đường hầm VPN.

e100e31ea22c8124.png

Xác thực rằng transit-vpc đang tìm hiểu các tuyến IPv4 và IPv6 qua HA VPN

Vì các đường hầm VPN có tính sẵn sàng cao và phiên BGP được thiết lập, nên các tuyến đường từ on-premises-vpc được tìm hiểu từ transit-vpc. Sử dụng bảng điều khiển, chuyển đến Mạng VPC → Mạng VPC → transit-vpc → TUYẾN ĐƯỜNG.

Quan sát các tuyến đường động IPv4 và IPv6 đã học được minh hoạ bên dưới:

216bde7d08d75ec4.png

Xác thực rằng on-premises-vpc không tìm hiểu các tuyến qua HA VPN

Transit-vpc không có mạng con, do đó, Cloud Router sẽ không quảng cáo bất kỳ mạng con nào cho on-premises-vpc. Sử dụng bảng điều khiển, chuyển đến Mạng VPC → Mạng VPC → on-premises-vpc → TUYẾN ĐƯỜNG.

6. Quảng cáo VIP private.googleapis.com IPv6

Để truy cập vào Private Google Access từ cơ sở tại chỗ, bạn sẽ cần tạo một thông báo tuyến đường tuỳ chỉnh từ transit-vpc. Địa chỉ IPv6 2600:2d00:0002:2000:: sẽ được quảng cáo cho môi trường tại chỗ và được các tải sử dụng để truy cập vào API của Google như Cloud Storage, Cloud BigQuery và Cloud Bigtable sau khi DNS cục bộ được cập nhật.

Trong lớp học lập trình này, bạn sẽ bật quyền truy cập API vào hầu hết các API và dịch vụ của Google, bất kể chúng có được VPC Service Controls hỗ trợ hay không.

Trên bảng điều khiển, hãy chuyển đến Hybrid Connectivity (Kết nối kết hợp) → Cloud Routers (Bộ định tuyến đám mây) → transit-vpc-cr-us-central1, rồi chọn EDIT (CHỈNH SỬA).

3e36e3b5ea741ec5.png

Trong phần Tuyến đường được quảng cáo, hãy chọn mục Tạo tuyến đường tuỳ chỉnh, cập nhật các trường dựa trên ví dụ bên dưới, chọn XONG rồi nhấp vào LƯU.

9283aba7b214f70d.png

Xác thực rằng on-premises-vpc đang tìm hiểu các tuyến IPv6

Giờ đây, khi VIP private.googleapis.com IPv6 được quảng cáo từ transit-vpc, on-premises-vpc sẽ tìm hiểu các tuyến động IPv6 cho VIP. Sử dụng bảng điều khiển, chuyển đến Mạng VPC → Mạng VPC → on-premises-vpc → TUYẾN ĐƯỜNG.

Quan sát các tuyến đường IPv6 được quảng cáo từ transit-vpc:

caf3b79b035b2a20.png

7. Thiết lập giao tiếp với các API của Google bằng Private Google Access

Trong phần sau, chúng ta sẽ truy cập và xác thực khả năng kết nối với Cloud Storage bằng cách sử dụng VIP private.googleapis.com IPv6. Để làm như vậy, chúng ta cần thực hiện các thao tác sau trong on-premises-vpc.

  • Tạo một quy tắc tường lửa cho lưu lượng truy cập vào để cho phép Identity Aware Proxy (IAP) truy cập để truy cập SSH.
  • Tạo một Cloud Router và NAT đám mây để tải tcpdump và dnsutils xuống.
  • Tạo một vùng DNS riêng tư cho googleapis.com.
  • Tạo một bộ chứa Cloud Storage.

Tạo quy tắc tường lửa IAP

Để cho phép IAP kết nối với các phiên bản máy ảo, hãy tạo một quy tắc tường lửa có:

  • Áp dụng cho tất cả các phiên bản máy ảo mà bạn muốn có thể truy cập bằng IAP.
  • Cho phép lưu lượng truy cập vào từ dải IP 35.235.240.0/20. Dải này chứa tất cả địa chỉ IP mà IAP sử dụng để chuyển tiếp TCP.

Trong Cloud Shell, hãy tạo quy tắc tường lửa 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

Cấu hình Cloud Router và NAT

Cloud NAT được dùng trong lớp học lập trình để cài đặt gói phần mềm vì phiên bản máy ảo không có địa chỉ IP ngoài.

Trong Cloud Shell, hãy tạo Cloud Router.

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

Trong Cloud Shell, hãy tạo cổng 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

Tạo một phiên bản kiểm thử, on-premises-testbox

Tạo một phiên bản kiểm thử sẽ được dùng để kiểm thử và xác thực khả năng kết nối với VIP private.googleapis.com IPv6.

Tạo phiên bản trong 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"

Tạo vùng riêng tư Cloud DNS

Chúng ta sẽ sử dụng Cloud DNS để tạo một vùng riêng tư và các bản ghi cho *.googleapis.com. Dưới đây là các bước bắt buộc.

Trong Cloud Shell, hãy tạo một vùng DNS riêng tư v6-googleapis.com.

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

Trong Cloud Shell, hãy tạo bản ghi AAAA cho private.googleapis.com. trỏ đến địa chỉ 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::"

Trong Cloud Shell, hãy tạo một CNAME cho *.googleapis.com để trỏ đến private.googleapis.com.

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

Xác thực vùng riêng tư DNS trên đám mây

Chuyển đến mục Dịch vụ mạng → Cloud DNS → v6-googleapis.

455e355195a2a48f.png

Tạo bộ chứa Cloud Storage

Trong Cloud Shell, hãy tạo một bộ nhớ trên đám mây và thay thế bucket_name bằng một tên duy nhất trên toàn cầu mà bạn muốn. Hãy thử một tên khác nếu tên đó đã được sử dụng.

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

8. Truy cập và xác thực các API của Google bằng địa chỉ IPv6

Trong phần tiếp theo, bạn sẽ thực hiện SSH vào hai thiết bị đầu cuối Cloud Shell. Thiết bị đầu cuối đầu tiên được dùng để xác thực hoạt động tra cứu IPv6 bằng cách sử dụng tcpdump, trong khi thiết bị đầu cuối thứ hai được dùng để truy cập vào bộ nhớ trên đám mây.

Trong Cloud Shell, hãy thực hiện một ssh đến phiên bản thử nghiệm on-premises-testbox.

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

Trong cửa sổ dòng lệnh Cloud Shell 1, hãy khởi động tcpdump và theo dõi cổng 53 để biết lưu lượng truy cập DNS.

sudo tcpdump -nn -i ens4 port 53

Ví dụ bên dưới.

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

Mở một thiết bị đầu cuối Cloud Shell mới bằng cách chọn "+". Sau khi thẻ mới mở ra, hãy cập nhật biến tên dự án.

Trong Cloud Shell, hãy cập nhật biến tên dự án.

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

Trong Cloud Shell 2, hãy thực hiện một ssh đến phiên bản thử nghiệm on-premises-testbox.

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

Thực hiện lệnh dig để xác thực việc tra cứu DNS

Trong thiết bị đầu cuối Cloud Shell 2, hãy thực hiện một lệnh dig đối với storage.googleapis.com.

dig AAAA storage.googleapis.com

Kiểm tra MỤC TRẢ LỜI, CNAME storage.googleapis.com của vùng DNS riêng tư thành AAAA private.googleapis.com 2600:2d00:2:2000::, ví dụ bên dưới:

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

Trong thiết bị đầu cuối Cloud Shell 1, hãy kiểm tra tcpdump để xác nhận thêm việc phân giải DNS thành 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)

Dựa trên dig và tcpdump, chúng ta có thể kết luận rằng quá trình phân giải DNS thành storage.googleapis.com được thực hiện thông qua 2600:2d00:2:2000::, địa chỉ IPv6 cho private.googleapis.com.

Thực hiện lệnh gsutil list để xác thực quyền truy cập vào bộ nhớ trên đám mây

Trong thiết bị đầu cuối Cloud Shell 2, hãy thực hiện một danh sách đối với vùng lưu trữ đã tạo trước đó bằng gsutil. Thay đổi bucket_name thành tên của vùng chứa mà bạn đã tạo trước đó.

gsutil -d ls gs://bucket_name

Ví dụ: sử dụng bộ chứa bộ nhớ trên đám mây codelab-ipv6, kiểm tra đầu ra gỡ lỗi cho biết storage.googleapis.comHTTP/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:~$ 

Trong thiết bị đầu cuối Cloud Shell 1, hãy kiểm tra tcpdump để xác nhận thêm việc phân giải DNS thành 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)

Thoát khỏi hệ điều hành của phiên bản on-premises-testbox, quay lại dấu nhắc Cloud Shell.

9. Dọn dẹp

Trong Cloud Shell, hãy thực hiện những việc sau:

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. Xin chúc mừng

Xin chúc mừng! Bạn đã định cấu hình và xác thực thành công một Private Google Access bằng IPv6.

Bạn đã tạo cơ sở hạ tầng truyền tải và cơ sở hạ tầng tại chỗ, đồng thời tạo một vùng DNS riêng tư cho phép phân giải các miền API của Google bằng IPv6. Bạn đã tìm hiểu cách kiểm thử và xác thực quyền truy cập IPv6 bằng cách sử dụng dig và bộ nhớ trên đám mây.

Cosmopup cho rằng các lớp học lập trình rất tuyệt!!

8c2a10eb841f7b01.jpeg

Tiếp theo là gì?

Hãy xem một số lớp học lập trình này...

Tài liệu đọc thêm và video

Tài liệu tham khảo