DJ Jack Posted January 9, 2009 Posted January 9, 2009 В общем на работе завал. В ближайшие срок нужно поставить: 1) Старгазер + радиус + pppoe (чтобы он считал их трафик по ppp) 2)Скорость разная для тарифов,например,тариф inet256 - скорость инета 256 кб (общая) 32,2 кб (загрузки) ,а на тарифе например inet128 - скорость для инета скорость 128 (16 кб/сек загрузка) 3)Чтобы скорость с сетей 217.10.1.0 - 217.10.4.255 - была 1000 мб/сек (то есть без ограничений) и трафик не считался (точнее считался но как локальный) Тоже самое на сети 87.249.14.0 - 87.249.14.255 и 10.23.64.0 - 10.23.73.255 и 192.168.1.2 (не путать с 1,именно 2) до 192.168.1.197 (ну а вообще можно просто легче сделать 10.23.0.0/16 для поддсетей 10) 4)Авторизация по Авторизатор для Windows и через веб страницу. (статитка баланса) Все,ваши предложение и цены,готов заплатить,но не больше 1300 руб. PS. Кто точно не умеет этого делать лучше не писать,т.к хочу профи. OC Fedora core 8 (Linux) Mail агент - dj_jack@mail.ru ICQ - 364921083 Оплату гарантирую через банк или Яндекс Деньги) Спасибо.
Neelix Posted January 9, 2009 Posted January 9, 2009 Все,ваши предложение и цены,готов заплатить,но не больше 1300 руб.PS. Кто точно не умеет этого делать лучше не писать,т.к хочу профи. за такие деньги... это 338 грн ка минимум в 3-4 раза больше нужно
Колян Posted January 9, 2009 Posted January 9, 2009 за такие деньги разве что на фрюхе могу поднять биллинг, шейпер, но без всяких ппп, ну и подсчет трафа настроить. ну еще немного секса с фаерволлом и шейпером. А то, что Вы описали - стоить будет намного дороже...
DJ Jack Posted January 9, 2009 Author Posted January 9, 2009 Ладно как хотите,сам постараюсь сделать.. А авторизация мне нужна только по ppp.
DJ Jack Posted January 11, 2009 Author Posted January 11, 2009 Ладно,pppoe выкидываем,я все настроил (кроме фаеревола) Делал как тут _http://stg.dp.ua/doc20/conf_example_linux.html Не помогло,считает трафик как нужно мне,но,не отключает инет когда я нажимаю отключиться (инет как был так и есть) Собственно. 1)Настроить фаеревол чтобы он отключал когда нажимаю офф 2)Скорость инета ограничивал (также как выше написал для тарифа inet128 скорость 128,для 256 скорость 256 и тд) Сколько хотите? Я думаю тут не трудно. И не говорите поставьте Freebsd (не пользуемся ей) только Linux.
Neelix Posted January 11, 2009 Posted January 11, 2009 1. сделай лучше циклами while, для локального скрипта, iptables 2. в дистрибутиве стг, если не ошибаюсь есть примеры скриптов, с учетов выборке из поля Userdata
DJ Jack Posted January 11, 2009 Author Posted January 11, 2009 Да мне нужно чтобы за меня поставили,а я расплатился бы.. (у меня на работе завал)
DJ Jack Posted January 14, 2009 Author Posted January 14, 2009 Блин,что никто не знает как сделать ограничение скорости на разных тарифах(linux)? С OnConnect/OnDisconnect разобрался. Теперь отключает и выключает. Мне только скорость настроить,помогите плиз,готов заплатить даже.
Neelix Posted January 14, 2009 Posted January 14, 2009 OnConnect #!/bin/bash int_iface=eth1 # Login LOGIN=$1 #user IP IP=$2 #cash CASH=$3 #user ID ID=$4 #Selected dirs to connect DIRS=$5 default_speed=32kbit # =========== shaping by tariff =========== #tariff=$(grep -i "^tariff=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=") #echo "tariff=$tariff" > /var/stargazer/users/$LOGIN/connect.log #case $tariff in # minimum) speedkb=128kbit;; # 128 kbit # middle) speedkb=256kbit;; # 256 kbi # maximum) speedkb=512kbit;; # 512 kbit # *) speedkb=$default_speed;; # default speed #esac # ========= shaping by tariff end ========= # ========= shaping by userdata0 ========== speedR=$(grep -i "^Userdata0=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=") speed=$(echo $speedR | grep "^[0-9]*[0-9]$") if [ -z "$speed" ] then speedkb=$default_speed else speedkb="$speed"kbit fi # ======= shaping by userdata0 end ======== declare -i mark=$ID+10 echo "$mark" > /var/stargazer/users/$LOGIN/shaper_mark echo "$speedkb" > /var/stargazer/users/$LOGIN/shaper_rate iptables -t mangle -A FORWARD -d $IP -j MARK --set-mark $mark tc class add dev $int_iface parent 1:1 classid 1:$mark htb rate $speedkb burst 40k tc filter add dev $int_iface parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark
Neelix Posted January 14, 2009 Posted January 14, 2009 OnDisconnect #!/bin/bash int_iface=eth1 # Login LOGIN=$1 #user IP IP=$2 #cash CASH=$3 #user ID ID=$4 #Selected dirs to disconnect DIRS=$4 mark=$(cat /var/stargazer/users/$LOGIN/shaper_mark) rate=$(cat /var/stargazer/users/$LOGIN/shaper_rate) if [ -n "$mark" ] then iptables -t mangle -D FORWARD -d $IP -j MARK --set-mark $mark while [ $? == 0 ] do iptables -t mangle -D FORWARD -d $IP -j MARK --set-mark $mark done fi tc filter del dev $int_iface parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark tc class del dev $int_iface parent 1:1 classid 1:$mark htb rate $rate burst 40k #echo "D `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log
Neelix Posted January 14, 2009 Posted January 14, 2009 shaper.sh #!/bin/bash int_iface=eth1 iptables -t mangle --flush tc qdisc add dev $int_iface root handle 1: htb tc class add dev $int_iface parent 1: classid 1:1 htb rate 100mbit ceil 100mbit burst 200k shaper.stop.sh #!/bin/bash int_iface=eth1 #iptables -t mangle --flush tc qdisc del dev $int_iface root handle 1: htb
Neelix Posted January 14, 2009 Posted January 14, 2009 В OnConnect есть два типа шейпинга. 1. На основании тарифа. Т.е. для каждого тарифа у задана скорость и задано дефолтное значение, на случай отсутсвия тарифа в списке скоростей или забывчивости админа. 2. На основании Userdata0. В этом поле просто прописывается число равное скорости в kbit/sec. Также есть дефолтное значение скорости в 32 kbit/sec на случай отсутсвия в Userdata0 корректного значения. В скрипте первый способ закомментирован. Для того чтобы выбрать один из них нужно либо удалить, либо закомментировать строчики между # ========= shaping by tariff ========== ......... # ======= shaping by tariff end ======== и # ========= shaping by userdata0 ========== ......... # ======= shaping by userdata0 end ======== и нужную часть расскоментировать, если она закомментрована. Скрипт shaper.sh должен быть выполнен один раз при загрузке системы. Интерфейс обращенный к пользователю определяется в переменной int_iface= (присутствует во всех 4-х файлах shaper.sh, shaper.stop.sh, OnConnect и OnDisconnect !!!) Скорость по умолчанию в OnConnect в переменной default_speed Зависимость скорости от тарифа задается в следующем фрагменте кода: case $tariff in minimum) speedkb=128kbit;; middle) speedkb=256kbit;; maximum) speedkb=512kbit;; *) speedkb=$default_speed;; esac Т.е. тут нужно вместо minimum, ... maximum подставить имена ваших тарифов и соотв. скорость. Пользователи с тарифами не указанными в списке будут иметь дефолтную скорость. Скорость ограничевается только для входящего тарафика, однако расширить эти скрипты для исходящего не составит труда.
DJ Jack Posted January 14, 2009 Author Posted January 14, 2009 Один вопрос всего. Напиши свою ICQ или агент. А так просто огромное спасибо!!!!
Neelix Posted January 14, 2009 Posted January 14, 2009 Один вопрос всего.Напиши свою ICQ или агент. А так просто огромное спасибо!!!! Я тайный агент извини, настроить конкретно под твою систему нет времени.
DJ Jack Posted January 14, 2009 Author Posted January 14, 2009 ФСБ России? Да,нет я настрою сам,просто интересует про shaper.sh и shaper.stop.sh То есть куда их копировать.
DJ Jack Posted January 14, 2009 Author Posted January 14, 2009 Пардон) Насчет шнайпера разобрался) Меня интересуют эти коды и файлы. echo "$mark" > /var/stargazer/users/$LOGIN/shaper_mark echo "$speedkb" > /var/stargazer/users/$LOGIN/shaper_rate То есть shaper_mark и shaper_rate в директории вообще нету. Откуда они берутся? И как их добавлять и что в них писать? (кроме того что добавил файл вручную)
Neelix Posted January 14, 2009 Posted January 14, 2009 не прикалывайся ) echo "$mark" > /var/stargazer/users/$LOGIN/shaper_mark команда направит вывод переменной $mark в файл директории юзера shaper_mark echo "$speedkb" > /var/stargazer/users/$LOGIN/shaper_rate аналогично тебе руками ничего не надо никуда забивать. это для удобства, чтобы можно было делать например выборку уже из директории. заходишь в директорию юзера, а там файлик с его скоростью в настоящий момент
DJ Jack Posted January 14, 2009 Author Posted January 14, 2009 Ну насчет создается,да один файл CXZABA~I и в нем надпись tariff=pnet1024 Все,а хожу по сети со 100 мб/сек,вместо 1024 кб) shaping by tariff включен. shaping by userdata0 выключен OnConnect pnet1024) speedkb=1024kbit;;
Neelix Posted January 14, 2009 Posted January 14, 2009 если незнаешь bash scripting, то тяжело будет понять в чем дело и изза чего передаются такие параметры
DJ Jack Posted January 14, 2009 Author Posted January 14, 2009 bash я на самом деле не очень,я php программист...
DJ Jack Posted January 14, 2009 Author Posted January 14, 2009 Это мои скрипты. Фаеревол. #!/bin/bash #Машина в офисе office=10.23.64.10 #Машина администратора admin=10.23.64.6 #Адреса роутера server0=10.23.64.10 server1=192.168.1.4 server2=10.23.64.10 # Адрес файлового архива с mp3 и video video_serv=192.168.1.4 # Интерфейс смотрящий на клиентов iface_cli=eth1 # Интерфейс смотрящий во внешний мир iface_world=eth0 # Интерфейс смотрящий на архив iface_int=eth1 #Порты, на которых работает конфигуратор и авторизатор conf_port=5555 user_port1=5555 echo "1" > /proc/sys/net/ipv4/ip_forward # Очищаем правила файрвола iptables -t filter -F iptables -t filter -X iptables -t nat -F iptables -t nat -X # Политика по умолчанию DROP: всем всё запрещено iptables -t filter -P INPUT DROP iptables -t filter -P FORWARD DROP iptables -t filter -P OUTPUT DROP # Защищаем сервер от дос атак. iptables -A INPUT -p tcp --dport 80 --syn -m recent --rcheck --seconds 5 --hitcount 10 -j DROP iptables -A INPUT -p tcp --dport 80 --syn -m recent --set -j ACCEPT # Разрешаем пингам ходить всюду и всегда iptables -t filter -A INPUT -p icmp -j ACCEPT iptables -t filter -A FORWARD -p icmp -j ACCEPT iptables -t filter -A OUTPUT -p icmp -j ACCEPT # Разрешаем всё на локальном интерфейсе iptables -t filter -A INPUT -d 127.0.0.1 -j ACCEPT iptables -t filter -A OUTPUT -s 127.0.0.1 -j ACCEPT # Разрешить серверу общаться со внешним миром iptables -t filter -A INPUT -i $iface_world -j ACCEPT iptables -t filter -A OUTPUT -o $iface_world -j ACCEPT # Разрешить видео-серверу обращаться во внешним миром и роутером iptables -t filter -A INPUT -s $video_serv -j ACCEPT iptables -t filter -A FORWARD -s $video_serv -j ACCEPT iptables -t filter -A FORWARD -d $video_serv -j ACCEPT iptables -t filter -A OUTPUT -d $video_serv -j ACCEPT # DNS. Замечу, ДНС работает и по TCP и по UDP iptables -t filter -A INPUT -p tcp --sport 53 -j ACCEPT iptables -t filter -A FORWARD -p tcp --sport 53 -j ACCEPT iptables -t filter -A FORWARD -p tcp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT iptables -t filter -A FORWARD -p udp --sport 53 -j ACCEPT iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT # SSH iptables -t filter -A INPUT -p tcp -s $office -d $server0 --dport 6282 -j ACCEPT iptables -t filter -A OUTPUT -p tcp -d $office -s $server0 --sport 6282 -j ACCEPT iptables -t filter -A INPUT -p tcp -s $admin -d $server0 --dport 6282 -j ACCEPT iptables -t filter -A OUTPUT -p tcp -d $admin -s $server0 --sport 6282 -j ACCEPT # Stargazer configurator iptables -t filter -A INPUT -p tcp -s 0.0.0.0/0 -d 0.0.0.0/0 --dport $conf_port -j ACCEPT iptables -t filter -A OUTPUT -p tcp -d 0.0.0.0/0 -s 0.0.0.0/0 --sport $conf_port -j ACCEPT # UDP stargazer InetAccess iptables -t filter -A INPUT -p udp -s 0.0.0.0/0 --sport $user_port1 -d $server0 -j ACCEPT iptables -t filter -A OUTPUT -p udp -d 0.0.0.0/0 --dport $user_port1 -s $server0 -j ACCEPT # Mail Anent iptables -t filter -A INPUT -p tcp -s 10.23.0.0/16 -d 194.67.23.196 --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -p tcp -d 10.23.0.0/16 -s 194.67.23.196 --sport 80 -j ACCEPT # Mail Anent 2 iptables -t filter -A INPUT -p tcp -s 10.23.0.0/16 -d 194.186.55.0/24 --dport 2041 -j ACCEPT iptables -t filter -A OUTPUT -p tcp -d 10.23.0.0/16 -s 194.186.55.0/24 --sport 2041 -j ACCEPT # DNS iptables -t filter -A INPUT -p tcp -s 0.0.0.0/0 -d 0.0.0.0/0 --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p tcp -d 0.0.0.0/0 -s 0.0.0.0/0 --sport 53 -j ACCEPT # Web iptables -t filter -A INPUT -p tcp -s 10.23.0.0/16 -d 0.0.0.0/0 --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -p tcp -d 10.23.0.0/16 -s 0.0.0.0/0 --sport 80 -j ACCEPT # Icecast iptables -t filter -A INPUT -p tcp -s 10.23.0.0/16 -d 0.0.0.0/0 --dport 8161 -j ACCEPT iptables -t filter -A OUTPUT -p tcp -d 10.23.0.0/16 -s 0.0.0.0/0 --sport 8161 -j ACCEPT # DNS 2 iptables -t filter -A INPUT -p udp -s 0.0.0.0/0 --sport 53 -d 0.0.0.0/0 -j ACCEPT iptables -t filter -A OUTPUT -p udp -d 0.0.0.0/0 --dport 53 -s 0.0.0.0/0 -j ACCEPT # Маскарад iptables -t nat -A POSTROUTING -d 0.0.0.0/0 -j MASQUERADE OnConnect #!/bin/bash ip=$2 iptables -t filter -A INPUT -s $ip -j ACCEPT iptables -t filter -A FORWARD -s $ip -j ACCEPT iptables -t filter -A FORWARD -d $ip -j ACCEPT iptables -t filter -A OUTPUT -d $ip -j ACCEPT #!/bin/bash int_iface=eth1 # Login LOGIN=$1 #user IP IP=$2 #cash CASH=$3 #user ID ID=$4 #Selected dirs to connect DIRS=$5 default_speed=10kbit # =========== shaping by tariff =========== tariff=$(grep -i "^tariff=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=") echo "tariff=$tariff" > /var/stargazer/users/$LOGIN/connect.log case $tariff in pnet96) speedkb=96kbit;; # 128 kbit pnet224) speedkb=224kbit;; # 224 kbi pnet1024) speedkb=1024kbit;; # 1024 kbit pnet5_5) speedkb=6000kbit;; # 6000 kbit pnet256b) speedkb=6000kbit;; # 512 kbit pnet512b) speedkb=512kbit;; # 512 kbit pnet128b) speedkb=128kbit;; # 512 kbit pnet96b) speedkb=96kbit;; # 96 kbit *) speedkb=$default_speed;; # default speed esac # ========= shaping by tariff end ========= # ========= shaping by userdata0 ========== #speedR=$(grep -i "^Userdata0=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=") #speed=$(echo $speedR | grep "^[0-9]*[0-9]$") #if [ -z "$speed" ] #then # speedkb=$default_speed #else # speedkb="$speed"kbit #fi # ======= shaping by userdata0 end ======== declare -i mark=$ID+10 echo "$mark" > /var/stargazer/users/$LOGIN/shaper_mark echo "$speedkb" > /var/stargazer/users/$LOGIN/shaper_rate iptables -t mangle -A FORWARD -d $IP -j MARK --set-mark $mark tc class add dev $int_iface parent 1:1 classid 1:$mark htb rate $speedkb burst 40k tc filter add dev $int_iface parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark OnDisconnect #!/bin/bash ip=$2 iptables -t filter -D INPUT -s $ip -j ACCEPT while [ $? -eq 0 ] do iptables -t filter -D INPUT -s $ip -j ACCEPT done ################################## iptables -t filter -D FORWARD -s $ip -j ACCEPT while [ $? -eq 0 ] do iptables -t filter -D FORWARD -s $ip -j ACCEPT done ################################## iptables -t filter -D FORWARD -d $ip -j ACCEPT while [ $? -eq 0 ] do iptables -t filter -D FORWARD -d $ip -j ACCEPT done ################################## iptables -t filter -D OUTPUT -d $ip -j ACCEPT while [ $? -eq 0 ] do iptables -t filter -D OUTPUT -d $ip -j ACCEPT done #!/bin/bash int_iface=eth1 # Login LOGIN=$1 #user IP IP=$2 #cash CASH=$3 #user ID ID=$4 #Selected dirs to disconnect DIRS=$4 mark=$(cat /var/stargazer/users/$LOGIN/shaper_mark) rate=$(cat /var/stargazer/users/$LOGIN/shaper_rate) if [ -n "$mark" ] then iptables -t mangle -D FORWARD -d $IP -j MARK --set-mark $mark while [ $? == 0 ] do iptables -t mangle -D FORWARD -d $IP -j MARK --set-mark $mark done fi tc filter del dev $int_iface parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark tc class del dev $int_iface parent 1:1 classid 1:$mark htb rate $rate burst 40k #echo "D `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log
Колян Posted January 14, 2009 Posted January 14, 2009 А на пхп скрипты сложно написать? У меня все скрипты на пхп...
Al G Posted January 14, 2009 Posted January 14, 2009 php для гипертекстовых страниц, а для системы перл и sh
Neelix Posted January 14, 2009 Posted January 14, 2009 php для гипертекстовых страниц, а для системы перл и sh то ты просто с php мало сталкивался ) оч гибко можно завернуть системные функции
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now