Asi te neni přesně ono, ale mně to stačilo. Do logu (který je v mém případě na serveru) se ukládal záznam pro každou novou src IP na AP. Snažil jsem se ukládat v jedom záznamu IP a MAC adresu PC a IP a MAC adresu jeho klientského rádia. V prvním případě jsou údaje vyčítány nejdříve z DHCP a pokud tam nejsou nalezeny jsou vyčteny z ARP. Ty záznamy klientských rádií byl spíš takový doplněk, který bez dhcp serveru nefunguje a používal jsem ho při dělání pořádku v síti. Samozřejmě nemusí být v danou chvíli v ARP tabulce zrovna patřičný záznam pro MAC toho rádia. Dá se to řešit nějakým pingáním na broadcast, nebo podobnou opičárnou, ale to jsem nepoužíval.
Skript:
Kód: Vybrat vše
:foreach i in [/ip firewall address-list find list=new_user] do {
:local ippc
:local ipsrc
:local macpc
:local macsrc
:set ippc [/ip firewall address-list get $i address]
:if ([/ip dhcp-server lease find address=$ippc]!="") do {
:if ([/ip dhcp-server lease get [find address=$ippc] status]="bound") do {
:set macpc [/ip dhcp-server lease get [find address=$ippc] mac-address]
:set macsrc [/ip dhcp-server lease get [find address=$ippc] src-mac-address]
/ip firewall address-list remove [find address=$ippc]
/ip firewall address-list add address=$ippc list=old_user
:log info ("NEWUSER " . $ippc . , . $macpc . , . $ipsrc . , . $macsrc)
}
}else={
:if ([/ip arp find address=$ippc]!="") do {
:set macsrc [/ip arp get [find address=$ippc] mac-address]
:set ipsrc $ippc
/ip firewall address-list remove [find address=$ippc]
/ip firewall address-list add address=$ippc list=old_user
:set ippc
:log info ("NEWUSER " . $ippc . , . $macpc . , . $ipsrc . , . $macsrc)
}
}
}
A záznam v ip firewall mangle, který pomáhá rozpoznat novou IP od starých:
Kód: Vybrat vše
chain=forward in-interface=_|_ 036B Mrak_BD src-address-list=!old_user action=add-src-to-address-list address-list=new_user address-list-timeout=8w4d