frp xtcp/stcp实现内网穿透远程电脑

frp xtcp/stcp实现内网穿透远程电脑

frp xtcp/stcp实现内网穿透远程电脑

frp

服务器 frps

我个人使用的阿里云服务器,学生认证300券白嫖的一个服务器,安装的ubuntu22.04lts

在服务器上安装frp

1
2
3
4
5
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz
tar xf frp_0.61.0_linux_amd64.tar.gz
mv frp_0.61.0_linux_amd64 frp
cd frp
nano frps.toml

修改frps.toml内容,注意记得在服务器开启对应端口

1
2
3
4
5
6
7
8
bindPort = 7000
auth.token = "token"
# 默认为 127.0.0.1,如果需要公网访问,需要修改为 0.0.0.0。
webServer.addr = "0.0.0.0"
webServer.port = 7500
# dashboard 用户名密码,可选,默认为空
webServer.user = "user"
webServer.password = "pwd"

设置systemd自启动服务

1
sudo nano /etc/systemd/system/frps.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description = frps client
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/frps -c /path/frps.toml
Restart=on-failure
RestartSec=5s

[Install]
WantedBy = multi-user.target
1
2
sudo systemctl enable frps
sudo systemctl start frps

查看服务状态

1
sudo systemctl status frps

下面这样就是运行起来了

1
2
3
● frps.service - frps client
Loaded: loaded (/etc/systemd/system/frps.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-12-20 14:57:52 CST; 32s ago

frpc

个人工作电脑都是windows,在github下载对应Releases · fatedier/frp

这里是参考frp之XTCP实现内网穿透家用电脑远程桌面公司电脑-CSDN博客实现

远程电脑设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
serverAddr = "xxx.xxx.xxx.xxx"
serverPort = 7000
webServer.port = 7500
auth.token = "token"

loginFailExit = false

# 这里表示如果 xtcp 打洞失败时,使用 stcp 远程链接电脑
[[proxies]]
# stcp的服务名称要和家用电脑配置的serverName一致
name = "xxx"
type = "stcp"
# 这个secretKey要和家用电脑一致
secretKey = "key"
localIP = "127.0.0.1"
# 电脑远程桌面端口(一般情况下会改成其它端口)
localPort = 3389
# 压缩传输内容
transport.useCompression = true

[[proxies]]
# xtcp的服务名称要和家用电脑配置的serverName一致
name = "***"
type = "xtcp"
secretKey = "key"
localIP = "127.0.0.1"
# 电脑远程桌面端口(一般情况下会改成其它端口)
localPort = 3389
# 压缩传输内容
transport.useCompression = true

访问远程电脑设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
serverAddr = "xxx.xxx.xxx.xxx"
serverPort = 7000
webServer.port = 7500
auth.token = "token"

loginFailExit = false

[[visitors]]
# 访问远程电脑电脑 stcp visitors 名称(随意)
name = "stcpname"
type = "stcp"
# 远程电脑 stcp name
serverName = "xxx"
secretKey = "key"
# stcp-visitor 的 bindPort 设置为 -1 表示不需要监听物理端口,只接受 fallback 的连接即可。
bindPort = -1
# 压缩传输内容
transport.useCompression = true

[[visitors]]
# 家用电脑 xtcp visitors 名称(随意)
name = "xtcpname"
type = "xtcp"
# 公司电脑 xtcp name
serverName = "***"
secretKey = "key"
bindAddr = "127.0.0.1"
# 使用家用电脑的23389端口远程桌面链接到公司电脑3389端口电脑(注意:Windows必须是专业版的,并且要启用远程桌面和设置密码)
bindPort = 23389
# 压缩传输内容
transport.useCompression = true
# 配置了 keepTunnelOpen = true 时,frpc 会定期检测隧道是否打开,如果没有,则会尝试打洞建立隧道,这样可以始终保持隧道打开,在需要连接对端服务时,可以避免延迟。
keepTunnelOpen = true
# 如果 xtcp 打洞失败,则使用 stcp 进行链接,fallbackTo = 上面的 stcp name
fallbackTo = "stcpname"
# 当连接 127.0.0.1:23389 超过 2000ms p2p 打洞还未成功的话,会回退到使用 stcpname 建立连接。
fallbackTimeoutMs = 2000

远程

这时开启两个电脑的frpc,即可远程电脑

使用cmd进入frp安装目录,执行下列指令

1
frpc -c frpc.toml

再使用远程桌面连接127.0.0.1:23389

image-20241220163452318

输入账号密码,远程成功!

很可惜,由于校园网太复杂,xtcp打洞失败,只能stcp了