| 2019-03-7
在一些特殊网络环境里,出于对网络安全或ip地址使用的角度考虑,往往会使用nat技术进行ip地址转换。如果两个不同单位进行联网,彼此需要隐藏自己内部的ip地址,也不希望直接和对方的ip进行通讯,这时就需要配置双向nat来进行两个方向的地址转换功能。那么怎么在一台路由器上实现双向nat呢?nat的技术类型有哪些呢?
工具:路由器一台(以H3C路由器配置为例)
示例:
1.实现目标:单位A的网内用户(192.168.1.0网段)需要访问单位B的服务器(10.1.1.并实现双向nat。
联网要求:单位A的内网结构和ip地址需要对外隐藏(单位B不能看到单位A的网内ip地址,只能看到nat转换后的1.1.1.2地址),同时单位A的内网设备不需要添加单位B的ip网段的路由,只需要访问转换到内网的192.168.1.2这个地址,确保网内的路由干净。
2.网络拓扑:
3.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
方法/步骤
步骤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
(设置nat映射地址池为1.1.1.2)
acl number 2000
rule 0 permit source 192.168.1.0 0.255.255.255
rule 1 deny
(设置访问服务器的源地址为192.168.1.0 255.255.255.0)
interface Ethernet0/0/1
ip address 1.1.1.1 255.255.255.255.255.255.240
nat outbound 2000 address-group 1
(在R1上的互联端口上配置nat规则,将acl 2000配置的源地址网段转换成1.1.1.2后访问出去)
步骤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
(将外部服务器地址10.1.1.1的tcp连接映射成内网地址192.168.1.2)
nat server protocol icmp global 192.168.1.2 inside 10.1.1.1
(将外部服务器地址10.1.1.1的icmp连接映射成内网地址192.168.1.2)
步骤3:配置路由
在路由器R1上添加至对方服务器的路由
ip route 10.1.1.1 255.255.255.255 1.1.1.14
验证
在路由器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的请求。
至此,一个完整的数据包来回传输的交互过程实现。
nat有三种类型:静态nat(Static nat)、动态地址nat(Pooled nat)、网络地址端口转换NAPT(Port-Level nat)
其中静态nat设置起来比较简单和容易实现的一种,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。而动态地址nat则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。NAPT则是把内部地址映射到外部网络的一个ip地址的不同端口上。根据不同的需要,三种nat方案各有利弊。
动态地址nat只是转换ip地址,它为每一个内部的ip地址分配一个临时的外部ip地址,主要应用于拨号,对于频繁的远程联接也可以采用动态nat。当远程用户联接上之后,动态地址nat就会分配给他一个ip地址,用户断开时,这个ip地址就会被释放而留待以后使用。
网络地址端口转换NAPT(Network Address Port Translation)是人们比较熟悉的一种转换方式。NAPT普遍应用于接入设备中,它可以将中小型的网络隐藏在一个合法的ip地址后面。NAPT与动态地址nat不同,它将内部连接映射到外部网络中的一个单独的ip地址上,同时在该地址上加上一个由nat设备选定的TCP端口号。
路由模式:所有数据不进行nat转发,直接将内网ip不做伪装的传送到外网,此模式适用于内网ip都为公网地址的时候使用。
花生壳是贝锐旗下知名的动态域名解析服务,能将动态ip地址实时与服务器保持交流,绑定固定域名,让用户输入特定域名即可访问某台内网主机,并支持内网穿透,摆脱无公网ip及nat转发导致无法使用的问题,为中国一代代互联网人解决了众多基础的网络连接问题。