要对特定网络接口实现流量全监控与防护,核心是结合防火墙规则、流量捕获与实时分析三者联动:先锁定接口范围(如eth0),再定义基于-i/-o的精细化进出策略,最后通过iptables日志、iftop和tc限速实现可观测性、可控性与抗压性。

要对特定网络接口实现流量全监控与防护,核心是结合防火墙规则 + 流量捕获 + 实时分析三者联动。不是只开个端口或加一条iptables规则就能“全监控”,而是需要分层配置:先锁定接口范围,再定义进出策略,最后叠加可观测能力。
明确监控目标接口并确认其状态
先准确识别你要管控的网卡,比如 eth0 或 ens33,避免误操作影响其他链路:
- 运行
ip link show查看所有接口名称及 UP/DOWN 状态 - 用
ip addr show eth0确认该接口已分配有效 IP,且处于活跃状态 - 若使用 firewalld,执行
firewall-cmd --get-zone-of-interface=eth0查看当前归属区域(如 public、internal)
按接口设置精细化防火墙策略
不建议全局一刀切,应基于接口绑定规则,确保策略只作用于目标链路:
- firewalld 中为 eth0 指定专属 zone:
firewall-cmd --permanent --zone=trusted --change-interface=eth0,再--reload - 若需严格控制,改用 iptables 并显式指定入出接口:
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT - 默认拒绝该接口所有未明确定义的流量:
iptables -A INPUT -i eth0 -j DROP(放在规则末尾)
启用接口级流量捕获与日志审计
仅拦截不够,“全监控”必须能看见谁在连、传了什么、速率多少:
- 开启 iptables 日志记录(每条匹配规则可打标):
iptables -I INPUT -i eth0 -j LOG --log-prefix "ETH0-IN: " - 配合 rsyslog 将日志定向到独立文件,例如在
/etc/rsyslog.d/10-eth0.conf中添加::msg, contains, "ETH0-IN:" /var/log/eth0-firewall.log - 用 iftop 实时盯住 eth0 流量:
iftop -f "ip and ether src aa:bb:cc:dd:ee:ff" -P -L 100(替换为 eth0 的 MAC 地址可精准过滤)
补充带宽与连接数硬性防护
防止接口被 Flood 或慢速攻击拖垮,需叠加 tc 限速与 connlimit:
- 限制 eth0 入向总带宽不超过 50Mbps:
tc qdisc add dev eth0 root handle 1: htb default 30tc class add dev eth0 parent 1: classid 1:1 htb rate 50mbit ceil 50mbit - 防 SYN 泛洪:
iptables -A INPUT -i eth0 -p tcp --syn -m connlimit --connlimit-above 50 -j DROP - 限制单 IP 对 eth0 的并发连接数:
iptables -A INPUT -i eth0 -p tcp -m connlimit --connlimit-above 10 -j REJECT
这套组合不依赖第三方商业设备,全部基于 Linux 内置工具完成,兼顾可见性、可控性与抗压性。关键点在于所有规则都锚定 interface 字段,避免跨接口污染,也方便后续按接口维度做策略回滚或迁移。











