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

tc и samba


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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

Что говорит детальный вывод статистики(ключ -d)?

А так же, если не ошибаюсь, самба работает по 138-ому порту UDP, что надо бы указать явно.

Ссылка на комментарий
Поделиться на другие сайты

маркирую пакеты в 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

Ссылка на комментарий
Поделиться на другие сайты

tcpdump ничего про UDP не говорит - все TCP протокол

да и iptables -p tcp ... LOG --log-prefix "samba" выдает TCP PORT 139 вот я и подумал ...

хорошо попробую UDP

Ссылка на комментарий
Поделиться на другие сайты

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

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

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 эмодзи.

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

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

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

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