外网 访问内网服务器。
1. frp(提供软件服务)
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
frp github | bilibili 视频教程 | frp中文文档 | frp下载地址 | 官方示例
1.1. 阅读frp中文文档
移步到官网 -> frp中文文档
frp需要配置两端,客户端和服务端,服务端是具有公网ip的服务器,客户端是内网中的服务器。
1.2. 下载
frp下载地址
根据操作系统选择对应的版本。
1.3. 配置 服务端和客户端
目录介绍:frpc前缀的文件是内网服务需要的;frps前缀的文件是公网IP需要的。
可以查看官网示例,这里也简单的做一些介绍。
1.3.1. 公网服务需要配置frps.ini
文件
代码语言:javascript复制[common]
bind_port = 7000
参数描述:
- bind_port:表示frp服务对应端口,后续需要在内网服务器对应frpc.ini文件也对应上。
1.3.2. 内网服务需要配置frpc.ini
文件
按需求进行配置信息,除基础信息配置common外,其他的根据自己需求进行摘选(每一个标签都是一个独立的模块)。
例子:
代码语言:javascript复制[common]
server_addr = ********
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
基础配置参数描述:
server_addr
表示公网服务器的IP/域名。- server_port表示对应公网frp服务的端口。
1.3.2.1. ssh
代码语言:javascript复制通过 SSH 访问内网机器
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
参数描述:
- type表示对应类型。
local_ip
和local_port
配置为本地需要暴露到公网的服务地址和端口。remote_port
表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。
1.3.2.2. web
代码语言:javascript复制配置web服务
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 9002
remote_port = 9002
[web2]
type = tcp
local_ip = 127.0.0.1
local_port = 9101
remote_port = 9101
参数描述:
可支持多个web服务。
- type表示对应类型。
local_ip
和local_port
配置为本地需要暴露到公网的服务地址和端口。remote_port
表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。
1.4. frp服务启动
先通过 ./frps -c ./frps.ini
启动服务端,再通过 ./frpc -c ./frpc.ini
启动客户端。如果需要在后台长期运行,建议结合其他工具使用,例如 systemd
和 supervisor
。
1.5. frp服务设置 后台启动 / 开机启动
systemctl来控制启动
以服务端为例子:
sudo vim /lib/systemd/system/frps.service
在frps.service里写入以下内容
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/your/path/frps -c /your/path/frps.ini
[Install]
WantedBy=multi-user.target
然后就启动frps
sudo systemctl start frps
再打开自启动
sudo systemctl enable frps
- 如果要重启应用,可以这样,sudo systemctl restart frps
- 如果要停止应用,可以输入,sudo systemctl stop frps
- 如果要查看应用的日志,可以输入,sudo systemctl status frps
2. Ngrok(提供线上隧道和线上管理平台)
2.1. 注册/登陆Ngork
点击进入Ngrok官网
2.2. 购买隧道(有免费的)
配置相关信息
2.3. 下载/使用Ngork客户端
不同系统,使用不同,详情需要查看官方文档。
Mac 版本
代码语言:javascript复制./sunny clientid 隧道id