通过FRP的STCP穿透,可以在世界任何地方安全的连接公司或家里内网的敏感服务,包括远程桌面、开发测试环境、confluence、jira、gitlab等。
依赖
- Docker
- FRP
- VPS
首先,暴露敏感服务到公网是一个非常危险的行为,特别是公司的内网服务如果不慎暴露到公网,风险非常大。所以这里使用的是不暴露公网端口的stcp代理类型。
stcp代理的数据流:
stcp的数据流相比普通的tcp代理类型,多了一道外网中转服务器
stcp的安全机制:配置必须相同的设备name,相同的服务server_name,再加上一个相同的配对码sk,才能通过验证
stcp的黑盒机制:只有数据流中的 内网中转服务器 、外网中转服务器 知道这个配对码,公网中转服务器甚至服务使用者都是不知道的,所以就算中转服务器被攻陷,第三方也无法通过服务器上的客户端配置信息接入内网服务
关于这个内网中转服务器 、外网中转服务器,可以就是服务提供者和使用者的localhost,也可以是同一个网段的一个gateway,使用网关可以为整个内网提供服务,这样就实现了跨网域的安全连接机制
使用方法
配置公网中转服务器 Gateway
如果服务器为Linux系统
1 |
docker run -d --restart always --privileged --network host -v /root/frp:/etc/frp --name frp minirplus/frp frps -c /etc/frp/frps.ini |
其中/root/frp为frp配置文件所在目录
如果服务器为Windows系统
1 |
docker run -d --restart always --privileged --network host -v D:\frp:/etc/frp --name frp minirplus/frp frps -c /etc/frp/frps.ini |
其中D:\frp为frp配置文件所在目录
配置文件frps.ini
1 2 3 4 5 6 |
[common] bind_addr = 0.0.0.0 bind_port = your-service-public-port-change-me log_level = debug token = token-change-me |
不加token的话其他人知道端口也可以使用这个中转服务器,其他如管理控制台等功能配置请查阅官方说明文档
配置内网中转服务器 Service
如果服务器为Linux系统
1 |
docker run -d --restart always --privileged --network host -v /root/frp:/etc/frp --name frp minirplus/frp frpc -c /etc/frp/frpc.ini |
其中/root/frp为frp配置文件所在目录
如果服务器为Windows系统
1 |
docker run -d --restart always --privileged --network host -v D:\frp:/etc/frp --name frp minirplus/frp frpc -c /etc/frp/frpc.ini |
其中D:\frp为frp配置文件所在目录
配置文件frpc.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[common] server_addr = your-server-ip-or-domain-name-same-as-Gateway-change-me server_port = your-service-public-port-same-as-Gateway-change-me token = token-same-as-Gateway-change-me user = your-unique-client-name-change-me log_level = debug protocol = tcp tls_enable = true [remote-desktop-service] type = stcp sk = sk-change-me local_ip = your-local-service-ip-change-me local_port = your-local-service-port-change-me use_encryption = true use_compression = true |
sk需要和token不同,不然对中转服务器就不是黑盒了
配置外网中转服务器 Visitor
如果服务器为Linux系统
1 |
docker run -d --restart always --privileged --network host -v /root/frp:/etc/frp --name frp minirplus/frp frpc -c /etc/frp/frpc.ini |
其中/root/frp为frp配置文件所在目录
如果服务器为Windows系统
1 |
docker run -d --restart always --privileged --network host -v D:\frp:/etc/frp --name frp minirplus/frp frpc -c /etc/frp/frpc.ini |
其中D:\frp为frp配置文件所在目录
配置文件frpc.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[common] server_addr = your-server-ip-or-domain-name-same-as-Gateway-change-me server_port = your-service-public-port-same-as-Gateway-change-me token = token-same-as-Gateway-change-me user = your-unique-client-name-same-as-Service-change-me log_level = debug protocol = tcp tls_enable = true [remote_desktop_visitor] role = visitor type = stcp server_name = service-name-same-as-Service-change-me sk = sk-same-as-Service-change-me bind_addr = 0.0.0.0 bind_port = your-local-service-port-change-me use_encryption = true use_compression = true |
bind_port的值就是访问远程服务的本地端口,可以使用:bind_port来连接远程服务
All Done!
Know more
Linux安装Docker
1 |
apt update && apt upgrade -y && apt install curl -y && curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh |
Windows安装Docker
安装 Docker for windows
https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
安装依赖 WSL 2
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
There are no comments yet