Size: a a a

2018 December 06

AF

Aleksey Freeman in Nag.Ru
pragus
Нет. А что с ними?
Тогда нормальные хипстеры, можно поить пивом)
Некоторым подавай красиво описанный массив с ключами yes/no вместо компактной бинарной маски на 10 параметров... вот с такими беда-беда...
источник

В

Вадим «Дым» Илларионов in Nag.Ru
71 605
можно некостыльно отдавать клиенту время лизы на сутки, а самому лизу убивать почти сразу?
У меня так и сделано. Лиз-тайм — сутки, но раз в минуту (монитом/кроном/системд-таймером на выбор) стартует скриптец для т.н. "перетыкеров", проверяющий в логе дхцпшника факты смены абонентского мака на портах за предыдущую минуту и посредством omshell обнуляющий лизы для таковых.
источник

В

Вадим «Дым» Илларионов in Nag.Ru
Таким образом, при перетыке абону для переполучения лизы ждать приходится не более пары минут.
источник

В

Вадим «Дым» Илларионов in Nag.Ru
Если надо, могу кинуть скриптом.
источник

В

Вадим «Дым» Илларионов in Nag.Ru
Забыл уточнить: как раз под isc-dhcpd заточен.
источник

m

mik in Nag.Ru
Вадим «Дым» Илларионов
Если надо, могу кинуть скриптом.
Было бы хорошо👍
источник

В

Вадим «Дым» Илларионов in Nag.Ru
[root@dhcp ~]# sed 's/HOST.*==/HOST derParol==/;/^#\s/d' /usr/libexec/dhcpd/repluggers
#!/bin/bash

POOL=/etc/dhcp/pools.d
LOGDIR=/var/log/dhcpd
LOGSRC=$LOGDIR/server.log               # Здесь искать перетыкеров,
LOGDST=$LOGDIR/repluggers.log   # а сюда писать результат чистки...
export LANG=ru_RU.UTF-8                 # ...по-русски.

while read AbonMAC CircuitID RemoteID; do # Искать ИП в пуле за предыдущую минуту, исходя из свичёвых МАКа и порта.
       NAS=`echo $RemoteID | sed 's/^[01]:6://'`
       PORT=`echo "ibase=16; $(echo $CircuitID | sed 's/.*://' | tr [[:lower:]] [[:upper:]])" | bc`
       IP=`grep -B1 "allow members of \"abonents\" \"$NAS/$PORT\"" $POOL/*.conf | head -1 | awk '{print $3}' | tr -d ';'`
       IPS+="$IP $AbonMAC\n"
done < <(awk '/'$(date +%FT%H:%M -d '-1 minute')'.*remote-id.*no free leases/{print $6,$8,$10}' $LOGSRC | sort -u)

while read IP AbonMAC; do               # Обнуляем аренды (с выводом в лог, если не на systemd).
       LeaseMAC=`/usr/bin/omshell <<-END | awk '/^hardware-address = /{print $3}' | sort -u
               key HOST derParol==
               connect
               new lease
               set ip-address = $IP
               open
               set ends = 00:00:00:00
               update
       END`
       [ ${#IP} -lt 12 ] && TAB='\t' || TAB=
       [ "$AbonMAC" != "$LeaseMAC" ] || LeaseMAC="это же устройство"
       date +"%F %T $AbonMAC $LeaseMAC $IP" >>$LOGDST
done < <(printf "$IPS" | sort -uV)
источник

В

Вадим «Дым» Илларионов in Nag.Ru
[root@dhcp ~]# grep repluggers /etc/cron.d/dhcpd
* * * * * root /usr/libexec/dhcpd/repluggers

Контейнер дхцпшника на 6 версии кентоси, без системд, так что через крон.
источник

В

Вадим «Дым» Илларионов in Nag.Ru
Заглянул в доки КЕА — блин, какой интересный сервер. Жаль, что так поздно о нём узнал, а теперь уж не актуально: скоро у нас домрушники и дхцпшник заберут...
источник

E

Evgeniy in Nag.Ru
да кеа норм
источник

76

71 605 in Nag.Ru
Вадим «Дым» Илларионов
Если надо, могу кинуть скриптом.
Было бы круто!
источник

E

Evgeniy in Nag.Ru
дык уже. выше смотри
источник

m

mik in Nag.Ru
Вадим «Дым» Илларионов
[root@dhcp ~]# sed 's/HOST.*==/HOST derParol==/;/^#\s/d' /usr/libexec/dhcpd/repluggers
#!/bin/bash

POOL=/etc/dhcp/pools.d
LOGDIR=/var/log/dhcpd
LOGSRC=$LOGDIR/server.log               # Здесь искать перетыкеров,
LOGDST=$LOGDIR/repluggers.log   # а сюда писать результат чистки...
export LANG=ru_RU.UTF-8                 # ...по-русски.

while read AbonMAC CircuitID RemoteID; do # Искать ИП в пуле за предыдущую минуту, исходя из свичёвых МАКа и порта.
       NAS=`echo $RemoteID | sed 's/^[01]:6://'`
       PORT=`echo "ibase=16; $(echo $CircuitID | sed 's/.*://' | tr [[:lower:]] [[:upper:]])" | bc`
       IP=`grep -B1 "allow members of \"abonents\" \"$NAS/$PORT\"" $POOL/*.conf | head -1 | awk '{print $3}' | tr -d ';'`
       IPS+="$IP $AbonMAC\n"
done < <(awk '/'$(date +%FT%H:%M -d '-1 minute')'.*remote-id.*no free leases/{print $6,$8,$10}' $LOGSRC | sort -u)

while read IP AbonMAC; do               # Обнуляем аренды (с выводом в лог, если не на systemd).
       LeaseMAC=`/usr/bin/omshell <<-END | awk '/^hardware-address = /{print $3}' | sort -u
               key HOST derParol==
               connect
               new lease
               set ip-address = $IP
               open
               set ends = 00:00:00:00
               update
       END`
       [ ${#IP} -lt 12 ] && TAB='\t' || TAB=
       [ "$AbonMAC" != "$LeaseMAC" ] || LeaseMAC="это же устройство"
       date +"%F %T $AbonMAC $LeaseMAC $IP" >>$LOGDST
done < <(printf "$IPS" | sort -uV)
спасибо :)
источник

76

71 605 in Nag.Ru
Evgeniy
дык уже. выше смотри
Да телефон тупит)
источник

В

Вадим «Дым» Илларионов in Nag.Ru
Нема за шо. :)
источник

Д

Дмитрий in Nag.Ru
ребят, не могу вдуплить
есть asr1001 на котором ip unnumbered и статический роут в интерфейс вида 1.1.1.2 255.255.255.255 gi0/0/0.100

interface Loopback1
description UNNUMBERED 1.1.1.0/24
ip address 1.1.1.1 255.255.255.0

и в этом влане есть микротик с адресом 1.1.1.2/24 и дефолт через 1.1.1.1
источник

Д

Дмитрий in Nag.Ru
так вот микротик хосты в этой сети пытается зарезолвить арпом. в общем, это правильно
дальше asr1001 получает арп-запрос от микротика
ииии не делает ничего, чтобы выкинуть пакеты в другой интерфейс который тоже unnumbered
на сабинтерфейсе ip proxy-arp по умолчанию включен
на lo1 тоже включен
источник

E

Evgeniy in Nag.Ru
local-proxy-arp
источник

Д

Дмитрий in Nag.Ru
со стороны asr везде я так понял должен быть включен ip proxy-arp? он включен по умолчанию
источник

E

Evgeniy in Nag.Ru
ip local-proxy-arp еще надо включить.
источник