前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Frp的stcp实现安全内网穿透访问

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

作者头像
yuanfan2012
发布2021-10-14 16:18:57
7.3K0
发布2021-10-14 16:18:57
举报
文章被收录于专栏:WalkingCloud

1、场景描述

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

可以参考之前的文章

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

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

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

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

代码语言:javascript
复制
https://gofrp.org/docs/examples/stcp/

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

代码语言:javascript
复制
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、拓扑环境+需求场景

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

如下图拓扑图所示

(图片可点击放大查看)

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

代码语言:javascript
复制
frp的下载地址
https://github.com/fatedier/frp/releases

(图片可点击放大查看)

代码语言:javascript
复制
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

(图片可点击放大查看)

代码语言:javascript
复制
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

(图片可点击放大查看)

(图片可点击放大查看)

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

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

代码语言:javascript
复制
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

(图片可点击放大查看)

(图片可点击放大查看)

(图片可点击放大查看)

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

3、firewalld防火墙开放5938端口

代码语言:javascript
复制
firewall-cmd  --permanent  --zone=public --add-port=5938/tcp
firewall-cmd --reload

(图片可点击放大查看)

(图片可点击放大查看)

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

(图片可点击放大查看)

4、验证测试

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

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

(图片可点击放大查看)

(图片可点击放大查看)

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

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

(图片可点击放大查看)

(图片可点击放大查看)

5、总结

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WalkingCloud 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、场景描述
  • 2、拓扑环境+需求场景
  • 3、实现的具体配置步骤
    • 1、A内网的CentOS7.9安装frpc,配置frpc.ini
      • 2、B内网的CentOS7.9安装frpc,配置frpc.ini
        • 3、firewalld防火墙开放5938端口
          • 4、验证测试
            • 5、总结
            相关产品与服务
            云服务器
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档