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
。
压缩包解压,里面的东西人狠话不多
把压缩包里的东西放到/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界面,一般用不着就不写了