使用Frp的stcp实现安全内网穿透访问

简介: 使用Frp的stcp实现安全内网穿透访问

640.jpg

1、场景描述


一直使用frp内网穿透将家里的PC机映射到公网云主机,供外网随时访问


可以参考之前的文章


Linux下内网穿透工具Frp的简单使用

腾讯云主机上部署FRP+Teamviewer穿透内网进行远程运维

最近看到frp的官方文档中关于STCP的概念 对于某些服务来说如果直接暴露于公网上将会存在安全隐患。


使用 stcp(secret tcp) 类型的代理可以避免让任何人都能访问到要穿透的服务,但是访问者也需要运行另外一个 frpc 客户端


https://gofrp.org/docs/examples/stcp/


也参考搜到的一些配置案例(具体链接如下)


http://blog.itpub.net/31559985/viewspace-2731496/
https://blog.csdn.net/htxhtx123/article/details/104219317
https://www.linuxprobe.com/frp-tcpstcp-ssh-homelinux.html


2、拓扑环境+需求场景


打算在如下环境中动手实践一下

如下图拓扑图所示

640.png


A内网中 :


1、CentOS7.9虚拟机192.168.60.105上安装frpc客户端,向云主机frps服务端注册

2、Win10机器(192.168.60.112) Teamviewer15


B内网中:


1、CentOS7.9虚拟机192.168.31.232上安装frpc客户端,向云主机frps服务端注册

2、Win10机器(192.168.31.78) Teamviewer15

最终要实现 A内网win10机器Teamviewer访问192.168.60.105的5938端口就可以内网穿透直接访问B内网中win7(192.168.31.78)的Teamviewer

同样B内网win7机器Teamviewer访问192.168.31.232的5938端口就可以内网穿透直接访问A内网中Win10(192.168.60.112)的Teamviewer

达到相互的目的,并且不用在云主机上暴露其它端口


3、实现的具体配置步骤

1、A内网的CentOS7.9安装frpc,配置frpc.ini

frp的下载地址
https://github.com/fatedier/frp/releases

640.jpg


tar -zxvf frp_0.37.1_linux_amd64.tar.gz -C /usr/local/
cd /usr/local/
mv frp_0.37.1_linux_amd64 frp
cd frp
vim frpc.ini
[root@centos frp]# cat frpc.ini 
[common]
server_addr = 云服务器公网IP
server_port = 云服务器FRPS端口
authentication_method = token
authenticate_heartbeats = false
authenticate_new_work_conns = XXXXXXX(自行定义)
log_file =  /usr/local/frp/logs/frpc.log
log_level = info
log_max_days = 30
[stcp_tv_nuc_win7]
type = stcp
sk = walkingcloud
local_ip = 192.168.31.78
local_port = 5938
[stcp_centos_105]
type = stcp
role = visitor
sk = walkingcloud
server_name = stcp_tv_b550m
bind_addr = 192.168.60.105
bind_port = 5938

640.jpg

cd /usr/local/frp
chown -R root:root /usr/local/frp/
mkdir logs
chown nobody:nobody logs
touch logs/frpc.log
chown nobody:nobody logs/frpc.log
vim systemd/frpc.service 
#修改文件
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
ExecReload=/usr/local/frp/frpc reload -c /usr/local/frp/frpc.ini
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
cp systemd/frpc.service /usr/lib/systemd/system/
systemctl enable frpc.service 
systemctl start frpc.service 
tail -f /usr/local/frp/logs/frpc.log

640.jpg640.jpg

2、B内网的CentOS7.9安装frpc,配置frpc.ini


安装frp步骤与上面A内网的一致,不同是frpc.ini的配置


vim /usr/local/frp/frpc.ini 
[common]
server_addr = 云服务器公网IP
server_port = 云服务器FRPS端口
authentication_method = token
authenticate_heartbeats = false
authenticate_new_work_conns = XXXXXXX(自行定义)
log_file =  /usr/local/frp/logs/frpc.log
log_level = info
log_max_days = 30
[stcp_tv_nucwin7]
type = stcp
sk = walkingcloud
local_ip = 192.168.31.78
local_port = 5938
[stcp_centos_232]
type = stcp
role = visitor
sk = walkingcloud
server_name = stcp_tv_b550m
bind_addr = 192.168.31.232
bind_port = 5938


640.jpg


640.png


640.jpg


注意,配置中server_name 为对端的定义服务标签名,A内网与B内网要相互对应上

640.jpg


3、firewalld防火墙开放5938端口


firewall-cmd  --permanent  --zone=public --add-port=5938/tcp
firewall-cmd --reload

640.jpg

640.jpg

当然我这里Win10与Win7的Teamviewer都开启了接受呼入的LAN连接

640.jpg


4、验证测试


  • 1)、A内网win10机器Teamviewer访问192.168.60.105的5938端口

可以看出已经成功访问到B内网中win7(192.168.31.78)的Teamviewer

640.jpg


640.jpg

2)、B内网win7机器Teamviewer访问192.168.31.232的5938端口

可以看出已经成功访问到A内网中Win10(192.168.60.112)的Teamviewer


640.png

image.png


5、总结


  • 1)、使用STCP的FRP内网穿透无需在云主机上面开放其它端口,可以实现安全内网穿透访问
  • 2)、后续可以考虑进行P2P点对点内网穿透,有空再进行尝试


不通过服务器中转流量的方式来访问内网服务。frp 提供了一种新的代理类型 xtcp 用于应对在希望传输大量数据且流量不经过服务器的场景。使用方式同 stcp 类似,需要在两边都部署上 frpc 用于建立直接的连接。目前处于开发的初级阶段,并不能穿透所有类型的 NAT 设备,所以穿透成功率较低。穿透失败时可以尝试 stcp 的方式

相关实践学习
使用操作系统智能助手OS Copilot解锁操作系统运维与编程
在本实验场景中,将在阿里云ECS上体验OS Copilot产品。OS Copilot是阿里云操作系统团队基于大模型构建的OS智能助手。它具有自然语言问答、辅助命令执行、系统运维调优等功能,帮助用户更好地使用Linux,提升阿里云的使用体验。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
开发工具
frp-免费内网穿透
frp-免费内网穿透
2350 0
|
应用服务中间件 网络安全 nginx
快速上手!使用Docker和Nginx部署Web服务的完美指南
快速上手!使用Docker和Nginx部署Web服务的完美指南
|
Linux 网络安全 Windows
使用阿里云搭建FRP
使用frp穿透进行远程桌面
|
应用服务中间件 nginx
nginx优化:URI过长或request header过大导致400或414报错
当出现URI过长或请求头过大导致400或414报错时,可以通过以下方式对Nginx进行优化: 1. 调整client_max_body_size参数:该参数用于限制请求体的大小。默认情况下,Nginx的client_max_body_size参数设置为1M。如果请求体超过这个大小,Nginx会返回400错误。您可以根据实际需求适当增加这个值,例如设置为10M或更大。 ``` http { client_max_body_size 10M; } ``` 2. 调整large_client_header_buffers参数:该参数用于调整请求头缓冲区的大
8371 0
|
8天前
|
Web App开发 安全 数据挖掘
TA446 组织利用 DarkSword 漏洞套件针对 iOS 的定向钓鱼攻击研究
2026年3月,俄APT组织TA446利用泄露的DarkSword iOS漏洞套件,通过伪造大西洋理事会邮件实施定向钓鱼攻击。该攻击依托PAC绕过、内核提权等0day链,实现无文件、低交互的Safari远程入侵,窃取iCloud凭证、钥匙串等敏感数据,并部署GHOSTBLADE与MAYBEROBOT载荷。研究表明,国家级漏洞工具公开化正加速高端移动威胁平民化,亟需构建终端加固、流量检测与行为监控相结合的纵深防御体系。(239字)
174 7
|
网络协议 Linux 网络安全
如何用阿里云实现内网穿透?如何在外网访问家里内网设备?
使用NPS自建内网穿透服务器教程,带WEB管理
37951 12
|
9月前
|
Ubuntu 数据安全/隐私保护 Docker
|
运维 监控 网络安全
小米路由器R2D开启SSH+Frp内网穿透,让爸妈在老家轻松追剧
小米路由器R2D开启SSH+Frp内网穿透,让爸妈在老家轻松追剧
1500 0
|
安全 数据安全/隐私保护
frp http转发
通过FRP实现HTTP转发,可以方便地将内网服务暴露到外网,解决了内网穿透问题。在实际应用中,通过合理配置FRP和增强安全措施,可以实现稳定、高效和安全的内网服务外网访问。
1273 12