如何在一台路由器上实现双向NAT
在一些特殊网络环境里,出于对网络安全或IP地址使用的角度考虑,往往会使用NAT技术进行IP地址转换。如果两个不同单位进行联网,彼此需要隐藏自己内部的IP地址,也不希望直接和对方的IP进行通讯(避免将对方IP网段的路由加到自己网内,保持网内路由的干净),这时就需要配置双向NAT来进行两个方向的地址转换功能。
示例说明
- 01
示例: 实现目标:单位A的网内用户(192.168.1.0网段)需要访问单位B的服务器(10.1.1.1),并实现双向NAT。 联网要求:单位A的内网结构和IP地址需要对外隐藏(单位B不能看到单位A的网内IP地址,只能看到NAT转换后的1.1.1.2地址),同时单位A的内网设备不需要添加单位B的IP网段的路由,只需要访问转换到内网的192.168.1.2这个地址,确保网内的路由干净。
- 02
网络拓扑:
- 03
IP地址说明: 单位A内网IP:192.168.1.0/24 单位A的路由器R1地址:局域口IP为192.168.1.1,广域口IP为1.1.1.1 单位B服务器IP:10.1.1.1 单位B的路由器R2地址:局域口IP为10.1.1.254,广域口IP为1.1.1.14 R1路由器上内部映射到外部的地址为1.1.1.2,外部映射到内部的地址为192.168.1.2
操作方法
- 01
步骤1:在R1路由器上将内网192.168.1.0网段NAT映射成1.1.1.2后访问服务器,这样单位B的设备收到的数据包的IP地址都是1.1.1.2,从而隐藏了单位A内网的真实地址。 nat address-group 1 1.1.1.2 1.1.1.2 acl number 2000 rule 0 permit source 192.168.1.0 0.255.255.255 rule 1 deny interface Ethernet0/0/1 ip address 1.1.1.1 255.255.255.255.255.255.240 nat outbound 2000 address-group 1
- 02
步骤2:在R1上把对方服务器10.1.1.1NAT翻译成内部地址192.168.1.2,供内部地址访问,这样单位A的内部用户访问192.168.1.2就等于访问对方的10.1.1.1的服务器 interface Ethernet0/0/0 ip address 192.168.1.1 255.255.255.0 nat server protocol tcp global 192.168.1.2 any inside 10.1.1.1 any nat server protocol icmp global 192.168.1.2 inside 10.1.1.1
- 03
步骤3:配置路由 在路由器R1上添加至对方服务器的路由 ip route 10.1.1.1 255.255.255.255 1.1.1.14
验证
- 01
在路由器R1上打开debug调试功能,从单位A的内网ping映射后的服务器地址192.168.1.2,观察debug信息 *0.1018668881 Quidway NAT/8/debug: (Ethernet0/0/0-in :)Pro : ICMP ( 192.168.1.10: 758 - 192.168.1.2: 758) ------> ( 192.168.1.10: 758 - 10.1.1.1: 758) *0.1018668881 Quidway NAT/8/debug: (Ethernet0/0/1-out :)Pro : ICMP ID : 38234 ( 192.168.1.10: 758 - 10.1.1.1: 758) ------> ( 1.1.1.2:12290 - 10.1.1.1: 758) *0.1018668881 Quidway NAT/8/debug: (Ethernet0/0/1-in :)Pro : ICMP ID : 38234 ( 10.1.1.1: 758 - 1.1.1.2:12290) ------> ( 10.1.1.1: 758 - 192.168.1.10: 758) *0.1018668881 Quidway NAT/8/debug: (Ethernet0/0/0-out :)Pro : ICMP ID : 38234 ( 10.1.1.1: 758 - 192.168.1.10: 758) ------> ( 192.168.1.2: 758 - 192.168.1.10: 758) 从debug调试信息可以看出,E0/0/0接口收到一个192.168.1.10访问192.168.1.2的请求被转换成访问10.1.1.1的请求;接下来在E0/0/1接口输出时将192.168.1.10访问10.1.1.1的请求转换成1.1.1.2访问10.1.1.1的请求,这时数据包被两次翻译后发送给服务器。服务器响应的数据包返回到R1路由器,这时E0/0/1接口收到一个10.1.1.1到1.1.1.2的请求,并转换成10.1.1.1到192.168.1.10的请求,然后在内网口E0/0/0上将10.1.1.1到192.168.1.10的请求转换成192.168.1.2到192.168.1.10的请求。 至此,一个完整的数据包来回传输的交互过程实现。