你的位置:首页 > 互联网IT

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

frp xtcp是什么,frp stcp是什么

FRP内网映射,穿透工具,FRP内网转发

系统:Windows/Linux

软件:FRP

软件下载:frp_0.34.3_windows_amd64.zip

                   frp_0.34.3_linux_amd64.tar.gz

项目地址:https://github.com/fatedier/frp/releases  

参考文档:https://gofrp.org/docs/

教材:https://m.012.ooo/?id=558

早期介绍教材:https://m.012.ooo/?id=418

其它Linux资料:http://www.nasge.com/archives/17.html

什么是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)模式。示意图如下:

frp内网穿透的四种模式:tcp、udp、stcp、xtcp 互联网IT 第1张

  • xtcp:目的是让两个客户具有直接相连。在正式运行时,其实并不需要服务端做什么事情。
    frp客户端就好比两个相亲的对象,frp服务端是媒婆。媒婆介绍完之后,就应该让两个相亲对象自己去聊天了。
    这个就是点对点模式(p2p)。在frp中,这个可以通过设置xtcp实现。
    这种模式的好处是不需要消耗服务器的带宽和网速,延时也较低。
    不过该模式还在继续开发完善阶段,目前使用起来并不太稳定,很多时候会出现连不上的情况。并且与两端的路由器防火墙、DMZ、UPNP设置都有一些关系。本人测试后发现直接连接不上,暂时还未解决该问题。

示意图如下:

frp内网穿透的四种模式:tcp、udp、stcp、xtcp 互联网IT 第2张frp内网穿透的四种模式:tcp、udp、stcp、xtcp 互联网IT 第3张

点对点内网穿透

在传输大量数据时如果都经过服务器中转的话,这样会对服务器端带宽压力比较大。

FRP 提供了一种新的代理类型 XTCP 来解决这个问题,XTCP 模式下可以在传输大量数据时让流量不经过服务器中转。实现方式是在传输数据的两端都部署上 FRP 客户端上用于建立直接的连接。

Internet
FRP
客户端
服务端VPS
客户端

首先在 FRP 服务端 配置上增加一个 UDP 端口用于支持该类型的客户端: bind_udp_port = 7001

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

服务器端的frps配置

frps.ini

案列:

[common]

bind_port = 7000

bind_udp_port = 7001

vhost_http_port = 88

token = 123456


dashboard_user = admin

dashboard_pwd = 123456

dashboard_port = 7500


说明:

[common]

bind_addr = 0.0.0.0

bind_port = 7000            # 客户端与服务端进行通信的端口,即frp服务端口,需与客户端server_port一致

privilege_token = 123456    # 特权模式密钥,需与客户端frpc.ini一致


vhost_http_port = 8080      # http服务端口,开启后服务端完成通过域名访问部署于内网的 Web 服务部署,这里将 HTTP 访问端口设为 8080

vhost_https_port = 443      # https服务端口


dashboard_port = 7500       # 控制台端口 通过 Dashboard 可以方便的查看 FRP 的状态以及代理统计信息展示 通过 http://[server_addr]:7500 访问 Dashboard 界面,用户名密码默认都为 admin。


bind_udp_port = 7001


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

frp内网穿透的四种模式:tcp、udp、stcp、xtcp 互联网IT 第4张

客户端的配置模式:stcp

  • 客户端1:配置需要将type改为stcp即可

[common]

server_addr = 服务器公网IP或者域名

server_port = 7000

token = 123456


[p2p123456]

type = stcp

server_name = p2p123

sk = 123456789

bind_addr = 0.0.0.0

bind_port = 3390


说明

[common]

server_addr = 服务器公网IP或者域名

server_port = 7000

token = 123456


[p2p123456]

type = stcp                 # 选择模式stcp

server_name = p2p123        # 名称

sk = 123456789              # 只有 sk 一致的用户才能访问到此服务

bind_addr = 0.0.0.0         # 本地IP

bind_port = 3390            # 映射需要端口

然后在要访问这个服务的机器上启动另外一个 FRP 客户端,配置如下:

客户端2:配置

[common]

server_addr = 服务器公网IP或者域名

server_port = 7000

token = 123456


[p2p_ssh_visitor]

type = stcp

role = visitor

server_name = p2p123

sk = 123456789

bind_addr = 0.0.0.0

bind_port = 6006


说明:

[common]

server_addr = 服务器公网IP或者域名

server_port = 7000

token = 123456


[p2p_ssh_visitor]

type = stcp

role = visitor            # STCP 的访问者

server_name = p2p123      # 要访问的 STCP 代理的名字,客户端1名称一样

sk = 123456789            # 只有 sk 一致的用户才能访问到此服务,与客户端1,SK一致

bind_addr = 0.0.0.0       # 本地 IP

bind_port = 6006          # 本地端口

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

客户端的配置模式:xtcp

  • 客户端1:配置需要将type改为xtcp即可

[common]

server_addr = 服务器公网IP或者域名

server_port = 7000

token = 123456


[p2p123456]

type = xtcp

server_name = p2p123

sk = 123456789

bind_addr = 0.0.0.0

bind_port = 3390


说明

[common]

server_addr = 服务器公网IP或者域名

server_port = 7000

token = 123456


[p2p123456]

type = xtcp                 # 选择模式xtcp

server_name = p2p123        # 名称

sk = 123456789              # 只有 sk 一致的用户才能访问到此服务

bind_addr = 0.0.0.0         # 本地IP

bind_port = 3390            # 映射需要端口

然后在要访问这个服务的机器上启动另外一个 FRP 客户端,配置如下:

客户端2:配置

[common]

server_addr = 服务器公网IP或者域名

server_port = 7000

token = 123456


[p2p_ssh_visitor]

type = xtcp

role = visitor

server_name = p2p123

sk = 123456789

bind_addr = 0.0.0.0

bind_port = 6006


说明:

[common]

server_addr = 服务器公网IP或者域名

server_port = 7000

token = 123456


[p2p_ssh_visitor]

type = xtcp

role = visitor            # XTCP 的访问者

server_name = p2p123      # 要访问的 XTCP 代理的名字,客户端1名称一样

sk = 123456789            # 只有 sk 一致的用户才能访问到此服务,与客户端1,SK一致

bind_addr = 0.0.0.0       # 本地 IP

bind_port = 6006          # 本地端口


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

客户端的配置模式:tcp

客户端的配置模式:udp

参考这个:https://m.012.ooo/?id=558


参考资料

https://blog.csdn.net/deng_xj/article/details/89187944

http://nicktcl.cn/2020/03/29/908/

https://blog.csdn.net/htxhtx123/article/details/104219317

https://www.baidu.com/s?wd=frp+xtcp%E6%98%AF%E4%BB%80%E4%B9%88&rsv_spt=1&rsv_iqid=0xaa2bcdd60000a2db&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=&tn=baiduhome_pg&ch=&rsv_enter=1&rsv_dl=ib&rsv_btype=i&inputT=10811

https://www.baidu.com/s?wd=frp+stcp%E6%98%AF%E4%BB%80%E4%B9%88&rsv_spt=1&rsv_iqid=0x8864637c0001686c&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=&tn=baiduhome_pg&ch=&rsv_enter=1&rsv_dl=ib&rsv_btype=i&inputT=4599



  • 发表评论
  • 查看评论
【暂无评论!】

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。