作者:一天,公众号:网络之路博客(ID:NetworkBlog)。让你的网络之路不在孤单,一起学习,一起成长。
技术背景
在很多场景中,比如企业、学校、甚至家里都有一些对外的业务提供,比如门户网址、NAS、ERP等,在实际部署中,这些提供访问的服务器都属于内网,配置的是内网地址,导致的情况是公网用户没法对私网地址直接进行访问,学过上篇内容的源NAT功能是把私网用户的源地址转换成可上网的地址(当然可上网的就分私网跟公网了,由运营商分配的)然后发送出去,那么NAT Server的作用正好相反, 它是当其他公网用户访问我们服务的公网地址时候,进行目的地址转换(注意一定要是公网地址),在华为华三里面的这个功能叫做---NAT server(服务器映射),可能大家都奇怪,为什么标题里面有端口映射、甚至DMZ,这个主要是各个厂商的叫法不一样,可能客户只会某一种叫法,导致在了解需求的时候,有点懵!不过不要紧,学完接下来的几篇后就都会很清晰了,下面来看看多个场景下使用什么样的技术。
比如这样的一个环境,办公区三下面有一个WEB A的服务器,它的地址是192.168.255.6,是私网地址,肯定是不能在公网中路由的,外网无法访问到这个WEB资源,假设企业、学校需要把这个WEB服务发布到外网,让外网能够访问到,这个就是这篇要讲解到的另外一个NAT技术---NAT server(服务器映射)。
三种上网方式对于映射的影响
在讲解各种映射方式之前,我们得先了解一个很重要的东西,那就是公网IP,映射最重要的就是公网IP,因为只有公网IP才能被访问到,这样你就可以在家里、出差、任意的一个地方访问到,但是我们上网是有三种方式对接的,这个对于映射来说其实影响比较大。
-
DHCP方式对接,这种通常猫的LAN口处于192.168.1.0或者2.0这些网段,这个是私网地址,外网是无法访问到的(这种方式不能映射)
-
PPPoE拨号,这个就有两种可能,第一种运营商分配的是私网IP,通常为10.10.X.X或者100开头,第二种是分配的公网地址,但是是动态的,什么是动态呢?就是下一次重新拨号后,它会变化,这个有对应的技术解决,叫做DDNS,后续在实战篇会讲解。
-
外网专线对接,这种是最适合的,因为它的IP是公网IP,而且是固定的不会变化
-
总结下来映射的必要条件就是公网IP,三种对接方式里面,固定公网最好,其次PPPoE拨号的动态公网,DHCP方式是不适合(排除极少数,香港那边,DHCP也可以分配公网IP,大陆小运营商极个别也会这样分配公网)
NAT server之服务器映射(端口映射)
上面提到过服务器属于内网里面,本身地址是私网的,是无法被公网访问到,那这个时候公网的访问端能够访问的就是出口路由器的公网IP,服务器映射(端口映射)它的功能就是把出口公网IP地址对应的某个端口号,映射到内网某个地址的端口号上面来,这样当公网终端访出口路由器的公网IP某个端口号的时候,出口路由器就会把它转发给内网服务器,实现资源的访问,这里顺便说一下,不同路由器厂商对于技术的称呼不太一样,有叫端口映射的,有叫服务器映射的,指的都是这个功能。
(1)实际感受下
这里WEB A的地址是192.168.255.6,端口号是80,公网地址是202.100.1.1,实现把公网IP的80,映射到192.168.255.6的80
#修改配置
[AR1200]interface g0/0/1
[AR1200-GigabitEthernet0/0/1]ip address 202.100.1.1 24
[AR1200-GigabitEthernet0/0/1]quit
[AR1200]ip route-static 0.0.0.0 0.0.0.0 202.100.1.2
#出口路由改成静态IP的环境,先从最简单的开始,记得写默认路由
[internet]interface g0/0/1
[internet-GigabitEthernet0/0/1]ip address 202.100.1.2 24
#互联网设备设置一个地址作为网关。
测试下通信OK就行
#NAT-server 端口映射
[AR1200]interface g0/0/1
[AR1200-GigabitEthernet0/0/1]nat server protocol tcp global current-interface 80 inside 192.168.255.6 80
Warning:The port 80 is well-known port. If you continue it may cause function failure.
Are you sure to continue?[Y/N]:Y //提示这个是知名端口,是否需要映射
#配置解析
• nat server是一个关键字
• protocl tcp,这个很关键,在实际中我们得了解应用使用的是TCP协议还是UDP,配置错误的话会导致访问失败,该例子中WEB服务属于TCP应用
• global:这个是关键字,定义外网信息,比如IP地址,端口号
• current-interface:在上面的命令里面并没有定义具体的地址,这就是该命令参数的作用,直接调用当前接口的IP地址(202.100.1.1)
• 80:表示外网用什么端口号作为被其他用户访问到,WEB的端口号是80,这里写80
• inside:表示内网真实的服务器地址多少,WEB A的地址为192.168.255.6
• 80:内网的WEB端口号为多少,默认http为80
整体命令下来的意思就是,当有其他外网用户访问接口地址(202.100.1.1)的TCP 80端口号时候,将地址转换成192.168.255.6的80端口号,这就是映射。
测试一下
先检查WEB服务是否开启好了。
客户端的地址设置好
OK了,注意哦,浏览器地址输入的是202.100.1.1,是出口路由器公网的IP地址。
(3)看看是如何完成映射的
1、client5在浏览器输入202.100.1.1后(默认就是80),数据包会抵达202.100.1.1,源是61.128.1.1端口号随机生成
2、出口路由器收到以后,它发现找的是自己(因为目的IP是202.100.1.1,是自己接口地址)
发现接口下面有NAT server的配置,这个配置在路由器会生成一个表项,叫做nat server
当数据包过来后,路由器先查询nat server表是否有对应的信息,没有则表示给自己的,直接处理,如果有,按照nat server表进行处理,按照表信息
-
interface g0/0/1:表示入接口,数据流从该接口进入
-
Global ip/port:202.100.1.1:80,目的地址是202.100.1.1的80端口号
-
Inside ip/port:内网真实的终端IP与端口号,这里为192.168.255.6:80
-
Protocl:协议是TCP
-
整个表项的意思是,当有数据目的地址是202.100.1.1的TCP 80端口,从G0/0/1进入后,目的地址202.100.1.1转换成192.168.255.6,端口号80转换成80,这个时候的源目变成了,源61.128.1.1--访问192.168.255.6:80
转换后,剩下的就是常见的操作,出口路由器查询路由表看192.168.255.6在哪,然后把数据包通过路由表条目转发给核心A交换机,核心A同样通过三层表项查询,定位到192.168.255.6在哪,从对应接口发出,抵达WEB A。
3、WEB A收到后开始回应,回应的报文会经过办公区三、核心A、最终抵达出口路由器,查询路由,发现去往61.128.1.1从出口G0/0/1出去
发现有nat server表项,于是把192.168.255.6:80,转换成202.100.1.1:80,目的地址61.128.1.1与端口号不变,这样数据包就变成了源:202.100.1.1:80,目的61.128.1.1:1288,互联网收到以后直接返回给client 5。
经验分享
-
端口映射其实是非常简单的,只要确认客户应用需要的端口号以及传输层协议,然后做nat server即可,需要注意,有的应用是TCP/UDP都需要映射,这个要咨询清楚。
-
在华为设备里面映射如果端口号是1~1023的知名端口号,每次输入都需要Y确认。
-
在nat server 端口映射中,global的端口号与inside的端口号是不需要一致的,比如外网可以用9999,内网用80,这样完全OK,只是在访问的时候需要输入端口号
-
在实际中,需要注意80、443、8080、或者8000~8888这段范围的端口号大部分区域会禁止使用,特别是80、443端口号需要备案,运营商才会开通,所以如果有这样的业务的话,内网可以继续用80,但是外网的端口号只能换一个其他的,可以多尝试几个好记的。
-
如果实际业务涉及到Telnet、SSH等端口号的映射,建议把设备本身的telnet、SSH服务的端口号改成其他,否则会冲突。
-
该功能有很多叫法,常见的端口映射、服务器映射,也有冷门的叫做服务器发布,端口转发等,遇到了不用慌,确认下需求跟功能就行。
文章版权归网络之路博客/网络之路Blog(公众号/其他平台同名,)所有,转载请标明出处,谢谢,交流群可以加个人微信ciscohuaweih3c,博主拉你进群,Q群 813146133 。(如果群满了,可以公众号后台回复‘加群’获取最新群号)