1

У меня есть Ubuntu Router с 2 сетевыми интерфейсами. eth0 - это частная сеть, а eth1 - это интернет. То, что я хочу, это следующее: Все пакеты (в основном udp), поступающие с указанного частного ip (например, 192.168.0.4) на заданный порт назначения (например, 5200), должны быть задержаны на 500 мс.

Я попробовал несколько вещей, включая это, это и это. Единственный результат - задержка не добавляется.

Если возможно, я хочу решить, используя iptables какие пакеты следует отложить.

Вот некоторые из ошибок, которые я получил:

root@ubuntu:~# tc qdisc del dev eth1 root
root@ubuntu:~# tc qdisc ls dev eth1
qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
root@ubuntu:~# tc qdisc add dev eth1 root handle 1: htb default 20
root@ubuntu:~# tc class add dev eth1 parent 1: classid 1:1 pfifo_fast
Error: Qdisc "pfifo_fast" is classless.
root@ubuntu:~# tc class add dev eth1 parent 1: classid 1:1 prio
Error: Qdisc "prio" is classless.
root@ubuntu:~# tc class add dev eth1 parent 1: classid 1:10 netem delay 500ms
Error: Qdisc "netem" is classless.
root@ubuntu:~# tc class add dev eth1 parent 1:10 netem delay 500ms
Error: Qdisc "netem" is classless.

Что я делаю неправильно?

1 ответ1

1

вы пытаетесь применить 'netem' к классу, а не к qdisc.

Основная идея заключается в том, что вам нужно создать корневой qdisc, (как вы это сделали) применить класс к тому, у которого могут быть дочерние классы, эти дочерние классы должны иметь тот же метод трафика, что и родительский (в данном случае htb). тогда к этим листовым классам может быть применен qdisc, и именно здесь вы должны указать netem (или pfifo_fast, или другие классные или бесклассовые формы) и его настройки.

(или, если вы хотите быть глобальным, вы можете применить netem к корневому qdisc без использования класса (следовательно, "netem" является бесклассовым »))

root qdisc -> внутренний (родительский) класс -> листовой (дочерний) класс -> qdisc

вот какой-то старый документ tc, который я нашел довольно ясным, хотя netem явно не был вариантом, когда он был написан или обновлен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .