luler 一、简介 frp是一个由go语言开发的简单、高效的内网穿透工具 frp 支持多种代理类型,包括TCP、UDP、HTTP、HTTPS等等,为不同场景需求提供丰富的解决方案 支持流量加密、压缩,身份认证,代理限速,负载均衡等众多能力,同时提供一个代理连接实时流量可视化面板 开源地址参考:https://github.com/fatedier/frp,官方使用文档:https://gofrp.org/zh-cn/docs/ 基本架构与工作原理可参考下图: 二、安装与使用 1. 服务端搭建 需要准备一台具有公网IP的服务器 提前安装好Docker、docker-compose软件环境 新建docker-compose.yml配置文件,内容如下: services: frps: image: snowdreamtech/frps:0.63 container_name: frps restart: always volumes: - ./frps.toml:/etc/frp/frps.toml #开启主机网络模式,可以任意使用主机端口,安全起见,也可以注释这个,开启下面的ports配置的主机端口映射,以限制主机端口的使用 network_mode: host #ports: #- "7000:7000" # 服务端通信端口 #- "8080:8080" # HTTP 端口, #- "7500:7500" # Dashboard 端口 #- "6000-6100:6000-6100" # 额外增加的端口,供其他tcp/udp等协议使用 在docker-compose.yml同目录下,再新建frp服务端的配置文件frps.toml,配置如下: # 客户端连接服务端的端口 bindPort = 7000 # 客户端连接校验密码,部署时需要自行改成复杂的密码 auth.token = "P<#.nF_R" # 开启web服务的端口,客户端反代http服务时,需要使用这个端口,然后根据客户端绑定的域名来进行区分 vhostHTTPPort = 8080 # 默认为 127.0.0.1,如果需要公网访问,需要修改为 0.0.0.0。 webServer.addr = "0.0.0.0" # dashboard页面端口 webServer.port = 7500 # dashboard 用户名密码,可选,默认为空,部署时需要自行改成复杂的登录信息 webServer.user = "admin" webServer.password = "123456" # 表示 server 端只接受 TLS 连接的客户端,新版本默认就是开启的,开启后,会自动使用自签证书或自定义配置的证书进行通信流量加密 transport.tls.force = true 一键启动frp服务端 docker-compose up -d 2. 客户端搭建 同样需要Docker环境,新建docker-compose.yml配置文件,内容如下: services: frpc: image: snowdreamtech/frpc:0.63 container_name: frpc restart: always volumes: - ./frpc.toml:/etc/frp/frpc.toml 需要新建frp客户端配置文件frpc.toml,配置如下: #这里连接服务端的配置 serverAddr = "你的公网IP或者域名" serverPort = 7000 auth.token = "P<#.nF_R" #http服务穿透1,如果域名已经指向公网服务器,可以配置域名访问,如下可访问:http://npm.vds.luxi.free.hr:8080/ [[proxies]] name = "web_test1" type = "http" localIp = "172.17.0.1" localPort = 9000 customDomains = ["npm.vds.luxi.free.hr"] #http/tcp服务穿透2,可以自定义公网端口,如下配置可以访问:http://公网ip:9999/ [[proxies]] name = "web_test2" type = "tcp" localIP = "172.17.0.1" localPort = 9000 remotePort = 9999 #mysql服务穿透示例,可以连接公网6033端口访问内网中mysql服务 [[proxies]] name = "mysql_test" type = "tcp" localIP = "172.17.0.1" localPort = 3306 remotePort = 6033 一键启动frp客户端 docker-compose up -d 3. C/S都部署完之后,就可以通过公网访问内网中的服务 如上客户端配置,访问内网中 portainer 服务,成功访问如下 如上客户端配置,访问内网中的 mysql 服务,成功访问如下 访问frp提供的可视化流量面板 需要授权登录,输入服务端配置文件中配置的账号密码即可 正在运行的代理服务 三、总结 frp是一款比较流行的内网穿透工具,玩法较多,适应各种内网穿透场景,性能不错 没有提供可视化的管理界面,每次增加内网服务代理都需要手动编辑客户端配置,并且重启客户端服务,使用者需要有一定的开发运维能力