私網(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ù)報(bào)報(bào)頭中的IP 地址轉(zhuǎn)換為另一個(gè)IP 地址的過程。在實(shí)際應(yīng)
私網(wǎng)用戶如何用公網(wǎng)地址訪問本地私網(wǎng)內(nèi)的SERVER
NA T (Network Address Translation,地址轉(zhuǎn)換)是將IP 數(shù)據(jù)報(bào)報(bào)頭中的IP 地址轉(zhuǎn)換為另一個(gè)IP 地址的過程。在實(shí)際應(yīng)用中,NA T 主要用于實(shí)現(xiàn)私有網(wǎng)絡(luò)訪問外部網(wǎng)絡(luò)的功能。這種通過使用少量的公有IP 地址代表多數(shù)的私有IP 地址的方式將有助于減緩可用IP 地址空間枯竭的速度。在實(shí)際應(yīng)用中,可能需要提供給外部一個(gè)訪問內(nèi)部主機(jī)的機(jī)會,如提供給外部一個(gè)WWW 的服務(wù)器,或是一臺FTP 服務(wù)器。使用NA T 可以靈活地添加內(nèi)部服務(wù)器,例如,可以使用202.169.10.10作為Web 服務(wù)器的外部地址;使用202.110.10.11作為FTP 服務(wù)器的外部地址;甚至還可以使用202.110.10.12:8080這樣的地址作為Web 的外部地址;還可為外部用戶提供多臺同樣的服務(wù)器(如提供多臺Web 服務(wù)器)。在實(shí)際應(yīng)用當(dāng)中,用戶有這樣的需求:本地私網(wǎng)用戶想通過域名(SERVER 的公網(wǎng)地址)訪問其私網(wǎng)的SERVER 。正常情況下是訪問不了的,只有通過訪問SERVER 的私網(wǎng)IP 地址才可以。據(jù)說其他廠家的路由器可以實(shí)現(xiàn)私網(wǎng)用戶通過公網(wǎng)IP 地址來訪問本地私網(wǎng)內(nèi)的SERVER ,也可以通過配置私網(wǎng)的DNS 來解決。實(shí)現(xiàn)方式有很多種,本文只討論華為-3COM 路由器是如何可以通過其他配置手段來達(dá)到私網(wǎng)地址可以通過公網(wǎng)IP 地址來訪問本地私網(wǎng)內(nèi)的SERVER 。下面方案都是建立在SERVER 可以支持配置兩個(gè)IP 地址的基礎(chǔ)之上的。
如下圖所示,要求PC2通過SERVER 的公網(wǎng)地址1.1.1.5訪問該服務(wù)器,分為兩種情況來討論:




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)接口不一樣,有兩個(gè)或兩個(gè)以上公網(wǎng)IP
方案一:公網(wǎng)接口不要配置NA T SERVER
要求SERVER 支持兩個(gè)IP 地址,一個(gè)是公網(wǎng)地址,另一個(gè)是私網(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)關(guān):1.1.1.2(只要保證和主用IP 地址在同一個(gè)網(wǎng)段就可以了)。
下面是關(guān)鍵配置,可能比較難了解為什么這樣配置:
備用IP 地址:192.168.0.254/24 網(wǎng)關(guān):不要配置
配置一條靜態(tài)ARP :arp –s 1.1.1.2 00E0-FC5B-7E58 (此MAC 是R2的Eth0/0接口的MAC 地址)
1、 公網(wǎng)接口如果是以太口,那么一般要求在該接口上啟用ARP 代理,這是因?yàn)镮SP
在向用戶分配IP 地址的時(shí)候,SERVER 的公網(wǎng)IP 地址和路由器的公網(wǎng)接口IP 地址一般是同一個(gè)網(wǎng)段的。還有一種方法就在R1上做一條32位掩碼的主機(jī)路由指向1.1.1.3,但是這樣一般都不太現(xiàn)實(shí),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、 因?yàn)橥饩W(wǎng)用戶是通過公網(wǎng)的IP 地址訪問SERVER 的,而SERVER 已經(jīng)暴露在
公網(wǎng)上,所以如果只想把外網(wǎng)用戶訪問SERVER 的固定端口,可以通過ACL 來做限制,防止SERVER 收到外網(wǎng)攻擊。比如只要外網(wǎng)訪問SERVER 的WWW 端口,可以通過ACL 做響應(yīng)的限制,然后在公網(wǎng)接口的inbound 方向下發(fā)ACL 。
6、 SERVER 的公網(wǎng)網(wǎng)關(guān)的IP 地址靜態(tài)ARP ,主要是用來封裝SERVER 發(fā)出去的報(bào)
文,MAC 是R2的Eth0/0,可以把報(bào)文的目的MAC 封裝為R2的Eth0/0的MAC ,這樣就把報(bào)文發(fā)給R2。
7、 SERVER 的備用IP 地址作用是響應(yīng)R2發(fā)出的重定向報(bào)文使用的。
8、 報(bào)文轉(zhuǎn)發(fā)過程:
PC2(私網(wǎng)用戶)訪問SERVER 域名的報(bào)文轉(zhuǎn)發(fā)過程,經(jīng)過DNS 解析到公網(wǎng)地址是
1.1.1.3,而后PC2就用1.1.1.3封裝報(bào)文,該報(bào)文目的地址是1.1.1.3,源地址是192.168.0.2。PC2把報(bào)文送給網(wǎng)關(guān)R2處理,R2根據(jù)報(bào)文的目的地址(1.1.1.3),查詢路由表發(fā)現(xiàn)一個(gè)32位的靜態(tài)路由,其下一條指向Ethernet1/0接口下192.168.0.254,由于報(bào)文的入接口和出現(xiàn)接口是一樣,所以R2發(fā)出重定向報(bào)文告知PC2,實(shí)際的下一條是192.168.0.254,然后PC2發(fā)出ARP 請求,來解析192.168.0.254的MAC 地址。SERVER 收到ARP 請求報(bào)文后,回應(yīng)ARP 響應(yīng)報(bào)文給R2,告知192.168.0.254的MAC 是自己的MAC 。R2收到ARP 回應(yīng)信息,把報(bào)文的目的MAC 封裝為SERVER 的MAC 地址后,再發(fā)給SERVER ,SERVER 收到報(bào)文后進(jìn)行上層處理;SERVER 回應(yīng)報(bào)文給PC2報(bào)文的目的IP 地址是192.168.0.2,源地址是1.1.1.3。SERVER 查看本地路由表發(fā)現(xiàn)192.168.0.2是本地的一條直連路由(因?yàn)镾ERVER 的備用IP 地址是192.168.0.254),然后SERVER 發(fā)出ARP 請求解析192.168.0.2的MAC 地址。PC2收到ARP 請求后,就回應(yīng)ARP 響應(yīng)信息給SERVER ,告知其MAC 是多少。SERVER 收到ARP 回應(yīng)后,就把目的MAC 封裝為PC2的MAC 地址,發(fā)給PC2處理,以后的報(bào)文轉(zhuǎn)發(fā)都不需要經(jīng)過R2來處理,直接在PC2和SERVER 之間進(jìn)行,這樣就完成報(bào)文發(fā)送和接受過程。
PC1(公網(wǎng)用戶)訪問SERVER 域名的報(bào)文轉(zhuǎn)發(fā)過程,PC1發(fā)出的報(bào)文的目的IP 地址是SERVER 的主用IP 地址(1.1.1.3),源地址是本身IP 地址(2.2.2.2),由于源地址和目的地址不在同一個(gè)網(wǎng)段,所以送網(wǎng)關(guān)R1處理。R1收到報(bào)文后,根據(jù)報(bào)文的
,目的IP 地址查看本地路由表,發(fā)現(xiàn)1.1.1.3匹配是本地的直連路由網(wǎng)段,發(fā)出ARP 請求。R2收到后,由于R2的公網(wǎng)接口(Eth1/0)啟用了ARP 代理,并且本地有一條32掩碼的路由,就回應(yīng)ARP 響應(yīng)信息給R1,告知R1其MAC 地址是自己的接口的MAC 地址,R2收到ARP 回應(yīng)信息后,就把R2的Eth1/0接口的MAC 做為目的MAC 封裝報(bào)文,發(fā)給R2。R2收到報(bào)文后,根據(jù)目的IP 地址查看本地路由表,發(fā)現(xiàn)一條32位掩碼的主機(jī)路由,其下一條是192.168.0.254,然后發(fā)出ARP 請求解析192.168.0.254的MAC 地址。因?yàn)?92.168.0.254是SERVER 的備用IP 地址,所以收到ARP 請求后,就回應(yīng)ARP 響應(yīng)信息給R2。R2就用SERVER 的MAC 來封裝報(bào)文,發(fā)給SERVER ,SERVER 收到報(bào)文就進(jìn)行上層處理;當(dāng)SERVER 回應(yīng)報(bào)文給PC1的時(shí)候,目的IP 地址是2.2.2.2源地址是1.1.1.3,SERVER 就送網(wǎng)關(guān)處理,由于網(wǎng)關(guān)的地址是1.1.1.2,并且已經(jīng)通過手動(dòng)配置了網(wǎng)關(guān)的ARP 表項(xiàng)(注意ARP 表項(xiàng)的MAC 一定要是R2的私網(wǎng)接口的MAC 地址),所以SERVER 用R2的私網(wǎng)接口的MAC 來封裝報(bào)文發(fā)給R2。R2收到該報(bào)文后,查看路由表發(fā)給R1,然后R1再發(fā)給PC1。
方案二:公網(wǎng)接口配置NA T SERVER
要求SERVER 支持兩個(gè)IP 地址,一個(gè)是公網(wǎng)地址,另一個(gè)是私網(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)關(guān)是192.168.0.1,備用地址
是公網(wǎng)地址1.1.1.3,但是不能配置備用地址的網(wǎng)關(guān)。相對于上面的方案,該方案顯得要簡單一些,但是兩種方案都要求SERVER 支持兩個(gè)IP 地址,報(bào)文轉(zhuǎn)發(fā)過程可以參考上面的方案中的描述。
二、SERVER 的公網(wǎng)地址和路由器R2的公網(wǎng)接口一樣,即只有一個(gè)公網(wǎng)地址
有時(shí)候,只一個(gè)公網(wǎng)IP 地址,這時(shí)候需要在R2的私網(wǎng)接口和私網(wǎng)接口做策略路由這中方案,要求R2的公網(wǎng)接口是點(diǎn)到點(diǎn),公網(wǎng)接口Serial0/0采用借用方式,公網(wǎng)地址只做SERVER 的備用IP 地址使用,因?yàn)橐蕴诓恢С值刂方栌?,如果只有一個(gè)公網(wǎng)IP 地址的話,R2的公網(wǎng)接口也要配置IP 地址,但是策略路由不支持目的地址是本地接口的策略路由轉(zhuǎn)發(fā),所以當(dāng)只有一個(gè)公網(wǎng)IP 的時(shí)候,公網(wǎng)接口只能才用點(diǎn)到點(diǎn)的方式,下面是組網(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ù)的,只要私網(wǎng)訪問
SERVER 的公網(wǎng)地址,就會被R2通過策略路由重定向到192.168.0.254。
2、 公網(wǎng)接口做NA T SERVER發(fā)布,是給公網(wǎng)用戶訪問SERVER 使用的。
報(bào)文轉(zhuǎn)發(fā)過程,公網(wǎng)用戶訪問SERVER 的報(bào)文轉(zhuǎn)發(fā)過程很簡單,下面主要解釋私網(wǎng)用戶用公網(wǎng)IP 地址訪問SERVER 的報(bào)文轉(zhuǎn)發(fā)過程:
PC2訪問SERVER 的時(shí)候,通過DNS 解析到的是SERVER 的公網(wǎng)IP 地址1.1.1.1,那么報(bào)文的目的地址是1.1.1.1,源地址就是192.169.0.254。由于源地址和目的不在同一個(gè)網(wǎng)段,PC2送網(wǎng)關(guān)R2處理,R2收到此報(bào)文后,由于策略路由優(yōu)先匹配,報(bào)文下一跳變成192.168.0.254。PC2發(fā)出ARP 請求解析192.168.0.254的MAC 地址,SERVER 收到ARP 請求后,回應(yīng)ARP 信息給PC2。然后PC2用SERVER 的MAC 地址來封裝報(bào)文(此時(shí)報(bào)文的目的MAC 地址是SEVER 的MAC 地址),發(fā)給SERVER ,SERVER 收到此報(bào)文送給上層處理。SERVER 回應(yīng)報(bào)文給PC2的時(shí)候,目的IP 地址是192.168.0.2,由于此地址和SERVER 的主用地址是同一個(gè)網(wǎng)段,可以直接發(fā)給PC2,注意此時(shí)報(bào)文的源地址是1.1.1.1。以后報(bào)文轉(zhuǎn)發(fā)是直接在PC2和SERVER 之間進(jìn)行了,不需要再經(jīng)過R2。
綜上所述,三種方案都要求路由器支持路由重定向和SERVER 支持配置兩個(gè)IP 地址,目前華三的路由器都支持路由重定向,而且大部分SERVER 都支持配置兩個(gè)IP 地址,三種方案都有一定局限性,是目前私網(wǎng)用戶不用公網(wǎng)地址訪問本地私網(wǎng)的SERVER 問題的補(bǔ)救措施,特別是最后一種方案,當(dāng)用戶只申請一個(gè)公網(wǎng)IP 地址的時(shí)候,路由器只能通過點(diǎn)到點(diǎn)方式連接公網(wǎng)。從經(jīng)在實(shí)驗(yàn)室中用以太口連接公網(wǎng),公網(wǎng)IP 地址在R2的公網(wǎng)接口和SERVER 都配置了,策略路由偶爾可以生效,但是大部分都是不可以的,因?yàn)槿A三路由不支持目的地址是本地的報(bào)文進(jìn)行策略路由轉(zhuǎn)發(fā),至少目前還不行。在上面結(jié)束的三種方案中,條件允許的話,推薦用方案二。
實(shí)際上除了上面討論的三種方案之外,還有一種方案,就是在PC2上配置一條路由目的地址就是SERVER 的公網(wǎng)地址1.1.1.1,下一跳是SERVER 的私網(wǎng)地址,這不需要在R2上做策略路由,一個(gè)公網(wǎng)IP 地址也可以。但是這種方案,只能用在局域網(wǎng)內(nèi)比較少的PC 才可以,可以根據(jù)實(shí)際情況的不同,采用不同的方案。