内网穿透神器frp
在许多情况下,我们希望把内部的服务暴露到外网来使用,比如说:
在公司内网开发程序,要和微信联调。
想要随时随地登录家里的树莓派,使用上面的服务
在这些情况下,我们就会很迫切的希望有一个内网穿透服务,帮我们把内部的端口,暴露到外网来。
为此,以前玩过一段时间的ngrok
,当时国外的ngrok
很慢,国内的要收费,而且,ngrok的安装配置相当复杂,我记得当时还要编译服务端客户端(好像是为了使用证书,不知道现在怎么样了)。
后来,终于最后发现了frp
这件神器。我把frp服务端搭建在自己的google cloud
上,速度很快,配置简单。我可以通过它访问家的树莓派。在公司里,我们搭建frp
之后,让外部联调变得很简单。frp
在github
上已经有了1w多个star了。当前的最新版本是 v0.16.0
,我使用的是 v0.12.0
,github地址。
搭建与配置
下面来说说怎么搭建和使用frp
。frp
分为服务端程序和客户端程序,在frp中仓库中下载编译好的二进制代码即可。比如,我用的是amd64
的服务端,运行在google cloud上,arm
的客户端,运行在家里树莓派上。
解压从github
的Release上下载的二进制压缩包,可以在里面看到frps
和 frpc
。frps
相关的是服务端的程序和配置文件,frpc
开头的是客户端的程序和配置文件。
服务端配置(frps.ini)
在外网服务器上(比如我的google cloud)搭建frp服务端frps,修改服务端的配置为如下:
[common]bind_port = 7000# 监听的服务端口,客户端会向它发起连接vhost_http_port=80# 遇到http类型的穿透,使用80端口,如果不穿透web服务,不用配置此项privilege_token=buyaogaosubieren # 可选,但是建议加上,客户端需要有同样的值才允许连接,加固安全性
so easy?
客户端配置(frpc.ini)
在内网机器上(比如我家里的树莓派)搭建frp
的客户端frpc
,修改客户端配置文件如下:
[common]server_addr = x.x.x.x# 替换成你的服务器地址server_port = 7000# 服务端的端口号privilege_token=buyaogaosubieren # 如果服务端设置了token,那客户端要保持一致才连得上[ssh]type = tcp # 把tcp类型的服务穿透出去local_ip = 127.0.0.1# 本地ip地址local_port = 22# 本地端口号,我是把ssh服务穿透到外网remote_port = 5022# 在外网服务器上开通5022端口,代理本地的22号端口[web]type = http # 代理本地的http服务local_port = 8080# 本地http服务端口是8080custom_domains = demo.frp.xnow.me# 为该端口启用 demo.frp.xnow.me的域名。前提是该域名必须指向上面的frp服务端。
至此配置就结束了。
启动frp
服务端和客户端
先启动frps
服务端
进入外网服务器的frp
的程序目录,把可执行文件frps
和配置文件frps.ini
放在当前目录,执行如下命令:
# ./ frps -c ./frps.ini
启动frpc
客户端
同理,进入我家内网的frp
的程序目录,把可执行文件frpc
和配置文件frpc.ini
放在当前目录,执行如下命令:
# ./ frpc -c ./frpc.ini
访问方式
访问我们配置的ssh
代理,如下:
ssh -p 5022 user@x.x.x.x# x.x.x.x 为frp服务端地址
访问我们的web
代理,需要提前把域名解析到frp服务端地址,访问地址为 http://x.x.x.x/
小结
可以看到,frp
的配置相当人性化,十分简洁,只要10分钟,就能快速搭建起来。以上只是演示了frp
的一小部分功能,更多丰富的用法,请看官方文档。
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:昔我往矣 来源: 昔我往矣
- 标签: frp 内网 穿透
- 发布时间:2020-02-07 14:18:40
- [68] IOS安全–浅谈关于IOS加固的几种方法
- [66] Twitter/微博客的学习摘要
- [64] 如何拿下简短的域名
- [61] android 开发入门
- [60] find命令的一点注意事项
- [59] Go Reflect 性能
- [57] 流程管理与用户研究
- [56] Oracle MTS模式下 进程地址与会话信
- [56] 图书馆的世界纪录
- [55] 读书笔记-壹百度:百度十年千倍的29条法则