TC 和 IPTABLES 规则无法反映在本地 AP 网络上的连接设备上

问题描述 投票:0回答:0

我正在尝试在 AP 网络上应用流量整形。 我已经配置了 R-pi,它在 Ubuntu 服务器 22.04 上作为 AP 使用 Dnsmasq 和 Hostapd 运行。我遵循了这里的文档:https://www.raspberrypi.com/documentation/computers/configuration.html#setting-up-a-routed-wireless-access-point.

我可以通过安卓设备连接到 AP。 在 R-pi 的终端上,我可以通过检查 dnsmasq 的租约或 arp 命令来确认设备已连接。

sudo arp -a
(192.168.4.14) at 6e:8e:f0:db:71:29 [ether] on wlan0
(192.168.0.4) at 88:66:5a:03:a0:6b [ether] on eth0
_gateway (192.168.0.1) at 80:22:a7:a2:6f:f4 [ether] on eth0

sudo cat /var/lib/misc/dnsmasq.leases
1677584702 6e:8e:00:db:71:00 192.168.4.14 DEVICE_BRAND 01:6e:8e:00:db:71:00

现在,我想申请基于源IP的网络类。 为了定义网络类,我使用 tc 命令如下。

# Set root qdisc (htb):
sudo tc qdisc add dev wlan0 root handle 1: htb default 1

# Set 1st class and its leaf (used netem)
sudo tc class add dev wlan0 parent 1: classid 1:1 htb rate 5mbit
sudo tc qdisc add dev wlan0 parent 1:1 handle 10: netem delay 300ms

# Set another class and its leaf (used netem)
sudo tc class add dev wlan0 parent 1: classid 1:2 htb rate 1mbit
sudo tc qdisc add dev wlan0 parent 1:2 handle 11: netem delay 999ms

然后我使用 mangle ip-table 标记连接设备的数据包。接着是 tc 过滤器将标记映射到所需的类。

# Mark packets from target IP
sudo iptables -t mangle -A PREROUTING -s 192.168.4.14 -j MARK --set-mark 2

# Mangle table after add rule
sudo iptables -t mangle -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
MARK       all  --  192.168.4.14         anywhere             MARK set 0x2

# Use filter to map the mark with desired class
sudo tc filter add dev wlan0 parent 1: protocol ip prio 1 handle 2 fw classid 1:2

到这里一切都很好。设备上的流量受到类应用的影响。我使用 Ping 实用程序进行了测试,以观察延迟增加 = 网络配置文件添加的数量。并运行速度测试以确认最大 d/l 速度。

现在,如果我想为这个设备的 IP 应用一个新类,或者可能更改现有类的任何参数,对设备上的流量行为没有影响。

我尝试过:

  • 用新的标记值更新类过滤器
  • 删除或重新创建 iptables 规则

以上均无效。该设备按照应用于其数据包的第一类继续工作。

但是,如果我从根类到叶类删除类,然后重新创建并重新应用 iptables 规则 + tc 过滤器,那么新的流量条件就会生效。

在那之后,如果我想再次更改参数,设备在流量参数中看不到任何更新。

对于主要部分,我已经按照此处的文档进行操作:

如果有人做过类似的事情或有任何其他提示可以帮助理解这种行为,请分享。

networking iptables traffic-simulation trafficshaping
© www.soinside.com 2019 - 2024. All rights reserved.