安装与配置frp实现访问内网ERP系统教程
一、 frp实现内网穿透访问内网web应用的条件
要搭建自己的frp服务实现内网穿透并访问到内部的web应用,需要具备两个条件:
1. 要拥有一个具备固定公网IP的服务器,比如阿里云ECS服务器;
2.还要有一个可以自定义解析的域名,可以是顶级域名如daweibro.com,也可以是二级、三级域名,比如erp.daweibro.com,只要自己能够指定解析地址就可以。,在原有的基础上增加一个erp的子域名A记录,需等一段时间(几分钟到几个小时甚至一两天不定)让域名解析生效。
如果不具备上面的条件,那就没办法自己实现了,可以在网上寻找付费的frp服务,或者直接购买花生壳硬件盒子,花费不多还省事。
如果这两个都有了,就可以下载安装和配置了。
二、下载frp程序
frp的项目网址在https://github.com/fatedier/frp,可以使用git直接pull,也可以直接到https://github.com/fatedier/frp/releases页面找到相应的版本下载。现在最新的版本号是0.23.1,大伟哥的公网服务器和内网服务器使用的都是64位Ubuntu Server,因些下载64位linux系统适用的版本到当前目录就可以了。frp本身集成了服务器端和客户端,因此服务器端和客户机分别下载同一个压缩文件就可以了:
wget -c https://github.com/fatedier/frp/releases/download/v0.23.1/frp_0.23.1_linux_amd64.tar.gz
解压缩到当前目录:
tar cxvf frp_0.23.1_linux_amd64.tar.gz
三、在公网服务器上配置和运行frp服务端
1. 服务器端的配置文件是frps.ini,大伟哥使用了最简的配置如下:
[common]bind_port = 7000vhost_http_port = 8080
以上配置设定使用8080端口提供http服务。
2. 运行frp服务端的命令是frps,后面需要指定配置文件:
#进入frp目录、指定配置文件并运行frp服务: daweibro@aliyun-server:~$ cd frp_0.23.0_linux_amd64/daweibro@aliyun-server:~/frp_0.23.0_linux_amd64$ ./frps -c ./frps.ini2019/01/22 13:25:03 [I] [service.go:130] frps tcp listen on 0.0.0.0:70002019/01/22 13:25:03 [I] [service.go:172] http service listen on 0.0.0.0:80802019/01/22 13:25:03 [I] [root.go:210] Start frps success
以上说明frps服务成功启动了。
四、在内网服务器上配置和运行frp客户端:
1. 相应地,frp客户端的配置文件是frpc.ini,需要指定以下的内容:外网服务器的IP地址和端口,内网ERP服务的类型和端口。在这个例子里,大伟哥的外网IP地址是121.41.23.39,内网使用的OpenERP(现在叫ODOO)提供web服务的端口号是8069,域名是erp.daiweobro.com, 因些编辑配置文件如下:
[common]server_addr = 121.41.23.39server_port = 7000 [web]type = httplocal_port = 8069custom_domains = erp.daweibro.com
2. 进入目录,启动客户端服务frpc:
daweibro@OpenERP-Server:~$ cd frp_0.23.0_linux_amd64/daweibro@OpenERP-Server:~/frp_0.23.0_linux_amd64$ ./frpc -c ./frpc.ini2019/01/22 14:24:47 [I] [service.go:205] login to server success, get run id [02875c84cccc2084], server udp port [0]2019/01/22 14:24:47 [I] [proxy_manager.go:136] [02875c84cccc2084] proxy added: [web]2019/01/22 14:24:47 [I] [control.go:143] [web] start proxy success
五、实现外网访问内网ERP服务
frp的服务端和客户端都跑起来以后,我们就可以在外网通过自定义的域名访问处于内网的ERP系统了。
按照前面的配置文件运行起来的内网穿透+反向代理服务,要访问ERP系统只需要在外网通过任何网络浏览器访问网址http://erp.daweibro.com:8080,就能随时随地处理业务。有个三五分钟的时间,就可以随手做个报价单,记个费用帐了。做个高效的商务人士,美滋滋!
六、后台运行frp服务及设置开机自启动
上面的frp服务不管是服务器端还是客户端都是直接运行在命令行前端的,建立连接的信息会占用这个命令行窗口并一直动态输出运行信息。一旦关掉命令行,frp服务就会结束,我们就没法访问内网了。因此我们需要让frp服务运行在后端,不会因为命令行的退出而中断服务。再进一步,我们还要设置frp服务在服务器重启后自动启动,省去我们自己手动启动的麻烦事。
1.使用nohup结合&让frp服务在后台持续运行,可以让frp服务一直保持,不受命令行退出的影响。
在外网服务上frp的目录内使用以下命令:
daweibro@aliyun-server:~/frp_0.23.0_linux_amd64$ nohup ./frps -c frps.ini &[1] 6671daweibro@aliyun-server:~/frp_0.23.0_linux_amd64$ nohup: ignoring input and appending output to 'nohup.out'
以上说明frp开始在后台运行,命令行上会忽略输入信号,并把输出信息写在nohup.out文件里。
同样在,我们在内网服务器上使用以下命令在后台运行frp客户端:
nohup ./frpc -c ./frpc.ini &
2.设置frp开机启动
设置frp开机自启动在不同的操作系统版本下可以有多种不同的方式。大伟哥在Ubuntu Server下采用了最简单的一种方式,就是把前面后面运行的这两条命令分别复制,插入到了/etc/rc.local文件的exit()语句前面。并且把原来的相对路径改成绝对路径就可以了。类似于下面这个样子:
#!/bin/sh -e## rc.local## This script is executed at the end of each multiuser runlevel.# Make sure that the script will "exit 0" on success or any other# value on error.## In order to enable or disable this script just change the execution# bits.## By default this script does nothing. nohup /home/daweibro/frp_0.23.0_linux_amd64/frps -c /home/daweibro/frp_0.23.0_linux_amd64/frps.ini & exit 0