介绍
对于没有公网 IP 的内网用户来说,远程管理或在外网访问内网机器上的服务是一个问题:为了解决这个问题,则需要内网穿透,而内网穿透的方法有很多种,例如使用花生壳、ngrok等。本文章要介绍的是使用frp实现内网穿透
FRP 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。
FRP 安装
FRP 采用 Go 语言开发,支持 Windows、Linux、MacOS、ARM等多平台部署。FRP 安装非常容易,只需下载对应系统平台的软件包,并解压就可用。
解压之后关注4个文件,分别是frpc、frpc.ini和frps、frps.ini,前者两个文件是客户端所关注文件,后者两个文件是服务端所关注的两个文件。
更多平台的软件包下载地址:https://github.com/fatedier/frp/releases
Github地址: https://github.com/fatedier/frp
注意如果服务端或者客户端已经先安装好了,那么后面安装选择的服务端和客户端版本最好保持一致,否则会出现EOF错误
开始使用
这里准备一台有公网IP的服务器(下文称公网主机),一台需要实现内网穿透的机器(下文称内网主机)比如公司电脑或者自己主机(这里我使用自己windows系统电脑)
将解压出来的 frps 及 frps.ini 放到具有公网主机的机器上。将 frpc 及 frpc.ini 放到处于内网主机的机器上,这里我们目的是登录内网主机的SSH控制台,MySQL服务以及通过外网访问部署在内网的HTTP服务
FRP 服务端配置
配置公网主机,修改配置,vi frps.ini
[common]
bind_port = 7000 #与客户端绑定的进行通信的端口
vhost_http_port = 6081 #访问客户端web服务自定义的端口号
[common]
dashboard_port = 7500 # 一个图形界面 直观可查看有哪些端口代理
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin
保存然后启动服务./frps -c ./frps.ini,这是前台启动,后台启动命令为nohup ./frps -c ./frps.ini & (让frp在后台运行)
FRP 客户端配置
配置客户端(内网服务器),修改配置,vi frpc.ini
[common]
server_addr = 120.56.38.58 #公网服务器ip
server_port = 7000 #与公网服务器bind_port一致
#公网通过ssh访问内部服务器
[ssh1]
type = tcp #连接协议
local_ip = 192.168.10.188 #内网服务器ip
local_port = 22 #ssh默认端口号 内网端口
remote_port = 6000 #自定义的访问内部ssh端口号 公网端口
#公网通过ssh访问内部服务器
[ssh2]
type = tcp
local_ip = 192.168.10.188
local_port = 3306
remote_port = 7306
#公网访问内部web服务器以http方式
[web]
type = http #访问协议
local_port = 8080 #内网web服务的端口号
local_ip = 192.168.10.188 #内网服务器ip
custom_domains = 120.56.38.58 #公网服务器ip或者域名
保存然后执行./frpc -c ./frpc.ini启动,这是前台启动,后台启动命令为nohup ./frpc -c ./frpc.ini &
如果是windows系统则是 frpc.exe -c frpc.ini
结尾
- 通过120.56.38.58:6000 加内网服务器SSH用户名和密码 =》 访问内网SSH 22端口服务 192.168.10.188:22
- 通过120.56.38.58:7306 加内网服务器Mysql用户名和密码 =》 访问内网Mysql服务 192.168.10.188:3306
- 通过120.56.38.58:6081 =》 访问内网部署在8080端口的HTTP服务 192.168.10.188:8080
- 通过120.56.38.58:7500 查看FRP图形界面
- 现在是一个公网穿透了一个内网机器,如果再添加一个内网服务器需要穿透,那么可以copy frps.ini配置文件命名。修改绑定端口然后启动就可以穿透新加的内网机器了。这时候就会有两个frps进程了。