Вообщем есть домашняя сеть:Шлюз FreeBSD 7.2 с настроенным packet filter
На шлюзе две сетевые
rl0 - локальная сеть
tun0 - public ip, выход в интернет
Есть 5 пользователей, которые через этот шлюз ходят в Интернет:
# Разрешаем пакетам уходить и возвращаться = ВПУСКАЕМ НА ЛОКАЛЬНОМ rl0:
pass in on $int_if from $trusted_lan to any keep state
Максимальная скорость (по тарифу провайдера) 999 Бит в секунду, т.е ~ 124 Кило бита в секунду.
Проблема в том, что когда кто то начинает качать torrent`ы, связь сильно ухудшаеться.
Хотелось бы средствами altq все это поровну (124 килобита / 5 чел.) поделить, с возможностью занятия свободной полосы в случае если кому то она не нужна.
Хотелось бы сделать так:
Разделить служебный трафик и всякий другой (www, ftp, pop, imap, smtp, torrent)трафик идущий к/от пользовательских машин. Таким образом, чтобы служебный всегда пропускался первым т.е. имел самый высокий приоритет а трафик от пользователей уже делился поровно относительно того что осталось от служебного.
1. служебный трафик ( ssh, DNS с сервера (кэширующий bind), все ответы ACK)
2. трафик от юзеров. за каждым юзером один компьютер.
Как это Логически и Техничеки правильно сделать ?
Какую и где очередь(и) нужно использовать (CBQ, PRIQ) на интерфейсах (внеш., внутр.)?
Предположим мы сделаем такую настройку на внешнем интерфейсе. Но здесть возникает вопрос: правильно ли она будет работать, будет ли освобождаться поровну полоса для пользователей, когда служебного трафика практически не будет ? Ведь канал то маленький.
Ниже я описал пример, он скорее всего не рабочий. Так как ранее я никогда не использовал шейперы и altq в частности.
взять например пример из http://www.lissyara.su/?id=1833
# реальная полоса 1Мбит, а здесь нужно ставить на несколько % меньше
# ЭТО *ОЧЕНЬ* ВАЖНО! Иначе шейпинг не будет работать!!
altq on $ext_if cbq bandwidth 970Kb queue \
{ qboss, qbuh, qadmin, qWinPeak, qssh, qdns, qntp, qack }
queue qboss bandwidth 38% priority 2 cbq ( borrow )
queue qbuh bandwidth 18% priority 2 cbq ( borrow )
queue qadmin bandwidth 15% priority 2 cbq ( borrow )
queue qWinPeak bandwidth 12% priority 3 cbq ( default borrow )
queue qssh bandwidth 8% priority 4 cbq ( borrow )
queue qdns bandwidth 2% priority 5 cbq ( borrow )
queue qntp bandwidth 2% priority 7 cbq ( borrow )
queue qack bandwidth 5% priority 6 cbq ( borrow )
В этом примере показана ситуация деления 1 МБит, хотя 1МБит совсем не равен 970 Kb-ам
Поэтому непонятно как оно работает ;(
Хотя я предполагал сделать по тому же принципу, только у меня будет 5 пользователей(машин со статическими ip) и служебный трафик.
Но ведь полоса то всего 124 кБита.
Так что ломаю голову вот.
Помогите пожалуйста профессиональным советом.