因内网的服务需要发布到外网,考虑用一种穿透方案。找了花生壳、飞鸽等,但发现免费版本限制很多,收费版本的域名也有不少限制,而且带宽普遍低。后来找到NPS开源方案,很不错的方案,结果下载客户端部署时,总是报毒,应该是github上的release版本被污染了,当然可以考虑自己编译,暂没有细看。
后来看到dingtalk的穿透方案已经废弃,但推荐了 frp 内网穿透方案,自己部署服务器端,几乎没有限制,唯一的要求是有一台公网服务器。并且 有域名并已经正常解析到公网服务器。
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
文档: frp
2. 部署实施
2.1 服务端安装
服务器环境:ubuntu20.04,64位。
1. 执行以下命令,下载frp工具压缩包。
wget https://github.com/fatedier/frp/releases/download/v0.49.0/frp_0.49.0_linux_arm64.tar.gz
2. 执行以下命令,解压frp工具包。
tar -xzvf frp_0.49.0_linux_amd64.tar.gz
3. 执行以下命令,移动至 /usr/local。
mkdir /usr/local/frp
mv frp_0.49.0_linux_amd64/* /usr/local/frp/
4. (可选)删除frpc.ini和frpc文件,frpc相关的文件属于客户端配置。
2.2 服务端配置
1. 执行以下命令进入frp文件夹。
cd /usr/local/frp
2. 执行以下命令编辑frps服务端配置文件。
vi frps.ini
3. frps服务端配置文件内写入以下信息。
[common]
# frp服务端端口,默认7000
bind_port = 7000
# 自定义设置的http访问端口,
vhost_http_port = 7080
# dashboard is available only if dashboard_port is set
dashboard_addr = 0.0.0.0
dashboard_port = 7500
# dashboard user and passwd for basic auth protect
dashboard_user = admin
dashboard_pwd = admin
console or real logFile path like ./frps.log
log_file = ./frps.log
# trace, debug, info, warn, error
log_level = info
log_max_days = 3
[ssh]
listen_port = 6000
[web]
# 服务类型,可以设为http,https
type = http
custom_domains = xxx.xxxx.com
更多详细的配置,可以参考 frps_full.ini 。
4. 执行以下命令启动frps。
./frps -c ./frps.ini
在服务器端,可以采用后台启动,如下:
nohup ./frps -c ./frps.ini > frps_`date +%Y-%m-%d` 2>&1 &
frps 的日志输出在 ini 文件中打开了,会自动输出。因此屏幕没有消息输出,但可以作为启动日期记载,:)
2.3 客户端安装
根据自己的内网服务的需求,选择合适的版本下载。
选择windows平台的版本下载: frp_0.49.0_windows_amd64.zip。(2023年6月17日)
(可选)删除frps.ini和frps文件,frps相关的文件属于服务端配置。
2.4 客户端配置
编辑 frpc.ini 文件,如下:
[common]
server_addr = xx.xx.xx.xxx
server_port = 7000
# console or real logFile path like ./frpc.log
log_file = ./frpc.log
# trace, debug, info, warn, error
log_level = info
log_max_days = 3
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[web01]
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = xxx.xxx.com
[web02]
type = http
local_ip = 127.0.0.1
local_port = 8000
custom_domains = xxx.xxxx.com
进入 cmd,启动客户端:
frpc.exe -c frpc.ini
客户端log见 frpc.log 文件。
3. 查看dashboard
在服务器端 ini 配置中打开了 dashboard的相关配置,则可以通过域名+端口7500 访问。用户名密码在配置文件中填写了。