【frp】使用stcp的配置
零、 成文时间
2023.1.3
文章内容可能根据技术的兴衰而出现纰漏,如有误导,还请原谅。
一、frp安装的注意事项
- 服务端、客户端的版本要匹配
二、前置要求
- 有一个有
公网IP
的云服务器 - 想要远程访问的工作站/主机/PC为
Linux
系统 - 手边有一台windows或者linux系统的上网工具
三、配置云服务器端的frp服务器
我的云服务器安装的是ubuntu20.04的系统
首先将下载好的frp压缩包在云服务器上解压,打开解压后的文件夹中有一些文件,我们主要关注两个:
frps
frps.ini
其中frps.ini是frps的配置文件,我的配置很简单:
3.1 配置文件
#frps.ini
[common]
bind_port = 7000
token = AABBCCDD
bind_port:
- 是之后frp客户端配置中目标服务器的端口,两者需要保持一致-
- 默认中是7000端口,也可以根据需要改成其他端口号,但是不要选择一些常用的端口如22 80 443
token:
- 可以不用,直接去掉就行
- 如果用的话在客户端的配置文件中也需要同样的值
- 如果要使用的话值可以选的比AABBCCDD更复杂一点
3.2 在云服务器上的运行
./frps -c frps.ini
如果出现以下字样说明开启成功
2023/01/02 23:27:10 [I] [service.go:178] frps tcp listen on 0.0.0.0:11235
2023/01/02 23:27:10 [I] [root.go:209] start frps success
如果需要后台运行的话:
nohup ./frps -c ./frps.ini 2>&1 &
这样就算使用ctrl+c后程序依然会在后台运行, 使用指令ps -e | grep frps
后出现
1236740 pts/5 00:00:00 frps
表明frps确实是在后台运行
3.3 注意事项
- 一定要注意将先前设置的
bind_port
中的端口在与服务器的防火墙配置中打开,否则就算之后所有的流程都正确,还是不会有效果。
四、STCP客户端配置
4.1 为什么使用stcp
- 我只想将我的远程工作站的22端口暴露出来供我在广域网中随时ssh接入。
- 之前我使用tcp连接的方式将22端口直接暴露到公网后,查看日志发现远程工作站的22端口受到了暴力扫描。
- stcp相比于tcp的连接方式,需要在手边的终端设备也同样使用frpc来保证和远程工作站的加密连接,算是用繁琐的步骤换取相对的安全。
4.1 远程工作站的frpc.ini的配置与运行
4.1.1 配置文件
首先在我们想要远程访问的电脑/工作站中同样下载好版本一致
的frp压缩包并解压。
我们关注其中的两个文件:
frpc
frpc.ini
前者是客户端程序,后者是其配置文件。我的frpc.ini
配置文件内容如下:
#frpc.ini
[common]
server_addr = 12.345.67.89
server_port = 7000
token = AABBCCDD
[stcp-server]
type = stcp
sk = set_your_own_sk
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[conmon]
一栏中完成的是与服务器地址的沟通:
- server_addr 是你自己的云服务器的公网ip地址
- server_port 要和之前frps.ini中的端口号
保持一致
- token 也要和之前frps.ini中的token
保持一致
[stcp-server]
一栏中是我们需要建立的连接的相关设置
- type 设置类型为stcp以表明这个连接是stcp类型
- sk 类似于连接的token,后续还要使用
- local_ip 局域网下stcp要连接的工作站的网址,因为我就跑在工作站上,所以为127.0.0.1
- local_port 要将工作站的端口暴露出去,我要使用ssh所以填写22端口
- remote_port 将local_port映射为云服务器的端口6000,
在云服务器防火墙设置中该端口号也要打开
4.1.2 运行程序
与服务端类似,使用
./frpc -c frpc.ini
如需后台使用则使用如下指令
nohup ./frpc -c ./frpc.ini 2>&1 &
当然考虑到远程工作站可能会有重启等问题,可以将frpc程序的运行设置为服务,或者写为开机自启动的脚本,这样更好,这里不再赘述。
4.2 手边的终端的frpc.ini的配置
4.2.1 配置文件
在本地同样需要使用frpc程序进行配置连接。
[common]
server_addr = 12.345.67.89
server_port = 7000
token = AABBCCDD
[stcp-visitor]
type = stcp
role = visitor
server_name = stcp-server
sk = set_your_own_sk
bind_addr = 127.0.0.1
bind_port = 6000
[conmon]
一栏同远程端的配置。
[stcp-visitor]
一栏中是我们需要建立的连接的相关设置
- type 设置类型为stcp以表明这个连接是stcp类型
- role 表明此连接类型为stcp中的visitor,也就是客户端
server_name
需要与远程端stcp的连接名一致,在这个例子中需要填写stcp-server
sk
与远程端的值保持一致bind_addr
将访问的远程端的ip地址映射到本地bind_port
将访问的远程端口号映射到6000端口(可以自行更改)
4.2.2 运行frpc程序
如果是linux
的话,运行步骤与远程端的运行方法类似
如果是windows
的话,我使用的是在win store中下载的windows terminal,内置了ssh,
如果是远程编写代码的话可以直接用vscode的remote-ssh一步到位
4.3 建立SSH连接
如果3个程序分别在3台机器上顺利运行的话,在终端输入以下语句建立从本地到远程端的连接:
ssh user@127.0.0.1 -p 6000
user
远程端的用户名127.0.0.1
与4.2.1中bind_addr
的值保持一致
6000
与4.2.1中bind_port
的值保持一致