Я пытаюсь настроить формирование трафика на шлюзе Linux, как написано здесь . Сценарий должен быть настроен, потому что у меня есть несколько интерфейсов локальной сети. Поэтому для формирования стороны локальной сети я планирую создать псевдоустройство ifb следующим образом:
modprobe ifb
ip link set dev ifb0 up
/sbin/tc qdisc add dev $WAN_INTERFACE ingress
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
Сценарий из упомянутого выше репозитория gist имеет следующие строки:
/sbin/tc qdisc add dev $WAN_INTERFACE handle ffff: ingress
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip prio 1 u32 match ip sport $INTERACTIVE_PORT 0xffff flowid :1
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip prio 1 u32 match ip dport $INTERACTIVE_PORT 0xffff flowid :1
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip prio 5 0 u32 match ip src 0.0.0.0/0 police rate $MAX_DOWNRATE_INGRESS burst 20k drop flowid :2
Этот код и код создания интерфейса ifb плохо ладят друг с другом. Настроенный скрипт выполняется, но устройство ifb0 не показывает статистику трафика. Если я закомментирую код входящего репо (приведенный выше), тогда устройство ifb0 показывает количество переданных пакетов. Также эти строки не могут быть выполнены вместе:
/sbin/tc qdisc add dev $WAN_INTERFACE ingress
/sbin/tc qdisc add dev $WAN_INTERFACE handle ffff: ingress
Я получаю файл существует ошибка. Итак, как я могу формировать вход на WAN_INTERFACE и в то же время также формировать трафик, который идет в LAN через устройство ifb0?