如果您想在外网访问到家里的设备,那就必须实现内网穿透。爬爬虾之前介绍过使用cloudflare tunnel实现免费不限量内网穿透的方案,不过这个方案的最大缺点是网速慢、不稳定。本期视频我们来改进之前的方案,使用cloudflare优选IP,根据用户的网络环境,自动优选最优的cloudflare CDN节点进行服务,不花一分钱,给内网穿透的服务大幅提速。这套操作的前提是必须要有两个域名。以我自己举例,我有两个域名:一个是tech-shrimp.com这个主力域名,还有一个是tech-shrimp.top这是辅助域名。
内网穿透
有了域名以后,我们就把它托管到cloudflare上。我们先登录一下cloudflare,没有账号就注册一个。右上角点击添加站点,输入你的域名,然后点击继续。这里有一些付费的我们都不要,直接找下面这个免费的,点击继续。
到这一步,什么都不用管,直接点击下一步。这一步是重点:更改名称服务器。往下找找到这两个名称服务器,
我们需要去买域名的网站更改一下,回到买域名的网站,(以namesilo为例)有一个NameServers,把这里改一下,把原来的这3条全部删掉,然后填上刚才网站给我分配的这两个,点击保存。
好,我们再回到cloudflare,点击立即检查,然后点击继续。这里也什么不用动,直接开始使用就可以了。
我们按照刚才的方法,把两个域名配置好,这里.com是主力域名,然后.top是辅助域名。
有了这两个域名以后,我们开始配置内网穿透。
我们点击这里的Zero Trust。
到了这一步,先不用添加付款方式,
直接回到cloudflare的主页dash.cloudflare.com。进来以后,我们再点击Zero Trust,不添加付款渠道也可以直接使用。
在Network这里找到Tunnels,这里添加一条隧道,Add a tunnel然后选左侧的cloudflare,
点击确定,这里起个名字,然后点击Save tunnel。
这里根据你内网设备的操作系统,下载对应的安装包。我使用的是Windows的家庭服务器,这里我使用Windows的下载64位的。首先我们先下载这个安装包,这是一个Github的链接。
下载好以后,我们就获得了这么一个安装包,然后双击安装就可以了。
在这个家庭服务器上,我还部署了一个nginx服务,我启动一个Web服务,端口使用8080端口。这里我只是用nginx做一个示例,你可以把它替换成任意一种家庭应用。然后我们把nginx启动起来,我们试着来访问一下localhost:8080,一个很简单的小页面。
等下,如果我们能从官网访问到这个页面,那么内网穿透就配置成功了。
我们回到cloudflare,在下载地址的下面给了一个一键安装命令。我把它复制一下,
回到我的家庭服务器,在任务栏搜索cmd,右键以管理员身份运行命令提示符,然后再右键把这个命令粘过来,点击回车。这里显示就安装成功了。
我们再回到cloudflare,拖到最下面有一个next,我们点一下。下一步我们来开始配置域名,我们先使用.top域名配置一个回退源地址。这里我的域名选择.top那个,然后子域名这里我填origin,下面填你内网的服务,这里我选择HTTP服务,那个nginx的内网URL localhost:8080,好我们保存一下。
配置完成以后,我们试着来访问一下,这里点击那个域名,点击访问,可以看到可以打开我的网页。这样我们使用tunnel内网穿透,这一步就配置完成了。如果对速度没有要求的话,到这一步也就可以了。
IP优选,内网穿透加速
如果对速度有更高的要求的话,我们接下来往下看。我们配置好第一个辅助域名以后,我们再把自己的主力域名也配上。这里还是点击add a public hostname,我的主力域名是使用tech-shrimp.com,子域名的话www,这里的配置是一样的,同样的是使用我的内网地址8080保存。这样我们两个域名都配置好了,上面是辅助域名,下面是主力域名。
到目前为止,这两个域名都可以通过cloudflare的tunnel服务连接到我内网的nginx服务器上面。流量会先经过Cloudflare的CDN节点,然后通过隧道打通到我的内网。cloudflare在全球有上千的CDN节点,给隧道加速的关键就是如何选择最优的CDN进行服务。
第一步,我们先取消掉主域名的DNS解析。我们点击左上角的小云朵,进入Cloudflare主页,然后我们选择这个主力域名,选择左侧的DNS。这里有一个www的CNAME解析,这个就是tunnel自动生成的那个解析,我们先把它删掉。我们展开编辑,这里点击删除,也就是先让我们的主力域名跟tunnel先解绑。
自定义主机配置
我们进行第二步,自定义主机回退源。我们先切换到辅助域名,也就是.top这个域名。我们点击这里的SSL/TLS,点击自定义主机名。这里需要绑定一个支付方式才能进来这个页面,我选择的是Paypal的方式。绑定好以后,选择那个免费服务。
进入这个页面以后,我们开始添加回退源origin.tech-shrimp.top。点击添加回退源,然后我们点击添加自定义主机名,这里填写我的主力域名就是tech-shrimp.com,下面这些都默认,直接点击添加自定义主机名。
这里显示出了错误,我们展开看一下,
需要把这两个填写到对应的.com域名下面验证域名的所有权。好,我们来配置一下,这里我新开了一个窗口,这次我切换到主力域名tech-shrimp.com下面,然后我点击添加记录。
把两个txt类型的解析,填入主力域名tech-shrimp.com的DNS设置里面。
我们回到自定义主机回退源界面,等待一会儿,然后点击刷新,等到这里都是绿色,显示出有效,那就配置成功了。
我们进行第三步,再引入一个新域名cdn.tech-shrimp.top,借助它实现DNS线路分流。回到.top域名的DNS记录,这里点击添加记录,类型选择CNAME,名称填写CDN,目标的话我使用社区解析好的这个地址复制过来,这里注意一定要把小黄云关闭,点击保存。
我们进行最后一步,再添加一个CNAME。回到我们的主力域名tech-shrimp.com,然后点击添加记录,这里CNAME类型的记录,子域名的话是www,解析到这个地址cdn.tech-shrimp.top,这里是重点,我们把小黄云关闭,最后点击保存。
到这一步我们的所有配置就成功了。接下来我们来试一下效果,我们先来测一下直连这个回退源,也就是origin的这个网址。可以看到平均用时是1.58秒,有7个访问失败。cloudflare只为我们分配了两个出口节点的IP,如果这两个IP的网络状况不佳,就很容易造成失败。
我们再来看做了线路优选以后的结果,这次平均访问用时降到了1.04秒,只有两个失败。我们可以看到,出口节点的数量变多到了30个,根据每个省份的网络环境不同,它自动进行了线路优选,并且选择了最优的线路进行服务,大幅降低了延迟跟失败概率。