從私有 VPC 子網路存取 Internet?

從私有 VPC 子網路存取 Internet?

我的大腦有點想弄清楚這一點,但我似乎無法讓私有子網路連接到網路以獲取更新。基本上我想要的只是這些伺服器的網路存取。我已經嘗試過在其他帖子中找到的解決方案,但很容易會丟失一些東西,因為我已經研究這個問題很長一段時間了。

到目前為止,我已經完成了以下設定:

  • 停用對我的 NAT 實例的來源/目標檢查
  • 為公用子網路建立路由表並將其來源設定為 IGW(已驗證此方法有效)
  • 為私有子網路建立路由表並將其來源設定為 NAT 實例
  • 為 NAT 實例建立安全性群組,並使用 80/443 和 ssh 的入站和出站規則
  • 為私有實例建立安全群組,入站和出站80/443和ssh

我能夠透過 SSH 跳到 NAT 實例,然後轉向私人伺服器,所以我知道這一切都在起作用。我已經透過 ping 內部位址驗證了我的規則,但是當我離開本地網路時,我就開始遇到問題。

我需要在哪裡找到或需要排除哪些故障才能幫助縮小範圍?是否有一些我忽略的 NAT 實例上需要完成的配置?

編輯:配置更新

  • 專有網路:172.16.0.0./16
  • 私有子網路:172.16.1.0/24
  • 公有子網路:172.16.0.0/24

私有子網路由表:

指向公有子網路中的 NAT 實例。無法存取互聯網,已將 EIP 附加到面向公共互聯網的介面。

私人網路

公有子網路由表:

將公共子網路指向 IGW,我已驗證網路存取。

在此輸入影像描述

想法:

我開始認為需要在公共子網路中的 NAT 實例上設定或建立一些東西,以轉送來自私有實例的流量,但我不太確定需要添加什麼。我發現這個帖子這解釋了在 iptables 中添加偽裝規則,這是否適用於我的情況?

答案1

是的,您必須在 nat 主機上設定 iptables 偽裝。

iptables -A POSTROUTING -t nat -s (private-subnet/cidr) -j MASQUERADE

我們有相同的設置,您已經正確完成了其他所有操作(禁用來源檢查,將私有子網路指向 nat 實例的接口,將公用子網路指向 igw)。

答案2

剛剛偶然發現這個有類似的問題。假設您使用精靈建立 NAT 實例,則上面提到的偽裝規則已經存在 - 如果您要「推出自己的」NAT 實例,則只需新增此規則。 (我通常會這樣做,這樣我就可以加倍於此,並使其成為 OpenSWAN L2TP/IPSec 遠端用戶 VPN 伺服器)。

自從上次創建其中一個以來,我忘記添加的是允許來自所有私有安全群組或子網路的所有流量(或至少是您想要允許的流量)的規則,這些流量將透過 NAT 執行個體路由流量。如果沒有規則允許,NAT 實例不會接受此類出站流量 - 不要只考慮從 Internet 傳入的流量。不確定這是否是您的問題,因為您確實提到將 22/80/443 添加到您的 NAT 安全群組,但我想我會建議其他可能有類似問題的人這樣做。

答案3

我為此奮鬥了一段時間,直到我發現:

然後,從已配置為作為 NAT 執行個體執行的 AMI 啟動一個執行個體到您的公有子網路。 Amazon 提供配置為作為 NAT 執行個體運作的 Amazon Linux AMI。這些 AMI 的名稱中包含字串 amzn-ami-vpc-nat,因此您可以在 Amazon EC2 控制台中搜尋它們。

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html#NATInstance

我已將 NAT 伺服器設定為我自己的標準 (Ubuntu) 實例,一旦我使用 Amazon Linux AMI 並更新了我的路由表,它就開始工作。

相關內容