Sử dụng Private Service Connect để xuất bản và sử dụng các dịch vụ

1. Giới thiệu

Private Service Connect cho phép nhà sản xuất dịch vụ cung cấp dịch vụ riêng cho người tiêu dùng dịch vụ. Private Service Connect mang lại những lợi ích sau:

  • Mạng VPC của nhà sản xuất dịch vụ có thể hỗ trợ nhiều người tiêu dùng dịch vụ.
  • Mỗi người tiêu dùng kết nối với một địa chỉ IP nội bộ mà họ xác định. Private Service Connect thực hiện dịch địa chỉ mạng (NAT) để định tuyến yêu cầu đến nhà sản xuất dịch vụ.

45b90d50690dd111.pngS

Hình 2. Private Service Connect sử dụng các thiết bị đầu cuối và tệp đính kèm dịch vụ để cho phép người tiêu dùng dịch vụ gửi lưu lượng truy cập từ mạng VPC của người tiêu dùng đến các dịch vụ trong mạng VPC của nhà sản xuất dịch vụ (nhấp để phóng to).

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

  • Lợi ích của việc kết nối dịch vụ riêng tư
  • Các khái niệm chính dành cho người sử dụng dịch vụ
  • Các khái niệm chính dành cho nhà sản xuất dịch vụ
  • Tạo môi trường thực thể sản xuất
  • Hiển thị dịch vụ (môi trường nhà sản xuất) thông qua một tệp đính kèm dịch vụ
  • Tạo môi trường dành cho người tiêu dùng
  • Tạo quy tắc chuyển tiếp trong mạng người tiêu dùng
  • Xác thực quyền truy cập của người dùng TCP
  • Bật & xác thực giao thức proxy
  • Bật chế độ kiểm soát quyền truy cập vào chính sách

Bạn cần có

  • Kiến thức về trình cân bằng tải nội bộ
  • Có thể tạo VPC trong 2 dự án

2. Lợi ích của việc kết nối dịch vụ riêng tư

Khi sử dụng PSC, bạn được hưởng một số lợi ích so với việc sử dụng tính năng Kết nối ngang hàng VPC:

Kiểm soát tốt hơn không gian IP riêng tư

  • Là người sử dụng dịch vụ, bạn có thể kiểm soát địa chỉ IP riêng tư dùng để kết nối với dịch vụ được quản lý mà bạn muốn truy cập.
  • Là người sử dụng dịch vụ, bạn không cần phải lo lắng về việc dành riêng dải địa chỉ IP riêng cho các dịch vụ phụ trợ mà người dùng sử dụng trong VPC của mình. Bạn chỉ cần chọn một địa chỉ IP trong mạng con của riêng mình để kết nối với dịch vụ của nhà sản xuất.
  • Là nhà sản xuất dịch vụ, bạn có thể chọn triển khai mô hình nhiều người thuê bao, trong đó VPC của bạn chứa các dịch vụ cho nhiều VPC của người tiêu dùng. Việc khách hàng có phạm vi mạng con chồng chéo không còn là vấn đề nữa.
  • Là một nhà cung cấp dịch vụ, bạn có thể mở rộng quy mô dịch vụ của mình cho nhiều phiên bản máy ảo (VM) tuỳ theo yêu cầu mà không cần phải liên hệ với người tiêu dùng để biết thêm địa chỉ IP.

Cải thiện khả năng bảo mật và khả năng tách biệt

  • Là người tiêu dùng dịch vụ, chỉ bạn mới có thể bắt đầu giao tiếp với nhà sản xuất dịch vụ. Khả năng kết nối một chiều này đơn giản hoá đáng kể cấu hình tường lửa nhưng cũng giảm rủi ro từ lưu lượng truy cập định tuyến đến từ nhà sản xuất dịch vụ.
  • Là nhà sản xuất dịch vụ, bạn không cần thay đổi quy tắc tường lửa dựa trên dải mạng con trong VPC của người dùng. Bạn có thể chỉ cần tạo quy tắc tường lửa cho dải địa chỉ IP NAT được định cấu hình cho dịch vụ của mình.

Tăng khả năng mở rộng

  • PSC mang đến thiết kế có khả năng mở rộng cao bằng cách hỗ trợ hàng nghìn Người tiêu dùng, đồng thời cho phép Nhà sản xuất dịch vụ cung cấp các dịch vụ có khả năng mở rộng cao theo nhiều đối tượng thuê hoặc một đối tượng thuê.
  • Là một người sử dụng dịch vụ sử dụng kết nối dịch vụ riêng tư, bạn có thể tạo tài nguyên theo yêu cầu trong VPC của mình. Quy mô của điều này không bị ảnh hưởng bởi số lượng tài nguyên như vậy được tạo trong VPC của nhà sản xuất.

3. Các khái niệm chính dành cho người sử dụng dịch vụ

Bạn có thể sử dụng điểm cuối Kết nối dịch vụ riêng tư để sử dụng các dịch vụ bên ngoài mạng VPC của mình. Người sử dụng dịch vụ tạo các điểm cuối Kết nối dịch vụ riêng tư để kết nối với một dịch vụ mục tiêu.

Điểm cuối

Bạn sử dụng các điểm cuối của Private Service Connect để kết nối với một dịch vụ đích. Điểm cuối có địa chỉ IP nội bộ trong mạng VPC và dựa trên tài nguyên của quy tắc chuyển tiếp.

Bạn gửi lưu lượng truy cập đến điểm cuối và điểm cuối này sẽ chuyển tiếp lưu lượng đó đến các mục tiêu bên ngoài mạng VPC của bạn.

Mục tiêu

Các điểm cuối của Private Service Connect có một đích đến. Đó là dịch vụ mà bạn muốn kết nối:

  • Gói API:
  • Tất cả API: hầu hết API của Google
  • VPC-SC: các API mà VPC Service Controls hỗ trợ
  • Dịch vụ đã xuất bản trong một mạng VPC khác. Tổ chức của bạn hoặc bên thứ ba có thể quản lý dịch vụ này.

Dịch vụ đã phát hành

Để kết nối điểm cuối với dịch vụ của trình tạo dịch vụ, bạn cần có tệp đính kèm dịch vụ cho dịch vụ. URI tệp đính kèm của dịch vụ có định dạng sau: project/SERVICE_PROJECT/PROJECT/REGION/serviceDownloads/SERVICE_NAME

4. Các khái niệm chính dành cho nhà sản xuất dịch vụ

Để cung cấp dịch vụ cho người tiêu dùng, bạn tạo một hoặc nhiều mạng con chuyên dụng để sử dụng cho dịch địa chỉ mạng (NAT) của địa chỉ IP của người tiêu dùng. Sau đó, bạn tạo một tệp đính kèm dịch vụ tham chiếu đến các mạng con đó.

Mạng con của Kết nối dịch vụ riêng tư

Để cung cấp một dịch vụ, trước tiên, trình tạo dịch vụ sẽ tạo một hoặc nhiều mạng con có mục đích là Kết nối dịch vụ riêng tư.

Khi một yêu cầu được gửi từ mạng VPC của người tiêu dùng, địa chỉ IP nguồn của người tiêu dùng sẽ được dịch bằng NAT nguồn (SNAT) thành địa chỉ IP được chọn từ một trong các mạng con của Private Service Connect.

Nếu bạn muốn giữ lại thông tin địa chỉ IP kết nối người tiêu dùng, hãy xem Xem thông tin kết nối người tiêu dùng.

Không thể sử dụng các mạng con này cho các tài nguyên như phiên bản máy ảo hoặc quy tắc chuyển tiếp. Mạng con chỉ được sử dụng để cung cấp địa chỉ IP cho SNAT của kết nối người tiêu dùng đến.

Mạng con Private Service Connect phải chứa ít nhất một địa chỉ IP cho mỗi 63 máy ảo người dùng để mỗi máy ảo người dùng được phân bổ 1.024 bộ dữ liệu nguồn để dịch địa chỉ mạng.

Kích thước tối thiểu cho mạng con Private Service Connect là /24.

Tệp đính kèm dịch vụ

Các nhà sản xuất dịch vụ cung cấp dịch vụ của họ thông qua một tệp đính kèm dịch vụ.

  • Để cung cấp một dịch vụ, trình tạo dịch vụ sẽ tạo một tệp đính kèm dịch vụ tham chiếu đến quy tắc chuyển tiếp trình cân bằng tải của dịch vụ đó.
  • Để truy cập vào một dịch vụ, đối tượng sử dụng dịch vụ sẽ tạo một điểm cuối tham chiếu đến tệp đính kèm dịch vụ.

Lựa chọn ưu tiên về kết nối

Khi tạo một dịch vụ, bạn sẽ chọn cách cung cấp dịch vụ đó. Bạn có hai tùy chọn:

  • Tự động chấp nhận các kết nối cho tất cả dự án – mọi người sử dụng dịch vụ đều có thể định cấu hình điểm cuối và tự động kết nối với dịch vụ.
  • Chấp nhận kết nối của các dự án đã chọn – đối tượng sử dụng dịch vụ định cấu hình điểm cuối để kết nối với dịch vụ và trình tạo dịch vụ sẽ chấp nhận hoặc từ chối yêu cầu kết nối.

5. Môi trường kiểm thử

Mạng người tiêu dùng còn bao gồm địa chỉ IP tĩnh của TCP dùng để tạo yêu cầu đến trình sản xuất dịch vụ, ngoài các tệp đính kèm dịch vụ đích ánh xạ tới tệp đính kèm dịch vụ của nhà sản xuất (dịch vụ đã xuất bản).

Bây giờ, hãy cùng xem mạng lưới nhà sản xuất. Hãy lưu ý rằng mạng lưới của nhà sản xuất không có mối liên kết đến mạng người tiêu dùng. Thay vào đó, mạng của nhà sản xuất chứa một tệp đính kèm dịch vụ (dịch vụ đã xuất bản) mà người tiêu dùng sử dụng cho các dịch vụ. Tệp đính kèm dịch vụ của nhà sản xuất trong phòng thí nghiệm của chúng tôi là Trình cân bằng tải nội bộ lớp 4 (quy tắc chuyển tiếp nhà sản xuất) được ánh xạ tới dịch vụ phụ trợ hỗ trợ ứng dụng TCP.

Mạng con NAT và các quy tắc tường lửa được liên kết cho phép giao tiếp tới ứng dụng của nhà sản xuất.

28b09284a99eb60b.png.

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

Lớp học lập trình này cần có 2 dự án, mặc dù không nhất thiết phải có PSC. Hãy lưu ý các tham chiếu để hỗ trợ một hoặc nhiều dự án.

Một dự án – Cập nhật dự án để hỗ trợ mạng lưới của nhà sản xuất và người tiêu dùng

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]
prodproject=YOUR-PROJECT-NAME
consumerproject=YOUR-PROJECT-NAME
echo $prodproject
echo $consumerproject

Nhiều dự án – Cập nhật dự án để hỗ trợ mạng của nhà sản xuất

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]
prodproject=YOUR-PROJECT-NAME
echo $prodproject

7. Tạo mạng lưới VPC cho Nhà sản xuất

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án có chứa Producer Service (Dịch vụ nhà sản xuất) của bạn

Mạng VPC

Của Cloud Shell

gcloud compute networks create vpc-demo-producer --project=$prodproject --subnet-mode=custom

Tạo mạng con

Của Cloud Shell

gcloud compute networks subnets create vpc-demo-us-west2 --project=$prodproject --range=10.0.2.0/24 --network=vpc-demo-producer --region=us-west2

Tạo thực thể Cloud NAT

Cloud NAT không phải là NAT dùng chung cho PSC. Cloud NAT được dùng một cách rõ ràng cho quyền truy cập Internet để tải các gói ứng dụng xuống.

Tạo Cloud Router

Của Cloud Shell

gcloud compute routers create crnatprod --network vpc-demo-producer --region us-west2

Tạo Cloud NAT

Của Cloud Shell

gcloud compute routers nats create cloudnatprod --router=crnatprod --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west2

8. Tạo thực thể điện toán

Từ Cloud Shell, tạo phiên bản www-01

gcloud compute instances create www-01 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=vpc-demo-us-west2 --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install tcpdump -y
apt-get install apache2 -y
a2ensite default-ssl
apt-get install iperf3 -y
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2
iperf3 -s -p 5050'

Từ Cloud Shell, tạo phiên bản www-02

gcloud compute instances create www-02 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=vpc-demo-us-west2 --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install tcpdump -y
apt-get install apache2 -y
a2ensite default-ssl
apt-get install iperf3 -y
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2
iperf3 -s -p 5050'

9. Tạo nhóm thực thể không được quản lý

Tạo một nhóm thực thể không được quản lý bao gồm www-01 và www-02

Của Cloud Shell

gcloud compute instance-groups unmanaged create vpc-demo-ig-www --zone=us-west2-a

gcloud compute instance-groups unmanaged add-instances vpc-demo-ig-www --zone=us-west2-a --instances=www-01,www-02

gcloud compute health-checks create http hc-http-80 --port=80

10. Tạo các dịch vụ phụ trợ TCP, quy tắc chuyển tiếp và tường lửa

Từ Cloud Shell, tạo dịch vụ phụ trợ

gcloud compute backend-services create vpc-demo-www-be-tcp --load-balancing-scheme=internal --protocol=tcp --region=us-west2 --health-checks=hc-http-80

gcloud compute backend-services add-backend vpc-demo-www-be-tcp --region=us-west2 --instance-group=vpc-demo-ig-www --instance-group-zone=us-west2-a

Tạo quy tắc chuyển tiếp từ Cloud Shell

gcloud compute forwarding-rules create vpc-demo-www-ilb-tcp --region=us-west2 --load-balancing-scheme=internal --network=vpc-demo-producer --subnet=vpc-demo-us-west2 --address=10.0.2.10 --ip-protocol=TCP --ports=all --backend-service=vpc-demo-www-be-tcp --backend-service-region=us-west2

Từ Cloud Shell, tạo một quy tắc tường lửa để bật tính năng kiểm tra tình trạng phụ trợ

gcloud compute firewall-rules create vpc-demo-health-checks --allow tcp:80,tcp:443 --network vpc-demo-producer --source-ranges 130.211.0.0/22,35.191.0.0/16 --enable-logging

Để 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-iap-prod --network vpc-demo-producer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

11. Tạo mạng con NAT TCP

Của Cloud Shell

gcloud compute networks subnets create vpc-demo-us-west2-psc-tcp --network=vpc-demo-producer --region=us-west2 --range=192.168.0.0/24 --purpose=private-service-connect

12. Tạo tệp đính kèm dịch vụ TCP và các quy tắc tường lửa

Từ Cloud Shell, tạo tệp đính kèm dịch vụ TCP

gcloud compute service-attachments create vpc-demo-psc-west2-tcp --region=us-west2 --producer-forwarding-rule=vpc-demo-www-ilb-tcp --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=vpc-demo-us-west2-psc-tcp

Xác thực tệp đính kèm dịch vụ TCP

gcloud compute service-attachments describe vpc-demo-psc-west2-tcp --region us-west2

Từ Cloud Shell, tạo quy tắc tường lửa cho phép mạng con NAT của TCP truy cập vào phần phụ trợ ILB

gcloud compute --project=$prodproject firewall-rules create vpc-demo-allowpsc-tcp --direction=INGRESS --priority=1000 --network=vpc-demo-producer --action=ALLOW --rules=all --source-ranges=192.168.0.0/24 --enable-logging

13. Tạo mạng VPC cho người tiêu dùng

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án chứa Dịch vụ người tiêu dùng

Trong phần sau, VPC của người tiêu dùng được định cấu hình trong một dự án riêng. Hoạt động giao tiếp giữa mạng người tiêu dùng và nhà sản xuất được thực hiện thông qua tệp đính kèm dịch vụ được xác định trong mạng người tiêu dùng.

Mạng VPC

Lớp học lập trình này cần có 2 dự án, mặc dù không nhất thiết phải có PSC. Hãy lưu ý các tham chiếu để hỗ trợ một hoặc nhiều dự án.

Một dự án – Cập nhật dự án để hỗ trợ mạng lưới của nhà sản xuất và người tiêu dùng

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]
consumerproject=YOUR-PROJECT-NAME
prodproject=YOUR-PROJECT-NAME
echo $prodproject
echo $consumerproject

Nhiều dự án – Cập nhật dự án để hỗ trợ mạng cho người tiêu dùng

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]
consumerproject=YOUR-PROJECT-NAME
echo $consumerproject

Của Cloud Shell

gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom

Tạo mạng con cho PSC

Của Cloud Shell

gcloud compute networks subnets create consumer-subnet --project=$consumerproject  --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-west2

Tạo địa chỉ IP tĩnh cho các ứng dụng TCP

Của Cloud Shell

gcloud compute addresses create vpc-consumer-psc-tcp --region=us-west2 --subnet=consumer-subnet --addresses 10.0.60.100

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-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

Mặc dù không bắt buộc đối với PSC, hãy tạo quy tắc tường lửa đầu ra để giám sát lưu lượng truy cập PSC của người tiêu dùng đến tệp đính kèm dịch vụ của nhà sản xuất

gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging

Tạo thực thể Cloud NAT

Cloud NAT không phải là NAT dùng chung cho PSC. Cloud NAT được sử dụng một cách rõ ràng cho quyền truy cập Internet để tải các gói ứng dụng xuống

Tạo Cloud Router

Của Cloud Shell

gcloud compute routers create crnatconsumer --network vpc-demo-consumer --region us-west2

Tạo Cloud NAT

Của Cloud Shell

gcloud compute routers nats create cloudnatconsumer --router=crnatconsumer --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west2

14. Tạo máy ảo thực thể kiểm thử

Của Cloud Shell

gcloud compute instances create test-instance-1 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=consumer-subnet --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install iperf3 -y
apt-get install tcpdump -y'

15. Tạo tệp đính kèm dịch vụ TCP

Của Cloud Shell

gcloud compute forwarding-rules create vpc-consumer-psc-fr-tcp --region=us-west2 --network=vpc-demo-consumer --address=vpc-consumer-psc-tcp --target-service-attachment=projects/$prodproject/regions/us-west2/serviceAttachments/vpc-demo-psc-west2-tcp

16. Xác thực

Chúng tôi sẽ sử dụng CURL, TCPDUMP & nhật ký tường lửa để xác thực hoạt động giao tiếp của người tiêu dùng và nhà sản xuất.

Trong dự án của Người tiêu dùng, địa chỉ IP tĩnh được dùng để bắt nguồn hoạt động giao tiếp với Nhà sản xuất. Việc liên kết địa chỉ IP tĩnh với quy tắc chuyển tiếp người tiêu dùng sẽ được xác thực bằng cách thực hiện cú pháp sau.

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án chứa Dịch vụ người tiêu dùng

Từ Cloud shell của VPC của người tiêu dùng, hãy xác định quy tắc chuyển tiếp TCP và IP tĩnh

gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region us-west2

Kết quả:

IPAddress: 10.0.60.100
IPProtocol: TCP
creationTimestamp: '2021-07-14T13:34:23.359-07:00'
id: '2768158450402915488'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: vpc-consumer-psc-fr-tcp
<snip>

17. Xác thực TCP

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án có chứa Producer Service (Dịch vụ nhà sản xuất) của bạn

Trong Dự án dành cho nhà sản xuất,hãy xác định "www-01" &amp; "www-02" và khởi chạy một phiên SSH cho mỗi phiên bản.

6d0bb8c5cb115876.pngS

Từ "www-01" thực hiện TCPDUMP để giám sát NAT

sudo tcpdump -i any net 192.168.0.0/16 -n

Từ "www-02" thực hiện TCPDUMP để giám sát NAT

sudo tcpdump -i any net 192.168.0.0/16 -n

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án chứa Dịch vụ người tiêu dùng

Trong Consumer Project (Dự án người tiêu dùng), hãy xác định "test-instance-1" và khởi động hai phiên hoạt động.

Từ "test-instance-1" phiên hoạt động 1 thực hiện TCPDUMP để theo dõi người tiêu dùng

sudo tcpdump -i any host 10.0.60.100 -n

Từ "test-instance-1" phiên hai thực hiện xác thực TCP

curl -v 10.0.60.100 

18. Quan sát – Người tiêu dùng

Từ "test-instance-1" CURL trong phiên 2 thành công và mang lại 200 OK.

@test-instance-1:~$ curl -v 10.0.60.100 
* Rebuilt URL to: 10.0.60.100/
*   Trying 10.0.60.100...
* TCP_NODELAY set
* Connected to 10.0.60.100 (10.0.60.100) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.0.60.100
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Wed, 14 Jul 2021 21:20:22 GMT
< Server: Apache/2.4.25 (Debian)
< Last-Modified: Wed, 14 Jul 2021 20:09:09 GMT
< ETag: "1d-5c71aed5edabd"
< Accept-Ranges: bytes
< Content-Length: 29
< Content-Type: text/html
< 
Page on www-01 in us-west2-a
* Curl_http_done: called premature == 0
* Connection #0 to host 10.0.60.100 left intact

Từ "test-instance-1" TCPDUMP xác định Phiên bản máy ảo → Giao tiếp và phản hồi IP tĩnh của TCP

21:20:22.572052 IP 10.0.60.2.59432 > 10.0.60.100.80: Flags [P.], seq 1:76, ack 1, win 222, options [nop,nop,TS val 634554 ecr 998739], length 75: HTTP: GET / HTTP/1.1

21:20:22.572688 IP 10.0.60.100.80 > 10.0.60.2.59432: Flags [P.], seq 1:257, ack 76, win 220, options [nop,nop,TS val 998739 ecr 634554], length 256: HTTP: HTTP/1.1 200 OK

Ghi nhật ký tường lửa

Sử dụng Trình khám phá nhật ký xác thực quy tắc tường lửa "vpc-consumner-psc" đang ghi lại luồng dữ liệu giữa thực thể máy ảo và IP tĩnh

  1. Xác định nhật ký hoạt động trên Cloud Console → Trình khám phá nhật ký
  2. Trong trường Truy vấn, hãy cập nhật mục nhập bên dưới với yourconsumerproject rồi chọn "Run Query" (Chạy truy vấn)

logName:(projects/yourconsumerproject/logs/compute.googleapis.com%2Ffirewall) VÀ jsonPayload.rules_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")

  1. Kết quả truy vấn cung cấp những thông tin sau theo mỗi ảnh chụp màn hình được cung cấp

b573c878a8d6d01f.png

  1. Mở rộng nhật ký và xác định kết quả được cung cấp bên dưới. Lưu ý về dest_ip: 10.0.60.100 là IP StatIC TCP và src_ip: 10.0.60.2 là địa chỉ IP của phiên bản VM

1b4f46b3e61f6f12.pngS.

19. Quan sát – Nhà sản xuất

Từ phiên bản phụ trợ "www-01" hoặc "www-02" giao tiếp sau đây giữa mạng con NAT của TCP và TCP ILB được quan sát.

21:20:22.572186 IP 192.168.0.2.1024 > 10.0.2.10.80: Flags [P.], seq 1:76, ack 1, win 222, options [nop,nop,TS val 634554 ecr 998739], length 75: HTTP: GET / HTTP/1.1

21:20:22.572679 IP 10.0.2.10.80 > 192.168.0.2.1024: Flags [P.], seq 1:257, ack 76, win 220, options [nop,nop,TS val 998739 ecr 634554], length 256: HTTP: HTTP/1.1 200 OK

20. Ghi nhật ký tường lửa

Sử dụng Trình khám phá nhật ký xác thực quy tắc tường lửa "vpc-demo-allowpsc-tcp" đang chụp NAT TCP & luồng ILB của TCP bằng cách thực hiện các bước sau:

  1. Xác định nhật ký hoạt động trên Cloud Console → Trình khám phá nhật ký
  2. Trong trường Truy vấn, hãy cập nhật mục nhập bên dưới bằng yourprodproject rồi chọn "Run Query" (Chạy truy vấn)

logName:(projects/yourprodproject/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rules_details.reference:("network:vpc-demo-producer/firewall:vpc-demo-allowpsc-tcp")

  1. Kết quả truy vấn cung cấp những thông tin sau theo mỗi ảnh chụp màn hình được cung cấp

8ce6b0d17d76ad6d.png.

  1. Mở rộng nhật ký và xác định kết quả được cung cấp bên dưới. Lưu ý về TCP ILB dest_ip: 10.0.2.10 và NAT TCP source_range (192.168.0.0/24) & src_ip tương ứng: 192.168.0.2.

e157a7af8cb667e.png

21. Bật giao thức proxy

Theo mặc định, Private Service Connect dịch địa chỉ IP nguồn của người dùng thành một địa chỉ thuộc một trong các mạng con của Private Service Connect trong mạng VPC của nhà sản xuất dịch vụ. Thay vào đó, nếu muốn xem địa chỉ IP nguồn ban đầu của người tiêu dùng, bạn có thể bật giao thức PROXY. Nếu bật giao thức PROXY, bạn có thể lấy địa chỉ IP nguồn và mã kết nối PSC của người tiêu dùng từ tiêu đề giao thức PROXY

e9d1c49971b10ed0.png

Tài liệu tham khảo

Xoá Dịch vụ đã phát hành của nhà sản xuất

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án có chứa Producer Service (Dịch vụ nhà sản xuất) của bạn

Từ Cloud shell, hãy xoá các tệp đính kèm của dịch vụ TCP

gcloud compute service-attachments delete vpc-demo-psc-west2-tcp --region=us-west2 --quiet

Tệp đính kèm của dịch vụ xác thực shell trên đám mây sẽ bị xoá (Đã liệt kê 0 mục)

gcloud compute service-attachments list

Tạo tệp đính kèm dịch vụ TCP khi bật giao thức proxy

gcloud compute service-attachments create vpc-demo-psc-west2-tcp --region=us-west2 \
--producer-forwarding-rule=vpc-demo-www-ilb-tcp \
--connection-preference=ACCEPT_AUTOMATIC \
--nat-subnets=vpc-demo-us-west2-psc-tcp \
--enable-proxy-protocol

Từ các tệp đính kèm của dịch vụ xác thực vỏ đám mây được tạo khi giao thức proxy đã bật (true)

gcloud compute service-attachments describe vpc-demo-psc-west2-tcp --region=us-west2 | grep -i enableProxyProtocol:

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án chứa Dịch vụ người tiêu dùng

Từ vỏ đám mây, xoá các quy tắc chuyển tiếp TCP

gcloud compute forwarding-rules delete vpc-consumer-psc-fr-tcp --region=us-west2 --quiet

Tạo lại quy tắc chuyển tiếp TCP để liên kết với tệp đính kèm dịch vụ (nhà sản xuất) đã tạo trước đó

Từ vỏ đám mây, tạo quy tắc chuyển tiếp TCP

gcloud compute forwarding-rules create vpc-consumer-psc-fr-tcp \
--region=us-west2 --network=vpc-demo-consumer \
--address=vpc-consumer-psc-tcp \
--target-service-attachment=projects/$prodproject/regions/us-west2/serviceAttachments/vpc-demo-psc-west2-tcp

Xác thực giao thức proxy

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án có chứa Producer Service (Dịch vụ nhà sản xuất) của bạn

Trong Dự án dành cho nhà sản xuất,hãy xác định "www-01" &amp; "www-02" và khởi chạy một phiên cho mỗi phiên bản.

6d0bb8c5cb115876.pngS

Từ "www-01" thực hiện TCPDUMP để giám sát NAT

sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16

Từ "www-02" thực hiện TCPDUMP để giám sát NAT

sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án chứa Dịch vụ người tiêu dùng

Trong Consumer Project (Dự án người tiêu dùng), hãy xác định "test-instance-1" và khởi chạy một phiên hoạt động

Từ "test-instance-1" phiên thực hiện động tác cuộn người

curl 10.0.60.100 

Quan sát – Người tiêu dùng

Lưu ý rằng nếu Giao thức PROXY phiên bản 2 được bật nhưng ứng dụng không được định cấu hình để hỗ trợ Giao thức này, thông báo lỗi sẽ hiển thị nếu kết nối từ máy khách theo ví dụ dưới đây. Cần có các bản cập nhật Apache để chứa tiêu đề proxy v2 bổ sung và không có trong lớp học lập trình này.

Từ "test-instance-1" CURL của phiên hoạt động sẽ tạo ra 400 yêu cầu Không hợp lệ dự kiến mặc dù truy vấn phụ trợ thành công.

@test-instance-1:~$ curl 10.0.60.100 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.25 (Debian) Server at www-02.c.deepakmichaelprod.internal Port 80</address>

Quan sát – Người tiêu dùng

Từ phiên bản phụ trợ "www-01" hoặc "www-02" hoạt động giao tiếp sau đây giữa mạng con NAT của TCP và TCP ILB được quan sát bằng giao thức proxy được nhúng trong quá trình chụp.

Trong hầu hết các trường hợp, gói thứ 3 trong tcpdump chứa các phần tử thông tin giao thức proxy (IE) có liên quan. (Không bắt buộc) Xác định gói có 39 byte chứa giao thức proxy IE.

192.168.0.3.1025 > 10.0.2.10.80: Flags [P.], cksum 0xb617 (correct), seq 2729454396:2729454435, ack 1311105819, win 28160, length 39: HTTP
        0x0000:  4500 004f 0000 4000 4006 6df4 c0a8 0003  E..O..@.@.m.....
        0x0010:  0a00 020a 0401 0050 a2b0 2b3c 4e25 e31b  .......P..+<N%..
        0x0020:  5018 6e00 b617 0000 0d0a 0d0a 000d 0a51  P.n............Q
        0x0030:  5549 540a 2111 0017 0a00 3c02 0a00 3c64  UIT.!.....<...<d
        0x0040:  8138 0050 e000 0800 9b34 d70a 003c 64    .8.P.....4...<d

Xác định chữ ký giao thức PROXY: 0d0a0d0a000d0a515549540a trong gói bắt

Bằng cách xác định Chữ ký giao thức PROXY, bạn có thể chia nhỏ và giải mã các trường như dưới đây:

Chữ ký giao thức PROXY: 0d0a0d0a000d0a515549540a

Các trường giao thức PROXY khác: 21 11 00 17

IP và cổng: 0a003c02 0a003c64 8138 0050

Loại TLV: e0

Độ dài TLV: 00 08

ID kết nối psc: 009b34d70a003c64

Hệ lục phân

Hệ thập phân / IP

Chữ ký giao thức PROXY

0d0a0d0a000d0a515549540a

Phiên bản, Giao thức, Thời lượng

21 11 0017

IP của Src

0a003c02

10.0.60.2

IP trước

0a003c64

10.0.60.100

Cổng Src

8138

33080

Cổng Dst

0050

80

Loại TLV (PP2_TYPE_GCP)

e0

Độ dài TLV

0008

pscConnectionId

00004dde290a003c64

43686719580552292

Bạn cũng có thể xác thực pscConnectionId bằng cách mô tả quy tắc chuyển tiếp người tiêu dùng như bên dưới và đảm bảo quy tắc đó khớp với:

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án chứa Dịch vụ người tiêu dùng

Từ Cloud shell mô tả các quy tắc chuyển tiếp TCP

gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region=us-west2

Đầu ra mô tả pscConnectionID

$ gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region=us-west2
IPAddress: 10.0.60.100
IPProtocol: TCP
creationTimestamp: '2021-07-14T16:50:31.766-07:00'
id: '4443494505307621032'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: vpc-consumer-psc-fr-tcp
network: https://www.googleapis.com/compute/v1/projects/deepakmichaeldev/global/networks/vpc-demo-consumer
networkTier: PREMIUM
pscConnectionId: '43686719580552292'
pscConnectionStatus: ACCEPTED

22. Chính sách kết nối

Bạn có thể chuyển đổi giữa chế độ chấp nhận dự án tự động và rõ ràng cho một dịch vụ đã xuất bản.

Việc thay đổi từ trạng thái chấp nhận tự động thành chấp nhận rõ ràng không ảnh hưởng đến những điểm cuối dành cho người dùng thông thường đã kết nối với dịch vụ trước khi có thay đổi này. Các thiết bị đầu cuối hiện có của người dùng có thể kết nối với dịch vụ đã phát hành cho đến khi tệp đính kèm dịch vụ bị xoá. Các thiết bị đầu cuối mới của người dùng phải được chấp nhận thì mới có thể kết nối với dịch vụ. Hãy xem phần Quản lý yêu cầu truy cập vào dịch vụ đã xuất bản để biết thêm thông tin.

Trong phần này của phòng thí nghiệm, bạn sẽ sửa đổi chính sách kết nối của nhà sản xuất để phê duyệt một cách rõ ràng tệp đính kèm dịch vụ của người tiêu dùng.

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án có chứa Producer Service (Dịch vụ nhà sản xuất) của bạn

Trong Cloud shell của dịch vụ của nhà sản xuất, hãy cập nhật chính sách lựa chọn ưu tiên kết nối từ trạng thái tự động chấp nhận thành chấp nhận theo cách thủ công

gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --connection-preference ACCEPT_MANUAL

Xác định trạng thái của thiết bị đầu cuối bằng cách chuyển đến phần Dịch vụ mạng → Kết nối dịch vụ riêng tư → Dịch vụ đã xuất bản → vpc-demo-psc-west2-tcp → Dự án đã kết nối

e1d90d1563e10731.png

Lưu ý: Dự án người tiêu dùng đã chuyển thành "Đang chờ xử lý" trong phần Dự án đã kết nối.

Chấp nhận dự án người tiêu dùng bằng cách thực thi nội dung sau trên Cloud shell, nhớ cập nhật bằng tên dự án thích hợp

gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --consumer-accept-list $consumerproject=20

Xác định trạng thái của thiết bị đầu cuối bằng cách chuyển đến phần Dịch vụ mạng → Kết nối dịch vụ riêng tư → Dịch vụ đã xuất bản → vpc-demo-psc-west2-tcp → Dự án đã kết nối

35cba9ac640594a2.pngS

Thông báo, Dự án người tiêu dùng đã thay đổi thành "Đã chấp nhận" trong phần Dự án đã kết nối.

23. Các bước dọn dẹp

Các bước dọn dẹp mạng Producer

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án có chứa Producer Service (Dịch vụ nhà sản xuất) của bạn

Từ một shell đám mây trong thiết bị đầu cuối của dự án Producer, hãy xóa các thành phần trong phòng thí nghiệm

gcloud compute routers nats delete cloudnatprod --router=crnatprod --region=us-west2 --quiet

gcloud compute routers delete crnatprod --region=us-west2 --quiet

gcloud compute instances delete www-01 --zone=us-west2-a --quiet

gcloud compute instances delete www-02 --zone=us-west2-a --quiet

gcloud compute service-attachments delete vpc-demo-psc-west2-tcp --region=us-west2 --quiet

gcloud compute forwarding-rules delete vpc-demo-www-ilb-tcp --region=us-west2 --quiet

gcloud compute backend-services delete vpc-demo-www-be-tcp --region=us-west2 --quiet

gcloud compute instance-groups unmanaged delete vpc-demo-ig-www --zone=us-west2-a --quiet

gcloud compute health-checks delete hc-http-80 --quiet

gcloud compute firewall-rules delete vpc-demo-allowpsc-tcp --quiet

gcloud compute firewall-rules delete vpc-demo-health-checks --quiet

gcloud compute firewall-rules delete psclab-iap-prod --quiet

gcloud compute networks subnets delete vpc-demo-us-west2 --region=us-west2 --quiet

gcloud compute networks subnets delete vpc-demo-us-west2-psc-tcp --region=us-west2 --quiet

gcloud compute networks delete vpc-demo-producer --quiet

Lưu ý: Trong phần sau, hãy thực thi cập nhật cấu hình trong dự án chứa Dịch vụ người tiêu dùng

Các bước dọn dẹp mạng người tiêu dùng

Từ một shell đám mây trong thiết bị đầu cuối của dự án Producer, hãy xóa các thành phần trong phòng thí nghiệm

gcloud compute routers nats delete cloudnatconsumer --router=crnatconsumer --region=us-west2 --quiet

gcloud compute routers delete crnatconsumer --region=us-west2 --quiet

gcloud compute instances delete test-instance-1 --zone=us-west2-a --quiet

gcloud compute forwarding-rules delete vpc-consumer-psc-fr-tcp --region=us-west2 --quiet

gcloud compute addresses delete vpc-consumer-psc-tcp --region=us-west2 --quiet

gcloud compute firewall-rules delete psclab-iap-consumer --quiet

gcloud compute networks subnets delete consumer-subnet --region=us-west2 --quiet

gcloud compute firewall-rules delete vpc-consumer-psc --quiet

gcloud compute networks delete vpc-demo-consumer --quiet

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

  • Lợi ích của việc kết nối dịch vụ riêng tư
  • Các khái niệm chính dành cho người sử dụng dịch vụ
  • Các khái niệm chính dành cho nhà sản xuất dịch vụ
  • Tạo môi trường thực thể sản xuất
  • Hiển thị dịch vụ (môi trường nhà sản xuất) thông qua một tệp đính kèm dịch vụ
  • Tạo môi trường dành cho người tiêu dùng
  • Tạo quy tắc chuyển tiếp trong mạng người tiêu dùng
  • Xác thực quyền truy cập của người dùng TCP
  • Bật & xác thực giao thức proxy
  • Bật chế độ kiểm soát quyền truy cập vào chính sách