抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

FRP内网穿透

Fast Reverse Proxy, 使用Golang开发的高性能的反向代理应用.

项目地址

https://github.com/fatedier/frp

文档位置

作用

  1. 利用处于内网或防火墙后的机器, 对外网环境提供 HTTP 或 HTTPS 服务。
  2. 对于 HTTP, HTTPS 服务支持基于域名的虚拟主机, 支持自定义域名绑定, 使多个域名可以共用一个 80 端口。
  3. 利用处于内网或防火墙后的机器, 对外网环境提供 TCP 和 UDP 服务, 例如在家里通过 SSH 访问处于公司内网环境内的主机。

安装

支持多个平台部署. windows直接下载安装包解压即可, 下面是linux安装

wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz
tar -zxvf frp_0.37.1_linux_amd64.tar.gz
mv frp_0.37.1_linux_amd64 frp

ssh

服务端配置

FRP 默认给出两个服务端配置文件, 一个是简版的 frps.ini, 另一个是完整版本 frps_full.ini。

$ vim frps.ini

[common]
bind_port = 7000 

# 默认配置中监听的是 7000 端口, 可根据自己实际情况修改.

# 启动 FRP 服务端
root@vultr:/usr/local/frp# ./frps -c ./frps.ini
2020/02/19 17:01:22 [I] [service.go:152] frps tcp listen on 0.0.0.0:7000
2020/02/19 17:01:22 [I] [root.go:205] start frps success

通过上面简单的两步就可以成功启动一个监听在 7000 端口的 FRP 服务端。

客户端配置

和 FRP 服务端类似, FRP 默认也给出两个客户端配置文件, 一个是简版的 frpc.ini, 另一个是完整版本 frpc_full.ini

$ code frpc.ini

[common]
# server_addr 为 FRP 服务端的公网 IP
server_addr = 4.3.2.1
# server_port 为 FRP 服务端监听的端口
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

# 启动 FRP 客户端
D:\Tools\frp_0.31.2_windows_amd64>frpc.exe
2020/02/19 17:06:22 [I] [service.go:250] [69dc66a147a83abd] login to server success, get run id [69dc66a147a83abd], server udp port [0]
2020/02/19 17:06:22 [I] [proxy_manager.go:144] [69dc66a147a83abd] proxy added: [ssh]
2020/02/19 17:06:23 [I] [control.go:164] [69dc66a147a83abd] [ssh] start proxy success

访问

# 通过 ssh 访问内网机器, 假设用户名为 test
ssh -p 6000 [email protected]

web服务

有时想要让其他人通过域名访问或者测试在本地搭建的 web 服务, 但是由于本地机器没有公网 IP, 无法将域名解析到本地的机器, 通过 frp 就可以实现这一功能, 以下示例为 http 服务, https 服务配置方法相同, vhost_http_port 替换为 vhost_https_port, type 设置为 https 即可。

服务端

# 修改 frps.ini 文件, 设置 http 访问端口为 8080:
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080
# 启动
./frps -c ./frps.ini

客户端

# 修改 frpc.ini 文件, 假设 frps 所在的服务器的 IP 为 x.x.x.x, local_port 为本地机器上 web 服务对应的端口, 绑定自定义域名 www.yourdomain.com
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com

# 启动
./frpc -c ./frpc.ini
# 将 www.yourdomain.com 的域名 A 记录解析到 IP x.x.x.x, 如果服务器已经有对应的域名, 也可以将 CNAME 记录解析到服务器原先的域名。
# 通过浏览器访问 http://www.yourdomain.com:8080 即可访问到处于内网机器上的 web 服务。

远程桌面

服务端配置。

[common]
bind_port = 7000
token = xxxx

dashboard_port = 4008
dashboard_user = lgq
dashboard_pwd = lgq51233

nohup ./frps -c frps.ini >/dev/null 2>&1 &

客户端配置。local_port指向远程桌面服务端口,windows下默认是3389。

[common]
server_addr = xxxxx
server_port = 7000
token = xxxx

[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 5800

停止和启动frp

# linux后台运行
nohup ./frps -c frps.ini >/dev/null 2>&1 &
# windows下后台运行
start /min %FRP_HOME%/frpc.exe -c %FRP_HOME%/conf/frpc.ini
# linux停止
ps -aux | grep frp
kill -9 [pid]
# windows停止
ps | findstr frp
# 12    20.43      14.98       1.34     716   1 frpc
kill [pid]

评论