有时候,我们需要在自己家里搭建服务器,供别人从外网访问,这时就会遇到本文所提到的内网穿透的问题,下面我们从非专业人士的角度来聊一下:
一、什么叫内网穿透,为什么会有这个需求?
应该说这是因为互联网发展的速度超出了当初设计他的人的想像。在互联网上,每个接入的节点都会被分配一个IP地址,这样大家才能进行数据交换。就像现实生活中,我们居住的地方都有一个地址(通常有一个门牌号),这了它别人才能给我们寄信。
互联网迅速发展,节点数量急剧增长,原来设计的IP地址位数不够了(IPv4中规定IP地址长度为32,共有2^32-1个地址),但它已经被广泛应用,是现在互联网的基础,想扩容也不是一蹴而就的事(IPv6就是升级版,但目前还不是主流),这样就出现了IP地址资源不够的问题,于是各种变通的方法就应运而生了。
1、动态IP
IP地址只有在上网的情况下才需要,不上网时就可以不要。那么给每个节点分配一个固定的IP地址就存在着大量的浪费现象,所以运营商就想了个办法,只在你上网时才临时给你一个IP地址,一段时间不上网就回收。这样一来,一批IP地址就能服务更多的终端了,大家轮着用嘛,这就是“动态IP”。它不固定,每次上网的IP地址都不一样,但它并不影响你上网,但是这样的情况并不适合服务器,就像你家天天换门牌号,别人是找不到你的。
2、内网IP
动态IP可以解决一部分问题,但还是不够。运营商就又想出了新办法,用内网IP来转换。就好比临街的房子没有了,就建一个大院子,给一个门牌号,院子里面住很多家人,给一个房间号。公网IP就相当于大院门牌号,内网IP相当于大院里面的房间号,别人寄信给你时就写大院门牌号,然后由传达室老大爷转给你。这种情况下,你的电脑终端获得的就是一个“内网IP”,仅凭这个是无法让别人访问到你的。
二、怎么解决这个问题?
那么,在这两种情况下如何搭建服务器,并且让别人能访问到。
1、直接用云服务器
这是最简单暴力的,不在家里搭,买个云服务器就齐活了。比如阿里云、腾迅云、百度云,它们都为每个云服务器分配了一个"固定IP",是外网IP,而且不会变,从此再也没有这个烦恼了。唯一的问题就是要付费,但是个人认为这个费用还是值得的,自己搭建服务器虽然不要钱,但是要电费吧(300w*24小时*365天)、要开关机吧、主机要折旧吧,当然最终还要看你的实际情况。
2、若你的网络有“动态IP”
那基本上与有固定外网IP没有太大的区别,比较容易处理,因为本质上你是有外网IP的,只是它每天都在变而已。解决的办法就是每天上网后,把自己的外网IP公布出来,这样别人就可以访问了,这项工作有很多程序可以自动完成,比如易管E8家具软件自带的动态域名解析程序。
3、若你的网络是“内网IP”
这就是今天这篇文章要说的主题了。简言之,比较麻烦,因为本质上你是“没有外网IP”,需要传达室老大爷帮你转发,而这位老大爷掌握在网络运营商的手中,他们肯不肯帮你转发,要看你的运气了,大部分情况下是不行的。
可以向运营商投诉,要求转成“动态IP”。这个有很大的成功概率,但是据说现在的运营商客服人员会“装作听不懂”,不断向你推销“固定IP”业务,这个太贵了。
另外,就是要求”老大爷“帮你转发。这个也有成功的概率,但是经常会出现过段时间就不行了的情况,原因是运营商调整了网络设置,把你的这个转发给忘记了。就像是换了个老大爷,他不知道你之前交待过的事情。
三、那该怎么办?
使用第三方软件或硬件,这些第三方的技术大体分为两种方式:
1、虚拟专用网络(VPN)
2、反向 SSH 隧道
它们各有优缺点,也有相对应的产品解决方案,具体我们在下一篇《自建服务器内网穿透之二:相关产品介绍》中详细说明。