安装与配置frp实现访问内网ERP系统傻瓜教程

大伟哥 提交于 2019-01-13,周日, 21:17

上次大伟哥交待了对于从外网访问隐藏在公司内网的ERP系统的需求,分享了找到frp这个开源免费又好用的反向代理+内网穿透工具的过程,罗哩罗嗦一大篇没说到怎么安装和使用上,今天另开一篇,直接写安装与配置的方法,供需要的朋友参考。

一、 frp实现内网穿透访问内网web应用的条件

要搭建自己的frp服务实现内网穿透并访问到内部的web应用,需要具备两个条件:

1. 要拥有一个具备固定公网IP的服务器,比如阿里云ECS服务器;

2.还要有一个可以自定义解析的域名,可以是顶级域名如daweibro.com,也可以是二级、三级域名,比如erp.daweibro.com,只要自己能够指定解析地址就可以。IP地址解析可以参照大伟哥之前写的这篇:解析域名到自己的VPS/云服务器,在原有的基础上增加一个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本身集成了服务器端和客户端,因此服务器端和客户机分别下载同一个压缩文件就可以了:

  1. wget -c https://github.com/fatedier/frp/releases/download/v0.23.1/frp_0.23.1_linux_amd64.tar.gz

解压缩到当前目录:

  1. tar cxvf frp_0.23.1_linux_amd64.tar.gz

三、在公网服务器上配置和运行frp服务端

1. 服务器端的配置文件是frps.ini,大伟哥使用了最简的配置如下:

  1. [common]
  2. bind_port = 7000
  3. vhost_http_port = 8080

以上配置设定使用8080端口提供http服务。

2. 运行frp服务端的命令是frps,后面需要指定配置文件:

  1. #进入frp目录、指定配置文件并运行frp服务:
  2.  
  3. daweibro@aliyun-server:~$ cd frp_0.23.0_linux_amd64/
  4. daweibro@aliyun-server:~/frp_0.23.0_linux_amd64$ ./frps -c ./frps.ini
  5. 2019/01/22 13:25:03 [I] [service.go:130] frps tcp listen on 0.0.0.0:7000
  6. 2019/01/22 13:25:03 [I] [service.go:172] http service listen on 0.0.0.0:8080
  7. 2019/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, 因些编辑配置文件如下:

  1. [common]
  2. server_addr = 121.41.23.39
  3. server_port = 7000
  4.  
  5. [web]
  6. type = http
  7. local_port = 8069
  8. custom_domains = erp.daweibro.com

2. 进入目录,启动客户端服务frpc:

  1. daweibro@OpenERP-Server:~$ cd frp_0.23.0_linux_amd64/
  2. daweibro@OpenERP-Server:~/frp_0.23.0_linux_amd64$ ./frpc -c ./frpc.ini
  3. 2019/01/22 14:24:47 [I] [service.go:205] login to server success, get run id [02875c84cccc2084], server udp port [0]
  4. 2019/01/22 14:24:47 [I] [proxy_manager.go:136] [02875c84cccc2084] proxy added: [web]
  5. 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的目录内使用以下命令:

  1. daweibro@aliyun-server:~/frp_0.23.0_linux_amd64$ nohup ./frps -c frps.ini &
  2. [1] 6671
  3. daweibro@aliyun-server:~/frp_0.23.0_linux_amd64$ nohup: ignoring input and appending output to 'nohup.out'

以上说明frp开始在后台运行,命令行上会忽略输入信号,并把输出信息写在nohup.out文件里。

同样在,我们在内网服务器上使用以下命令在后台运行frp客户端:

  1. nohup ./frpc -c ./frpc.ini &

2.设置frp开机启动

设置frp开机自启动在不同的操作系统版本下可以有多种不同的方式。大伟哥在Ubuntu Server下采用了最简单的一种方式,就是把前面后面运行的这两条命令分别复制,插入到了/etc/rc.local文件的exit()语句前面。并且把原来的相对路径改成绝对路径就可以了。类似于下面这个样子:

  1. #!/bin/sh -e
  2. #
  3. # rc.local
  4. #
  5. # This script is executed at the end of each multiuser runlevel.
  6. # Make sure that the script will "exit 0" on success or any other
  7. # value on error.
  8. #
  9. # In order to enable or disable this script just change the execution
  10. # bits.
  11. #
  12. # By default this script does nothing.
  13.  
  14. nohup /home/daweibro/frp_0.23.0_linux_amd64/frps -c /home/daweibro/frp_0.23.0_linux_amd64/frps.ini &
  15.  
  16. exit 0
文章分类

标签

添加新评论

此字段内容将保密,不会被其他人看见。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。