内网穿透神器frp的四种模式:tcp、udp、stcp、xtcp

什么是frp?

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。frp 是一款跨平台的内网穿透工具,支持 Windows、macOS 与 Linux,它需要你有一台拥有固定公网 IP 的电脑,VPS 最好,然后就能愉快的进行内网穿透了。还支持 https,甚至可以用它进行小程序开发。

frp项目的github地址

frp 的作用

  • 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
  • 对于 http 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
  • 利用处于内网或防火墙后的机器,对外网环境提供 tcp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。
  • 可查看通过代理的所有 http 请求和响应的详细信息。(待开发)

使用示例

根据对应的操作系统及架构,从 frp的Release 页面下载最新版本的程序。

将 frps 及 frps.ini 放到具有公网 IP 的机器上。

将 frpc 及 frpc.ini 放到处于内网环境的机器上。

然后配置frps.ini或frpc.ini 文件中的内容。

服务器端用命令frps -c frps.ini来启动frp。
客户端用命令frpc -c frpc.ini来启动frp。

frp的四种模式:tcp、udp、stcp、xtcp

  • tcp和udp:就是将普通的tcp端口或者udp端口映射到公网上,相当于你的设备直接向公网暴露了一个tcp端口。任何设备都可以尝试连接这个端口。这里就会有很大的安全风险。
  • stcp:出于安全和防止攻击的考虑,frp提供了使用密钥验证的tcp,这就是frp的Secret TCP(stcp)模式。示意图如下:
  • xtcp:目的是让两个客户具有直接相连。在正式运行时,其实并不需要服务端做什么事情。
    frp客户端就好比两个相亲的对象,frp服务端是媒婆。媒婆介绍完之后,就应该让两个相亲对象自己去聊天了。
    这个就是点对点模式(p2p)。在frp中,这个可以通过设置xtcp实现。
    这种模式的好处是不需要消耗服务器的带宽和网速,延时也较低。
    不过该模式还在继续开发完善阶段,目前使用起来并不太稳定,很多时候会出现连不上的情况。并且与两端的路由器防火墙、DMZ、UPNP设置都有一些关系。本人测试后发现直接连接不上,暂时还未解决该问题。

示意图如下:

frp 示意图:


其中,客户端B是需要做端口映射的电脑。Visitor是访问端的电脑,只用于stcp模式和xtcp模式。

服务器端的frps配置

[common]
bind_addr = 0.0.0.0
bind_port = 7000
bind_udp_port = 7001
privilege_token = frp888
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

服务器端用命令frps -c frps.ini来启动frp。
启动后输入http://[服务器ip]:7500,并输入所设置的账号(admin)和密码(admin)就可以看到以下管理界面:

客户端B的配置模式1:tcp

[common]
server_addr = 自己服务器的ip
server_port = 7000

[PC-RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 13389

客户端用命令frpc -c frpc.ini来启动frp。

客户端的配置模式2:udp

[common]
server_addr = 自己服务器的ip
server_port = 7000

[UDP-test]
type = udp
local_ip = 127.0.0.1
local_port = 53
remote_port = 10053

客户端用命令frpc -c frpc.ini来启动frp。

客户端的配置模式3:stcp

[common]
server_addr = 自己服务器的ip
server_port = 7000

[PC-RDP-stcp]
type = stcp
sk=123456
local_ip = 127.0.0.1
local_port = 3389

客户端用命令frpc -c frpc.ini来启动frp。

客户端的配置模式4:xtcp

[common]
server_addr = 自己服务器的ip
server_port = 7000

[PC-RDP-xtcp]
type = xtcp
sk=123456
local_ip = 127.0.0.1
local_port = 3389

客户端用命令frpc -c frpc.ini来启动frp。

总结

对于网站等公开内容,使用tcp比较合适。对于远程桌面和ssh等非公开应用,最好使用stcp。xtcp暂时不建议使用,因为本人测试后发现不稳定。

参考资料

1、fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
2、使用frp实现P2P点对点内网穿透_FRP教程_电脑博士
3、frp – 你也能用的开源内网穿透工具,最简洁教程 – 小众软件
4、frp首页、文档和下载 – 内网穿透工具 – OSCHINA
5、FRP 内网穿透 – 知乎
6、内网穿透神器frp之进阶配置——stcp及p2p模式_网络_黄腾霄的博客-CSDN博客

赞(1) 打赏
本文为博主原创文章,未经作者允许不得转载:唐传林的博客 » 内网穿透神器frp的四种模式:tcp、udp、stcp、xtcp

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

文章写得好 赏颗六味地黄丸补补

支付宝扫一扫打赏

微信扫一扫打赏