frp综合利用以及根据论坛群友讨论的一些改进

2020-06-16 01:16:24 22 4770 1


frp是一个强大的穿透代理工具,基于go编写,所以在并发和网络处理上具有天然优势。
基本使用在此不再赘述,大家可以查看frp官方文档,主要挑一些实战重点进行描述。

本文开始首先要感谢 四爷 龙哥 当当 少爷  277  不然我可能永远意识不到frp的强大功能 0.0

1.使用frp做为http代理和socks5代理服务器并经行穿透转发
frp通过插件模块支持http代理和socks5代理;官方文档描述如下:
客户端插件模式是为了在客户端提供更加丰富的功能,目前内置的插件有 unix_domain_socket、http_proxy、socks5、static_file。通过 plugin 指定需要使用的插件,插件的配置参数都以 plugin_ 开头。使用插件后 local_ip 和 local_port 不再需要配置。
使用 http_proxy 插件的示例:
# frpc.ini
[http_proxy]
type = tcp
remote_port = 6000
plugin = http_proxy
plugin_http_user = abc
plugin_http_passwd = abc
2.使用frp作为一个简单文件服务器;
对外提供简单的文件访问服务
通过 static_file 插件可以对外提供一个简单的基于 HTTP 的文件访问服务。
启动 frpc,启用 static_file 插件,配置如下:
# 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/file
# 访问 url 中会被去除的前缀,保留的内容即为要访问的文件路径
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc
3.frp进行多次代理;
通过代理连接 frps
在只能通过代理访问外网的环境内,frpc 支持通过 HTTP PROXY 和 frps 进行通信。
可以通过设置 HTTP_PROXY 系统环境变量或者通过在 frpc 的配置文件中设置 http_proxy 参数来使用此功能。
仅在 protocol = tcp 时生效。
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
http_proxy = http://user:[email protected]:8080
4.通过tls和算法加密frp流量
4.1加密与压缩
这两个功能默认是不开启的,需要在 frpc.ini 中通过配置来为指定的代理启用加密与压缩的功能,压缩算法使用 snappy:
# frpc.ini
[ssh]
type = tcp
local_port = 22
remote_port = 6000
use_encryption = true
use_compression = true
如果公司内网防火墙对外网访问进行了流量识别与屏蔽,例如禁止了 ssh 协议等,通过设置 use_encryption = true,将 frpc 与 frps 之间的通信内容加密传输,将会有效防止流量被拦截。
如果传输的报文长度较长,通过设置 use_compression = true 对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 cpu 资源。
4.2TLS
从 v0.25.0 版本开始 frpc 和 frps 之间支持通过 TLS 协议加密传输。通过在 frpc.ini 的 common 中配置 tls_enable = true 来启用此功能,安全性更高。
为了端口复用,frp 建立 TLS 连接的第一个字节为 0x17。
通过将 frps.ini 的 [common] 中 tls_only 设置为 true,可以强制 frps 只接受 TLS 连接。


5.把frpc.ini隐藏到应用里。
这个功能frpc官方并没有进行实现,本菜对代码进行了粗糙的更改。

github地址:https://github.com/nbsp-null/frp/
首先安装go环境,https://golang.org/ win环境下支持一键安装
然后把File_contet内的配置文件替换成自己的配置文件
最后在项目根目录运行:go build ./cmd/frpc
就生成了自带ini文件的frpc.exe

关于作者

flushx17篇文章109篇回复

评论22次

要评论?请先  登录  或  注册