本文以 CentOS 7/8 操作系统为例。该系统使用的防火墙组件为 firewalld 。
HLS 协议视频流基于 HTTP 协议传输,使用80端口。建议对80端口配置防火墙规则,只允许已知的下游取源节点访问,不允许其他地址访问。
在配置防火墙规则时,建议通过 ipset 建立 IP 地址列表,通过单条防火墙规则来允许访问,而不是添加多条防火墙规则,以减少防火墙的性能开销。
在服务器执行如下命令:
firewall-cmd --state
如果返回结果为 running
即表示防火墙处于运行状态。
如果结果为 not running
,请使用以下命令开启:
systemctl start firewalld
systemctl enable firewalld
IPv4 与 IPv6 的 ipset 集合需要分别建立。
- IPv4
firewall-cmd --permanent --new-ipset=whitelist --type=hash:net
- IPv6
firewall-cmd --permanent --new-ipset=whitelist6 --type=hash:net --option=family=inet6
这样就分别对 IPv4 与 IPv6 建立了 ipset 集合。其中前者的集合名为 whitelist ,后者为 whitelist6 。
向集合添加 IP 地址或者 CIDR 区块时,需将对应协议的地址添加到对应协议的 ipset 集合中。
firewall-cmd --permanent --ipset=集合名 --add-entry=地址或CIDR
如需查看集合内容,可使用如下命令:
firewall-cmd --permanent --ipset=集合名 --get-entries
删除集合中某个条目的操作如下:
firewall-cmd --permanent --ipset=集合名 --remove-entry=地址或CIDR
在本示例中,我们使用防火墙的 work 区域
- 将 ipset 添加为区域的 source
firewall-cmd --permanent --zone=work --add-source=ipset:集合名
如果同时使用IPv4 与 IPv6 的 ipset ,需在这里将二者都添加进来。
- 将 http 添加为区域的 service
firewall-cmd --permanent --zone=work --add-service=http
- 将 snmp 添加为 public 区域的 service
firewall-cmd --permanent --zone=public --add-service=snmp
自动安装脚本使用统一的 SNMP 团体名。考虑到安全性问题,您可以修改为自定义的团体名,或限制只允许平台网管的 IP 地址访问。您可以 联系我们 获得平台网管服务器地址,或将更改后的 SNMP 团体名告知我们。
firewall-cmd --reload
在这一步骤后,您配置的 ipset 中的地址应当已经可以访问您服务器的80端口了。
需要注意的是,如果您后续更改了防火墙配置,比如添加了新的 IP 地址到 ipset 集合中,需要再次执行重新加载命令使得改动生效。