1. บทนำ
การเข้าถึง Google แบบส่วนตัวสำหรับโฮสต์ภายในองค์กรช่วยให้ระบบภายในองค์กรเชื่อมต่อกับ Google APIs และบริการด้วยการกำหนดเส้นทางการรับส่งข้อมูลผ่านอุโมงค์ Cloud VPN หรือไฟล์แนบ VLAN สำหรับ Cloud Interconnect การเข้าถึง Google แบบส่วนตัวสำหรับโฮสต์ภายในองค์กรเป็นอีกทางเลือกหนึ่งแทนการเชื่อมต่อกับ Google APIs และบริการผ่านอินเทอร์เน็ต
การเข้าถึง Google แบบส่วนตัวสำหรับโฮสต์ภายในองค์กรกำหนดให้คุณต้องส่งคำขอสำหรับ Google APIs ไปยังที่อยู่ IP เสมือน (VIP) โดยตรง สำหรับ IPv6 จะใช้ที่อยู่ IP ต่อไปนี้
- สำหรับ private.googleapis.com: 2600:2d00:0002:2000::/64
- สำหรับ restricted.googleapis.com: 2600:2d00:0002:1000::/64
VIP ที่คุณเลือกจะเป็นตัวกำหนดบริการที่คุณสามารถเข้าถึงได้ ใน Codelab นี้ เราจะใช้ private.googleapis.com ดูข้อมูลเพิ่มเติมได้ที่ตัวเลือกโดเมน
Codelab นี้จะอธิบายวิธีเปิดใช้การเข้าถึง Google แบบส่วนตัวสำหรับโฮสต์ภายในองค์กรที่ใช้ที่อยู่ IPv6 คุณจะตั้งค่าเครือข่าย VPC ชื่อ on-premises-vpc
เพื่อแสดงสภาพแวดล้อมภายในองค์กร โดยจะไม่มี VM ภายในองค์กรสำหรับการติดตั้งใช้งาน แต่จะใช้เครือข่ายแบบผสมไปยังศูนย์ข้อมูลภายในองค์กรหรือผู้ให้บริการคลาวด์แทน
สิ่งที่คุณจะสร้าง
ใน Codelab นี้ คุณจะสร้างเครือข่าย IPv6 แบบต้นทางถึงปลายทาง ซึ่งสาธิตการเข้าถึง API พื้นที่เก็บข้อมูลระบบคลาวด์ภายในองค์กรโดยใช้ CNAME *.googleapis.com ไปยังที่อยู่ IPv6 ส่วนตัว 2600:2d00:0002:2000::/64
ดังที่แสดงในรูปที่ 1
รูปที่ 1
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างเครือข่าย VPC แบบสแต็กคู่
- วิธีสร้าง VPN ความพร้อมใช้งานสูงด้วย IPv6
- วิธีอัปเดต DNS เพื่อเข้าถึงการเข้าถึง Google แบบส่วนตัว
- วิธีสร้างและตรวจสอบการเชื่อมต่อการเข้าถึง Google แบบส่วนตัว
สิ่งที่ต้องมี
- โปรเจ็กต์ Google Cloud
2. ก่อนเริ่มต้น
อัปเดตโปรเจ็กต์เพื่อรองรับ Codelab
Codelab นี้ใช้ $variables เพื่อช่วยในการติดตั้งใช้งานการกำหนดค่า gcloud ใน Cloud Shell
ภายใน Cloud Shell ให้ดำเนินการต่อไปนี้
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
3. สร้าง VPN สำหรับขนส่งสาธารณะ
สร้างเครือข่าย VPC การขนส่งสาธารณะ
ภายใน Cloud Shell ให้ดำเนินการต่อไปนี้
gcloud compute networks create transit-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
4. สร้างเครือข่ายภายในองค์กร
เครือข่าย VPC นี้แสดงสภาพแวดล้อมภายในองค์กร
สร้างเครือข่าย VPC ภายในองค์กร
ภายใน Cloud Shell ให้ดำเนินการต่อไปนี้
gcloud compute networks create on-premises-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
สร้างเครือข่ายย่อย
ภายใน Cloud Shell ให้ดำเนินการต่อไปนี้
gcloud compute networks subnets create on-premises-subnet1-us-central1 --project=$projectname --range=172.16.10.0/27 --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL --network=on-premises-vpc --region=us-central1
5. สร้าง VPN ความพร้อมใช้งานสูงสำหรับ VPN สำหรับการขนส่งสาธารณะและ VPN ภายในองค์กร
สร้าง GW VPN ความพร้อมใช้งานสูงสำหรับการรับส่งข้อมูล-vpc
เมื่อสร้างเกตเวย์แต่ละรายการแล้ว ระบบจะจัดสรรที่อยู่ IPv4 ภายนอก 2 รายการโดยอัตโนมัติ 1 รายการสำหรับแต่ละอินเทอร์เฟซเกตเวย์ จดที่อยู่ IP เหล่านี้ไว้เพื่อใช้ในภายหลังในขั้นตอนการกำหนดค่า
ใน Cloud Shell ให้สร้าง GW HA VPN ที่มีสแต็กประเภท IPV4_IPV6
gcloud compute vpn-gateways create transit-vpc-vpngw \
--network=transit-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
สร้าง GW VPN ความพร้อมใช้งานสูงสำหรับ VPN ภายในองค์กร
ใน Cloud Shell ให้สร้าง GW HA VPN ที่มีสแต็กประเภท IPV4_IPV6
gcloud compute vpn-gateways create on-premises-vpc-vpngw \
--network=on-premises-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
ตรวจสอบการสร้าง HA VPN GW
ในคอนโซล ให้ไปที่การเชื่อมต่อแบบผสม → VPN → เกตเวย์ VPN ของ CLOUD
สร้าง Cloud Router สำหรับ transit-vpc
ใน Cloud Shell ให้สร้าง Cloud Router ใน us-central1
gcloud compute routers create transit-vpc-cr-us-central1 \
--region=us-central1 \
--network=transit-vpc\
--asn=65001
สร้างเราเตอร์ระบบคลาวด์สำหรับ VPN ภายในองค์กร
ใน Cloud Shell ให้สร้าง Cloud Router ใน us-central1
gcloud compute routers create on-premises-vpc-cr-us-central1 \
--region=us-central1 \
--network=on-premises-vpc \
--asn=65002
สร้างอุโมงค์ข้อมูล VPN สำหรับแผนการเดินทาง-vpc
คุณจะต้องสร้างอุโมงค์ข้อมูล VPN 2 รายการบนเกตเวย์ HA VPN แต่ละรายการ
สร้างอุโมงค์ข้อมูล VPN0
สร้าง Tunnel0 ใน Cloud Shell:
gcloud compute vpn-tunnels create transit-vpc-tunnel0 \
--peer-gcp-gateway on-premises-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router transit-vpc-cr-us-central1 \
--vpn-gateway transit-vpc-vpngw \
--interface 0
สร้างอุโมงค์ข้อมูล VPN 1
สร้าง Tunnel1 ใน Cloud Shell:
gcloud compute vpn-tunnels create transit-vpc-tunnel1 \
--peer-gcp-gateway on-premises-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router transit-vpc-cr-us-central1 \
--vpn-gateway transit-vpc-vpngw \
--interface 1
สร้างอุโมงค์ข้อมูล VPN สำหรับ VPN ภายในองค์กร
คุณจะต้องสร้างอุโมงค์ข้อมูล VPN 2 รายการบนเกตเวย์ HA VPN แต่ละรายการ
สร้างอุโมงค์ข้อมูล VPN0
สร้าง Tunnel0 ใน Cloud Shell:
gcloud compute vpn-tunnels create on-premises-tunnel0 \
--peer-gcp-gateway transit-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-premises-vpc-cr-us-central1 \
--vpn-gateway on-premises-vpc-vpngw \
--interface 0
สร้างอุโมงค์ข้อมูล VPN 1
สร้าง Tunnel1 ใน Cloud Shell:
gcloud compute vpn-tunnels create on-premises-tunnel1 \
--peer-gcp-gateway transit-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-premises-vpc-cr-us-central1 \
--vpn-gateway on-premises-vpc-vpngw \
--interface 1
ตรวจสอบการสร้างอุโมงค์ข้อมูล VPN
ในคอนโซล ให้ไปที่การเชื่อมต่อแบบไฮบริด → VPN → CLOUD VPN TUNNELS
สร้างเซสชัน BGP
ในส่วนนี้ คุณจะได้กำหนดค่าอินเทอร์เฟซ Cloud Router และเพียร์ BGP
เมื่อสร้างอุโมงค์ข้อมูล VPN ที่อนุญาตการรับส่งข้อมูลแบบ IPv6 ให้ระบุ --enable-ipv6
เมื่อเรียกใช้คำสั่ง add-bgp-peer
สร้างอินเทอร์เฟซ BGP และการเพียร์สำหรับ transit-vpc
สร้างอินเทอร์เฟซ BGP ใน Cloud Shell ดังนี้
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
สร้างเพียร์ BGP ใน Cloud Shell ดังนี้
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
สร้างอินเทอร์เฟซ BGP ใน Cloud Shell ดังนี้
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
สร้างเพียร์ BGP ใน Cloud Shell ดังนี้
gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
--peer-name bgp-on-premises-tunnel2 \
--interface if-tunnel2-to-onpremise \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12
สร้างอินเทอร์เฟซ BGP และการเพียร์สำหรับ VPN ภายในองค์กร
สร้างอินเทอร์เฟซ BGP ใน Cloud Shell ดังนี้
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
สร้างเพียร์ BGP ใน Cloud Shell ดังนี้
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
สร้างอินเทอร์เฟซ BGP ใน Cloud Shell ดังนี้
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
สร้างเพียร์ BGP ใน Cloud Shell ดังนี้
gcloud compute routers add-bgp-peer on-premises-vpc-cr-us-central1\
--peer-name bgp-transit-vpc-tunnel1\
--interface if-tunnel2-to-hub-vpc \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11
ไปที่การเชื่อมต่อแบบผสม → VPN เพื่อดูรายละเอียดอุโมงค์ข้อมูล VPN
ตรวจสอบว่า traffic-vpc กำลังเรียนรู้เส้นทาง IPv4 และ IPv6 ผ่าน HA VPN
เนื่องจากมีการสร้างอุโมงค์ข้อมูล VPN แบบ HA และเซสชัน BGP ระบบจึงเรียนรู้เส้นทางจาก VM ภายในองค์กรจาก VPC ขนส่งสาธารณะ ไปที่เครือข่าย VPC → เครือข่าย VPC → transit-vpc → ROUTES โดยใช้คอนโซล
สังเกตเส้นทางแบบไดนามิกของ IPv4 และ IPv6 ที่บันทึกไว้ตามที่แสดงไว้ด้านล่าง
ตรวจสอบว่า VPN ภายในองค์กรไม่ได้เรียนรู้เส้นทางผ่าน VPN ความพร้อมใช้งานสูง
Transit-vpc ไม่มีซับเน็ต ดังนั้น Cloud Router จะไม่โฆษณาซับเน็ตไปยัง VM ภายในองค์กร ใช้คอนโซลเพื่อไปที่เครือข่าย VPC → เครือข่าย VPC → ภายในองค์กร-vpc → ROUTES
6. โฆษณา IPv6 private.googleapis.com
หากต้องการเข้าถึงการเข้าถึง Google แบบส่วนตัวจากภายในองค์กร คุณจะต้องสร้างโฆษณาเส้นทางที่กำหนดเองจาก VPC ขนส่งสาธารณะ ระบบจะโฆษณาที่อยู่ IPv6 2600:2d00:0002:2000::
ไปยังสภาพแวดล้อมภายในองค์กรและภาระงานจะใช้โดยภาระงานเพื่อเข้าถึง Google API เช่น Cloud Storage, Cloud BigQuery และ Cloud Bigtable หลังจากอัปเดต DNS ในเครื่องแล้ว
ใน Codelab นี้ คุณจะเปิดใช้การเข้าถึง API สำหรับ API และบริการส่วนใหญ่ของ Google ได้ ไม่ว่าการควบคุมบริการ VPC จะรองรับ API เหล่านี้หรือไม่ก็ตาม
จากคอนโซล ให้ไปที่การเชื่อมต่อแบบผสม → เราเตอร์ระบบคลาวด์ →transit-vpc-cr-us-central1 จากนั้นเลือกแก้ไข
ในส่วนเส้นทางที่โฆษณา ให้เลือกตัวเลือกสร้างเส้นทางที่กำหนดเอง อัปเดตช่องตามตัวอย่างด้านล่าง เลือกเสร็จสิ้น แล้วคลิกบันทึก
ตรวจสอบว่า VPN ภายในองค์กรกำลังเรียนรู้เส้นทาง IPv6
เมื่อมีการโฆษณาใน IPv6 private.googleapis.com VIP จาก transit-vpc ระบบภายในองค์กรก็จะเรียนรู้เส้นทางไดนามิกของ IPv6 สำหรับ VIP ไปที่เครือข่าย VPC → เครือข่าย VPC → ภายในองค์กร-vpc → ROUTES โดยใช้คอนโซล
สังเกตเส้นทาง IPv6 ที่โฆษณาจาก transit-vpc:
7. สร้างการสื่อสารกับ Google APIs โดยใช้การเข้าถึง Google แบบส่วนตัว
ในส่วนต่อไปนี้ เราจะเข้าถึงและตรวจสอบการเชื่อมต่อกับ Cloud Storage โดยใช้ VIP ของ IPv6 private.googleapis.com ในการดำเนินการดังกล่าว เราต้องดำเนินการต่อไปนี้ใน VPC ภายในองค์กร
- สร้างกฎไฟร์วอลล์ขาเข้าเพื่ออนุญาตให้เข้าถึง Identity Aware Proxy (IAP) สำหรับการเข้าถึง SSH
- สร้าง Cloud Router และ Cloud NAT เพื่อดาวน์โหลด tcpdump และ dnsutils
- สร้างโซน Cloud DNS ส่วนตัวสำหรับ googleapis.com
- สร้างที่เก็บข้อมูล Cloud Storage
สร้างกฎไฟร์วอลล์ IAP
หากต้องการอนุญาตให้ IAP เชื่อมต่อกับอินสแตนซ์ VM ให้สร้างกฎของไฟร์วอลล์ที่มีลักษณะดังนี้
- ใช้กับอินสแตนซ์ VM ทั้งหมดที่คุณต้องการให้เข้าถึงได้โดยใช้ IAP
- อนุญาตการรับส่งข้อมูลขาเข้าจากช่วง IP 35.235.240.0/20 ช่วงนี้ประกอบด้วยที่อยู่ IP ทั้งหมดที่ IAP ใช้สำหรับการส่งต่อ TCP
สร้างกฎไฟร์วอลล์ IAP ใน Cloud Shell
gcloud compute firewall-rules create ssh-iap-on-premises-vpc \
--network on-premises-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
การกำหนดค่า Cloud Router และ NAT
มีการใช้ Cloud NAT ใน Codelab สำหรับการติดตั้งแพ็กเกจซอฟต์แวร์เนื่องจากอินสแตนซ์ VM ไม่มีที่อยู่ IP ภายนอก
สร้าง Cloud Router ใน Cloud Shell
gcloud compute routers create on-premises-cr-us-central1-nat --network on-premises-vpc --region us-central1
สร้างเกตเวย์ NAT ภายใน Cloud Shell
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
สร้างอินสแตนซ์ทดสอบ ภายในองค์กร-testbox
สร้างอินสแตนซ์ทดสอบที่จะใช้ในการทดสอบและตรวจสอบการเชื่อมต่อกับ IPv6 private.googleapis.com VIP
สร้างอินสแตนซ์ใน Cloud Shell
gcloud compute instances create on-premises-testbox \
--project=$projectname \
--machine-type=e2-micro \
--stack-type=IPV4_IPV6 \
--image-family debian-10 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=on-premises-subnet1-us-central1 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump -y
sudo apt-get install dnsutils -y"
สร้างโซนส่วนตัวของ Cloud DNS
เราจะใช้ Cloud DNS เพื่อสร้างโซนส่วนตัวและระเบียนสำหรับ *.googleapis.com โดยขั้นตอนที่จำเป็นด้านล่างนี้
สร้างโซน DNS ส่วนตัว v6-googleapis.com ใน Cloud Shell
gcloud dns --project=$projectname managed-zones create v6-googleapis --description="" --dns-name="googleapis.com." --visibility="private" --networks="on-premises-vpc"
ใน Cloud Shell ให้สร้างระเบียน AAAA สำหรับ private.googleapis.com ชี้ไปยังที่อยู่ IPv6 2600:2d00:0002:2000::
gcloud dns --project=$projectname record-sets create private.googleapis.com. --zone="v6-googleapis" --type="AAAA" --ttl="300" --rrdatas="2600:2d00:0002:2000::"
ใน Cloud Shell ให้สร้าง CNAME สำหรับ *.googleapis.com เพื่อชี้ไปยัง private.googleapis.com
gcloud dns --project=$projectname record-sets create *.googleapis.com. --zone="v6-googleapis" --type="CNAME" --ttl="300" --rrdatas="private.googleapis.com."
ตรวจสอบโซนส่วนตัวของ Cloud DNS
ไปยังบริการเครือข่าย → Cloud DNS → v6-googleapis
สร้างที่เก็บข้อมูล Cloud Storage
สร้างที่เก็บข้อมูล Cloud Storage ใน Cloud Shell และแทนที่ Firestore_name ด้วยชื่อที่ไม่ซ้ำกันทั่วโลกที่คุณต้องการ ลองใช้ชื่ออื่นหากใช้อยู่แล้ว
gsutil mb -l us-central1 -b on gs://bucket_name
8. เข้าถึงและตรวจสอบ Google APIs โดยใช้ที่อยู่ IPv6
ในส่วนต่อไปนี้ คุณจะดำเนินการ SSH ในเทอร์มินัล Cloud Shell 2 รายการ เทอร์มินัลแรกจะใช้เพื่อตรวจสอบการค้นหา IPv6 โดยใช้ tcpdump ขณะที่เครื่องที่ 2 ใช้เพื่อเข้าถึงที่เก็บข้อมูลของพื้นที่เก็บข้อมูลระบบคลาวด์
ดำเนินการ ssh ใน Cloud Shell เพื่อทดสอบอินสแตนซ์ on-locations-testbox
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
ภายในเทอร์มินัล 1 ของ Cloud Shell ให้เริ่ม tcpdump แล้วตรวจสอบพอร์ต 53 เพื่อหาการรับส่งข้อมูล DNS
sudo tcpdump -nn -i ens4 port 53
ตัวอย่างด้านล่าง
user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
เปิดเทอร์มินัล Cloud Shell ใหม่โดยเลือก "+" เมื่อเปิดแท็บใหม่แล้ว ให้อัปเดตตัวแปรชื่อโปรเจ็กต์
ภายใน Cloud Shell ให้อัปเดตตัวแปรชื่อโปรเจ็กต์
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
ใน Cloud Shell 2 ให้ดำเนินการ ssh เพื่อทดสอบอินสแตนซ์ on-Domains-testbox
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
ทำการค้นหาเพื่อตรวจสอบการค้นหา DNS
ภายในเทอร์มินัล 2 ของ Cloud Shell ให้ทำการค้นหาใน Storage.googleapis.com
dig AAAA storage.googleapis.com
ตรวจสอบส่วน ANSWER ซึ่งก็คือ CNAME โซน DNS ส่วนตัว.googleapis.com ไปยัง private.googleapis.com AAAA 2600:2d00:2:2000::
ตามตัวอย่างด้านล่าง
user@on-premises-testbox:~$ dig AAAA storage.googleapis.com
; <<>> DiG 9.11.5-P4-5.1+deb10u8-Debian <<>> AAAA storage.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2782
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;storage.googleapis.com. IN AAAA
;; ANSWER SECTION:
storage.googleapis.com. 300 IN CNAME private.googleapis.com.
private.googleapis.com. 300 IN AAAA 2600:2d00:2:2000::
;; Query time: 9 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Mon Feb 20 01:56:33 UTC 2023
;; MSG SIZE rcvd: 101
ในเทอร์มินัล Cloud Shell ที่ 1 ให้ตรวจสอบ tcpdump ที่ยืนยันการแปลง DNS ไปยัง AAAA 2600:2d00:2:2000::
เพิ่มเติม
user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
01:56:33.473208 IP 172.16.10.3.41476 > 169.254.169.254.53: 2782+ [1au] AAAA? storage.googleapis.com. (63)
01:56:33.482580 IP 169.254.169.254.53 > 172.16.10.3.41476: 2782 2/0/1 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (101)
จาก dig และ tcpdump เราสามารถสรุปได้ว่าการแปลง DNS ไปยัง store.googleapis.com สามารถทำได้ผ่าน 2600:2d00:2:2000::
ซึ่งเป็นที่อยู่ IPv6 สำหรับ private.googleapis.com
สร้างรายการ gsutil เพื่อตรวจสอบสิทธิ์เข้าถึงพื้นที่เก็บข้อมูลระบบคลาวด์
ภายในเทอร์มินัล 2 ของ Cloud Shell ให้ดำเนินการรายการกับที่เก็บข้อมูลของพื้นที่เก็บข้อมูลที่สร้างขึ้นก่อนหน้านี้โดยใช้ gsutil เปลี่ยนBucket_name เป็นที่เก็บข้อมูลที่คุณสร้างไว้ก่อนหน้านี้
gsutil -d ls gs://bucket_name
ตัวอย่างเช่น การใช้ที่เก็บข้อมูล Cloud Storage codelab-ipv6 ตรวจสอบผลลัพธ์การแก้ไขข้อบกพร่องที่ระบุว่า storage.googleapis.com และ HTTP/1.1 200 OK
user@on-premises-testbox:~$ gsutil -d ls gs://codelab-ipv6
***************************** WARNING *****************************
*** You are running gsutil with debug output enabled.
*** Be aware that debug output includes authentication credentials.
*** Make sure to remove the value of the Authorization header for
*** each HTTP request printed to the console prior to posting to
*** a public medium such as a forum post or Stack Overflow.
***************************** WARNING *****************************
gsutil version: 5.19
checksum: 49a18b9e15560adbc187bab09c51b5fd (OK)
boto version: 2.49.0
python version: 3.9.16 (main, Jan 10 2023, 02:29:25) [Clang 12.0.1 ]
OS: Linux 4.19.0-23-cloud-amd64
multiprocessing available: True
using cloud sdk: True
pass cloud sdk credentials to gsutil: True
config path(s): /etc/boto.cfg
gsutil path: /usr/lib/google-cloud-sdk/bin/gsutil
compiled crcmod: True
installed via package manager: False
editable install: False
shim enabled: False
Command being run: /usr/lib/google-cloud-sdk/platform/gsutil/gsutil -o GSUtil:default_project_id=myprojectid -o GoogleCompute:service_account=default -d ls gs://codelab-ipv6
config_file_list: ['/etc/boto.cfg']
config: [('working_dir', '/mnt/pyami'), ('debug', '0'), ('https_validate_certificates', 'true'), ('working_dir', '/mnt/pyami'), ('debug', '0'), ('default_project_id', 'myproject'), ('default_api_version', '2')]
DEBUG 0220 02:01:14.713012 multiprocess_file_storage.py] Read credential file
INFO 0220 02:01:14.714742 base_api.py] Calling method storage.objects.list with StorageObjectsListRequest: <StorageObjectsListRequest
bucket: 'codelab-ipv6'
delimiter: '/'
maxResults: 1000
projection: ProjectionValueValuesEnum(noAcl, 1)
versions: False>
INFO 0220 02:01:14.715939 base_api.py] Making http GET to https://storage.googleapis.com/storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False
INFO 0220 02:01:14.716369 base_api.py] Headers: {'accept': 'application/json',
'accept-encoding': 'gzip, deflate',
'content-length': '0',
'user-agent': 'apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled '
'interactive/True command/ls google-cloud-sdk/416.0.0'}
INFO 0220 02:01:14.716875 base_api.py] Body: (none)
connect: (storage.googleapis.com, 443)
send: b'GET /storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nuser-agent: apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled
<SNIP>
reply: 'HTTP/1.1 200 OK\r\n'
header: X-GUploader-UploadID: ADPycdvunHlbN1WQBxDr_LefzLaH_HY1bBH22X7IxX9sF1G2Yo_7-nhYwjxUf6N7AF9Zg_JDwPxYtuNJiFutfd6qauEfohYPs7mE
header: Content-Type: application/json; charset=UTF-8
header: Date: Mon, 20 Feb 2023 02:01:14 GMT
header: Vary: Origin
header: Vary: X-Origin
header: Cache-Control: private, max-age=0, must-revalidate, no-transform
header: Expires: Mon, 20 Feb 2023 02:01:14 GMT
header: Content-Length: 3
header: Server: UploadServer
INFO 0220 02:01:14.803286 base_api.py] Response of type Objects: <Objects
items: []
prefixes: []>
user@on-premises-testbox:~$
ในเทอร์มินัล Cloud Shell ที่ 1 ให้ตรวจสอบ tcpdump ที่ยืนยันการแปลง DNS ไปยัง AAAA 2600:2d00:2:2000::
เพิ่มเติม
eepakmichael@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
02:01:14.725000 IP 172.16.10.3.48792 > 169.254.169.254.53: 7056+ A? storage.googleapis.com. (40)
02:01:14.725106 IP 172.16.10.3.48792 > 169.254.169.254.53: 50841+ AAAA? storage.googleapis.com. (40)
02:01:14.732516 IP 169.254.169.254.53 > 172.16.10.3.48792: 50841 2/0/0 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (90)
ออกจากระบบปฏิบัติการของอินสแตนซ์อินสแตนซ์ภายในองค์กร และกลับไปยังข้อความแจ้งของ Cloud Shell
9. ล้างข้อมูล
ภายใน Cloud Shell ดำเนินการดังต่อไปนี้
gcloud compute vpn-tunnels delete transit-vpc-tunnel0 transit-vpc-tunnel1 on-premises-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-tunnels delete on-premises-tunnel0 on-premises-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete on-premises-vpc-vpngw transit-vpc-vpngw --region=us-central1 --quiet
gcloud compute routers delete transit-vpc-cr-us-central1 on-premises-vpc-cr-us-central1 on-premises-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete on-premises-testbox --zone=us-central1-a --quiet
gcloud compute networks subnets delete on-premises-subnet1-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-on-premises-vpc --quiet
gcloud compute networks delete on-premises-vpc --quiet
gcloud compute networks delete transit-vpc --quiet
gsutil rb gs://bucket_name
gcloud dns record-sets delete *.googleapis.com. \
--type=CNAME \
--zone=v6-googleapis
gcloud dns record-sets delete private.googleapis.com. \
--type=AAAA \
--zone=v6-googleapis
gcloud dns managed-zones delete v6-googleapis
10. ขอแสดงความยินดี
ขอแสดงความยินดี คุณได้กำหนดค่าและตรวจสอบการเข้าถึง Google แบบส่วนตัวด้วย IPv6 สำเร็จแล้ว
คุณสร้างขนส่งสาธารณะและโครงสร้างพื้นฐานภายในองค์กร และสร้างโซน DNS ส่วนตัวที่เปิดใช้การแปลงสำหรับโดเมน Google API ที่ใช้ IPv6 คุณได้เรียนรู้วิธีทดสอบและตรวจสอบการเข้าถึง IPv6 โดยใช้ขุดและพื้นที่เก็บข้อมูลระบบคลาวด์แล้ว
Cosmopup คิดว่า Codelab ยอดเยี่ยมมาก!!
สิ่งที่ต้องทำต่อไป
ลองดู Codelab เหล่านี้...