「内网穿透」Frp 全流程指南

前言

提供内网穿透服务的厂家还挺多,但是问题层出不穷。所以自己就搭建一套服务,自己来使用。

流程

  • 码云自建加速服务
  • 购置云服务器
  • 购置本地服务器
  • frp简介
  • frp穿透类型
  • frp-tcp/udp
  • frp-http服务
  • 服务器端配置
  • 本地服务器配置
  • 停止运行
  • 应用:文件服务器

一、码云自建加速服务

frp项目是位于GitHub上的,如果用wget命令去下载包,在国内的速度是非常慢的,在服务器环境下,安装一个代理是比较麻烦的,为了能让自己快速安装,也方便同事也能快速安装。可以在国内的代码平台码云部署拷贝一份frp项目。

「码云」的地址是:https://gitee.com,它有一个功能是「从GitHub、GitLab导入仓库」,可以将GitHub的项目导入进去。

首先是在GitHub项目中,复制对应的链接。

然后在「码云」中导入。

导入项目之后,「码云」上面是没有发布版本的,这就需要从「GitHub」上将发布的最新版本下载下来。

下载完成之后,在「码云」中,创建一个发布版本,将GitHub中的安装包打包进去。

完成之后,就可以获得frp安装包的直接下载地址。

右击文件,点击「拷贝链接」,即可。这里的frp文件的地址是:https://gitee.com/megeeks/frp/attach_files/857563/download/frp_0.37.1_linux_amd64.tar.gz

得到该地址之后,就可以使用wget指令,就可以直接下载该文件了。

wget https://gitee.com/megeeks/frp/attach_files/857563/download/frp_0.37.1_linux_amd64.tar.gz

服务器和本地服务器都使用该命令进行安装。

二、购置服务器

如果对延迟的要求很高,例如远程桌面、VNC等,你就可以购买国内的服务器,这样延迟会低很多,网速也会很快。

如果对延迟的要求不高,大可推荐使用国外的服务器,国外的服务器,价格低,大带宽,非常的实惠。

服务器服务厂家选择大厂最好。

三、购置本地服务器

本地服务器比较虚,可以选择一个树莓派,也可以买一台瘦客户端,都是没有任何问题的。Frp可以安装的。

四、frp简介

如果你不在家也访问家里的设备,家里的设备都是内网IP,没有外网IP,这就需要内网穿透技术。

商业的公司有不少,但是效果差强人意,我用过国内最大一家的产品,效果是不行的,延迟比frp大太多了。

五、frp穿透类型

按照网络的协议来讲,分为了TCP、UDP、HTTP等。

5.1 frp-tcp/udp

5.2 frp-http服务

http协议是需要域名的,而且国内的服务器是需要备案的,所以不推荐使用,推荐使用TCP代替。

六、服务器端配置

首先是将frp进行下载

wget https://gitee.com/megeeks/frp/attach_files/857563/download/frp_0.37.1_linux_amd64.tar.gz

由于是压缩包,需要解压压缩包

tar -zxvf frp_0.37.1_linux_amd64.tar.gz

进入该目录

cd frp_0.37.1_linux_amd64

删除没有用的文件

rm frpc
rm frpc.ini
rm frpc_full.ini

修改配置文件,修改配置的命令是

sudo vim frps.ini

将内容修改为

[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin

后台运行该服务

nohup ./frps -c frps.ini &

输出如下内容即表示正常运行

nohup: ignoring input and appending output to ‘nohup.out’

此时可先使用Ctrl+C关闭nohup,frps依然会在后台运行,使用jobs命令查看后台运行的程序。
jobs

在结果中我们可以看到frps正在后台正常运行

[1]+  Running       nohup ./frps -c frps.ini &

七、本地服务器配置

首先是将frp软件进行下载

wget https://gitee.com/megeeks/frp/attach_files/857563/download/frp_0.37.1_linux_amd64.tar.gz

解压压缩包

tar -zxvf frp_0.37.1_linux_amd64.tar.gz

进入该目录

cd frp_0.37.1_linux_amd64

删除没有用的文件

rm frps
rm frps.ini
rm frps_full.ini

修改配置文件,修改配置的命令是

sudo vim frpc.ini

将内容修改为

[common]
server_addr = x.x.x.x
server_port = 7000
token = 12345678

[rdp]
type = tcp
local_ip = 127.0.0.1           
local_port = 3389
remote_port = 7000  

[novnc]
type = tcp
local_ip = 127.0.0.1
local_port = 6081
remote_port = 6081

7.1 服务器配置

common字段下的三项即为服务端的设置。

  • “server_addr”为服务端IP地址,填入即可。
  • “server_port”为服务器端口,填入你设置的端口号即可,如果未改变就是7000
  • “token”是你在服务器上设置的连接口令,原样填入即可。

7.2 自定义映射

frpc.ini的rdp、novnc 字段都是自己定义的规则,自定义端口对应时格式如下。

  • “[xxx]”表示一个规则名称,自己定义,便于查询即可。
  • “type”表示转发的协议类型,有TCP和UDP等选项可以选择,如有需要请自行查询frp手册。
  • “local_port”是本地应用的端口号,按照实际应用工作在本机的端口号填写即可。
  • “remote_port”是该条规则在服务端开放的端口号,自己填写并记录即可。

7.3 运行frp服务

配置完成frpc.ini后,就可以运行frpc了,由于我们的本地服务器一般都是运行在Linux中的,所以可以作为服务运行在后台。

nohup ./frpc -c frpc.ini &

如果需要后台运行,则需要使用完整的路径

nohup /home/iecube/frp_0.37.1_linux_amd64/frpc -c /home/iecube/frp_0.37.1_linux_amd64/frpc.ini &

八、停止运行

获取进程

ps -aux|grep frp| grep -v grep

结果如下

root      2986  0.0  0.1 712732 11452 pts/0    Tl   15:09   0:00 ./frpc -c ./frpc.ini                             
root      2992  0.0  0.1 712732 10804 pts/0    Tl   15:11   0:00 ./frpc -c ./frpc.ini                             
root      3000  0.0  0.1 713884 11152 pts/0    Sl   15:13   0:00 ./frpc -c frpc.ini                               
root      3007  0.0  0.1 712732 11392 pts/0    Sl   15:16   0:00 ./frpc -c frpc.ini   

关掉进程

kill -9 2986

结果是

root      2992  0.0  0.1 712732 10804 pts/0    Tl   15:11   0:00 ./frpc -c ./frpc.ini                             
root      3000  0.0  0.1 713884 11152 pts/0    Sl   15:13   0:00 ./frpc -c frpc.ini                               
root      3007  0.0  0.1 712732 11392 pts/0    Sl   15:16   0:00 ./frpc -c frpc.ini                               
[1]   Killed                  ./frpc -c ./frpc.ini               

九、应用

9.1 文件服务器

编辑文件 frpc.ini

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[test_static_file]
type = tcp
remote_port = 6000
plugin = static_file
plugin_local_path = /tmp/files
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc

访问网站:http://x.x.x.x:6000/static/,用户名和密码都是abc。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注