IPoE Server com VYOS
Primeiras Configurações
set system time-zone America/Campo_Grande
set system login user suporten1 authentication plaintext-password suporte123 * Criando usuario Suporte N1*
set system login banner pre-login "Suporte Tel: (XX)XXXX:XXXX" * Banner antes do login*
set system login banner post-login "Bem-vindo, log ativo!" * Banner apos o login*
set service ssh access-control allow user suporten1 *Permitindo usuario logar com ssh*
set service ssh listen-address 172.16.200.6 *Por onde ssh vai responder*
set system sysctl parameter net.ipv6.conf.default.addr_gen_mode value 0 #Para IPV6 Funcionar
run show users
Otimização de placa de rede e driver.
Muitas interfaces de rede modernas oferecem suporte ao ajuste fino. Recomendamos começar a partir do tamanho do buffer da fila em anel - esse buffer é usado para salvar ponteiros em dados, que foram recebidos da NIC ou devem ser transferidos por meio dela. Por padrão, os drivers definem algum valor "ótimo", mas nem sempre pode atender aos requisitos. Em duas palavras:
-
o tamanho alto do buffer de anel leva a menos uso da CPU devido à baixa frequência de interrupções relacionadas à rede. Mas, devido a isso, torne a latência um pouco maior. Preferida para sistemas de altas cargas;
-
o tamanho baixo do buffer de anel leva ao alto uso da CPU e até mesmo a quedas de pacotes, caso a taxa de pacotes seja muito alta. Mas diminui a latência. Preferido para sistemas sensíveis à latência.
Para verificar seus valores atuais de buffers de anel, você pode usar o próximo comando:
sudo ethtool -g eth0
vyos@test-05:~$ sudo ethtool -g eth3
Ring parameters for eth3:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 128
RX Mini: 0
RX Jumbo: 0
TX: 128
Como você pode ver, nossa placa de rede suporta valores de até 4096, mas a configuração atual é 128.
Para alterar esse valor, você precisa adicionar as próximas linhas ao arquivo "/config/scripts/vyos-postconfig-bootup.script":
Este comando alterará os valores de RX e TX para 4096 a cada inicialização.
ethtool -G eth0 tx 4096 rx 4096
SMP Affinity
O SMP Affinity permite atribuir IRQs a processadores específicos. Por padrão, o VyOS configura a afinidade SMP distribuindo automaticamente NICs pela CPU. Mas você também pode configurá-lo manualmente para necessidades específicas.
Para um desempenho ideal, um núcleo de CPU dedicado pode ser atribuído a cada interface de rede. Você pode ver manualmente o IRQ para cada interface em /proc/interrupts, por exemplo
vyos@vyos:~$ cat /proc/interrupts | grep eth
16: 930 IO-APIC-fasteoi eth1
19: 2445 IO-APIC-fasteoi eth0
Binary Hex
CPU 0 0001 1
CPU 1 0010 2
CPU 2 0100 4
CPU 3 1000 8
set interfaces ethernet eth0 smp_affinity 1
set interfaces ethernet eth1 smp_affinity 2
Manualmente, isso seria:
echo 1 > /proc/irq/16/smp_affinity
echo 2 > /proc/irq/19/smp_affinity
Observe que os sistemas mais novos podem ter vários IRQs para cada interface, por exemplo
30: 3176819 3181843 PCI-MSI-edge eth0-rx-0
31: 393 343 PCI-MSI-edge eth0-tx-0
32: 5 5 PCI-MSI-edge eth0
33: 3696151744 3709942356 PCI-MSI-edge eth1-rx-0
34: 3110055844 3108916060 PCI-MSI-edge eth1-tx-0
35: 1674002 1673645 PCI-MSI-edge eth1
36: 695750170 650735677 PCI-MSI-edge eth2-rx-0
37: 2838722531 2838813824 PCI-MSI-edge eth2-tx-0
38: 879793 879761 PCI-MSI-edge eth2
39: 51381461 50904827 PCI-MSI-edge eth3-rx-0
40: 9658376 9570304 PCI-MSI-edge eth3-tx-0
41: 5 7 PCI-MSI-edge eth3
Aqui, para cada interface, IRQs separados são usados para RX, TX e controle. O VyOS atribuirá a mesma afinidade a cada uma das filas associadas a uma interface de rede específica.
Se o smp-affinity auto estiver configurado, o VyOS tentará distribuir NICs entre os núcleos da CPU automaticamente.
Criando VLAN na Interface
Vamos criar a vlan para rodar o ipoe server
configure
set interfaces ethernet eth0 vif 30 description " VLAN.30 IPOE SERVER "
run show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
eth0 - u/u
eth0.20 172.16.70.106/30 u/u entrada-cgnat
eth0.30 - u/u VLAN.30 IPOE SERVER #NOSSA_VLAN
lo 127.0.0.1/8 u/u
::1/128
Configurando IPoE + Radius
edit service ipoe-server
set authentication mode radius
set authentication radius acct-timeout 10
set authentication radius acct-interim-jitter 10
set authentication radius nas-identifier Server-IPoE "Nome do NAS"
set authentication radius nas-ip-address 172.16.70.106 "IP do NAS"
set authentication radius preallocate-vif
set authentication radius server 172.16.0.2 "IP DO RADIUS"
set authentication radius server 172.16.0.2 acct-port 1813
set authentication radius server 172.16.0.2 fail-time 10
set authentication radius server 172.16.0.2 key @senha-radius
set authentication radius server 172.16.0.2 port 1812
set authentication radius dynamic-author server 172.16.70.106
set authentication radius dynamic-author key @infoteccr
set authentication radius dynamic-author port 3799
"eth0.30" interface com vlan que ira rodar o ipoe server
set interface eth0.30 network shared
set interface eth0.30 network-mode L2
set name-server 186.233.4.18 "DNS entregue pelo Ipoe normalmente o dns do provedor fica como dsn=1"
set name-server 8.8.8.8 " DNS 2 "
set service ipoe-server client-ip-pool name bloqueado gateway-address 100.100.248.1 #Se o Radius fazer bloqueio pela pool solicite o nome da pool, no nosso caso é a pool "bloqueado"
set service ipoe-server client-ip-pool name bloqueado subnet 100.100.248.0/24
commit
save
Incluir IPoE nos moculos do sistema
Nem todas as config. estao disponiveis por linha de comando, por isto vamos configurar alguns arquivos manualmente.
entre com o comando
sudo su
Para incluir ipoe no boot do sistema
grep ipoe /etc/modules || echo "ipoe" >> /etc/modules
cat /etc/modules
Criando o arquivo LUA, este arquivo vai ser responsavel por capturar o metodo de login.
crie o arquivo com o comando
# nano /usr/share/vyos/templates/accel-ppp/ipoe.lua
function username(pkt)
return pkt:hdr('chaddr')
end
Criando arquivo estatico
Toda vez que reiniciamos o VYOS, as configurações são geradas novamente, e alguns ajustes como o shaper nao estao incluidos no CLI, então iremos criar um arquivo estatico com as configurações geradas, e vamos realizar alguns ajustes.
crie um backup do arquivo gerado automaticamente pelo Python
cp /run/accel-pppd/ipoe.conf /config/ipoe.conf
Vamos criar um backup da UNIT do systemd responsavel por subir o accel-ppp
cp /usr/lib/systemd/system/accel-ppp@.service /config/accel-ppp@.service.backup
Proximo passo é ajustar o arquivo "accel-ppp@.service" para que nosso arquivo estatico ipoe.conf suba, é necessario ajustar.
Vamos substituir a linha
ExecStart=/usr/sbin/accel-pppd -d -p /run/accel-pppd/%i.pid -c /run/accel-pppd/%i.conf
Por
ExecStart=/usr/sbin/accel-pppd -d -p /run/accel-pppd/%i.pid -c /config/ipoe.conf
sudo systemctl daemon-reload
reboot
ps ax | grep accel-ppp
root@vyos:/# ps ax | grep accel-ppp
1491 ? Ssl 0:00 /usr/sbin/accel-pppd -d -p /run/accel-pppd/ipoe.pid -c /config/ipoe.conf
Finalizando com alguns ajustes do arquivo de config. do IPoE
agora com o arquivo estatico criado e funcional, vamos editar alguns parametros
nano /config/ipoe.conf
vamos adicionar alguns parametros, sempre a baixo do parametro "verbose" para nao correr risco de colar o comando dentro da arvore do script e quebra-lo
[modules]
shaper
lua
[radius]
verbose=1
acct-interim-interval=10
[ipoe]
verbose=1
lua-file=/usr/share/vyos/templates/accel-ppp/ipoe.lua # Informamos aonde o script LUA se encontra
username=lua:username # Usamos o arquivo para gerar o usuario
password=username # se este campo for "username" a senha vai ser a mesma do login
gw-ip-address=100.64.0.1/20 # o gateway vai ser o primeiro IP do bloco que sera distribuido pelo radius.
e por ultimo, o shaper, e alguns ajustes para informações a mais.
[shaper]
verbose=1
vendor=Mikrotik
attr=Mikrotik-Rate-Limit
ifb=ifb0
up-limiter=htb
down-limiter=tbf
[cli]
tcp=127.0.0.1:2002
sessions-columns=ifname,type,calling-sid,username,rate-limit,called-sid,ip,uptime,tx-bytes,state
finalizado as configurações, vamos reiniciar o serviço
sudo systemctl restart accel-ppp@pppoe.service
exit
vamos verificar se nosso usuario subiu.
show ipoe-server sessions
ifname | type | calling-sid | username | rate-limit | called-sid | ip | uptime | tx-bytes | state
--------+------+-------------------+-------------------+---------------+------------+--------------+----------+----------+--------
ipoe0 | ipoe | 6c:3b:6b:ea:48:e1 | 6c:3b:6b:ea:48:e1 | 122000/122000 | eth0.30 | 100.64.7.185 | 00:22:34 | 13.8 KiB | active
Observação importante, ao finalizar toda esta arvore de comandos, cuidado ao fazer alguma alteração pelo CLI do VYOS, pois ao efetuar alguma configuração ele altera o arquivo "accel-ppp@.service" assim ele para de funcionar