访问家庭内网资源

现状

通常家庭接入Internet都是采用无线路由经PPPoE连接到ISP的。家庭的各种设备,例如计算机、笔记本、移动设备、NAS和智能硬件等各自有一个局域网IP地址,通过双绞线或者WiFi连接到无线路由器。无线路由自己有一个局域网IP地址,可以通过Web经由WiFi或其LAN口来管理。无线路由对外则是WAN口,以PPPoE连接到ISP。无线路由在Internet上的IP地址是由ISP分配的。

家庭接入Internet

如何在外部Internet访问内网资源

如果你在外部网络中或者使用手机蜂窝数据上网,那么家里的局域网是无法直接用Internet来访问的。要访问家里的局域网首先就要通过连接到Internet的路由器的IP地址来访问。我们可以通过在路由器上设置其端口与内网某设备IP地址的端口相映射的方式获得对内网设备的访问。

实例:如果要使用RDP访问家中的某个服务器,则可以通过这种方式映射其3389端口到路由器的7779端口,以后只要通过220.191.88.88:7779来访问:

端口映射

然而,ISP通过PPPoE分配给路由器的IP地址不一定是固定的,不能保证此IP地址一直可用。解决这个问题,第一个办法是向ISP申请一个域名与自己的外网IP地址进行映射,比如使用花生壳。

实例:交大的EPCC实验室(嵌入式与普适计算中心)就有其自己的域名epcc.sjtu.edu.cn,我在实验室设置了一台PC的IP地址并将其3389端口映射到路由器的端口7779,这样我在外部Internet就可以通过epcc.sjtu.edu.cn:7779来RDP这台机器了:

域名端口映射

使用IP地址或者域名访问路由器,可以通过端口映射的形式与局域网中的任何设备进行通信。然而这种方法不太灵活,对移动app访问内网资源很不友好。如果内网资源的端口地址很多,或者端口地址会发生变化,映射就变得很困难。因而现在许多商家都采用“资源客户端-服务器-访问客户端”的映射方式实现对内网资源的访问。

内网中的资源客户端与服务器保持一条连接,当访问客户端需要访问资源的时候,首先登录到服务器,取得与资源客户端的联系,然后便可与资源客户端进行通信。

实例1:推送服务器使用苹果APNS将消息发送至内网WiFi中的iPad。
Push Notification

实例2:使用TeamViewer远程控制内网计算机。
TeamViewer

TeamViewer

实例3:使用TeamViewer建立v*n连接。
v*n

实例4:使用TeamViewer搭建私有云。
File Transfer

iOS File Transfer

实例5:使用WDMyCloud搭建私有云。
WDMyCloud

iOS WDMyCloud

实例6:使用App管理智能设备。

智能插座

智能插座App

实例7:使用萤石App访问内网摄像头。
这里写图片描述