IPv6 的 Linux tc 流量整形

Tho*_*mas 5 linux ipv6 traffic-shaping bandwidth-control

我已经使用 tc 和 htb 进行了流量整形,并且 IPv4 一切正常。现在我想将传入 IPv6 ssh/sftp 流量的带宽限制在合理的范围内,这样就不会干扰更关键的流量。简而言之,没有任何效果:

tc class add dev eth0 parent 1:0 classid 1:14 htb rate 3000kbit ceil 3000kbit prio 3

ip6tables -A POSTROUTING -t mangle -o eth0 -p tcp --dport 22 -j MARK --set-mark 14
tc filter add dev eth0 parent 1:0 protocol ip handle 14 fw flowid 1:14
# or
tc filter add dev eth0 parent 1:0 protocol ipv6 u32 match ip6 protocol 6 0xff match ip6 dport 22 0xffff flowid 1:14
# or variations of these...
Run Code Online (Sandbox Code Playgroud)

流量如何通过 tc 调整 IPv6 数据?

Jer*_*oen 1

不幸的是 tc 还不适用于 IPv6。

引用:

路由策略数据库 (RPDB) 取代了 Linux 内核中的 IPv4 路由和寻址结构,从而带来了本 HOWTO 描述的所有精彩功能。不幸的是,Linux 中的 IPv6 结构是在这个核心结构之外实现的。尽管它们确实共享一些设施,但基本的 RPDB 结构不参与或不参与 IPv6 寻址和路由结构。

这种情况肯定会改变,我们只需要再等一会儿。

资料来源: http: //lartc.org/lartc.html#AEN1446

如果有人知道这个问题是否从某个内核版本开始得到修复,或者是否有计划在未来版本中修复这个问题,请随时更新!

可能的解决方法(到目前为止我自己尚未测试)是对 IPv6 流量进行隧道传输(SIT 隧道)并过滤包含 IPv6 数据包的 IPv4 数据包。