tc в Ubuntu

Содержание
Введение
Установка
Пример
Удалить правило
Изучить существующие правила
Ограничить скорость соединения

Введение

Установка

apt install -y tc

Пример

Выполним пинг сайта topbicycle.ru

ping www.topbicycle.ru

PING www.topbicycle.ru (87.236.16.208) 56(84) bytes of data. 64 bytes from ssl.kirk.beget.com (87.236.16.208): icmp_seq=1 ttl=63 time=29.8 ms 64 bytes from ssl.kirk.beget.com (87.236.16.208): icmp_seq=2 ttl=63 time=35.3 ms 64 bytes from ssl.kirk.beget.com (87.236.16.208): icmp_seq=3 ttl=63 time=33.3 ms 64 bytes from ssl.kirk.beget.com (87.236.16.208): icmp_seq=4 ttl=63 time=41.0 ms

Ping приходит примерно через каждые 30 ms

Нужно узнать через какой сетевой интерфейс идёт подключение во внешний интернет.

Сделать это можно с помощью iftop или nethogs

В этом примере нужный интерфейс - enp0s3

tc -s qdisc ls dev enp0s3

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 Sent 278060 bytes 3193 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0

Зададим задержку в 100 ms

tc qdisc add dev enp0s3 root netem delay 100ms

Теперь, если выполнить ping запросы пойдут на 100 ms медленнее

ping www.topbicycle.ru

PING www.topbicycle.ru (87.236.16.208) 56(84) bytes of data. 64 bytes from ssl.kirk.beget.com (87.236.16.208): icmp_seq=1 ttl=63 time=130 ms 64 bytes from ssl.kirk.beget.com (87.236.16.208): icmp_seq=2 ttl=63 time=129 ms 64 bytes from ssl.kirk.beget.com (87.236.16.208): icmp_seq=3 ttl=63 time=127 ms 64 bytes from ssl.kirk.beget.com (87.236.16.208): icmp_seq=4 ttl=63 time=126 ms

Удалить правило

Чтобы удалить ограничение из предыдущего примера нужно выполнить

sudo tc qdisc del dev enp0s3 root

Изучить существующие правила

Выполните

tc qdisc show

qdisc noqueue 0: dev lo root refcnt 2 qdisc cbq 1: dev enp0s3 root refcnt 2 rate 100Mbit (bounded,isolated) prio no-transmit qdisc pfifo_fast 0: dev enp0s8 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev enp0s9 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev enp0s10 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc noqueue 0: dev virbr0 root refcnt 2 qdisc pfifo_fast 0: dev virbr0-nic root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

Ограничить скорость соединения

Выполните

#!/bin/bash TC=/usr/sbin/tc DEV=enp0s8 LIMIT=3mbit DST_CIDR=192.168.56.109/24 U32="$TC filter add dev $DEV protocol ip parent 1:0 prio 1 u32" create () { echo "== SHAPING INIT ==" $TC qdisc add dev $DEV root handle 1:0 htb \ default 30 $TC class add dev $DEV parent 1:0 classid \ 1:1 htb rate $LIMIT $U32 match ip dst $DST_CIDR flowid 1:1 echo "== SHAPING CONFIG DONE ==" } clean () { echo "== CLEANUP INIT ==" $TC qdisc del dev $DEV root echo "== CLEANUP DONE ==" } clean create

Похожие статьи
Настройка сети
Ubuntu
ip
Добавить сетевой интерфейс
etc/hosts
Firewall
iftop: Мониторинг сети
nethogs: Мониторинг сети
tc: Контроль за трафиком
iperf: Измерение скорости сети
Сгенерировать UID для интерфейса
Bash
SCP: обмен файлами;
SSH: удалённый доступ
Сокеты
C++

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: