大家好,我是TJ君
作为一名开发者,有很多场景需要用到内网穿透,比如:我们在接入一些大平台做第三方应用时,在本地开发微信公众号工具的时候需要让微信平台能否访问到本地提供的接口。除此之外,还有很多其他场景,也会用到,比如:把放在家里的NAS或服务器暴露到公网上,这样在外面的时候也可以随时随地的访问。
说到内网传统,TJ君第一个想到的是国内最早的一款知名软件:花生壳。但是今天不是要推荐它,而是要推荐一个更牛的开源项目:frp!该项目目前已经收获了69.9 K Star,在GitHub上获得了极大的认可!
#下载安装
frp目前已经提供了大部分操作系统的支持版本,通过这个链接:https://github.com/fatedier/frp/releases, 就可以下载到适合你使用的安装。
以Windows的包为例,解压后可以获得这些内容:
frps是服务端程序,frpc是客户端程序。ini文件就是对应的配置文件。
#暴露内网服务
内网穿透的玩法有很多,这里列举一个比较常见的例子。
比如:我要暴露一个只有自己能访问到服务器。那么可以这样配置:
配置 frps.ini,并启动服务端 frps
[common]
bind_port = 7000
在需要暴露到外网的机器上部署 frpc,配置如下:
[common]
server_addr = x.x.x.x
server_port = 7000
[secret_ssh]
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
在想要访问内网服务的机器上也部署 frpc,配置如下:
[common]
server_addr = x.x.x.x
server_port = 7000
[secret_ssh_visitor]
type = stcp
# stcp 的访问者
role = visitor
# 要访问的 stcp 代理的名字
server_name = secret_ssh
sk = abcdefg
# 绑定本地端口用于访问 SSH 服务
bind_addr = 127.0.0.1
bind_port = 6000
把frpc也都启动起来之后,通过 SSH 就可以访问内网机器了
ssh -oPort=6000 test@127.0.0.1
#其他支持
除了上面的玩法之外,frp还有很多玩法,比如:
自定义域名访问内网的 Web 服务
转发 DNS 查询请求
转发 Unix 域套接字
对外提供简单的文件访问服务
为本地 HTTP 服务启用 HTTPS
点对点内网穿透
篇幅有限,具体如何配置这里就不多说了,有需要的读者可以直接查看官方文档,均有详细的服务端客户端配置案例。
最后,奉上相关链接:
开源地址:https://github.com/fatedier/frp/ 文档地址:https://gofrp.org/docs/