内网穿透frp之进阶配置——stcp与p2p模式配置

内网穿透frp之进阶配置——stcp与p2p模式配置,第1张

Frp的TCP模式问题,这里主要存在2个问题。

试想一下,frp的tcp模式相当于你的设备直接向公网暴露了一个tcp端口。任何设备都可以尝试连接这个端口。这里就会有很大的安全风险。

我的所有请求都需要进行frp的服务器进行中转,这里势必会造成比较大的网络延时。以及耗掉服务器流量,这对我们的服务响应速度和经济价值会造成较大影响。

对于安全问题,frp的思路是,既然这些服务有可能被坏人攻击,那我们只要限制特定设备能够使用这个端口就好了。

那么问题来了,我怎么知道哪些设备是允许使用的呢?

服务端配置?那就又陷入了内网穿透的问题。

最简单的方法是使用密钥验证。这就是frp的Secret TCP(stcp)模式的思路。

如下图所示,frp客户端1需要暴露一个tcp端口。于是他在向服务端注册时,额外传了一个密钥。

所有其他设备期望访问这个端口,必须要先验证这个密钥。

这样一来,我们就需要在发起请求的设备上也配置一个frp客户端,通过这个客户端带着密钥发起请求。
# frpcini 配置:

[common]

# 你的frp服务器的公网ip

server_addr = xxxx

# 你的frp服务器的默认端口

server_port = 7000

[rdp]

type = stcp

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

sk = abcdefg

local_ip = 127001

# 远程桌面的本地端口号

local_port = 3389

# frpcini

[common]

# 你的frp服务器的公网ip

server_addr = xxxx

# 你的frp服务器的默认端口

server_port = 7000

[rdp_visitor]

type = stcp

# stcp 的访问者

role = visitor

# 要访问的 stcp 代理的名字

server_name = rdp

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

sk = abcdefg

# 绑定本地端口用于访问 远程桌面 服务

bind_addr = 127001

bind_port = 6000

此时,你在客户端2,使用127001:6000即可访问客户端1的远程服务。
思考一下,我们的frp服务器主要目的是为了解决两台设备相互识别的情况。在正式运行时,其实并不需要服务端做什么事情。

frp客户端就好比两个相亲的对象,frp服务端是媒婆。媒婆介绍完之后,就应该有相亲对象自己聊天了。

这个就是点对点模式(p2p)。在frp中,这个可以通过设置xtcp实现。

服务端:配置需要增加一个udp端口 7001,增加完之后就是如下

# frpsini

[common]

bind_port = 7000

bind_udp_port = 7001

# frpcini

[common]

# 你的frp服务器的公网ip

server_addr = xxxx

# 你的frp服务器的默认端口

server_port = 7000

[rdp]

type = xtcp

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

sk = abcdefg

local_ip = 127001

# 远程桌面的本地端口号

local_port = 3389

# frpcini

[common]

# 你的frp服务器的公网ip

server_addr = xxxx

# 你的frp服务器的默认端口

server_port = 7000

[rdp_visitor]

type = xtcp

# stcp 的访问者

role = visitor

# 要访问的 stcp 代理的名字

server_name = rdp

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

sk = abcdefg

# 绑定本地端口用于访问 远程桌面 服务

bind_addr = 127001

bind_port = 6000
此时,你在客户端2,使用同样的方式,以127001:6000即可访问客户端1的远程服务。

不过需要注意的是,目前frp的p2p服务还不完善,很多nat设备还是不能够穿透的。

此时大家还是需要切换回stcp来使用。

您可以考虑使用 软件来解决这个问题。(Virtual Private Network,虚拟专用网络)是一种常用的远程访问技术,可以让您的设备通过互联网与远程服务器建立安全的连接。您可以在 Windows Server 上安装 软件,然后将云服务器配置为 服务器,就可以实现数据直接转发到指定服务器的功能。
有多种 软件可供选择,具体使用方法因软件不同而有所差异。常用的 软件包括 Open、SoftEther 、L2TP/IPSec 等。您可以根据自己的需要来选择合适的软件。
此外,您还可以考虑使用路由器来解决这个问题。路由器通常具有 功能,可以将路由器配置为 客户端,然后将云服务器配置为 服务器,这样就可以实现数据的直接转发。但是需要注意的是,路由器的 功能可能不是所有型号都有,需要您确认路由器是否具备此功能。
总的来说,使用 软件或路由器都是可行的解决方案,您可以根据自己的需要和偏好来选择适合自己的方案。

NAPT原理:
在NAT网关上会有一张映射表,表上记录了内网向公网哪个IP和端口发起了请求,然后如果内网有主机向公网设备发起了请求,内网主机的请求数据包传输到了NAT网关上,那么NAT网关会修改该数据包的源IP地址和源端口为NAT网关自身的IP地址和任意一个不冲突的自身未使用的端口,并且把这个修改记录到那张映射表上。最后把修改之后的数据包发送到请求的目标主机,等目标主机发回了响应包之后,再根据响应包里面的目的IP地址和目的端口去映射表里面找到该转发给哪个内网主机。这样就实现了内网主机在没有公网IP的情况下,通过NAPT技术借助路由器唯一的一个公网IP来访问公网设备。 具体原理参照上图。
10款内网穿透工具:
1、Ngrok
ngrok 是一个反向代理,通过在公共端点和本地运行的 Web 服务器之间建立一个安全的通道,实现内网主机的服务可以暴露给外网。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放,所以ngrok可以很方便地协助服务端程序测试。
参考博客:10分钟教你搭建自己的ngrok服务器
>内网穿透有何用处?
宽带为内网IP的用户即内网用户,以下范围内的IP地址属于内网保留地址,即不是公网IP,而是属于内网IP:
10000 - 10255255255;
1006400 - 100127255255;
1721600 - 17231255255;
19216800 - 192168255255。
例如某小区用户均被分配的内网IP,通过一个公共的网关访问外网,小区内每家用户的计算机均可连接外网,但是Internet上的其他用户却无法对内网的计算机发送连接请求,自然也就无法访问内网计算机所搭建的网站,也无法为内网计算机提供仅公网IP才能支持的下载、传输服务,例如BT下载、电驴等。
内网穿透即NAT穿透,通过端口映射将一台主机的内网(LAN)IP地址映射成一个公网(WAN)IP地址,让互联网上的用户可以通过此公网IP地址访问特定的内网主机所提供的网站或者服务器。
内网穿透教程:花生壳DDNS端口映射
1、花生壳客户端,没有护照的用户需要先注册花生壳护照。
2、在Windows10系统内安装花生壳,完成后登陆。
3、点击客户端内网映射,则跳转至花生壳管理的内网映射web页面,可以直接在网页中对域名进行添加映射,即使不在服务器现场,也可以远程管理。
下面介绍内网映射添加步骤:
1、点击内网映射——添加映射。
2、在添加映射页面,填写好“应用名称”,“内网服务器IP”,“内网服务端口”以及选择“外网端口”形式,点击确定即可。
3、添加成功后,会生成一个外网访问地址。
4、在浏览器地址栏输入外网访问地址,即可成功访问内网主机搭建的服务和应用。
5、搞定端口映射之后,内网用户也能同公网用户一样随心所欲使用强大的互联网服务了。除了搭建网站之外,完成内网穿透的用户还可以轻松实现远程桌面的搭建和访问、远程监控摄像头、自己开服玩游戏、搭建各类办公系统等等。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13426335.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-03
下一篇 2023-08-03

发表评论

登录后才能评论

评论列表(0条)

保存