The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Тематический каталог: Шейпер ADSL для домашней сети (shaper ..., auto_topic (?), 03-Сен-09, (0) [смотреть все] +1

Сообщения [Сортировка по времени | RSS]


37. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth linux fedora)"  +/
Сообщение от hand (?), 20-Сен-09, 11:00 
Тестил скрипт через прозрачный прокси - работает. Почему то пришлось поднять RATE_OUT=5000 (реальная скорость 590кбит), т.к. отдавало клиенту только 10-20кбит при RATE_OUT=530.
Подскажите, пожалуйста, как включить (после шейпера) NAT для хостов в локалке, что бы были доступны другие сервисы/порты при данных в статье параметрах?
Ответить | Правка | Наверх | Cообщить модератору

38. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от Донченкоemail (ok), 20-Сен-09, 11:31 
У Вас получился правильный результат.
Если конечно Вы спутали кбит/с и кбайт/с.
Почему я так думаю? Да просто все (что я пользуюсь, точно) программы выдают скорость в кбайтах/с. Торрент, например. Тогда:
Смотрите пример правила для исходящего интерфейса:
tc class add dev $DEV_OUT parent 1:1 classid 1:23 htb rate $[$RATE_OUT/$NNN]kbit ceil $[$RATE_OUT/2]kbit prio 5

Команда ceil $[$RATE_OUT/2]kbit даст пользователю только половину от свободной полосы канала. И все! Т.е. с Ваших 590 получем (грубо) 59кБайт/с, делим на 2, получаем 29. Т.е. предел у пользователя 29. Но ведь он не один! Вот и получается, 10-20.
А своей командой RATE_OUT=5000 Вы попросту отключили шейпер, вернее урезали его функцию взаимодействия с провайдером. Ведь нужно не только делить полосу, но и не допустить у провайдера очереди - в этом и есть смысл назначения RATE_OUT ниже реальной пропускной способности. Иначе - тормоза по выходу (а в результате и по входу).
Т.е. хотите отдать весь свободный канал - уберите двойку, но не завышайте скорость!

По последнеме вопросу, разжуйте, пожалуйста на конкретном примере с указанием адресов и условий :-)

Ответить | Правка | Наверх | Cообщить модератору

40. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от hand (?), 20-Сен-09, 12:20 
Я Вас понял. При первых запусках скрипта все было в норме, только после многократных перезапусков (для подбора ширины канала) скорость стала неудовлетворительной, возможно я внес ошибку в скрипт. Меряю вот так http://www.speedtest.net/result/569938750.png
(подключен только один хост, т.е. отдает ~80% свободного канала и половину). На счет тормозов сказать не могу, нагрузка сейчас к удивлению очень мала.
Благодарю за подробный ответ.

Отвечу на свой вопрос (tnx bioname), внешний адрес выдается динамический:
sudo iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT

Ответить | Правка | Наверх | Cообщить модератору

41. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от Донченкоemail (ok), 20-Сен-09, 14:13 
>я внес ошибку в скрипт. Меряю вот так http://www.speedtest.net/result/569938750.png
>(подключен только один хост, т.е. отдает ~80% свободного канала и половину). На
>счет тормозов сказать не могу, нагрузка сейчас к удивлению очень мала.

Попробуйте начать с начала и менять по шагам, с проверкой. По себе знаю - сделаешь два изменения (сразу), потом трудно найти концы.

>Отвечу на свой вопрос (tnx bioname), внешний адрес выдается динамический:
>sudo iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE
>sudo iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT

Ладно, вот Вам кусочек нашей следующей статьи:

FirewallStart(){
    # Включаем перенаправление пакетов через ядро.
    echo 1 > /proc/sys/net/ipv4/ip_forward
    # Политики по умолчанию.
    $IPT -P INPUT DROP
    $IPT -P FORWARD DROP
    $IPT -P OUTPUT DROP
    #Пробрасываем обращения к DNS провайдеру
    # С вероятностью 50% на первый DNS
    # Или на  второй DNS, если первому не повезло
    $IPT -A PREROUTING -t nat -i $DEV_IN -p udp -m udp --dport 53 -m statistic --mode random --probability 0.50 -j DNAT --to-destin
    $IPT -A PREROUTING -t nat -i $DEV_IN -p udp -m udp --dport 53 -j DNAT --to-destination $DNS2:53
    # Разрешаем вход и выход всем пакетам, связанным с локальным интерфейсом lo
    $IPT -A INPUT -i lo -j ACCEPT
    $IPT -A OUTPUT -o lo -j ACCEPT
    ############################################################################
    # НАСТРОЙКА СОЕДИНЕНИЙ С СЕРВЕРОМ
    ############################################################################
    # Защита от атак с неправильными пакетами
    $IPT -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
    $IPT -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
    $IPT -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
    $IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
    $IPT -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
    $IPT -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
    # Разрешаем пакеты, относящиеся ко всем установленным соединениям
    $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    # Разрешаем вход и выход всем пакетам, относящимся к протоколу ICMP
    #$IPT -A INPUT -p icmp -j ACCEPT
    #$IPT -A OUTPUT -p icmp -j ACCEPT
    # !!!!!!!!!! ТОЛЬКО ЕСЛИ ВНУТРЕНЯЯ СЕТЬ ДОВЕРЕННАЯ !!!!!!!!!!!!!
    # Разрешаем пакеты, идущие из локальной сети на этот компьютер и
    # с этого компа в локальную сеть
    $IPT -A INPUT -i $DEV_IN -s $LOCAL_NET -j ACCEPT

    # Разрешаем соединения в соответствии с IN_ACCESS_LST и OUT_ACCESS_LST
# .................  тут логика разрешения
    ############################################################################
    # НАСТРОЙКА ТРАНЗИТНЫХ СОЕДИНЕНИЙ
    ############################################################################
    # Автоматически уменьшать размер передаваемого пакета. Важно для ADSL.
    $IPT -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS  --clamp-mss-to-pmtu
    # Разрешаем пакеты, относящиеся ко всем установленным соединениям
    $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    # Т.е. все что запрошено из интернета пользователем, разрешено к возвращению
    # Разрешаем транзитный icmp
    $IPT -A FORWARD -p icmp -j ACCEPT
    # Т.е. пинги
    # Создаем цепочки для сортировки транзитного трафика и направляем его в них
    $IPT -N allowip
    $IPT -N allowport
    $IPT -A FORWARD -s $LOCAL_NET -j allowip
    # Разрешаем доступ для клиентов указанных в LOCAL_IPS
    # если данная переменная пустая то разрешены все адреса из локальной сети

# .............. тут логика допуска
# Но Вам, для простоты:
         $IPT -A allowip -s $LOCAL_NET -j allowport

    # Накладываем ограничения на транзитные соединения – не более CONN_LIM от одного IP
    $IPT -A allowport -p tcp -m connlimit --syn --connlimit-above $CONN_LIM -j DROP

    # Разрешаем транзитные соединения по разрешенным портам
# ............... тут логика разрешения доступа с локальных машин к внешним портам
# Но для Вас можно просто, доступ ко всему:
    $IPT -A allowport -j ACCEPT

# Тут логика для проброса запросов из инета на внутренние машины:    
    # Например, для проброса торрента, вставить свои цифры и повторить сколько надо:
    $IPT -A FORWARD -i $DEV_OUT -d $ip  -p tcp -m tcp --dport $port1  -j ACCEPT
    $IPT -A FORWARD -i $DEV_OUT -d $ip  -p udp -m udp --dport $port1  -j ACCEPT
# где $ip - ip клиентской машины , $port1 - пробрасываемый порт (вставьте свои строчки

    # Маркируем syn пакеты
    $IPT -A PREROUTING -t mangle -p tcp --syn -j MARK --set-mark 1
    # Назначаем одинаковое время жизни для пакетов
    $IPT -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 64
    # NAT через динамический IP адрес.
    $IPT -t nat -A POSTROUTING -o $DEV_OUT -j MASQUERADE

В принципе - этого достаточно.

Ответить | Правка | Наверх | Cообщить модератору

42. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от hand (?), 20-Сен-09, 14:27 
>[оверквотинг удален]
>после многократных перезапусков (для подбора ширины канала) скорость стала неудовлетворительной, возможно
>я внес ошибку в скрипт. Меряю вот так http://www.speedtest.net/result/569938750.png
>(подключен только один хост, т.е. отдает ~80% свободного канала и половину). На
>счет тормозов сказать не могу, нагрузка сейчас к удивлению очень мала.
>
>Благодарю за подробный ответ.
>
>Отвечу на свой вопрос (tnx bioname), внешний адрес выдается динамический:
>sudo iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE
>sudo iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT

sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Ответить | Правка | К родителю #40 | Наверх | Cообщить модератору

43. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от Донченкоemail (ok), 20-Сен-09, 14:45 
>> Меряю вот так http://www.speedtest.net/result/569938750.png

По моему, все правильно! Исходящая скорость как раз 50% от исходящего канала - формулу я Вам писал. Ну уберите /2, раз она Вас так смущает из формулы и будет весь канал.

>>Отвечу на свой вопрос (tnx bioname), внешний адрес выдается динамический:
>>sudo iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE
>>sudo iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT
>
>sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

?
Я и так понял, не беспокойтесь.

Ответить | Правка | Наверх | Cообщить модератору

45. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от hand (?), 20-Сен-09, 21:41 
Возможно это баг системы. Но у меня не работает на 530kbit.
Я понимаю, что в килобайте 8 килобит. Скорость смотрю iptraf.
Скрипт переделывал заново (_xttp://home.ddns.mobi/tmp/adsl_qos.sh).
Ответить | Правка | Наверх | Cообщить модератору

46. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от Донченкоemail (ok), 20-Сен-09, 22:28 
1. Почему 127.0.0.1 попал в список локальных адресов? Ведь тогда он снижает гарантированную полосу на входящем шейпере. Ну да ладно, допустим хотим шейпить выход самого сервера.
2. LOCAL_IPS=(
[1]="127.0.0.1 2 2 80"
[2]="10.0.1.65 4 1 70"
[3]="10.0.1.71 4 1 50"
[4]="10.0.1.72 5 1 50"
3. RATE_OUT=550
4. Тогда предельная скорость, разрешенная пользователям:
[1]=550*0,8=440 кбит/с
[2]=550*0.7=385 кбит/с
[3]=550*0.5=275 кбит/с
[4]=275 кбит/с
Ну и где Вы видите 530кБит/с?
Или Ваши клиенты вместе с Вами позабивали канал?
Тогда вопрос: а без шейпера, какая скорость? Вы можете ведь четко наблюдать изменение? Сделайте это.
Если в скрипте есть ошибка,ее нужно исправить.
Ответить | Правка | Наверх | Cообщить модератору

47. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от hand (?), 20-Сен-09, 23:05 
>[оверквотинг удален]
>4. Тогда предельная скорость, разрешенная пользователям:
>[1]=550*0,8=440 кбит/с
>[2]=550*0.7=385 кбит/с
>[3]=550*0.5=275 кбит/с
>[4]=275 кбит/с
>Ну и где Вы видите 530кБит/с?
>Или Ваши клиенты вместе с Вами позабивали канал?
>Тогда вопрос: а без шейпера, какая скорость? Вы можете ведь четко наблюдать
>изменение? Сделайте это.
>Если в скрипте есть ошибка,ее нужно исправить.

Вот такая без шейпера(это минимум что показывало)http://www.speedtest.net/result/570047431.png и с шейпером http://www.speedtest.net/result/570321717.png. Запущен этот скрипт http://home.ddns.mobi/tmp/firewall, хотя на сам фаирволл ругается.

Ответить | Правка | Наверх | Cообщить модератору

48. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от Донченкоemail (ok), 20-Сен-09, 23:30 
>Вот такая без шейпера(это минимум что показывало)http://www.speedtest.net/result/570047431.png и с шейпером http://www.speedtest.net/result/570321717.png. Запущен
>этот скрипт http://home.ddns.mobi/tmp/firewall, хотя на сам фаирволл ругается.

1. На рисунках разное время. Поэтому они мало о чем говорят, это должны быть два снимка подрят, с шейпером и без.
2. Не совсем понятно, к какому трафику относится измеренное значение, уточните источник, и тип пакетов.
3. И просто измерьте скорость iptraf, (там где детали Вашего инет интерфейса) для двух вариантов ПОДРЯД, мне так будет понятнее.
Жду результатов.

По фаерволу. Ну еще бы ему не ругаться :-)
Этот текст нужно было поместить в функцию, где-то в середине текста, среди других функций:
FirewallStart(){
и т.д.
}
А саму функцию вызывать из:
case "$1" in
start)
    FirewallStart
...
stop)
    ShaperStopAll
    Marking "-D"
    FirewallStop

Соответственно:
FirewallStop(){
    # Выключить перенаправление пакетов через ядро.
    echo 0 > /proc/sys/net/ipv4/ip_forward
    # Сбрасывем все правила
    # Удаляем все цепочки
    $IPT -F
    $IPT -X
    $IPT -t nat -F
    $IPT -t nat -X
    $IPT -t mangle -F
    $IPT -t mangle -X
    # Открываем доступ к данному серверу. Доступ в интернет закрыт
    # т к отключен NAT и запрещена пересылка пакетов между интерфейсами.
    # Доступ из интернета к серверу так же запрещен
    # Использовать только для отладки. Не допускается использование в рабочем режиме
    $IPT -P INPUT DROP
    $IPT -P FORWARD ACCEPT
    $IPT -P OUTPUT ACCEPT
    # Разрешаем доступ из локальной сети
    $IPT -A INPUT -i $DEV_IN -j ACCEPT
    ############################################################################
}

Тоже помещаем в ПЕРЕДНЮЮ часть скрипта (функции описываются ДО вызова)

Ответить | Правка | Наверх | Cообщить модератору

49. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от Донченкоemail (ok), 21-Сен-09, 00:00 
Только что еще раз проверил работу шейпера, на исходящем канале.
У меня стоит ограничение для моей машины:
/sbin/tc class add dev ppp0 parent 1:1 classid 1:22 htb rate 25kbit ceil 420kbit prio 4
/sbin/tc filter add dev ppp0 parent 1:0 protocol ip prio 22 handle 22 fw flowid 1:22
(Это тестовый режим запуска моего шейпера, когда перед командами стоит echo, попробуйте - может и Вам поможет чем-то)
Т.е. Вы видете - мне ГАРАНТИРОВАНО 25 кбит/с и ПРЕДЕЛЬНАЯ ПОЛОСА 420 кбит/c
Запустил торрент на раздачу со своей машины без ограничения скорости.
Сейчас ночь, и надеюсь мало людей в нашей локалке.
iptraf рассказывает о 65кбайт/с на исходящем интерфейсе, (видимо люди все-таки есть)
торрент крутится около 49 кбайт/с исходящей скорости.
Как Вы видете, это примерно соответствует заданным 420 кбит/с. (Там вроде бы больше чем на 8 нужно умножать - я путаюсь, считается ли служебная информация или нет? Может даже вообще на 10? )
Так что - жду Ваших измерений.


Ответить | Правка | Наверх | Cообщить модератору

51. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от hand (?), 21-Сен-09, 10:29 
хttp://www.onlinedisk.ru/file/222671/
У меня IPTraf настроен на отображение в kbit/sec.
Измерения проводил с приведенным ранее конфигом (хост 127.0.0.1).
Для честности интерфейс с которого раздается в локальную сеть временно был отключен. Меряю из внешней сети, наверное потому исходящий канал всегда чуть-чуть нагружен.
Ответить | Правка | Наверх | Cообщить модератору

59. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от Донченкоemail (ok), 21-Сен-09, 19:13 
>хttp://www.onlinedisk.ru/file/222671/

Раскрыл. Не понравилось отсутствие внятных подписей (приходится догадываться).
Ну да ладно. Давайте смотреть:
8:41    iptraf_out_full  676кбит/с
8:49    iptraf_in_full   250кбит/с
8:53    shape_in         207кбит/с
8:57    in_out_full      216кбит/с
9:12    shape_out_full   275кбит/с
Как я понял, диаграммы со словом shape соответствуют включению шейпера?
Но простите, что может сказать интервал измерения в десятки минут?
Снимки не обязательны, я Вам верю на слово, но например вот так:
Запустить два терминала, в одном запустить iptaraf, а в другом шейперу делать поочередно:
1. Start
2. Stop
И карандашиком, карандашиком, на бумажку.


Ответить | Правка | Наверх | Cообщить модератору

61. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +/
Сообщение от hand (?), 21-Сен-09, 21:21 
Предлагаю забыть про эти результаты.
В скором времени я проведу более точные измерения для получения
внятных результатов.
Ответить | Правка | Наверх | Cообщить модератору

71. "Шейпер ADSL для домовой сети (shaper traffic adsl bandwidth ..."  +1 +/
Сообщение от Донченко (ok), 23-Сен-09, 15:16 
В общем, проблема заключается в попытке шейпить трафик предназначенный клиенту на сервере.  Правила, указанные в скрипте при этом явно не срабатывают. Т.е. для транзитного трафика все в порядке, а местный это отдельный вопрос. Который  мы в настоящее время изучаем.
Ответить | Правка | К родителю #61 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру