frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。官方项目地址为(项目地址)
本文主要就是内网穿透,远程访问内网桌面,ssh和内网部署的项目
120.120.120.120
(假,测试用)本文中所使用内网系统为 win 10,公网系统为ubuntu 16.04 内核为amd64
# 1. 下载
wegt https://github.com/fatedier/frp/releases/download/v0.26.0/frp_0.26.0_linux_amd64.tar.gz
# https://github.com/fatedier/frp/releases/download/v0.26.0/frp_0.26.0_linux_amd64.tar.gz即为你获取的链接地址
# 2. 解压缩
tar -xzvf frp_0.26.0_linux_amd64.tar.gz
其中frps文件都为服务端文件,必须保留下来,而frpc文件
frpc frpc.ini frpc_full.ini
都为客户端文件,可以删除
编辑frps.ini文件夹
[common]
bind_addr=0.0.0.0
# bind_port为客户端与服务端进行通信的端口
bind_port = 7000
# vhost_http_port为服务端http服务的端口
# vhost_hppts_port为服务端https服务的端口
vhost_http_port = 8012
vhost_hppts_port = 443
# token 用于身份认证,只有和服务端token相同的客户端才可连接到此服务端
token = 12345678
# 设置frps仪表盘的端口号,和用户名密码,用户可通过 服务区ip:端口号来访仪表盘 120.79.252.63
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
# 为了后面的自定义二级域名,如果不需要多个程序使用同一个fprs时可以不用
subdomain_host = everykonw.xyz
进入解压后得到的frp目录,然后通过./frps -c frps.ini
命令即可启动服务端
上一步中的frps占据了整个命令窗口,所以接下来要考虑如何让它在后台运行并且开机自启:
首先通过vi /etc/systemd/system/frps.service
命令新建文件并写入以下内容:
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/home/admin/frp_0.26.0_linux_amd64/frps -c /home/admin/frp_0.26.0_linux_amd64/frps.ini
Restart= always
RestartSec=1min
[Install]
WantedBy=multi-user.target
注意ExecStart中要配置成自己的路径.
然后使用systemctl start frps
即可启动frps
用systemctl enable frps
即可将frps设置为开机启动
使用systemctl stop frps
可以停止fprs
使用*.everykonw.xyz:8012即可在客户端绑定不同的web应用
在多人同时使用一个 frps 时,通过自定义二级域名的方式来使用会更加方便。
通过在 frps 的配置文件中配置 subdomain_host
,就可以启用该特性。之后在 frpc 的 http、https 类型的代理中可以不配置 custom_domains
,而是配置一个 subdomain
参数。
只需要将 *.{subdomain_host}
解析到 frps 所在服务器。之后用户可以通过 subdomain
自行指定自己的 web 服务所需要使用的二级域名,通过 {subdomain}.{subdomain_host}
来访问自己的 web 服务。
#frps.ini
[common]
subdomain_host = everykonw.xyz
将泛域名 *.everyknow
解析到 frps 所在服务器的 IP 地址。
# frpc.ini
[web]
type = http
local_port = 80
subdomain = test
具有内网IP的电脑将作为客户端(frpc), 本文中客户端使用的是win10 64位系统,所以在releases页面下载frp_0.16.0_windows_386.zip
解压,删除与服务端相关的文件(frps文件夹,frps.ini,frps_full.ini)
#frpc.ini
[common]
server_addr = 120.120.120.120
server_port = 7000
# token身份认证
token = 12345678
# 设置管理员地址和端口来控制frpc端配置
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
# 远程桌面配置
[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 5200
#配置一个web应用
[web]
type = http
local_port = 80
subdomain = my
注意sever_ addr配置为公网电脑的IP,server_ port与frps.ini中的bind_ port一致。[ssh]为远程连接配置。[RDP]为远程桌面的配置。[web]为http通信的配置,启动frpc后,在游览器输入my.everykonw.xyz:8012即可访问当前项目
[web01]
type = http
# 81为新的项目端口
# my01为新项目的二级域名
local_port = 81
subdomain = my01
启动frpc后,在游览器输入my01.everykonw.xyz:8012即可访问当前项目
进入fprc所在文件夹,使用命令frpc -c frpc.ini
即可启动frpc,如下图所示:
如果需要对客户端设置后台运行和开机自启。借助 winsw 工具可以将frpc注册为windows系统中的服务。
frp
frp
frp
frpc
-c frpc.ini
reset
winsw.exe install
即可将frpc安装为系统服务。services.msc
进入服务列表页找到frp服务,启动frp服务,设置为自动启动并如下设置everykonw.xyz:5200
success
https://www.jianshu.com/p/a6e9627dbe29
https://blog.csdn.net/u011976966/article/details/82019688
https://www.kafan.cn/edu/20094466.html
https://blog.csdn.net/qq_40276378/article/details/85343844
https://github.com/fatedier/frp/blob/master/README_zh.md