У меня есть формирование трафика с tc и htb, и все работает нормально для IPv4. Теперь я хочу ограничить полосу пропускания для входящего трафика ssh / sftp IPv6 до некоторой разумной суммы, чтобы она не мешала более критическому трафику. Короче ничего не получилось:
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...
Как один трафик формирует данные IPv6 с помощью tc?
По крайней мере, на моем модеме / маршрутизаторе (Actiontec C1000A, BusyBox v1.17.2, версия ядра 2.6.30) я смог сопоставить непосредственно с IPv6-адресом назначения, используя tc
(т.е. нет необходимости в ip6tables
для маркировки пакетов):
tc class add dev eth0 parent 1:0 classid 1:14 htb rate 3000kbit ceil 3000kbit prio 3
tc filter add dev eth0 parent 1:0 protocol ipv6 prio 16 \
u32 match ip6 dst $IPV6_ADDR flowid 1:14
Итак, это предположение, но я думаю, что следующее сработает:
tc filter add dev eth0 parent 1:0 protocol ipv6 prio 16 u32 match ip6 dport 80 flowid 1:14
Или, используя свой ip6tables
искажение:
tc filter add dev eth0 parent 1:0 protocol ipv6 handle 14 fw flowid 1:14
К сожалению, tc пока не работает для IPv6.
Цитата:
База данных политики маршрутизации (RPDB) заменила структуру маршрутизации и адресации IPv4 в ядре Linux, что привело ко всем замечательным функциям, описанным в этом HOWTO. К сожалению, структура IPv6 в Linux была реализована вне этой базовой структуры. Хотя они и разделяют некоторые возможности, основная структура RPDB не участвует в структурах адресации и маршрутизации IPv6.
Это обязательно изменится, нам просто нужно подождать еще немного.
Источник: http://lartc.org/lartc.html#AEN1446
Если кто-нибудь знает, исправлено ли это в определенной версии ядра или есть план исправить это в будущей версии, не стесняйтесь обновлять!
Возможный обходной путь (пока я не проверял) - туннелировать трафик IPv6 (туннель SIT) и фильтровать пакеты IPv4, содержащие пакеты IPv6.