专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

使用FRP点对点穿透做伪跳板机

起因

由于工作需要,有时需要在家中连公司服务器处理一些问题,但是办公室又没有固定IP,也没法做DDNS。平时只能teamviewer访问放在公司的另一台笔记本,但是Mac和Win的快捷键又不同,有时候操作起来很别扭,而且多数时候是连接上Windows后再开个Xshell之类的工具访问服务器,感觉流程过于复杂。

97_1.png

多使用几次后发现这样工作流程过于复杂,且会出现teamviewer自动更新导致两地版本不一致无法连接的情况。

技术选型

为了提高效率同时处于安全考虑,现在需要一款简单稳定高效安全内网穿透跨平台的工具。这时想到之前使用过FRP来做反向代理使用,该工具由于使用Golang开发的缘故天生自带跨平台,同时也是现在流行的内网穿透工具,可以使用 stcp(secret tcp) 类型的代理避免让任何人都能访问到要穿透的服务。

使用

由于主要是在家临时工作使用,且已找电信获取外网IP,在家做了DDNS,所以FRPS服务端我直接部署在家中服务器上,这样在家中通过FRPS的IP加FRPC配置的端口就可以访问公司的服务

97_2.png如果需要在外面临时处理事情,使用stcp模式代理,然后通过相同的 sk来做认证访问 97_3.png

部署FRPS

根据你服务器操作系统下载FRP,并修改frps.ini配置文件

[common]
# 服务监听端口
bind_port = 17000
dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin

然后控制台启动frps

# frps -c frps.ini

部署FRRC

在需要内网穿透的服务器、PC上下载FRP,并修改frpc.ini,启动后可以通过浏览器上访问Admin UI来修改配置文件重载和查看状态

[common]
# FRPS服务器IP或域名
server_addr = YourServerIP
# FRPS服务端口
server_port = 17000
# Admin UI
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin

[RDP]
# 使用stcp
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = akiya
local_ip = 127.0.0.1
local_port = 3389
remote_port = 13389
# 加密流量
use_encryption = true
use_compression = true

[SSH]
type = stcp
sk = akiya
local_ip = 172.16.15.5
local_port = 22
remote_port = 10022
use_encryption = true
use_compression = true

由于我是部署在windows下,为了方便使用脚本加入到系统启动中,编写frpc-start.vbs

CreateObject("WScript.Shell").Run "D:\apps\frp_0.29.1_windows_amd64\frpc.exe -c D:\apps\frp_0.29.1_windows_amd64\frpc.ini",0

创建快捷方式并复制快捷方式C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp路径下

如果是Linux下添加到系统服务,创建/lib/systemd/system/frpc.service

[Unit]
Description=fraps service
After=network.target network-online.target syslog.target
Wants=network.target network-online.target

[Service]
Type=simple

#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/opt/frp_0.30.0_linux_amd64/frpc -c /opt/frp_0.30.0_linux_amd64/frpc.ini

[Install]
WantedBy=multi-user.target

  • 启动服务:systemctl start frpc
  • 开机自启:systemctl enable frpc

使用FRPC

本地选择使用stcp模式连接,官方还提供了xtcp模式,可用于应对在希望传输大量数据且流量不经过服务器的场景,但是还处于开发阶段成功率低,所以不做描述。

访问终端与FRPS同局域网

如果是使用的客户端与FRPS在同一局域网中可以直接访问FRPS的内网IP加FRPC中的remote_port访问,由于笔者是在家中架设FRPS,且没端口映射remote_port端口到外网,所以只可在内网访问服务,理论上没暴露服务到公网是安全的。

此种内网穿透方式请在frpc.ini中配置为type = tcp,否者无法直接访问。

访问终端与FRPS不同网络

如果FRPS服务器与访问终端不在同一网络,例如单独购买了ECS或者VPS服务器做FRPS服务,或者是在外需要临时工作的情况下,就需要在公司FRPC的frpc.ini中配置为type = stcp,具体配置如部署FRRC中所示。

同时,需要在访问端也启动一个FRPCfrpc.ini配置如下

[common]
# FRPS服务器IP或域名
server_addr = YourServerIP
# FRPS服务端口
server_port = 17000

# 点对点安全访问
[RDP-visitor]
# 使用相同的stcp
type = stcp
# 设置访问角色
role = visitor
# 填写内网穿透端服务名
server_name = RDP
# 配置为内网穿透端相同的sk值
sk = akiya
# 映射到本地IP与端口
bind_addr = 127.0.0.1
bind_port = 3389

[SSH-visitor]
type = stcp
role = visitor
server_name = SSH
sk = akiya
bind_addr = 127.0.0.1
bind_port = 13322

在需要使用的时候启动本地FRPC

# frpc -c frpc.ini

启动成功后就可以使用RDP工具或者终端访问远程服务器了

  • Windows
    • mstsc:localhost直接连接RDP协议
    • xshell等工具通过:localhost:13322连接远程ssh服务器
  • Mac
    • ssh -p 13322 root@localhost
    • Royal TSX 工具可以连接RDP协议

文章永久链接:https://tech.souyunku.com/42864

未经允许不得转载:搜云库技术团队 » 使用FRP点对点穿透做伪跳板机

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们