mikrotik bridge dhcp snooping + opt 82
Posted: 31 Jan 2019, 10:09
Доброго дня.
В mikrotik ros появилась возможность настроить dhcp_snooping и opt.82 на bridge.
как пока разобрался в
agent_circuid_id он формирует из system identity + имя порта .
agent_remote_id он формирует из имени порта .
имя порта он использует разное , в circuit_id для порта default-name=ether1 name=ether1 он присвоил значение eth0/1
в agent_remote_id имя порта ether1.
И по какой-то причине все наоборот. remote_id --- circuit_id
кто подскажет как разобрать его через lua ?
сейчас это работает вот так
<Relay-Agent {Agent-Circuit-ID E4:8D:8C:8B:FF:41 eth 0/1} {Agent-Remote-ID ether1}>]
но после обработки в radius летит запрос 65:74:68:65:72:31-49
Подумал что плохая идея использовать mac для авторизации , и переписал на IP CPE так будет удобнее
но после обработки тож самое
скрипт написан для snr+dlink
В mikrotik ros появилась возможность настроить dhcp_snooping и opt.82 на bridge.
как пока разобрался в
agent_circuid_id он формирует из system identity + имя порта .
agent_remote_id он формирует из имени порта .
имя порта он использует разное , в circuit_id для порта default-name=ether1 name=ether1 он присвоил значение eth0/1
в agent_remote_id имя порта ether1.
И по какой-то причине все наоборот. remote_id --- circuit_id
кто подскажет как разобрать его через lua ?
сейчас это работает вот так
<Relay-Agent {Agent-Circuit-ID E4:8D:8C:8B:FF:41 eth 0/1} {Agent-Remote-ID ether1}>]
но после обработки в radius летит запрос 65:74:68:65:72:31-49
Подумал что плохая идея использовать mac для авторизации , и переписал на IP CPE так будет удобнее
Code: Select all
<Relay-Agent {Agent-Circuit-ID 192.168.240.120 eth 0/1} {Agent-Remote-ID ether1}>]
Circuit-ID SubOption 1, length 23: 192.168.240.120 eth 0/1
Remote-ID SubOption 2, length 6: ether1
Code: Select all
<User-Name "65:74:68:65:72:31-49"> <NAS-IP-Address 192.168.0.41> <NAS-Port 816> <NAS-Port-Id "ipoe0"> <NAS-Port-Type Ethernet> <Calling-Station-Id "30:5a:3a:a6:4
0:d8">
скрипт написан для snr+dlink
Code: Select all
#!lua
function username(pkt)
local str=pkt:agent_remote_id()
if string.len(str)>6 then
str=string.sub(str,-6,-1)
elseif string.len(str)<6 then
print("short_remote_id")
return "short_remote_id"
end
v,b1,b2,b3,b4,b5,b6=string.unpack(str,'bbbbbb')
local remote_id=string.format("%02x:%02x:%02x:%02x:%02x:%02x", b1,b2,b3,b4,b5,b6)
v,port=string.unpack(string.sub(pkt:agent_circuit_id(),'-1'),'b')
local username=remote_id..'-'..port
print(username)
return username
end