举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔知了社区有害的内容
×
不规范转载
×
举报说明
首先,先将MSR路由器按照平台分类,V5平台和V7平台,通过display version可以看到自己路由器的平台版本,显示comware 5.20的就是V5平台的,显示comware 7.X的就是V7平台的。
一、双向nat的做法(报文通过路由器既要修改IP原地址,也要修改IP目的地址):
V5平台要实现双向nat,需要在报文的入口做nat server,修改报文的目的地址,然后在报文的出口,做nat outbound,修改报文的原地址,但是实际操作中,我发现一个问题,做完这两个操作后,还必须要关掉快转,undo ip fast-forwarding {inbound | outbound},否则双向nat是不成功的
对于V7,V7平台多了一个nat inbound的功能,这个功能就特别方便了,在报文的入口同时配置nat server+nat inbound,就可以实现双向nat了,nat server转目的,nat inbound转原地址,并且不用关闭快转,话说,V7平台路由器也没有关闭快转的命令了。
接口下同时配置nat server和nat inbound,是nat inbound先生效,nat server后生效,不过话说,谁先谁后也那么重要哈~~
二、内部用户使用公网地址访问内部服务器的问题
V5平台如果想实现使用公网地址访问内部服务器,只需要在公网口正常配置nat outbound+nat server就可以,内网和外网用户直接访问nat server映射的IP+端口就可以访问到映射的内部服务器了,原理的话,我自己做了一下,看了下deb,有一个hairpin的deb,我估计跟V7实现是一样的,只不过V5不需要手工配置nat hairpin这个命令,而且也没有这个命令。
V7的话,除了要在公网口配置nat outbound+nat server之外,必须要在内网口配置nat hairpin命令才可以,否则访问不到,所以这个nat haripin功能应该就是让内网口可以查找公网口的nat session的吧。
三、nat alg
这个东西貌似功能很多,主要就是用来检测一些协议报文的上层应用,用来更改上层应用的端口号,最常用的就是FTP,FTP有2个连接,一个是控制连接,一个是数据连接,因为数据连接的端口是在控制连接阶段协商的,所以如果没有nat alg这个东西,那么控制连接建立成功后,因为没有数据连接端口的nat session,就会导致数据连接不成功,启用了nat alg后,在控制连接阶段alg提取协商的数据连接端口参数,先将端口计算出来,提前生成nat session,这样建立数据连接的时候,就可以使用预先生成好的session了,就不会出现数据连接失败的情况了。
四、dns mapping
dns mapping很多人都以为这个功能可以做本地dns解析的,其实不然,在手册中用明确说明:
通过配置DNS mapping,可以在DNS服务器位于外网的情况下,实现内网用户可通过域名访问位于同一内网的内部服务器的功能。DNS mapping功能需要和内部服务器配合使用,由nat server配置定义内部服务器对外提供服务的外网IP地址和端口号,由DNS mapping建立“内部服务器域名<-->外网IP地址+外网端口号+协议类型”的映射关系。
这个功能是需要和nat server配合使用的,实际上我们做nat server的时候,都不止一个,比如下面这种配置:
nat server protocol udp global current-interface 23 inside 1.1.1.1 23
nat server protocol udp global current-interface 80 inside 2.2.2.2 80
我们想让dns返回的内部dns地址实际是2.2.2.2,但是如果没有配置dns mapping,你会发现,每次终端获取的都是1.1.1.1,为什么呢?应为alg在解析dns上层报文的时候,发现dns地址是公网口地址,然后就会去找接口下配置的nat server,此时是不看端口号的,以找到的第一个nat server为准,所以alg在修改dns报文的时候,就会修改成1.1.1.1,为了避免这种情况,就需要配置dns mapping,让alg在找nat server的时候,以IP+端口号的方式去查找,就不会出现填写错误的情况了
五、port-mapping功能
这个功能一般用在使用非标准协议端口号的时候使用,例如SIP协议端口号规定是5060,但是有一些场景需求不能使用5060,改成了其他端口,这时候会发现SIP注册是有问题的,这是因为alg默认情况下是通过端口号来识别相应的协议的,如果使用非标准端口,alg就检测不到这个是SIP协议,就没有办法做上层转换了,这个时候,就需要使用port-mapping这个命令来告诉alg要使用那个端口号来判断这个是SIP协议,例如:
port-mapping application 5060 port 5660
这就是告诉alg,5660也是SIP协议报文,也需要做上层协议的检测。
就先写这么多吧,如果大家有其他什么样的经验,大家也一并写出来把,知识是共享的,学无止境~~~~
(3)
nat alg “主要就是用来检测一些协议报文的上层应用,用来更改上层应用的端口号” ,对于多通道协议比如端口都是默认的,比如FTP 21控制 如果是主动模式下默认的20,是不是就不需要ALG检测了?是不是只有被动模式下,因为数据传输端口随机协商才需要开启;
(0)
举个例子应该好理解点,主动模式下,其实是看服务器是在内网还是外网,如果服务器在内网,其实是服务器主动向客户端连接,这个时候服务器发出报文,是可以直接出发nat session建立的,所以alg开或者不开都可以;但是如果服务器在外网,就必须开alg提前建立session,否则服务器从外网过来的数据,没有session,就没有办法送到内网来了。被动模式其实原理也是一样的。
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
谢谢夸奖~~~O(∩_∩)O~