Mudanças entre as edições de "Controllr/Manual/Accel-PPP"

De BrByte Wiki
Linha 200: Linha 200:
 
==Accel-PPP Configuração==
 
==Accel-PPP Configuração==
  
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:auto; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">joe /etc/accel-ppp.conf</div>
 +
<div class="mw-collapsible-content">
 
<blockquote><pre>
 
<blockquote><pre>
 
[modules]
 
[modules]
Linha 532: Linha 535:
 
# interface=eth0
 
# interface=eth0
 
</pre></blockquote>
 
</pre></blockquote>
 +
</div></div>
  
 +
=Dicionario do Mikrotik=
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:auto; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">find / -name 'dictionary*'</div>
 +
<div class="mw-collapsible-content">
 +
<blockquote><pre>
 +
# MikroTik vendor specific dictionary
 +
# Copyright (C) MikroTikls, SIA
 +
#
 +
# You may freely redistribute and use this software or any part of it in source
 +
# and/or binary forms, with or without modification for any purposes without
 +
# limitations, provided that you respect the following statement:
 +
#
 +
# This software is provided 'AS IS' without a warranty of any kind, expressed or
 +
# implied, including, but not limited to, the implied warranty of
 +
# merchantability and fitness for a particular purpose. In no event shall
 +
# MikroTikls SIA be liable for direct or indirect, incidental, consequential or
 +
# other damages that may result from the use of this software, including, but
 +
# not limited to, loss of data, time and (or) profits.
 +
#
 +
# $Id: dictionary.mikrotik,v 1.8 2019/12/20 11:02:37 strods Exp $
 +
#
 +
# MikroTik Attributes
 +
 +
VENDOR          Mikrotik        14988
 +
 +
BEGIN-VENDOR    Mikrotik
 +
 +
ATTRIBUTE      Mikrotik-Recv-Limit            1  integer
 +
ATTRIBUTE      Mikrotik-Xmit-Limit            2  integer
 +
ATTRIBUTE      Mikrotik-Group                  3  string 
 +
ATTRIBUTE      Mikrotik-Wireless-Forward      4  integer
 +
ATTRIBUTE      Mikrotik-Wireless-Skip-Dot1x    5  integer
 +
ATTRIBUTE      Mikrotik-Wireless-Enc-Algo      6  integer
 +
ATTRIBUTE      Mikrotik-Wireless-Enc-Key      7  string
 +
ATTRIBUTE      Mikrotik-Rate-Limit            8  string
 +
ATTRIBUTE      Mikrotik-Realm                  9  string
 +
ATTRIBUTE      Mikrotik-Host-IP                10  ipaddr
 +
ATTRIBUTE      Mikrotik-Mark-Id                11  string
 +
ATTRIBUTE      Mikrotik-Advertise-URL          12  string
 +
ATTRIBUTE      Mikrotik-Advertise-Interval    13  integer
 +
ATTRIBUTE      Mikrotik-Recv-Limit-Gigawords  14  integer
 +
ATTRIBUTE      Mikrotik-Xmit-Limit-Gigawords  15  integer
 +
ATTRIBUTE      Mikrotik-Wireless-PSK          16  string
 +
ATTRIBUTE      Mikrotik-Total-Limit            17  integer
 +
ATTRIBUTE      Mikrotik-Total-Limit-Gigawords  18  integer
 +
ATTRIBUTE      Mikrotik-Address-List          19  string
 +
ATTRIBUTE      Mikrotik-Wireless-MPKey        20  string
 +
ATTRIBUTE      Mikrotik-Wireless-Comment      21  string
 +
ATTRIBUTE      Mikrotik-Delegated-IPv6-Pool    22  string
 +
ATTRIBUTE      Mikrotik-DHCP-Option-Set        23  string
 +
ATTRIBUTE      Mikrotik-DHCP-Option-Param-STR1 24  string
 +
ATTRIBUTE      Mikortik-DHCP-Option-Param-STR2 25  string
 +
ATTRIBUTE      Mikrotik-Wireless-VLANID        26  integer
 +
ATTRIBUTE      Mikrotik-Wireless-VLANIDtype    27  integer
 +
ATTRIBUTE      Mikrotik-Wireless-Minsignal    28  string
 +
ATTRIBUTE      Mikrotik-Wireless-Maxsignal    29  string
 +
ATTRIBUTE      Mikrotik-Switching-Filter      30  string
 +
 +
# MikroTik Values
 +
 +
VALUE          Mikrotik-Wireless-Enc-Algo            No-encryption                  0
 +
VALUE          Mikrotik-Wireless-Enc-Algo            40-bit-WEP                    1
 +
VALUE          Mikrotik-Wireless-Enc-Algo            104-bit-WEP                    2
 +
VALUE          Mikrotik-Wireless-Enc-Algo            AES-CCM                        3
 +
VALUE          Mikrotik-Wireless-Enc-Algo            TKIP                          4
 +
VALUE          Mikrotik-Wireless-VLANIDtype          802.1q                        0
 +
VALUE          Mikrotik-Wireless-VLANIDtype          802.1ad                        1
 +
 +
END-VENDOR      Mikrotik
 +
</pre></blockquote>
 +
</div></div>
 +
Você pode pegar o dicionário do Mikrotik direto no site deles.
 +
 +
https://wiki.mikrotik.com/wiki/Manual:RADIUS_Client/vendor_dictionary
  
 
__NOEDITSECTION__
 
__NOEDITSECTION__

Edição das 18h54min de 26 de junho de 2020

Controllr > Accel-PPP

O Accel-PPP é um software compilado para ser usando em diversos serviços de autenticação, compatível com o protocolo Radius. Como por exemplo autenticação PPPoE, IPoE, etc... Essa ferramenta pode ser usada em conjunto com o Controllr.

Instalação do Debian10

Você pode usar tanto o Ubuntu quando o Debian, ou outro derivado do LINUX que seja compatível para instalar o seu Accel-PPP. No exemplo a seguir, iremos ensinar como pode ser instalado no Debian versão 10.4.0 (Download 64x ISO)

  • Baixe a ISO e realize a instalação do seu Debian.
    • OBS: Se preferir, no momento da instalação escolha somente a opção via terminal shell (SSH), sem interface gráfica (web)
  • Dicas Debian
    • Habilitar login root via putty:
      • Instale o editor de arquivos joe
apt-get install joe

-- Comandos JOE
CURSOR                     MOVER                      MARCAR BLOCO
 ^B esquerda                ^U  tela anterior          ^KB início  
 ^P cima                    ^V  tela posterior         ^KK final    
 ^Z palavra anterior        ^A  início da linha        ^KM mover   
 ^X palavra posterior       ^E  fim da linha           ^KC copiar   
 ^F direita                 ^KU início do arquivo      ^KW salvar  
 ^N baixo                   ^KV final do arquivo       ^KY apagar
                            ^KL mover para linha       ^K/ filtro

 DELETAR                MISCELÂNEA              SAIR   
 ^D caracter            ^KJ reformatar          ^KX salvar   
 ^Y linha               ^T  opções              ^C  abortar  
 ^W palavra a direita   ^R  refrescar           ^KZ shell  
 ^O palavra a esquerda  ^@  inserir             ARQUIVO      
 ^J final da linha      SPELL                   ^KE editar 
 ^_ desfazer            ^[N palavra             ^KR inserir 
 ^^ refazer             ^[L arquivo             ^KD salvar  

 BUSCA          
 ^KF procurar texto   
 ^L  procurar próximo
*^ = CTRL*
  • Abra o arquivo:
joe /etc/ssh/sshd_config
  • Edite as linha tirando o # e mudando para yes
PermitRootLogin yes
  • Após editar o arquivo:
CTRL + K
CTRL + X
  • Depois reinicie o SSH
/etc/init.d/ssh restart

Agora vamos instalar o Accel-PPP

  • Baixe os pacotes do Accel-PPP no seu Debian
apt-get install -y build-essential cmake gcc linux-headers-`uname -r` git libpcre3-dev libssl-dev liblua5.1-0-dev

-- Se não tiver o LIB SNMP instale-o, depois rode novamente o comando acima
apt-get install libsnmp-dev 
  • Agora crie um diretório para baixar o projeto do git
mkdir -p /usr/local/src/accel
mkdir -p /usr/local/src/accel/build
  • Agora entre nesse diretório criado
cd /usr/local/src/accel
  • Depois irar fazer o clone do projeto do git do Accel-PPP
git clone https://github.com/xebd/accel-ppp.git

Compilação

  • Após clonar do git acesse o diretório da Build
cd /usr/local/src/accel/build
  • Dentro do diretório da Build, irá escolher o que será compilado, conforme sua necessidade
cmake -DCPACK_TYPE=Debian10 -DBUILD_IPOE_DRIVER=TRUE -DBUILD_VLAN_MON_DRIVER=TRUE -DRADIUS=TRUE -DNETSNMP=TRUE -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr -DKDIR=/usr/src/linux-headers-$(uname -r) ../accel-ppp
  • Agora irá compilar o Accel-PPP no Debian
make
  • Após irá copiar o modulo do Kernel Vlan_mon e IPoE em seguida carregue-os
cp drivers/ipoe/driver/ipoe.ko /lib/modules/$(uname -r)
cp drivers/vlan_mon/driver/vlan_mon.ko /lib/modules/$(uname -r)
depmod -a
modprobe  vlan_mon
modprobe  ipoe
  • Devemos adicionar os módulos para iniciarem com o Boot
echo "vlan_mon" >> /etc/modules
echo "ipoe" >> /etc/modules
  • Iremos criar o pacote .DEB
cpack -G DEB
apt install ./accel-ppp.deb

Instalação do Accel-PPP Completa no seu Debian

  • Agora habilite o seu Accel-PPP para iniciar com o seu Debian
systemctl enable accel-ppp
  • O pacote vem com um modelo de exemplo, jogue esse modelo de configuração no seu Accel-PPP e edite-o conforme a sua necessidade.
cp /etc/accel-ppp.conf.dist  /etc/accel-ppp.conf
  • Apos a edição do arquivo, sempre reinicie o seu Accel-PPP
systemctl restart accel-ppp
systemctl status accel-ppp

Patch Mikrotik Rate Limit

--- git a/accel-ppp/accel-pppd/shaper/shaper.c b/accel-ppp/accel-pppd/shaper/shaper.c
--- a/accel-ppp/accel-pppd/shaper/shaper.c
+++ b/accel-ppp/accel-pppd/shaper/shaper.c
@@ -196,7 +196,9 @@ static struct shaper_pd_t *find_pd(struct ap_session *ses, int create)
 static void parse_string_simple(const char *str, int dir, int *speed, int *burst, int *tr_id)
 {
 	char *endptr;
+	char *endstr;
 	long int val;
+	long int bandw;
 
 	val = strtol(str, &endptr, 10);
 	if (*endptr == 0) {
@@ -211,15 +213,38 @@ static void parse_string_simple(const char *str, int dir, int *speed, int *burst
 		*speed = conf_multiplier * val;
 		return;
 	} else {
-		if (*endptr == '/' || *endptr == '\\' || *endptr == ':') {
-			if (dir == ATTR_DOWN)
-				*speed = conf_multiplier * val;
-			else
-				*speed = conf_multiplier * strtol(endptr + 1, &endptr, 10);
+		if (*endptr == 'k' || *endptr == 'K' || *endptr == 'm' || *endptr == 'M') {
+			endstr = endptr;
+			endptr++;
+			if (*endptr == '/' || *endptr == '\\' || *endptr == ':') {
+				if (dir == ATTR_UP) {
+					bandw = conf_multiplier * val;
+					if (*endstr == 'm' || *endstr == 'M') {
+						*speed = bandw * 1024;
+					} else {
+						*speed = bandw;
+					}
+				} else {
+					bandw = conf_multiplier * strtol(endptr + 1, &endptr, 10);
+					if (*endptr == 'm' || *endptr == 'M') {
+						*speed = bandw * 1024;
+					} else {
+						*speed = bandw;
+					}
+				}
+			}
+		} else {
+			if (*endptr == '/' || *endptr == '\\' || *endptr == ':') {
+				if (dir == ATTR_DOWN)
+					*speed = conf_multiplier * val;
+				else
+					*speed = conf_multiplier * strtol(endptr + 1, &endptr, 10);
+			}
 		}
 	}
 }
 
+
 static void parse_string(const char *str, int dir, int *speed, int *burst, int *tr_id)
 {
 	long int val;

Poderá copiar do Pastebin

https://pastebin.com/DV8cLzyS

Esse patch deve ser jogado no seu Accel-PPP para que você consiga usar o vendor Mikrotik Rate limit no Shaper.

  • Copie essas linhas de código e salve com a extensão .patch
  • Depois jogue esse arquivo no diretório cd /usr/local/src/accel
    • Poderá transferir via SCP, segue exemplo de como transferir usando o CMD do Windows:
scp -P (porta ssh)(diretório onde se encontra o arquivo) (usuário@X.X.X.X):(diretório que irá mandar o arquivo)

scp -P 22 D:/ISO/MK-rate-limit.patch root@192.168.142.227:/usr/local/src/accel
  • Outra opção é fazer tudo via shell
cd /usr/local/src/accel
touch MK-rate-limit.patch
joe MK-rate-limit.patch
-- Colar o script

CTRL + K
CTRL + X
--Por fim rodar o patch
patch -p 1 < MK-rate-limit.patch

-- Confira se subiu o patch corretamente
cat /usr/local/src/accel/accel-ppp/accel-pppd/shaper/shaper.c | grep -A50 'static void parse_string_simple'

Agora volte para a compilação do seu Accel-PPP


Accel-PPP Configuração

Expandir
joe /etc/accel-ppp.conf

Dicionario do Mikrotik

Expandir
find / -name 'dictionary*'

Você pode pegar o dicionário do Mikrotik direto no site deles.

https://wiki.mikrotik.com/wiki/Manual:RADIUS_Client/vendor_dictionary