簡介
本檔案介紹如何在Cisco IOS®路由器上設定網路位址轉譯(NAT)伺服器負載平衡TCP流量。
必要條件
需求
本文件沒有特定需求。
採用元件
本文件所述內容不限於特定軟體和硬體版本。本檔案適用於執行Cisco IOS的所有思科路由器和交換器。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
背景資訊
目的
從外部Internet訪問本地伺服器的使用者將使用單個URL或IP地址訪問伺服器,但是NAT裝置用於將使用者流量載入到具有映象內容的多個相同伺服器。
說明
外部使用者A和B使用外部可見的IP地址172.16.2.3(伺服器的虛擬IP地址)訪問Web伺服器的內容。 NAT路由器以循環方式將目的地為172.16.1.3的流量轉換為內部IP地址10.1.1.1、10.1.1.2和10.1.1.3,並將其轉發到相應的伺服器。從外部使用者發起的每個新會話都轉換為下一個物理伺服器IP地址。
設定
網路圖表
步驟
- 使用者A發起與虛擬伺服器IP地址172.16.2.3的TCP連線。
- NAT路由器在收到連線請求時建立NAT轉換條目,該條目分配下一個可用的實際伺服器IP地址(例如,10.1.1.1)。
- NAT路由器將目的IP地址替換為分配的實際IP地址並轉發資料包。
- 伺服器會收到封包並回覆來源。
- NAT路由器接收從伺服器返回的資料包並執行NAT表查詢。然後路由器將源地址轉換為虛擬伺服器IP地址(172.16.2.3)並轉發資料包。
- 使用者B發起與伺服器虛擬IP地址172.16.2.3的TCP會話。收到連線請求後,NAT路由器將其轉換為下一個可用的實際伺服器IP地址(例如10.1.1.2),然後將資料包轉發到伺服器。
由於靜態NAT在另一個方向是雙向的,因此資料包的目的地將被轉換。執行此形式的NAT時,由傳送TCP資料包觸發。傳送網際網路控制消息協定(ICMP)可能不會觸發NAT轉換。
非TCP流量被定向到池中的第一個地址。
與靜態內部源NAT和靜態內部源PAT不同,路由器不會響應有關全域性地址的ARP查詢,除非該地址未分配給其介面。因此,可能需要將其新增到介面(如輔助介面)。使用此轉換方法無法重定向埠(例如,80和1087)。 連線埠必須相符。
附註:NAT池IP地址不必與外部介面IP地址相同。為了說明相同的情況,此示例使用來自與實際介面IP子網172.16.1.x不同的塊172.16.2.x的IP地址。
- 定義包含實際伺服器地址的地址池。
ip nat pool NATPOOL 10.1.1.1 10.1.1.3 prefix-length 24 type rotary
- 定義允許虛擬伺服器地址的訪問清單。
access-list 1 permit host 172.16.2.3
- 啟用內部目標地址的動態轉換。
ip nat inside destination list
pool
ip nat inside destination list 1 pool NATPOOL
- 定義NAT內部和外部介面。
Interface gig0/0
ip address 10.1.1.4 255.255.255.0
Ip nat inside
Interface gig0/1
ip address 172.16.1.1 255.255.255.248
Ip nat outside
當有人嘗試訪問IP地址172.16.2.3時,IP地址10.1.1.1、10.1.1.2和10.1.1.3現在將以旋轉方式分配
驗證
為了驗證這一點,請從外部主機向虛擬IP地址發起多個TCP會話。調試IP NAT t轉換/show ip nat translation輸出可用於驗證。
Router#
Router#
*Jul 24 13:27:41.193: NAT*: s=192.168.1.1, d=172.16.2.3->10.1.1.3 [22864]
*Jul 24 13:27:41.196: NAT*: s=10.1.1.3->172.16.2.3, d=192.168.1.1 [18226]
Router#
*Jul 24 13:27:44.329: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35533]
*Jul 24 13:27:44.331: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14573]
*Jul 24 13:27:44.332: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35534]
*Jul 24 13:27:44.332: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35535]
*Jul 24 13:27:44.332: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35536]
*Jul 24 13:27:44.333: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14574]
*Jul 24 13:27:44.365: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14575]
*Jul 24 13:27:44.365: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14576]
*Jul 24 13:27:44.368: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35537]
Router#
*Jul 24 13:27:44.369: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35538]
*Jul 24 13:27:44.369: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35539]
*Jul 24 13:27:44.369: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35540]
*Jul 24 13:27:44.371: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14577]
*Jul 24 13:27:44.574: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14578]
Router#
*Jul 24 13:27:46.474: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14579]
*Jul 24 13:27:46.478: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35541]
*Jul 24 13:27:46.478: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35542]
*Jul 24 13:27:46.479: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14580]
Router#sh ip nat tr
Pro Inside global Inside local Outside local Outside global
tcp 172.16.2.3:23 10.1.1.1:23 192.168.2.1:49703 192.168.2.1:49703
tcp 172.16.2.3:23 10.1.1.2:23 192.168.2.1:50421 192.168.2.1:50421
tcp 172.16.2.3:80 10.1.1.3:80 192.168.1.1:26621 192.168.1.1:26621
Router#
疑難排解
目前尚無適用於此組態的具體疑難排解資訊。
限制
- 它無法檢測組中的內部伺服器是否出現故障。這表示Cisco IOS總是將流量轉送到組中的伺服器,而不管其運行狀態如何。
- 它無法確定內部伺服器的實際負載,因此無法有效地執行負載均衡。