之前的离线下载是搭建在服务器,取回的时候还是有点麻烦,最好的方法是离线到路由器。但要实现这一功能,得先解决一个问题,内网怎么穿透?
什么是内网穿透
为了解释清楚这件事,需要了解几个概念。
WAN
Wide Area Network,广域网,又称外网、公网。指覆盖范围非常大的国际性的远程网络,通俗来讲就是能连全世界。
LAN
Local Area Network,局域网,又称内网。指覆盖范围很小的具有封闭性的网络,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。
路由器
内网随便接随便玩,但接外网要钱,也就是找电信拉宽带,电信会给一个账号和密码,以及一个光猫,我们在电脑上通过账号和密码来拨号上网。这样一来虽然有了网络,但不方便,因为只有电脑这一台设备能连,其他设备比如笔记本电脑、手机、电视,就只能眼巴巴地看着。怎么办?路由器就是用来解决这个问题的。
之前是电脑连接光猫,现在改成路由器连接光猫,然后所有要上网的设备来连这台路由器。路由器有无线功能,所以电脑可以通过网线来连,手机可以通过WiFi来连。
这是什么原理?很简单,路由器就是一个组织者和代理人,它把所有连上的设备组建成一个内网,这些设备要访问外网,就由它代为请求。比如
- 我们要查百度
- 路由器代我们去查
- 百度把结果返给路由器
- 路由器把结果返给我们
在这个过程中,起点是我们,终点还是我们,所以上网完全没问题。可反过来,我们的电脑要像百度一样,对外提供服务,也就是说起点是百度,终点还是百度,行不行?不行,因为百度只能找到路由器,而路由器不知道接下来找哪台设备。
举个例子,工厂拖欠工资,所有员工委托一名律师打官司,厂长不可能一个一个找员工谈,他只能找到律师,然后集体赔偿,但厂长不愿意出这么多钱,他只想把带头闹事的人搞定,于是他找到律师,问谁带的头啊?律师回答,不知道,大家的情绪都很激动。
难道就找不到带头的么?是的,除非员工事先和律师约定好,有人愿意出来谈判。赵铁柱就是这么一个人,他找到律师说,我啥也不怕,厂长找你要人,你就把我供出去。
这种事先的约定,就是在路由器上配置的端口映射。端口映射能解决路由器找设备的问题,但对于我们这些普通用户,仅仅有这一点还不够。我们没有公网IP。
还是用刚才的例子,员工委托的律师,可能并不是真正负责处理案子的律师。这名律师在接到业务后,又把它委托给另一名律师,这样他能坐着收钱。可接到委托的律师也不傻,他又转手给要价更低的实习律师。一层一层下来,厂长见到的律师,完全不认识工厂里的员工。所以我们配置的端口映射,根本没用。
在现实情况中,电信是一手运营商;长城宽带、巨龙宽带到电信办了个超大套餐,然后自己搭服务器做路由,成为了二手运营商;房东办了巨龙宽带的100M套餐,用路由器分出一根网线给你;你在房东那买了20M的宽带,再自己接个路由器,给手机和电脑使用。
公网IP这种稀缺资源,掌握在一手运营商手上。如果你是直接在电信拉的宽带,那可以直接拨打10000号找客服申请。但如果是上面这种情况,朋友,我劝你还是放弃吧。
内网穿透就是没有公网IP时,让外网访问内网设备的技术。
FRP
市面上有很多内网穿透软件,最有名的应该是花生壳,但这玩意得实名认证,而且收费,这里使用更稳定更简单的开源软件,FRP。
下载
FRP的服务端和客户端是同一个项目,但根据操作系统的不同,有不同的压缩包。下载地址
使用前最好确保服务端和客户端是同一个版本,参考官方文档。
Linux服务端
虽然自己的电脑没有公网IP,但需要一台有公网IP的VPS做代理,最好有自己的域名,配置一个*.frp.zsf.com的泛解析。搭建过程如下
1 | $ cd /usr/local |
修改配置文件frps.ini
1 | [common] |
保存后启动
1 | $ nohup ./frps -c ./frps.ini & |
查看是否启动成功
1 | $ ps -ef | grep frps |
浏览器打开server.frp.zsf.com:7500可以看到所有客户端连接状态。
Linux客户端
和服务端搭建类似
1 | $ cd /usr/local |
修改配置文件frpc.ini
1 | [common] |
保存后启动
1 | $ nohup ./frpc -c ./frpc.ini & |
有几点注意事项
- 访问客户端管理后台
localhost:7400可在线更新配置文件 - 不管多少个客户端映射多少个端口,每个映射名必须不一样,也就是
[]中的内容 - tcp协议的映射地址是
server.frp.zsf.com:6001 - http协议的映射地址是
web.frp.zsf.com - 因为tcp协议只有IP不存在域名,所以访问时必须加端口
Windows客户端
- 下载Windows压缩包,地址在上方
- 解压到任意位置
- 删除服务端文件
frps*和LICENSE - 修改配置文件
frpc.ini,和Linux客户端配置方式相同 - 按住
Shift然后右键,选择在此处打开命令窗口 - 输入
frpc.exe -c frpc.ini启动
可参考另一篇优秀教程,使用frp进行内网穿透。