首先,需要有一个外网能访问到的服务器,以及一个域名。我用的是腾讯云的服务器,买的是体验版,买的时候附赠了一个域名
1.一个有公网IP的服务器
2.一个域名
3.本地服务器(内网的电脑)
有了这些就可以准备做内网穿透了,先查一下自己电脑的系统是多少位的,不会的自行百度。
注意:一定要安装和自己电脑对应的frp软件。
如:服务器是centOS的就安装linux的服务端软件,而内网的是windows的就安装windows的客户端。
先说内网穿透工具,我用的是frp,要说为什么,因为它开源啊,以后有时间了再测试别的吧。 frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。
开源免费
使用相对复杂,需要代理服务器支持
官网:https://github.com/fatedier/frp
文档:自己看官方文档就可以啦
我是用的可道云做的测试(毕竟简单),可道云地址:https://kodcloud.com/
说一下,下载,网址:https://github.com/fatedier/frp/releases
软件下载完成了剩下的就是配置和运行了。
准备工作完了,接下来就是配置了,有的说相对复杂,我还真没感觉到,可能是我看的太浅了吧。
首先说服务端的配置,也就是有公网ip的那个服务器的配置。我的是用的腾讯云服务器。
先解释一下frp各个文件,我这里随便找了一个例子,其他的类似,
服务端配置
只要配置到 18080 这里就可以了,下面的是控制板,配置上也可以,
配置:
[common]
bind_port = 7000
vhost_http_port = 18080
[common]
dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin
控制板效果图:
到这里就配置完成了,就可以愉快的启动了。
服务端启动:
./frps -c ./frps.ini
服务端启动成功,及启动的流程。
ps:centOS杀掉指定端口号的进程, SSH执行以上命令,可以查看到88端口正在被哪个进程使用。如进程号为 1777 。
netstat -lnp|grep 88 #88请换为你的apache需要的端口,如:80
kill -9 1777 #杀掉编号为1777的进程(请根据实际情况输入)
客户端的配置
windows的客户端,这里需要windows的frp客户端
右键 frpc.ini =》 选择打开方式 =》 记事本打开;代码如下:
[common]
server_addr = 118.xx.xx.186 #公网ip
server_port = 7000 #服务端配置的端口
#网站服务
[web]
type = http #类型
local_port = 80 #本地服务的端口号
custom_domains = pan.bt*****a.cn #我的一个二级域名
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
客户端启动
之后,以管理员身份打开cmd,进入到我们客户端所在的文件夹,运行,代码如下:
C:\windows\system32>d: //切换到D盘 D:\>cd D:\Users\BABY\Desktop\下载\frp_0.21.0_windows_amd64 //切换到frpc的文件夹 D:\Users\BABY\Desktop\下载\frp_0.21.0_windows_amd64>dir 驱动器 D 中的卷没有标签。 卷的序列号是 F668-2868 D:\Users\BABY\Desktop\下载\frp_0.21.0_windows_amd64 的目录 2018/10/11 14:49
. 2018/10/11 14:49
.. 2018/08/12 12:36 7,539,712 frpc.exe 2018/10/11 14:51 199 frpc.ini 2018/08/12 12:38 5,708 frpc_full.ini 2018/08/12 12:36 9,003,008 frps.exe 2018/08/12 12:38 26 frps.ini 2018/08/12 12:38 2,398 frps_full.ini 2018/08/12 12:38 11,358 LICENSE 7 个文件 16,562,409 字节 2 个目录 29,226,008,576 可用字节 D:\Users\BABY\Desktop\下载\frp_0.21.0_windows_amd64>frpc.exe -c frpc.ini //运行客户端
本机运行的项目就可以访问了,我运行的是可道云,端口号本地是80,代理的端口号是18080 所以访问的时候就是http://pan.xxxx.cn:18080
测试效果如下:
linux下配置文件相同,启动的时候和服务端类似,命令是:
./frpc -c ./frpc.ini
总结:
实现了内网穿透,但是还存在一些问题,如:
每次访问还要输入端口号,感觉很不好,所以想要实现一个直接输入http://pan.xxxx.cn 就能自动代理的
网速收到公网服务器的限制
但总体达到目标。