家里安装了一套门禁,该门禁支持通过互联网进行远程开门。但基于安全上的考虑,我不想所有人都可以在任意一个连接了互联网的地方进行远程开门,再加上自己家里所使用的IP地址是公网IP地址,而不是运营商NAT(100.64开头的IP段),于是就做了一个设置:
1、内部搭建一个DNS服务器,建立一个正向查找区域:menjin.cntse.com;
2、在menjin.cntse.com建立两条A记录:nei.menjin.cntse.com和wai.menjin.cntse.com,均指向门禁系统的内网地址;
3、在域名在互联网上所属的DNS服务商的设置系统上(如DNSPod,下面以DNSPod为例),建立一条A记录wai.menjin.cntse.com,指向自己的路由器(如果路由器的IP地址并非固定IP地址,则需要使用动态域名功能,DNSPod支持该功能);
4、在自己的路由器上做端口映射,映射到内网的门禁系统中(前提是要知道门禁系统的端口号);
5、到指定的手机中进行设置,如果可以在任意有网络的地方都能远程开门的,就在手机app的地址设置上,把远程控制地址设置成wai.menjin.cntse.com;如果只能在内网访问的,就把远程控制地址设置成nei.menjin.cntse.com,因为外网DNS服务器上并没有nei.menjin.cntse.com的记录,在外网无法进行解析。
但是我所使用的这个系统有一个很奇怪的地方,那就是做了以上的设置之后,如果手机与门禁处于同一网段,那么手机app在远程控制的时候就会出现“可能是密码问题”的错误提示,无法进行远程开门,但只要处于不同网段(本人在家里使用了三层交换机,划分了几个vlan),就可以实现远程开门。
为什么会出现这种问题呢?可能是门禁系统本身的问题,但我不想找门禁系统厂家那边来解决了,尝试自己去解决。因为自己手上有几个域名,可以尝试以下这个方法:
1、在DNSPod上新增一个域名:qqec.com,然后新增一条CNAME记录:menjin.qqec.com,指向公网的wai.menjin.cntse.com;
2、回到内网的DNS服务器,把nei.menjin.cntse.com以及wai.menjin.cntse.com的记录改为CNAME记录,指向menjin.qqec.com;
通过以上的方法,允许在任何地方访问的手机,在公网的时候会把wai.menjin.cntse.com解析成路由器的公网地址,然后通过端口映射,映射到门禁系统中来实现开门,而在内网访问的时候,wai.menjin.cntse.com会首先解析成cname:menjin.qqec.com,然后DNSPod会在外网把menjin.qqec.com解析成cname:wai.menjin.cntse.com(内网和外网对wai.menjin.cntse.com的解析服务器是不一样的),最终解析成公网地址并通过端口映射又回到内网中,来实现开门,nei.menjin.cntse.com的内网解析过程也是类似,只是因为外网的DNSPod上没有这条域名的解析设置,所以在外网也是无法解析成IP地址,从而达到在外网无法远程开门的目的。