mangle 允许对 IP 数据包做特殊的标记, mangle 是通过修改指定的 IP 数据包头字段,去标记 IP 数据包的特征 能标记端口、 IP、协议、 TCP 协议和相应的 IP 数据流。 Mangle 属于综合性功能,所以在路由、流量控制和其他相应功能中都会涉及到。
需要功能包: system
需要等级: Level1
操作路径: /ip firewall mangle
协议标准: IP
Mangle 介绍
Mangle 是一种标记器,标记特殊的数据包等待将来处理。在 RouterOS 中许多其他的功能组件会使用到他,如queue-trees 和 nat,他们识别到一个数据包了标记的便会做相应的处理。 Mangle 标记仅存在于该路由器中,他们无法传输到网络中去。 根据数据传输方式不同可以选择:
- Prerouting:路由前,常用于标记策略和端口路由
- Input:进入路由器的数据
- Foreward:通过路由转发,用于修改 TTL、 TCP-MSS 和流量控制规则
- Output:数据输出
- Prostrouting:路由后
RouterOS 中的 IP firewall 主要由 3 个规则部分组成 Mangle、 Filter、 NAT ,而 Address-list 常用于地址列表分类。 Mangle 通过标记特定的 IP 数据流后,为 Filter、 NAT 和、路由、 Queue 提供标记后的 IP 数据流
标记 IP 数据流的三种类型,这三种类型会在各种应用中多次出现,特别是 Queue 的流量控制和 ip route 的路由:
- Mark-connection:标记所有 IP 流的连接
- Mark-packet:标记 IP 流中数据包
- Mark-routing:标记 IP 流中 IP 数据包的路由信息
三种类型的关系,所有的在 IP 数据包传输前,首先需要通过建立 TCP/UDP 连接,进行传输。所以当数据通过 IP 流进入 Mangle 后,建立相应的连接标记,并从连接标记中提取数据包,做处理。图示如下:
Mangle 应用
Peer-to-Peer 传输标记
保证优质的网络连接,如 VoIP 和 HTTP 等为最优先级,将 P2P 的优先级设置为最低 RouterOS QOS 操作首先使用 mangle 标记不同类型的传输,然后把它们放入的 queues 做不同的限制。下面的事例是强迫 P2P 的总的传输不能超过 1Mbps,其他的传输连接则扩大连接带宽和优先级:
1 | [admin@MikroTik] > /ip firewall mangle add chain=forward p2p=all-p2p action=mark-connection new-connection-mark=p2p_conn |
Mangle 限制 2 级代理
通过 mangle 限制 2 级代理, 思路是修改 TTL 值,让路由级数减少, 但对端口的 http 代理无效,进入 forward链表指定 in-interface 或者指定目标数据到内往的 IP 地址,即 dst-address 或 dst-address-list 等参数来修改到达目标的 TTL 值为 1
1 | [admin@MikroTik] /ip firewall mangle> add chain=forward out-interface=lan action=change-ttl new-ttl=set:1 |