Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
VPC 是虛擬私有雲 (Virtual Private Cloud) 的縮寫。
內容目錄
點擊導覽 > [VPC 網路] > [VPC 網路]。
Lab 中已經建立了 default 與 mynetwork 兩個網路及子網路。
點擊 [建立虛擬私人雲端網路],命名為 managementnet
。
子網路建立模式選擇 [自訂],命名為 managementnet-us
,區域 (Zone) 選擇 us-central1
,IP 位址範圍則定義成 10.130.0.0/20
。點擊 [完成] 。
點擊 [對等指令列 (Command Line)],可以查看如何透過 Cloud Shell 完成同樣的設定。
gcloud compute networks create managementnet --project=qwiklabs-gcp-00-2612f83e7f96 --subnet-mode=custom --mtu=1460 --bgp-routing-mode=regional gcloud compute networks subnets create managementnet-us --project=qwiklabs-gcp-00-2612f83e7f96 --range=10.130.0.0/20 --network=managementnet --region=us-central1 gcloud compute networks subnets create NAME --project=qwiklabs-gcp-00-2612f83e7f96 --range=IP_RANGE --network=managementnet --region=REGION
執行以下指令建立 privatenet
網路。
gcloud compute networks create privatenet --subnet-mode=custom gcloud compute networks subnets create privatesubnet-us --network=privatenet --region=us-central1 --range=172.16.0.0/24 gcloud compute networks subnets create privatesubnet-eu --network=privatenet --region=europe-west4 --range=172.20.0.0/20
執行以下指令檢視目前的網路。
gcloud compute networks list # 結果 NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 default AUTO REGIONAL managementnet CUSTOM REGIONAL mynetwork AUTO REGIONAL privatenet CUSTOM REGIONAL
自動模式會自動於每一地區中建立子網路 (subnets),自訂模式預設不會建立子網路,因此可以自行指定子網路的地區。
執行以下指令檢視子網路。
gcloud compute networks subnets list --sort-by=NETWORK
檢視子網路時,會發現 default
與 mynetwork
在各個地區都建立了子網路。
為 managementnet
上的 VM 實體建立 SSH、ICMP 與 RDP 流入流量的防火牆規則。
點擊導覽 > [VPC 網路] > [防火牆 (Firewall)]。點擊 [建立防火牆規則],並根據以下規則建立:
屬性 | 值 |
---|---|
名稱 Name | managementnet-allow-icmp-ssh-rdp |
網路 Network | managementnet |
目標 Targets | 網路中的所有執行個體 All instances in the network |
來源篩選器 Source filter | IP 範圍 IP Ranges |
來源 IP 範圍 Source IP ranges | 0.0.0.0/0 |
通訊協定和埠 Protocols and ports | TCP: 22, 3389 其他通訊協定: icmp |
點擊 [對等指令列],查看 Cloud Shell 指令。
gcloud compute --project=qwiklabs-gcp-00-2612f83e7f96 firewall-rules create managementnet-allow-icmp-ssh-rdp --direction=INGRESS --priority=1000 --network=managementnet --action=ALLOW --rules=tcp:22,tcp:389,icmp --source-ranges=0.0.0.0/0
gcloud compute firewall-rules create privatenet-allow-icmp-ssh-rdp --direction=INGRESS --priority=1000 --network=privatenet --action=ALLOW --rules=icmp,tcp:22,tcp:3389 --source-ranges=0.0.0.0/0
執行以下指令檢視所有防火牆規則。
gcloud compute firewall-rules list --sort-by=NETWORK
點擊導覽 > [Compute Engine[ > [VM 執行個體]。
點擊 [建立執行個體],按照 Lab 的指示選擇主機規格。
點擊 [管理、安全性、磁碟、網路、單獨租用 (Management, security, disks, networking, sole tenancy)],選擇 [網路 (Networking)] 分頁。
編輯 [網路介面 (Network interfaces)],選擇 managementnet
作為網路 (Network),選擇 managementsubnet-us
作為子網路 (Subnetwork)。
點擊 [對等指令列],檢視 Cloud Shell 指令。
gcloud beta compute --project=qwiklabs-gcp-00-2612f83e7f96 \ instances create managementnet-us-vm \ --zone=us-central1-f \ --machine-type=f1-micro \ --subnet=managementsubnet-us \ --network-tier=PREMIUM \ --maintenance-policy=MIGRATE \ --service-account={{SERVICE_ACCOUNT}} \ --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append \ --image=debian-10-buster-v20210609 \ --image-project=debian-cloud \ --boot-disk-size=10GB \ --boot-disk-type=pd-balanced \ --boot-disk-device-name=managementnet-us-vm \ --no-shielded-secure-boot \ --shielded-vtpm \ --shielded-integrity-monitoring \ --reservation-affinity=any
點擊 [建立],建立執行個體。
gcloud compute instances create privatenet-us-vm \ --zone=us-central1-f \ --machine-type=n1-standard-1 \ --subnet=privatesubnet-us
檢視目前所有執行個體。
gcloud compute instances list --sort-by=ZONE
會得出以下結果:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS mynet-eu-vm europe-west4-c n1-standard-1 10.164.0.2 xx.xx.xxx.xxx RUNNING managementnet-us-vm us-central1-f f1-micro 10.130.0.2 xx.xxx.xxx.xx RUNNING mynet-us-vm us-central1-f n1-standard-1 10.128.0.2 xx.xxx.xxx.xxx RUNNING privatenet-us-vm us-central1-f n1-standard-1 172.16.0.2 xx.xxx.xxx.xx RUNNING
總共有 4 個實體 (mynet-eu-vm
與 mynet-us-vm
是 Lab 預設建立的),分別位於 2 個不同區域與三個不同的 VPC 網路 (managementnet
、mynetwork
與 privatenet
) 中。
點擊 mynet-us-vm
的 [SSH] 按鈕,建立 SSH 連線。
執行以下指令,測試是否可以連線到 mynet-eu-vm
執行個體。
ping -c 3 {{mynet-eu-vm External IP}}
正常執行下,會回傳以下結果:
PING xx.xx.xxx.xxx (xx.xx.xxx.xxx) 56(84) bytes of data. 64 bytes from xx.xx.xxx.xxx: icmp_seq=1 ttl=51 time=113 ms 64 bytes from xx.xx.xxx.xxx: icmp_seq=2 ttl=51 time=113 ms 64 bytes from xx.xx.xxx.xxx: icmp_seq=3 ttl=51 time=113 ms --- xx.xx.xxx.xxx ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms
同樣的指令測試 managementnet-us-vm
與 privatenet-us-vm
應該都能正常執行。
ping -c 3 {{mynet-eu-vm Internal IP}}
一樣透過 ping
指令偵測,只是將 IP 改為內部 IP,會得出以下節果:
PING 10.164.0.2 (10.164.0.2) 56(84) bytes of data. 64 bytes from 10.164.0.2: icmp_seq=1 ttl=64 time=110 ms 64 bytes from 10.164.0.2: icmp_seq=2 ttl=64 time=109 ms 64 bytes from 10.164.0.2: icmp_seq=3 ttl=64 time=109 ms --- 10.164.0.2 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 109.469/109.982/110.977/0.703 ms
如果改為其他兩個執行個體的內部 IP,則會回傳 100% pack loss,這是因為位處於不同的網路 (與區域無關,與網路有關)。
按照建立 managementnet-us-vm 執行個體的步驟,建立 vm-appliance
執行個體,在 [管理、安全性、磁碟、網路、單獨租用 (Management, security, disks, networking, sole tenancy)] 的 [網路 (Networking)] 中,將網路 default
改為 privatenet
。
接著,選擇 [新增「網路介面」(Add network interface)],新增 managementnet
與 mynetwork
。
在 VM 執行個體列表中,點選 vm-appliance
內部 IP 中的 [nic0],檢視網路介面詳情資料。
點擊網路介面詳情資料中的 nic0,切換為 nic1,檢視在 managementnet
的組態,切換 nic2 則是 mynetwork
。
透過 SSH 存取 vm-appliance
sudo ifconfig
ens4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1460 inet 172.16.0.3 netmask 255.255.255.255 broadcast 172.16.0.3 inet6 fe80::4001:acff:fe10:3 prefixlen 64 scopeid 0x20<link> ether 42:01:ac:10:00:03 txqueuelen 1000 (Ethernet) RX packets 481 bytes 112315 (109.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 468 bytes 49450 (48.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1460 inet 10.130.0.3 netmask 255.255.255.255 broadcast 10.130.0.3 inet6 fe80::4001:aff:fe82:3 prefixlen 64 scopeid 0x20<link> ether 42:01:0a:82:00:03 txqueuelen 1000 (Ethernet) RX packets 5 bytes 2362 (2.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 15 bytes 2234 (2.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1460 inet 10.128.0.3 netmask 255.255.255.255 broadcast 10.128.0.3 inet6 fe80::4001:aff:fe80:3 prefixlen 64 scopeid 0x20<link> ether 42:01:0a:80:00:03 txqueuelen 1000 (Ethernet) RX packets 17 bytes 3250 (3.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 15 bytes 2234 (2.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
接著執行 ip route
檢視會透過哪個網路進行路由傳送。
ip route
default via 172.16.0.1 dev ens4 10.128.0.0/20 via 10.128.0.1 dev ens6 10.128.0.1 dev ens6 scope link 10.130.0.0/20 via 10.130.0.1 dev ens5 10.130.0.1 dev ens5 scope link 172.16.0.0/24 via 172.16.0.1 dev ens4 172.16.0.1 dev ens4 scope link
第二個指令中,看到當我們透過介面 ens4
連接時,會透過 174.16.0.1 進行路由傳送。預設是透過 ens4
介面連接。由於 mynetwork-eu-vm
並不在 IP 範圍中,因此無法進行連線。