ALB擴充版的動態轉寄能力可從請求中即時提取目標地址並直接轉寄,無需預先註冊後端,適用於AI Agent Sanbox沙箱調度、海量動態後端入口網關等後端地址動態變化的情境;並通過IP位址區段類型伺服器組約束目標範圍,防止流量轉寄至未授權後端。
適用情境
動態轉寄適用於後端地址隨請求動態變化、後端執行個體數量龐大的情境,典型如下:
-
AI Agent沙箱流量調度:AI Agent推理、代碼執行等情境運行在大量按需拉起的沙箱執行個體(如各種Sandbox產品的Pod)上,上層調度器將目標沙箱執行個體的IP和連接埠寫入要求標頭,ALB提取後直接轉寄,無需預先註冊頻繁變化的沙箱後端。
-
小程式與H5遊戲單網域名稱轉寄:小程式等平台通常僅允許配置一個合法網域名稱,可在單一網域名稱下通過URL參數(如
?ip=1.1.X.X&port=1111)將請求路由到不同的遊戲伺服器執行個體,替代自建Nginx方案。 -
海量動態後端:當後端執行個體數量龐大時,動態轉寄按請求即時定址,無需逐一註冊後端,僅需配置允許轉寄的IP位址區段和連接埠範圍,單個執行個體即可承載海量動態後端,避免因伺服器組配額限制而拆分為多個執行個體。
方案架構
用戶端請求到達擴充版ALB執行個體後,轉寄規則將流量交給IP位址區段類型伺服器組所關聯的動態轉寄組件。組件依次經過端點提取、目標範圍校正、動態轉寄三個階段,確定真實的目標IP和連接埠,命中允許的目標範圍則直接轉寄到該地址,未命中則返回403。
-
擴充版ALB執行個體:提供負載平衡和流量轉寄能力。
-
IP位址區段類型伺服器組:以IP位址區段和連接埠範圍聲明動態轉寄允許命中的目標範圍,必須關聯包含動態轉寄組件的服務擴充。
-
服務擴充:承載動態轉寄組件,綁定到IP位址區段類型伺服器組生效。
-
動態轉寄組件:從請求的查詢參數或要求標頭中提取目標主機和連接埠,完成目標範圍校正後將請求轉寄給後端。
適用範圍
-
使用者已擷取ALB擴充版公測資格。
-
使用者已在華東2(上海)地區建立一個專用網路
VPC1,分別在可用性區域B和可用性區域F建立交換器VSW1和VSW2。
操作步驟
1. 建立擴充版 ALB 執行個體
-
登入ALB控制台,選擇華東2(上海)地區,單擊建立應用型負載平衡。
-
在購買頁完成以下配置,單擊立即建立。
-
地區:選擇華東2(上海)。
-
執行個體網路類型:選擇公網。
-
VPC和可用性區域:選擇
VPC1,勾選上海 可用性區域B和上海 可用性區域F後選擇VSW1和VSW2,並自動分配公網IP。 -
協議版本:選擇IPv4。
-
功能版本(執行個體費):選擇擴充版。
-
-
在確認訂單頁面確認執行個體配置詳情,單擊立即開通。
2. 建立服務擴充並添加動態轉寄組件
-
在服務擴充控制台,單擊建立服務擴充。在服務擴充配置地區,輸入服務副檔名稱如
ext-dyn-fwd-plugin。 -
擴充類型預設選擇外掛程式,組件名稱下拉選擇動態轉寄。在快捷配置(點擊自動填滿當前規則參數)下方單擊常用Header使用系統預置模板,然後單擊建立。
-
提取來源:預設值Header,即從HTTP要求標頭中提取目標IP和連接埠。
-
提模數式:預設值分離模式,目標IP和連接埠位於兩個不同欄位,需分別指定。
-
目標Host來源:預設值
X-Target-Host,動態轉寄組件從該要求標頭讀取目標IP。 -
目標Port來源:預設值
X-Target-Port,動態轉寄組件從該要求標頭讀取目標連接埠。 -
預設連接埠:預設值
80,未從請求中提取到連接埠時的兜底連接埠。
-
動態轉寄組件不支援與其他組件添加到同一個服務擴充。
3. 準備後端服務
-
參考以下配置,建立一台ECS。ECS所在安全性群組需放通
VPC1的網段IP。-
地區:選擇華東2(上海)。
-
網路及可用區:選擇
VPC1和VSW1,並勾選指定主網卡主私網IP地址。本文中VSW1對應IP位址區段172.16.10.0/24,指定主網卡主私網IP地址為172.16.10.100。 -
鏡像:選擇
Alibaba Cloud Linux 3.2104 LTS 64位。
-
-
在找到該執行個體,依次單擊操作列的
> 網絡和安全性群組 > 管理輔助私網 IP。單擊增加,填入172.16.10.101後單擊確定。參考作業系統識別輔助私網IP地址配置使ECS識別該IP。串連ECS並輸入ip a,可看到ECS已識別輔助私網地址。2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:16:3e:xx:xx:xx brd ff:ff:ff:ff:ff:ff altname enp3s0 inet 172.16.10.100/24 brd 172.16.10.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet 172.16.10.101/24 brd 172.16.10.255 scope global secondary noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::xxxx:xxff:fexx:xxxx/64 scope link valid_lft forever preferred_lft forever -
在後端ECS上安裝nginx並部署echo回顯服務,監聽80和81連接埠,對任意請求返回其實際到達的目標
IP:Port,用於驗證動態轉寄的落點。# 1. 安裝 nginx sudo dnf install -y nginx # 2. 寫入 echo 回顯配置 sudo tee /etc/nginx/conf.d/echo.conf >/dev/null <<'EOF' server { listen 80 default_server; listen 81 default_server; server_name _; location / { default_type text/plain; return 200 "served: $server_addr:$server_port\n"; } } EOF # 3. 去掉內建預設網站的 default_server 標記,避免衝突 sudo sed -i 's/ default_server//g' /etc/nginx/nginx.conf # 4. 校正配置、設定開機自啟並啟動 sudo nginx -t sudo systemctl enable nginx sudo systemctl restart nginx # 5. 本機自測 curl 172.16.10.100:80 curl 172.16.10.100:81 curl 172.16.10.101:80 curl 172.16.10.101:81
4. 建立 IP 位址段類型伺服器組
動態轉寄根據請求內容決定轉寄目標,若不加約束可能被構造請求誘導轉寄到非預期地址,形成SSRF風險。配置IP位址區段伺服器組作為強制安全邊界:僅當目標IP與連接埠命中允許存取條目才轉寄,未命中一律返回403。
-
在伺服器組控制台,單擊建立伺服器組。
-
完成以下配置,單擊建立。
-
伺服器群組類型:選擇IP位址區段。
-
伺服器組名稱:輸入自訂名稱如
sgp-dyn-fwd。 -
後端協議:預設選擇HTTP。
-
使用已有服務擴充並勾選步驟1中建立的服務擴充
ext-dyn-fwd-plugin。
-
-
待伺服器組建立成功,單擊添加後端伺服器。在添加IP位址區段視窗,輸入IP位址區段
172.16.10.0/24,連接埠範圍80-81,單擊確定。
5. 建立監聽
-
在ALB控制台,單擊目標執行個體ID進入執行個體詳情頁。在監聽頁簽單擊建立監聽。
-
在配置監聽步驟,選擇監聽協議為HTTPS,監聽通信埠填寫
443,完成後單擊下一步。 -
在配置SSL認證步驟,選擇與自訂網域名匹配的伺服器憑證,單擊下一步。
-
在選擇伺服器組步驟,依次選擇IP位址區段類型和伺服器組
sgp-dyn-fwd,完成後單擊下一步。此處使用預設轉寄規則將流量轉寄至IP位址區段伺服器組。如需疊加身份鑒權、限速等能力,可在監聽下另建轉寄規則並關聯對應服務擴充。
-
在組態稽核步驟,確認配置並單擊提交。
6. 設定網域名稱解析
將自有網域名稱通過CNAME解析指向ALB執行個體的DNS名稱,用戶端通過自有網域名稱訪問ALB。
本文以阿里雲Alibaba Cloud DNS為例,對於非阿里雲註冊網域名稱,需先將網域名稱添加到雲解析控制台。
7. 驗證測試
請求需滿足以下條件才能被正常響應:
-
動態轉寄組件能夠從請求中提取出目標IP和連接埠(未顯式攜帶連接埠時以預設連接埠兜底)。
-
該IP和連接埠的組合落在IP位址區段伺服器組的允許存取範圍內。
-
後端服務在上述IP和連接埠監聽並返迴響應。
請求攜帶合法目標地址
轉寄到主IP地址
curl -v \
-H "X-Target-Host: 172.16.10.100" \
-H "X-Target-Port: 80" \
https://test.example.com/echo
預期響應:HTTP 200,回顯served: 172.16.10.100:80。
轉寄到輔助IP(驗證不同IP)
curl -v \
-H "X-Target-Host: 172.16.10.101" \
-H "X-Target-Port: 80" \
https://test.example.com/echo
預期響應:HTTP 200,回顯served: 172.16.10.101:80。證明目標IP隨請求動態變化。
轉寄到不同連接埠(驗證不同連接埠)
curl -v \
-H "X-Target-Host: 172.16.10.100" \
-H "X-Target-Port: 81" \
https://test.example.com/echo
預期響應:HTTP 200,回顯served: 172.16.10.100:81。證明目標連接埠同樣隨請求動態變化。
不攜帶連接埠(驗證預設連接埠兜底)
curl -v \
-H "X-Target-Host: 172.16.10.101" \
https://test.example.com/echo
預期響應:HTTP 200,回顯served: 172.16.10.101:80。請求未攜帶連接埠,動態轉寄組件以預設連接埠80兜底。
請求未攜帶目標地址
curl -v \
https://test.example.com/echo
預期響應:HTTP 403,回顯endpoint not provided。動態轉寄組件無法從請求中提取目標IP地址。
目標地址或連接埠未在允許範圍內
curl -v \
-H "X-Target-Host: 10.99.99.99" \
-H "X-Target-Port: 80" \
https://test.example.com/echocurl -v \
-H "X-Target-Host: 172.16.10.100" \
-H "X-Target-Port: 12345" \
https://test.example.com/echo
預期響應:HTTP 403,回顯endpoint not allowed。提取到的IP地址或連接埠因未落在伺服器組允許範圍內被拒絕。
更多資訊
計費說明
使用限制
-
動態轉寄後端協議當前僅支援HTTP。
-
IP位址區段類型伺服器組不支援添加
22.0.0.0/8、33.0.0.0/8、100.0.0.0/8、127.0.0.0/8等位址區段。 -
單個IP位址區段類型伺服器組預設支援最多200條IP段條目(每條為一個IP段與連接埠範圍的組合)。
ALB擴充版支援的地區
|
地區 |
地區 |
可用性區域 |
|
中國 |
華北6(烏蘭察布) |
可用性區域A、可用性區域B、可用性區域C |
|
華東1(杭州) |
可用性區域J、可用性區域K |
|
|
華北2(北京) |
可用性區域I、可用性區域K、可用性區域L |
|
|
華東2(上海) |
可用性區域B、可用性區域F |
|
|
中國香港 |
可用性區域B、可用性區域C、可用性區域D |
|
|
亞太地區 |
新加坡 |
可用性區域A、可用性區域B、可用性區域C |
|
日本(東京) |
可用性區域B、可用性區域C、可用性區域E |
|
|
馬來西亞(吉隆坡) |
可用性區域A、可用性區域B、可用性區域C |
|
|
歐美地區 |
德國(法蘭克福) |
可用性區域A、可用性區域B |
|
美國(矽谷) |
可用性區域A、可用性區域B |
|
|
中東 |
阿聯酋(杜拜) |
可用性區域A、可用性區域B |
使用建議
-
合理排序多條目標地址提取配置:配置多條目標地址提取配置時,系統按配置序號從小到大依次匹配,首條命中即生效。建議將命中率最高、最嚴格的配置排在前面。
-
收斂允許的目標範圍:在保障業務可用的前提下,盡量收斂IP位址區段與連接埠範圍,僅允許存取業務實際需要的後端,避免配置過寬的範圍。
-
配合轉寄規則靈活使用:IP位址區段類型伺服器組可作為轉寄規則的轉寄目標,與轉寄條件、服務擴充、轉寄動作靈活組合,滿足複雜流量編排需求。
常見問題
請求全部403,響應endpoint not allowed
確認IP位址區段伺服器組已正確配置IP和連接埠範圍,且請求攜帶的目標IP和連接埠落在該範圍中。
請求全部403,響應體endpoint not provided
檢查請求是否包含X-Target-Host、X-Target-Port等欄位,可查看ALB訪問日誌確認。