# # Slackmini / vRouter # # O slackmini e' uma distribuicao Linux personalizada # por Patrick Brandao, por contar com varios softwares # de propriedade intelectual do autor ela nao e' gratuita # Seu uso e' permitido para teste ou dentro de contratos # especificos de suporte a software. # Ao utilizar o software voce assume as responsabilidades # diretas e indiretas de sua aplicacao, se houver alguma # duvida quanto a direitos de uso, recursos, impactos # e responsabilidade, nao o utilize e entre em contato # por e-mail: patrickbrandao@gmail.com # NOTA ************************************* Todas as instrucoes aqui presentes sao somente para a versao 2 (beta), todas as correcoes presentes aqui serao desnecessarias na versao 3. # Instrucoes basicas #------------------------------------------- 1 - Instale a ISO: Slackmini - versao normal, roda em vm ou baremetal Ultima ISO estavel: http://downloads.slackmini.com.br/isos/tmsoft-slackmini-2.0-20180125-2112.iso Slackmini Versao 3 - Beta 1 (beeping apenas), atualizavel ISO de teste: http://beta9.slackmini.com.br/isos/nuva-slackmini-3.0.iso 2 - Recursos: Minimo para funcionar: 4 cores, 4 gigas de ram, 10 gigas de disco Recomendavel: 8 cores, 8 gigas de ram, 20 gigas de disco Configuracao em maquina virtual: > ESCOLHA: Debian 10 ou 11 - 64 bits como modelo > O tipo de disco precisa ser SCSI > O tipo de controladora SCSI precisa ser VMWARE PARAVIRTUAL > O tipo de placa de rede precisa ser VMXNET3 > Nas propriedades de CPU e MEMORIA, coloque os shareds em HIGH > Nas propriedades de MEMORIA, marcar a opcao RESERVED (checkbox, marque-o) > Recomendo criar reserva de CPU e RAM em pelo menos 50% > Recomendo que faca afinidade nas VMs para que cada vm fique com seus proprios nucleos, isole maquinas windows em nucleos proprios para que elas nao atrapalhem as maquinas criticas Configuracao de maquina fisica (basemetal) > Entre na BIOS e encontre o menu POWER MANAGEMENT: - Na opcao POWER MANAGEMENT escolha CUSTOM e defina nas opcoes abaixo: --> CPU Power And Performance Management ...... => MAXIMUM PERFORMANCE --> FAN Power and Performance Managment ....... => MAXIMUM PERFORMANCE --> Memory Power and Performance Management ... => MAXIMUM PERFORMANCE ESC para voltar > ESC para sair > ESCOLHA "Save changes and exist" O Software requer homologacao de hardware, para ignorar a homologacao, execute: date > /etc/smh-skip 3 - Para instalar de BOOT usando metodo BIOS (nao funciona no metodo UEFI) via CD/DVD Para usar pendrive, utilize o software UNETBOOTIN (procure no google), ou RUFUS: https://rufus.ie/ Instale (so tem 3 perguntas) e retire o CD/DVD/Pendrive quando ele reiniciar 4 - Entrando no sistema Usuario: root Senha: tulipa Para colocar IP temporario (nao salva), use o comando: ipconfig Para colocar IP definitivo e gateway, use: zeroshell Manual do zeroshell: http://manual.slackmini.com.br/ Acesso via SSH: porta 1822 Acesso via WEB: porta 1900 (futuramente sera' 1800) Usuario: admin Senha: tulipa Os servicoes internos nao funcionam sem a licenca de uso. O software nao funcionara em hardware desconhecido. Caso apresente algum erro de homologacao, tire um print-screen legivel da tela de erro e envie para: patrickbrandao@gmail.com Para abrir nova porta HTTP, necessario editar: /admin/share/admin/lighttpd.conf E adicionar (nao precisa fazer na v3): $SERVER["socket"] == "0.0.0.0:1800" { } $SERVER["socket"] == "[::]:1800" { } 5 - Usando o sistema Navegue em todos os menus e se acostume primeiro. Teste bem antes de reportar um bug. Ativar licenca via linha de comando: /admin/bin/license/auth.php LICENCA USUARIO SENHA Apagar todos os dados da licenca: /admin/bin/license/drop-license.php 6 - Backup A versao 2 nao possui backup pelo sistema, requer backup manual: wget http://tmsoft.com.br/temp/slackmini-backup.sh -O /root/slackmini-backup.sh chmod +x /root/slackmini-backup.sh sh /root/slackmini-backup.sh Backups sao gerados em /backup/ no formato: backup-slackmini-2.0-LICENSE-UUID-ANO-MES-DIA-HORAMINUTO.txz Recuperando (cuidado, vai sobrescrever a config atual, requer reboot): tar -xvf /backup/backup-slackmini-2.0-LICENSE-UUID-ANO-MES-DIA-HORAMINUTO.txz -C / reboot 7 - Atualizar kernel da v2 para versao mais nova Atualize todos os pacotes, comando: uxpkg -all Baixe o kernel: cd /root/ PKGK=kernel-3.0.txz LOCALPKGK=/root/$PKGK URLK=http://beta9.slackmini.com.br/packages/3.0/kernel-3.0.txz SRC=x.x.x.x wget "$URLK" -O $LOCALPKGK || echo " FALHOU COM ERRO $? AO BAIXAR $URLK " # curl -o $LOCALPKGK --interface $SRC "$URLK" [ -f "$LOCALPKGK" ] && rm -rf /boot/* /lib/modules/* 2>/dev/null ixpkg $LOCALPKGK [ -f "$LOCALPKGK" ] && find /var | egrep kernel | while read x; do rm $x; done lilo 8 - Redirecionar e restringir clientes bloqueados que foram autorizados pelo RADIUS em faixa IP especifica Obs.: Apenas na v2 do slackmini/vrouter Obs.: Cabe ao RADIUS entregar o IP na faixa de bloqueio no parametro FRAMED-IP-ADDRESS, nao suporta pool wget http://tmsoft.com.br/temp/slackmini-firewall-block-clientes-bloqueados.txt -O /etc/rc.d/rc.pppoe-block chmod +x /etc/rc.d/rc.pppoe-block # Edite o arquivo /etc/rc.d/rc.pppoe-block mcedit /etc/rc.d/rc.pppoe-block # Altere as variaveis: # ZPREFIX: prefixo de rede que engloba todos os IPs da faixa de clientes bloqueados conectados # ZSERVER_ADDR: IP do servidor com a pagina de bloqueio # ZSERVER_HTTPPORT: Porta do servidor com a pagina de bloqueio # ZDNS: DNS para onde serao redirecionado os pacotes de DNS # Execute o script: /etc/rc.d/rc.pppoe-block # Instale o script verificador que mantem o servico, caso o software seja reiniciado: wget tmsoft.com.br/temp/check-pppoe-block.sh -O /etc/cron.5min/check-pppoe-block.sh chmod +x /etc/cron.5min/check-pppoe-block.sh 9 - Rodando DNS manualmente no slackmini v2 9.1 - BIND 9 # edite /etc/named.conf e personalize as configs # execute: # para ativar: service bind9 on # para reiniciar: service bind9 restart # para desligar o servico: service bind9 off 9.2 - UNBOUND # esse e' um pouco mais complicado, siga as instrucoes: # # - baixe o template wget http://tmsoft.com.br/temp/template-slackmini-unbound.conf -O /root/unbound.conf # - personalize o arquivo: /root/unbound.conf # Note: * "interface:" deve ser configurado com o IP onde o unbound vai abrir a porta 53 # e voce deve especificar um ip por linha precedido de "interface:" # Exemplo: # interface: 127.0.0.1 # interface: 192.168.20.2 # * caso o slackmini nao tenha ip publico na WAN (seja bgp por exemplo), # crie a config "outgoing-interface:" especificando o IP publico da loopback # # Apos configurar o /root/unbound.conf, execute: # PREPARACAO: cp /var/internic/named.cache /etc/unbound/named.cache service unbound on service unbound stop # CONFIG FINAL: cp /var/internic/named.cache /etc/unbound/named.cache cp /root/unbound.conf /etc/unbound/unbound.conf # Verifique se a config esta OK: (control+C para finalizar caso rode OK) unbound -c /etc/unbound/unbound.conf -d -v # Iniciar unbound: service unbound start 10 - Teste de velocidade direto no Slackmini 10.1 - Crie o endereco da pagina de consumo: # - execute: zeroshell # - execute: /ip addr add 100.127.255.255/32 lo # - execute: exit 10.2 - Crie os arquivos: cd /admin/wwwroot/pppoemeter/ for i in $(seq 1 1 1024); do echo -n "88888888"; done > 8k.zip cat 8k.zip 8k.zip > 16k.zip cat 16k.zip 16k.zip > 32k.zip cat 32k.zip 32k.zip > 64k.zip cat 64k.zip 64k.zip > 128k.zip echo 128k.zip 128k.zip > 256k.zip cat 128k.zip 128k.zip > 256k.zip cat 256k.zip 256k.zip > 512k.zip cat 512k.zip 512k.zip > 1m.zip cat 1m.zip 1m.zip > 2m.zip cat 2m.zip 2m.zip > 4m.zip cat 4m.zip 4m.zip > 8m.zip cat 8m.zip 8m.zip > 16m.zip cat 16m.zip 16m.zip > 32m.zip cat 32m.zip 32m.zip > 64m.zip cat 64m.zip 64m.zip > 128m.zip cat 128m.zip 128m.zip > 256m.zip cat 256m.zip 256m.zip > 512m.zip cat 512m.zip 512m.zip > 1g.zip 10.3 - Acesse: http://100.127.255.255/1g.zip 10.4 - Para melhor acesso do usuario, crie no seu domino (exemplo: provedor.com.br) o registro "consumo", assim: consumo IN A 100.127.255.255 Voce podera testar: - Para ver o consumo em tempo real: http://consumo.provedor.com.br - Para testar o maximo de download: http://consumo.provedor.com.br/1g.zip 11 - Testando capacidade de banda com IPERF3 11.1 - teste unidirecional: - No lado A (servidor), digite: iperf3 -s - No lado B (cliente), ditite: iperf3 -c b.b.b.b -i 10 -t 40 - O trafego e' enviado do cliente para o servidor 11.2 - teste bidirecional: - No lado A (servidor), digite: iperf3 -s - No lado B (cliente), ditite: iperf3 -c b.b.b.b -i 10 -t 40 -d - O trafego e' enviado do cliente para o servidor e em seguida no sentido contrario 12 - Em caso de servidores somente para a borda (BGP) sem CGNAT ou redirecionamento de portas, recomendo desativar a conntrack, infelizmente os comandos abaixo precisam ser executados manualmente toda vez que o servidor for reiniciado: iptables -t raw -I PREROUTING -j NOTRACK conntrack -F 13 - Servidor SNMP O slackmini possui servidor SNMP instalado, porem desativado. NOTA: nao e' recomendado ativa-lo em servidores PPPoE por problemas de performance do snmpd para indexar interfaces PPP, o que leva o consumo de CPU a 100% # Comandos: service snmpd on service snmpd stop # Limpe o arquivo: echo -n > /etc/snmp/snmpd.conf # Edite o arquivo: /etc/snmp/snmpd.conf # Troque: # > NAOUSEPUBLIC pela sua community # > POSICAOGPSAQUI pela posicao gps numerica, assim: -12.456789,-9.8877665 #-------------------------------------------------------------- rocommunity NUNCAUSEPUBLIC rocommunity6 NUNCAUSEPUBLIC syscontact Admin syslocation POSICAODEGPSAQUI linkUpDownNotifications no defaultMonitors yes # agentaddress udp:161,tcp:161,udp6:161,tcp6:161 #-------------------------------------------------------------- 14 - Nat para VPN Ativa o NAT para passagem de VPNs # Instalar: wget http://tmsoft.com.br/temp/smv2-nat-allmods.sh -O /etc/init.d/smv2natmods chmod +x /etc/init.d/smv2natmods Infelizmente precisa ser executado manualmente apois iniciar o servidor: /etc/init.d/smv2natmods 15 - balanceamento de IRQ # Baixar script: wget tmsoft.com.br/temp/irq-php.txt -O /root/irq.php chmod +x /root/irq.php # Colocar no rc.local para subir no boot egrep irq.php /etc/rc.d/rc.local || echo "/root/irq.php" >> /etc/rc.d/rc.local # Rodar agora para ja aplicar sem precisar reiniciar: /root/irq.php 16 - instalando kernel especifico da versao 2 (versoes anteriores) # exemplo com a versao 5.10.27-sm, observe isso em todos os comandos # todos os kernels possiveis em: https://arquivos.nuva.com.br/_index.php # 1 - remova todos os kernels presentes: # (ignore erros, importante e' garantir que nao existam) # rm -f /boot/System* /boot/vm* rm -rf /lib/modules/* rm /var/lib/packages/kernel* rm /var/log/packages/kernel* rm /var/log/packages/.sigs/kernel* # 2 - baixe o kernel desejado: cd /root/ wget --no-check-certificate -c https://arquivos.nuva.com.br/kernel-5.10.27-sm.tar # 3 - instale o kernel baixado acima: tar -xvf /root/kernel-5.10.27-sm.tar -C / # 4 - backup do lilo.conf original cp /etc/lilo.conf /etc/backup-lilo.conf # 5 - criar lilo.conf para o kernel instalado: ( echo 'append=" vt.default_utf8=0"' echo 'menu-scheme=Wb:Wc:Wb:Cb' echo 'boot = /dev/sda' echo 'compact' echo 'prompt' echo 'timeout = 30' echo 'lba32' echo 'change-rules' echo 'reset' echo 'vga = normal' echo echo 'image = /boot/vmlinuz-5.10.27-sm' echo ' root = /dev/sda3' echo ' label = Linux' echo ' append = "quiet"' echo ' read-only' echo ) > /etc/lilo.conf # 6 - instalar lilo no boot: lilo # 7 - Se der erro no comando acima, acione o Patrick # e NAO REINICIE NEM DESLIGUE ate ele analisar. #---------------------------------------------------------------- Relatorio CGNAT: CSV=/etc/network/firewall-cgnat.conf DIV="--------------------" ( echo echo "# Servidor: $(hostname -f)" echo "#$DIV$DIV$DIV$DIV" echo cat $CSV | egrep '.*;.*.;' | egrep -v '^#' | while read REG; do id=$(echo "$REG" | cut -f1 -d';') src=$(echo "$REG" | cut -f2 -d';') pub=$(echo "$REG" | cut -f3 -d';') sts=$(echo "$REG" | cut -f12 -d';') [ "$sts" = "1" ] || continue echo "# ID: $id" echo "# Prefixo privado.: $src" echo "# Prefixo publico.: $pub" echo done echo echo "#$DIV$DIV$DIV$DIV" echo ) #---------------------------------------------------------------- Problemas incomuns: #________________________________________________________________ pen driver install: # A - instalacao com pendrive nao funciona mesmo detectando /dev/sdb1 como pendrive # parte 1: /etc/setup/installer-hdd-prepare.sh format # parte 2: touch /tmp/usb-source mkdir /mnt/pendrive mount /dev/sdb1 /mnt/pendrive echo /mnt/pendrive/packages > /tmp/srcdir # parte 3: /etc/setup/installer-pkg-install.sh # parte 4: /etc/setup/installer-boot-install.sh # parte 4: /etc/setup/installer-end-install.sh # parte 5: sync umount /mnt/pendrive umount /mnt/install_root/boot umount /mnt/install_root/storage umount /mnt/install_root 2>/dev/null # Finalizar: poweroff # retirar pendrive, ligar servidor