通过修改子网掩码长短实现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









发表评论 评论 (12 个评论)
比如
公网地址IP1对应内网IP 80
公网地址IP2对应内网IP 443
公网地址IP1对应内网IP 80
公网地址IP2对应内网IP 80