Jump to content

OnConnect OnDisconnect


Recommended Posts

Почему то адишник ($id) не передается скриптам он конект он дисконект кто нить знает в чем траблы??? или может у кого-то есть другое решение добавлений и удалений правил в IPFW.......... :)

Link to post
Share on other sites
лучше пиши ip

там де бакс

и создаешь отдельно файлики типа 10.144.97.14.sh

туда и пишешь правила фаервола

а по подробнее

это типа в онконект записать ./$ip.sh

 

и создать файлик

для каждой айпихи где делать алов???

Link to post
Share on other sites

Вот пример рабочего ОнКоннект под Линух

 

#!/bin/bash

iptables -A FORWARD -s $2 -j ACCEPT

iptables -A FORWARD -d $2 -j ACCEPT

 

iptables -t nat -I POSTROUTING 1 -s $2 -j SNAT --to-source 192.168.22.25

 

 

IP-шники поменяй на свои

ОнДисконнект аналогично

Link to post
Share on other sites
Вот пример рабочего ОнКоннект под Линух

 

#!/bin/bash

iptables -A FORWARD -s $2 -j ACCEPT

iptables -A FORWARD -d $2 -j ACCEPT

 

iptables -t nat -I POSTROUTING 1 -s $2 -j SNAT --to-source 192.168.22.25

 

 

IP-шники поменяй на свои

ОнДисконнект аналогично

Конечно спасибо но мне под IPFW нада

У кого еще какие варианты

Link to post
Share on other sites

в он коннект пишешь

sh /etc/stargazer/onconnect/$2.sh

в он дисконект пишешь

sh /etc/stargazer/ondisconnect/$2.sh

создаешь 2 папке что я выше написал

с именем 10.144.97.151.sh

к приему

ип ставь свой

в onconnect пишешь

ipfw add 1001 allow all from 10.144.97.151 to any

ipfw add 1001 allow all from any to 10.144.97.151

 

в ондисконект пишешь

ipfw del 1001

 

тут-же можешь пайпом ограничивать скорость

ipfw pipe 1002 config bw 270Kbit/s ( это и есть 256кбит в сек)

ipfw add 1002 pipe 1002 all from 10.144.97.151 to any

ipfw add 1002 pipe 1002 all from any to 10.144.97.151

Link to post
Share on other sites

Вот прога которая зодаёт файлы, прочитай и доделай для себя:

#!/bin/sh

login=$1
password=$2
tariff=$3
echo "added user $login $password $tariff" >> /var/add_del
echo -n "User name:"
read user_base_name
echo -n "IP:"
read ipaddress
echo -n "Count 1:"
read ipfw_number
echo -n "Count 2:"
read ipfw_number1
echo -n "Count 3:"
read ipfw_number2
echo -n "Count 4:"
read ipfw_number3

#REGISTER USER
echo "$user_base_name">>/etc/stargazer/NUMBER
echo "$ipaddress">>/etc/stargazer/NUMBER
echo "$ipfw_count_number">>/etc/stargazer/NUMBER
echo "$ipfw_number">>/etc/stargazer/NUMBER
echo "$ipfw_number1">>/etc/stargazer/NUMBER
echo "$ipfw_number2">>/etc/stargazer/NUMBER
echo "$ipfw_number3">>/etc/stargazer/NUMBER
echo "------------------">>/etc/stargazer/NUMBER


#PARAM

DIR_ALLOW="/etc/stargazer/user_connect/allow_$ipaddress.sh"
DIR_DENY="/etc/stargazer/user_disconnect/deny_$ipaddress.sh"

#ALLOW

echo "#!/bin/sh">>$DIR_ALLOW
echo "username='$user_base_name'">>$DIR_ALLOW
echo "ipfw add $ipfw_number allow tcp from $ipaddress to me 25,110,8080,443">>$D
IR_ALLOW
echo "ipfw add $ipfw_number1 allow udp from $ipaddress to me domain">>$DIR_ALLOW
echo "ipfw add $ipfw_number2 fwd 127.0.0.1,8080 tcp from $ipaddress to any http"
>>$DIR_ALLOW
echo "ipfw add $ipfw_number3 divert natd all from $ipaddress to any via xl0">>$D
IR_ALLOW
chmod +x $DIR_ALLOW
sleep 1


#DENY

echo "#!/bin/sh">>$DIR_DENY
echo "username='$user_base_name'">>$DIR_DENY
echo "ipfw delete $ipfw_count_number">>$DIR_DENY
echo "ipfw delete $ipfw_number">>$DIR_DENY
echo "ipfw delete $ipfw_number1">>$DIR_DENY
echo "ipfw delete $ipfw_number2">>$DIR_DENY
echo "ipfw delete $ipfw_number3">>$DIR_DENY
chmod +x $DIR_DENY
sleep 1

Если есть вопросы пиши на мыло или в форум, мыло admin собака info-teh.ru

Link to post
Share on other sites

Вот более поздняя рабочая версия, хотя и она тоже будет со временем доработана. В принципе хочу статью написать обо всё этом но вот руки ни как не доходят:

inet# cat /billing/add

#!/bin/sh
clear
echo "Version 0.70"
echo "-----------------------------------------------------------------------"
echo "Программа добавления нового пользателя в систему Stargazer"
cat /billing/NUMBER
echo -n "Введите имя пользователя: "
read user_base_name
echo -n "IP адрес: "
read ipaddress
echo -n "Первый номер правила в IPFW: "
read number
ipfw_number1=`expr $number + 1`
ipfw_number2=`expr $number + 2`
ipfw_number3=`expr $number + 3`
#echo -n "Введите ширину полосы пропускания: "
#read bw
echo "-------------------"
echo "Подтверждение:"
echo "Login: $user_base_name"
echo "IP: $ipaddress"
echo "Номера: $number, $ipfw_number1, $ipfw_number2, $ipfw_number3"
#echo "Ширина канала: $bw"
echo -n "Потверждение(y/n)[yes]: "
read yn
if [ $yn = "no" ]
then
exit 0
fi
#REGISTER USER
echo ""
echo "$user_base_name">>/billing/NUMBER
echo "$number-$ipfw_number4">>/billing/NUMBER
#PARAM
DIR_ALLOW="/billing/user_connect/allow_$ipaddress.sh"
DIR_DENY="/billing/user_disconnect/deny_$ipaddress.sh"


#ALLOW

echo "#!/bin/sh">>$DIR_ALLOW
echo "">>$DIR_ALLOW
echo "username='$user_base_name'">>$DIR_ALLOW
echo "ipfw a $ipfw_number1 allow tcp from $ipaddress to me 25,110,3128,443">>$DI
R_ALLOW
echo "ipfw a $ipfw_number2 allow udp from $ipaddress to me domain">>$DIR_ALLOW
echo "ipfw a $ipfw_number3 fwd 10.203.0.2,3128 tcp from $ipaddress to any http">
>$DIR_ALLOW
echo "ipfw a $ipfw_number4 divert natd all from $ipaddress to any via ng0">>$DIR
_ALLOW
chmod 700 $DIR_ALLOW
sleep 1

#DENY

echo "#!/bin/sh">>$DIR_DENY
echo "">>$DIR_DENY
echo "username='$user_base_name'">>$DIR_DENY
echo "ipfw delete $number">>$DIR_DENY
echo "ipfw delete $ipfw_number1">>$DIR_DENY
echo "ipfw delete $ipfw_number2">>$DIR_DENY
echo "ipfw delete $ipfw_number3">>$DIR_DENY
chmod 700 $DIR_DENY

Она даже ведёт свою "базу" номеров правил ipfw, для удобства. Хотя есть желание связать этот скрипт со скриптом OnUserAdd, но время жестокая штука.. И ещё хотелось бы выслушать пожелания или рекомендации по улучшению :)

Link to post
Share on other sites

2Max:

#echo "Ширина канала: $bw", говоришшш =))

 

2AlexeyD:

Почему то адишник ($id) не передается скриптам он конект он дисконект кто нить знает в чем траблы???

Какая версия сервера?

Link to post
Share on other sites
2Max:

#echo "Ширина канала: $bw", говоришшш =))

Это просто в планах добавлять правила шейпа в ipfw для клинета, пока не реализовано :)(

Link to post
Share on other sites

2AlexeyD:

Почему то адишник ($id) не передается скриптам он конект он дисконект кто нить знает в чем траблы???

Какая версия сервера?

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...