首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图同时塑造IPv4和IPv6的通信量会导致冲突

试图同时塑造IPv4和IPv6的通信量会导致冲突
EN

Server Fault用户
提问于 2019-08-11 09:40:47
回答 1查看 530关注 0票数 2

在我的服务器上,我试图设置流量整形,如果我是为IPv4或IPv6设置流量整形,那么一切都很好:针对该特定协议的所有筛选规则都已安装。但是,当试图对这两种规则进行格式化时,我都会收到错误,一些筛选规则将被拒绝,其中包含以下错误消息:

代码语言:javascript
复制
Error: Filter with specified priority/protocol not found.
We have an error talking to the kernel, -1

稍微修改一下tc规则,我发现了以下特点:当我只使用IPv4或IPv6成形活动时,我可以启用具有其他协议最高优先级的筛选器,而且它仍然有效,但一旦我尝试添加更多的规则,优先级较低的筛选器就会被拒绝,并带有上述错误消息。

因此,考虑到这可能是对可以附加的过滤器数量的模糊限制,我注释掉了每个协议优先级最低的两条规则,并让两条规则启用了最高优先级,但这也没有帮助。只安装另一个块中优先级最高的规则(即IPv6,因为IPv4的规则是先安装的),而优先级较低的规则被拒绝。

然后我试着反过来做,取消对其中一个协议的所有规则的注释,并注释掉其他协议的所有内容,除了优先级最低的规则,但这也被拒绝了。

TL;DR:试图在IPv4和IPv6上塑造网络流量都会失败,因为试图安装几个具有不同句柄和优先级的过滤器显然会引发某种冲突,这种冲突只允许安装具有最高优先级的过滤器。

该脚本的相关部分如下:

代码语言:javascript
复制
/sbin/tc qdisc add dev eth0 root handle 1:0 htb default 16
/sbin/tc class add dev eth0 parent 1:0 classid 1:20 htb rate 102000kbit ceil 102000kbit
/sbin/tc class add dev eth0 parent 1:20 classid 1:1 htb rate 25kbit ceil 102000kbit prio 0 quantum 3000
/sbin/tc class add dev eth0 parent 1:20 classid 1:2 htb rate 25kbit ceil 102000kbit prio 1 quantum 3000
/sbin/tc class add dev eth0 parent 1:20 classid 1:3 htb rate 10200kbit ceil 102000kbit prio 2 quantum 3000
/sbin/tc class add dev eth0 parent 1:20 classid 1:4 htb rate 20400kbit ceil 102000kbit prio 3 quantum 3000
/sbin/tc class add dev eth0 parent 1:20 classid 1:16 htb rate 71350kbit ceil 102000kbit prio 4 quantum 3000
/sbin/tc qdisc add dev eth0 parent 1:4 hhf
/sbin/tc qdisc add dev eth0 parent 1:16 hhf
/sbin/tc filter add dev eth0 parent 1:0 prio 0 protocol ip handle 1/0xF fw flowid 1:1
/sbin/tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 2/0xF fw flowid 1:2
/sbin/tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 3/0xF fw flowid 1:3
/sbin/tc filter add dev eth0 parent 1:0 prio 3 protocol ip handle 4/0xF fw flowid 1:4
/sbin/tc filter add dev eth0 parent 1:0 prio 0 protocol ipv6 handle 1/0xF fw flowid 1:1
/sbin/tc filter add dev eth0 parent 1:0 prio 1 protocol ipv6 handle 2/0xF fw flowid 1:2
/sbin/tc filter add dev eth0 parent 1:0 prio 2 protocol ipv6 handle 3/0xF fw flowid 1:3
/sbin/tc filter add dev eth0 parent 1:0 prio 3 protocol ipv6 handle 4/0xF fw flowid 1:4

我正在使用iptables为过滤器适当地标记网络数据包。

  • 优先级0:小数据包(大小可达128个字节)和DNS (也适用于IPv6 NDP)
  • 优先事项1:互动SSH
  • 优先事项2: Portmapper/NFS
  • 优先事项3: IPsec
  • 批量通信没有专门的过滤器,并且获得最低优先级。

现在我不知道这到底是怎么回事。如果我在这里犯了一个错误,我现在看不到树木的森林。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-08-11 10:21:15

过滤器优先级并不是特定于家庭的。

因此,创建过滤器的命令应该如下所示:

代码语言:javascript
复制
/sbin/tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 1/0xF fw flowid 1:1
/sbin/tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 2/0xF fw flowid 1:2
/sbin/tc filter add dev eth0 parent 1:0 prio 3 protocol ip handle 3/0xF fw flowid 1:3
/sbin/tc filter add dev eth0 parent 1:0 prio 4 protocol ip handle 4/0xF fw flowid 1:4
/sbin/tc filter add dev eth0 parent 1:0 prio 5 protocol ipv6 handle 1/0xF fw flowid 1:1
/sbin/tc filter add dev eth0 parent 1:0 prio 6 protocol ipv6 handle 2/0xF fw flowid 1:2
/sbin/tc filter add dev eth0 parent 1:0 prio 7 protocol ipv6 handle 3/0xF fw flowid 1:3
/sbin/tc filter add dev eth0 parent 1:0 prio 8 protocol ipv6 handle 4/0xF fw flowid 1:4
票数 4
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/978767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档