在企业互联网接入应用中除了要满足基本的内部PC访问互联网的需求外,还有一项很重要的业务就是企业信息对外发布,只有信息对外发布才使企业业务为外界所了解,带来商业机会,对外发布的载体通常就是一些WEB服务器。
在上图例子中,内部服务器192.168.10.2对外提供了2项服务,端口分别是TCP 80和TCP 37777,由于服务器在内部,互联网PC是无法直接访问的,因此需要在网关上作特殊设置,使互联网PC访问网关的WAN口地址就可以访问内部服务器,这项功能和共享上网的方向是相反的:
共享上网(动态NAT) | 内部服务器(端口映射) | |
访问发起方向 | 内网访问外网 | 外网访问内网 |
是否单向访问隔离 | 外网无法访问内网 | 外网可以访问内网的固定端口 |
转换表项 | 由内网向外网发起访问时建立,转换表项具有生存窗口,在窗口过期后外网回包因无法匹配表项而被丢弃,有单向访问的作用 | 静态表项,生存窗口无限期,使用固定的端口进行映射,方便外网随时发起访问 |
内网到外网方向转换内容 | 源地址:内网àWAN口地址 源端口:内网随机端口àWAN口随机端口 | 源地址:内网àWAN口地址 源端口:内网固定端口àWAN口固定端口 |
外网到内网方向转换内容 | 目的地址:WAN口地址à内网地址 目的端口:WAN口转换表项端口à内网表项端口 | 目的地址:WAN口地址à内网地址 目的端口:WAN口固定端口à内网固定端口 |
从上面来看,两者除了原理上的本质区别,对于互联网用户而言,只有两个
1. 共享上网:外网用户无法随时访问内网用户,只能由内网用户发起访问后进行回应,具备较高的安全性,只能通过引诱内网用户下载木马方式进行入侵。
2. 内部服务器:开放了特定的端口,外网用户可以随时访问该端口,如果内部服务器设计有缺陷的话,就有可能入侵。内部服务器原理如下图所示:
但总体而言,内部服务器开放了有限的端口,或者说是用得着的端口,并不是所有端口,所谓端口就代表这某项服务,有些已知的服务是存在漏洞的,比如蠕虫病毒使用的TCP 135端口就使用RPC DCOM服务的漏洞。如果内部服务器开放端口较多,那么就要求收集所有端口,一一做成内部服务器的端口映射,如此一来配置可能就稍显麻烦。
现在还有一种DMZ主机的功能,它的作用是将所有无法匹配共享上网表项的外网访问统统转换到DMZ主机,这么一来用户就只需要配置一台DMZ主机就可以实现配置内部服务器多个端口映射需求,在配置上带来了简便,但是从原理上来说DMZ主机只能配置一个,而内部服务器端口映射可以将不同的端口映射到不同的内部服务器上。DMZ主机原理如下图所示:
由于DMZ主机几乎所有端口都暴露,所以极容易被入侵,一般在设计DMZ主机时都会限制DMZ主机发起的任何访问,如不允许DMZ主机对互联网和LAN内PC发起访问。只允许DMZ主机对访问进行响应,这样可以避免因为DMZ主机被入侵后,黑客利用DMZ主机再发起对内部的入侵的悲剧发生。
内部服务器(端口映射) | DMZ主机(默认端口转发) | |
访问端口权限 | 允许访问指定的端口 | 允许访问所有端口 |
是否单向访问隔离 | 在默认情况,内部服务器还可以访问外网 | 因为安全原因,DMZ主机不得发起任何访问,只允许被访问 |
适用场景 | 对服务器安全要求较高;允许内部服务器发起访问;存在多个内部服务器; | 内部只有一台服务器对外提供多个访问服务(开放多个端口,特别是一些端口不易收集或记忆情况);对服务器安全不是那么重视。 |
内部PC和内部服务器都在客户的内部网络,那么访问的时候有什么特殊性呢,如果单纯的内网访问内网是绝对没有问题,问题就在于内部服务器主要是对外提供服务的,访问者记住的是域名,域名解析出来就是商领网关的WAN口地址,也就是说访问者都是在访问WAN口地址后转换的,那么内网用户也通过域名(或WAN口地址)发起访问会有什么问题呢?我们来看一下原理:
我们会发现,内网用户通过WAN口地址直接访问内部服务器是会失败的,原因就在于:
1. 内部PC访问60.191.99.140会正确地进行转换成192.168.10.2,并转发给内部服务器。
2. 内部服务器收到的访问请求是来自于内部的192.168.8.3,在回应时直接给了192.168.8.3。
3. 内部PC收到的访问回应时来自于192.168.10.2的,并不是60.191.99.140的,因此会被内部PC拒绝,访问失败。
为了使内部PC能够正确访问,我们要在商领网关上做一些修改,能够使内部服务器不直接回应给内部PC:
可以看到:
1. 目的地址从60.191.99.140转换成192.168.10.2
2. 源地址也从192.168.8.3变成了商领网关的LAN口地址192.168.10.1
对于内部服务器来说这次访问是由网关发起的,必然回应给网关:
从这里可以看出,网关在对回应的处理也是做了两次:
1. 把源地址60.191.99.140改成192.168.10.2
2. 把目的地址192.168.10.1改成192.168.8.3
对于内部PC而言,访问的是60.191.99.140,回应的也是60.191.99.140,因此访问成功。那么如何进行这个配置呢?假设内部PC的网段包括192.168.8.0/24、192.168.1.0/24和192.168.10.0/24,请参考如下: