【精选】frp | 您所在的位置:网站首页 › 内网穿透go › 【精选】frp |
官网: https://gofrp.org/ frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 frp 采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。 由于采用 Golang 编写,所以系统需求和最新的 Golang 对系统和平台的要求一致 下载https://github.com/fatedier/frp/releases 目前可以在 Github 的 Release 页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中。 解压缩下载的压缩包,将其中的 frpc 拷贝到内网服务所在的机器上,将 frps 拷贝到具有公网 IP 的机器上,放置在任意目录。 编写配置文件,先通过 ./frps -c ./frps.ini 启动服务端,再通过 ./frpc -c ./frpc.ini 启动客户端。如果需要在后台长期运行,建议结合其他工具使用,例如 systemd 和 supervisor。 原理frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。 内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。 用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。 代理在 frp 中一个代理对应一个需要暴露的内网服务。一个客户端支持同时配置多个代理。 frp 支持多种代理类型来适配不同的使用场景。 这个示例通过简单配置 TCP 类型的代理让用户访问到内网的服务器。 在具有公网 IP 的机器上部署 frps,修改 frps.ini 文件,这里使用了最简化的配置,设置了 frp 服务器用户接收客户端连接的端口: [common] bind_port = 7000 在需要被访问的内网机器上(SSH 服务通常监听在 22 端口)部署 frpc,修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x: server_addr = x.x.x.x server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000local_ip 和 local_port 配置为本地需要暴露到公网的服务地址和端口。remote_port 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。 分别启动 frps 和 frpc。 通过 SSH 访问内网机器,假设用户名为 test: ssh -oPort=6000 [email protected] frp 会将请求 x.x.x.x:6000 的流量转发到内网机器的 22 端口。 通过自定义域名访问内网的 Web 服务这个示例通过简单配置 HTTP 类型的代理让用户访问到内网的 Web 服务。 HTTP 类型的代理相比于 TCP 类型,不仅在服务端只需要监听一个额外的端口 vhost_http_port 用于接收 HTTP 请求,还额外提供了基于 HTTP 协议的诸多功能。 修改 frps.ini 文件,设置监听 HTTP 请求端口为 8080: [common] bind_port = 7000 vhost_http_port = 8080 修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 Web 服务监听的端口, 绑定自定义域名为 custom_domains。 常见报错:zsh: exec format error: 你可能需要更换别的安装包进行尝试 bad cpu xxxx 你可能需要更换别的安装包进行尝试 start error: port unavailable 可能是公网ip服务器端的端口被占用 |
CopyRight 2018-2019 实验室设备网 版权所有 |