FRP实现内网穿透通过公网服务器实现对外暴露内网服务

使用FRP内网穿透工具使处于内网中的电脑能够像访问公网电脑一样方便,项目一直开源

实战:将内网IP3389端口通过公网服务器19.19.19.19对外暴露为6000

即用MSTC访问19.19.19.19:6000来远程连接内网ip:3389
服务器需要开启6000端口。

操作

内网电脑与服务器上下载软件:https://github.com/fatedier/frp/releases

1. 服务端配置

1.1 解压,删除客户端相关的文件frpc.ini,frpc.exe.
1.2 编辑配置文件frps.ini:
[common]
bind_port = 7000 #客户端与服务器连接端口
token = 12345679 #客户端与服务器token相同才可以连接,此项可以删除,但容易被别人利用

1.3 通过启动服务端

frps  -c  frps.ini

防火墙要开启7000

2. 客户端配置

2.1 解压,可删除服务端相关文件frps.ini,frps.exe
2.2 编辑配置文件frpc.ini:

[common]
server_addr = 19.19.19.19
server_port = 7000
token = 12345679 #客户端与服务器token相同才可以连接 
[RDP]
type = tcp
local_ip = 0.0.0.0
local_port = 3389
remote_port = 6000   #通过公网IP对外暴露的端口

2.3 启动客户端
CMD运行frpc.exe

完成,即可以用 19.19.19.19:6000来访问远程桌面了

2.4 设置开机启动和后台运行
对服务端与客户端设置后台运行和开机自启。借助 winsw 工具可以将frpc、frps注册为windows系统中的服务。
下载winsw最新版,为了方便将其重命名为winsw.exe, 将该文件和frpc.exe放在一起,然后新建winsw.xml写入以下内容:

<service>
    <id>frp</id>
    <name>frp</name>
    <description>用frp发布本地电脑网站到外网</description>
		<!-- 客户端用下面两行 -->
		<executable>frpc</executable>
		<arguments>-c frpc.ini</arguments>
		<!-- 服务器端用下面两行-->
		<executable>frps</executable>
		<arguments>-c frps.ini</arguments>
    <logmode>reset</logmode>
</service>

然后使用winsw install即可将frpc安装为系统服务。
客户端要把服务启动失败策略弄一下,省得服务端失效时,客户端不再尝试恢复
在这里插入图片描述

其它服务配置方法

域名访问

# frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080   #对外暴露的端口号
# frpc.ini
[common]
server_addr = 19.19.19.19
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com  #域名要解析至19.19.19.19

过浏览器访问 http://www.yourdomain.com:8080

安全地暴露内网服务

对于某些服务来说如果直接暴露于公网上将会存在安全隐患。使用 stcp(secret tcp) 类型
即客户电脑、公网电脑、内网电脑都要开启frp。

内网

# frpc.ini
[common]
server_addr = 19.19.19.19
server_port = 7000

[secret_ssh]
type = stcp
sk = abcdefg # 只有 sk 一致的用户才能访问到此服务
local_ip = 127.0.0.1
local_port = 22

客户端电脑上

# frpc.ini
[common]
server_addr = 19.19.19.19
server_port = 7000

[secret_ssh_visitor]
type = stcp
role = visitor # stcp 的访问者
server_name = secret_ssh # 要访问的 stcp 代理的名字
sk = abcdefg
bind_addr = 127.0.0.1  # 绑定本地端口用于访问 ssh 服务
bind_port = 6000

点对点穿透

点对点内网穿透
frp 提供了一种新的代理类型 xtcp 用于应对在希望传输大量数据且流量不经过服务器的场景。
使用方式同 stcp 类似,需要在两边都部署上 frpc 用于建立直接的连接。

目前处于开发的初级阶段,并不能穿透所有类型的 NAT 设备,所以穿透成功率较低。穿透失败时可以尝试 stcp 的方式。

frps 除正常配置外需要额外配置一个 udp 端口用于支持该类型的客户端:
bind_udp_port = 7001
启动 frpc,转发内网的 ssh 服务,配置如下,不需要指定远程端口:

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[p2p_ssh]
type = xtcp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22

在要访问这个服务的机器上启动另外一个 frpc,配置如下:

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[p2p_ssh_visitor]
type = xtcp
# xtcp 的访问者
role = visitor
# 要访问的 xtcp 代理的名字
server_name = p2p_ssh
sk = abcdefg
# 绑定本地端口用于访问 ssh 服务
bind_addr = 127.0.0.1
bind_port = 6000
通过 ssh 访问内网机器,假设用户名为 test:
ssh -oPort=6000 test@127.0.0.1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值