iptables MARK仅打标不重定向,需三步联动:mangle表标记非法端口流量、策略路由引流至专用网关、CONNMARK保障双向连接一致性。

不能直接用 iptables MARK 功能“重定向”流量——它只打标记,不改目的地址或端口。真正实现非法端口流量的定向处理,需要三步联动:先用 mangle 表 PREROUTING 链 对非法端口流量打标,再通过 策略路由(ip rule + ip route) 将带标包引向专用网关,最后由该网关执行丢弃、限速、记录或转发到蜜罐等动作。
识别并标记非法端口流量
非法端口通常指非业务必需、高危或已知滥用的端口(如 135、445、3389、5900、6667 等),也可包含非标 HTTPS 端口(如 8443、8080 上跑 TLS 流量但无 SNI)。
- 在 mangle 表中匹配并标记入向非法端口连接:
iptables -t mangle -A PREROUTING -p tcp --dport 445 -j MARK --set-mark 0x200
iptables -t mangle -A PREROUTING -p tcp --dport 3389 -j MARK --set-mark 0x200 - 若需更精细判断(如排除内网管理流量),可加源地址限制:
iptables -t mangle -A PREROUTING -s ! 192.168.10.0/24 -p tcp --dport 5900 -j MARK --set-mark 0x200 - 对非标端口上的 HTTPS 特征检测(规避伪装):
iptables -t mangle -A PREROUTING -p tcp --dport 8443 -m string --algo bm --string "GET /" --from 64 -j MARK --set-mark 0x200
配置专用路由表与引流路径
标记只是起点,必须让带标包走指定出口。假设你的分析/拦截设备 IP 是 172.16.20.10,连接在 eth2 接口上:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 添加自定义路由表名:
echo "200 illegal" >> /etc/iproute2/rt_tables - 为该表设置默认下一跳(指向拦截设备):
ip route add default via 172.16.20.10 dev eth2 table illegal - 添加策略规则,使所有 fwmark 为 0x200 的包查此表:
ip rule add fwmark 0x200 table illegal
保障双向连接一致性(关键!)
只标记进向包,回程响应仍走默认路由,会导致连接异常或审计断裂。必须用 CONNMARK 同步整个连接的标记状态:
- 首次进包打标后保存到连接跟踪:
iptables -t mangle -A PREROUTING -m mark --mark 0x200 -j CONNMARK --save-mark - 后续所有同连接包(含回程)恢复标记:
iptables -t mangle -A PREROUTING -m connmark --ctmark 0x200 -j CONNMARK --restore-mark - 若需本机主动发起的非法端口出向流量也受控(如扫描行为),还需在 OUTPUT 链打标,并加对应 ip rule:
iptables -t mangle -A OUTPUT -p tcp --dport 445 -j MARK --set-mark 0x200
ip rule add fwmark 0x200 table illegal
拦截设备侧的配合建议
被引流的设备(如防火墙、蜜罐或沙箱)需明确处理逻辑,例如:
- 简单丢弃:
iptables -A INPUT -m mark --mark 0x200 -j DROP - 限速并记录:
iptables -A INPUT -m mark --mark 0x200 -m limit --limit 5/min -j LOG --log-prefix "ILLEGAL_PORT: "
iptables -A INPUT -m mark --mark 0x200 -j DROP - 转发至蜜罐服务:
iptables -t nat -A PREROUTING -m mark --mark 0x200 -p tcp --dport 445 -j DNAT --to-destination 10.0.100.5:445


















