Amazon Virtual Private Cloud 文檔
VPC允許我們在基礎設施中提供一個邏輯上隔離的部分,在這裡我們可以在我們定義的虛拟網絡中啟動AWS資源。我們完全控制:
- 虛拟網絡環境,包括選擇IP位址範圍、建立子網
- 路由表的配置
- 網絡網關
此外,我們可以在公司資料中心和VPC之間建立硬體VPN或專線直接連接配接,并在預設情況下利用AWS雲作為公司資料中心的擴充
CIDR,專用與公用IPv4
CIDR-IPv4(無類域間路由)
CIDR通常用于安全組規則或AWS網絡。它們有助于定義IP位址範圍
- 192.168.100.0/32->一個IP
- 0.0.0.0/0->所有IP
- 我們還可以做一些類似192.168.0.0/26的事情,這意味着有64個IP(192.168.0.0-192.168.0.63)
CIDR由兩部分組成:
- 基本IP(xx.xx.x.x):它表示範圍中包含的IP
- 子網路遮罩(/32):定義IP範圍中可以變化的位數
子網ask可以采取兩種形式
- 255.255.255.0
- /24
例子:
/24允許2(32-24)=28=256個來自基本IP的IP
私有與公共IPv4
Internet配置設定号碼管理局Internet Assigned Numbers Authority(IANA)建立了某些IPv4位址塊,以供專用(LAN)和公用(Internet)位址使用
專用/私有IP隻能允許某些值
- 10.0.0.0-10.255.255.255(10.0.0.0/8)<-在大型網絡中
- 172.16.0.0-172.31.255.255(172.16.0.0/16)<-AWS
- 192.168.0.0-192.168.255.255(192.168.0.0/16)<-家庭網絡
網際網路上所有其餘的IP都是公共IP
AWS預設專有網絡概述
- 所有新帳戶都有一個預設VPC:172.31.0.0/16
- 如果未指定子網,則會将新執行個體啟動到預設VPC中
- 預設VPC具有internet連接配接,并且所有執行個體都具有公共IP(以便我們可以使用該執行個體執行類似于yum update…)
- 我們還獲得了一個公共和私有DNS名稱
對于預設VPC
- 使用者友好,允許您立即部署執行個體。
- 預設VPC中的所有子網都有到internet的路由。
- 每個EC2執行個體都有一個公共和私有IP位址。
VPC概述
VPC中的IPv4
- 一個區域中可以有多個VPC(每個區域最多5個,但這是一個軟限制,可以申請提高配額)
-
每個VPC的最大CIDR為5。對于每個CIDR
○ 最小大小為/28:16個IP位址
○ 最大大小為/16:65536個IP位址
- 您的VPC CIDR不應與其他網絡重疊
子網Subnet概述
AWS在每個子網中保留5個IP(IP範圍中的前4個和最後1個)。這5個IP不可使用,無法配置設定給執行個體。
例如,如果CIDR塊為10.0.0.0/24,則保留的IP為:
- 10.0.0.0:網絡位址
- 10.0.0.1:AWS為VPC路由器保留,用于網關
- 10.0.0.2:由AWS保留,用于映射到AWS提供的DNS
- 10.0.0.3:由AWS保留,以備将來使用
- 10.0.0.255:網絡廣播位址。AWS不支援VPC中的廣播
如果您需要EC2執行個體的xx個IP,在執行CIDR塊時,請記住-5(四舍五入)
例如,如果您需要29個IP,請選擇/26(64個IP)而不是/27(32個IP)
網際網路網關IGW
- Internet網關幫助我們的VPC執行個體連接配接到Internet
- 它可以水準擴充,并且是HA和備援的
- 必須與VPC分開建立
- 一個VPC網絡隻能連接配接到一個網際網路網關,反之亦然(如“1對1關系”)
- Internet網關也是具有公共IPv4的執行個體的NAT
IGW本身不允許通路internet,是以還必須編輯路由表
NAT執行個體和NAT網關
NAT執行個體(過時但在考試中還有)
NAT代表網絡位址轉換,它允許私有子網中的執行個體連接配接到internet
- 嘗試建立NAT執行個體時,請先禁用執行個體上的源/目标檢查
- NAT執行個體必須位于公共子網中。
- 必須将路由表配置為将流量從專用子網路由到NAT執行個體,才能使其工作。
- 必須有彈性IP連接配接到它
- NAT執行個體可以支援的通信量取決于執行個體大小。如果您遇到瓶頸,請增加執行個體大小。
- 您可以使用自動縮放組、不同AZ中的多個子網以及自動化故障切換的腳本來建立高可用性。
- 它在安全組後面
必須管理安全組和規則
-
inbound
○ 允許來自專用子網的HTTP/HTTPS通信
○ 允許從家庭網絡進行SSH(通過Internet網關提供通路)
-
outbound
○ 允許到internet的HTTP/HTTPS通信
NAT Gateway
- AWS管理的NAT,更高的帶寬,更好的可用性,無需使用者管理
- NAT網關在可用性區域AZ内是備援的。每個可用區域AZ一個NAT網關。
- 不與安全組關聯。安全組關聯執行個體instance
- NAT網關使用彈性IP在特定的AZ中建立
- 無需禁用源/目标檢查。
- 為了獲得高可用性,我們應該在每個可用性區域中建立一個NAT網關。
- 從5 Gbps開始,目前擴充到45 Gbps。自動縮放
-
需要Internet網關典型情況
○ 私有子網将與NAT網關通信,NAT網關将與IGW通信,以便我們的私有執行個體可以與internet通信
NAT網關的高可用性
- NAT網關在單個網絡中具有彈性
- 但是,為了容錯,必須在多個AZ中建立多個NAT網關
- 不需要跨AZ故障切換,因為如果AZ發生故障,則不需要NAT Comparison of NAT Instance and NAT Gateway
AWS學習筆記-VPC小結
屬性 | NAT 網關 | NAT 執行個體 |
---|---|---|
可用性 | 高度可用。每個可用區中的 NAT 網關都采用備援實施。在每個可用區中建立一個 NAT 網關可確定架構不依賴于可用區。 | 使用腳本管理執行個體之間的故障轉移。 |
帶寬 | 可以縱向擴充到 45 Gbps。 | 取決于執行個體類型的帶寬。 |
維護 | 由管理AWS 您不需要進行任何維護。 | 由您管理,例如您需要對執行個體安裝軟體更新或作業系統更新檔。 |
性能 | 軟體經過優化以便處理 NAT 流量。 | 配置來執行 NAT 的通用 AMI。 |
費用 | 費用取決于您使用的 NAT 網關的數量、使用時長以及您通過 NAT 網關發送的資料量。 | 費用取決于您使用的 NAT 執行個體的數量、使用時長以及執行個體類型和大小。 |
類型和大小 | 整合提供;您不需要選擇類型或範圍。 | 根據您的預測工作負載選擇适當的執行個體類型和大小。 |
公有 IP 位址 | 建立時選擇彈性 IP 位址,與公有 NAT 網關關聯。 | 為 NAT 執行個體使用彈性 IP 位址或公有 IP 位址。您随時可以通過将新的彈性 IP 位址與執行個體關聯來更改公有 IP 位址。 |
私有 IP 位址 | 在您建立網關時自動從子網的 IP 位址範圍中選擇。 | 在您啟動執行個體時,從子網的 IP 位址範圍内配置設定特定的私有 IP 位址。 |
安全組 | 您不能将安全組與 NAT 網關相關聯。您可以将安全組與 NAT 網關後的資源關聯,以控制入站和出站流量。 | 與您的 NAT 執行個體和 NAT 執行個體之後的資源關聯,以控制入站和出站流量。 |
網絡 ACL | 使用網絡 ACL 控制進出您的 NAT 網關所在子網的流量。 | 使用網絡 ACL 控制進出您的 NAT 執行個體所在子網的流量。 |
DNS Resolution Options
DNS解析選項:
-
enableDnsSupport 支援DNS解析設定
○ 預設為True
○ 幫助确定專有網絡是否支援DNS解析
○ 如果為True,則通過169.254.169.253查詢AWS DNS伺服器
-
enableDnsHostname DNS主機名設定
○ 自定義VPC預設為False,預設VPC為True
○ 除非enablednsupport=True,否則不會執行任何操作
○ 如果為True,則将公共主機名配置設定給EC2執行個體(如果它具有公共主機名)
如果在Route 53的專用區域中使用自定義DNS域名,則必須将這兩個屬性都設定為true
NACL & Security Groups
Inbound / Outbound
- 安全組是有狀态的,這意味着,即使出站規則在入站請求通過時拒絕所有内容,該請求也可以通過出站(規則檢查)
- NACL是無狀态的,這意味着入站和出站是分開計算的
網絡ACL
- NACL就像一個防火牆,控制子網之間的流量
- 預設情況下,NACL允許所有出站和入站内容
- 每個子網一個NACL,新子網被配置設定預設NACL
定義NACL規則
-
規則有一個數字(1-32766),數字越小,優先級越高
○ 例如,如果定義#100 ALLOW和#200 DENY,則将允許IP,因為100具有更高的優先級(#100<#200)
○ 100,200是規則數字,或者你可以說它是“重量”,隻要你能記住它
○ 最後一條規則是星号(*),在沒有規則比對的情況下拒絕請求
○ AWS建議增量 為100 的規則
- 新建立的NACL将default否認any
- NACL是在子網級别阻止特定IP的一種很好的方法
這類似于VPC中所有(或任何)子網的安全組。我們可以添加允許/拒絕規則。預設VPC附帶預設網絡ACL,預設情況下,它允許所有出站和入站流量。
建立自定義網絡ACL時,預設情況下拒絕所有入站和出站流量,直到添加規則。VPC中的每個子網都必須與網絡ACL相關聯。如果未将子網與網絡ACL顯式關聯,則該子網将自動與預設網絡ACL關聯。
注意:要阻止IP位址,我們需要使用ACL,而不是安全組。
- 網絡ACL可以與N個子網關聯,但1個子網隻能與1個NACL關聯。
- 網絡ACL包含按順序計算的規則的編号清單,從編号最低的規則開始。
- 網絡ACL有單獨的入站和出站規則,每個規則可以允許或拒絕流量。
- 網絡ACL是無狀态的;對允許的入站流量的響應受出站流量規則的限制,反之亦然。
臨時port
實際上,為了涵蓋可能向VPC中面向公衆的執行個體發起通信的不同類型的用戶端,您可以打開臨時端口1024-65535
配置VPC
- 轉到專有網絡服務>您的專有網絡>建立專有網絡
- 填寫IPv4 CIDR塊和租約,然後單擊建立。
目前尚未建立任何子網和internet網關。已建立路由表、網絡ACL和安全組。安全組不能跨越VPC。
- 轉到子網->建立子網
- 命名,選擇我們的VPC、可用性區域和IPv4 CIDR塊。最後,單擊create。
預設情況下,沒有子網具有公共IP。為此,選擇子網并單擊操作,使其自動應用公共IP。Amazon始終為您的子網保留5個IP位址。
- 轉到Internet網關->建立Internet網關
- 命名它并單擊create。
- 選擇它并通過操作将internet網關連接配接到VPC(隻能将VPC連接配接到一個internet網關)
目前,我們所有的專有網絡都是公共的,因為我們的routes允許。讓我們解決這個問題:
- 轉到route表->選擇我們的路線表并選擇“route”
- 編輯route
- 用目标internet網關填充目标(任意IP)
- 轉到子網關聯
- 編輯子網關聯以選擇需要公開的子網。
現在,我們無法通過ssh從公共子網通路私有EC2執行個體。
- 轉到EC2>安全組->建立安全組
- 選擇我們的VPC,鍵入“All ICMP”(協定ICMP),并将源輸入公共子網。
- 選擇我們的VPC,鍵入“SSH”并将源檔案添加到私有子網。
- 更改EC2執行個體的安全組。
VPC Peering
- 允許您使用專用private IP位址通過直接網絡路由将一個VPC連接配接到另一個VPC
- 執行個體的通信就像它們在同一個PVC上一樣
- 不得有重疊的CIDR
- 我們可以與其他AWS帳戶以及同一帳戶中的其他VPC對等VPC
- 必須更新每個VPC子網中的路由表,以確定執行個體可以通信
注意:VPC的連通性不可傳遞,如下圖所示:
Reference:
https://docs.aws.amazon.com/vpc/latest/peering/invalid-peering-configurations.html#transitive-peering
VPC Endpoints
There are two types: interface and gateway.
Currently, gateway endpoints support S3 and DynamoDB
- 端點Endpoint允許使用專用網絡而不是公用網絡連接配接到AWS服務
- 可以水準縮放并且是備援的
- 端點不再需要IGW、NAT網關等。。通路AWS服務
- 接口Interface:提供一個ENI(專用IP位址)作為大多數AWS服務的入口點(必須連接配接安全組)
- 網關Gateway:提供一個目标,必須在路由表中使用-S3和DynamoDB
- 排查問題:
○ 檢查VPC中的DNS設定 ○ 檢查路由表
Enable Private DNS Name: To use private DNS names, ensure that the attributes ‘Enable DNS hostnames’ and ‘Enable DNS support’ are set to ‘true’ for your VPC
接口Interface端點是一個具有專用IP位址的彈性網絡接口,該Interface用作連接配接到受支援服務的流量的入口點。
VPC端點使使用者能夠私自将VPC連接配接到受支援的AWS服務和由PrivateLink提供支援的VPC端點服務,而無需internet網關、NAT裝置、VPN連接配接或AWS直接連接配接。
VPC中的執行個體不需要公共IP位址來與服務中的資源通信。您的專有網絡和其他服務之間的流量可以沒有AWS網絡。
端點Endpoints是虛拟裝置。它們是水準擴充的、備援的、高可用的VPC元件,允許VPC中的執行個體和服務之間進行通信,而不會對網絡流量造成可用性風險或帶寬限制。
Bastion Hosts
- 使用一個堡壘主機SSH到我們的私有執行個體中
- 堡壘位于公共子網中,然後連接配接到所有其他私有子網
- 必須在堡壘主機加安全組
- 堡壘用于安全地管理EC2執行個體(使用SSH或RDP)。
- 不能将NAT網關用作堡壘主機。
檢查提示:確定bastion主機隻有來自所需IP的端口22流量,而不是來自其他執行個體的安全組
Site-to-Site VPN
Virtual Private Gateway
- 虛拟私有網關Virtual Private Gateway 是站點到站點 VPN 連接配接在 Amazon 一端的 VPN 集中器。
- 您可以建立虛拟私有網關,并将其附加到要從中建立站點到站點 VPN 連接配接的 VPC。
- 建立虛拟專用網關時,可以為網關的 Amazon 端指定專用自治系統編号 (ASN)。
○ 如果不指定 ASN,則會使用預設 ASN (64512) 建立虛拟專用網關 ○ 建立虛拟專用網關後,無法更改 ASN
Customer Gateway
- VPN連接配接用戶端的軟體應用程式或實體裝置
- 客戶網關裝置必須通過生成流量并啟動 Internet 密鑰交換 (IKE) 協商過程來為站點到站點 VPN 連接配接啟動隧道
- 使用者提供的為Customer gateway device
- 客戶網關Customer Gateway 是您在 AWS 中建立的資源,它表示本地網絡中的客戶網關裝置。
Transit gateway & VPN
- A transit gateway is a transit hub that you can use to interconnect your virtual private clouds (VPC) and on-premises networks.
- 可以将站點到站點 VPN 連接配接的目标網關從虛拟私有網關修改為中轉網關。
- Transit gateway視作新一代Region邊緣路由器
Transit gateway
- 中轉網關是網絡中轉中心,您可用它來互連 Virtual Private Cloud (VPC) 和本地網絡。
- Region間的對等連接配接
- 跨雲和本地網絡的單一管理門戶
- SD-WAN相容
關鍵概念
- 挂載Attachments — 您可以挂載以下各項:
○ 一個或多個 VPC ○ Connect SD-WAN/第三方網絡裝置 ○ 一個 AWS Direct Connect 網關 ○ 與另一個中轉網關的對等連接配接 ○ 與中轉網關的 VPN 連接配接
- 中轉網關最大傳輸機關 (MTU)
○ 對于 VPC、AWS Direct Connect、Transit Gateway Connect 和對等連接配接挂載之間的流量,中轉網關支援的 MTU 為 8500 位元組。 ○ VPN 連接配接上的流量可以具有的 MTU 為 1500 位元組。
- 中轉網關路由表
○ 中轉網關具有預設的路由表,且可選具有其他路由表。 ○ 路由表包含動态路由和靜态路由,它們根據資料包的目标 IP 位址決定下一個躍點。 ○ 這些路由的目标可以是任何中轉網關挂載。 ○ 預設情況下,Transit Gateway 挂載與預設的中轉網關路由表關聯。
- 關聯Associations
○ 每個挂載都正好與一個路由表關聯。 ○ 每個路由表可以與零到多個挂載關聯。
- 路由傳播(轉發)
○ VPC、VPN 連接配接或 Direct Connect 網關可以動态地将路由傳播到中轉網關路由表。 ○ 預設情況下,使用 Connect 挂載,路由會傳播到中轉網關路由表。 ○ 使用 VPC 時,您必須建立靜态路由以将流量發送到中轉網關。 ○ 使用 VPN 連接配接或 Direct Connect 網關時,路由使用邊界網關協定 (BGP) 從中轉網關傳播到本地路由器。 ○ 使用對等連接配接的連接配接時,您必須在中轉網關路由表中建立靜态路由以指向對等連接配接。
最佳實踐:
- 為每個中轉網關 VPC 附件使用單獨的子網。對于每個子網,可以配置以下内容:
○ 将與中轉網關子網關聯的入站和出站網絡 ACL 保持打開狀态。 ○ 根據流量,您可以将網絡 ACL 應用于工作負載子網。
- 建立一個網絡 ACL 并将其與關聯到中轉網關的所有子網相關聯。確定網絡 ACL 在入站和出站方向打開。
- 将同一個 VPC 路由表與關聯到中轉網關的所有子網相關聯,除非設計需要
- 使用邊界網關協定 (BGP) 站點到站點 VPN 連接配接。
- 為 AWS Direct Connect 網關挂載和 BGP Site-to-Site VPN 挂載啟用路由傳播。
- 不需要額外的中轉網關即可實作高可用性,根據設計,中轉網關具有高可用性。
- 限制中轉網關路由表的數量,除非設計需要多個中轉網關路由表。
- 對于多區域部署,我們建議您為每個中轉網關使用唯一自治系統編号 (ASN)。為了實作備援,請在災難恢複區域中使用多個中轉網關。
官網:https://docs.aws.amazon.com/zh_cn/vpc/latest/tgw/what-is-transit-gateway.html
示例
需求
一家全球性企業,總部設在英國倫敦,在那裡他們有一個資料中心和總部辦公室。他們還在世界各地設有分支機構。最大的位于洛杉矶和首爾。大部分應用程式托管在eu-west-2地區(倫敦) 和ap-northeast-2(首爾),以及一些正在遷移過程中的舊應用程式,在倫敦資料中心托管。
他們的分支機構需要 500 Mbps 的網絡容量來接入 AWS 地區,以及連接配接其資料中心的 10 Mbps 網絡容量。不得在分支機構之間進行路由。資料中心需要 5 Gbps 的網絡容量來回 AWS 區域,以處理資料密集型工作負載遷移到 AWS。
設計
- 本地資料中心與eu-west-2, AWS ap-northeast-2與eu-west-2 區域通過 10 Gbps AWS 直接連接配接專用連接配接的彈性對。
- 建立兩個傳輸虛拟接口(T-VIF),每個直接連接配接連接配接一個接口,并将這些連接配接關聯到直接連接配接網關 (dxgw-eu-west-2).直接連接配接網關連接配接到 AWS 傳輸網關 (tgw-eu-west-2)。
- 将所有挂載的位址段通過 BGP 路由協定向客戶網關宣布,将其添加到允許的字首清單中
- 所有分支機構都使用加速站點到站點 VPN 連接配接到 AWS
○ 首爾分行連接配接到 VPN 連接配接配置在ap-northeast-2地區 (vpn-icn); ○ 倫敦分行連接配接到 VPN 連接配接配置在eu-west-2地區 (vpn-lhr); ○ 洛杉矶分公司連接配接到兩個 VPN 連接配接配置在eu-west-2地區 (vpn-lax). ○ 如需備援,使用多VPN鍊路
View of AWS Transit Gateway and inter-Region connectivity
AWS PrivateLink (VPC Endpoints Services)
- Most secure & scalable way o expose a service to 1000s of VPC (own or other accounts)
- Does not require VPC Peering, Internet Gateway, NAT, Route Tables
- Requires a network load balancer (Service VPC) and ENI (Customer VPC)
Egress Only Internet Gateway
Egress means Outgoing
- Egress Only Internet Gateway is for IPv6 only
-
Similar function as a NAT, but a NAT is for IPv4
IPv6 is all public address
- Egress Only Internet Gateway gives our IPv6 instances access to the internet, but they won’t be directly reachable by the internet
- After creating an Egress only Internet Gateway, edit the route tables