现状:
(1)在阿里云上面购买了一个轻量应用服务器,操作系统是 Ubuntu Server 24.04,有公网IP地址1个公网IP地址;
(2)内网有一个服务器,操作系统是Rocky Linux 9.7,IP地址是192.168.1.2,部署有DNS服务。
(3)内网有一台海康威视录像机,IP地址为192.168.1.3,普通的PC通过使用iVMS-4200与其连接并查看监控信号,端口号是17951,另外,该录像机所使用的域名是jk.cntse.com;
需求:
使用 frp 6.0 搭建内网穿透系统,实现无论在内网还是在外网,均可以在iVMS-4200中通过域名jk.cntse.com(端口:17951)查看监控内容。
实现过程(本案例以阿里云轻量应用服务器为例):
一、内网访问:
内网访问的直接在内网DNS服务器内把jk.cntse.com域名解析到录像机的IP地址192.168.1.3即可,具体的实施过程这里就不在详细说明了,有兴趣的可以搜索一下本站的其它文章,或者上网搜索DNS解析相关的教程。
二、内网穿透:
1、阿里云轻量应用服务器配置:
(1)如果轻量应用服务器是放在国内的,必须先把域名和站点进行备案(一般国内服务器提供方都可以协助备案);
(2)完成备案后,通过SSH登录阿里云轻量应用服务器;
(3)下载frp,GitHub的下载地址是:https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz ,可以使用wget直接下载,如果这个地址不稳定或者无法使用,笔者在百度云盘里面放了一份,大家可以进入以下链接进行下载:
链接: https://pan.baidu.com/s/1F8theYsYdC_WZ30ydDabLg?pwd=5s22 提取码: 5s22
(4)解压下载后的文件,然后进入到解压后的目录,找到frps文件,把该文件复制到 /usr/local/bin (当然也可以复制到其它目录,前提是要记下相关的路径,这里就以 /usr/local/bin 为例)
(5)执行以下命令,生成一个token令牌,并记录下来(需要使用到openssl,如果没有安装的话先安装openssl):
openssl rand -base64 32
这里假设生成的token令牌是 LZCBOydPSNBeY/QDKxYMztDzZERRHc6uAbpfODBtusE=
(6)创建目录 /etc/frp ,在该目录下创建一个名为“frps.toml”的配置文件,参考格式如下:
bindPort = 7000 #指定 frp 服务端的监听端口
# 认证配置
auth.method = "token" #设置认证方式为令牌认证
auth.token = "LZCBOydPSNBeY/QDKxYMztDzZERRHc6uAbpfODBtusE=" #刚刚生成的令牌
# 以下是Web管理界面(可选)
webServer.addr = "0.0.0.0" #指定 Web 管理界面的监听地址。0.0.0.0 表示监听所有网络接口(允许通过任何 IP 访问)。若设为 127.0.0.1 则仅允许本地访问。
webServer.port = 7500 #指定 Web 管理界面的端口
webServer.user = "admin" #指定 Web 管理界面的登录用户名
webServer.password = "MiMaMiMa" #指定 Web 管理界面的登录密码
# 日志配置
log.level = "info" #设置日志输出级别,可选值包括 "trace", "debug", "info", "warn", "error"。"info" 会记录常规运行信息,适合生产环境。
log.maxDays = 3 #设置日志文件保留天数。
log.to = "console" #设置日志输出目标。#"console" 表示日志输出到标准输出(终端或系统日志)。若设为 "file",则日志会写入文件(需额外配置 log.file 路径)。
(7)执行 sudo nano /etc/systemd/system/frps.service 创建系统服务文件(操作系统启动时自动启动服务),并写入以下内容:
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml
ExecReload=/usr/local/bin/frps reload -c /etc/frp/frps.toml
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
然后保存退出;
(8)执行以下命令,启用并启动frp服务端服务:
sudo systemctl start frps
sudo systemctl enable frps
执行完毕之后,执行 systemctl status frps 查看服务运行状态,如果显示“ Active: active (running)”则配置正确;

(9)在轻量应用服务器的防火墙中允许端口7000、7500、17951等端口通过。
2、内网配置
(1)选择运行 Rocky Linux 9.7 的内网服务器作为frp客户端(中转站);
(2)刚刚在服务端下载的frp程序压缩包里面有一个frpc文件,可以把这个文件放在内网服务器中,比如放到 /usr/local/bin 目录;
(3)创建目录 /etc/frp ,在该目录下创建一个名为“frpc.toml”的配置文件,参考格式如下:
serverAddr = "公网IP地址" #把公网IP地址改为实际的公网IP
serverPort = 7000 #frp服务器的端口
auth.method = "token" #服务器的认证方式
auth.token = "LZCBOydPSNBeY/QDKxYMztDzZERRHc6uAbpfODBtusE=" #服务器的令牌
log.to = "/var/log/frpc.log" #日志文件路径
log.level = "info" #设置日志输出级别,可选值包括 "trace", "debug", "info", "warn", "error"。"info" 会记录常规运行信息,适合生产环境。 #设置日志文件保留天数。
log.maxDays = 3
#以下设置内网相关服务的通信信息,如果需要设置多个穿透服务,穿透到不同的地址或端口,可以填写多个[[proxies]]:
[[proxies]]
name = "nvr-stream" #作为标识使用,可以自定义
type = "tcp" # 录像机视频流通常基于TCP
localIP = "192.168.1.3" #假设录像机的内网IP
localPort = 17951 #录像机的本地端口
remotePort = 17951 #在公网上面开放的端口
#以下是映射到另一台服务器的另一个服务,供参考(如果没有的可以不写)
[[proxies]]
name = "other-service"
type = "tcp"
localIP = "192.168.1.4"
localPort = 17952
remotePort = 17952
写好配置文件之后,保存退出;
(4)执行 sudo nano /etc/systemd/system/frpc.service 创建系统服务文件(操作系统启动时自动启动服务),并写入以下内容:
[Unit]
Description=FRP Client
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
# 使用完整路径指定配置文件
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.toml
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
写完后,保存退出;
(5)执行以下命令,启用并启动frp客户端服务:
sudo systemctl start frpc
sudo systemctl enable frpc
执行完毕之后,执行 systemctl status frpc 查看服务运行状态,如果显示“ Active: active (running)”则配置正确;
至此,所有配置已完成,可以在外网尝试一下使用iVMS-4200,看看是否可以正常查看监控视频。
注意事项:
1、还是那句话,服务器在国内的,一定要按规定进行备案!
2、建议定期更新token令牌,且最好是高强度的随机字符串;
3、防火墙必须只开放需要用到的端口;
4、基于安全性考虑,建议把默认端口修改成其它端口。

