heavydude Posted March 16, 2010 Posted March 16, 2010 Вроде просто .... Все сделал но все равно не срабатывает
DarkSpider Posted March 16, 2010 Posted March 16, 2010 Как корректно настроить маршрутизацию и маскарадинг, чтобы, скажем, 192.168.10.2 на eth1 имел реальник XX.XXX.22.15 на eth0 /sbin/iptables -t nat -I PREROUTING -i eth0 -d XX.XXX.22.15 -j DNAT --to 192.168.10.2 /sbin/iptables -t nat -I POSTROUTING -s 192.168.10.2 -o eth0 -j SNAT --to XX.XXX.22.15 А так ? ключ -I проставлен, чтобы если у Вас прописан маскарад это правило было выше. (или уберите маскарад или СНАТ для этих адресов в старом фаерволе).
heavydude Posted March 16, 2010 Posted March 16, 2010 Как корректно настроить маршрутизацию и маскарадинг, чтобы, скажем, 192.168.10.2 на eth1 имел реальник XX.XXX.22.15 на eth0 /sbin/iptables -t nat -I PREROUTING -i eth0 -d XX.XXX.22.15 -j DNAT --to 192.168.10.2 /sbin/iptables -t nat -I POSTROUTING -s 192.168.10.2 -o eth0 -j SNAT --to XX.XXX.22.15 А так ? ключ -I проставлен, чтобы если у Вас прописан маскарад это правило было выше. (или уберите маскарад или СНАТ для этих адресов в старом фаерволе). Урааа - огромное спасибо, заработало.
Tolia Posted November 8, 2010 Posted November 8, 2010 Люди помогите настроить билинг мне надо чтоб было ограничение по скорости я заплочу сколько надо все стоит и работает но нету ограничений может кто сможет со мной связаться по скайпу tolia_katsubo или оставьте свои данные я вам наберу
trend Posted June 27, 2011 Posted June 27, 2011 Можете подсказать как сделать авторизацию с проверкой мак? просто в баше не очень силен, бы л бы очень благодарен если бы кинули огрызок такого кода, и обяснили что нужно создавать, и в каких файлах. ОСь у меня ubuntu server, использую iptables. При авторизации MAC не проверяется. Но можно сделать дополнительную проверку в OnConnect. Описываем MAC, например, в в одном из полей UserData. При вызове скрипта получаем реальный MAC с помощью arp -n $IP (ну там еще tail'ом и cut'ом немножко поработать), и вычитываем соответствующий UserData из БД (файловой или SQL'ной). Если совпадает - разрешаем юзера в файрволле. Привет всем, помогите с кодом в OnConnect для проверки mac адреса при подключении, уже все перечисленные примеры перепробовал, не получается никак. система fedora 15 вот мой onconnect, шейпер работает прекрасно, а вот проверка по маку не работает #!/bin/bash iface_cli=em1 # 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]$") MAC=$(grep -i "^Userdata1=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=") 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 $iface_cli parent 1:1 classid 1:$mark htb rate $speedkb burst 40k tc filter add dev $iface_cli parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark if [ -n "$MAC" ] then /sbin/iptables -A FORWARD -s $IP -j ACCEPT /sbin/iptables -A FORWARD -d $IP -j ACCEPT else /sbin/iptables -A FORWARD -s $IP -m mac --mac-source $MAC -j ACCEPT /sbin/iptables -A FORWARD -d $IP -j ACCEPT /sbin/iptables -t filter -A FORWARD -s $IP -j ACCEPT /sbin/iptables -t filter -A FORWARD -d $IP -j ACCEPT /sbin/iptables -t filter -A INPUT -s $IP -j ACCEPT /sbin/iptables -t filter -A OUTPUT -d $IP -j ACCEPT fi fi
yKpon Posted June 27, 2011 Posted June 27, 2011 чтобы промерять по маку есть 2 варианта: 1. ip адреса жёстко привязаны к маку по ARP тогда проверка при авторизации не нужна, просто никто другой не сможет подключиться 2. ip не привязаны, но при авторизации проверяется MAC сетевой я у себя еспользую 1-ый вариант, если у вас 2-ой случай, то можно просто их сравнивать, узнать текущий мак можно через arp -a $IP | cut -f 4 -d " " или нужно именно разрешить форвард по мак? ещё не понятно зачем 2 раза одно и то же /sbin/iptables -A FORWARD -s $IP -j ACCEPT /sbin/iptables -A FORWARD -d $IP -j ACCEPT это же и есть filter
trend Posted June 27, 2011 Posted June 27, 2011 чтобы промерять по маку есть 2 варианта: 1. ip адреса жёстко привязаны к маку по ARP тогда проверка при авторизации не нужна, просто никто другой не сможет подключиться 2. ip не привязаны, но при авторизации проверяется MAC сетевой я у себя еспользую 1-ый вариант, если у вас 2-ой случай, то можно просто их сравнивать, узнать текущий мак можно через arp -a $IP | cut -f 4 -d " " или нужно именно разрешить форвард по мак? ещё не понятно зачем 2 раза одно и то же /sbin/iptables -A FORWARD -s $IP -j ACCEPT /sbin/iptables -A FORWARD -d $IP -j ACCEPT это же и есть filter Нужна жесткая привязка по мак, т.е. разрешить форвард по мак и IP, DHCP нету а, ну тогда надо создать постоянную таблицу arp ?(если честно, еще плаваю в линуксе) Не могли бы вы поделиться кодом OnConnect ?
yKpon Posted June 27, 2011 Posted June 27, 2011 Нужна жесткая привязка по мак, т.е. разрешить форвард по мак и IP, DHCP нету а, ну тогда надо создать постоянную таблицу arp ?(если честно, еще плаваю в линуксе) Не могли бы вы поделиться кодом OnConnect ? жёсткая привязка по мак это ARP arp -s 192.168.1.2 00:1a:6a:00:00:00 в таком случае у абонента с айпи 192.168.1.2 и мак адресом отличным от 00:1a:6a:00:00:00 доступа к серверу не будет, он не будет даже пинговаться в вашем же примере скрипта проверка по маку учавствует только между обменом (цепочка FORWARD) приведу свой пример, база у меня в MySQL вот часть скрипта OnConnect отвечающая на мак MAC=`/usr/bin/mysql -sN -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Userdata0 FROM users WHERE login = '$login'"` /usr/bin/arping -I eth_local $IP -c 1 -w 0 newMAC=`/usr/sbin/arp -a $IP | cut -f 4 -d " "` /usr/sbin/arp -d $IP /usr/sbin/arp -s $IP $newMAC if [ -z "`/bin/echo $MAC | grep $newMAC`" ]; then /etc/stargazer/sgconf set -s 127.0.0.1 -p 4446 -a $STGADM -w $STGPASS -u $login --ud0 $newMAC fi принцип работы: - берём МАС прописаный в карточке юзера - делаем arping чтобы мак "прорезался" на сервере, так сказать засветился - выделяем этот мак - статиески привязываем его (сначала опустошаем потом привязываем это для тех кому мак не нужно привязывать, команда -s попросту не сработает) - если же мак в базе и реальный мак разные тогда в базу заносится новый, сделано для того кто меняет сетевушку, всё равно кто то левый не сможет достучаться до сервера чтобы это сделать собственно вот, а так ещё раз в сутки по крону отрабатывает скрипт macfix #!/bin/sh source /etc/stargazer/sql.conf # lan0 for ((ip=2;ip<255;ip++)); do /usr/sbin/arp -s 192.168.0.${ip} ${firmmac} done; echo "lan0 done" # lan1 for ((ip=2;ip<31;ip++)); do /usr/sbin/arp -s 192.168.1.${ip} ${firmmac} done; echo "lan1 done" # lan2 for ((ip=2;ip<15;ip++)); do /usr/sbin/arp -s 192.168.2.${ip} ${firmmac} done; echo "lan2 done" LOGINS=`/usr/bin/mysql -sN -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT login FROM users"` for login in $LOGINS do IP=`/usr/bin/mysql -sN -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT IP FROM users WHERE login = '$login'"` MAC=`/usr/bin/mysql -sN -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Userdata0 FROM users WHERE login = '$login'"` LOCKED=`/usr/bin/mysql -sN -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Down FROM users WHERE login = '$login'"` if [ $LOCKED = 0 ]; then /usr/sbin/arp -d $IP /usr/sbin/arp -s $IP $MAC fi done lan4 done" echo "arp table fixed"
trend Posted June 28, 2011 Posted June 28, 2011 Нужна жесткая привязка по мак, т.е. разрешить форвард по мак и IP, DHCP нету а, ну тогда надо создать постоянную таблицу arp ?(если честно, еще плаваю в линуксе) Не могли бы вы поделиться кодом OnConnect ? жёсткая привязка по мак это ARP arp -s 192.168.1.2 00:1a:6a:00:00:00 в таком случае у абонента с айпи 192.168.1.2 и мак адресом отличным от 00:1a:6a:00:00:00 доступа к серверу не будет, он не будет даже пинговаться в вашем же примере скрипта проверка по маку учавствует только между обменом (цепочка FORWARD) приведу свой пример, база у меня в MySQL вот часть скрипта OnConnect отвечающая на мак MAC=`/usr/bin/mysql -sN -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Userdata0 FROM users WHERE login = '$login'"` /usr/bin/arping -I eth_local $IP -c 1 -w 0 newMAC=`/usr/sbin/arp -a $IP | cut -f 4 -d " "` /usr/sbin/arp -d $IP /usr/sbin/arp -s $IP $newMAC if [ -z "`/bin/echo $MAC | grep $newMAC`" ]; then /etc/stargazer/sgconf set -s 127.0.0.1 -p 4446 -a $STGADM -w $STGPASS -u $login --ud0 $newMAC fi принцип работы: - берём МАС прописаный в карточке юзера - делаем arping чтобы мак "прорезался" на сервере, так сказать засветился - выделяем этот мак - статиески привязываем его (сначала опустошаем потом привязываем это для тех кому мак не нужно привязывать, команда -s попросту не сработает) - если же мак в базе и реальный мак разные тогда в базу заносится новый, сделано для того кто меняет сетевушку, всё равно кто то левый не сможет достучаться до сервера чтобы это сделать собственно вот, а так ещё раз в сутки по крону отрабатывает скрипт macfix #!/bin/sh source /etc/stargazer/sql.conf # lan0 for ((ip=2;ip<255;ip++)); do /usr/sbin/arp -s 192.168.0.${ip} ${firmmac} done; echo "lan0 done" # lan1 for ((ip=2;ip<31;ip++)); do /usr/sbin/arp -s 192.168.1.${ip} ${firmmac} done; echo "lan1 done" # lan2 for ((ip=2;ip<15;ip++)); do /usr/sbin/arp -s 192.168.2.${ip} ${firmmac} done; echo "lan2 done" LOGINS=`/usr/bin/mysql -sN -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT login FROM users"` for login in $LOGINS do IP=`/usr/bin/mysql -sN -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT IP FROM users WHERE login = '$login'"` MAC=`/usr/bin/mysql -sN -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Userdata0 FROM users WHERE login = '$login'"` LOCKED=`/usr/bin/mysql -sN -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Down FROM users WHERE login = '$login'"` if [ $LOCKED = 0 ]; then /usr/sbin/arp -d $IP /usr/sbin/arp -s $IP $MAC fi done lan4 done" echo "arp table fixed" спасибо за подробный ответ, а можно сделать так, чтобы если мак в базе и реальный мак разные тогда доступ не предоставлялся? как я понял надо взять ваш код (только у меня база в текстовиках пока) MAC=$(grep -i "^Userdata1=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=") /usr/bin/arping -I $iface_cli $IP -c 1 -w 0 newMAC=`/usr/sbin/arp -a $IP | cut -f 4 -d " "` /usr/sbin/arp -d $IP /usr/sbin/arp -s $IP $newMAC здесь мас подключившегося связывается с IP и если мак не равняется с маком в базе, то #как вот тут правильно написать равенство мака в базе и newMAC, подскажите пожалуйста if [ -z "$MAC=$newMAC" ]; then /sbin/iptables -t filter -A FORWARD -s $IP -j ACCEPT
yKpon Posted July 4, 2011 Posted July 4, 2011 спасибо за подробный ответ, а можно сделать так, чтобы если мак в базе и реальный мак разные тогда доступ не предоставлялся? если по ARP жёстко привязать мак то доступа у человека с другим маком не будет вообще у меня в DHCP для тех у кого не соответствующие маки сделан отдельный динамисеский пул, удобно когда меняют сетевушку и чтобы был доступ в кабинет пользователя, и больше никуда
Irvin Posted October 22, 2011 Posted October 22, 2011 onConnect/onDisconnect для текстовых файлов.Парметры скорости для юзера задаются в Userdata0/Userdata1 onConnect #!/usr/local/bin/bash #user IP IP=`cat ip | sed 's/ //g'` #user ID ID=`cat id | sed 's/ //g'` #скорость загрузки DOWN=`cat conf | grep -i 'Userdata0=' | sed -e "s/^.*=//g"` #скорость отдачи UP=`cat conf | grep -i 'Userdata1=' | sed -e "s/^.*=//g"` ipfw="/sbin/ipfw" inn='xl0' ${ipfw} pipe `expr $ID + 20000` config bw ${DOWN}Kbit/s ${ipfw} pipe `expr $ID + 25000` config bw ${UP}Kbit/s ${ipfw} add `expr $ID + 15000` pipe `expr $ID + 20000` ip from any to ${IP} ${ipfw} add `expr $ID + 15000` pipe `expr $ID + 25000` ip from ${IP} to any onDisconnect #!/usr/local/bin/bash #user IP IP=`cat ip | sed 's/ //g'`#user ID ID=`cat id | sed 's/ //g'` ipfw="/sbin/ipfw" #удаление правил с шейпера ${ipfw} pipe delete `expr $ID + 20000` ${ipfw} pipe delete `expr $ID + 25000` #удаление правил с файервола ${ipfw} delete `expr $ID + 15000`
madf Posted October 23, 2011 Posted October 23, 2011 (edited) Предлагаю заменить DOWN=`cat conf | grep -i 'Userdata0=' | sed -e "s/^.*=//g"` UP=`cat conf | grep -i 'Userdata1=' | sed -e "s/^.*=//g"` на DOWN=`grep -i "userdata0=" conf | tail -c +11` UP=`grep -i userdata1 conf | tail -c +11` Меньше на 1 форк и tail по идее быстрее чем sed. Скрипты, к стати, не полны. Почему бы не привести их в полном, готовом к использованию виде? Ну и непонятны вот эти телодвижения: IP=`cat ip | sed 's/ //g'` ID=`cat id | sed 's/ //g'` Если ip и id это переменные которые получаем из параметров то нужно делать не cat а echo. И в них и так проблелов быть не может, это сгенерированные значения. Edited October 23, 2011 by madf опечатка
Irvin Posted November 3, 2011 Posted November 3, 2011 Скрипты, к стати, не полны. Почему бы не привести их в полном, готовом к использованию виде? Плнаруется перевод БД на MySQL, поэтому вряд ли... Возможно у кого-то есть примеры ограничения скорости для каждой учетки под mysql?
Небесный Posted November 6, 2011 Posted November 6, 2011 В Ubilling посмотрите примеры нарезки скорости, если я не ошибаюсь и за некоторое отсутствие под руками клавы на меня не отразилось, там нету привязки к файловой базе.
Troj Posted March 31, 2015 Posted March 31, 2015 Помогите с примерами скриптов onconnect для микротик апи.
yKpon Posted April 2, 2015 Posted April 2, 2015 предполагаю что нужно изучать само API от микротика, к биллингу это никакого отношения не имеет
nightfly Posted April 2, 2015 Posted April 2, 2015 https://github.com/nightflyza/Ubilling/tree/master/docs/presets/MikroTik
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