Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Помогите настроить маршрутизацию и шейпер  (Прочитано 1756 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн coolman

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
  • :)
    • Просмотр профиля
помажите добре люди, а то в голове каша, с правилами, таблицами, классами и т.п :-(
освоил ипитаблес, а вот маршрутизацию не могу, очень мало хелпов
стоит ubuntu 10.10 скоро 11.04 будет, но не суть.
опишу что хочу:
192.168.0.1/24 eth1 Локалка
87.224.128.11 eth0 Ip внешнего интерфейса, шлюз 87.224.128.1

маршрутизация(используя утилиту ip, таблицы и правила):
надо в сеть 87.224.100.1/24 напрямую через 87.224.128.11 выходить не через шлюз
надо в сеть 87.224.200.1/24 напрямую через 87.224.128.11 выходить не через шлюз


шейпер(используя утилиту tc)(хочу скорость регулировать не через iptables):
все входящие на порты udp 27015-27030 с наивысшим приоритетом
192.168.0.2 без ограничений в инет выходить
192.168.0.3, выпускать в подсеть 87.224.128.0/17 и 90.157.0.0/17
не больше 60 мегабит, при не загруженности сети все 100 мегабит, в остальные подсети 10 мегабит.
192.168.0.4 тоже самое, можно скорость разделить между 192.168.0.3

я на примерах лучше схватываю
iptables

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
освоил ипитаблес, а вот маршрутизацию не могу
Мне страшно за Ваши iptables-ы

87.224.128.11 eth0 Ip внешнего интерфейса, шлюз 87.224.128.1
А масочку можно ещё озвучить?

маршрутизация(используя утилиту ip, таблицы и правила):
надо в сеть 87.224.100.1/24 напрямую через 87.224.128.11 выходить не через шлюз
надо в сеть 87.224.200.1/24 напрямую через 87.224.128.11 выходить не через шлюз
Что-то мну подсказывает, что нужно, как минимум, иметь адрес в этих сетях (например алиасы)
Хотя может и маской на eth0 перекрывается, но что-то мне подсказывает, что нет.

Оффлайн coolman

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
  • :)
    • Просмотр профиля
освоил ипитаблес, а вот маршрутизацию не могу
Мне страшно за Ваши iptables-ы

87.224.128.11 eth0 Ip внешнего интерфейса, шлюз 87.224.128.1
А масочку можно ещё озвучить?

маршрутизация(используя утилиту ip, таблицы и правила):
надо в сеть 87.224.100.1/24 напрямую через 87.224.128.11 выходить не через шлюз
надо в сеть 87.224.200.1/24 напрямую через 87.224.128.11 выходить не через шлюз
Что-то мну подсказывает, что нужно, как минимум, иметь адрес в этих сетях (например алиасы)
Хотя может и маской на eth0 перекрывается, но что-то мне подсказывает, что нет.

все адреса для примера, маску сами можете придумать. я  просил примеры привести, что бы хоть как то мог разобраться, подсети можно сказать в один свич включены, поэтому и напрямую в них можно попасть.

пока придумал что-то на подобии этого:
echo 100 T >> /etc/iproute2/rt_tables
ip route add 87.224.100.0/24 dev eth0 src 87.224.128.31 table T
ip route add 87.224.200.0/24 dev eth0 src 87.224.128.31 table T
ip rule add from 87.224.128.31 table T
или так
ip rule add from 87.224.100.0/24 table T
как заворачивать  нужную подсеть  в таблицу -T?
что бы на выход на вход и на форвадинг, что бы с таблицей T работали только нужные подсети, в ипитаблз маркировать все или что?
 :-\ :idiot2:
нашел примеры:
ip route add 127.0.0.0/8 dev lo table T1            
ip route add default via 78.26.188.1 dev eth1 table T1
спрашивается зачем 127.0.0.0/8 и шлюз по умолчанию в левой таблице, тоесть тупо туда весь трафик заворачивается? А если у меня есть другая таблица и там другие маршруты для других подсетей например, как мне ее тогда выбрать?
Я знаю что разберусь, но пока ни чего не понимаю, сравните http://ru.wikipedia.org/wiki/Iptables и http://ru.wikipedia.org/wiki/Iproute2
в первой все разжевано, во второй ни слова, как будто у нас маршрутизацией ни кто не занимается.
« Последнее редактирование: 07 Марта 2011, 08:39:41 от coolman »
iptables

Оффлайн antaeus

  • Участник
  • *
  • Сообщений: 140
    • Просмотр профиля
никто ничего не подскажет, т.к. пока не понятно что ты хочешь сделать.

на счет tc -тебе нужен только приоритет или гарантированная полоса для определенных пакетов?
если только приоритет читай про tc prio, если гарантированная полоса то tc htb. c помощью tc создаются очереди, с помощью iptables помечаются пакеты которые попадают в очереди на основе меток TOS

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
будет проще оперируя не сферическим конем в вакууме, а реальными адресами и сетями.
и сервер форума кабинета указывать так же не надо.

Оффлайн coolman

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
  • :)
    • Просмотр профиля
никто ничего не подскажет, т.к. пока не понятно что ты хочешь сделать.

на счет tc -тебе нужен только приоритет или гарантированная полоса для определенных пакетов?
если только приоритет читай про tc prio, если гарантированная полоса то tc htb. c помощью tc создаются очереди, с помощью iptables помечаются пакеты которые попадают в очереди на основе меток TOS
мне и ограничение и распределение скорости надо, как для локальной сети так и для отдельных Ip, где можно почитать про tc prio и tc htb подробно и на примерах?
iptables


Оффлайн coolman

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
  • :)
    • Просмотр профиля
https://forum.ubuntu.ru/index.php?topic=33853.0
http://www.google.ru/#sclient=psy&hl=en&newwindow=1&q=tc%20htb%20example&aq=1&aqi=g2g-v3&aql=&oq=&pbx=1&fp=36ca19217d9c8f6f&pf=p&pdl=300
я почитал и ни хрена не понял и еще больше запутался, чувствую что близко, но не дотягиваю, можно хоть пару примеров хоть?
iptables

Оффлайн coolman

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
  • :)
    • Просмотр профиля
короче вот что сделал:

#!/bin/bash

# "Очищаем" интерфейс eht1
tc qdisc del dev eth1 root

# Создаем заново дисциплину и указываем дефолтный класс
tc qdisc add dev eth1 root handle 1:0 htb default 13


RATE_OUT=99


# Создаем общий для клиентов класс
tc class add dev eth1 parent 1:0 classid 1:1 htb rate $[$RATE_OUT/1]Mbit ceil $[$RATE_OUT/1]Mbit



# Правила мои правила
tc class add dev eth1 parent 1:1 classid 1:10 htb rate $[$RATE_OUT/4]Mbit ceil $[$RATE_OUT/1]Mbit prio 1
tc class add dev eth1 parent 1:1 classid 1:11 htb rate $[$RATE_OUT/4]Mbit ceil $[$RATE_OUT/1]Mbit prio 2
tc class add dev eth1 parent 1:1 classid 1:12 htb rate $[$RATE_OUT/4]Mbit ceil $[$RATE_OUT/1]Mbit prio 3
tc class add dev eth1 parent 1:1 classid 1:13 htb rate $[$RATE_OUT/4]Mbit ceil $[$RATE_OUT/1]Mbit prio 4
tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth1 parent 1:11 handle 11: sfq perturb 10
tc qdisc add dev eth1 parent 1:12 handle 12: sfq perturb 10
tc qdisc add dev eth1 parent 1:13 handle 13: sfq perturb 10


# комп 1
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.2 match ip protocol 1 0xff classid 1:10
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.2 match ip protocol 17 0xff match ip sport 27016 0xfffe classid 1:10 # remote cs server
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.2 match ip protocol 17 0xff match ip dport 27016 0xfffe classid 1:10 # our cs server
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.2 match ip protocol 17 0xff match ip sport 27017 0xfffe classid 1:10 # remote cs server
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.2 match ip protocol 17 0xff match ip dport 27017 0xfffe classid 1:10 # our cs server
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.2 match ip protocol 17 0xff match ip sport 27018 0xfffe classid 1:10 # remote cs server
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.2 match ip protocol 17 0xff match ip dport 27018 0xfffe classid 1:10 # our cs server
tc filter add dev eth1 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.0.2 match ip protocol 6 0xff match ip sport 22 0xfffe classid 1:10 # remote ssh server
tc filter add dev eth1 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.0.2 match ip protocol 6 0xff match ip dport 22 0xfffe classid 1:10 # our ssh server
tc filter add dev eth1 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.0.2 match ip protocol 6 0xff match ip sport 10000 0xfffe classid 1:10
tc filter add dev eth1 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.0.2 match ip protocol 6 0xff match ip dport 10000 0xfffe classid 1:10
tc filter add dev eth1 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.0.2 match ip protocol 6 0xff match ip sport 443 0xfffe classid 1:10
tc filter add dev eth1 parent 1:0 protocol ip prio 3 u32 match ip dst 192.168.0.2 match ip protocol 6 0xff match ip sport 80 0xfffe classid 1:10
tc filter add dev eth1 parent 1:0 protocol ip prio 3 u32 match ip dst 192.168.0.2 match ip protocol 6 0xff match ip dport 80 0xfffe classid 1:10
tc filter add dev eth1 parent 1:0 protocol ip prio 4 u32 match ip dst 192.168.0.2 match ip protocol 6 0xff match ip sport 21 0xfffe classid 1:10
tc filter add dev eth1 parent 1:0 protocol ip prio 4 u32 match ip dst 192.168.0.2 match ip protocol 6 0xff match ip dport 21 0xfffe classid 1:10


# комп 2
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.3 match ip protocol 6 0xff match ip sport 80 0xfffe classid 1:11
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.3 match ip protocol 6 0xff match ip dport 80 0xfffe classid 1:11
tc filter add dev eth1 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.0.3 match ip protocol 6 0xff match ip sport 21 0xfffe classid 1:11
tc filter add dev eth1 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.0.3 match ip protocol 6 0xff match ip dport 21 0xfffe classid 1:11


# комп 3
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.4 match ip protocol 6 0xff match ip sport 80 0xfffe classid 1:11
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.4 match ip protocol 6 0xff match ip dport 80 0xfffe classid 1:11
tc filter add dev eth1 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.0.4 match ip protocol 6 0xff match ip sport 21 0xfffe classid 1:11
tc filter add dev eth1 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.0.4 match ip protocol 6 0xff match ip dport 21 0xfffe classid 1:11
суть вот в чем логи забиты:
HTB: quantum of class 10011 is big. Consider r2q change.
делаю например:
tc class add dev eth1 parent 1:1 classid 1:10 htb rate $[$RATE_OUT/4]Mbit ceil $[$RATE_OUT/2]Mbit prio 1

в логах все гуд, но скорость не поднимается выше половины RATE_OUT и не заимствует из родительского класса почему?
И еще такой глюк:
Когда качает по фтп например ком 192.168.0.2 который подключен к классу 10 с самым высоким приоритетом, все гуд, но если начинает закачку по фтп например 192.168.0.4, скорость не делится по полам, не отдается большая скорость 192.168.0.2, а все с точностью до наоборот, всю скорость забирает 192.168.0.4 а 192.168.0.2 скорость закачки резко снижается, бред какой-то, я запутался, помогите.
eth1 в локалку смотрит eth0 в инет.
Хочу что бы наивысший приоритет был у 192.168.0.2 что бы udp над веб и фтп преобладали, 192.168.0.3 и 192.168.0.4 делили между собой корость как и с 192.168.0.2, но 192.168.0.2 приоритет все равно выше, если кто то не занимает свою полосу,то она отдавалась другиим, что бы тот кто пользовался занимал всю скорость до 100 мегабит.
« Последнее редактирование: 06 Мая 2011, 22:23:58 от coolman »
iptables

Оффлайн coolman

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
  • :)
    • Просмотр профиля
обидно всетаки, что не кто не в курсе что да как  :-\
iptables

 

Страница сгенерирована за 0.03 секунд. Запросов: 25.