frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。官方项目地址为(项目地址)
文章目录
1. 可实现功能
本文主要就是内网穿透,远程访问内网桌面,ssh和内网部署的项目
2. 开始前的准备
- 一台具有公网ip的服务器 本文的服务器公网ip为
120.120.120.120
(假,测试用) - 内网ip 192.168.1.106
- 确保你在内网中可以访问你的远程桌面 确保你有足够的权限
- 映射到公网的域名,本文的域名为everykonw.xyz
本文中所使用内网系统为 win 10,公网系统为ubuntu 16.04 内核为amd64
3. 服务器端配置
3.1 文件下载
- 在其中右键点击你要下载的版本(版本不对可能无法运行),获取其下载链接
- 打开Ubuntu的终端,输入以下命令
# 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
都为客户端文件,可以删除
3.2 编辑配置文件
编辑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
3.3 启动服务端
进入解压后得到的frp目录,然后通过./frps -c frps.ini
命令即可启动服务端
3.4 设置开机启动和后台运行
上一步中的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
3.5 其他注意事项
3.5.1 通过域名来代替你的ip地址访问(可以不设置)
使用*.everykonw.xyz:8012即可在客户端绑定不同的web应用
3.5.2 自定义二级域名(建议看完后面的客户端配置再来看这一部分)
在多人同时使用一个 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
4. 客户端配置
4.1 文件下载
具有内网IP的电脑将作为客户端(frpc), 本文中客户端使用的是win10 64位系统,所以在releases页面下载frp_0.16.0_windows_386.zip
解压,删除与服务端相关的文件(frps文件夹,frps.ini,frps_full.ini)
4.2 编辑和配置文件
#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即可访问当前项目
4.2.1 添加一个新的web应用
[web01]
type = http
# 81为新的项目端口
# my01为新项目的二级域名
local_port = 81
subdomain = my01
启动frpc后,在游览器输入my01.everykonw.xyz:8012即可访问当前项目
4.3 启动服务端
进入fprc所在文件夹,使用命令frpc -c frpc.ini
即可启动frpc,如下图所示:
4.4 设置开机启动
如果需要对客户端设置后台运行和开机自启。借助 winsw 工具可以将frpc注册为windows系统中的服务。
- 下载winsw最新版,为了方便将其重命名为winsw.exe, 将该文件和frpc.exe放在一起,然后新建winsw.xml写入以下内容:
<service>
<id>frp</id>
<name>frp</name>
<description>frp</description>
<executable>frpc</executable>
<arguments>-c frpc.ini</arguments>
<logmode>reset</logmode>
</service>
- 使用管理员模式的cmd命令进入winsw所在文件夹,执行
winsw.exe install
即可将frpc安装为系统服务。 - win + R输入
services.msc
进入服务列表页找到frp服务,启动frp服务,设置为自动启动并如下设置
5. 测试
5.1 远程桌面连接
everykonw.xyz:5200
success
6. 参考
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