跳转至

frp

简介

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式 通过具有公网 IP 节点的中转暴露到公网。

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
代理组间的负载均衡。
端口复用,多个服务通过同一个服务端端口暴露。
多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
服务端和客户端 UI 页面。

之前内网穿透都是用的autossh,可以参考这里。用了一段时间,主要问题有俩,第一个是配置还是稍微有点麻烦。第二个就是 client一多,就不知道都有哪些了,尤其是需要知道哪些client在线,需要一个类似dashboard的功能,找来找去就找到了frp,可以很好的满足需求。

安装

内网穿透,顾名思义frp搭建也需要分别搭建客户端和服务端两部分,其中服务端用于流量转发,需要有公网ip。部署比较简单,直接去github release 下载对应的文件就行了,Linux86 64位一般是这个frp_0.38.0_linux_386.tar.gz

img_3.png

压缩包解压,里面的东西人狠话不多

img_4.png

把压缩包里的东西放到/etc/frp下,启动服务端就/etc/frp/frps -c /etc/frp/frps.ini,启动客户端就/etc/frp/frpc -c /etc/frp/frpc.ini frp[s|c].ini是简单的配置文件,一般用这个就行,frp[s|c]_full.ini是完整的配置文件,一般也用不着,瞅瞅就行了。 服务端记得要配置阿里云的防火墙端口策略,还要关闭防火墙

ufw disable
systemctl stop firewalld.service 
服务端的配置

[common]
;绑定服务端的端口,记得防火墙和安全策略组放行
bind_port = 7000

客户端的配置

[common]
;server地址,公网地址
server_addr = 127.0.0.1
;server端口
server_port = 7000

[ssh]
;一般tcp就行了
type = tcp
;绑定的ip,通常是本机,也可以是局域网的地址
local_ip = 127.0.0.1 
;ssh的服务就22端口,也可以转发到其他端口,实现远程访问mysql、web之类的
local_port = 22
;要绑定的远程机器的端口,记得放行
remote_port = 6000 

;这个配置是用来p2p连接的,流量不走server,速度更快
[sshp2p]
type = xtcp
;具体用法参考官方文档
sk = some key
;也是穿透ssh 但是比上面ssh那个配置更快
local_ip = 127.0.0.1
local_port = 22

开机启动

这玩意肯定要开机自启,压缩包里还贴心的提供了systemd的文件,客户端和服务端的service文件放置到对应机器的/etc/systemd/system/下 然后

systemctl enable frps.service # 服务端命令
systemctl enable frpc.service # 客户端命令

管理的话就

systemctl start frpc.service    # 启动
systemctl stop frpc.service     # 停止
systemctl restart frpc.service  # 重启
systemctl status frpc.service   # 查看状态

Dashboard

frp提供了一个dashboard页面,可以在web端直接看状态,配置是

[common]
dashboard_port = 7500
; dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin

然后重启服务,就可以在服务端7500端口打开dashboard界面。client也有个admin界面,一般用不着就不写了

img_5.png

评论