0
Отвечен

Options 82

dron_kss 3 года назад обновлен mikbill (CEO) 2 года назад 18

Добрый день помогите с Options 82 не пойму что нужно прописывать в билинге у абонента и как составить LUA к этому на ACCEL

в секции IPOE на ацеле включить:

attr-dhcp-opt82=DHCP-Option82
attr-dhcp-opt82-remote-id=DHCP-Agent-Remote-Id
attr-dhcp-opt82-circuit-id=DHCP-Agent-Circuit-Id

в словарях ацеля и радиуса должны быть:

ATTRIBUTE DHCP-Router-IP-Address 241 ipaddr
ATTRIBUTE DHCP-Mask 242 integer
ATTRIBUTE L4-Redirect 243 integer
ATTRIBUTE L4-Redirect-ipset 244 string
ATTRIBUTE DHCP-Option82 245 octets
ATTRIBUTE AccelRemoteId 246 octets
ATTRIBUTE AccelCircuitId 247 octets

lua:

#!lua
function macuser(pkt)
        return pkt:hdr('chaddr')
end
function opt82_v1(pkt)
        v,b1,b2,b3,b4,b5,b6=string.unpack(pkt:agent_remote_id(),'bbbbbb')
        return string.format("%02x:%02x:%02x:%02x:%02x:%02x", b1,b2,b3,b4,b5,b6)
end
function opt82_v2(pkt)
        if pkt:agent_circuit_id() ~= nil then
                if string.len(pkt:agent_remote_id()) ~= 0 then
                        v,b1,b2,b3,b4,b5,b6=string.unpack(pkt:agent_remote_id(),'bbbbbb')
                        return string.format("%02x:%02x:%02x:%02x:%02x:%02x", b1,b2,b3,b4,b5,b6)
                elseif (string.len(pkt:agent_remote_id()) == 0 and string.len(pkt:agent_circuit_id()) ~= 0) then
                        m1=string.sub(pkt:agent_circuit_id(),'-15','-14')
                        m2=string.sub(pkt:agent_circuit_id(),'-13','-12')
                        m3=string.sub(pkt:agent_circuit_id(),'-11','-10')
                        m4=string.sub(pkt:agent_circuit_id(),'-9','-8')
                        m5=string.sub(pkt:agent_circuit_id(),'-7','-6')
                        m6=string.sub(pkt:agent_circuit_id(),'-5','-4')
                        local username=m1..':'..m2..':'..m3..':'..m4..':'..m5..':'..m6
                        return username
                end
        else
                return pkt:hdr('chaddr')
        end
end


указав на ацеле:

lua-file=/etc/accel-ppp.lua
username=lua:opt82_v2

Ацель передаст на радиус option 82 (если опция пришла от абонента)



А дальше уже в зависимости от того что нужно, в билнге добавляете устройство/шаблон opt82 и т.д.


Что то не выходит вот с таким конфигом ACCEL

.LUA взял ваш и в атрибуты добавил 



[modules]
log_file
radius
ipoe
shaper

[common]
sid-source=urandom
seq-file=/var/lib/accel-ppp/seq

[core]
log-error=/var/log/accel-ppp/core.log
thread-count=4

[dns]
dns1=8.8.8.8

[radius]
dictionary=/usr/local/share/accel-ppp/radius/dictionary
nas-identifier=Accel-IPoE
nas-ip-address=10.200.0.8
server=10.200.0.10,secret,auth-port=1812,acct-port=1813,req-limit=0,fail-time=0
dae-server=0.0.0.0:3799,secret
verbose=1
timeout=10
max-try=9
acct-timeout=0
acct-delay-time=0

[ipoe]
lua-file=/etc/accel-ppp.lua
username=lua:opt82_v2
lease-time=300
max-lease-time=301
attr-dhcp-client-ip=Framed-IP-Address
attr-dhcp-router-ip=DHCP-Router-IP-Address
attr-dhcp-mask=DHCP-Mask
attr-l4-redirect=L4-Redirect
attr-l4-redirect-ipset=L4-Redirect-ipset

attr-dhcp-opt82=DHCP-Option82
attr-dhcp-opt82-remote-id=DHCP-Agent-Remote-Id
attr-dhcp-opt82-circuit-id=DHCP-Agent-Circuit-Id
l4-redirect-ipset=l4
proto=100
proxy-arp=1
interface=re:^vlan16$,shared=1,mode=L2,start=dhcpv4,ifcfg=1
verbose=1

[log]
log-file=/var/log/accel-ppp/accel-ppp.log
log-emerg=/var/log/accel-ppp/emerg.log
log-fail-file=/var/log/accel-ppp/auth-fail.log
log-debug=/var/log/accel-ppp/debug
#log-debug=/dev/stdout
copy=1
color=1

level=5

[shaper]

[shaper]
attr=Filter-Id
ifb=ifb0
up-limiter=htb
down-limiter=htb
cburst=1375000
r2q=10
quantum=1500
verbose=1

[cli]
verbose=0
telnet=127.0.0.1:2000
tcp=127.0.0.1:2001

[client-ip-range]
disable


выдает в логах 

^[[1;32m[2017-06-08 14:56:21]:  info: vlan16: ^[[0;39mrecv [DHCPv4 Discover xid=3312ad12 chaddr=00:00:00:00:00:06 <Message-Type Discover> <Client-ID 01000000000006> <Host-Name Admin-PC> <Vendor-Class 4d53465420352e30> <Request-List Subnet,Domain-Name,Router,DNS,44,46,47,31,Route,Classless-Route,249,Vendor-Specific> <Relay-Agent {Agent-Circuit-ID _00040010000d} {Agent-Remote-ID _00061cbdb941cec8}>]
^[[1;32m[2017-06-08 14:56:21]:  info: ipoe0: ^[[0;39mcreate interface ipoe0 parent vlan16
^[[1;34m[2017-06-08 14:56:21]: debug: ipoe0: ^[[0;39mterminate
^[[1;32m[2017-06-08 14:56:21]:  info: ipoe0: ^[[0;39mipoe: session finished



включите в сисопциях mikbill dhcp и посмотрите что пишет в Отчеты :: Логи DHCP

при start=dhcpv4


dhcp - вообще никакой ни нужен

потому что выдача dhcp идет через радиус пакет авторизации


Установил но увы ему опять что то негодно 

Что еще посоветуете?

Правильный ли МАК свича указан в устройствах ? 1C:DB:B9:41:CE:C8  (верхний регистр)

Шаблон opt82 который вы указали (L=2,V=4,L=4,P=2) не верный для данного случая

0x00040010000d

для 16 влана и 13 порта, шаблон будет

0x0004 0010 00 0d = L6,V4,L2,P2

ну результат есть я наверное уже утомил вас но клиент так и не получает ИП 

вот что пишет радиус 


++} # if (ok) = noop
++ ... skipping else for request 2: Preceding "if" was taken
[linelog]       expand: %{reply:DHCP-Message-Type} -> DHCP-Offer
[linelog]       expand: %{%{reply:DHCP-Message-Type}:-%{request:DHCP-Message-Type}} -> DHCP-Offer
[linelog]       expand: %{DHCP-Transaction-Id} OFFER: %{reply:DHCP-Your-IP-Address} to [%{DHCP-Client-Hardware-Address}] ... -> 3839632201 OFFER: 10.200.1.0 to [00:00:00:00:00:06] ...
++[linelog] = ok
++[ok] = ok
+} # group DHCP-Discover = ok
DHCP: Reply will be broadcast
} # server dhcp
        DHCP-Opcode = Server-Message
        DHCP-Hardware-Type = Ethernet
        DHCP-Hardware-Address-Length = 6
        DHCP-Hop-Count = 0
        DHCP-Transaction-Id = 3839632201
        DHCP-Number-of-Seconds = 0
        DHCP-Flags = Broadcast
        DHCP-Client-IP-Address = 0.0.0.0
        DHCP-Your-IP-Address = 10.200.1.0
        DHCP-Server-IP-Address = 10.110.0.10
        DHCP-Gateway-IP-Address = 0.0.0.0
        DHCP-Client-Hardware-Address = 00:00:00:00:00:06
        DHCP-Server-Host-Name = ""
        DHCP-Boot-Filename = ""
        DHCP-Subnet-Mask = 255.255.248.0
        DHCP-Router-Address = 10.200.0.8
        DHCP-Domain-Name-Server = 10.200.0.10
        DHCP-Domain-Name-Server = 8.8.8.8
        DHCP-IP-Address-Lease-Time = 3600
        DHCP-DHCP-Server-Identifier = 10.110.0.10
Sending DHCP-Offer of id e4dc2349 to 255.255.255.255:68
Finished request 2.
Cleaning up request 2 ID -455335095 with timestamp +14


лог ACCEL


^[[1;32m[2017-06-09 15:40:51]:  info: ^[[0;39mipoe: start interface vlan16 (shared=1,mode=L2,start=dhcpv4,ifcfg=1)
^[[1;34m[2017-06-09 15:40:51]: debug: ^[[0;39mlibnetlink: RTNETLINK answers: No such file or directory
^[[0;39m[2017-06-09 15:40:51]:   msg: ^[[0;39maccel-ppp version 928aefd7779593961beca41376dd829c26d58de5
^[[1;32m[2017-06-09 15:43:42]:  info: vlan16: ^[[0;39mrecv [DHCPv4 Discover xid=552d7636 chaddr=00:00:00:00:00:06 <Message-Type Discover> <Client-ID 01000000000006> <Host-Name Admin-PC> <Vendor-Class 4d53465420352e30> <Request-List Subnet,Domain-Name,Router,DNS,44,46,47,31,Route,Classless-Route,249,Vendor-Specific> <Relay-Agent {Agent-Circuit-ID _00040010000d} {Agent-Remote-ID _00061cbdb941cec8}>]
^[[1;32m[2017-06-09 15:43:42]:  info: ipoe0: ^[[0;39mcreate interface ipoe0 parent vlan16
^[[1;34m[2017-06-09 15:43:42]: debug: ipoe0: ^[[0;39mterminate
^[[1;32m[2017-06-09 15:43:42]:  info: ipoe0: ^[[0;39mipoe: session finished
^[[1;32m[2017-06-09 15:43:42]:  info: ipoe0: ^[[0;39mrecv [DHCPv4 Discover xid=4923dce4 chaddr=00:00:00:00:00:06 <Message-Type Discover> <Client-ID 01000000000006> <Host-Name Admin-PC> <Vendor-Class 4d53465420352e30> <Request-List Subnet,Domain-Name,Router,DNS,44,46,47,31,Route,Classless-Route,249,Vendor-Specific> <Relay-Agent {Agent-Circuit-ID _00040010000d} {Agent-Remote-ID _00061cbdb941cec8}>]
^[[1;32m[2017-06-09 15:43:45]:  info: vlan16: ^[[0;39mrecv [DHCPv4 Discover xid=4923dce4 chaddr=00:00:00:00:00:06 <Message-Type Discover> <Client-ID 01000000000006> <Host-Name Admin-PC> <Vendor-Class 4d53465420352e30> <Request-List Subnet,Domain-Name,Router,DNS,44,46,47,31,Route,Classless-Route,249,Vendor-Specific> <Relay-Agent {Agent-Circuit-ID _00040010000d} {Agent-Remote-ID _00061cbdb941cec8}>]
^[[1;32m[2017-06-09 15:43:45]:  info: ipoe0: ^[[0;39mcreate interface ipoe0 parent vlan16
^[[1;34m[2017-06-09 15:43:45]: debug: ipoe0: ^[[0;39mterminate
^[[1;32m[2017-06-09 15:43:45]:  info: ipoe0: ^[[0;39mipoe: session finished

параметр range в сегменте, обязателен ? попробуйте без него

К сожалению лучше не стало все также абонент без IP :(

Убрал ранг из сегмента радиус вообще перестал давать IP


Ready to process requests.
Received DHCP-Discover of id 50873757 from 0.0.0.0:68 to 0.0.0.0:67
        DHCP-Opcode = Client-Message
        DHCP-Hardware-Type = Ethernet
        DHCP-Hardware-Address-Length = 6
        DHCP-Hop-Count = 0
        DHCP-Transaction-Id = 1351038807
        DHCP-Number-of-Seconds = 768
        DHCP-Flags = Broadcast
        DHCP-Client-IP-Address = 0.0.0.0
        DHCP-Your-IP-Address = 0.0.0.0
        DHCP-Server-IP-Address = 0.0.0.0
        DHCP-Gateway-IP-Address = 0.0.0.0
        DHCP-Client-Hardware-Address = 00:00:00:00:00:06
        DHCP-Message-Type += DHCP-Discover
        DHCP-Client-Identifier += 00:00:00:00:00:06
        DHCP-Hostname += "Admin-PC"
        DHCP-Vendor-Class-Identifier += "MSFT 5.0"
        DHCP-Parameter-Request-List += DHCP-Subnet-Mask
        DHCP-Parameter-Request-List += DHCP-Domain-Name
        DHCP-Parameter-Request-List += DHCP-Router-Address
        DHCP-Parameter-Request-List += DHCP-Domain-Name-Server
        DHCP-Parameter-Request-List += DHCP-NETBIOS-Name-Servers
        DHCP-Parameter-Request-List += DHCP-NETBIOS-Node-Type
        DHCP-Parameter-Request-List += DHCP-NETBIOS
        DHCP-Parameter-Request-List += DHCP-Perform-Router-Discovery
        DHCP-Parameter-Request-List += DHCP-Static-Routes
        DHCP-Parameter-Request-List += DHCP-Classless-Static-Route
        DHCP-Parameter-Request-List += 249
        DHCP-Parameter-Request-List += DHCP-Vendor
        DHCP-Relay-Circuit-Id = 0x00040010000d
        DHCP-Relay-Remote-Id = 0x00061cbdb941cec8
server dhcp {
Trying sub-section dhcp DHCP-Discover {...}
+group DHCP-Discover {
++update reply {
++} # update reply = noop
[linelog]       expand: %{reply:DHCP-Message-Type} ->
[linelog]       ... expanding second conditional
[linelog]       expand: %{request:DHCP-Message-Type} -> DHCP-Discover
[linelog]       expand: %{%{reply:DHCP-Message-Type}:-%{request:DHCP-Message-Typ                                                                                        e}} -> DHCP-Discover
[linelog]       expand: %{DHCP-Transaction-Id} DISCOVER: [%{DHCP-Client-Hardware                                                                                        -Address}] via (%{DHCP-Gateway-IP-Address}) %{DHCP-Hostname} -> 1351038807 DISCO                                                                                        VER: [00:00:00:00:00:06] via (0.0.0.0) Admin-PC
++[linelog] = ok
rlm_perl: Added pair DHCP-Your-IP-Address = 0.0.0.0
rlm_perl: Added pair DHCP-Relay-Circuit-Id = 0x00040010000d
rlm_perl: Added pair DHCP-Message-Type = DHCP-Discover
rlm_perl: Added pair DHCP-Vendor-Class-Identifier = MSFT 5.0
rlm_perl: Added pair DHCP-Hop-Count = 0
rlm_perl: Added pair DHCP-Relay-Remote-Id = 0x00061cbdb941cec8
rlm_perl: Added pair DHCP-Number-of-Seconds = 768
rlm_perl: Added pair DHCP-Client-IP-Address = 0.0.0.0
rlm_perl: Added pair DHCP-Gateway-IP-Address = 0.0.0.0
rlm_perl: Added pair DHCP-Hardware-Type = Ethernet
rlm_perl: Added pair DHCP-Flags = Broadcast
rlm_perl: Added pair DHCP-Hardware-Address-Length = 6
rlm_perl: Added pair DHCP-Hostname = Admin-PC
rlm_perl: Added pair DHCP-Opcode = Client-Message
rlm_perl: Added pair DHCP-Transaction-Id = 1351038807
rlm_perl: Added pair DHCP-Parameter-Request-List = DHCP-Subnet-Mask
rlm_perl: Added pair DHCP-Parameter-Request-List = DHCP-Domain-Name
rlm_perl: Added pair DHCP-Parameter-Request-List = DHCP-Router-Address
rlm_perl: Added pair DHCP-Parameter-Request-List = DHCP-Domain-Name-Server
rlm_perl: Added pair DHCP-Parameter-Request-List = DHCP-NETBIOS-Name-Servers
rlm_perl: Added pair DHCP-Parameter-Request-List = DHCP-NETBIOS-Node-Type
rlm_perl: Added pair DHCP-Parameter-Request-List = DHCP-NETBIOS
rlm_perl: Added pair DHCP-Parameter-Request-List = DHCP-Perform-Router-Discovery
rlm_perl: Added pair DHCP-Parameter-Request-List = DHCP-Static-Routes
rlm_perl: Added pair DHCP-Parameter-Request-List = DHCP-Classless-Static-Route
rlm_perl: Added pair DHCP-Parameter-Request-List = 249
rlm_perl: Added pair DHCP-Parameter-Request-List = DHCP-Vendor
rlm_perl: Added pair DHCP-Client-Hardware-Address = 00:00:00:00:00:06
rlm_perl: Added pair DHCP-Server-IP-Address = 0.0.0.0
rlm_perl: Added pair DHCP-Client-Identifier = 00:00:00:00:00:06
rlm_perl: Added pair DHCP-DHCP-Server-Identifier = 10.200.0.10
++[perl] = reject
+} # group DHCP-Discover = reject
} # server dhcp
Finished request 0.
Cleaning up request 0 ID 1351038807 with timestamp +6



Что не так помогите


Что в Отчеты :: Логи DHCP ?

Может проблема в ACCEL ? А то IPOE не подымает вот логи

^[[1;32m[2017-06-15 08:13:49]:  info: vlan16: ^[[0;39mrecv [DHCPv4 Discover xid=19137de8 chaddr=00:19:5b:87:13:59 <Message-Type Discover> <Client-ID 0100195b871359> <Host-Name Admin-PC> <Vendor-Class 4d53465420352e30> <Request-List Subnet,Domain-Name,Router,DNS,44,46,47,31,Route,Classless-Route,249,Vendor-Specific> <Relay-Agent {Agent-Circuit-ID _00040010000d} {Agent-Remote-ID _00061cbdb941cec8}>]
^[[1;34m[2017-06-15 08:13:49]: debug: vlan16: ^[[0;39mterminate
^[[1;32m[2017-06-15 08:13:49]:  info: vlan16: ^[[0;39mipoe: session finished

Как видим по непонятным причинам идет завершение сессии



Ну как же "по непонятным", если в логах видно что "Не обнаружено устройство по МАС".

В устройствах точно указан правильный МАК свича в верхнем регистре

Было в нижнем так как в верхнем вообще вот что пишет в логах 

dron_kss, добавьте, пожалуйста, в скайп контакт musikboxik или напишите на sales@mikbill.ru контакты 

Это пишет АССЕЛ при нижнем регистре

^[[1;32m[2017-06-15 09:48:20]:  info: vlan16: ^[[0;39mrecv [DHCPv4 Discover xid=19137de8 chaddr=00:19:5b:87:13:59 <Message-Type Discover> <Client-ID 0100195b871359> <Host-Name Admin-PC> <Vendor-Class 4d53465420352e30> <Request-List Subnet,Domain-Name,Router,DNS,44,46,47,31,Route,Classless-Route,249,Vendor-Specific> <Relay-Agent {Agent-Circuit-ID _00040010000d} {Agent-Remote-ID _00061cbdb941cec8}>]

^[[1;32m[2017-06-15 09:48:20]:  info: ipoe0: ^[[0;39mcreate interface ipoe0 parent vlan16
^[[1;34m[2017-06-15 09:48:20]: debug: ipoe0: ^[[0;39mterminate
^[[1;32m[2017-06-15 09:48:20]:  info: ipoe0: ^[[0;39mipoe: session finished

Сервис поддержки клиентов работает на платформе UserEcho