| Linha 24: | Linha 24: | ||
* Depois reinicie o SSH | * Depois reinicie o SSH | ||
<blockquote><pre>/etc/init.d/ssh restart</pre></blockquote> | <blockquote><pre>/etc/init.d/ssh restart</pre></blockquote> | ||
| − | + | ==Agora vamos instalar o Accel-PPP== | |
* Baixe os pacotes do Accel-PPP no seu Debian | * Baixe os pacotes do Accel-PPP no seu Debian | ||
| − | <blockquote><pre>apt-get install -y build-essential cmake gcc linux-headers-`uname -r` git libpcre3-dev libssl-dev liblua5.1-0-dev</pre></blockquote> | + | <blockquote><pre>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 | ||
| + | </pre></blockquote> | ||
* Agora crie um diretório para baixar o projeto do git | * Agora crie um diretório para baixar o projeto do git | ||
| − | <blockquote><pre>mkdir -p /usr/local/src/accel/build</pre></blockquote> | + | <blockquote><pre> |
| + | mkdir -p /usr/local/src/accel | ||
| + | mkdir -p /usr/local/src/accel/build | ||
| + | </pre></blockquote> | ||
* Agora entre nesse diretório criado | * Agora entre nesse diretório criado | ||
<blockquote><pre>cd /usr/local/src/accel</pre></blockquote> | <blockquote><pre>cd /usr/local/src/accel</pre></blockquote> | ||
| Linha 67: | Linha 73: | ||
systemctl status accel-ppp | systemctl status accel-ppp | ||
</pre></blockquote> | </pre></blockquote> | ||
| + | |||
| + | ==Patch Mikrotik Rate Limit== | ||
| + | |||
| + | <blockquote><pre> | ||
| + | --- 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;</pre></blockquote> | ||
| + | |||
__NOEDITSECTION__ | __NOEDITSECTION__ | ||
Edição das 11h05min de 23 de junho de 2020
Índice
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 como Controllr.
Instalação do Accel-PPP
Você pode usar tanto o Linux quando o Debian, ou outro derivado 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
- Habilitar login root via putty:
apt-get install joe
- 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
- 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;
