隨著ECS實例增加,逐一配置公網IP會降低管理和運營效率,且增加了ECS實例遭受惡意掃描和攻擊的風險。您可以通過配置公網NAT網關的SNAT條目,使指定的多個ECS實例可以通過同一彈性公網IP訪問互聯網,從而簡化管理流程并降低內網資源暴露的風險。
場景示例
某企業云端存在大量ECS實例。逐一為每個ECS實例配置公網IP將降低管理和運營效率,這種做法不僅復雜,還增加了ECS實例面臨惡意掃描和攻擊的風險。因此,企業決定采用公網NAT網關,并通過配置SNAT條目,使得VPC-A內所有ECS實例能夠通過指定的公網IP訪問互聯網。然而,由于部分早期創建的ECS實例已具備公網訪問能力,企業計劃采取以下措施:
統一出口:在確保原有資源正常運行的前提下,通過EIP(39.XX.XX.35)為VPC-A內的所有ECS實例統一提供公網訪問能力。
平穩過渡:將ECS-A實例的固定公網IP轉換為EIP后,需將其從主網卡上解綁,并綁定至彈性網卡,從而確保終端用戶訪問ECS-A實例的方式保持不變。
通過上述調整,該企業利用公網NAT網關的集中管理和安全特性,有效降低了內網資源暴露的風險,同時提升了運維團隊的管理效率。
配置步驟
步驟一:固定公網IP轉EIP
登錄云服務器管理控制臺,找到目標ECS實例。將ECS-A實例的固定公網IP轉換為EIP。
包年包月類型的固定公網IP不支持直接轉換為EIP。您需先將包年包月固定公網IP轉換為按量付費固定公網IP,再將按量付費固定公網IP轉換為EIP。關于包年包月固定公網IP轉換為按量付費固定公網IP的詳細操作說明,請參見按固定帶寬轉按使用流量。
步驟二:配置彈性網卡
在左側導航欄中,選擇
,單擊創建彈性網卡。重要在創建彈性網卡時,請確保專有網絡和交換機與ECS-A實例位于同一VPC和可用區。
在彈性網卡頁面,找到目標實例,單擊操作列下的綁定實例,將已創建的彈性網卡綁定至ECS-A實例。
在Workbench控制臺頁面,登錄ECS-A實例,本文以Alibaba Cloud Linux 3.2104 LTS 64位操作系統為例,展示網卡和路由信息,并配置策略路由。
分別執行
ifconfig
、route -n
命令查看彈性網卡和路由表信息。配置策略路由
說明ECS實例重啟后,配置的策略路由會失效。
執行如下命令,配置策略路由。
參數說明:
ip -4 route add default via “eth1子網網關” dev eth1 table “路由表名稱” ip -4 rule add from “eth1網卡地址” lookup “路由表名稱”
命令示例:
ip -4 route add default via 172.16.10.253 dev eth1 table 101 ip -4 rule add from 172.16.10.145 lookup 101
執行
ip rule
命令以查看策略路由的配置情況。
說明ECS實例重啟后,配置的策略路由不會失效。
執行以下命令,打開
/etc/rc.local
文件。vim /etc/rc.local
按
i
鍵進入編輯模式,添加如下內容,然后按Esc
鍵退出編輯模式,輸入:wq
保存退出。參數說明:
ip -4 route add default via “eth1子網網關” dev eth1 table “路由表名稱” ip -4 rule add from “eth1網卡地址” lookup “路由表名稱”
代碼示例
ip -4 route add default via 172.16.10.253 dev eth1 table 101 ip -4 rule add from 172.16.10.145 lookup 101
執行以下命令,為
/etc/rc.local
文件添加執行權限。sudo chmod +x /etc/rc.local
重要如果您的ECS實例無法識別綁定的彈性網卡,您需要在ECS實例內部配置彈性網卡以識別IP地址。
步驟三:配置彈性公網IP
在彈性公網IP管理控制臺頁面,找到目標EIP(8.XX.XX.87),單擊操作列下的解綁資源。然后再單擊操作列下的綁定資源。
將EIP綁定至彈性網卡(私網地址為:172.16.10.145)。
步驟四:配置NAT網關
創建公網NAT網關,并綁定EIP。
在左側導航欄中,選擇
,單擊創建公網NAT網關。在彈性公網IP管理控制臺頁面,找到CLB綁定的EIP(39.XX.XX.35),單擊操作列下的解綁資源。
返回公網NAT網關頁面,找到目標實例,單擊彈性公網IP列下的立即綁定。將解綁的EIP(39.XX.XX.35)綁定至公網NAT網關。
建立公網NAT網關與負載均衡CLB實例之間的映射關系。
登錄傳統型負載均衡CLB控制臺,在實例管理頁面,找到目標實例,查看實例專有網絡地址。
返回公網NAT網關頁面,找到目標實例,單擊操作列下的設置DNAT。
在DNAT管理頁簽,單擊創建DNAT條目。私網端口為CLB實例的監聽器端口號。
說明端口設置若選擇為任意端口后:
DNAT條目中配置了IP映射方式的EIP不能再被其他DNAT條目或SNAT條目使用。
如果NAT網關既配置了DNAT IP映射方式,又配置了SNAT條目,則ECS實例會優先通過DNAT IP映射方式的EIP訪問公網。
建立公網NAT網關與VPC實例之間的映射關系,您也可以根據自身需求,調整SNAT條目粒度。
單擊SNAT管理頁簽,創建SNAT條目。
重要若您的交換機綁定至自定義路由表,則需要您在自定義路由表中手動配置目標網段為0.0.0.0/0,下一跳為公網NAT網關的路由條目。
結果驗證
CLB服務運行驗證
在瀏覽器中輸入
http://39.XX.XX.35
確認CLB實例的流量分發狀態正常。將ECS-B實例權重設置為0后,重新訪問時能夠正常分發至ECS-C實例。
ECS實例統一公網出口IP驗證
通過Workbench控制臺依次登錄ECS-A、ECS-B和ECS-C實例,并執行命令curl myip.ipip.net
,以確認ECS實例的公網出口IP是否一致。
ECS-A實例
由于實例內部網卡路由優先級的影響,出方向流量將默認從eth0網卡通過與SNAT條目綁定的EIP進行轉發。
eth0:私網地址:172.16.10.135,Metric:0(數字越小路由優先級越高),SNAT條目綁定的EIP:39.XX.XX.35。
eth1:私網地址:172.16.10.145,Metric:101,EIP:8.XX.XX.87。
ECS-B實例
ECS-C實例
ECS-A實例服務訪問運行驗證
登錄ECS-B實例,并執行命令ssh root@8.XX.XX.87
。通過遠程登錄的方式驗證ECS-A實例原有的訪問方式是否受到影響。
常見問題
在配置ECS實例的公網訪問時,如何判斷固定公網IP、EIP、SNAT條目和DNAT條目(任意端口)的優先級?
固定公網IP/EIP > DNAT IP映射(任意端口) > SNAT條目綁定的EIP。