Перейти к содержимому
Калькуляторы

DHCP server with SQL support on Perl DHCP сервер с базой SQL на Perl, с опцией 82, маршрутами и прочим

у меня мало абонентов, поэтому не скажу, работает без проблем, лиза на сутки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

коллеги, а этот самый сервер в бою кто нибудь гоняет? если да, какая нагрузка в количестве абонентов, и сколько времени стоит лиза?

~2.5k IPOE сессий, лиза 5 минут. Сервер работает железобетонно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

>3к, пару лет полёт нормальный. Ни единого разрывасегфолта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А зачем лиза 5 минут?

Давайте ***ем базу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А зачем лиза 5 минут?

Давайте ***ем базу?

А пофиг на базу, она развернута в виде slave на этом же NASе, с engine=memory. Т.е. сугубо местная и сугубо в памяти.

Все для удобства клиента.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделюсь нашими графиками.

Начали постепенно переводить клиентов на этот DHCP. lease-time - 1 час, mysql на другом сервере (вместе с биллингом). К-во клиентов точно не скажу, но 15k по ip unnumbered вечером есть.

dhcp_perl.png

 

На графике - абсолютное к-во запросов за 5 минут. То есть, 15к запросов за 5 минут - это ~50 запросов в секунду. Пока проблем не замечено, всё работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

О, спасибо за идею, надо реализовать такой график. )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может подскажете - как у Вас такой график реализован?

Если прям пример кода будет - вообще здорово...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

График - по счётчикам iptables. Сейчас так:

 

iptables:

-N DHCP_CLIENTS
-A DHCP_CLIENTS -m string --hex-string "|350103|" --algo bm --from 268 --to 301 -m comment --comment "DHCP Request" -j ACCEPT
-A DHCP_CLIENTS -m string --hex-string "|350108|" --algo bm --from 268 --to 301 -m comment --comment "DHCP Inform" -j ACCEPT
-A DHCP_CLIENTS -m string --hex-string "|350101|" --algo bm --from 268 --to 301 -m comment --comment "DHCP Discover" -j ACCEPT
-A DHCP_CLIENTS -m string --hex-string "|350107|" --algo bm --from 268 --to 301 -m comment --comment "DHCP Release" -j ACCEPT
-A DHCP_CLIENTS -m string --hex-string "|350104|" --algo bm --from 268 --to 301 -m comment --comment "DHCP Decline" -j ACCEPT
-A DHCP_CLIENTS -j LANET

-N DHCP_SERVER
-A DHCP_SERVER -m string --hex-string "|63825363350105|" --algo bm --from 264 --to 271 -m comment --comment "DHCP Ack" -j ACCEPT
-A DHCP_SERVER -m string --hex-string "|63825363350102|" --algo bm --from 264 --to 271 -m comment --comment "DHCP Offer" -j ACCEPT
-A DHCP_SERVER -m string --hex-string "|63825363350106|" --algo bm --from 264 --to 271 -m comment --comment "DHCP Nack" -j ACCEPT
-A DHCP_SERVER -j ACCEPT

-A INPUT -p udp --dport 67                                      -j DHCP_CLIENTS -m comment --comment "DHCP clients"
-A OUTPUT -p udp --sport 67                                     -j DHCP_SERVER  -m comment --comment "DHCP server"

cron:

*/5 * * * * root  /sbin/iptables -nvxL DHCP_CLIENTS > /var/lib/zabbix/tmp/iptables.dhcp && /sbin/iptables -nvxL DHCP_SERVER >> /var/lib/zabbix/tmp/iptables.dhcp

zabbix-agent:

UserParameter=dhcp.counter[*],awk '/$1/ {print $$1}' /var/lib/zabbix/tmp/iptables.dhcp

 

Хотя подозреваю, что есть клиенты, которые option 53 (message type) ставят с другим смещением. К примеру, у меня таких 197 неопознаных пакетов (за пару недель).

Ну и DHCP_CLIENTS стоит перед стандартным "-m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT".

 

Вообще, буду признателен, если кто подскажет, как улучшить мониторинг статистики :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Омг, а я чуть перепилил сабж(всмысле перловый дхцп), буквально час назад, вот что вышло:

321.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем привет.

Обращусь к автору. Помоги, появился новый свитч, в нем 82 опция выглядит так

OPTION: 82 ( 14) Relay Agent Information

Circuit-ID 00:e1:00:16

Remote-ID 70:72:cf:74:9f:d4

до этого все свитчи отвечали так:

OPTION: 82 ( 18) Relay Agent Information

Circuit-ID 00:04:00:e1:01:06

Remote-ID 00:06:00:12:cf:48:d6:87

 

где поправить чтоб обрабатывать и тот и тот вариант?

 

П.С. я так понимаю надо поправить

sub GetRelayAgentOptions($$$$$)

в этом месте:

case 1 { # Circuit ID

# first bytes must be: 00 04

$_[1] = unpack('n', substr($RelayAgent[($i+1)], 2, 2)); # may be 's'

$_[2] = unpack('C', substr($RelayAgent[($i+1)], 4, 1));

$_[3] = unpack('C', substr($RelayAgent[($i+1)], 5, 1));

# как и ниже, надо вставить условие, если длинное, как есть, если короткая, то разобрать на влан и порт

}

case 2 { # Remote ID

# first bytes must be: 00 06 or 01 06

$_[4] = FormatMAC(unpack("H*", substr($RelayAgent[($i+1)], 2, 6)));

# тут я как понял вырезается первые два, надо добавить условие, если длинное - удаляем, если короткое - берем как есть

}

 

UPD:

В общем вот что получилось:

case 1 { # Circuit ID

if (length($RelayAgent[($i+1)]) < 6)

{

logger("Circuit ID 4 = ".length($RelayAgent[($i+1)]));

$_[1] = unpack('n', substr($RelayAgent[($i+1)], 0, 2)); # may be 's'

$_[2] = unpack('C', substr($RelayAgent[($i+1)], 2, 1));

$_[3] = unpack('C', substr($RelayAgent[($i+1)], 3, 1));

}

else

{

logger("Circuit ID 6 = ".length($RelayAgent[($i+1)]));

# first bytes must be: 00 04

# for Circuit ID type = 00:04:00:e1:01:06

$_[1] = unpack('n', substr($RelayAgent[($i+1)], 2, 2)); # may be 's'

$_[2] = unpack('C', substr($RelayAgent[($i+1)], 4, 1));

$_[3] = unpack('C', substr($RelayAgent[($i+1)], 5, 1));

}

 

 

}

case 2 { # Remote ID

if (length($RelayAgent[($i+1)]) < 8)

{

logger("Remote ID 6= ".length($RelayAgent[($i+1)]));

$_[4] = FormatMAC(unpack("H*", $RelayAgent[($i+1)]));

}

else

{

logger("Remote ID 8= ".length($RelayAgent[($i+1)]));

# first bytes must be: 00 06 or 01 06

# for Remote ID type = 00:06:00:12:cf:48:d6:87

$_[4] = FormatMAC(unpack("H*", substr($RelayAgent[($i+1)], 2, 6)));

}

 

 

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обращусь к автору. Помоги, появился новый свитч, в нем 82 опция выглядит так

А ты уверен что свитч присылает полный мак?

tcpdump/dhcpdump что показывает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да, я выложил в посте выше, как старые свитчи шлют и как шлет новый.

новый Circuit-ID пишет влан и порт в виде

00:e1:00:16

 

и в Remote-ID сразу мак

70:72:cf:74:9f:d4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

3528m? забирайте с помощью substr длину мака с конца

по влану и порту тоже с конца. не плодите лишние условия)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Винда XP Prof SP3 не хочет просить адреса DNS (отдавал дпже принудительно, см. ниже) ... Хотя в связке с Dlink DIR-615 все впорядке. мистика.

 

QcBfkERR.jpg

 

 

Options :

DHO_DHCP_MESSAGE_TYPE(53) = DHCPACK

DHO_DHCP_SERVER_IDENTIFIER(54) = 91.1.1.2

DHO_ROUTER_DISCOVERY(31) = 0

DHO_VENDOR_ENCAPSULATED_OPTIONS(43) = \x01\x04\x00\x00\x00\x02\x02\x04\x00\x00\x00\x01\xFF

DHO_NETBIOS_NODE_TYPE(46) = 8

(249) = \x16[\xCA\x08\xAC\x10\x02\x01

DHO_DHCP_LEASE_TIME(51) = 300

DHO_DHCP_RENEWAL_TIME(58) = 400

DHO_DHCP_REBINDING_TIME(59) = 500

DHO_SUBNET_MASK(1) = 255.255.255.0

DHO_ROUTERS(3) = 172.16.2.1

DHO_DOMAIN_NAME_SERVERS(6) = 1.2.3.4

DHO_DOMAIN_NAME(15) = kuku2.net

DHO_ROUTER_DISCOVERY(31) = 0

DHO_VENDOR_ENCAPSULATED_OPTIONS(43) = \x01\x04\x00\x00\x00\x02\x02\x04\x00\x00\x00\x01\xFF

DHO_NETBIOS_NODE_TYPE(46) = 8

(249) = \x16[\xCA\x08\xAC\x10\x02\x01

DHO_DHCP_AGENT_OPTIONS(82) = \x01\x06\x00\x04\x00\xCA\x00\x09\x02\x08\x00\x06\xF0}h5\xD1

padding [0] =

 

 

как-нибудь победилось? принудительно отправлять не помогает(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да, я выложил в посте выше, как старые свитчи шлют и как шлет новый. новый Circuit-ID пишет влан и порт в виде

Нормальное решение.

Хотя то что они шлют без типа и длины это ИМХО не правильно, написать им чтобы правили.

 

 

как-нибудь победилось? принудительно отправлять не помогает(

А там точно руками не прописаны днс?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

точно. есть тестовой ноутбук и несколько абонентов.

discover-offer-request-pack

 

на этом общение с dhcp заканчивается. принудительное добавление dns не помогает. nextif тоже ничего не откидывает

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

https://support.microsoft.com/ru-ru/kb/953761

 

решил проблему перестановкой опций)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В общем вот что получилось:

Проверяй, я тоже поправил.

 

https://support.micr...ru-ru/kb/953761 решил проблему перестановкой опций)

Вот нет чтобы накатить апдейты.

Я когда писал/отлаживал тестил в том числе и на своём нетбуке, там ХР была, но с патчами.

Тоже попробуй исправленную.

 

 

Ещё по мелочам форматирование поправил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

накатить апдейты всем абонентам? не лучший путь...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Немного мимо кассы, но подскажите как сделать каунтеры dhcp запросов для ipfw по типам? Может есть готовый пример?

Я так понял, что без ng_ipfw b ng_bpf точно не обойтись?

 

Конвертнул вырежения в bpf код:

 

 

DHCPDISCOVER

udp port 67 and udp[247:4] = 0x63350101

bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } 
{ code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } 
{ code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } 
{ code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } 
{ code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } 
{ code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418049 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ]

 

DHCPOFFER

udp port 67 and udp[247:4] = 0x63350102

bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } 
{ code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 }
{ code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } 
{ code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } 
{ code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } 
{ code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418050 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ]

 

DHCPREQUEST

udp port 67 and udp[247:4] = 0x63350103

bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } 
{ code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } 
{ code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } 
{ code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } 
{ code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } 
{ code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418051 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ]

 

DHCPDECLINE

udp port 67 and udp[247:4] = 0x63350104

bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } 
{ code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } 
{ code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } 
{ code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } 
{ code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } 
{ code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418052 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ]

 

DHCPACK

udp port 67 and udp[247:4] = 0x63350105

bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } 
{ code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } 
{ code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } 
{ code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } 
{ code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } 
{ code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418053 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ]

 

DHCPNAK

udp port 67 and udp[247:4] = 0x63350106

bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } 
{ code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } 
{ code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } 
{ code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } 
{ code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } 
{ code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418054 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ]

 

DHCPRELEASE

udp port 67 and udp[247:4] = 0x63350107

bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } 
{ code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } 
{ code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } 
{ code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } 
{ code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } 
{ code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418055 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ]

 

DHCPINFORM

udp port 67 and udp[247:4] = 0x63350108

bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } 
{ code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } 
{ code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } 
{ code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } 
{ code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } 
{ code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418056 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ]

 

 

 

Осталось связать с ipfw.

Изменено пользователем Dimic

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Видимо да, придётся матчить по оффсетам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А как-нибудь можно модернизировать вот это, чтобы не создавать потом 8 правил в файрволе? Я не силен в netgraph, к сожалению.

 

 

ngctl mkpeer ipfw: bpf 1 main
ngctl mkpeer ipfw: bpf 2 main
ngctl mkpeer ipfw: bpf 3 main
ngctl mkpeer ipfw: bpf 4 main
ngctl mkpeer ipfw: bpf 5 main
ngctl mkpeer ipfw: bpf 6 main
ngctl mkpeer ipfw: bpf 7 main
ngctl mkpeer ipfw: bpf 8 main

ngctl name ipfw:1 dhcp_discover
ngctl name ipfw:2 dhcp_offer
ngctl name ipfw:3 dhcp_request
ngctl name ipfw:4 dhcp_decline
ngctl name ipfw:5 dhcp_ack
ngctl name ipfw:6 dhcp_nak
ngctl name ipfw:7 dhcp_release
ngctl name ipfw:8 dhcp_inform

#DHCPDISCOVER
#udp port 67 and udp[247:4] = 0x63350101
ngctl msg dhcp_discover: setprogram { thisHook=\"main\" ifMatch=\"main\" ifNotMatch=\"main\" bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } { code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } { code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418049 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }

#DHCPOFFER
#udp port 67 and udp[247:4] = 0x63350102
ngctl msg dhcp_offer: setprogram { thisHook=\"main\" ifMatch=\"main\" ifNotMatch=\"main\" bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } { code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } { code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418050 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }

#DHCPREQUEST
#udp port 67 and udp[247:4] = 0x63350103
ngctl msg dhcp_request: setprogram { thisHook=\"main\" ifMatch=\"main\" ifNotMatch=\"main\" bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } { code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } { code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418051 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }

#DHCPDECLINE
#udp port 67 and udp[247:4] = 0x63350104
ngctl msg dhcp_decline: setprogram { thisHook=\"main\" ifMatch=\"main\" ifNotMatch=\"main\" bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } { code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } { code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418052 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }

#DHCPACK
#udp port 67 and udp[247:4] = 0x63350105
ngctl msg dhcp_ack: setprogram { thisHook=\"main\" ifMatch=\"main\" ifNotMatch=\"main\" bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } { code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } { code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418053 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }

#DHCPNAK
#udp port 67 and udp[247:4] = 0x63350106
ngctl msg dhcp_nak: setprogram { thisHook=\"main\" ifMatch=\"main\" ifNotMatch=\"main\" bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } { code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } { code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418054 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }

#DHCPRELEASE
#udp port 67 and udp[247:4] = 0x63350107
ngctl msg dhcp_release: setprogram { thisHook=\"main\" ifMatch=\"main\" ifNotMatch=\"main\" bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } { code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } { code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418055 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }

#DHCPINFORM
#udp port 67 and udp[247:4] = 0x63350108
ngctl msg dhcp_inform: setprogram { thisHook=\"main\" ifMatch=\"main\" ifNotMatch=\"main\" bpf_prog_len=19 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=15 jf=0 k=96 } { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=12 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=10 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=8 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=72 jt=0 jf=0 k=0 } { code=21 jt=2 jf=0 k=67 } { code=72 jt=0 jf=0 k=2 } { code=21 jt=0 jf=3 k=67 } { code=64 jt=0 jf=0 k=247 } { code=21 jt=0 jf=1 k=1664418056 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }

 

Может при помощи one2many навешать хуков?

Сейчас счетчики работают конечно, но реализация..

DISCOVER: 1
OFFER: 1
REQUEST: 4
DECLINE:
ACK: 4
NAK:
RELEASE:
INFORM:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Издеваешься?

http://www.netlab.linkpc.net/wiki/ru:software:freebsd:igmpproxy_on_netgraph

вот тут как из tcpdump делать вот такой вот асм, на tcpdump тренируешься и потом получаешь программу для бпф на асме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.