2016-08-01 97 views
62

什麼是互聯網網關?什麼是NAT實例?他們提供什麼服務?AWS VPC - 互聯網網關與NAT

閱讀AWS VPC文檔,我推測他們倆地圖上的子網的請求的傳出請求和路線從互聯網進入的反應私有IP地址的互聯網可路由的地址。

那麼它們之間有什麼不同呢?我使用NAT實例而不是(或除此之外)Internet網關使用哪些場景? 它們本質上是EC2實例運行某些網絡應用程序,還是他們像路由器一樣的特殊硬件?

而不是簡單地指向AWS文檔鏈接,可以請你加什麼是公共和私人子網,以便與網絡知識有限的任何初學者可以很容易地理解這些的一些背景解釋這些? 另外,何時應該使用NAT網關而不是NAT實例?

P.S.我是AWS VPC的新手,所以我可能會在這裏比較蘋果和橙子。

回答

70

互聯網網關

因特網網關是一個Amazon VPC和因特網之間的邏輯連接。它是而不是一個物理設備。每個VPC只能有一個關聯。它確實不是限制了互聯網連接的帶寬。 (對帶寬的唯一限制是Amazon EC2實例的大小,它適用於所有流量 - 內部到VPC並流向互聯網。)

如果VPC 具有Internet網關,然後在VPC 的資源不能從互聯網訪問(除非通過通信公司網絡和VPN /直連)流。

如果一個子網有一個將流量指向Internet網關的路由表,則該子網被視爲公共子網

NAT實例

一個NAT實例是Amazon EC2實例配置爲轉發流量到互聯網。它可以從現有的AMI啓動,也可以通過用戶數據進行配置是這樣的:在一個私人子網

#!/bin/sh 
echo 1 > /proc/sys/net/ipv4/ip_forward 
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects 
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0 -j MASQUERADE 
/sbin/iptables-save > /etc/sysconfig/iptables 
mkdir -p /etc/sysctl.d/ 
cat <<EOF > /etc/sysctl.d/nat.conf 
net.ipv4.ip_forward = 1 
net.ipv4.conf.eth0.send_redirects = 0 
EOF 

實例希望訪問Internet可以有自己的互聯網綁定流量轉發到NAT實例通過路由表配置。然後,NAT實例將向Internet發送請求(因爲它位於公共子網中),並且響應將被轉發回私有實例。

發送到NAT實例的流量通常會發送到與NAT實例本身沒有關聯的IP地址(它將被髮往Internet上的服務器)。因此,關閉NAT實例上的源/目標檢查選項非常重要,否則將阻止通信。

NAT網關

AWS推出了NAT網關服務,可以採取一個NAT實例的地方。使用NAT網關服務的好處是:

  • 這是一個完全管理服務 - 只需創建它,它會自動工作,包括故障切換
  • 它可以爆高達10 Gbps(一NAT實例僅限於與EC2實例類型相關聯的帶寬)

但是:

  • 安全組不能與關聯NAT網關
  • 你需要在每一個AZ,因爲他們只在一個AZ
37

只要NAT網關與NAT實例一起工作。 NAT實例可能便宜一點,但NAT網關完全由AWS管理,因此它具有不需要僅爲NAT維護EC2實例的優勢。

然而,對於需要提供給互聯網的情況下,NAT網關/實例是不是你在找什麼。一個NAT將允許私有實例(沒有公共IP)訪問互聯網,但不是相反。因此,對於需要可用於Internet的EC2實例,您需要分配一個公共IP。如果您確實需要保持EC2實例爲私密狀態,則有一種解決方法 - 您可以使用彈性負載平衡器來代理請求。

互聯網網關

Internet網關是你的VPC如何連接到互聯網。您使用具有路由表的互聯網網關來告訴VPC互聯網流量如何到達互聯網。

互聯網網關作爲名稱出現在VPC中。亞馬遜管理網關,沒有什麼你真正擁有發言權(除了使用或不使用;請記住,您可能需要一個完全分段的子網,根本無法訪問互聯網)。

公共子網是指具有通過AWS的互聯網網關路由互聯網流量子網。公有子網內的任何實例都可以分配一個公共IP(例如,啓用了「關聯公共IP地址」的EC2實例)。

私人子網意味着情況不公開從Internet訪問。他們沒有公共IP地址。例如,您無法通過SSH直接訪問它們。私有子網上的實例仍然可以自己訪問互聯網(即通過使用NAT網關)。

+10

最佳答案VS Internet網關的NAT的條款。 – Tagar

0

互聯網網關操作用於VPC的連接到互聯網和NAT網關用於私人子網連接互聯網(這意味着什麼流量來到專用子網實例,將轉發到NAT網關)。你需要將這些流量發送路由表到NAT

路由表 0.0.0.0/0