trend
Тип контенту
Профили
Форум
Календарь
Сообщения додав trend
-
-
чтобы промерять по маку есть 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 ?
-
Можете подсказать как сделать авторизацию с проверкой мак? просто в баше не очень силен, бы л бы очень благодарен если бы кинули огрызок такого кода, и обяснили что нужно создавать, и в каких файлах. ОСь у меня 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
Скрипты onConnect/onDisconnect
в Питання по Stargazer
Опубліковано:
спасибо за подробный ответ, а можно сделать так, чтобы если мак в базе и реальный мак разные тогда доступ не предоставлялся?
как я понял надо взять ваш код (только у меня база в текстовиках пока)
здесь мас подключившегося связывается с IP и если мак не равняется с маком в базе, то