Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Здравствуйте!

tc шейпит трафик на внутреннем интерфейсе т к внешних интерфейсов несколько

в результате получается что мы ограничиваем полосу пропускания для всего трафика идущего к клиенту туда же попадает и трафик от самбы т е пользователи качают внутренние ресурсы на скорости внешнего трафика

прочитал статьи про tc там написано что нужно фильтровать по порту 138

tc class add dev eth0 parent 1:1 ckassid 1:10 htb rate 50mbit ceil 100mbit

tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 138 0xffff flowid 1:10

не работает хотя класс очередь и фильтр создан и мы просматриваем его:

tc slass show dev eth0

tc qdisc show dev eth0

tc filter show dev eth0

как мне пропустить самбу на высокой скорости?

Опубликовано

маркирую пакеты в iptables:

iptables -t mangle -A postrouting -p tcp -m multiport --sports 137,138,139,445 -j mark --set-mark 10

пакеты маркируются нормально - смотрел ч/з:

iptables -t mangle -A postrouting -p tcp -m multiport --sports 137,138,139,445 -j log --log-prefix "samba"

а вот tc не стыкуется остается попробовать цепочку OUTPUT в iptables т к самба как локальное приложение (хотя что OUTPUT что POSTROUTING пакеты от локальных приложений одинаково проходят) и tc исправить на:

tc filter add ip protocol parent 1:0 handle 10 fw flowid 1:24

Опубликовано

разобрался с проблемой - причина была в том что пакеты маркируются несколько раз

у меня маркируются для мультироутинга что-то вроде:

iptables -t mangle -A prerouting -s 1.1.1.1 -j mark --set-mark 20

iptables -t mangle -A output -p udp -m multiport --sport 137,138 -j mark --setmark 50

iptables -t mangle -A output -p tcp -m multiport --sport 139,445 -j mark --setmark 50

смотрим таблицу mangle:

9 360 MARK all -- * * 1.1.1.1 !1.1.1.2 MARK set 0x14

3 180 MARK udp -- * * 1.1.1.2 1.1.1.1 multiport sports 137,138 MARK set 0x32

45 784 MARK tcp -- * * 1.1.1.2 1.1.1.1 multiport sports 139,445 MARK set 0x32

пакеты маркируются но в фильтр не попадают

tc filter add dev eth0 protocol ip parent 1:1 handle 50 fw flowid 1:24

tc -s -d qdisc ls

qdisc sfq 24: dev eth0 parent 1:24 limit 127p quantum 1514b flows 127/1024 perturb 10sec

Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)

rate 0bit 0pps backlog 0b 0p requeues 0

Segmentation fault

а если создать пользователя с новім адресом и не маркировать для роутинга (--set-mark 20) тогда все работает

странно что первый вариант не работает там ведь маркировка идет по другому условию

Опубликовано

мне нужно сказать фильтру чтобы отбирал все пакеты в которых адрес источника не есть такой а как это правильно сделать?

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip src !192.168.0.1

так ругается

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...