【发布时间】:2018-04-07 02:33:27
【问题描述】:
我想使用“busybox”、“Linux 版本 2.6.30.9”、“tc 实用程序、iproute2-ss060323”、“iptables v1.3.5”丢弃路由器的 wlan0 设备上的输出数据包。
-
我做什么:
创建 qdisc 层次结构的命令:
tc qdisc add dev wlan0 root handle 1: htb default 0 tc class add dev wlan0 parent 1: classid 1:1 htb rate 3mbit ceil 3mbit burst 15k
tc class add dev wlan0 parent 1:1 classid 1:10 htb rate 100kbps ceil 100kbps burst 15k tc class add dev wlan0 parent 1:1 classid 1:20 htb rate 84kbps ceil 84kbps burst 15k tc class add dev wlan0 parent 1:1 classid 1:30 htb rate 200kbps ceil 200kbps burst 15k tc qdisc add dev wlan0 parent 1:10 pfifo tc qdisc add dev wlan0 parent 1:20 pfifo tc qdisc add dev wlan0 parent 1:30 pfifo
检查数据包统计信息,因为在 1:10,1:20,1:30 类中没有收到任何数据包
# tc -s -d qdisc show dev wlan0
qdisc htb 1: r2q 10 default 0 direct_packets_stat 3252 ver 3.17
Sent 4494542 bytes 3262 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo 8001: parent 1:10 [Unknown qdisc, optlen=4]
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo 8002: parent 1:20 [Unknown qdisc, optlen=4]
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo 8003: parent 1:30 [Unknown qdisc, optlen=4]
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
添加了过滤器来引导 1:30 班的交通,有速度限制。
我希望这些过滤器能够捕获所有流向我的 ip 为 192.168.1.202 的笔记本电脑的流量。
tc filter add dev wlan0 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.1.202/32 classid 1:30
tc filter add dev wlan0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.202/32 classid 1:30
让我们检查统计数据
正如你所见,1:30 课的千字节数减少了,但同时我尝试用我的笔记本电脑下载 10 兆字节
即添加的两个过滤器无法捕获从路由器到我的笔记本电脑的所有流量。
# tc -s -d qdisc show dev wlan0
qdisc htb 1: r2q 10 default 0 direct_packets_stat 9754 ver 3.17
Sent 14208062 bytes 9928 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo 8001: parent 1:10 [Unknown qdisc, optlen=4]
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo 8002: parent 1:20 [Unknown qdisc, optlen=4]
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo 8003: parent 1:30 [Unknown qdisc, optlen=4]
Sent 26713 bytes 164 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
删除过滤器并添加新过滤器
tc filter del dev wlan0 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.1.202/32 classid 1:30
tc filter del dev wlan0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.202/32 classid 1:30
tc filter add dev wlan0 parent 1:0 protocol ip prio 50 u32 match ip src 0.0.0.0/0 flowid 1:30
让我们检查统计数据
你在 1:30 看到丢包,我也尝试用 wget 下载,速度只有 200kbps。
即最后添加的过滤器起作用并将所有流量引导到 1:30 类
# tc -s -d qdisc show dev wlan0
qdisc htb 1: r2q 10 default 0 direct_packets_stat 9796 ver 3.17
Sent 25807228 bytes 17790 pkt (dropped 276, overlimits 9955 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo 8001: parent 1:10 [Unknown qdisc, optlen=4]
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo 8002: parent 1:20 [Unknown qdisc, optlen=4]
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo 8003: parent 1:30 [Unknown qdisc, optlen=4]
Sent 11616972 bytes 7984 pkt (dropped 276, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
2,我得到了什么? 我可以过滤所有流量并将其定向到 1:30 类并限制速度。 我无法过滤从路由器到笔记本电脑的 WGET 流量。 3. 问题: 如何创建仅捕获从路由器到我的笔记本电脑的 1:30 类流量的过滤器? 如何查看使用 'tc filter add ...' 添加的所有过滤器?
【问题讨论】: