frp是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
frp的作用:
1、利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
2、对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
3、利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。
frp的下载地址:https://github.com/fatedier/frp/releases
今天我们演示的案例是穿透内网连接SSH或者3389远程桌面。
前提环境:
1、有一台公网服务器
2、有一台内网电脑
3、有一台公网或者内网的电脑
一、配置公网服务器的frp
这里我用的公网服务器是Linux的,所以我下载的是Linux amd 64位的frp_0.22.0_linux_amd64.tar.gz
解压后得到一堆文件,我们只保留frps和frps.ini两个文件,s表示的是server,即服务端
打开frps.ini,可以看到默认的只有一条配置:
[common]
bind_port = 7000
即绑定了7000端口,这个端口是用来跟内网的机器进行通讯的。我们不做改变,直接启动frp服务端,开始监听。
启动命令:./frps -c ./frps.ini
二、配置内网机器
这里我用的是Windows机器做测试,我们演示穿透3389端口。所以我下载的是Windows amd64位的frp_0.22.0_windows_amd64.zip
解压后同样得到一堆文件,我们只保留frpc.exe和frpc.ini,c表示的是client,即客户端
打开frpc.ini,可以看到默认的配置内容如下:
[common]
server_addr = 127.0.0.1
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
server_addr表示公网服务器的ip地址,比如我们的公网ip是x.x.x.x
server_port表示的服务器监听的端口,即frp服务端跟客户端通讯用的端口,我们之前配置服务端的时候没有修改,用的就是默认的7000
[ssh]这个节点名是可以随便修改的,然后下面的定义的就是客户端的信息,比如通讯协议,这里是tcp,然后是本地ip,直接用127.0.0.1就可以了。
再接着是本地监听的端口,比如我们这里演示的是穿透3389,那么这里就把22改成3389,然后是远程端口,即公网服务器哪个端口会指向我们本地的3389,假如我这里不改,使用默认的6000
修改后的配置如下:
[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6000
然后我们启动frp客户端程序(需要在cmd下运行):frpc -c frpc.ini
同时我们在frp服务器上也可以看到有新的客户端连接上来了
接下来我们打开mstsc远程桌面,输入我们公网服务器的ip加:6000,然后连接,此时连接就会自动指向我们内网的客户端机器。这样我们就实现了穿透内网连接远程桌面。
原文地址:https://www.hostloc.com/thread-514392-1-1.html