
- 写在前面
九月末,因为有通过内网穿透访问位于宿舍的服务器的需求,恰巧有一台云服务器,遂计划部署配置frp服务。截至撰文时frp服务器已经完成部署并投入运行,以下回忆纪录情况。
搭建frp服务实现内网穿透,需要以下必要条件:
- 一台含有公网IP的云服务器🤔
- 一台被连接的机器,要求连接互联网🧐
这里我使用的配置如下,服务端:ubuntu 20.24 amd64;客户端(目前已尝试):ubuntu 22.04 arm64、Windows11
用Linux不用Ubuntu,就像看四大名著不看《红楼梦》
- 文件说明
链接:https://github.com/fatedier/frp/releases
下载后,将有如下文件:
frps frps.ini frps_full.ini frpc frpc.ini frpc_full.ini LICENSE
其中服务端配置需要 frps 以及 frps.ini,客户端需要 frpc 以及 frpc.ini
- 服务端配置
众所周知,配置一项服务时往往先进行服务端的配置(此即云服务器)。下文将以 iPhone 14 Pro Max 远峰蓝 ubuntu 20.04 amd64 为例进行配置。
首先,使用wget下载frp到服务器。(一定要注意自己的系统架构选择版本!!)
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
解压文件,到任意文件夹即可。(frp服务端以及客户端均不用安装!)
tar -zxvf frp_0.44.0_linux_amd64.tar.gz
进入文件目录。
cd frp_0.44.0_linux_amd64/
接下来,修改服务端的配置文件 frps.ini
sudo vim frps.ini
修改如下(;后为注释可删):
[common]
bind_port = 7000 ;frp监听的端口
token = 114514 ;这是授权码,自己按需求更改
dashboard_port = 7500 ;frps自带的管理面板的端口
;以下是管理面板的用户名及密码
dashboard_user = username
dashboard_pwd = Password
enable_prometheus = true
;以下是日志配置,拿来主义(
log_file = /var/log/frps.log
log_level = info
log_max_days = 3
保存后,至此已经完成了对frp服务端的配置。此时已经可以启动frps服务了。不过此时有一个问题:启动后终端不能关闭,注销后服务自动关闭,并且重启后不会自动启动。为了方便,我们在这里使用 systemctl 这个很逆天的牛皮工具来配置后台运行以及开机自启。以下教程也适配于 frpc 服务的配置,改个名字就行咯😋
首先进入到存放开机自启文件的路径
cd /etc/systemd/system
直接使用vim编辑器建立并编辑 frps.service
文件(没有vim编辑器的话可能需要apt install一下,不过用vi同理捏)
sudo vim frps.service
i
键进入编辑,粘贴如下内容(这些也是我抄的,令人感叹)
[Unit]
Description=My Frp Client Service - %i
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/bin/bash -c '/home/pediastrum/frp/frps -c /home/pediastrum/frp/frps.ini'
[Install]
WantedBy=multi-user.target
其中 /home/pediastrum/frp/frps
和 /home/pediastrum/frp/frps.ini
这两个路径是 frps
和 frps.ini
两个文件的路径,别忘了改成自己的捏!
此时可以通过 systemctl 启动 frps 了:
sudo systemctl start frps
可以设置开机自启了!
sudo systemctl enable frps
查看frps状态
sudo systemctl status frpc
当服务端成功启动时,就可以打开 frp 自带的面板验证是否成功啦!用户名和密码分别是 frps.ini
中的变量 dashboard_user
和 dashboard_pwd
喵😸
http://服务器公网ip:7500
- 客户端配置(被连接的目的机器)
客户端与服务端一样,均需下载并解压同样的文件包,并且版本要相同。不同的是,这里需要用到 frpc
和 frpc.ini
两个文件,即frp客户端程序及其配置文件。首先我们来进行配置文件的修改喵!此处以 Ubuntu 22.04 arm64 为例。再次强调一定要根据自己的系统架构选择版本!!
sudo vim frpc.ini
修改如下(;后为注释可删):
[common]
server_addr = 114.51.41.91 ;你的公网IP(即服务器IP)
server_port = 7000 ;此处要与frps.ini的bind_port一致
token = 114514 ;与frps.ini的token一致
[ssh] ;如果有许多客户端,请更改此名称使它们不同
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 ;ssh连接需要此端口,自定义
此时通过上面讲的服务端配置开机启动的方法,启动frpc即可!🥰
- 最后一步,使用ssh连接客户端!
找一台不在同一网段的机器,终端输入:
ssh 用户名@服务端ip -p 端口号
用户名是客户端的用户名不是服务端的!ip是服务端的公网ip,端口号即frpc.ini中变量remote_port的值,别写错了😱
- DLC:通过 frp 实现 Windows 系统的远程桌面
搭建完 ssh 连接后,哥们听说还能通过 frp 建立远程桌面连接,有点强大啊我去😱😱正好服务器带宽应该够用,不如试试!其实本来也想建立 Ubuntu Desktop 的远程桌面,不过效果实在是稀烂(可能是树莓派性能呃呃),遂不写这部分咯(
在Windows系统下的frp客户端配置显得尤为简单。以 Windows11 64位 为例,打包下载frp(frp_0.44.0_windows_amd64.zip)解压后可以只保留 frpc.exe
和 frpc.ini
两个文件。双击 frpc.ini
修改配置如下:
[common]
server_addr = 114.51.41.91 ;你的公网IP(即服务器IP)
server_port = 7000 ;此处要与frps.ini的bind_port一致
token = 114514 ;与frps.ini的token一致
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 ;建议使用此端口,因为打开远程桌面后防火墙自动放行
remote_port = 3389
关于3389端口,因为这是Windows默认的远程桌面端口,所以当你从设置里打开远程桌面连接时,防火墙会自动配置打开此端口,不会出现奇奇怪怪的问题。如果你改成其他的端口则会遇到好多麻烦,自己配置防火墙都很难解决那种😓
至此,客户端配置已经修改完毕。可以通过命令行启动 frpc 服务啦!
frpc.exe -c frpc.ini
不过每次这样搞蛮复杂,所以咱用一个批处理文件来搞定!在 frpc.ini 同目录创建 run.bat
文件,右键编辑输入:
@echo off
:home
frpc -c frpc.ini
goto home
双击运行,看到 start proxy success ,完成!
- (可选)设置 Windows 开机登录自启动 frpc
这个比较简单,创建一个run.bat的快捷方式,放到目录 C:\Users\你的用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
这个文件中即可。问题是,你必须登入(输入开机密码)之后才会自动启动🤣。请谨慎在远程桌面使用重启功能😰
理论上说,可以实现不登入就启动 frpc ,不过俺还没研究出来,已矣乎!
- 在远程连接你的客户端计算机
使用frpc服务的客户机可以使用Windows自带的远程桌面程序以及移动端的 RD client 进行连接。格式为
服务器公网ip:3389
默认端口若自行更改,请自行调试🤧
参考文章以及友情链接
- frp原地址 https://github.com/fatedier/frp
- 很棒的文章 https://cloud.tencent.com/developer/article/1837482
- Windows开机自启 https://www.cnblogs.com/mq0036/p/15954309.html
- 这个教程也不错 https://blog.csdn.net/u011976966/article/details/82019688
- 关注春卷饭harumakigohan喵,关注春卷饭harumakigohan谢谢喵!
哈哈,这都给我写出来了🥰🥰😋😋🤩😍😎
支持喵😋