有些时候我们会在公司内部局域网内架设一些自己的基于Web的服务器,但是我们却希望在外网的时候也可以访问,那么该如何实现呢?当然,VPN肯定是可以做到的,但是又需要去架设VPN服务器。对许多小公司而言是完全没有必要的。这里可以通过另外一种简单的方法实现这个功能——动态DNS和虚拟服务器。我们所需要的只是对我们的路由器做一些简单的配置即可。

我的场景是:公司使用的网络是ADSL,内部假设了两个基于Web的管理平台:一个项目管理平台和一个文档管理平台。现在两个平台都架设在公司的局域网内,安全问题有了保障,但也带来了一些不便,比如外网无法访问。下面就介绍如何通过外网来访问架设在内网的平台。

动态DNS

动态DNS及DDNS,详细解释见百度Google,这里简单介绍。我们都知道普通DNS的功能就是将某一固定域名解析到一个IP地址,域名和IP地址的关系是固定的,除非你手动去DNS服务器上修改其对应关系。而动态DNS的动态就体现在他可以将一个固定域名解析到一个动态的(不断变化的)IP地址上面去,而不需要你手动修改。

那么我们为什么需要DDNS这个功能呢?因为我们使用的上网方式是ADSL,在这种上网方式下,运营商给我们提供的IP地址是动态的,也就是说如果我们无法在外网通过一个固定的IP去访问内网。其实,一般除了ADC会为虚拟主机、云主机等提供固定IP外,大多数的网络服务都是动态的IP。这个时候DDNS便可以帮我们解决这个问题:我们可以将某一个固定的域名(这个域名的获得后面介绍)映射到动态变化的IP地址上。这样的话,我们就可以在外网通过域名来访问我们内部的Web平台,就像访问一个开放在互联网上的网站一样。

下面我们说一下具体如何实现。

打开我们的局域网路由器管理页面(一般为192.168.1.1或者192.168.0.1),在里面选择动态DNS。

 

然后我们点击“花生壳动态域名解析服务申请 ”这个链接,去免费注册一个用户,同时便会获得一个免费的以.vicp.cc结尾的三级域名。

注册完以后,我们在这里登陆即可。花生壳也提供了收费版,可以根据自己的需要选择。我这里使用的是专业版。

这样我们便已经将花生壳给我们提供的域名与运营商给我们提供的动态IP绑定在一起了。我们可以ping一下我们的这个域名,可以看到已经可以ping通了,而且其映射的IP就是我们ADSL的IP。

至此,我们从外网访问内网的工作已经完成了一大半。只有一大半的原因是因为我们现在只是可以从外网访问到我们内网的路由器,但是并不能具体到我们内部的某一台主机,因为我们内网的所有主机对应的都是一个外网IP。接下来的工作就要使用虚拟服务器来实现了。

虚拟服务器

虚拟服务器定义了广域网服务端口和局域网网络服务器之间的映射关系,所有对该广域网服务端口的访问将会被重定位给通过IP地址指定的局域网网络服务器。也就是说我们可以通过虚拟服务器将外网的一个端口映射到我们内网的一个IP地址的某个端口上面。下面看具体如何设置:

打开我们的局域网路由器管理页面,选择转发规则——虚拟服务器(不同路由器可能会有点差别)。

 

我的服务器在局域网内的IP地址为192.168.1.20(记得将局域网内的IP地址设为静态IP),我的两个Web管理平台使用的端口分别是80端口和800端口。这也是上图中内部端口IP地址栏应该填写的内容。然后我们重点说一下那个服务端口。这个服务端口的指的是我们刚才那个域名的端口,这里由我们自己任意设置。这里我选择81的原因是,很多运营商为了安全起见,是不允许个人用户开放80端口的。如果你需要开启,需要向运营商申请。我个人觉得就没有必要了,因为我们完全可以换一个非80端口,毕竟是内网服务,也只有自己人访问。换了非80端口后,我们只需要在访问的时候,显式的指明一下端口即可。因为我们知道通常我们通过域名去访问一个www网站的时候,是不指定端口的,比如www.baidu.com,这是因为我们不指定端口时,浏览器会使用默认端口,而www服务的默认端口就是80端口,ftp的话,默认是21。这里我指定的是81号端口,那么,该如何访问呢?只需要在浏览器里面输入:http://xxxxxx.vicp.cc:81/即可。其实,这个链接等效于192.168.1.20:80。但是前者可以在外网访问,而后者只能在内网访问。

当然,通过这种方式的话,就会将自己的内网服务器的暴露在外网上。一方面,我们要尽量别让外部的人知道我们使用的域名以及对应的端口。另一方面,内部的服务器访问权限一定要设置的比较严格,比如别使用弱口令啊什么的。当然,对于特别需要安全性的,还是考虑使用VPN或者是直接不要和外网连接。