ivm 0 Опубликовано: 2006-07-03 07:16:38 Share Опубликовано: 2006-07-03 07:16:38 Уважаемые разработчики, у меня такая ситуация: Локальная сеть на 6 человек, думаю будет расширена до 12 :-) Это не много, но, что есть то есть . :-) Юзерам динамически выдается траффик украинский до 8 Мбит , мировой трафик до 128 кбит. Анлимитед. Хотел бы реализовать такую систему: Анлим, но по достижению некоторого значения выкачанного (закачанного) трафика скорость снижается, например: до 1 ГБ - 8 Мбит 1-2 ГБ - 2 Мбит 3-4 - 1 Мбит 4-10 512 Кбит 10+ 256 Кбит Для этого всего есть машинка: Пень-233 256 ОЗУ, винт 8 ГБ. Могу конечно проапдейтить её эдак до 400-533 Mhz, но это не желательно. Возможно ли реализовать то, что я хочу на том, что есть? :-) Ссылка на сообщение Поделиться на других сайтах
denz 0 Опубліковано: 2006-07-03 09:10:15 Share Опубліковано: 2006-07-03 09:10:15 Легко... Если чуть в никсах волокешь вот те заготовка, накидал за 5 мин, могут быть недочеты !#/bin/sh # Правила фаера для фсех #${fwcmd} pipe 101 config bw 128Kbit/s #${fwcmd} pipe 102 config bw 256Kbit/s #${fwcmd} pipe 103 config bw 512Kbit/s #${fwcmd} pipe 105 config bw 1Mbit/s #${fwcmd} pipe 106 config bw 2Mbit/s #${fwcmd} pipe 107 config bw 5Mbit/s # Правила в фаере для каждого: #${fwcmd} add 10001 pipe ip from $IP to any via xl0 #${fwcmd} add 10002 pipe ip from any to $IP via xl0 #${fwcmd} add 10005 allow ip from $IP to any #${fwcmd} add 10006 allow ip from any to $IP # # # # ИП кого желаем проверить на колличество скаченного IP=$1 # Входячие байты номер правила RIN=$2 # Исходячие байты номер правила ROUT=$3 # Почта админа с мылом мол такомуто снижена скорость EMAIL=сусадмин@хостема.ком size_in=`ipfw show $RIN | awk '{ print $3 }'` size_out=`ipfw show $ROUT | awk '{ print $3 }'` # 10 MB = 10737418 байт # 50 MB = 54975581 байт # 100 MB = 109951162 байт # 1 GB = 1073741824 байт # 2 GB = 2147483648 байт # 5 GB = 5368709120 байт # 8 GB = 8589934592 байт if [ $size_in -gt 8589934592 ]; then size_in_M = `expr $size_in / 1024 / 1024` echo "IP: $IP смолотил 8 GB, пользователю снижена скорость до 1 Mbit/s. \ Скачано $size_in_M мегабайт всякого хлама. \ ..." | mail $EMAIL ipfw delete $RIN $ROUT ipfw add 10001 pipe 105 ip from $IP to any via xl0 ipfw add 10002 pipe 105 ip from any to $IP via xl0 elif [ $size_in -gt 5368709120 ]; then size_in_M = `expr $size_in / 1024 / 1024` echo "IP: $IP смолотил 5 GB, пользователю снижена скорость до 2 Mbit/s. \ Скачано $size_in_M мегабайт всякого хлама. \ ..." | mail $EMAIL ipfw delete $RIN $ROUT ipfw add 10001 pipe 106 ip from $IP to any via xl0 ipfw add 10002 pipe 106 ip from any to $IP via xl0 elif [ $size_in -gt 5368709120 ]; then echo "И так далее..." fi Тесто замесил, теперь лепите, кому что по душе... Кодик можа сбацать покороче и динамичнее, но... нэмае часу Ссылка на сообщение Поделиться на других сайтах
ivm 0 Опубліковано: 2006-07-03 10:35:38 Автор Share Опубліковано: 2006-07-03 10:35:38 БОльшое спасибо! Буду доводить! :-) :vah: Ссылка на сообщение Поделиться на других сайтах
denz 0 Опубліковано: 2006-07-03 12:53:21 Share Опубліковано: 2006-07-03 12:53:21 Советую сделать произвести некоторые изменения.. Добавь нижеуказанное в /etc/sysctl.conf # TCP/UDP TUNING net.inet.tcp.blackhole=2 net.inet.tcp.rfc1644=1 net.inet.tcp.msl=7500 net.inet.udp.blackhole=1 net.inet.icmp.icmplim=50 net.inet.icmp.drop_redirect=1 net.inet.icmp.log_redirect=1 net.inet.icmp.maskrepl=0 net.inet.ip.redirect=0 net.inet.ip.forwarding=1 net.inet.ip.accept_sourceroute=0 net.inet.ip.sourceroute=0 net.inet.ip.fw.dyn_fin_lifetime=20 net.inet.ip.fw.dyn_rst_lifetime=20 net.inet.ip.ttl=127 net.link.ether.inet.max_age=1200 # IPFW CONF net.inet.ip.fw.one_pass=0 net.inet.ip.dummynet.expire=0 # KERNEL CONF kern.polling.enable=1 kern.polling.user_frac=50 kern.ipc.somaxconn=32768 kern.corefile=/tmp/%U.%N.%P.core # OTHERS net.local.stream.recvspace=65535 net.local.stream.sendspace=65535 net.inet.tcp.sendspace=65535 net.inet.tcp.recvspace=65535 Ссылка на сообщение Поделиться на других сайтах
ivm 0 Опубліковано: 2006-07-04 06:11:03 Автор Share Опубліковано: 2006-07-04 06:11:03 А можно небольшое пояснение по верхнему конфигу? :-) Ссылка на сообщение Поделиться на других сайтах
denz 0 Опубліковано: 2006-07-04 07:19:27 Share Опубліковано: 2006-07-04 07:19:27 А можно небольшое пояснение по верхнему конфигу? :-) можно... # man sysctl Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2006-07-06 17:37:14 Share Опубліковано: 2006-07-06 17:37:14 А можно небольшое пояснение по верхнему конфигу? :-) Пиши sysctl -d net.inet.tcp.blackhole sysctl -d net.inet.tcp.rfc1644 .... И вникай ) Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас