内网穿透神器frp


什么是frp及工作原理

FRP 服务可以分配给你一个域名让你本地的web项目提供给外网访问, 特别适合向别人展示你本机的web demo 以及调试一些远程的API (比如微信公众号,企业号的开发)。
frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。

使用场景

在许多情况下,我们希望把内部的服务暴露到外网来使用,比如说:

  • 在公司内网开发程序,要和微信联调。
  • 想要随时随地登录家里的树莓派,使用上面的服务

实验目标

  • 外网通过ssh访问内网机器
  • 访问内网web服务

本次实验需要有公网服务器1台

配置说明

  • 下载frp
    下载地址是:https://github.com/fatedier/frp/releases,本次实验用的是linux版本frp_0.13.0_linux_amd64.tar.gz
  • 将下载好的文件解压并进行文件夹
    文件结构如下:
[root@izwz9e0geg32a83u5wy4ciz frp_0.13.0_linux_amd64]# ls
frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE

可以在里面看到frps 和 frpc。frps相关的是服务端的程序和配置文件,frpc开头的是客户端的程序和配置文件。

  • 服务端配置(frps.ini)
    在外网服务器上搭建frp服务端frps,修改服务端的配置为如下:
[root@izwz9e0geg32a83u5wy4ciz frp_0.13.0_linux_amd64]# vim frps.ini

[common]
bind_port = 7000
vhost_http_port = 8080
privilege_mode = true
privilege_token = ***** # 可选,但是建议加上,客户端需要有同样的值才允许连接,加固安全性
max_pool_count = 3
  • 客户端配置(frpc.ini)
amu@amu:~/frp_0.13.0_linux_amd64$ vim frpc.ini 

[common]
server_addr = 112.**.**.2**
privilege_token = ****
server_port = 7000

[ssh]
type = tcp 
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[web]  
type = http
local_port = 80
custom_domains = 112.**.**.2**

  • 启动frp服务端
#nohup ./frps -c ./frps.ini &

运行结果如下

[root@izwz9e0geg32a83u5wy4ciz frp_0.13.0_linux_amd64]# ./frps -c ./frps.ini
2018/05/09 17:18:59 [I] [service.go:83] frps tcp listen on 0.0.0.0:7000
2018/05/09 17:18:59 [I] [service.go:108] http service listen on 0.0.0.0:8080
2018/05/09 17:18:59 [I] [main.go:112] Start frps success
2018/05/09 17:18:59 [I] [main.go:114] PrivilegeMode is enabled, you should pay more attention to security issues
2018/05/09 17:19:15 [I] [service.go:230] client login info: ip [183.**.**.45:45] version [0.13.0] hostname [] os [linux] arch [amd64]
2018/05/09 17:19:15 [I] [proxy.go:170] [b8a3d006f5e2463b] [ssh] tcp proxy listen port [6000]
2018/05/09 17:19:15 [I] [control.go:318] [b8a3d006f5e2463b] new proxy [ssh] success
2018/05/09 17:19:15 [I] [proxy.go:209] [b8a3d006f5e2463b] [web] http proxy listen for host [112.**.**.2**] location []
2018/05/09 17:19:15 [I] [control.go:318] [b8a3d006f5e2463b] new proxy [web] success
2018/05/09 17:19:21 [I] [proxy.go:76] [b8a3d006f5e2463b] [ssh] get a new work connection: [183.**.**.45:45]

  • 启动frpc客户端
# nohup ./ frpc -c ./frpc.ini &

运行结果如下:

root@amu:/home/amu/frp_0.13.0_linux_amd64# ./frpc -c ./frpc.ini
2018/05/09 17:23:31 [I] [control.go:276] [96a57ce5f9251658] login to server success, get run id [96a57ce5f9251658]
2018/05/09 17:23:31 [I] [control.go:411] [96a57ce5f9251658] [web] start proxy success
2018/05/09 17:23:31 [I] [control.go:411] [96a57ce5f9251658] [ssh] start proxy success

访问方式

  • ssh访问方式
ssh -p 6000 [email protected]  # x.x.x.x 为frp服务端地址
  • web访问方式
http://x.x.x.x:8080/

你可能感兴趣的:(内网穿透神器frp)