私網(wǎng)用戶如何用公網(wǎng)地址訪問本地私網(wǎng)內(nèi)的SERVER
私網(wǎng)用戶如何用公網(wǎng)地址訪問本地私網(wǎng)內(nèi)的SERVERNA T (Network Address Translation,地址轉(zhuǎn)換)是將IP 數(shù)據(jù)報報頭中的IP 地址轉(zhuǎn)換為另一個IP 地址的過程。在實際應
私網(wǎng)用戶如何用公網(wǎng)地址訪問本地私網(wǎng)內(nèi)的SERVER
NA T (Network Address Translation,地址轉(zhuǎn)換)是將IP 數(shù)據(jù)報報頭中的IP 地址轉(zhuǎn)換為另一個IP 地址的過程。在實際應用中,NA T 主要用于實現(xiàn)私有網(wǎng)絡訪問外部網(wǎng)絡的功能。這種通過使用少量的公有IP 地址代表多數(shù)的私有IP 地址的方式將有助于減緩可用IP 地址空間枯竭的速度。在實際應用中,可能需要提供給外部一個訪問內(nèi)部主機的機會,如提供給外部一個WWW 的服務器,或是一臺FTP 服務器。使用NA T 可以靈活地添加內(nèi)部服務器,例如,可以使用202.169.10.10作為Web 服務器的外部地址;使用202.110.10.11作為FTP 服務器的外部地址;甚至還可以使用202.110.10.12:8080這樣的地址作為Web 的外部地址;還可為外部用戶提供多臺同樣的服務器(如提供多臺Web 服務器)。在實際應用當中,用戶有這樣的需求:本地私網(wǎng)用戶想通過域名(SERVER 的公網(wǎng)地址)訪問其私網(wǎng)的SERVER 。正常情況下是訪問不了的,只有通過訪問SERVER 的私網(wǎng)IP 地址才可以。據(jù)說其他廠家的路由器可以實現(xiàn)私網(wǎng)用戶通過公網(wǎng)IP 地址來訪問本地私網(wǎng)內(nèi)的SERVER ,也可以通過配置私網(wǎng)的DNS 來解決。實現(xiàn)方式有很多種,本文只討論華為-3COM 路由器是如何可以通過其他配置手段來達到私網(wǎng)地址可以通過公網(wǎng)IP 地址來訪問本地私網(wǎng)內(nèi)的SERVER 。下面方案都是建立在SERVER 可以支持配置兩個IP 地址的基礎之上的。
如下圖所示,要求PC2通過SERVER 的公網(wǎng)地址1.1.1.5訪問該服務器,分為兩種情況來討論:
PC1 主用地址:
1.1.1.3/24
Gateway:1.1.1.2
192.168.0.2 /24 SERVER 備用地址:
192.168.0.254
/24
,一、SERVER 的公網(wǎng)地址和路由器R2的公網(wǎng)接口不一樣,有兩個或兩個以上公網(wǎng)IP
方案一:公網(wǎng)接口不要配置NA T SERVER
要求SERVER 支持兩個IP 地址,一個是公網(wǎng)地址,另一個是私網(wǎng)地址;R2支持路由重定向。
R2上的配置數(shù)據(jù):
acl number 2000 //定義ACL 用做接口做NA T 使用
rule 0 permit source 192.168.0.0 0.0.0.255
rule 1 deny
interface Ethernet0/0
ip address 192.168.0.1 255.255.255.0 //私網(wǎng)接口
interface Ethernet1/0
ip address 1.1.1.1 255.255.255.0 //公網(wǎng)接口
nat outbound 2000 //做Easy NAT ,為私網(wǎng)IP 訪問外網(wǎng)使用
arp-proxy enable //做ARP 代理,為R1訪問SERVER 使用
ip route-static 1.1.1.5 255.255.255.255 192.168.0.254 preference 60
ip route-static 0.0.0.0 255.255.255.255 1.1.1.2 preference 60
SERVER 的上的配置:
主用IP 地址:1.1.1.3/24 網(wǎng)關:1.1.1.2(只要保證和主用IP 地址在同一個網(wǎng)段就可以了)。
下面是關鍵配置,可能比較難了解為什么這樣配置:
備用IP 地址:192.168.0.254/24 網(wǎng)關:不要配置
配置一條靜態(tài)ARP :arp –s 1.1.1.2 00E0-FC5B-7E58 (此MAC 是R2的Eth0/0接口的MAC 地址)
1、 公網(wǎng)接口如果是以太口,那么一般要求在該接口上啟用ARP 代理,這是因為ISP
在向用戶分配IP 地址的時候,SERVER 的公網(wǎng)IP 地址和路由器的公網(wǎng)接口IP 地址一般是同一個網(wǎng)段的。還有一種方法就在R1上做一條32位掩碼的主機路由指向1.1.1.3,但是這樣一般都不太現(xiàn)實,R1是在ISP 側(cè)。
2、 路由器的公網(wǎng)接口不用配置NA T SERVER靜態(tài)映射私網(wǎng)的IP 地址。
3、 配置一條32位的靜態(tài)路由,目的地址是SERVER 的公網(wǎng)接口地址,下一條是
,SERVER 的私網(wǎng)地址。
4、 配置acl 2000,在公網(wǎng)接口Ethernet1/0做Easy nat,為私網(wǎng)用戶上公網(wǎng)使用。
5、 因為外網(wǎng)用戶是通過公網(wǎng)的IP 地址訪問SERVER 的,而SERVER 已經(jīng)暴露在
公網(wǎng)上,所以如果只想把外網(wǎng)用戶訪問SERVER 的固定端口,可以通過ACL 來做限制,防止SERVER 收到外網(wǎng)攻擊。比如只要外網(wǎng)訪問SERVER 的WWW 端口,可以通過ACL 做響應的限制,然后在公網(wǎng)接口的inbound 方向下發(fā)ACL 。
6、 SERVER 的公網(wǎng)網(wǎng)關的IP 地址靜態(tài)ARP ,主要是用來封裝SERVER 發(fā)出去的報
文,MAC 是R2的Eth0/0,可以把報文的目的MAC 封裝為R2的Eth0/0的MAC ,這樣就把報文發(fā)給R2。
7、 SERVER 的備用IP 地址作用是響應R2發(fā)出的重定向報文使用的。
8、 報文轉(zhuǎn)發(fā)過程:
PC2(私網(wǎng)用戶)訪問SERVER 域名的報文轉(zhuǎn)發(fā)過程,經(jīng)過DNS 解析到公網(wǎng)地址是
1.1.1.3,而后PC2就用1.1.1.3封裝報文,該報文目的地址是1.1.1.3,源地址是192.168.0.2。PC2把報文送給網(wǎng)關R2處理,R2根據(jù)報文的目的地址(1.1.1.3),查詢路由表發(fā)現(xiàn)一個32位的靜態(tài)路由,其下一條指向Ethernet1/0接口下192.168.0.254,由于報文的入接口和出現(xiàn)接口是一樣,所以R2發(fā)出重定向報文告知PC2,實際的下一條是192.168.0.254,然后PC2發(fā)出ARP 請求,來解析192.168.0.254的MAC 地址。SERVER 收到ARP 請求報文后,回應ARP 響應報文給R2,告知192.168.0.254的MAC 是自己的MAC 。R2收到ARP 回應信息,把報文的目的MAC 封裝為SERVER 的MAC 地址后,再發(fā)給SERVER ,SERVER 收到報文后進行上層處理;SERVER 回應報文給PC2報文的目的IP 地址是192.168.0.2,源地址是1.1.1.3。SERVER 查看本地路由表發(fā)現(xiàn)192.168.0.2是本地的一條直連路由(因為SERVER 的備用IP 地址是192.168.0.254),然后SERVER 發(fā)出ARP 請求解析192.168.0.2的MAC 地址。PC2收到ARP 請求后,就回應ARP 響應信息給SERVER ,告知其MAC 是多少。SERVER 收到ARP 回應后,就把目的MAC 封裝為PC2的MAC 地址,發(fā)給PC2處理,以后的報文轉(zhuǎn)發(fā)都不需要經(jīng)過R2來處理,直接在PC2和SERVER 之間進行,這樣就完成報文發(fā)送和接受過程。
PC1(公網(wǎng)用戶)訪問SERVER 域名的報文轉(zhuǎn)發(fā)過程,PC1發(fā)出的報文的目的IP 地址是SERVER 的主用IP 地址(1.1.1.3),源地址是本身IP 地址(2.2.2.2),由于源地址和目的地址不在同一個網(wǎng)段,所以送網(wǎng)關R1處理。R1收到報文后,根據(jù)報文的
,目的IP 地址查看本地路由表,發(fā)現(xiàn)1.1.1.3匹配是本地的直連路由網(wǎng)段,發(fā)出ARP 請求。R2收到后,由于R2的公網(wǎng)接口(Eth1/0)啟用了ARP 代理,并且本地有一條32掩碼的路由,就回應ARP 響應信息給R1,告知R1其MAC 地址是自己的接口的MAC 地址,R2收到ARP 回應信息后,就把R2的Eth1/0接口的MAC 做為目的MAC 封裝報文,發(fā)給R2。R2收到報文后,根據(jù)目的IP 地址查看本地路由表,發(fā)現(xiàn)一條32位掩碼的主機路由,其下一條是192.168.0.254,然后發(fā)出ARP 請求解析192.168.0.254的MAC 地址。因為192.168.0.254是SERVER 的備用IP 地址,所以收到ARP 請求后,就回應ARP 響應信息給R2。R2就用SERVER 的MAC 來封裝報文,發(fā)給SERVER ,SERVER 收到報文就進行上層處理;當SERVER 回應報文給PC1的時候,目的IP 地址是2.2.2.2源地址是1.1.1.3,SERVER 就送網(wǎng)關處理,由于網(wǎng)關的地址是1.1.1.2,并且已經(jīng)通過手動配置了網(wǎng)關的ARP 表項(注意ARP 表項的MAC 一定要是R2的私網(wǎng)接口的MAC 地址),所以SERVER 用R2的私網(wǎng)接口的MAC 來封裝報文發(fā)給R2。R2收到該報文后,查看路由表發(fā)給R1,然后R1再發(fā)給PC1。
方案二:公網(wǎng)接口配置NA T SERVER
要求SERVER 支持兩個IP 地址,一個是公網(wǎng)地址,另一個是私網(wǎng)地址;R2支持路由重定向,具體配置和組網(wǎng)圖如下:
R1
主用地址: 192.168.0.254/24
Gateway:
192.168.0.1
備用地址:
192.168.0.2 /24 SERVER 1.1.1.3
Gateway 不用配置
R2的配置:
PC1
,acl number 2000
rule 0 permit source 192.168.0.0 0.0.0.255
rule 1 deny
interface Ethernet0/0
ip address 192.168.0.1 255.255.255.0
interface Ethernet1/0
ip address 1.1.1.1 255.255.255.0
nat outbound 2000
nat server protocol tcp global 1.1.1.3 ftp inside 192.168.0.254 ftp
nat server protocol tcp global 1.1.1.3 www inside 192.168.0.254 www
與上面方案不一樣的地方:
1、 公網(wǎng)接口做NA T SERVER發(fā)布,不需要在公網(wǎng)接口啟用ARP 代理。
2、 SERVER 的主用地址是私網(wǎng)地址192.168.0.254,網(wǎng)關是192.168.0.1,備用地址
是公網(wǎng)地址1.1.1.3,但是不能配置備用地址的網(wǎng)關。相對于上面的方案,該方案顯得要簡單一些,但是兩種方案都要求SERVER 支持兩個IP 地址,報文轉(zhuǎn)發(fā)過程可以參考上面的方案中的描述。
二、SERVER 的公網(wǎng)地址和路由器R2的公網(wǎng)接口一樣,即只有一個公網(wǎng)地址
有時候,只一個公網(wǎng)IP 地址,這時候需要在R2的私網(wǎng)接口和私網(wǎng)接口做策略路由這中方案,要求R2的公網(wǎng)接口是點到點,公網(wǎng)接口Serial0/0采用借用方式,公網(wǎng)地址只做SERVER 的備用IP 地址使用,因為以太口不支持地址借用,如果只有一個公網(wǎng)IP 地址的話,R2的公網(wǎng)接口也要配置IP 地址,但是策略路由不支持目的地址是本地接口的策略路由轉(zhuǎn)發(fā),所以當只有一個公網(wǎng)IP 的時候,公網(wǎng)接口只能才用點到點的方式,下面是組網(wǎng)圖和配置:
,R1
地址
主用地址: 192.168.0.254/24
Gateway:
192.168.0.1
備用地址:
192.168.0.2 /24 SERVER 1.1.1.1
Gateway 不用配置
R2的配置:
acl number 2000
rule 0 permit source 192.168.0.0 0.0.0.255
rule 1 deny
acl number 3000
rule 0 permit tcp destination 1.1.1.1 0
interface Ethernet0/0
ip address 192.168.0.1 255.255.255.0
ip policy route-policy test
interface Serial0/0
clock DTECLK1
link-protocol ppp
ip address unnumbered interface Ethernet0/0
nat outbound 2000
nat server protocol tcp global 1.1.1.1 ftp inside 192.168.0.254 ftp nat server protocol tcp global 1.1.1.1 www inside 192.168.0.254 www route-policy test permit node 10
if-match acl 3000
PC1
,apply ip-address next-hop 192.168.0.254
ip route-static 0.0.0.0 0.0.0.0 Serial 0/0 preference 60
配置解析:
1、 做策略路由主要為私網(wǎng)用戶訪問SERVER 公網(wǎng)地址服務的,只要私網(wǎng)訪問
SERVER 的公網(wǎng)地址,就會被R2通過策略路由重定向到192.168.0.254。
2、 公網(wǎng)接口做NA T SERVER發(fā)布,是給公網(wǎng)用戶訪問SERVER 使用的。
報文轉(zhuǎn)發(fā)過程,公網(wǎng)用戶訪問SERVER 的報文轉(zhuǎn)發(fā)過程很簡單,下面主要解釋私網(wǎng)用戶用公網(wǎng)IP 地址訪問SERVER 的報文轉(zhuǎn)發(fā)過程:
PC2訪問SERVER 的時候,通過DNS 解析到的是SERVER 的公網(wǎng)IP 地址1.1.1.1,那么報文的目的地址是1.1.1.1,源地址就是192.169.0.254。由于源地址和目的不在同一個網(wǎng)段,PC2送網(wǎng)關R2處理,R2收到此報文后,由于策略路由優(yōu)先匹配,報文下一跳變成192.168.0.254。PC2發(fā)出ARP 請求解析192.168.0.254的MAC 地址,SERVER 收到ARP 請求后,回應ARP 信息給PC2。然后PC2用SERVER 的MAC 地址來封裝報文(此時報文的目的MAC 地址是SEVER 的MAC 地址),發(fā)給SERVER ,SERVER 收到此報文送給上層處理。SERVER 回應報文給PC2的時候,目的IP 地址是192.168.0.2,由于此地址和SERVER 的主用地址是同一個網(wǎng)段,可以直接發(fā)給PC2,注意此時報文的源地址是1.1.1.1。以后報文轉(zhuǎn)發(fā)是直接在PC2和SERVER 之間進行了,不需要再經(jīng)過R2。
綜上所述,三種方案都要求路由器支持路由重定向和SERVER 支持配置兩個IP 地址,目前華三的路由器都支持路由重定向,而且大部分SERVER 都支持配置兩個IP 地址,三種方案都有一定局限性,是目前私網(wǎng)用戶不用公網(wǎng)地址訪問本地私網(wǎng)的SERVER 問題的補救措施,特別是最后一種方案,當用戶只申請一個公網(wǎng)IP 地址的時候,路由器只能通過點到點方式連接公網(wǎng)。從經(jīng)在實驗室中用以太口連接公網(wǎng),公網(wǎng)IP 地址在R2的公網(wǎng)接口和SERVER 都配置了,策略路由偶爾可以生效,但是大部分都是不可以的,因為華三路由不支持目的地址是本地的報文進行策略路由轉(zhuǎn)發(fā),至少目前還不行。在上面結束的三種方案中,條件允許的話,推薦用方案二。
實際上除了上面討論的三種方案之外,還有一種方案,就是在PC2上配置一條路由目的地址就是SERVER 的公網(wǎng)地址1.1.1.1,下一跳是SERVER 的私網(wǎng)地址,這不需要在R2上做策略路由,一個公網(wǎng)IP 地址也可以。但是這種方案,只能用在局域網(wǎng)內(nèi)比較少的PC 才可以,可以根據(jù)實際情況的不同,采用不同的方案。