使用FRP 实现内网穿透

2,294 阅读2分钟

frp 是什么?

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

为什么使用 frp?

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

  • 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
  • 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
  • 代理组间的负载均衡。
  • 端口复用,多个服务通过同一个服务端端口暴露。
  • 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
  • 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
  • 服务端和客户端 UI 页面。

安装 frp

使用前提:使用 frp 需要一台有公网 IP 服务器部署服务端,如果没有,分享到此结束哈,后续就没必要看看。

下载地址: github.com/fatedier/fr…

此处以服务端为 linux 系统,客户端为 windows 系统为例,我们需要下载如下两个包。

frpdownload.png

服务端安装

frp_0.38.0_linux_amd64.tar.gz 解压,并将 frpsfrps.ini 上传到服务器,设置 frps 为可执行权限。

frps.ini 文件内容如下,这里使用了最简化的配置,设置了 frp 服务器用户接收客户端连接的端口:

[common]
bind_port = 7000

启动 frp 服务端,注意,服务器防火墙需要开放 7000 端口:

./frps -c ./frps.ini
客户端安装

frp_0.38.0_windows_amd64.tar.gz 解压, 进入解压目录这里所有 frpc 开头的文件都是客户端文件

frpc.ini 文件内容如下

[common]
server_addr = xx.xx.xx.xx   
server_port = 7000           
​
[yclj]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 8080

参数说明:

  • server_addr 为公网服务器地址
  • server_port 与服务端 bind_port 一致
  • local_port 3389 是windows的远程连接端口
  • remote_port 远程服务器端口,进行远程连接需要使用

启动客户端,命令行执行

./frpc.exe -c ./frpc.ini

使用

使用 windows mstsc 进行连接,机器地址为 server_addr:remote_port

注意事项:

  • 配置文件涉及端口需要全部开放
  • 客户端机器需要开启远程桌面访问