從私有 VPC 子網訪問 Internet?
我的大腦有點想弄清楚這一點,但我似乎無法讓私有子網連接到網際網路以獲取更新。基本上我想要的只是這些伺服器的網路訪問。我已經嘗試過在其他文章中找到的解決方案,但很容易遺漏一些東西,因為我已經看了很長時間了。
到目前為止,我已經完成了以下設置:
- 在我的 NAT 實例上禁用源/目標檢查
- 為公共子網創建一個路由表並將其源設置為 IGW(驗證此工作)
- 為私有子網創建路由表並將其源設置為 NAT 實例
- 使用 80/443 和 ssh 的入站和出站規則為 NAT 實例創建安全組
- 為具有入站和出站 80/443 和 ssh 的私有實例創建安全組
我可以通過 SSH 跳轉到 NAT 實例,然後轉到私有伺服器,所以我知道很多工作都在工作。我通過 ping 內部地址驗證了我的規則,但是當我離開本地網路時,我開始遇到問題。
我需要在哪裡查看或需要解決什麼問題才能幫助縮小範圍?是否需要在我忽略的 NAT 實例上進行一些配置?
編輯:配置更新
- VPC:172.16.0.0./16
- 私有子網:172.16.1.0/24
- 公共子網:172.16.0.0/24
私有子網路由表:
指向公有子網中的 NAT 實例。無法訪問網際網路,將 EIP 連接到面向公共網際網路的介面。
公共子網路由表:
將公共子網指向 IGW,我已驗證網際網路訪問。
想法:
我開始認為需要在位於公共子網中的 NAT 實例上設置或創建一些東西來轉發來自私有實例的流量,但我不確定需要添加什麼。我發現這篇文章解釋了在 iptables 中添加偽裝規則,這適用於我的情況嗎?
是的,您必須在 nat 主機上設置 iptables 偽裝。
iptables -A POSTROUTING -t nat -s (private-subnet/cidr) -j MASQUERADE
我們有相同的設置,您已正確完成所有其他操作(禁用源檢查,將私有子網指向 nat 實例的介面,將公共子網指向 igw)。
剛剛偶然發現這個有類似的問題。假設您使用嚮導創建了 NAT 實例,上面提到的偽裝規則已經存在 - 如果您要“滾動您自己的”NAT 實例,這只是您需要添加的內容。(我通常這樣做,這樣我就可以在這方面加倍努力,並將其設為 OpenSWAN L2TP/IPSec 遠端使用者 VPN 伺服器)。
自從我上次創建其中一個以來,我忘記添加的是允許來自所有私有安全組或子網的所有流量(或至少是您想要允許的流量)的規則,這些流量將通過 NAT 實例路由流量。NAT 實例不會在沒有規則允許的情況下接受此類出站流量 - 不要只考慮從 Internet 傳入的流量。不確定這是否是您的問題,因為您確實提到將 22/80/443 添加到您的 NAT 安全組,但我認為我會建議其他可能有類似問題的人這樣做。