frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。官方项目地址为(项目地址)
本文主要就是内网穿透,远程访问内网桌面,ssh和内网部署的项目
- 一台具有公网ip的服务器 本文的服务器公网ip为
120.120.120.120
(假,测试用) - 内网ip 192.168.1.106
- 确保你在内网中可以访问你的远程桌面 确保你有足够的权限
- 映射到公网的域名,本文的域名为everykonw.xyz
本文中所使用内网系统为 win 10,公网系统为ubuntu 16.04 内核为amd64
3.1 文件下载
# 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 其他注意事项
使用*.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
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即可访问当前项目
[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 设置开机启动
<service> <id>frp</id> <name>frp</name> <description>frp</description> <executable>frpc</executable> <arguments>-c frpc.ini</arguments> <logmode>reset</logmode> </service>
5.1 远程桌面连接
everykonw.xyz:5200
success
原文链接:https://blog.csdn.net/wb15374515921/article/details/89450378