1.
概述与准备
本段概述目标与准备工作。
- 确认服务器内网 IP(例如 192.168.1.100)和公网 IP;
- 确认使用的流媒体服务(RTMP、HLS/DASH、RTSP、WebRTC、SRT 等);
- 备份现有防火墙规则并启用 SSH 备用端口,避免误封自己。
2.
通用端口策略与安全建议
说明通用原则与加固建议。
- 只开放必要端口,使用白名单 IP(管理/推流端)优先;
- 优先使用 TLS(HTTPS/RTMPS、WSS)并申请证书(Let's Encrypt);
- 使用负载均衡/反向代理(Nginx、HAProxy)做 TLS 终止并将流量转发给直播服务。
3.
RTMP(实时消息协议)配置与端口
RTMP 常见配置与防火墙规则。
- 默认端口:1935/tcp(推流与播放);若启用 RTMPS,可用 443/tcp;
- iptables 示例:iptables -I INPUT -p tcp --dport 1935 -j ACCEPT;iptables-save 保存;
- UFW 示例:ufw allow 1935/tcp;若用 firewalld:firewall-cmd --permanent --add-port=1935/tcp && firewall-cmd --reload。
4.
HLS/DASH(基于 HTTP 的点播/直播)端口设置
HLS/DASH 通过 HTTP/HTTPS 分发。
- 端口:80/tcp(HTTP)、443/tcp(HTTPS)为主;
- 建议仅打开 80/443 并通过 Nginx/Apache 提供切片与 manifest 文件;
- 强制 HTTPS:在反向代理上配置证书并重定向 80->443,防火墙只允许 443(除必要外)。
5.
RTSP(实时流协议)端口与防护
RTSP 常用于摄像头/监控流。
- 默认端口:554(tcp/udp);部分实现还需要开放 RTP/RTCP 动态端口(通常 5004 及其附近);
- iptables 示例:iptables -I INPUT -p tcp --dport 554 -j ACCEPT;如有 RTP,按应用说明开放相应 UDP 端口范围;
- 若暴露给公网,考虑只对特定源 IP 放行或通过 VPN/内网代理转发。
6.
WebRTC(浏览器实时通信)需要的端口与 NAT
WebRTC 的端口需求较复杂。
- 信令通常走 HTTPS(443/tcp);STUN/TURN 常用端口:3478/udp(STUN/TURN)、5349/tcp(TURN over TLS);
- 媒体流使用大量动态 UDP 端口(通常 1024-65535),推荐部署 TURN,并在防火墙上至少开放 3478/5349 与 443 以便 TURN 将媒体转为 TCP/443;
- 使用 coturn 服务:示例 firewall-cmd --permanent --add-port=3478/udp && firewall-cmd --reload。
7.
SRT 与 RTP/RTCP(可靠 UDP 流)端口示例
SRT 与 RTP 属 UDP 型实时传输。
- SRT 端口可由管理员指定(常见取值示例:10000 或 8000 等),请在服务器配置中确认实际端口并开放相应 UDP;
- 如果使用 RTP,确保开放对等的 RTP(偶数端口)与 RTCP(下一奇数端口);
- 示例 iptables:iptables -I INPUT -p udp --dport 10000 -j ACCEPT(替换为实际端口)。
8.
常见防火墙工具实操命令(iptables/ufw/firewalld/nftables)
给出具体命令便于复制执行。
- iptables(允许 1935):iptables -I INPUT -p tcp --dport 1935 -m conntrack --ctstate NEW -j ACCEPT;iptables-save >/etc/iptables/rules.v4;
- UFW:ufw allow 1935/tcp;ufw allow 80/tcp;ufw allow 443/tcp;ufw reload;
- firewalld:firewall-cmd --permanent --add-port=1935/tcp && firewall-cmd --reload;
- nftables:nft add rule inet filter input tcp dport 1935 accept(需根据 table/filter 定义前置链)。
9.
NAT、端口转发与路由器设置
公网环境常需 NAT 转发至内网媒体服务器。
- 在边界路由器上做端口转发:TCP 1935 -> 192.168.1.100:1935;
- Linux 主机上做 DNAT:iptables -t nat -A PREROUTING -p tcp --dport 1935 -j DNAT --to-destination 192.168.1.100:1935;开启转发:sysctl -w net.ipv4.ip_forward=1 并写入 /etc/sysctl.conf;
- 若使用 CDN 边缘,尽量将推流端直接推到边缘节点并由 CDN 转发拉流,减少自建服务器带宽压力。
10.
测试与故障排查步骤
提供常用测试命令与思路。
- 端口连通性:使用 nmap 或 telnet(tcp):nmap -p 1935 your.server.ip;telnet your.server.ip 1935;
- TLS 检查:openssl s_client -connect your.server.ip:443;
- 流验证:使用 ffmpeg/ffplay 推拉流例子:ffmpeg -re -i file.mp4 -c copy -f flv rtmp://your.server.ip/live/streamkey;ffplay rtmp://your.server.ip/live/streamkey;
- 查看服务监听:ss -tulnp | grep 1935 或 netstat -plnt;结合防火墙日志(/var/log/messages 或 /var/log/firewalld)定位阻断点。
11.
问:如何在 CDN 环境中最小化防火墙暴露面?
答:优先将推流端(采集端)限制到可信 IP 并推送到 CDN 边缘节点,边缘只对 CDN 节点与管理 IP 开放管理端口。
- 在边缘做 TLS 终止并仅开放 443/80;
- 控制推流入口使用 IP 白名单或签名鉴权,必要时使用 VPN。
12.
问:WebRTC 需要开放多少 UDP 端口?能否只开放 443?
答:WebRTC 媒体使用大量动态 UDP 端口,理论上要开放 1024-65535 才能直接点对点,但实际推荐部署 TURN 并开放 3478/5349 与 443,这样可通过 TCP/443 回落,避免大范围开放 UDP。
- 使用 coturn 将媒体转发到 443,降低防火墙开口。
13.
问:做了端口开放但仍无法播放,排查顺序是什么?
答:按顺序排查:1)服务是否监听(ss/netstat);2)防火墙规则是否实际生效(iptables -L/ufw status);3)路由器或云安全组是否拦截;4)NAT/端口转发是否正确;5)协议层(TLS/证书、SNI)与应用日志是否有错误。
- 结合 nmap/tcpdump 抓包确认流量是否到达服务器端口,逐步定位并修复。
来源:cdn视频服务器配置 在不同流媒体协议下的端口与防火墙设置