On Fri, 18 Aug 2006 05:52:43 +1200
AlexZander <deepsha***@r*****.ru> wrote:
> Подскажите, как реализовать привязку IP/MAC?
Я для этого написал вот скрипт и положил его в /usr/local/etc/rc.d/staticarp.sh:
#!/bin/sh
# PROVIDE: staticarp
# REQUIRE: DAEMON
# BEFORE: LOGIN
# Define these staticarp_* variables in one of these files:
# /etc/rc.conf
# /etc/rc.conf.local
# /etc/rc.conf.d/staticarp
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
#
staticarp_enable="NO"
. /etc/rc.subr
name=staticarp
rcvar=`set_rcvar`
reload_cmd="staticarp_reload"
restart_cmd="staticarp_reload"
start_cmd="staticarp_start"
status_cmd="staticarp_status"
stop_cmd="staticarp_stop"
staticarp_status()
{
echo -n "Status $name: "
}
staticarp_start()
{
ifconfig vlan0 staticarp
for a in `arp -a -i vlan0 | cut -d '(' -f 2 | cut -d ')' -f 1`
do
arp -d $a > /dev/null
done
egrep -v '^#' /usr/local/etc/staticarp.conf |
while read a
do
IP=`echo $a | cut -d ' ' -f 1`
MAC=`echo $a | cut -d ' ' -f 2`
echo $IP:$MAC
arp -s $IP $MAC
done
echo -n "Starting $name: "
echo "$name."
}
staticarp_stop()
{
ifconfig vlan0 -staticarp
egrep -v '^#' /usr/local/etc/staticarp.conf |
while read a
do
IP=`echo $a | cut -d ' ' -f 1`
arp -d $IP > /dev/null
done
echo -n "Stopping $name: "
echo "$name."
}
staticarp_reload()
{
staticarp_stop
staticarp_start
# echo -n "Restarting $name: "
# echo "$name."
}
load_rc_config $name
run_rc_command "$1"
А в /usr/local/etc/staticarp.conf прописываю клиентов:
192.168.1.3 00:00:21:27:15:c2 DaryaTur #0
192.168.1.4 00:11:2f:8e:e2:73 DaryaTur #1
192.168.1.5 00:c0:df:05:92:c5 DaryaTur #2
192.168.1.9 08:00:46:4c:ab:67 DaryaTur #3
192.168.1.10 00:00:cd:09:74:72 Sw-2.2
192.168.1.17 00:13:46:64:50:a1 MGTA
192.168.1.20 00:04:79:68:09:be KurskLoto #0
и.т.д.
Действует но на интерфейс vlan0 (если надо на другой/другие, то надо править
скрипт)
Когда ему говоришь start он включает staticarp на интерфейсе и заполняет arp
таблицу для нее, когда говоришь stop, таблица грохается и staticarp отключается
-*Название листа "[BSD] Решение вопросов по FreeBSD, OpenBSD и NetBSD";
Написать в лист: mailto:comp.soft.bsd.all-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.bsd.all/rules
Номер письма: 2987; Возраст листа: 899; Участников: 939
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.bsd.all/msg/582158