Kết nối dịch vụ riêng tư dành cho API của Google

1. Giới thiệu

Khi dùng Private Service Connect, bạn có thể tạo điểm cuối riêng tư bằng địa chỉ IP nội bộ chung trong mạng VPC để truy cập vào Google API. Bạn có thể chỉ định tên DNS cho các địa chỉ IP nội bộ này với các tên có ý nghĩa như storage-pscendpoint.p.googleapis.com và Bigtable-adsteam.p.googleapis.com. Thay vì gửi yêu cầu API đến các điểm cuối của dịch vụ công cộng như storage.googleapis.com, bạn có thể gửi yêu cầu đến điểm cuối Private Service Connect. Điểm cuối này là riêng tư và chỉ dành cho nội bộ mạng VPC của bạn.

Các tên và địa chỉ IP này được lưu trữ trong nội bộ mạng VPC của bạn và mọi mạng tại chỗ được kết nối với mạng đó bằng các đường hầm Cloud VPN hoặc tệp đính kèm Cloud Interconnect (VLAN).

Bạn có thể kiểm soát lưu lượng truy cập chuyển đến điểm cuối nào, đồng thời có thể chứng minh rằng lưu lượng truy cập nằm trong Google Cloud.

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

  • Các trường hợp sử dụng kết nối dịch vụ riêng tư
  • Yêu cầu về mạng
  • API được hỗ trợ
  • Tạo điểm cuối Kết nối dịch vụ riêng tư
  • Tạo bộ chứa trên đám mây
  • Tạo và cập nhật vùng riêng tư Cloud DNS
  • Tạo NAT GW để truy cập googleapis công khai
  • Tạo và cập nhật tệp cấu hình BOTO
  • Thực hiện danh sách GCR trên VM1 được giải quyết dựa trên điểm cuối dịch vụ PSC của bạn
  • Thực hiện danh sách androidx trên VM2 được giải quyết dựa trên googleapis.com công khai
  • Dùng Tcpdump để xác thực quá trình phân giải DNS

Bạn cần có

  • Có kiến thức về DNS, nano hoặc trình chỉnh sửa vi

2. Các trường hợp sử dụng kết nối dịch vụ riêng tư

Bạn có thể tạo nhiều điểm cuối Private Service Connect trong cùng một mạng VPC. Không có giới hạn về băng thông tới một điểm cuối cụ thể. Vì các điểm cuối của Private Service Connect sử dụng địa chỉ IP nội bộ chung, nên mọi tài nguyên trong mạng VPC của bạn đều có thể sử dụng các điểm cuối này.

Khi có nhiều điểm cuối, bạn có thể chỉ định các đường dẫn mạng khác nhau bằng cách sử dụng Cloud Router và các quy tắc về tường lửa.

  • Bạn có thể tạo các quy tắc tường lửa để ngăn một số máy ảo truy cập vào API của Google thông qua một điểm cuối của Private Service Connect, trong khi vẫn cho phép các máy ảo khác truy cập.
  • Bạn có thể đặt một quy tắc tường lửa trên phiên bản máy ảo để không cho phép tất cả lưu lượng truy cập vào Internet; lưu lượng truy cập gửi đến các điểm cuối của Private Service Connect vẫn sẽ được chuyển đến Google.
  • Nếu có các máy chủ lưu trữ tại chỗ được kết nối với VPC bằng đường hầm Cloud VPN hoặc tệp đính kèm Cloud Interconnect (VLAN), thì bạn có thể gửi một số yêu cầu qua đường hầm hoặc VLAN trong khi gửi các yêu cầu khác qua Internet công cộng. Cấu hình này cho phép bạn bỏ qua đường hầm hoặc VLAN cho các dịch vụ như Google Sách không được Quyền truy cập riêng tư của Google hỗ trợ. Để tạo cấu hình này, hãy tạo một điểm cuối Private Service Connect, quảng cáo địa chỉ IP của điểm cuối Private Service Connect bằng quảng cáo định tuyến tuỳ chỉnh cho Cloud Router và bật chính sách chuyển tiếp thư đến của Cloud DNS. Ứng dụng có thể gửi một số yêu cầu qua đường hầm Cloud VPN hoặc tệp đính kèm Cloud Interconnect (VLAN) bằng cách dùng tên của điểm cuối Private Service Connect và các điểm cuối khác qua Internet bằng cách dùng tên DNS mặc định.
  • Nếu kết nối mạng tại cơ sở hạ tầng riêng với mạng VPC bằng nhiều tệp đính kèm Cloud Interconnect (VLAN), thì bạn có thể gửi một số lưu lượng từ cơ sở hạ tầng riêng qua một VLAN và các lưu lượng còn lại qua các VLAN khác, như minh hoạ trong hình 2. Điều này cho phép bạn sử dụng mạng trên diện rộng của riêng mình thay vì mạng của Google, đồng thời kiểm soát việc di chuyển dữ liệu nhằm đáp ứng các yêu cầu về địa lý. Để tạo cấu hình này, hãy tạo 2 điểm cuối Private Service Connect. Tạo quảng cáo tuyến tuỳ chỉnh cho điểm cuối đầu tiên trên phiên BGP của Cloud Router quản lý VLAN đầu tiên, đồng thời tạo một quảng cáo tuyến tuỳ chỉnh khác cho điểm cuối thứ hai trong phiên BGP của Cloud Router quản lý VLAN thứ hai. Các máy chủ tại cơ sở được định cấu hình để sử dụng tên điểm cuối Private Service Connect sẽ gửi lưu lượng truy cập qua tệp đính kèm Cloud Interconnect (VLAN) tương ứng.
  • Bạn cũng có thể sử dụng nhiều tệp đính kèm Cloud Interconnect (VLAN) trong một cấu trúc liên kết đang hoạt động/đang hoạt động. Nếu bạn quảng cáo cùng một địa chỉ IP điểm cuối Private Service Connect bằng cách sử dụng quảng cáo định tuyến tuỳ chỉnh cho các phiên BGP trên Cloud Router quản lý VLAN, thì các gói gửi từ hệ thống tại cơ sở đến các điểm cuối sẽ được định tuyến qua các VLAN bằng ECMP.

5e142c2fbf6f010e.png.

Hình 1. Bằng cách định cấu hình Private Service Connect, Cloud Router và máy chủ tại cơ sở, bạn có thể kiểm soát xem tệp đính kèm Cloud Interconnect (VLAN) nào được dùng để gửi lưu lượng truy cập đến các API của Google.

3. Yêu cầu về mạng

Để sử dụng Kết nối dịch vụ riêng tư, các phiên bản máy ảo (VM) không có địa chỉ IP bên ngoài phải có giao diện chính trong mạng con bật Quyền truy cập riêng tư của Google.

Máy ảo có địa chỉ IP bên ngoài có thể truy cập vào các API và dịch vụ của Google bằng điểm cuối Private Service Connect bất kể Quyền truy cập riêng tư của Google có được bật cho mạng con của máy ảo đó hay không. Khả năng kết nối với điểm cuối Kết nối dịch vụ riêng tư vẫn nằm trong mạng của Google.

Không thể truy cập vào điểm cuối của Kết nối dịch vụ riêng tư từ các mạng VPC ngang hàng.

Các API được hỗ trợ

Khi tạo điểm cuối Private Service Connect (Kết nối dịch vụ riêng tư), bạn phải chọn gói API mình cần truy cập: all-apis hoặc vpc-sc.

Các gói API cấp quyền truy cập vào cùng các API có sẵn thông qua VIP Quyền truy cập riêng tư trên Google.

  • Gói all-apis cung cấp quyền truy cập vào các API tương tự như private.googleapis.com.
  • Gói vpc-sc cung cấp quyền truy cập vào các API tương tự như restricted.googleapis.com.

4. Cấu trúc liên kết của lớp học lập trình và trường hợp sử dụng

2ac275eb86f26338.pngS

Hình 1 – Cấu trúc liên kết của lớp học lập trình

Trường hợp sử dụng của lớp học lập trình –

Khách hàng của chúng tôi yêu cầu kết hợp quyền truy cập googleapis riêng tư (kết nối) và công khai để chuyển dữ liệu bộ nhớ trên đám mây. Để đáp ứng yêu cầu của khách hàng, chúng tôi sẽ triển khai Kết nối dịch vụ riêng tư bao gồm một địa chỉ duy nhất /32 địa chỉ, cấu hình BOTO và cập nhật bản ghi DNS. Máy ảo 1 sẽ sử dụng PSC để truy cập vào bộ chứa lưu trữ trên đám mây; ngược lại, VM2 sẽ sử dụng các dải IP của googleapis.com công khai qua NAT GW.

Mọi khía cạnh của phòng thí nghiệm này đều được triển khai trong Google Cloud Platform, nhưng trường hợp sử dụng này vẫn áp dụng khi triển khai đám mây kết hợp cần có phân tách lưu lượng truy cập.

5. Thiết lập và yêu cầu

Thiết lập môi trường theo tiến độ riêng

  1. Đăng nhập vào Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

96a9c957bc475304.pngS

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Xin lưu ý rằng mã dự án là một tên riêng biệt trong tất cả dự án Google Cloud (tên ở trên đã được sử dụng nên sẽ không phù hợp với bạn!). Lớp này sẽ được đề cập sau trong lớp học lập trình này là PROJECT_ID.

  1. Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên của Google Cloud.

Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" sẽ tư vấn cho bạn cách tắt tài nguyên để bạn không phải chịu thanh toán ngoài hướng dẫn này. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

Khởi động Cloud Shell

Mặc dù bạn có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trong Đám mây.

Trong Bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell ở thanh công cụ trên cùng bên phải:

bce75f34b2c53987.png

Sẽ chỉ mất một chút thời gian để cấp phép và kết nối với môi trường. Sau khi hoàn tất, bạn sẽ thấy như sau:

f6ef2b5f13479f3a.png

Máy ảo này chứa tất cả các công cụ phát triển mà bạn cần. Phiên bản này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Bạn có thể thực hiện tất cả công việc trong phòng thí nghiệm này chỉ bằng một trình duyệt.

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

Bật API

Bên trong Cloud Shell, hãy đảm bảo rằng bạn thiết lập mã dự án

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

Bật tất cả dịch vụ cần thiết

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

7. Tạo mạng VPC

Mạng VPC

Của Cloud Shell

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

Tạo mạng con

Của 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

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

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

  • Áp dụng cho tất cả các thực thể máy ảo mà bạn muốn truy cập được bằng cách sử dụ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.

Của Cloud Shell

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

Tạo thực thể Cloud NAT

Tạo Cloud Router

Của Cloud Shell

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

Tạo Cloud NAT

Của 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. Tạo điểm cuối Kết nối dịch vụ riêng tư

Khi định cấu hình IP của điểm cuối Private Service Connect <pscendpointip>, bạn sẽ cần cung cấp một địa chỉ IP duy nhất chưa được xác định trong VPC của mình.

Của Cloud Shell

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=192.168.255.250 \
    --network=psc-lab

Lưu trữ "pscendpointip" trong thời gian hoạt động của phòng thí nghiệm

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

echo $pscendpointip

Tạo quy tắc chuyển tiếp để kết nối điểm cuối với các API và dịch vụ của Google.

Của Cloud Shell

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

Liệt kê các điểm cuối Private Service Connect đã định cấu hình

Của Cloud Shell

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

Mô tả các điểm cuối của Private Service Connect đã định cấu hình

Của Cloud Shell

gcloud compute forwarding-rules describe \
    pscendpoint --global

9. Tạo bộ chứa

Tạo bộ chứa Cloud Storage và thay thế BUCKET_NAME bằng tên duy nhất trên toàn cầu mà bạn muốn.

Của Cloud Shell

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

Lưu trữ 'BUCKET_NAME' trong thời gian hoạt động của phòng thí nghiệm

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

10. Cấu hình DNS

Khi bạn tạo điểm cuối Kết nối dịch vụ riêng tư, Thư mục dịch vụ sẽ tạo bản ghi DNS cho các API và dịch vụ được cung cấp qua điểm cuối đó.

Bản ghi DNS trỏ đến địa chỉ IP điểm cuối của Kết nối dịch vụ riêng tư và có định dạng sau: SERVICE-ENDPOINT.p.googleapis.com.

Bạn có thể sử dụng những tên DNS này trong các yêu cầu API để chuyển yêu cầu đến điểm cuối Private Service Connect của mình. Bạn cũng có thể dùng những tên DNS này trong tiêu đề Máy chủ lưu trữ của yêu cầu.

Nếu bạn muốn dùng điểm cuối Kết nối dịch vụ riêng tư với một ứng dụng hoặc ứng dụng truy cập vào các API và dịch vụ của Google, hãy cập nhật ứng dụng hoặc ứng dụng của bạn để sử dụng tên DNS p.googleapis.com.

Hãy xem tài liệu dành cho ứng dụng hoặc thư viện ứng dụng của bạn để biết thông tin chi tiết. Ví dụ:

  • Python: Bạn có thể định cấu hình api_endpoint trong Lớp tuỳ chọn ứng dụng trong gói google-api-core.
  • Go: Bạn có thể định cấu hình WithEndpoint trong Gói tuỳ chọn ứng dụng trong gói API.
  • gcloud: Bạn có thể định cấu hình api_endpoint_overrides bằng lệnh này. gcloud config set api_endpoint_overrides/SERVICE ENDPOINT_URL

Ví dụ: Đặt cấu hình gcloud api_endpoint_overrides/storage https://storage-xyz.p.googleapis.com/storage/v1/

Nếu bạn không thể định cấu hình ứng dụng hoặc ứng dụng để dùng một điểm cuối khác, hãy tạo bản ghi DNS sao cho khớp với tên DNS mặc định. Ví dụ: Storage.googleapis.com. Xem phần Tạo bản ghi DNS bằng tên DNS mặc định.

Xác thực bản ghi DNS

Từ bảng điều khiển đám mây, xác thực mục nhập dns đã tạo nằm trong phần Dịch vụ mạng → Cloud DNS. Hãy ghi lại tên DNS được tạo là "p.googleapis.com".

11. Tạo máy ảo

Tạo Máy ảo (psc-instance-1) dùng để xác thực Kết nối dịch vụ riêng tư

Của 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 

Đăng nhập vào phiên bản máy ảo (psc-instance-1)

SSH vào máy ảo thông qua Cloud Shell

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

Tạo thêm các thiết bị đầu cuối vỏ đám mây bằng cách nhấp vào dấu + (ảnh chụp màn hình bên dưới) ba lần.

69ea94e1527912bb.png.

Tạo Máy ảo (psc-instance-2) dùng để xác thực Googleapis công khai

Từ thẻ 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 

Từ thẻ 2 SSH vào máy ảo thông qua 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"

Chuyển từ thẻ 3 SSH sang psc-instance-1 thông qua 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"

Chuyển từ thẻ 4 Shell SSH sang psc-instance-2 thông qua 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. Xác minh hành vi hiện có trên Gsutil

Từ tab 4 (psc-instance-2), hãy khởi động tcpdump và theo dõi lưu lượng truy cập DNS

sudo tcpdump -vv -i eth0 port 53

Kiểm tra hoạt động tra cứu DNS của nhóm lưu trữ từ thẻ 2 (psc-instance-2)

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

Kiểm tra quy trình gỡ lỗi Voyager, HOST storage.googleapis.com đang được dùng để phân giải 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>

Từ thẻ 4 (psc-instance-2), hãy xác minh(các) bản ghi DNS công khai của GoogleAPI.com được dùng khi truy cập vào bộ chứa lưu trữ.

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. Sửa đổi hành vi của Gsutil

Hãy nhớ lại trong bước trước, bạn đã tạo một Vùng DNS riêng và bản ghi A được liên kết với địa chỉ IP của điểm cuối PSC. Trong bước tiếp theo, chúng ta sẽ kiểm soát cách hoạt động của NCMEC bằng cách cập nhật tệp BOTO của máy ảo trên psc-instance-1.

Xem cấu hình BOTO mặc định trên thiết bị đầu cuối thực thể máy ảo trên thẻ 1 (psc-instance-1)

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

Kết quả (project_id của bạn sẽ khác)

[GSUtil]
default_project_id  = [your project number]
default_api_version = 2

[GoogleCompute]
service_account = default

Cập nhật cấu hình BOTO bằng trình chỉnh sửa nano hoặc VI, hãy nhớ sao chép và dán tất cả các mục nhập.

Ví dụ: sudo nano /etc/boto.cfg

hoặc

Ví dụ: sudo vi /etc/boto.cfg

Trên thẻ thiết bị đầu cuối của phiên bản máy ảo 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

Xác thực cấu hình, thứ tự [Credentials] là một yếu tố quan trọng trong quá trình tra cứu 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  = [your project number
default_api_version = 2

[GoogleCompute]
service_account = default

14. Xác minh hành vi tra cứu OneRoster đã cập nhật

Từ tab 3 (psc-instance-1), hãy khởi động tcpdump và theo dõi lưu lượng truy cập DNS

sudo tcpdump -vv -i eth0 port 53

Kiểm tra quá trình tra cứu androidx bộ chứa lưu trữ từ thẻ 1 (psc-instance-1)

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

gsutil -D ls gs://$BUCKET_NAME

Nhật ký gỡ lỗi xác nhận rằng bộ chứa lưu trữ có thể truy cập được thông qua điểm cuối "pscendpoint" của Kết nối dịch vụ riêng tư

Kết quả:

<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>

Trên Thẻ 3 (psc-instance-1), hãy xác minh IP điểm cuối PSC của bạn là bản ghi DNS A được dùng khi cố gắng truy cập vào bộ chứa lưu trữ của bạn.

@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)

Xác minh IP của điểm cuối Private Service Connect hiện đã được dùng để phân giải DNS

Từ thẻ 1

nslookup storage-pscendpoint.p.googleapis.com

Đầu ra

@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. Các bước dọn dẹp

Thoát khỏi phiên bản máy ảo (tất cả các thẻ)

exit

Từ một thiết bị đầu cuối Cloud Shell, xoá các thành phần trong phòng thí nghiệm

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

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

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

gcloud 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

Trong Console, hãy đảm bảo bạn đang xem đúng dự án, sau đó chọn Networking Services (Dịch vụ mạng) → Cloud DNS

16. Xin chúc mừng!

Chúc mừng bạn đã hoàn thành lớp học lập trình.

Nội dung đã đề cập

  • Các trường hợp sử dụng kết nối dịch vụ riêng tư
  • Yêu cầu về mạng
  • API được hỗ trợ
  • Đã tạo điểm cuối Private Service Connect
  • Đã tạo một bộ chứa lưu trữ trên đám mây
  • Đã cập nhật tệp cấu hình BOTO
  • Đã tạo NAT GW
  • Thực hiện danh sách OneRoster trên VM1 để phân giải dựa trên điểm cuối dịch vụ PSC của bạn
  • Thực hiện danh sách YT trên VM2 để phân giải dựa trên googleapis.com công khai
  • Dùng Tcpdump để xác thực quá trình phân giải DNS