登录站点

用户名

密码

通过修改子网掩码长短实现NAT回环的访问效果(原创)

热16已有 229 次阅读  2011-06-04 15:01   标签:  子网掩码  NAT回环 

通过修改子网掩码长短实现NAT回环的访问效果(原创)

Bati-gol

 

首先看图

 

防火墙为内外网边界,具体环境如下:

Server 1 双网卡

连接防火墙FW的IP:172.16.1.2/24

连接内网核心交换机的IP:172.16.2.3/24

通过FW映射出去的公网IP:202.96.209.100/24(地址非真实,笔者自编)

 

Server 2 单网卡

内网IP为172.16.3.100/24

通过FW映射出去的公网IP:202.96.209.200/24(地址非真实,笔者自编)

 

要求:

1.内网通过出口IP 202.96.209.5做NAT代理上网访问Internet

2.Sever1 要求通过202.96.209.100地址访问外部,外部要求通过202.96.209.100访问Server 1,通

过202.96.209.200访问Sever2,

Server1不能直接通过内网直接访问到Server2(客户要求,安全考虑),需要通过访问Server2 对应的公网IP

202.96.209.200通过防火墙回环访问到内网的Server 2(数据转发路线看上图中红色虚线)

 

解决方案

对于第一点要求,在FW上做NAT代理上网即可。

对于第二点要求,考虑到安全,客户要求Server 1只能通过Server 2 对应的公网IP回环访问到内网Server 2。

针对这个要求,Server 1发送数据先转发至FW,然后通过Server 2在FW上映射IP回环访问到内部Server2,并且Server 2在回包时,要求采用相同路径将数据返还给Server 1,之间通讯必须有FW经过公网IP做转换实现。

 

 

解决这个问题,有两种思路

第一种在FW上配置NAT回环,具体原理见

Nat回环(Lan——>Lan端口映射原理)http://www.cisco-club.com.cn/space-112942-do-blog-id-1438.html

该方案可行,但实现原理比较复杂。

 

第二种方案是采用修改FW外部接口的掩码来解决。

下面具体分析一下如何采用修改掩码长度实现NAT回环的访问效果。

 

采用思科路由器模拟该环境,如下图

图中,将FW的公网IP 202.96.209.5掩码修改为30位: 202.96.209.6/30,这样修改不影响正常通讯,因为ISP给了202.96.209.0网段中的一段地址,只要202.96.209.6/30在其中即可。对于ISP,无论接入端的掩码如何划分,只要在给的范围即可。

 

首先,在FW上做好DNAT(基于目的的地址转换)

ip nat inside source static 172.16.1.2 202.96.209.100  

实现Server1 通过202.96.209.100访问外部以及外部通过202.96.209.100访问Server 1

 

ip nat inside source static tcp 172.16.3.100 23 202.96.209.200 23 extendable

实现外部通过202.96.209.200访问172.16.3.100的telnet端口23(端口为笔者测试使用)

 

 

 

 

做SNAT(基于源地址的转换)

ip nat inside source list 10 interface Ethernet0/0 overload

access-list 10 permit 172.16.0.0 0.15.255.255

其他命令省略

 

FW中路由表

ip route 0.0.0.0 0.0.0.0 202.96.209.5                默认路由

ip route 172.16.0.0 255.240.0.0 172.16.2.2        回包路由

 

FW的外部接口配置

interface Ethernet0/0

 ip address 202.96.209.6 255.255.255.252          掩码为30

 ip nat outside

 ip virtual-reassembly

 full-duplex

 

将掩码改为30位的效果如下

分析一下该状态下数据转发的流程

1.Server 1到Server 2方向

A.

Server 1的IP 172.16.1.2 通过默认路由将访问Server 2公网IP202.96.209.200的数据转发给FW,经过FW中NAT转换,将源地址转变为202.96.209.100(见上面ip nat inside source static 172.16.1.2 202.96.209.100),目的地址仍为202.96.209.200

B.

这个时候由于FW的外部接口掩码为30位,所以FW必须通过默认路由将数据转发至ISP设备202.96.209.5(这个时候30的掩码起了作用,如果所有IP掩码一样会导致数据转发到FW后没有被丢包),ISP设备看到目的IP为202.96.209.200后,会依然返还给FW(因为ISP有到用户端整个大段地址的直连路由)这个时候数据又回到FW

C.

FW看到目的IP为202.96.209.200,目的端口为23,这时使用FW的DNAT端口映射,将目的IP变成内部的172.16.3.100(见ip nat inside source static tcp 172.16.3.100 23 202.96.209.200 23 extendable)

 

D.源地址仍为202.96.209.100,目的IP为172.16.3.100,被FW通过回包路由转发至内部Server 2

 

2.Server 2到Server 1方向

A.

Server 2 172.16.3.100回包给202.96.209.100(Server 1转换过的IP)

B.

FW发现202.96.209.100与外部接口202.96.209.6/30不在一个网段,将数据通过默认路由转发给ISP路由器,源地址变为了接口IP 202.96.209.6/30

C.

ISP路由器将数据通过202.96.209.0/24的直连路由再次转发给FW

D.

FW收到数据包后,查看NAT回话表,发现最早建立的172.16.1.2被转发为202.96.209.6,所以收到数据后做NAT反向查找,从而将数据返还给Server 1 172.16.1.2

 

从而实现双向通信。

 

截图如下

Server1# telnet 202.96.209.200          server 1发起23端口连接

Trying 202.96.209.200 ... Open

 

 

User Access Verification

 

Password:

Web-Server>en

Password:

Web-Server#                                     连接成功

 

看FW中的NAT转换列表

FW#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

tcp 202.96.209.100:65467 172.16.1.2:65467 202.96.209.200:23  202.96.209.200:23

源地址转换

(server 1 172.16.1.2——> 源IP变成202.96.209.100,目的IP仍为202.96.209.200)

 

--- 202.96.209.100     172.16.1.2         ---                ---

 

tcp 202.96.209.200:23  172.16.3.100:23    202.96.209.100:65467 202.96.209.100:65467

目的地址转换

(将目的IP变为172.16.3.100,转发给Server 2)

tcp 202.96.209.200:23  172.16.3.100:23    ---                ---

 

 

在Server 2中查看TCP会话

Web-Server#show tcp brief

TCB       Local Address           Foreign Address        (state)

64219E34  172.16.3.100.23         202.96.209.100.14775   ESTAB

 

     

    通过将FW出口的掩码改为30位,既不影响NAT代理上网功能,也实现了Server 1通过访问Server 2 公网IP 202.96.209.200访问Server 2的效果,实现了NAT回环的相同功能。



分享 举报

发表评论 评论 (12 个评论)

  • hflaq 2011-06-04 23:11
  • cold0708 2011-06-07 10:03
    支持原创
  • Bati-gol 2011-06-07 14:39
    cold0708: 支持原创
  • sunpozxtp 2011-06-12 10:20
    BG 这个好理解  你上一个NAT 回环 看的我头晕 ,你真不如写几条命令让人好理解些。。真的  我看了 好久那几张图  没看明白。。。。问其他人  说做dns解析  NND,我就想做回环   唉
  • Bati-gol 2011-06-12 10:52
    sunpozxtp: BG 这个好理解  你上一个NAT 回环 看的我头晕 ,你真不如写几条命令让人好理解些。。真的  我看了 好久那几张图  没看明白。。。。问其他人  说做dns解析  NND,
    恩,用DNS解析很容易实现,如果没有DNS服务器,防火墙也无法开启DNS代理解析功能,就只能NAT回环,或者用掩码来解决!
  • tinajun 2011-06-12 14:15
    想请问一下,一个内网地址能同时NAT到两个公网地址去吗?
  • Bati-gol 2011-06-12 23:09
    tinajun: 想请问一下,一个内网地址能同时NAT到两个公网地址去吗?
    可以,端口相同或者不同都可以
    比如
    公网地址IP1对应内网IP 80
    公网地址IP2对应内网IP 443

    公网地址IP1对应内网IP 80
    公网地址IP2对应内网IP 80
  • Bati-gol 2011-06-19 21:07
  • Bati-gol 2011-06-30 22:27
    貌似没人顶了。。。
  • qidongtang 2011-07-05 19:25
  • KevinY6216 2011-07-09 15:19
    我来支持下
  • Bati-gol 2011-07-09 19:28
    KevinY6216: 我来支持下
涂鸦板