近期在开发的过程中有一台服务器还没来得及托管到数据中心,暂时放在工作室,但工作室没有公网IP,正好我有一台闲置的云服务器,故使用frp进行内网穿透,以便外网能够连接ssh以及实现网页的访问。
Frp 是一款开源的软件,能够轻松实现内网穿透,方便服务器上架前远程的调试。
本文重点在于搭建frp内网穿透服务器,具体内网穿透原理在这里不多赘述,大家自行查阅资料。
1.一台处于内网的主机
2.一台公网Linux服务器
3.Frp
Frp的配置包含客户端和服务端
1.从GitHub上下载Frp
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz
2.解压Frp
tar -zxvf frp_0.13.0_linux_amd64.tar.gz
3.切换到Frp所在目录
cd frp_0.13.0_linux_amd64
4.观察目录结构
ls -l
从目录结构我们可以看出 目录中包含了几个ini文件,其中我们要用到的是客户端的ini文件,顾名思义就是frps.ini,c即server。
5.编辑配置文件
bind_port就是客户端与服务器通讯的端口,随便定义一个自己喜欢的端口,一定要开放的,空闲的。默认是7000。
vhost_http_port就是与自己内网服务器http请求连接的端口。
6.运行frp服务端
这一步会在下文客户端配置完成时细讲。
1.从GitHub上下载Frp
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz
2.解压Frp
tar -zxvf frp_0.13.0_linux_amd64.tar.gz
3.切换到Frp所在目录
cd frp_0.13.0_linux_amd64
4.观察目录结构
ls -l
从目录结构我们可以看出 目录中包含了几个ini文件,其中我们要用到的是客户端的ini文件,顾名思义就是frpc.ini,c即client。
下面让我们编辑它
5.编辑配置文件
配置文件如下:
7000端口是frp客户端与服务端通讯的端口,必须与服务端上的端口相同,这是后面所有通讯的基础,所以必须配置正确。
接下来,我们来配置web访问。刚才我们已经在远程服务器上开放了2333端口,用于web的访问。现在我们对客户端进行配置。
客户端配置如下:(直接继续往下写)
type字段我们设置为http协议,local_port就是本地端口的意思,我这边本地是80端口。如果我们需要通过域名进行访问我们就绑定域名,将custom_domains填入,这边我的域名是www.yeliheng.com
到此,我们客户端与服务端的配置文件全部编辑完成。只差一步即可完成内网穿透。
6.运行frp
frp有几个参数,这边我们用到的只是-c参数。具体的参数可前往GitHub查看详细手册。
cd到frp的安装目录下,然后执行如下指令:
./frps -c frps.ini &
运行后一般不会返回任何提示,具体的信息请直接查看日志。(frps.log)
在末尾加一个&表示后台运行。
接下来启动frp客户端
在客户端输入:
./frpc -c frpc.ini &
这时 客户端与服务端将建立连接,内网穿透全部完成。
我们现在可以通过外网访问内网资源了。
浏览器输入域名:2333即可访问刚才配置的web
若要实现frp稳定处于后台运行并且跟随服务器开机自启,有多种解决方案。经过测试,我极力推荐使用pm2作为解决方案。十分稳定并且相当于守护进程,进程崩溃则自动重启进程。pm2的用法请见我的下一篇blog。
原文链接:https://blog.csdn.net/yeliheng/article/details/101358154