0
点赞
收藏
分享

微信扫一扫

frp | 开源内网穿透利器,速速用起来,出门在外随时随地访问家里的电脑有办法啦!

frp 下载链接:https://pan.quark.cn/s/5ea28f097442

文章来源:frp | 开源内网穿透利器,速速用起来 (qq.com)

概述

1、frp 是一款高性能的反向代理应用,专注于内网穿透,采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,反向代理到处于内网的服务。

2、在此基础上,frp 支持 TCP, UDP, HTTP, HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。

3、此外,还可以通过 xtcp 实现 P2P 通信。

4、使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

需求场景

比如希望实现在公司通过外网访问家用电脑相关服务(网站、远程桌面等)的功能。且即使没有域名也可通过公网访问。

1、需要一台外网可访问的有固定 ip 的云服务器。

2、再就是一台外网无法访问的无固定 ip 的本地家用电脑。

配置文件介绍

# 服务端配置(frps.toml)
    bindPort = 7000                 # frp服务的特定端口,防火墙也需放开该端口

    # 服务面板可查看frp服务状态信息
    webServer.addr = "0.0.0.0"    # 后台管理地址,默认是127.0.0.1,如果是公网访问则改成0.0.0.0
    webServer.port = 7500      # 后台管理端口
    webServer.user = "admin"    # (可选)后台登录用户名
    webServer.password = "admin"  # (可选)后台登录密码


    transport.tls.force = true    # 服务端将只接受TLS连接
    auth.method = 'token'         # 客户端访问验证方式
    auth.token = "123123"      # 客户端访问验证密码,frpc要与frps一致


    # 自定义的监听的端口,所有对服务器该端口访问将被转发到本地内网,做了反向代理可不处理防火墙放行
    vhostHTTPPort = 8000
    vhostHTTPSPort = 45443

# 客户端配置(frpc.toml)
    transport.tls.enable = true    # 从 v0.50.0版本开始,transport.tls.enable的默认值为 true
    serverAddr = "x.x.x.x"     # 公网服务器ip
    serverPort = 7000     # 服务端端口
    auth.method = 'token'   # 客户端访问验证方式
    auth.token = '123123'   # 客户端访问验证密码

    [[proxies]]
    name = "test-tcp"     # 客户端服务名
    type = "tcp"      # 通讯方式
    localIP = "127.0.0.1"      # 需要暴露的服务的IP
    localPort = 3389        # 将本地3389端口的服务暴露在公网的5000端口
    remotePort = 5000         # 暴露服务的公网入口

    [[proxies]]
    name = "ssh"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 22
    remotePort = 6000
    customDomains = ["域名或ip"]

    [[proxies]]
    name = "web"
    type = "http"
    localIP = "127.0.0.1"
    localPort = 80
    customDomains = ["域名或ip"]

老版本是 ini 后缀的配置文件,新版本现在是 toml 后缀配置文件。

公网服务器选择

1、可以选择各大服务商的体验产品,免费限时使用。

2、阿里云服务器:https://www.aliyun.com/daily-act/ecs/activity_selection?userCode=y7wtz5sg

举例

环境描述

这里全部使用本地虚拟机实现,和使用公网服务器效果都一样。

  • 中转(模拟公网)服务器(Linux):192.168.49.191
  • 被连接的客户端(Linux):192.168.49.141
  • 主动连接的客户端(Windows):192.168.49.156
发布 ssh 和 http 服务

将程序解压并放进中转服务器。

在中转服务器的程序目录中执行以下命令,创建并编辑配置文件。

vi frps.toml

将以下内容放入配置文件,然后保存退出。

bindPort = 7000
 auth.token = "111111"
 # 服务端仪表盘的端口,可以用浏览器访问查看
 webServer.addr = "0.0.0.0"
 webServer.port = 7500
 # 服务端仪表盘的用户密码
 webServer.user = "admin"
 webServer.password = "admin"
 # 虚拟主机端口
 vhostHTTPPort = 8080

执行以下命令启动 frp 服务。

chmod u+x frps
 
 ./frps -c ./frps.toml

执行命令后会提示 frp started successfully,没有报错就 ok 了。

接下来关闭防火墙(或者单独放行 7000、7500 端口),如果是云服务,就在安全组以及系统防火墙上放行对应端口,具体命令就不说了。注意后续使用的端口也需要对应放行。

然后通过浏览器访问以下地址。

http://192.168.49.191:7500/

输入账号密码登录即可访问到管理页面。

frp | 开源内网穿透利器,速速用起来,出门在外随时随地访问家里的电脑有办法啦!_frp

将程序解压并放进被连接的客户端上。

在被连接的客户端程序目录中执行以下命令,创建并编辑配置文件

vi frpc.toml

将以下内容放入配置文件

serverAddr = "192.168.49.191"
 serverPort = 7000
 auth.token = "111111"
 
 [[proxies]]
 name = "ssh"
 type = "tcp"
 localIP = "127.0.0.1"
 localPort = 22
 remotePort = 6000
 
 
 [[proxies]]
 name = "web"
 type = "http"   
 localIP = "127.0.0.1"
 localPort = 80
 customDomains = ["192.168.49.191"]
 vhostHTTPPort = 8080

执行以下命令启动 frp 客户端

chmod u+x frpc
 
 ./frpc -c ./frpc.toml

此时在管理页面可以看到两个服务接入,一个 tcp(ssh)、一个 http(web)

tcp

frp | 开源内网穿透利器,速速用起来,出门在外随时随地访问家里的电脑有办法啦!_服务器_02

http

frp | 开源内网穿透利器,速速用起来,出门在外随时随地访问家里的电脑有办法啦!_开源_03

在主动连接的客户端上执行命令或者打开浏览器访问链接

ssh root@192.168.49.191 -p 6000
 
 http://192.168.49.191:8080/dashboard/

此时连接上的是被控客户端

frp | 开源内网穿透利器,速速用起来,出门在外随时随地访问家里的电脑有办法啦!_客户端_04

用另一台设备也尝试访问这个地址,发现任何人只要能访问到 192.168.49.191:6000,即可以尝试远程连接被控客户端,这......主动给黑客发布了一个肉鸡是吧,滴、好人卡,那绝对是不能当这个大好人的。

stcp 类型

服务端的配置和上面相同即可。

在被连接的客户端上用以下内容替换上面的配置文件。

serverAddr = "192.168.49.191"
 serverPort = 7000
 auth.token = "111111"
 
 [[proxies]]
 name = "ssh"
 type = "stcp"
 # 只有共享密钥 (secretKey) 与服务器端一致的用户才能访问该服务
 secretKey = "123456"
 localIP = "127.0.0.1"
 localPort = 22
 remote_port = 6000

将程序解压并放进主动连接的客户端上(这一步在上个例子中是没有的)。

在主动连接的客户端程序目录中创建配置文件,并放入以下内容(这一步在上个例子中是没有的)。

serverAddr = "192.168.49.191"
 serverPort = 7000
 auth.token = "111111"
 
 [[visitors]]
 name = "ssh_visitor"
 type = "stcp"
 # 要访问的 P2P 代理的名称
 serverName = "ssh"
 secretKey = "123456"
 # 绑定本地端口以访问 ssh 服务
 bindAddr = "127.0.0.1"
 bindPort = 5555

最后两边正常启动服务,然后连接端输入以下命令即可访问到被控端

ssh root@127.0.0.1 -p 5555

frp | 开源内网穿透利器,速速用起来,出门在外随时随地访问家里的电脑有办法啦!_frp_05

此时只有你自己可以访问目标服务,上述安全问题解决。

当然,程序有没有其他安全问题这里就暂且不论了。

xtcp 类型

应用场景:在传输数据时希望流量不经过服务器的场景(点对点隧道)。

原理:简单来说就是双方首次通话建立连接时需要经过服务器,然后服务器帮助双方直接建立连接隧道,后续数据转发时就不需要经过服务器了,通过双方直接建立的连接隧道传数据即可,可以避免公网服务器带宽有限带来的瓶颈。但是这个功能很多时候无法实现,主要是因为运营商的 nat 原因(nat 是啥这里就不解释了),nat 有很多种类型,有些 nat 类型之间没法实现这个功能,所以当 xtcp 无法正常建立点对点隧道时,后续工作流程就还是和 stcp 一样了。

总结

1、上述主要还是在讲个人使用场景,可以满足个人的一些特殊需求。

2、其实这个工具黑客也都会使用,主要用来实现内网穿透效果,如果你电脑上杀毒软件没关的话,程序只要在电脑上落地,可能就会被直接查杀,因为很多安全软件都把它识别为黑客工具了,没办法,工具太好用了。

3、不过没关系,个人正常用的话,让安全软件直接信任就可以了。

4、有人问个人使用场景会用了,那黑客怎么用?这个问题就不多解释了,配置方法其实都是一样的。

举报

相关推荐

0 条评论