heavydude 0 Posted 2010-03-16 12:51:20 Share Posted 2010-03-16 12:51:20 Вроде просто .... Все сделал но все равно не срабатывает Link to post Share on other sites
DarkSpider 36 Posted 2010-03-16 13:48:06 Share Posted 2010-03-16 13:48:06 Как корректно настроить маршрутизацию и маскарадинг, чтобы, скажем, 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 проставлен, чтобы если у Вас прописан маскарад это правило было выше. (или уберите маскарад или СНАТ для этих адресов в старом фаерволе). Link to post Share on other sites
heavydude 0 Posted 2010-03-16 17:59:43 Share Posted 2010-03-16 17:59:43 Как корректно настроить маршрутизацию и маскарадинг, чтобы, скажем, 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 проставлен, чтобы если у Вас прописан маскарад это правило было выше. (или уберите маскарад или СНАТ для этих адресов в старом фаерволе). Урааа - огромное спасибо, заработало. Link to post Share on other sites
Tolia 0 Posted 2010-11-08 20:23:56 Share Posted 2010-11-08 20:23:56 Люди помогите настроить билинг мне надо чтоб было ограничение по скорости я заплочу сколько надо все стоит и работает но нету ограничений может кто сможет со мной связаться по скайпу tolia_katsubo или оставьте свои данные я вам наберу Link to post Share on other sites
trend 0 Posted 2011-06-27 08:50:07 Share Posted 2011-06-27 08:50:07 Можете подсказать как сделать авторизацию с проверкой мак? просто в баше не очень силен, бы л бы очень благодарен если бы кинули огрызок такого кода, и обяснили что нужно создавать, и в каких файлах. ОСь у меня 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 Link to post Share on other sites
yKpon 8 Posted 2011-06-27 10:06:12 Share Posted 2011-06-27 10:06:12 чтобы промерять по маку есть 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 Link to post Share on other sites
trend 0 Posted 2011-06-27 11:00:53 Share Posted 2011-06-27 11:00:53 чтобы промерять по маку есть 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 ? Link to post Share on other sites
yKpon 8 Posted 2011-06-27 12:45:04 Share Posted 2011-06-27 12:45:04 Нужна жесткая привязка по мак, т.е. разрешить форвард по мак и 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" Link to post Share on other sites
trend 0 Posted 2011-06-28 10:01:16 Share Posted 2011-06-28 10:01:16 Нужна жесткая привязка по мак, т.е. разрешить форвард по мак и 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 Link to post Share on other sites
yKpon 8 Posted 2011-07-04 08:09:34 Share Posted 2011-07-04 08:09:34 спасибо за подробный ответ, а можно сделать так, чтобы если мак в базе и реальный мак разные тогда доступ не предоставлялся? если по ARP жёстко привязать мак то доступа у человека с другим маком не будет вообще у меня в DHCP для тех у кого не соответствующие маки сделан отдельный динамисеский пул, удобно когда меняют сетевушку и чтобы был доступ в кабинет пользователя, и больше никуда Link to post Share on other sites
Irvin 0 Posted 2011-10-22 14:21:46 Share Posted 2011-10-22 14:21:46 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` Link to post Share on other sites
madf 279 Posted 2011-10-23 09:26:43 Share Posted 2011-10-23 09:26:43 (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 2011-10-23 09:27:12 by madf опечатка Link to post Share on other sites
Irvin 0 Posted 2011-11-03 12:36:06 Share Posted 2011-11-03 12:36:06 Скрипты, к стати, не полны. Почему бы не привести их в полном, готовом к использованию виде? Плнаруется перевод БД на MySQL, поэтому вряд ли... Возможно у кого-то есть примеры ограничения скорости для каждой учетки под mysql? Link to post Share on other sites
Небесный 26 Posted 2011-11-06 16:46:51 Share Posted 2011-11-06 16:46:51 В Ubilling посмотрите примеры нарезки скорости, если я не ошибаюсь и за некоторое отсутствие под руками клавы на меня не отразилось, там нету привязки к файловой базе. Link to post Share on other sites
Troj 0 Posted 2015-03-31 19:16:11 Share Posted 2015-03-31 19:16:11 Помогите с примерами скриптов onconnect для микротик апи. Link to post Share on other sites
yKpon 8 Posted 2015-04-02 09:53:33 Share Posted 2015-04-02 09:53:33 предполагаю что нужно изучать само API от микротика, к биллингу это никакого отношения не имеет Link to post Share on other sites
nightfly 1,239 Posted 2015-04-02 10:03:19 Share Posted 2015-04-02 10:03:19 https://github.com/nightflyza/Ubilling/tree/master/docs/presets/MikroTik Link to post Share on other sites
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