1. Giới thiệu
Khi dùng Private Service Connect, bạn có thể tạo các điểm cuối riêng tư bằng địa chỉ IP nội bộ chung trong mạng VPC của mình. 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 định tuyến tùy chỉnh cho điểm cuối đầu tiên trên phiên BGP của Bộ định tuyến đám mây quản lý VLAN đầu tiên và tạo quảng cáo tuyến tùy chỉnh khác cho điểm cuối thứ hai trong phiên BGP của Bộ định tuyến đám mây 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.
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ùng các API 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
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
- Đă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 G Suite, bạn phải tạo một tài khoản.)
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
.
- 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:
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:
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
Đầu ra
Created NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 psc-lab CUSTOM REGIONAL
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
Đầu ra
Created NAME REGION NETWORK RANGE psclab-subnet us-central1 psc-lab 10.0.0.0/24
Tạo quy tắc về tường lửa
Của Cloud Shell
gcloud compute firewall-rules create psclab-ssh \ --network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20
Đầu ra
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED psclab-ssh psc-lab INGRESS 1000 tcp:22 False
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 beta compute addresses create psc-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=<pscendpointip> \ --network=psc-lab
Lưu trữ "pscendpointip" trong thời gian hoạt động của phòng thí nghiệm
(gcloud compute addresses list --filter=name:psc-ip --format="value(address)") pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)") echo $pscendpointip
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 beta 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 của 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
Giả sử bạn có một ứng dụng sử dụng Google Cloud Storage. Nếu không có Private Service Connect, các ứng dụng của bạn có thể kết nối với "storage.googleapis.com" và theo mặc định, địa chỉ này sẽ phân giải thành một số địa chỉ công khai. Với Private Service Connect, bạn có thể tạo và sử dụng các tên như "storage-psclab.p.googleapis.com". Tên và địa chỉ là thông tin riêng tư đối với mạng VPC và mọi mạng tại cơ sở liên quan.
Private Service Connect dành cho DNS tuân theo quy ước đặt tên SERVICE-ENDPOINT.p.googleapis.com. Trong ví dụ được cung cấp ở trên, "bộ nhớ" là DỊCH VỤ & "psclab" là ĐIỂM CUỐI. Bắt buộc phải bao gồm "-" giữa SERVICE và ENDPOINT.
Để truy cập vào Bộ nhớ đám mây bằng điểm cuối Kết nối dịch vụ riêng tư, hãy tạo một bản ghi DNS (A) bản ghi storage-psclab.p.googleapis.com trỏ đến địa chỉ IP điểm cuối của Kết nối dịch vụ riêng tư.
Tạo vùng riêng tư DNS
gcloud dns --project=$projectname managed-zones create psc-dns-zone --description="" --dns-name="p.googleapis.com." --visibility="private" --networks="psc-lab"
Tạo bản ghi DNS A
gcloud dns --project=$projectname record-sets transaction start --zone=psc-dns-zone gcloud dns --project=$projectname record-sets transaction add $pscendpointip --name=storage-pscendpoint.p.googleapis.com. --ttl=300 --type=A --zone=psc-dns-zone gcloud dns --project=$projectname record-sets transaction execute --zone=psc-dns-zone
11. 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.
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 = 234086459238 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 = 234086459238 default_api_version = 2 [GoogleCompute] service_account = default
14. Xác minh hành vi tra cứu NCMEC đã 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 beta compute forwarding-rules delete pscendpoint --global --quiet gcloud beta compute addresses delete psc-ip --global --quiet gsutil rm -r gs://$BUCKET_NAME gcloud compute instances delete psc-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete psc-instance-2 --zone=us-central1-a --quiet gcloud compute firewall-rules delete psclab-ssh --quiet gcloud compute networks subnets delete psclab-subnet --region us-central1 --quiet gcloud compute networks delete psc-lab --quiet
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
Xác định và nhấp vào "psc-dns-zone"
Chọn nhóm bản ghi "storage-pscendpoint.p.googleapis.com" sau đó nhấp vào Delete Record Set (Xoá Nhóm Bản ghi)
Nhấp vào Xoá vùng để hoàn tất quy trình dọn dẹp phòng thí nghiệm
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
- Đã tạo vùng riêng tư Cloud DNS
- Đã cập nhật tệp cấu hình BOTO
- Đã tạo NAT GW
- Thực hiện danh sách GCR 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 OneRoster 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