You are on page 1of 69

21/11/2017 Distribuição Linux Slackmini

Slackmini
Linux server, simples.

MANUAL E DOCUMENTAÇÃO

Sobre o autor Sobre o Slackmini Licença de uso Baixando o Slackmini

ISO no CD/DVD ou Pendrive Instalação Mudando senha padrão Conectar a internet

Conexão via SSH Terminal de configuração Zeroshell Zeroshell: Diretórios e itens

Interfaces de rede Gerenciamento de VLANs Configurando rede IPv4 Tabela ARP (IPv4/MAC)

Configurando rede IPv6 Vizinhança IPv6 (IPv6/MAC) Cliente DNS Tuneis GRE sobre IPv4

Tuneis GRE sobre IPv6 Tuneis IP sobre IP (IPv4 e IPv6) Data/hora e time-zone Data/hora automática via NTP

Pacotes e atualizações Gerenciamento de serviços Reparando danos Servidor: DNS

Servidor: WEB Banco de dados MariaDB Servidor: Quagga OSPF/BGP Via VMWare Fusion

Via VirtualBox

   SOBRE O AUTOR
Olá pessoal!
Eu sou Patrick Brandão.

Em minha experiência de quase 20 anos com sistemas Linux, percebi que boa parte do meu tempo era consumido com re-trabalhos:
reinstalar SO, reparar danos por desastres naturais (raios, quedas de energia, componentes queimados), sabotagens causadas por
invasões, danos causados por usuários inexperientes e MUITA, mas MUITA dificuldade ao lidar com usuário inexperiente por telefone diante
de um terminal.

Como sou desenvolvedor de software, meus sistemas eram feitos para rodar no Linux Conectiva, Debian, CentOS, Ubuntu entre outras. Isso
se mostrou um problema pois meus clientes (usuários) sempre conseguiam dar algum comando que danificava o sistema ou causavam
inconcistencias no software com seus 'apt-get', 'yum', 'rm -rf /', 'chmod 000 *', etc...

Consegui resolver muito desses problemas migrando e homologando meus softwares somente no Slackware. Reduzi a quase zero o indice
de suportes por problemas criados pelo usuário e seus técnicos aventureiros. O servidor passou a ter um pouco de paz e meus softwares
chegaram perto do SUPORTE-ZERO.

Mas como nem tudo é perfeito, faltava lidar com os problemas de instalação, reparação do sistema em caso de danos e recuperação de
dados, o que por telefone ainda eram penosos.

Apos estudar o Slackware por 10 anos, resolvi criar minha propria distribuição Linux.
Meu objetivo com o Slackmini é criar uma distribuição extremamente simples para o usuário inexperiente mas muito abrangente para
desenvolvedores e pessoas experientes.

http://manual.slackmini.com.br/ 1/69
21/11/2017 Distribuição Linux Slackmini

Seu projeto visa atender todas as necessidades para executar sistemas personalizados em plataforma x86 64bits sem muita perda de tempo
e dispensando "ajustes finos".

Espero que gostem e me ajudem a torna-lo melhor!

   SOBRE O SLACKMINI
Inspirado no Slackware, o Slackmini é uma distribuição desenvolvida do zero, compilada pacote por pacote com o objetivo de manter apenas
arquivos necessários e executar processos com o mínimo de recursos de hardware com estabilidade.

Recursos

Gratuita sobre liçenca GNU/GPL e similares (os diferentes pacotes de fontes possuem licenças diferentes).
Código de construção da distro e fontes são compartilhados no GIT-HUB e no site principal (http://sourcecode.slackmini.com.br/).
Imagem ISO pequena (CD/DVD ~200 megas).
Instalação simples e rápida, sem muitas opções para confundir o usuário.
Verificador de assinatura de pacotes pre-instalação, para previnir problemas com CD/DVD/Pendrive danificado.
Somente para x86_64, impedindo o usuário de instalar em sucatas (32 bits e embarcados).
Particionamento automático de 4 partições primarias (swap + boot + root + storage).
Detecção automática de coneção com a internet (cliente DHCP).
Suporte a pilha dupla: IPv4 e IPv6.
Principais bibliotecas e aplicativos prontos (MariaDB, Apache, Lighttpd, Nginx, PHP).
Coletania de comandos para diagnostico (leia o manual).
Sistema anti-corrupção de arquivos, capaz de recuperar danos por queda de energia e sabotagem de arquivos estáticos.
Sistema de recuperação via instalador capaz de restaurar o sistema ou recuperar dados (backup).
Pronto para a nuvem, rodando em maquinas virtuais com leveza e sem bloquear recursos.
Updates automáticos e silenciosos de correções.

Finalidade

Em sua forma original, o Slackmini não prove nada, apenas um Linux cujo boot rápido e linear (baseado no Slackware) se encarrega de subir
o ambiente mínimo para execução de programas (que você deve instalar e pre-configurar).

Voce pode usar o Slackmini em conjunto com seus pacotes personalizados, o manual lhe ensinara como cria-los. Bastará instalar o
Slackmini e seu pacote para ter um sistema pronto, pequeno, rápido, estavel e imune a sabotagens.
Lembre-se: KISS - Keep it Short & Simple.

   LICENÇA DE USO
Dos conceitos:

O Slackmini é uma distribuição Linux comercial.


Uma distribuição é um sistema operacional resultante da união de um kernel Linux, pacotes de programas, scripts, arquivos de
configuração e programas de computador especialmente desenvolvidos para a distribuição.
Kernel (kernel Linux) é o software responsável por executar e gerenciar todos os programas em um computador (computador real ou
virtual), é um software gratuito.
O kernel Linux é licenciado pelo contrato GNU/GPL e disponivel no site https://www.kernel.org/

Dos softwares presentes na distribuição

Os diferentes pacotes que constituem essa distribuição podem possuir contratos diferentes, para descobrir o contrato dos pacotes de
software que compõem essa distribuição acesse o diretório de códigos-fonte (http://sourcecode.slackmini.com.br/).

O desenvolvedor da distribuição mantem o compromisso de publicar todos os códigos baseados em licenças GNU/GPL e semelhantes.
Os arquivos de configuração serão criados pelo usuário do software que deverá lhes atribuir uma licença de uso para proteger sua
propriedade intelectual.

http://manual.slackmini.com.br/ 2/69
21/11/2017 Distribuição Linux Slackmini

A distribuição Slackmini bem como os programas de computador especialmente desenvolvidos para a distribuição Slackmini são de
propriedade intelectual do desenvolvedor Patrick Brandão que se reserva ao direito de licenciar (permitir o uso) apenas a quem for
especificado por escrito.

O valor da licença, seus limites e atribuições, o suporte técnico, direitos e deveres do usuário devem ser atrituidos por contrato firmado entre
as partes (desenvolvedor e usuário final).

Pacotes que venham a ser instalados no Slackmini devem possuir uma licença de uso atribuida pelo seu autor em conformidade com o
desenvolvedor do Slackmini.

Ao baixar e/ou ao instalar o Slackmini você automaticamente concorda com as seguintes licenças e contratos de software:

Licenças e contratos de software

GNU/GPL e suas versões: http://www.gnu.org/licenses/licenses.pt-br.html


BSD e suas versões: http://www.gnu.org/licenses/bsd.pt-br.html, https://pt.wikipedia.org/wiki/Licença_BSD
APACHE e suas versões: http://www.gnu.org/licenses/license-list.html
MOZZILA e suas versões: http://br.mozdev.org/MPL/

Aquisição da licença de uso

Entre em contato com o desenvolvedor (Patrick Brandão) para obter a licença de uso pelo e-mail patrickbrandao@gmail.com

   BAIXANDO O SLACKMINI
Para baixar o Slackmini, acesse o site http://www.slackmini.com.br e clique na opção DOWNLOAD.

Link para download: http://downloads.slackmini.com.br/isos/slackmini-1.0.iso

   ISO NO CD/DVD OU PENDRIVE


O arquivo ISO (extensão .iso) é um arquivo que deve ser interpretado por um programa de gravação de CD ou DVD.
Também é possível usar a imagem ISO para um boot pelo pendrive ou cartão de memória.

Você não deve gravar esse arquivo simplesmente colocando ele no CD/DVD ou pendrive pois não irá funcionar dessa maneira.

Gravando ISO em CD/DVD

Para gravar a imagem ISO em um CD ou DVD, clique com o botão direito sobre o arquivo a escolha "ABRIR COM" e selecione um programa
gravador de CD/DVD.
Caso tenha dificuldades ao gravar a imagem ISO em um CD/DVD, consulte o suporte técnico de seu sistema operacional (Windows, MacOS,
etc...).
Softwares para gravação de ISO em CD/DVD ou Pendrive:

Unetbootin: https://unetbootin.github.io/
Yumi: http://www.pendrivelinux.com/yumi-multiboot-usb-creator/
Universal USB Installer: http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/
LiLi Usb Creator: http://www.pendrivelinux.com/linux-live-usb-creator/

   INSTALAÇÃO
Primeiro passo: BOOT no servidor

Coloque a midia (CD/DVD, Pendrive ou Cartão de memória) no servidor.


É necessário que a BIOS (software da placa-mãe) esteja configurada para dar boot pela midia escolhida por você.
Caso não esteja entre na BIOS (normalmente teclando F1, F2, F10 ou F10 apos ligar o servidor).
Caso tenha dificuldades durante o BOOT, solicite o suporte técnico do servidor.
Se estiver instalando em maquina virtual o processo é muito parecido.

http://manual.slackmini.com.br/ 3/69
21/11/2017 Distribuição Linux Slackmini
Caso tenha dificuldades em dar BOOT ou acessar a BIOS, consulte o suporte do servidor para dar RESET NA BIOS e inicie o processo de
BOOT novamente.

Tome cuidado especial com o CD/DVD ou Pendrive, se ele estiver corrompido ou com problemas o BOOT não será possível.
Teste o BOOT com outro sistema (como Ubuntu ou Debian) para se certificar que o BOOT funciona.

Tela de BOOT do Slackmini

Tecle ENTER para continuar. Caso não aperte nada o sistema de instalação será executado em alguns segundos.

A opção padrão no menu inicial é INSTALAR. Tecle enter na opção INSTALAR para iniciar a instalação do Slackmini:

http://manual.slackmini.com.br/ 4/69
21/11/2017 Distribuição Linux Slackmini

Selecione o disco onde o Slackmini será instalado:

Instalar o Slackmini no disco implica em formatar o disco e apagar todos os dados que se encontram nele. Você precisa ter certeza
que o disco não possui dados importantes antes de continuar:

O instalador irá formatar e particionar seu disco. Se o disco for maior que o espaço necessário para rodar o Slackmini, uma quarta
partição será criada e montada em /storage:
http://manual.slackmini.com.br/ 5/69
21/11/2017 Distribuição Linux Slackmini

O instalador irá verificar se os pacotes estão corretos (teste de integridade) certificando-se de que não houver erros durante a
gravação do CD/DVD ou se houve problemas no pendrive/cartão de memória por conta de badblocks.:

http://manual.slackmini.com.br/ 6/69
21/11/2017 Distribuição Linux Slackmini

http://manual.slackmini.com.br/ 7/69
21/11/2017 Distribuição Linux Slackmini

O sistema foi instalado. Primeiro boot:

No primeiro login, informe o usuário "root" (sem aspas) e a senha padrão "tulipa" (sem aspas):

http://manual.slackmini.com.br/ 8/69
21/11/2017 Distribuição Linux Slackmini

Seu Slackmini está instalado e você tem acesso ao shell Linux (bash). Isso conclui o estágio de instalação.

   MUDANDO SENHA PADRÃO


Usuário e senha padrão

Usuário: root
Senha: tulipa
No primeiro login, informe o usuário "root" (sem aspas) e a senha padrão "tulipa" (sem aspas), ambos com letra minúscula:

Altere a senha padrão usando o comando "passwd" (sem aspas), observe a imagem:

Senhas que você não pode usar:


Sequencias numéricas: 123, 1234, 123456, 123654, 1234567890, 654321, 000000, 111111, etc...
Sequencias do teclado: qwe123, abc123, asdfgh, qazwsx, qwert, zxcvb, yuiop, bnm, etc...
As senhas mais usadas: deus, brasil, 123mudar, jesus, iloveyou, matrix, admin, password, Senha, salmos, teste, starwars
Datas, pois todo mundo faz aniversario, casamento, noivado ou alguma data especial entre 01/01/1900 e hoje (21/11/2017), assim,
senhas como: 010498 pode ser a o nascimento do seu filho, 141145 pode ser o nascimento do seu avo.
Nomes próprios: silva, pereira, janaina, tiago, joao, maria, felizberto, lindomar, carolina, etc...
Palavras do dicionario portugues: laranja, janela, servidor, biscoito, monitor, geladeira, nervoso, paralelepipedo, etc...
Palavras do dicionario ingles, espanhol, italiano, etc...

Hackers usam listas de senhas mais usadas, todas as datas entre 01/01/1990 e 01/01/2016, dicionarios dos principais idiomas para fazer
brute-force (tentar todas as senhas automaticamente até acertar) para invadir seu servidor.

http://manual.slackmini.com.br/ 9/69
21/11/2017 Distribuição Linux Slackmini
Você pode usar senhas compostas por duas palavras e adicionar entre elas números ou simbolos, tornando-as muito dificil de advinhar (evite
usar meus exemplos):
aniversario$18021982
janela@aberta@para@rua
%quero-mais-cafe%
o.rato.roeu.a.roupa.do.rei.de.roma.123
X.impresso-hp-na-minha-mesa.X
99123-Sou_o_administrador!@#$
P@l@vr@-secreta

Seu Slackmini está instalado e com uma senha segura. Isso conclui o estágio de instalação.

   CONECTAR A INTERNET
Para configurar a internet execute o comando "ipconfig" (sem aspas). As alterações feitas no IPCONFIG não ficam salvas e são
apenas para facilitar a primeira conexão com a internet.

Escolha a opção "DHCP" no menu principal, em seguida escolha a interface de rede:

http://manual.slackmini.com.br/ 10/69
21/11/2017 Distribuição Linux Slackmini

Ao atualizar o status na tela principal do IPCONFIG aparecerá seu IP atual, seu MAC e seu gateway padrão:

Use a opção "Testar" do IPCONFIG (ou o comando no shell: ipconfig test) para verificar se há acesso a internet:

Seu Slackmini estará com acess a internet se os passos acima funcionaram.

http://manual.slackmini.com.br/ 11/69
21/11/2017 Distribuição Linux Slackmini

   CONEXÃO VIA SSH


Para acessar o Slackmini via SSH

Porta padrão do servidor SSH: 1822


É necessário configurar um endereço IP no servidor, manualmente ou via DHCP para que a conexão SSH seja possível.
Teste se pelo menos o ping para o IP do servidor funciona antes de tentar conectar via SSH.

Programas para se conectar via SSH:

Lista de softwares: https://en.wikipedia.org/wiki/Comparison_of_SSH_clients


No MacOS: pelo menu Aplicações -> Utilitários -> Terminal, comando: ssh root@x.x.x.x (onde x.x.x.x é o ip do servidor)
No WINDOWS: Putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)
No WINDOWS: SuperPutty (https://github.com/jimradford/superputty/releases/latest)
No WINDOWS: WinSCP (http://winscp.net/)
No WINDOWS: MobaXterm (http://mobaxterm.mobatek.net/)
No WINDOWS: SmarTTY (http://smartty.sysprogs.com/)
No WINDOWS: Fugu SSH (https://sourceforge.net/projects/fugussh/)
No WINDOWS: Terminals (https://terminals.codeplex.com/)
No WINDOWS: mRemoteNG (http://www.mremoteng.org/)

Opções do servidor SSH:

Para alterar as opções do servidor SSH, edite o arquivo /etc/ssh/sshd_config e reinicie o serviço openssh (leia o capítulo sobre serviços).

   TERMINAL DE CONFIGURAÇÃO
O Slackmini conta com 2 softwares de interface com o administrador (shell):

Bash: shell padrão do Linux Slackware;


ZeroShell: shell padrão do Slackmini;

O usuário root tem por padrão o shell BASH (/bin/bash), no entando o Slackmini baseia todo seu gerenciamento e configuração pelo shell
próprio: ZeroShell (/bin/zeroshell).
O shell Bash deve ser usado apenas pelo usuário root pois tem todo o poder de alterar arquivos e executar qualquer processo com privilegio
de administrador.
Para evitar problemas com usuários de soluções finais nas quais o Slackmini é baseado, recomendo que novos usuários tenham seu shell
definido como /bin/zeroshell.
Se esses usuários foram administradores eles poderão usar o ZeroShell para configurar o sistema mas limitados as opções dos serviços do
ZeroShell.

Usuários comuns que forem criados no sistema que usarem o ZeroShell estarão limitados aos comandos de consulta.

   ZEROSHELL
Para acessar o ZeroShell, execute o comando zeroshell

http://manual.slackmini.com.br/ 12/69
21/11/2017 Distribuição Linux Slackmini

Principais comandos e navegação entre diretórios:

ls ou [tab] : listar itens no diretório e itens.


[admin@servidor] > ls
/
[D] system/ [D] interface/ [D] ip/ [D] ipv6/
[D] tools/ [>] export [>] about [>] copyright
[>] date [>] desligar [>] exit [>] logout
[>] poweroff [>] quit [>] reboot [>] reiniciar
[>] sair [>] service [>] free [>] iperf
[>] iptraf [>] lscpu [>] mtr [>] ping
[>] ping6 [>] ps [>] tcpdump [>] top
[>] htop [>] traceroute [>] uptime [>] ssh
[>] telnet
[admin@servidor] >

Diretórios aparecem de azul, itens aparecem de magenta (rosa).


Todos os item são comandos, basta digitar o nome do item para executá-lo.
Para entrar em um diretório basta digitar o nome tambem.

(nome do diretório) : Entrar no diretório.

[admin@servidor] > system


[admin@servidor] /system>

Você pode usar ".." (sem aspas) para voltar ao diretório superior.

[admin@servidor] /system> ..
[admin@servidor] >

Ou usar "-" para voltar ao diretório anterior.

[admin@servidor] > -
[admin@servidor] /system>

Você pode especificar o caminho completo para um diretório para entrar nele.
Ao abreviar nomes, o ZeroShell irá procurar um item ou diretorio semelhante
para tentar descobrir o que você queria dizer.

[admin@servidor] /system> /ip addr


[admin@servidor] /ip address>

Voltar para o / (raiz).

[admin@servidor] /ip address> /


[admin@servidor] >

Execute um comando global em qualquer diretório.

ping : Testar rede IP enviando um pacote ICMP.

[admin@servidor] > -
http://manual.slackmini.com.br/ 13/69
21/11/2017 Distribuição Linux Slackmini
[ @ ]
[admin@servidor] /ip address>
[admin@servidor] /ip address> ping 127.0.0.1 count=2

SEQ HOST SIZE TTL TIME STATUS


1 127.0.0.1 64 64 0.166 echo reply
2 127.0.0.1 64 64 0.031 echo reply
sent=2 received=2 packet-loss=0 min-rtt=0.031 avg-rtt=0.098 max-rtt=0.166

[admin@servidor] /ip address> ping ::1 count=2


SEQ HOST SIZE TTL TIME STATUS
1 ::1 64 64 0.077 echo reply
2 ::1 64 64 0.095 echo reply
sent=2 received=2 packet-loss=0 min-rtt=0.077 avg-rtt=0.086 max-rtt=0.095

[admin@servidor] /ip address> ping gateway 2


SEQ HOST SIZE TTL TIME STATUS
1 172.20.0.1 64 64 0.433 echo reply
2 172.20.0.1 64 64 0.548 echo reply
sent=2 received=2 packet-loss=0 min-rtt=0.433 avg-rtt=0.490 max-rtt=0.548
[admin@servidor] /ip address> ping uol.com.br 4

Get address for uol.com.br -> 200.221.2.45


SEQ HOST SIZE TTL TIME STATUS
1 200.221.2.45 64 57 21.2 echo reply
2 200.221.2.45 64 57 17.2 echo reply
3 200.221.2.45 64 57 16.9 echo reply
4 200.221.2.45 64 57 17.6 echo reply
sent=4 received=4 packet-loss=0 min-rtt=16.984 avg-rtt=18.289 max-rtt=21.279

[admin@servidor] /ip address> ping ipv6 uol.com.br 4


Get address for uol.com.br -> 2804:49c:3103:401:ffff:ffff:ffff:1
SEQ HOST SIZE TTL TIME STATUS
1 2804:1b40:2:4000::41 64 64 9.025 echo reply
2 2804:1b40:2:4000::41 64 64 3.049 echo reply
3 2804:1b40:2:4000::41 64 64 6.049 echo reply
4 2804:1b40:2:4000::41 64 64 8.038 echo reply
sent=4 received=4 packet-loss=0 min-rtt=3.049 avg-rtt=6.542 max-rtt=9.025
[admin@servidor] /ip address> /
[admin@servidor] >

Comandos importantes:

about ou copyright : Exibe informações sobre o Slackmini


date : Exibir data/hora e timezone
export : Exportar configuração das sessões do ZeroShell
desligar ou poweroff : Desligar o servidor
quit, exit, sair ou logout : Finalizar a sessão (desconectar)
reboot ou reiniciar : Reiniciar o servidor
service : Gerenciar serviços
free : Exibir uso de memória
iperf : Ferramenta para testar capacidade de rede
iptraf : Monitorar rede visualmente
lscpu : Exibir informações do processador
traceroute : Exibe um ping de roteador por roteador
mtr : Monitora visualmente os roteadores igual o traceroute
ps : Exibe processos sendo executados (listar todos: ps xau)
tcpdump : Exibe pacotes capiturados na rede
top : Monitora visualmente processos em execução
htop : Versão mais completa do comando top
uptime : Informa tempo de execução e carga de trabalho do Linux
ssh : Fazer conexão via SSH

http://manual.slackmini.com.br/ 14/69
21/11/2017 Distribuição Linux Slackmini

telnet : Fazer conexão via TELNET

   ZEROSHELL: DIRETÓRIOS E ITENS


Diretórios e nós

/
/system desligar export logout poweroff reboot reiniciar
/system clock export print set
/system kernel print set
/system package info install print remove repair update view
/system service disable enable print restart start status stop

/interface export print


/interface ethernet info print reset set sync
/interface 6to4 add export remove set sync
/interface gre add export remove set sync
/interface gre6 add export remove set sync
/interface ipip add export remove set sync
/interface ipipv6 add export remove set sync
/interface pppoe-client add export remove set sync
/interface vlan add export remove set sync

/ip export print


/ip address add export print remove set sync
/ip arp arping flush info print scan monitor
/ip dns add dig dns-ping host print nslookup remove set sync test
/ip route add get print remove set
/ipv6 export print
/ipv6 address add export print remove set sync
/ipv6 neighboor flush info print scan monitor
/ipv6 dns add dig dns-ping host print nslookup remove set sync test
/ipv6 route add get print remove set

/tools ethtool free htop iperf iptraf lscpu mtr ping ping6 ps ssh tcpdump telnet top traceroute uptime

   INTERFACES DE REDE
Gerenciando interfaces de rede pelo ZeroShell

Execute o comando: zeroshell

/interface : Entrar no diretório de interfaces de rede.


[admin@servidor] > /interface
[admin@servidor] /interface>

Você pode abreviar. Usando /inter, /inte, /int.

[admin@servidor] /interface> /
[admin@servidor] > /int
[admin@servidor] /interface>

/interface print : Exibir interfaces de rede.


Você pode digitar o comando completo (diretório item) ou
entrar no diretório e digitar o nome do item.

[admin@servidor] /interface> print

Idx Nome Status Cabo Velocidade Tipo L3-MTU


1 lo UP Ilimitada Loopback 65536
5 eth0 UP Ligado 1000/full Ethernet 1500
4 eth1 UP Ligado 1000/full Ethernet 1500
3 eth2 UP Ligado 1000/full Ethernet 1500
2 eth3 UP Ligado 1000/full Ethernet 1500

http://manual.slackmini.com.br/ 15/69
21/11/2017 Distribuição Linux Slackmini

/interface print help : Mostra modos de listar interfaces.


[admin@servidor] /interface> print help
Imprimir lista de interfaces
Use:
print : Exibir interfaces e detalhes de conexao
print stats : Exibir interfaces e estatisticas
print rate [opcoes] : Exibir trafego nas interfaces (TEMPO REAL)
[bits/bytes/packets/errors/rate/max/sum/avg]
print ethernet : Exibir interfaces ethernet
print mac : Exibir MAC-ADDRESS das interfaces L2
print vlan : Exibir Vlans (802.1q e 802.1ad)
print ifconfig [interface] : Exibir modo 'ifconfig'
print link [interface] : Exibir modo 'ip link'
print netstat : Exibir modo 'netstat -i'

/interface print stats : Mostra dados enviados e recebidos.


[admin@servidor] /interface> print stats
Nome RX Bytes RX Packets RX Bytes RX Packets
lo 324 B 3 324 B 3
eth0 0 0 648 B 8
eth1 0 0 648 B 8
eth2 0 0 648 B 8
eth3 658.5 MiB 1.170.083 19.0 MiB 98.847

/interface print rate : Mostra dados em tempo real.


input: /proc/net/dev type: rate
\ iface Rx Tx Total
==============================================================================
eth0: 0.00 kb/s 0.00 kb/s 0.00 kb/s
eth1: 0.00 kb/s 0.00 kb/s 0.00 kb/s
eth2: 0.00 kb/s 0.00 kb/s 0.00 kb/s
eth3: 157.14 kb/s 77.09 kb/s 234.23 kb/s
lo: 0.00 kb/s 0.00 kb/s 0.00 kb/s
------------------------------------------------------------------------------
total: 157.14 kb/s 77.09 kb/s 234.23 kb/s
Segura a barra de espaço para atualizar mais rápido.
Tecle q para sair.

/interface print mac : Exibir MAC-Address das interfaces L2


[admin@servidor] /interface> print mac
Idx Nome Status Cabo Tipo L3-MTU MAC-ADDRESS
5 eth0 UP Ligado Ethernet 1500 00:0c:29:0d:a2:22
4 eth1 UP Ligado Ethernet 1500 00:0c:29:0d:a2:33
3 eth2 UP Ligado Ethernet 1500 00:0c:29:0d:a2:44
2 eth3 UP Ligado Ethernet 1500 00:0c:29:0d:a2:55

/interface ethernet : Entrar no diretório de interfaces ethernet.


[admin@servidor] > /int eth
[admin@servidor] /interface ethernet>

/interface ethernet print : Exibir interfaces de rede ethernet.


[admin@servidor] /interface ethernet> print

Flags: C - Cabo conectado, X - Cabo desconectado


R - ativa (UP) D - Desativada (DOWN)
F - Full-Duplex, H - Half-Duplex
4 - 10 gigabit, 3 - 1 gigabit, 2 - 100 mbit, 1 - 10 mbit

Idx Flags Nome Status Cabo Velocidade L3-MTU MAC-ADDRESS


5 CRF3 eth0 UP Ligado 1000/full 1500 00:0c:29:0d:a2:22
4 CRF3 eth1 UP Ligado 1000/full 1500 00:0c:29:0d:a2:33
3 CRF3 eth2 UP Ligado 1000/full 1500 00:0c:29:0d:a2:44
2 CRF3 eth3 UP Ligado 1000/full 1500 00:0c:29:0d:a2:55

/interface ethernet info ethx : Informações de midia da interface.


[admin@servidor] /interface ethernet> info eth3

http://manual.slackmini.com.br/ 16/69
21/11/2017 Distribuição Linux Slackmini
02:07.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
Subsystem: VMware 82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)
Physical Slot: 39
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0 (63750ns min), Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 17
Region 0: Memory at fd540000 (64-bit, non-prefetchable) [size=128K]
Region 2: Memory at fdfc0000 (64-bit, non-prefetchable) [size=64K]
Region 4: I/O ports at 2400 [size=64]
[virtual] Expansion ROM at fd530000 [disabled] [size=64K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [e4] PCI-X non-bridge device
Command: DPERE- ERO+ RBC=512 OST=1
Status: Dev=ff:1f.0 64bit+ 133MHz+ SCD- USC- DC=simple DMMRBC=2048 DMOST=1 DMCRS=16 RSCEM- 266MHz- 533MHz-
Kernel driver in use: e1000
Kernel modules: e1000
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes

/interface ethernet print pci : Listar interfaces (PCI).


[admin@servidor] /interface ethernet> print pci
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
Subsystem: VMware 82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)
Physical Slot: 33
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0 (63750ns min), Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 19
Region 0: Memory at fd5a0000 (64-bit, non-prefetchable) [size=128K]
Region 2: Memory at fdff0000 (64-bit, non-prefetchable) [size=64K]
Region 4: I/O ports at 2000 [size=64]
[virtual] Expansion ROM at fd500000 [disabled] [size=64K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [e4] PCI-X non-bridge device
Command: DPERE- ERO+ RBC=512 OST=1
Status: Dev=ff:1f.0 64bit+ 133MHz+ SCD- USC- DC=simple DMMRBC=2048 DMOST=1 DMCRS=16 RSCEM- 266MHz- 533MHz-
Kernel driver in use: e1000
Kernel modules: e1000
02:05.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
Subsystem: VMware 82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)
Physical Slot: 37
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0 (63750ns min), Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 19
Region 0: Memory at fd580000 (64-bit, non-prefetchable) [size=128K]
Region 2: Memory at fdfe0000 (64-bit, non-prefetchable) [size=64K]
Region 4: I/O ports at 2080 [size=64]
[virtual] Expansion ROM at fd510000 [disabled] [size=64K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [e4] PCI-X non-bridge device
Command: DPERE- ERO+ RBC=512 OST=1
Status: Dev=ff:1f.0 64bit+ 133MHz+ SCD- USC- DC=simple DMMRBC=2048 DMOST=1 DMCRS=16 RSCEM- 266MHz- 533MHz-
Kernel driver in use: e1000
Kernel modules: e1000

02:06.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
Subsystem: VMware 82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)
Physical Slot: 38
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0 (63750ns min), Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 16
Region 0: Memory at fd560000 (64-bit, non-prefetchable) [size=128K]
Region 2: Memory at fdfd0000 (64-bit, non-prefetchable) [size=64K]
Region 4: I/O ports at 20c0 [size=64]
[virtual] Expansion ROM at fd520000 [disabled] [size=64K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [e4] PCI-X non-bridge device
Command: DPERE- ERO+ RBC=512 OST=1
Status: Dev=ff:1f.0 64bit+ 133MHz+ SCD- USC- DC=simple DMMRBC=2048 DMOST=1 DMCRS=16 RSCEM- 266MHz- 533MHz-
Kernel driver in use: e1000
Kernel modules: e1000

02:07.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
Subsystem: VMware 82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)
Physical Slot: 39
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-

http://manual.slackmini.com.br/ 17/69
21/11/2017 Distribuição Linux Slackmini
Latency: 0 (63750ns min), Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 17
Region 0: Memory at fd540000 (64-bit, non-prefetchable) [size=128K]
Region 2: Memory at fdfc0000 (64-bit, non-prefetchable) [size=64K]
Region 4: I/O ports at 2400 [size=64]
[virtual] Expansion ROM at fd530000 [disabled] [size=64K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [e4] PCI-X non-bridge device
Command: DPERE- ERO+ RBC=512 OST=1
Status: Dev=ff:1f.0 64bit+ 133MHz+ SCD- USC- DC=simple DMMRBC=2048 DMOST=1 DMCRS=16 RSCEM- 266MHz- 533MHz-
Kernel driver in use: e1000
Kernel modules: e1000

   GERENCIAMENTO DE VLANS
Conceitos básicos de VLAN

VLANs são formas de usar uma interface de rede física para participar de varias redes virtuais diferentes.

Mais informações:

Wikipedia em português, Virtual_LAN: https://pt.wikipedia.org/wiki/Virtual_LAN


Wikipedia em português, IEEE 802.1Q: https://pt.wikipedia.org/wiki/IEEE_802.1Q
Wikipedia em português, IEEE 802.1ad: https://en.wikipedia.org/wiki/IEEE_802.1ad
Original em inglês, IEEE 802.1Q: http://www.ieee802.org/1/pages/802.1Q.html
Original em inglês, IEEE 802.1ad: http://www.ieee802.org/1/pages/802.1ad.html
Login no site www.ieee802.org: Username: p8021 Password: go_wildcats

Existem 4 tipos de dispositivos em uma rede VLAN:

(P) Dispositivo de acesso: é um computador, roteador, servidor, access point ou qualquer equipamento que se conecta a rede e que
não sofre nenhuma configuração de VLAN. É apenas um usuário dos serviços da rede.
(SW) Switch gerenciável: é um switch que faz o gerenciamento das VLANs. Cada porta do switch pode assumir 2 modos básicos:
(A) Acesso ou Untagged: é uma porta destinada a um usuário final (dispositivo de acesso). Essa porta deve receber um PVID
(port VID, VID = vlan id). Todo quadro (pacote IP, pacote IPv6, ARP) que entrar por uma porta de acesso será marcado com o
número de PVID da porta.
O switch só permite que portas com o mesmo PVID se comuniquem.
(T) TRUNK ou tagged: é uma porta que recebe e encaminha quadros marcados com o número de PVID da porta por onde o
quadro entrou na rede. A marcação é na verdade um cabeçalho (sequencia de bits no inicio do quadro) do protocolo IEEE 802.1q
(ou apenas 1q) ou IEEE 802.1ad (conhecido como Q-in-Q).
É preciso cadastrar na porta TRUNK do switch quais PVIDs ele pode encaminhar.
A porta TRUNK de um switch deve ser ligada a uma porta de um servidor/roteador em que tenha sido cadastradas as VIDs
(interface VLAN).
(BR) Bridges: uma bridge (ponte) é semelhante a um switch porem pode realizar operações mais complexas como:
Fazer NAT-MAC: alterar o MAC-Address do quadro quando ele entrar na rede e recuperar para o original quando o quadro sair da
rede.
Permitir que quadros de uma VLAN sejam traduzidos para outra VLAN (exemplo: entra um quadro com VID 15 na porta 1 e saia
na porta 2 com VID 21)
Permitir que quadros de VLANs diferentes participem de uma unica VLAN central, essa operação se chama VLAN-MAPPING e
requer muita experiencia para manipular.
(S) Servidor/Roteador: tem como função rotear o trafego entre VLANs (ou não, caso seja uma questão de segurança) ou fornecer ao
membro da VLAN os serviços necessários (servidor VOIP, servidor de arquivos, acesso a internet, acesso a câmeras de segurança,
monitoramento e administração de dispositivos). Sempre que ele desejar se comunicar com alguma VLAN, bastará enviar ao switch
gerenciável o quadro marcado com o VID da VLAN de destino.
Alguns switchs podem assumir a função de rotear trafego entre vlans sendo chamados de switchs layer 3

http://manual.slackmini.com.br/ 18/69
21/11/2017 Distribuição Linux Slackmini

Cuidado com a VLAN 1 (PVID 1). Todos os switchs gerenciáveis vem com a configuração padrão definindo todas as portas
na PVID 1.
A PVID 1 não recebe o mesmo tratamento das PVIDS de 2 a 4094 por ser a VLAN ADMINISTRATIVA NATIVA. São
características da VLAN administrativa:
Tem PVID 1 em todos os switchs gerenciáveis (consulte o fabricante do seu switch, talvez ele tentou inventar alguma
modinha)
Não recebe encapsulamento 802.1q ao entrar ou sair por quaisquer porta tagged (Trunk).
Quadros que entram nos switchs em portas com PVID 1 continuam intactos por toda a rede, passando de trunk em
trunk normalmente.
A maioria dos switchs gerenciáveis te obriga a permitir a PVID 1 nas portas tagged (ou nem te avisam que isso está
sendo feito)
Um equipamento enviando broadcasts em uma porta PVID 1 atingirá todo o seu dominio de switchs com excessão das
portas ACESSO em PVID de 2 a 4094.
Um LOOP originado numa porta PVID 1 irá afetar todo o seu dominio de switchs, jamais entregue uma porta PVID 1 a
um cliente final.
Portanto ao projetar uma rede VLAN sempre coloque equipamento de clientes ou equipamentos publicos em VLANS entre 2
e 4094.

Você irá encontrar em alguns switchs o termo VOICE VLAN.

Alguns fabricantes de switchs que tambem fabricam telefones IP criaram protocolos de negociação automática de VLAN de
voz entre o telefone e o switch. Para que o switch aceite um telefone IP e faça um QoS desse tráfego com alta prioridade
(protocolo 802.1p) é necessário atribuir na porta do switch uma VOICE VLAN ID (VVID).

O valor PVID e VVID coexistem na mesma porta, sendo o PVID para dados e o VVID para voz sobre IP.

Alguns exemplos de como usar VLANs:

Exemplo 1: Compartilhando uma porta de 10 gigas para venda de links dedicados

O servidor vai atuar como um roteador para venda de links dedicados. Recebendo a conexão do backbone de 10 gigas e distribuindo em um
POP onde atenderemos
clientes com contratos de 10 megabit/s a 1 gigabit/s. O switch será usado para atender 1 cliente por porta, cada cliente possuirá sua VLAN
no servidor.

http://manual.slackmini.com.br/ 19/69
21/11/2017 Distribuição Linux Slackmini

Exemplo 2: Link e clientes na mesma interface de rede do servidor

O servidor possui apenas 1 interface de rede, mas precisa se conectar a internet e distribuir essa internet para uma rede local.

Com o emprego de um switch gerenciável, podemos dividi-lo em 2 switchs virtuais (VLAN = Virtual LAN): o switch amarelo e o switch verde e
por meio de uma porta TRUNK permitir que o servidor se comunique com essas VLANs.

Gerenciando VLANs pelo ZeroShell

Execute o comando: zeroshell

Vamos criar a configuração de VLANs de acordo com o desenho acima (exemplo 2).

/interface vlan : Entrar no diretório de interfaces de rede.


[admin@servidor] > /int vlan
[admin@servidor] /interface vlan>

A principio não existe nenhuma VLAN, observe:

[admin@servidor] /interface vlan> print

Flags: C - Cabo conectado, X - Cabo desconectado x - interface desativada


R - Ativa (UP) D - Administrativamente desativada (DOWN)
F - Full-Duplex, H - Half-Duplex
4 - 10 gigabit, 3 - 1 gigabit, 2 - 100 mbit, 1 - 10 mbit
Q - protocolo 802.1q, A - protocolo 802.1ad (QinQ)
# Flags InterfaceVLAN VID Interface Encapsulamento

Nenhuma VLAN cadastrada.


[admin@servidor] /interface vlan>

/interface vlan print : Exibir VLANs cadastradas.

http://manual.slackmini.com.br/ 20/69
21/11/2017 Distribuição Linux Slackmini

/interface vlan add help : Explica como criar VLANs.


[admin@servidor] /interface vlan> add help

Adicionar interface VLAN


Use:
add (INTERFACE) (VLAN-ID) [PROTOCOLO] [opcoes]

Opcoes:
name=NOME : Nome simbolico
comment=COMENTARIO : Comentario da VLAN
mac-address=COMENTARIO : Especificar MAC-ADDRESS
Exemplos:
add eth1.800 : Cria a vlan 1q com VID '800' na interface 'eth1'
add eth1 801 : Cria a vlan 1q com VID '801' na interface 'eth1'
add eth1 80 disabled : Cria a vlan desabilitada no sistema (em DOWN)
add eth2 127 qinq : Cria a vlan QinQ com VID '127' na interface 'eth2'

Exemplos de compatibilidade com outros sistemas:


add interface=eth2 vlan-id=127 use-service-tag=yes mtu=1500 name='V-Router'

/interface vlan add ethX.VID : Criar VLAN rápida (interface.VID).


/interface vlan add ethX VID : Criar VLAN rápida. (interface VID)
[admin@servidor] /interface vlan> add eth0.10
[admin@servidor] /interface vlan> print

Flags: C - Cabo conectado, X - Cabo desconectado x - interface desativada


R - Ativa (UP) D - Administrativamente desativada (DOWN)
F - Full-Duplex, H - Half-Duplex
4 - 10 gigabit, 3 - 1 gigabit, 2 - 100 mbit, 1 - 10 mbit
Q - protocolo 802.1q, A - protocolo 802.1ad (QinQ)
# Flags InterfaceVLAN VID Interface Encapsulamento MAC-ADDRESS
1 CRF3Q eth0.10 10 eth0 eth0:eth(1q:10) 00:0c:29:0d:a2:22
[admin@servidor] /interface vlan> add eth0.20
[admin@servidor] /interface vlan> print

Flags: C - Cabo conectado, X - Cabo desconectado x - interface desativada


R - Ativa (UP) D - Administrativamente desativada (DOWN)
F - Full-Duplex, H - Half-Duplex
4 - 10 gigabit, 3 - 1 gigabit, 2 - 100 mbit, 1 - 10 mbit
Q - protocolo 802.1q, A - protocolo 802.1ad (QinQ)
# Flags InterfaceVLAN VID Interface Encapsulamento MAC-ADDRESS
1 CRF3Q eth0.10 10 eth0 eth0:eth(1q:10) 00:0c:29:0d:a2:22
2 CRF3Q eth0.20 20 eth0 eth0:eth(1q:20) 00:0c:29:0d:a2:22
[admin@servidor] /interface vlan> /int print

Idx Nome Status Cabo Velocidade Tipo L3-MTU


1 lo UP Ilimitada Loopback 65536
5 eth0 UP Ligado 1000/full Ethernet 1500
32 eth0.10 UP 1000/full VLAN 1500
33 eth0.20 UP 1000/full VLAN 1500

Encapsulamento de VLANS: VLAN dentro de VLAN ou Q-in-Q

Num switch é possivel ter 4094 VIDs. As vezes grandes redes enfrentam problemas técnicos e administrativos onde os seguintes problemas
aparecem:
Repetição de VIDs (o mesmo VID para clientes diferentes): muito comum quando se agrega uma rede de terceiros à rede atual.
Tambem ocorre quando se deseja passar todo o roteamento entre VLANs para um roteador central (Agregador de serviços de
roteamento).
São necessárias mais de 4094 VLANs
Quando iremos oferecer o transporte a um cliente dentro de uma rede metro-ethernet. O cliente será obrigado a solicitar o cadastro das
VLANs que ele deseja usar nas portas TRUNK do provedor do transporte, isso poderá resultar em conflitos de VIDs (o cliente
participará de uma rede que ele não deveria participar).

Enquanto que o protocolo 802.1q serve para encapsular dados proveniente de portas de usuários ou serviços comuns, o protocolo 802.1ad
serve para encapsular os quadros 802.1q ou quadros comuns adicionando
uma nova numeração com cabeçalho 802.1ad INDEPENDENTE de como o quadro esteja (com ou sem VLAN 1q).
O Protocolo 802.1ad pode ser chamado de Q-in-Q ou "Service TAG".

Ao transportar VLANS 802.1q em uma rede 802.1ad o quadro original (acesso) será encapsulado duas vezes. Na primeira vez ele receberá o
cabeçalho 802.1q (ao sair por uma porta trunk em direção a porta do provedor de transporte)
e ao entrar em uma interface com tunelamento Q-in-Q ele receberá um cabeçalho 802.1ad.
Como existem 2 cabeçalhos, o primeiro (contendo o tipo 802.1ad) recebe o nome de OUTSIDE VLAN. O segundo cabeçalho (contendo o
tipo 802.1q) recebe o nome de INSIDE VLAN.

http://manual.slackmini.com.br/ 21/69
21/11/2017 Distribuição Linux Slackmini

Exemplo de captura de pacote na eth1 do exemplo acima:

root@servidor:/# tcpdump -nevv -i eth1


18:12:57.967838 00:12:34:ab:cd:ef > 33:33:29:ca:fe:99, ethertype 802.1Q-QinQ (0x88a8), length 94: vlan 9, p 0,
ethertype 802.1Q, vlan 10,p 0,
ethertype IPv6, (hlim 255, next-header ICMPv6 (58) payload length: 32)

O Slackmini permite apenas 2 níveis de sub-interfaces, ou seja, você pode criar


uma sub-interface VLAN (nível 1) e em seguida criar uma sub-interface na sub-interface (nível 2), criar interfaces
de 3 níveis ou mais não é possivel (VLAN dentro de VLAN dentro de VLAN).

Criando VLAN Q-in-Q pelo Zeroshell

Execute o comando: zeroshell


Vamos configurar as VLANs Q-in-Q e as VLANs 1q conforme o diagrama acima, observe:

[admin@servidor] > /int vlan


[admin@servidor] /interface vlan>
[admin@servidor] /interface vlan> add eth1.8 qinq
[admin@servidor] /interface vlan> add eth1.9 qinq
[admin@servidor] /interface vlan> print
Flags: C - Cabo conectado, X - Cabo desconectado x - interface desativada
R - Ativa (UP) D - Administrativamente desativada (DOWN)
F - Full-Duplex, H - Half-Duplex
4 - 10 gigabit, 3 - 1 gigabit, 2 - 100 mbit, 1 - 10 mbit
Q - protocolo 802.1q, A - protocolo 802.1ad (QinQ)
# Flags InterfaceVLAN VID Interface Encapsulamento MAC-ADDRESS
1 CRF3A eth1.s8 eth1 eth1:eth(1ad:s8) 00:0c:29:0d:a2:33
2 CRF3A eth1.s9 eth1 eth1:eth(1ad:s9) 00:0c:29:0d:a2:33
[admin@servidor] /interface vlan>

http://manual.slackmini.com.br/ 22/69
21/11/2017 Distribuição Linux Slackmini

Observe que as interfaces VLAN QinQ (802.1ad) tem a


letra "s" antes do VID no nome da interface.

Exemplo:
Interface eth0 VLAN 802.1q VID 8 gera o nome eth0.8
Interface eth0 VLAN 802.1ad VID 8 gera o nome eth0.s8

Com as duas VLANs Q-in-Q acima o servidor consegue enxergar qualquer equipamento ligado diretamente a porta que encapsulou os
quadros com 802.1ad (cabos azuis do diagrama), mas as VLANs que porventura vierem de switchs mais adiante (vlans dos balões) não
serão interpretadas pois possuem ainda marcações adicionais (1q). Para conseguir comunicação com elas é preciso criar interfaces VLANs
802.1q dentro da interface Q-in-Q

[admin@servidor] /interface vlan> add eth1.s8 10


[admin@servidor] /interface vlan> add eth1.s8 20
[admin@servidor] /interface vlan> add eth1.s8 30
[admin@servidor] /interface vlan> add eth1.s9 10
[admin@servidor] /interface vlan> add eth1.s9 20
[admin@servidor] /interface vlan> add eth1.s9 30
[admin@servidor] /interface vlan> add eth1.s9 40
[admin@servidor] /interface vlan> print
Flags: C - Cabo conectado, X - Cabo desconectado x - interface desativada
R - Ativa (UP) D - Administrativamente desativada (DOWN)
F - Full-Duplex, H - Half-Duplex
4 - 10 gigabit, 3 - 1 gigabit, 2 - 100 mbit, 1 - 10 mbit
Q - protocolo 802.1q, A - protocolo 802.1ad (QinQ)
# Flags InterfaceVLAN VID Interface Encapsulamento MAC-ADDRESS
1 CRF3A eth1.s8 eth1 eth1:eth(1ad:s8) 00:0c:29:0d:a2:33
2 CRF3A eth1.s9 eth1 eth1:eth(1ad:s9) 00:0c:29:0d:a2:33
3 CRF3Q eth1.s8.10 10 eth1.s8 eth1:eth(1ad:s8)(1q:10) 00:0c:29:0d:a2:33
4 CRF3Q eth1.s8.20 20 eth1.s8 eth1:eth(1ad:s8)(1q:20) 00:0c:29:0d:a2:33
5 CRF3Q eth1.s8.30 30 eth1.s8 eth1:eth(1ad:s8)(1q:30) 00:0c:29:0d:a2:33
6 CRF3Q eth1.s9.10 10 eth1.s9 eth1:eth(1ad:s9)(1q:10) 00:0c:29:0d:a2:33
7 CRF3Q eth1.s9.20 20 eth1.s9 eth1:eth(1ad:s9)(1q:20) 00:0c:29:0d:a2:33
8 CRF3Q eth1.s9.30 30 eth1.s9 eth1:eth(1ad:s9)(1q:30) 00:0c:29:0d:a2:33
9 CRF3Q eth1.s9.40 40 eth1.s9 eth1:eth(1ad:s9)(1q:40) 00:0c:29:0d:a2:33
[admin@servidor] /interface vlan>

/interface vlan remove ethX.VID : Remover VLAN pelo nome.


[admin@servidor] /interface vlan> remove eth1.s9.10
[admin@servidor] /interface vlan> remove eth1.s9.20
[admin@servidor] /interface vlan> remove eth1.s9.30
[admin@servidor] /interface vlan> remove eth1.s9.40
[admin@servidor] /interface vlan> print

Flags: C - Cabo conectado, X - Cabo desconectado x - interface desativada


R - Ativa (UP) D - Administrativamente desativada (DOWN)
F - Full-Duplex, H - Half-Duplex
4 - 10 gigabit, 3 - 1 gigabit, 2 - 100 mbit, 1 - 10 mbit
Q - protocolo 802.1q, A - protocolo 802.1ad (QinQ)
# Flags InterfaceVLAN VID Interface Encapsulamento MAC-ADDRESS
1 CRF3A eth1.s8 eth1 eth1:eth(1ad:s8) 00:0c:29:0d:a2:33
2 CRF3A eth1.s9 eth1 eth1:eth(1ad:s9) 00:0c:29:0d:a2:33
3 CRF3Q eth1.s8.10 10 eth1.s8 eth1:eth(1ad:s8)(1q:10) 00:0c:29:0d:a2:33
4 CRF3Q eth1.s8.20 20 eth1.s8 eth1:eth(1ad:s8)(1q:20) 00:0c:29:0d:a2:33
5 CRF3Q eth1.s8.30 30 eth1.s8 eth1:eth(1ad:s8)(1q:30) 00:0c:29:0d:a2:33

[admin@servidor] /interface vlan>

/interface vlan remove ID : Remover pelo ID (primeira coluna).


[admin@servidor] /interface vlan> remove 5
[admin@servidor] /interface vlan> remove 4
[admin@servidor] /interface vlan> remove 3
[admin@servidor] /interface vlan> print

Flags: C - Cabo conectado, X - Cabo desconectado x - interface desativada


R - Ativa (UP) D - Administrativamente desativada (DOWN)
F - Full-Duplex, H - Half-Duplex
4 - 10 gigabit, 3 - 1 gigabit, 2 - 100 mbit, 1 - 10 mbit
Q - protocolo 802.1q, A - protocolo 802.1ad (QinQ)
# Flags InterfaceVLAN VID Interface Encapsulamento MAC-ADDRESS
1 CRF3A eth1.s8 eth1 eth1:eth(1ad:s8) 00:0c:29:0d:a2:33
2 CRF3A eth1.s9 eth1 eth1:eth(1ad:s9) 00:0c:29:0d:a2:33

[admin@servidor] /interface vlan>

VLAN 802.1q dentro de 802.1q - Double 1q

http://manual.slackmini.com.br/ 23/69
21/11/2017 Distribuição Linux Slackmini

Cuidado para não confundir Q-in-Q com "Double 1q".

Diferenças:
Q-in-Q: coloca um cabeçalho 802.1ad no quadro recebido já com o cabeçalho 802.1q (OUTSIDE 1ad INSIDE 1q)
Double 1q: coloca um cabeçalho 802.1q no quadro recebido já com o cabeçalho 802.1q (OUTSIDE 1q INSIDE 1q)

No modelo Double 1q, uma bridge recebe um quadro em uma interface por onde entram quandros marcados com 1q e o coloca dentro de
outro quadro 1q, gerando um duplo cabeçalho 1q (1q dentro de 1q).

[admin@servidor] /interface vlan> print


Flags: C - Cabo conectado, X - Cabo desconectado x - interface desativada
R - Ativa (UP) D - Administrativamente desativada (DOWN)
F - Full-Duplex, H - Half-Duplex
4 - 10 gigabit, 3 - 1 gigabit, 2 - 100 mbit, 1 - 10 mbit
Q - protocolo 802.1q, A - protocolo 802.1ad (QinQ)
# Flags Nome VID Interface Encapsulamento MAC-ADDRESS
Nenhuma VLAN cadastrada.
[admin@servidor] /interface vlan> add eth1.40
[admin@servidor] /interface vlan> add eth1.40 10
[admin@servidor] /interface vlan> print
Flags: C - Cabo conectado, X - Cabo desconectado x - interface desativada
R - Ativa (UP) D - Administrativamente desativada (DOWN)
F - Full-Duplex, H - Half-Duplex
4 - 10 gigabit, 3 - 1 gigabit, 2 - 100 mbit, 1 - 10 mbit
Q - protocolo 802.1q, A - protocolo 802.1ad (QinQ)
# Flags Nome VID Interface Encapsulamento MAC-ADDRESS
1 CRF3Q eth1.40 40 eth1 1q:40 00:0c:29:0d:a2:33
2 CRF3Q eth1.40.10 10 eth1.40 1q:40/1q:10 00:0c:29:0d:a2:33

VLAN com MAC alterado

http://manual.slackmini.com.br/ 24/69
21/11/2017 Distribuição Linux Slackmini
Ao criar uma interface VLAN no Slackmini, os quadros enviados por essa interface usarão como MAC de origem o mesmo MAC da interface
principal.
Em alguns casos será necessário personalizar esse MAC (como numa interligação a uma rede onde há controle de MAC e você trocou a
placa de rede).

Para criar uma VLAN com MAC alterado basta informar o MAC como parametro ao adicioná-la. Exemplo:

/interface vlan add ethX.VID MAC : Criar VLAN com MAC alterado.
[admin@servidor] /interface vlan> print
Flags: C - Cabo conectado, X - Cabo desconectado x - interface desativada
R - Ativa (UP) D - Administrativamente desativada (DOWN)
F - Full-Duplex, H - Half-Duplex
4 - 10 gigabit, 3 - 1 gigabit, 2 - 100 mbit, 1 - 10 mbit
Q - protocolo 802.1q, A - protocolo 802.1ad (QinQ)

# Flags Nome VID Interface Encapsulamento MAC-ADDRESS


Nenhuma VLAN cadastrada.
[admin@servidor] /interface vlan> add eth0.101 00:FF:BE:BA:CA:FE
[admin@servidor] /interface vlan> add eth0.102 00:FA:DA:5A:FA:DA
[admin@servidor] /interface vlan> print

Flags: C - Cabo conectado, X - Cabo desconectado x - interface desativada


R - Ativa (UP) D - Administrativamente desativada (DOWN)
F - Full-Duplex, H - Half-Duplex
4 - 10 gigabit, 3 - 1 gigabit, 2 - 100 mbit, 1 - 10 mbit
Q - protocolo 802.1q, A - protocolo 802.1ad (QinQ)
# Flags Nome VID Interface Encapsulamento MAC-ADDRESS
1 CRF3Q eth0.101 101 eth0 1q:101 00:ff:be:ba:ca:fe
2 CRF3Q eth0.102 102 eth0 1q:102 00:fa:da:5a:fa:da
[admin@servidor] /interface vlan> print ifconfig eth0.101 eth0.102
eth0.101: flags=4163 mtu 1500
inet6 fe80::2ff:beff:feba:cafe prefixlen 64 scopeid 0x20
ether 00:ff:be:ba:ca:fe txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 648 (648.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0.102: flags=4163 mtu 1500
inet6 fe80::2fa:daff:fe5a:fada prefixlen 64 scopeid 0x20
ether 00:fa:da:5a:fa:da txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 648 (648.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[admin@servidor] /interface vlan> print link eth0.101 eth0.102
13: eth0.101@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 00:ff:be:ba:ca:fe brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
RX errors: length crc frame fifo missed
0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
648 8 0 0 0 0
TX errors: aborted fifo window heartbeat transns
0 0 0 0 0
14: eth0.102@eth0: <<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 00:fa:da:5a:fa:da brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
RX errors: length crc frame fifo missed
0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
648 8 0 0 0 0
TX errors: aborted fifo window heartbeat transns
0 0 0 0 0

   CONFIGURANDO REDE IPV4


Sobre endereços IPv4 (para leigos)

Endereços IP são formas de localizar um computador em uma rede específica. Por exemplo: para encontrar o endereço de uma casa é
preciso saber a cidade, o nome da rua e o número da casa.
Quando se trata de computadores, toda rede local (computadores ligados a um switch por exemplo) pode ser considerada uma rua e cada
computador precisará ter um número na mesma sequencia.
Seguindo o exemplo, se o nome da "rua" fosse 10.0.0.X, o primeiro computador seria o número 10.0.0.1, o segundo computador seria o
número 10.0.0.2, e assim por diante.
Essa analogia é simplória, para mais informações sobre o que são endereços IP consulte os links abaixo.

http://manual.slackmini.com.br/ 25/69
21/11/2017 Distribuição Linux Slackmini

Wikipedia em português, Endereco IP: https://pt.wikipedia.org/wiki/Endere%C3%A7o_IP


Wikipedia em português, Protocolo de Internet: https://pt.wikipedia.org/wiki/Protocolo_de_Internet

Existem 2 tipos de endereços IPv4:


Privados: São endereços IP que você pode colocar livremente em seus computadores pessoais, nos computadores de um escritório
ou nos computadores de uma empresa. São eles: 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10.
Esses endereços se repetem em quase todas as casas e empresas (eu posso usar 192.168.0.1 na minha casa e voce usar o mesmo IP
na sua casa) por isso os IPs privados não fazem parte da Internet. Para que
os computadores com IPs privados naveguem na internet é preciso um NAT - mecanismo que troca o IP privado por um IP público.
Públicos: são endereços IP usados para identificar computadores na Internet.
É impossível participar da Internet sem posssuir pelo menos um IP público.
Cada empresa que deseja participar da rede Internet deve adquirir seus próprios números IPs.
Esses números não podem ser usados por outras pessoas ou empresas alem daquela que o adquiriu.
Uma forma comum de acessar a Internet é contratando um LINK DE INTERNET onde o fornecedor (provedor de Internet) lhe
emprestará um de seus IPs públicos temporariamente.

Use apenas os seguintes IPs:


10.x.x.x/8: de 10.0.0.1 a 10.255.255.254
172.16.x.x/12: de 172.16.0.1 a 172.31.255.254
192.168.x.x/16: de 192.168.0.1 a 192.168.255.254
IPs diferentes destes acima só devem ser configurados sob orientação do seu fornecedor de Internet.

Configurando endereços IPv4 manualmente

Execute o comando: zeroshell

/ip address : Entrar no diretório de configuração IPv4.


[admin@servidor] > /ip addr
[admin@servidor] /ip address>

/ip address print : Listar endereços IPv4.


[admin@servidor] /ip address> print
# ADDRESS NETWORK BROADCAST INTERFACE
0 127.0.0.1/32 - - lo (loopback)
[admin@servidor] /ip address>

O endereço 127.0.0.1/32 é nativo do Linux e não pode ser removido.

Você pode adicionar ips na interface loopback (lo) também.


Caso você precise atribuir um IP público (IP válido) ao Slackmini
sem perder endereços em divisões de sub-redes (como por exemplo, num /30 você perde 3 ips: rede, gateway e broadcast)
você pode adicionar um único endereço /32 na interface loopback (nome lo).

/ip address add help : Exibe ajuda para configurar endereço IPv4.
[admin@servidor] /ip address> add help
Adicionar endereco IPv4 na interface
Use:
add [opcoes]
Opcoes:
address=x.x.x.x/nn : Endereco IP e numero de bits da mascara
interface=DEV : Interface de rede
comment=COMENTARIO : Comentario no registro
disabled=yes/no : Adicionar desativado (yes = nao aplicar na interface)
Exemplo:
add eth0 192.168.0.1/24
Exemplos de compatibilidade com outros sistemas:
add address=192.168.0.1/24 interface=eth0 disabled=no
[admin@servidor] /ip address>

http://manual.slackmini.com.br/ 26/69
21/11/2017 Distribuição Linux Slackmini

/ip address add ethX x.x.x.x/n : Adicionar endereço IPv4.


[admin@servidor] /ip address> add 172.20.0.2/24 eth0
[admin@servidor] /ip address> add 10.0.0.1/24 eth1
[admin@servidor] /ip address> print
# ADDRESS NETWORK BROADCAST INTERFACE
0 127.0.0.1/32 - - lo (loopback)
1 172.20.0.2/24 172.20.0.0 172.20.0.255 eth0
2 10.0.0.1/24 10.0.0.0 10.0.0.255 eth1

[admin@servidor] /ip address> ping 10.0.0.1 2


SEQ HOST SIZE TTL TIME STATUS
1 10.0.0.1 64 64 0.027 echo reply
2 10.0.0.1 64 64 0.038 echo reply
sent=2 received=2 packet-loss=0 min-rtt=0.027 avg-rtt=0.032 max-rtt=0.038
[admin@servidor] /ip address>

/ip address remove x.x.x.x : Remover endereço IPv4.


[admin@servidor] /ip address> remove 10.0.0.1
- Removendo registro 2: 10.0.0.1/24 na interface eth1
[admin@servidor] /ip address> print

# ADDRESS NETWORK BROADCAST INTERFACE


0 127.0.0.1/32 - - lo (loopback)
1 172.20.0.2/24 172.20.0.0 172.20.0.255 eth0
[admin@servidor] /ip address>

Gateway padrão (manualmente)

Ao configurar um endereço IP em uma interface de rede seu servidor conseguirá se comunicar com os computadores que estiverem na
mesma rede.
Para que ele consiga se comunicar com computadores de outra rede (ou redes distantes com a Internet) é necessário usar um GATEWAY.

O Gateway tambem recebe o nome de "default", "rota padrão", "gateway padrão" e é representado pelo prefixo 0.0.0.0/0,
que deve apontar para um endereço IP na mesma rede em que o servidor/roteador se encontra.

http://manual.slackmini.com.br/ 27/69
21/11/2017 Distribuição Linux Slackmini

/ip route : Entrar no diretório de configuração de rotas IPv4.


[admin@servidor] > /ip rou
[admin@servidor] /ip route>

/ip route print : Listar rotas IPv4.


[admin@servidor] /ip route> print

Flags: X - desativa A - ativa, D - dinamica C - conectada


S - estatica B - blackhole U - unreachable P - prohibit

# Destino IP Local Gateway Metrica Interface


AC 127.0.0.0/8 lo
AC 172.20.0.0/24 172.20.0.2 eth0
[admin@servidor] /ip route>

/ip route add help : Exibe ajuda para adicionar rotas IPv4.
[admin@servidor] /ip route> add help
Adicionar rota estatica IPv4
Use:
add [opcoes]

Opcoes:
dst-address=x.x.x.x/nn : Endereco IP e numero de bits da mascara
interface=DEV : Interface de rede
gateway=DEV : IP do proximo salto
distance=N : Metrica (saltos)
comment=COMENTARIO : Comentario no registro
disabled=yes/no : Adicionar desativado (yes = nao aplicar)

Exemplos:
add 0.0.0.0/0 192.168.0.1
add dst=0.0.0.0/0 gw=192.168.0.1
Exemplos de compatibilidade com outros sistemas:
add dst-address=0.0.0.0/0 gateway=192.168.0.1
[admin@servidor] /ip route>

/ip route add default x.x.x.x : Adicionar gateway padrão


[admin@servidor] /ip route> add default 172.20.0.1
[admin@servidor] /ip route> print

Flags: X - desativa A - ativa, D - dinamica C - conectada


S - estatica B - blackhole U - unreachable P - prohibit
# Destino IP Local Gateway Metrica Interface
A default 172.20.0.1 1 eth0
AC 127.0.0.0/8 lo
AC 172.20.0.0/24 172.20.0.3 eth0

Listando rotas IPv4

O Slackmini exibe apenas a tabela de rotas operacionais seguida das rotas cadastradas (rotas estáticas).
Você poderá ver as apenas as rotas cadastras manualmente (algunas podem não estar operacionais) pelo 'print static'.

/ip route print help : Exibe modos de impressão de rotas IPv4.


Exibir tabela de rotas IPv4
Use:
print [opcoes]

Opcoes:
cache : Exibir cache de rotas
kernel : Exibir rotas do /proc/net/route
iproute : Exibir rotas via iproute2
route : Exibir rotas via 'route -n'
netstat : Exibir rotas via 'netstat -rn'
static : Exibir rotas estaticas cadastradas
zebra : Exibir rotas pelo Zebra
ospf : Exibir rotas OSPF pelo Zebra
bgp : Exibir rotas BGP pelo Zebra
local : Exibir tabela local
default : Exibir tabela default
rule : Exibir sequencia de roteamento
table [N] : Exibir tabela pelo numero (0-255)
[admin@servidor] /ip route> print
Flags: X - desativa A - ativa, D - dinamica C - conectada
S - estatica B - blackhole U - unreachable P - prohibit
# Destino IP Local Gateway Metrica Interface
A default 172.20.0.1 1 eth0
AC 127.0.0.0/8 lo
AC 172.20.0.0/24 172.20.0.3 eth0
Rotas estaticas cadastradas:
# Destino Gateway Interface Metric IP Local
2 192.168.20.0/24 172.20.11.1 1
3 192.168.30.0/24 172.20.11.1 1
http://manual.slackmini.com.br/ 28/69
21/11/2017 Distribuição Linux Slackmini
4 0.0.0.0/0 172.20.11.1 1

/ip route print static : Exibe rotas cadastradas manualmente.


[admin@servidor] /ip route> print static
# Destino Gateway Interface Metric IP Local
1 0.0.0.0/0 172.20.0.1 1

/ip route print static running : Exibe cadastradas e operacionais.


[admin@servidor] /ip route> print static run
Flags: X - desativa A - ativa, D - dinamica C - conectada
s - estatica B - blackhole U - unreachable P - prohibit
# Destino IP Local Gateway Metrica Interface
A 0.0.0.0/0 172.20.0.1 1 eth0

Política de roteamento

O kernel Linux implementa uma sequencia de verificações quando é necessário descobrir o destino de um determinado pacote baseado em
seu IP de destino, essa operação se chama ROUTER LOOKUP.

http://manual.slackmini.com.br/ 29/69
21/11/2017 Distribuição Linux Slackmini

Fazer um ROUTER LOOKUP consiste em 4 sequencias:


O IP de destino está registrado na tabela CACHE?
Se estiver, usar o registro do cache para a desisão, se não verificar nas tabelas de rotas, sequência: LOCAL -> MAIN -> DEFAULT
O IP de destino está na tabela LOCAL ?
A tabela local possui o cadastro dos IPs que pertencem ao próprio servidor.
Se estiver, o destino do pacote será a fila interna do roteador (loopback) onde o pacote será entregue a um software interno.
O IP de destino está na tabela MAIN ?
A tabela MAIN contem as rotas operacionais cadastradas manualmente (rotas estáticas) e cadastradas dinamicamente (OSPF, BGP,
protocolos de roteamento).
Se houver registro para a rota desejada o pacote será enviado para ela e um registro será inserido na tabela CACHE.
O IP de destino está na tabela DEFAULT ?
A tabela DEFAULT normalmente fica vazia. Ela foi projetada para conter rotas para pacotes cujo destino são desconhecidos com o
proposito de analise administrativa.
Se houver registro para a rota desejada o pacote será enviado para ela e um registro será inserido na tabela CACHE.

/ip route print get x.x.x.x : Faz ROUTER LOOKUP para determinado IP.
[admin@servidor] /ip route> get 200.160.2.3
- Rota: 200.160.2.3 via 172.20.0.1 dev eth0 src 172.20.0.2 cache
[admin@servidor] /ip route>

/ip route print rule : Exibe ordem de consulta de roteamento.


/ip route print cache : Exibe a tabela de cache de rotas.
/ip route print local : Exibe a tabela de IPs locais e broadcasts.
/ip route print main : Exibe a tabela de rotas estáticas/dinãmicas.
/ip route print default : Exibe a tabela de rotas final.
[admin@servidor] /ip route> print rule

http://manual.slackmini.com.br/ 30/69
21/11/2017 Distribuição Linux Slackmini
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
[admin@servidor] /ip route> print cache
[admin@servidor] /ip route> print local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 172.20.0.0 dev eth0 proto kernel scope link src 172.20.0.2
local 172.20.0.2 dev eth0 proto kernel scope host src 172.20.0.2
broadcast 172.20.0.255 dev eth0 proto kernel scope link src 172.20.0.2
[admin@servidor] /ip route> print main

default via 172.20.0.1 dev eth0


127.0.0.0/8 dev lo scope link
172.20.0.0/24 dev eth0 proto kernel scope link src 172.20.0.2
[admin@servidor] /ip route> print default

   TABELA ARP (IPV4/MAC)


Tabela ARP - mapeamento IP e MAC Address

Rede locais baseada em broadcast (ethernet / 802) são redes baseada em MAC Address.
Todas as informações enviadas e recebidas em uma rede baseada em broadcast é transportada em sequência de bits chamada QUADRO.
Um quadro precisa ter um cabeçalho com o destinatário (MAC de destino) e um remetente (MAC de origem).
Redes IPv4 são baseadas em endereços IP, assim, para que computadores em uma rede local enviem pacotes IP uns para os outros é
preciso que o remetente DESCUBRA o MAC Address do outro computador na mesma rede local ou do roteador que faz o papel de gateway
padrão para então enviar as informações (quadro contendo pacote IP) na rede local.
O protocolo ARP é utilizado para que um computador descubra o MAC Adress do outro na mesma rede local. Se o computador destinatário
não estiver na mesma rede local será preciso decobrir o MAC Address do gateway padrão (roteador).

Existem 2 tipos de quadros ARP:

ARP-REQUEST: pergunta enviada a um MAC especifico ou via broadcast (MAC FF:FF:FF:FF:FF:FF)


ARP-REPLY: resposta enviada pelo computador que possui o endereço IP solicitado ao computador que efetuou a pergunta (arp-
request).

Funcionamento do protocolo ARP ao solicitar o MAC-Address do ip '172.20.0.1':


1 - envia um broadcast perguntando 'Meu IP é 172.20.0,2 quem é 172.20.0.1 ?'
2 - o software ARP no computador que possui o IP 172.20.0.1 recebe a pergunta e responde: 'Meu IP é 172.20.0.1 e meu MAC-
Address é 00:01:02:aa:bb:cc' para o MAC de quem fez a pergunta.
3 - a resposta chega e um registro é inserido na tabela ARP mapeando o ip 172.20.0.1 no MAC 00:01:02:aa:bb:cc
4 - se novos pacotes IP precisam ser enviados para o IP 172.20.0.1 o MAC registrado na tabela ARP será usado
5 - caso nenhum pacote for enviado para o IP 172.20.0.1 apos alguns minutos o registro da tabela ARP é removido automaticamente
6 - se for necessário se comunicar com 172.20.0.1 novamente o processo é reiniciado no passo 1
7 - se nenhuma resposta for recebida às solicitações ARP uma mensagem ICMP 'host inalcançavel' é retornado.
8 - se a troca de pacotes IP for constante entre dois computadores uma pergunta será enviada especificamente ao MAC que enviou a
última resposta com o objetivo de atualizar o tempo do registro na tabela ARP antes que ela expire.

Ilustração da descoberta de MAC via ARP:

http://manual.slackmini.com.br/ 31/69
21/11/2017 Distribuição Linux Slackmini

Exibindo de tabela ARP

/ip arp : Entrar no diretório de controle ARP.


[admin@servidor] > /ip arp
[admin@servidor] /ip arp>

/ip arp print help : Ajuda para listar tabela ARP.


[admin@servidor] /ip arp> print help

Imprimir tabela ARP - mapeamento IPv4 <-> MAC Address


Use:
print : Exibir tabela ARP
print [IP] : Exibir informacoes de um IP
print info : Exibir tabela ARP com detalhes
print error : Exibir IPs sem resposta ARP
print all : Exibir tabela ARP com IPs sem resposta
print neighbors : Exibir tabela ARP via iproute2
print neighbors [IP] : Exibir informacoes de um IP via iproute2

/ip arp print : Listar tabela ARP.


[admin@servidor] /ip arp> print
IP address MAC INTERFACE
172.20.0.1 44:d9:e7:07:2f:ab eth0
172.20.0.3 7c:6d:62:89:01:02 eth0
[admin@servidor] /ip arp>

O endereço MAC (MAC Address) é constituido de 6 bytes.


Os 3 primeiros bytes são atribuidos pelo IEEE ao fabricante do dispositivo eletrônico, dessa forma é possivel saber o
fabricante da interface de rede do roteador/switch/servidor por esses 3 bytes.

Os 3 bytes seguintes são atribuidos sequencialmente pelo fabricante a cada dispositivo fabricado.

Cadastro de todos os fabricantes de interface com MAC: http://standards-oui.ieee.org/oui.txt


Site para consultar fabricante do MAC (macvendors.com): http://www.macvendors.com/
Site para consultar fabricante do MAC (macvendorlookup.com): http://www.macvendorlookup.com/

/ip arp print info : Exibir informações detalhadas da tabela ARP


[admin@servidor] /ip arp> print info
[1] IP Address....: 172.20.0.1
[1] MAC..: 44:d9:e7:07:2f:ab
[1] DEV..: eth0
[1] Vendor.: Ubiquiti Networks
[2] IP Address....: 172.20.0.3
[2] MAC..: 7c:6d:62:89:01:02
[2] DEV..: eth0
[2] Vendor.: Apple

http://manual.slackmini.com.br/ 32/69
21/11/2017 Distribuição Linux Slackmini
[admin@servidor] /ip arp>

/ip arp print x.x.x.x : Exibir informações de um IP específico


[admin@servidor] /ip arp> print 172.20.0.1
[1] IP Address....: 172.20.0.1
[1] MAC..: 44:d9:e7:07:2f:ab
[1] DEV..: eth0
[1] Vendor.: Ubiquiti Networks
[admin@servidor] /ip arp>

Monitoramento de tráfego ARP

Você pode monitorar os padros enviados e recebidos em uma interface de rede, o comando 'monitor' filtra os pacotes ARP na interface
escolhida.

/ip arp monitor [interface] : Monitora atividade ARP na [interface].


[admin@servidor] /ip arp> monitor eth0
CONTROL+C to Abort
ARP Monitor on eth0
10:22:55.983361 00:50:cc:cc:cc:01 > 44:d9:e7:07:2f:ab, length 60: Ethernet (len 6), IPv4 (len 4),
Request who-has 172.20.0.1 (44:d9:e7:07:2f:ab) tell 172.20.0.3, length 46
10:22:55.983559 44:d9:e7:07:2f:ab > 00:50:cc:cc:cc:01, length 60: Ethernet (len 6), IPv4 (len 4),
Reply 172.20.0.1 is-at 44:d9:e7:07:2f:ab, length 46

É possivel contar o tempo desde o envio de um ARP-REQUEST até a chegada de um ARP-REPLY e usar essa medição como um PING:
ARP-PING.

/ip arp arping [IP] : Efetua medição de ping via ARP.


ou

ping arp [IP] : Efetua medição de ping via ARP.


[admin@servidor] /ip arp> arping 172.20.0.1 count 4
SEQ TYPE TARGET MAC-ADDRESS TIME STATUS
1 Reply 172.20.0.1 44:D9:E7:07:2F:AB 0.960 OK
2 Reply 172.20.0.1 44:D9:E7:07:2F:AB 1.066 OK
3 Reply 172.20.0.1 44:D9:E7:07:2F:AB 0.857 OK
4 Reply 172.20.0.1 44:D9:E7:07:2F:AB 0.910 OK
sent=4 received=4 packet-loss=0% min-rtt=0.857 avg-rtt=0.948 max-rtt=1.066
[admin@servidor] /ip arp>

O ARPING envia um broadcast para realizar o primeiro ping. Ao receber a primeira resposta com o MAC Address do alvo ele passa a enviar
os pings seguintes para esse MAC.
Você pode alterar esse comportamente para que todos os pings sejam enviados via BROADCAST o que ajuda a detectar duplicações de IPs
na rede ou loops.

/ip arp arping [IP] broadcast : Ping ARP somente com broadcast.
[admin@servidor] /ip arp> arping 172.20.0.1 count 4 broadcast

SEQ TYPE TARGET MAC-ADDRESS TIME STATUS


1 Reply 172.20.0.1 44:D9:E7:07:2F:AB 0.895 OK
2 Reply 172.20.0.1 44:D9:E7:07:2F:AB 0.950 OK
3 Reply 172.20.0.1 44:D9:E7:07:2F:AB 0.889 OK
4 Reply 172.20.0.1 44:D9:E7:07:2F:AB 0.963 OK
sent=4 received=4 packet-loss=0% min-rtt=0.889 avg-rtt=0.924 max-rtt=0.963
[admin@servidor] /ip arp>

Procurando IP via ARP

É bastante comum não saber em qual interface está determinado IP após ligar os cabos do servidor/roteador numa rede.
É possível fazer uma busca enviando um ARP-REQUEST em todas as interfaces de rede e ver em qual delas está um determinado vizinho
com o comanod 'scan'.

http://manual.slackmini.com.br/ 33/69
21/11/2017 Distribuição Linux Slackmini

/ip arp scan [IP] : Procura IP vizinha via ARP-Request.


[admin@servidor] /ip arp> scan 172.20.0.1
ARP-Scan 172.20.0.1
eth0 :: arp-reply: 172.20.0.1 on 44:D9:E7:07:2F:AB [Ubiquiti Networks]
eth1 :: not-found
eth2 :: not-found
eth3 :: not-found
eth1.40 :: not-found

ARP-Scan 172.20.0.1, replies=1 interface=eth0


[admin@servidor] /ip arp>

Renovando tabela ARP

O comando 'flush' permite remover registros não utilizados e renova registros que estejam em uso.

/ip arp flush : Renovar tabela ARP


[admin@servidor] /ip arp> flush
[admin@servidor] /ip arp>

   CONFIGURANDO REDE IPV6


Sobre endereços IPv6 (para leigos)

No capítulo IPv4 você aprendeu como funciona os endereços IP, especificamente IP versão 4 (IPv4) que foi a versão que deu vida a Internet.
Quando a internet surgiu o plano de usar 4 bytes para endereçar computadores parecia ser suficiente porem o sucesso da Internet fez com
que os números disponíveis acabassem (ainda sobrou um pouco que é racionado).

O protocolo IPv6 foi criado para substituir gradativamente o protocolo IPv4. Essa transição deve demorar algumas décadas.
Enquanto o IPv4 tem 4 bytes (32 bits) escritos na forma decimal (n.n.n.n, onde cada n representa 8 bits em números de 0 a 255)
possibilitando 4 bilhões de possibilidades,
o IPv6 é constituido de 16 bytes (128 bits) escritos na forma hexadecimal (hh:hh:hh:hh:hh:hh:hh:hh) possibilitando 11 undecilhões de
possibilidades.

Para não ficar complicado dar números IPv6 para computadores, existe uma organização natural que torna tudo mais fácil.

1 - Organização de prefixos

http://manual.slackmini.com.br/ 34/69
21/11/2017 Distribuição Linux Slackmini

Observando essa organização, um provedor vai receber um /32, exemplo: 2001:0db8:0000:0000:0000:0000:0000:0000/32.

Os zeros a esquerda podem ser omitidos, assim temos a representação: 2001:db8:0:0:0:0:0:0/32.


Vários grupos em zero podem ser representados por um salto ::, assim temos: 2001:db8::/32.
Dessa forma é mais fácil digitar endereços IPv6!

O endereço ::1/128 é nativo do Linux e não pode ser removido.

Você verá com frequencia o prefixo 2001:db8::/32 sendo usado em muitos tutoriais e manuais. Essa faixa é de uso privado
para fins de documentação.

RFC 3849 IPv6 Address Prefix Reserved for Documentation: https://tools.ietf.org/html/rfc3849

2 - Atribuindo endereços IPv6

No IPv4 é comum distribuir IPs aos usuários entregando-lhes um único IP público ou privado e deixar que o roteador faça NAT dos
endereços internos.
No IPv6 isso mudou. Não existe NAT em IPv6 (existe mas não é publicamente disponivel).

http://manual.slackmini.com.br/ 35/69
21/11/2017 Distribuição Linux Slackmini

Para que o usuário tenha capacidade de navegar em IPv6 pelo menos 2 prefixos devem ser alocados.
O primeiro prefixo será atribuido a rede entre o provedor e o usuários e o segundo
prefixo o provedor fará o roteamento para o usuário usa-lo dentro de sua rede.

Toda interface de rede com IPv6 ativo recebe automaticamente (atribuido pelo sistema operacional) um endereço fixo
chamado LINK LOCAL.
O endereço LINK LOCAL é o resultado de um cálculo chamado EUI 64 usando o prefixo fe80::/64 e o endereço MAC da
interace.

Você não pode editar ou remover os endereços LINK LOCAL pois eles são a base do funcionamento do ICMPv6, sem ele o
protocolo IPv6 não funciona.

Faremos o exemplo acima configurando o Roteador Cliente.

Configurando endereços IPv6 manualmente

Execute o comando: zeroshell

/ipv6 address : Entrar no diretório de configuração IPv6.


[admin@servidor] > /ipv addr
[admin@servidor] /ipv6 address>

/ipv6 address print help : Ajuda para listar endereços IPv6.


[admin@servidor] /ipv6 address> print help
Imprimir lista de IPv6 nas interfaces
Use:
print : Exibir tabela de enderecos IPv6
print ipv6 : Exibir tabela via iproute2 (ip -6 addr show)
print static : Exibir enderecos cadastrados
print local : Exibir enderecos link-local
[admin@servidor] /ipv6 address>

/ipv6 address print : Listar endereços IPv6.


[admin@servidor] /ipv6 address> print
# ADDRESS INTERFACE
- ::1/128 lo (loopback)
- 2001:db8:beba:cafe::2/126 eth0
- fe80::20c:29ff:fe0d:a222/64 eth0
- fe80::20c:29ff:fe0d:a244/64 eth1
- fe80::20c:29ff:fe0d:a244/64 eth2
- fe80::20c:29ff:fe0d:a255/64 eth3
[admin@servidor] /ipv6 address>

/ipv6 address print static : Listar endereços IPv6 cadastrados


[admin@servidor] /ipv6 address> print static
# ADDRESS INTERFACE
0 ::1/128 lo (loopback)
[admin@servidor] /ipv6 address>

http://manual.slackmini.com.br/ 36/69
21/11/2017 Distribuição Linux Slackmini

/ipv6 address print local : Listar endereços IPv6 LINK-LOCAL


[admin@servidor] /ipv6 address> print local
# ADDRESS INTERFACE
- fe80::20c:29ff:fe0d:a222/64 eth0
- fe80::20c:29ff:fe0d:a244/64 eth1
- fe80::20c:29ff:fe0d:a244/64 eth2
- fe80::20c:29ff:fe0d:a255/64 eth3

/ipv6 address add help : Ajuda para adicionar o endereção IPv6


[admin@servidor] /ipv6 address> add help

Adicionar endereco IPv6 na interface


Use:
add (IPv6) (Interface) [opcoes]
Opcoes:
address=x:x:x:x:h:h:h:h/nn : Endereco IPv6 e numero de bits da mascara
interface=DEV : Interface de rede
comment=COMENTARIO : Comentario no registro
disabled=yes/no : Adicionar desativado
Exemplo:
add eth0 2001:db8:beba:c0ca::1/64

Exemplos de compatibilidade com outros sistemas:


add address=2001:db8:beba:c0ca::1/64 interface=eth0 disabled=no
[admin@servidor] /ipv6 address>

/ipv6 address add (IPv6) (Interface) : Adicionar o endereção IPv6


[admin@servidor] /ipv6 address> add 2001:db8:beba:cafe::2/126 eth0
[admin@servidor] /ipv6 address> print static
# ADDRESS INTERFACE
0 ::1/128 lo (loopback)
1 2001:db8:beba:cafe::2/126 eth0

[admin@servidor] /ipv6 address>

/ipv6 address remove (IPv6 | ID) : Remover endereção IPv6


[admin@servidor] /ipv6 address> remove 1
[admin@servidor] /ipv6 address> print static
# ADDRESS INTERFACE
0 ::1/128 lo (loopback)
[admin@servidor] /ipv6 address>

Vamos adicionar os endereços conforme o exemplo do diagrama.

[admin@servidor] /ipv6 address> add 2001:db8:beba:cafe::2/126 eth0


[admin@servidor] /ipv6 address> add 2001:db8:1234:1234::1/64 eth1
[admin@servidor] /ipv6 address> print static
# ADDRESS INTERFACE
0 ::1/128 lo (loopback)
1 2001:db8:beba:cafe::2/126 eth0
2 2001:db8:1234:1234::1/64 eth1
[admin@servidor] /ipv6 address>

Endereços IPv6 LINK-LOCAL

O protocolo IPv6 possui uma peculiaridade: todos os computadores com IPv6 numa rede local já podem se comunicar por meio de
endereços LINK-LOCAL.
Sempre que o sistema operacional ativa o suporte IPv6 em uma interface de rede ela se atribui um IPv6 LINK-LOCAL baseado no MAC-
ADDRESS da interface usando o cálculo EUI-64.
O endereço LINK-LOCAL é vital para todo o funcionamento do IPv6 e não deve ser removido. Muitos sistemas impedem que você remova o
LINK-LOCAL por segurança.

http://manual.slackmini.com.br/ 37/69
21/11/2017 Distribuição Linux Slackmini

O simples fato de possuir um endereço IPv6 na mesma rede (FE80::/64) torna a comunicação possível por padrão.
Uma coisa que pode parecer estranho no IPv6 é que a rede FE80::/64 pode existir em vários lugares ao mesmo tempo mudando o
paradigma aprendido no IPv4 de que um endereço de rede só pode estar em um lugar.

Observe o Rotaedor B no desenho acima. Ele participa de duas redes FE80::/64. Ele pode se comunicar com o roteador A e o roteador C
bastando usar o IPv6 Link-Local da interface conectada a eles.
O Roteador A pode se comunicar com o Roteador B usando IPv6 LINK-LOCAL mas não pode se comunicar com C pois endereços IPv6
LINK-LOCAL não são roteados entre redes físicas (ou VLANS) diferentes
Como a rede FE80::/64 existe em várias interfaces simultaneamente é preciso especificar a interface de rede para dar PING em um
endereço IPv6 Link-Local

ping [IPv6-link-local] (interface) : Ping no IPv6 Link-Local.


[admin@roteador-a] > ping fe80::0211:22ff:feaa:bbcc eth0 4
SEQ HOST SIZE TTL TIME STATUS
1 fe80::0211:22ff:feaa:bbcc 64 64 0.030 echo reply
2 fe80::0211:22ff:feaa:bbcc 64 64 0.046 echo reply
3 fe80::0211:22ff:feaa:bbcc 64 64 0.044 echo reply
4 fe80::0211:22ff:feaa:bbcc 64 64 0.049 echo reply
sent=4 received=4 packet-loss=0 min-rtt=0.030 avg-rtt=0.042 max-rtt=0.049
[admin@roteador-a] >

O IPv6 permite que você de PING em todos os vizinhos com endereços IPv6 LINK-LOCAL ao mesmo tempo. Para isso basta informar no
ping o endereço do grupo MULTICAST e a interface de rede.

http://manual.slackmini.com.br/ 38/69
21/11/2017 Distribuição Linux Slackmini

ping ff02::1 (interface) : Ping em todos os IPv6 Link-Local.


[admin@roteador-a] > ping ff02::1 eth0 4
SEQ HOST SIZE TTL TIME STATUS
1 fe80::0211:22ff:feaa:bbcc 64 64 0.030 echo reply
2 fe80::0211:22ff:feaa:bbcc 64 64 0.046 echo reply
3 fe80::0211:22ff:feaa:bbcc 64 64 0.044 echo reply
4 fe80::0211:22ff:feaa:bbcc 64 64 0.049 echo reply
sent=4 received=4 packet-loss=0 min-rtt=0.030 avg-rtt=0.042 max-rtt=0.049
[admin@roteador-a] >

Gateway padrão (manualmente)

É muito importante que você atribua endereços IPv6 nas interfaces de rede para então configurar esses endereços estáticos como gateway
padrão.
Basear as rotas estáticas em endereços link-local é uma péssima ideia pois como eles são gerados pelo MAC-ADDRESS uma futura
alteração física na rede poderá requerer uma grande mão de obra.
Você irá observar no futuro que protocolos de roteamento dinamico como o RIP-NG e o OSPFv3 adicionam as rotas sempre baseadas no
endereço Link-Local do vizinho, isso é normal e não acarreta problemas visto que sempre que você alterar a interface de rede ou o MAC-
Address o protocolo atualizará as rotas.

Vamos usar o diagrama acima como exemplo para configurar o servidor A para usar o Roteador como gateway padrão IPv6:

/ipv6 route : Entrar no diretório de configuração de rotas IPv6.


[admin@servidor-a] > /ipv rou
[admin@servidor-a] /ipv6 route>

/ipv6 route print : Listar rotas IPv6.


[admin@servidor-a] /ipv6 route> print

2001:db8:beba:cafe::/126 dev eth0 proto kernel metric 256 pref medium


fe80::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth1 proto kernel metric 256 pref medium
fe80::/64 dev eth2 proto kernel metric 256 pref medium
fe80::/64 dev eth3 proto kernel metric 256 pref medium
ff00::/8 dev eth0 metric 256 pref medium
ff00::/8 dev eth1 metric 256 pref medium
ff00::/8 dev eth2 metric 256 pref medium
ff00::/8 dev eth3 metric 256 pref medium
Rotas estaticas cadastradas:
# Destino Gateway Interface Metric IP Local
Nenhuma rota estatica cadastrada.
[admin@servidor-a] /ipv6 route>

/ipv6 route add help : Exibe ajuda para adicionar rotas IPv6.
[admin@servidor-a] /ipv6 route> add help
Adicionar rota estatica IPv6
Use:
add [opcoes]
Opcoes:
dst-address=x::x/nn : Endereco IPv6 e numero de bits do prefixo
interface=DEV : Interface de rede
gateway=DEV : IP do proximo salto

http://manual.slackmini.com.br/ 39/69
21/11/2017 Distribuição Linux Slackmini
distance=N : Metrica (saltos)
comment=COMENTARIO : Comentario no registro
disabled=yes/no : Adicionar desativado (yes = nao aplicar)
Exemplos:
add ::/0 2001:db8::1
add default 2001:db8::1
add dst=::/0 gw=2001:db8::1
Exemplos de compatibilidade com outros sistemas:
add dst-address=::/0 gateway=2001:db8::1
[admin@servidor-a] /ipv6 route>

/ipv6 route add default x::x/p : Adicionar gateway padrão


[admin@servidor-a] /ipv6 route> add gateway 2001:db8:beba:cafe::1
[admin@servidor-a] /ipv6 route> print static
Rotas estaticas cadastradas:
# Destino / Gateway / Source Interface Metric
1 ::/0 1
Via: 2001:db8:beba:cafe::1
[admin@servidor-a] /ipv6 route>

   VIZINHANÇA IPV6 (IPV6/MAC)


Vizinhança IPv6 e descoberta de MAC Address

Você aprendeu no protocolo IPv4 que para descobrir o MAC Address de um vizinho (computador na mesma rede local) é utilizado o protocolo
ARP que é baseado em BROADCAST.

No protocolo IPv6 isso mudou. Em vez de usar um protocolo separado para a descoberta de MAC baseado em BROADCAST, o IPv6 usa um
protocolo da propria pilha (ICMP versão 6) para descoberta de vizinhos via MULTICAST.
O protocolo MULTICAST se comporta, na maioria das redes, igual ao BROADCAST (enviado para todas as portas de switch/bridge na rede
local), porem, em redes locais com suporte a gerenciamento de grupos multicast (IGMP) os quadros MULTICAST são enviados apenas para
membros do grupo, nesse caso, apenas os computadores que possuem suporte a IPv6.

Por conta da natureza MULTICAST da descoberta de vizinhos é possivel dar ping em todos os computadores na mesma rede
com um único comando.

/ipv6 neighbor : Entrar no diretório de vizinhança IPv6.


[admin@servidor] > /ipv nei
[admin@servidor] /ipv6 neighbor>

/ipv6 neighbor print help : Ajuda para listar vizinhança IPv6.


[admin@servidor] /ipv6 neighbor> print help
Imprimir vizinhanca IPv6 - mapeamento IPv6 <-> MAC Address
Use:
print : Exibir tabela ARP
print [IPv6] : Exibir informacoes de um IPv6
print info : Exibir tabela ARP com detalhes
print error : Exibir IPs sem resposta ARP
print all : Exibir tabela ARP com IPv6 sem resposta
print neighbors : Exibir tabela ARP via iproute2
print neighbors [IPv6] : Exibir informacoes de um IPv6 via iproute2
[admin@servidor] /ipv6 neighbor>

/ipv6 neighbor print : Exibir mapa de vizinhança IPv6.


[admin@servidor] /ipv6 neighbor> print
IPv6 address MAC INTERFACE
2001:db8:beba:cafe::1 44:d9:e7:07:3e:44 eth0
fe80::7e6d:62ff:fe89:b347 7c:6d:62:89:b3:47 eth0
fe80::46d9:e7ff:fe07:3e44 44:d9:e7:07:3e:44 eth0
fe80::250:ccff:fecc:cc01 00:50:cc:cc:cc:01 eth0
[admin@servidor] /ipv6 neighbor>

/ipv6 neighbor print info : Exibir mapa de vizinhança com detalhes.


[admin@servidor] /ipv6 neighbor> print info
[1] IPv6 Address..: 2001:db8:beba:cafe::1
[1] MAC..: 44:d9:e7:07:3e:44
[1] DEV..: eth0
[1] Vendor.: Ubiquiti Networks
[2] IPv6 Address..: fe80::7e6d:62ff:fe89:b347

http://manual.slackmini.com.br/ 40/69
21/11/2017 Distribuição Linux Slackmini
[2] MAC..: 7c:6d:62:89:b3:47
[2] DEV..: eth0
[2] Vendor.: Apple
[3] IPv6 Address..: fe80::46d9:e7ff:fe07:3e44
[3] MAC..: 44:d9:e7:07:3e:44
[3] DEV..: eth0
[3] Vendor.: Ubiquiti Networks
[4] IPv6 Address..: fe80::250:ccff:fecc:cc01
[4] MAC..: 00:50:cc:cc:cc:01
[4] DEV..: eth0
[4] Vendor.: Xyratex
[admin@servidor] /ipv6 neighbor>
[admin@servidor] /ipv6 neighbor>

Renovando tabela de vizinhança

O comando 'flush' permite remover registros não utilizados e renova registros que estejam em uso.

/ipv6 neighbor flush : Renovar tabela de vizinhança


[admin@servidor] /ipv6 neighbor> flush
[admin@servidor] /ipv6 neighbor>

Ping para grupo MULTICAS

Como o controle de vizinha do IPv6 é feito por MULTICAST cada tipo de membro na rede pode participar de um ou mais grupos.
Existem os seguintes grupos:

Endereço do grupo Nome Descrição

FF02::1 All Nodes Todos os computadores na rede que possuem IPv6

FF02::2 All Routers Roteadores IPv6

FF02::5 All Routers OSPF Roteadores IPv6 rodando OSPFv3

FF02::6 All Routers OSPF Designated Routers Roteadores IPv6 rodando OSPFv3 operando como roteadores designados

Lista completa de grupos Multicast IPv6:


http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml#link-local

ping (IPv6-Group) (interface) : Ping para grupo na interface


[admin@servidor] /ipv6 neighbor> ping FF02::1 eth0
SEQ HOST SIZE TTL TIME STATUS
1 fe80::20c:29ff:fe0d:a255 64 64 0.023 echo reply
1 fe80::7e6d:62ff:fe89:b347 D 64 64 0.247 echo reply
1 fe80::250:ccff:fecc:cc01 D 64 64 0.373 echo reply
1 fe80::46d9:e7ff:fe07:3e44 D 64 64 0.463 echo reply
2 fe80::20c:29ff:fe0d:a255 64 64 0.047 echo reply
2 fe80::7e6d:62ff:fe89:b347 D 64 64 0.345 echo reply
2 fe80::250:ccff:fecc:cc01 D 64 64 0.430 echo reply
2 fe80::46d9:e7ff:fe07:3e44 D 64 64 0.536 echo reply
3 fe80::20c:29ff:fe0d:a255 64 64 0.054 echo reply
3 fe80::7e6d:62ff:fe89:b347 D 64 64 0.385 echo reply
3 fe80::250:ccff:fecc:cc01 D 64 64 0.547 echo reply
3 fe80::46d9:e7ff:fe07:3e44 D 64 64 0.610 echo reply
sent=3 received=3 packet-loss=0 min-rtt=0.023 avg-rtt=0.338 max-rtt=0.610
[admin@servidor] /ipv6 neighbor>
[admin@servidor] /ipv6 neighbor> ping FF02::2 eth0 count 2
SEQ HOST SIZE TTL TIME STATUS
1 fe80::46d9:e7ff:fe07:3e44 64 64 0.577 echo reply
2 fe80::46d9:e7ff:fe07:3e44 64 64 0.729 echo reply
sent=2 received=2 packet-loss=0 min-rtt=0.577 avg-rtt=0.653 max-rtt=0.729
[admin@servidor] /ipv6 neighbor>

   CLIENTE DNS
Como funciona o protocolo DNS

http://manual.slackmini.com.br/ 41/69
21/11/2017 Distribuição Linux Slackmini
Redes de computadores baseado em IPv4 ou IPv6 precisam apenas de números IP e rotas para funcionar, considerando que 'funcionar' é
apenas o envio e o recebimento de pacotes dos quais os endereços (números) você ja conheça.
A internet para humanos é baseada em nomes amigáveis, como 'www.google.com' e 'www.registro.br'
Para que essa 'converção' seja possível existe um sistema de banco de dados distribuidos chamado DNS.

Nesse sistema existem os servidores de DNS raiz chamado de ROOT SERVERS.


Esses servidores possuem apenas referencias para outros servidores DNS espalhados pelo mundo responsáveis pelos TLDN (como .br,
.com, .ar, .it), os sites '.com.br' por exemplo ficam submissos ao TLDN '.br'.
Um servidor DNS responsável por um TLDN ou por um domínio pode por sua vez encaminhar seus sub-domínos para outros servidores
formando um árvore de DNS.
Um servidor DNS que contêm um banco de dados de registros de nomes (RR) de um domínio é chamado de SERVIDOR DNS
AUTORITATIVO.

Existe um tipo de servidor DNS chamado DNS RECURSIVO. Esse tipo de servidor é responsável por consultar toda a estrutura de
servidores DNS desde os ROOT SERVERS até os sub-dominios mais específicos em busca de um registro que associa um nome a um IP
(IPv4, IPv6 ou ambos).

Todo computador que deseja navegar pela internet basendo-se no nome dos sites e serviços precisa utilizar um servidor DNS RECURSIVO.
Todo sistema operacional tem um software responsável por enviar as perguntas a um servidor DNS RECURSIVO e aguardar apenas a
resposta pronta. Esse software se chama CLIENTE DNS.

http://manual.slackmini.com.br/ 42/69
21/11/2017 Distribuição Linux Slackmini

Proxy DNS e DNS Transparente em roteadores embarcados

Existe hoje no mercado uma quantidade enorme de roteadores domésticos e para pequenos escritórios que implementam recurso de Proxy-
DNS. Os principais fabricantes desse tipo de produto são: TP-LINK, D-LINK, Opticom, Ubiquiti, Intelbras, Mikrotik.
O Proxy-DNS é um tipo de servidor DNS que não tem poderes para fazer uma buscas recursivas mas é capaz de repassar solicitações de
um cliente para um servidor DNS RECURSIVO.
Alguns roteadores com firewall impedem que o cliente acesse o DNS desejado e desvia as requisições para um proxy-dns interno. Essa
técnica é conhecida como DNS Transparente

Roteadores ou Firewalls que implementem técnicas de DNS Transparente no provedor de acesso a Internet impedem que
consultas recursiva sejam realizadas.
Se seu provedor de internet fizer isso seu servidor DNS RECURSIVO não irá funcionar.
DNS Transparente é uma técnica muito empregada em roteadores HOTSPOT para impedir que usuários não autenticados
usem o DNS para navegar por VPNs UDP.

http://manual.slackmini.com.br/ 43/69
21/11/2017 Distribuição Linux Slackmini

Configurando cliente DNS

O cliente DNS do Slackmini tem como objetivo permitir que os softwares rodando nele tenham a capacidade de resolver nome de domínos
usando um servidor DNS RECURSIVO (ou um DNS Proxy).

/ip dns : Entrar no diretório de configuração do cliente DNS


[admin@servidor] > /ip dns
[admin@servidor] /ip dns>

/ip dns print : Exibir configuração de cliente DNS


[admin@servidor] /ip dns> print
Tentativas por servidor.......: 2
Tempo de espera pela resposta.: 1
Distribuicao de carga.........: Sequencia de prioridade
Id Prio Nome Endereco Status

Nenhum servidor DNS cadastrado..

[admin@servidor] /ip dns>

http://manual.slackmini.com.br/ 44/69
21/11/2017 Distribuição Linux Slackmini

Caso você não tenha ou não vá montar um DNS RECURSIVO próprio, existem os seguintes servidores DNS RECURSIVOS
gratuitos:
Google DNS IPv4: 8.8.8.8, 8.8.4.4
Google DNS IPv6: 2001:4860:4860::8888, 2001:4860:4860::8844
Giga DNS IPv4: 189.38.95.95, 189.38.95.96
Giga DNS IPv6: 2804:10:10::10, 2804:10:10::20
OpenDNS IPv4: 208.67.222.222, 208.67.220.220, 208.67.222.220, 208.67.220.222
OpenDNS IPv6: 2620:0:ccc::2, 2620:0:ccd::2
Level3 IPv4: 4.2.2.2, 4.2.2.3, 4.2.2.4, 4.2.2.5, 4.2.2.6, 209.244.0.3, 209.244.0.4
Yandex.DNS IPv4 (Basic): 77.88.8.8, 77.88.8.1
Yandex.DNS IPv6 (Basic): 2a02:6b8::feed:0ff, 2a02:6b8:0:1::feed:0ff
Yandex.DNS IPv4 (Safe): 77.88.8.88, 77.88.8.2
Yandex.DNS IPv6 (Safe): 2a02:6b8::feed:bad, 2a02:6b8:0:1::feed:bad
Yandex.DNS IPv4 (Family): 77.88.8.7, 77.88.8.3
Yandex.DNS IPv6 (Family): 2a02:6b8::feed:a11, 2a02:6b8:0:1::feed:a11
censurfridns.dk IPv4: 89.233.43.71
censurfridns.dk IPv6: 2002:d596:2a92:1:71:53::
censurfridns.dk IPv4 (anycast): 91.239.100.100
censurfridns.dk IPv6 (anycast): 2001:67c:28a4::
puntCAT IPv4: 109.69.8.51
puntCAT IPv6: 2a00:1508:0:4::9

Verifique qual oferece melhor latência até você. Alguns deles fazem filtros de site (Safe e Family).

Agora é preciso adicionar no Slackmini os IPs dos servidores DNS RECURSIVOS que você irá consultar para resolver nomes.

/ip dns add help : Exibir ajuda para adicionar servidor DNS
[admin@servidor] /ip dns> add help

Adicionar servidor DNS


Use:
add (IPv4 ou IPv6) (PRIO) [opcoes]
Opcoes:
name=NOME : Nome simbolico
comment=COMENTARIO : Comentario do tunnel

Exemplos:
add name Localhost 127.0.0.1 1
add name Teste1 8.8.4.4 1
add name Google 8.8.8.8 2
add 4.2.2.2
[admin@servidor] /ip dns>

/ip dns add (IPv4 ou IPv6) : Adicionar servidor DNS


/ip dns add name (NOME) (IP) (PRIO) : Adicionar DNS com detalhes
[admin@servidor] /ip dns> add name Google_1_v4 8.8.8.8 prio 1
[admin@servidor] /ip dns> add name Google_2_v4 8.8.4.4 prio 1
[admin@servidor] /ip dns> print

Tentativas por servidor.......: 2


Tempo de espera pela resposta.: 1
Distribuicao de carga.........: Sequencia de prioridade
Id Prio Nome Endereco Status
1 1 Google_1_v4 8.8.8.8 Ativo
2 1 Google_2_v4 8.8.4.4 Ativo

Configuração de pesquisa

O cliente DNS interno pesquisa pelo nome solicitado na ordem em que os servidores foram cadastrados.
Caso algum servidor não responda por um tempo (esse tempo é o timeout) a consulta pode ser repetida (o número de tentativas é o tries)
passa a ser feita em outro servidor.
Tambem é possível balancear o trafego entre os servidores DNS que você cadastrou (opção balance).

http://manual.slackmini.com.br/ 45/69
21/11/2017 Distribuição Linux Slackmini

/ip dns set tries=N : Determinar número de tentativas por servidor


/ip dns set timeout=N : Determinar o tempo de espera pela resposta
/ip dns set balance=yes|no : Definir balanceamento de requisições
[admin@servidor] /ip dns> set tries=2
[admin@servidor] /ip dns> set timeout=1
[admin@servidor] /ip dns> set balance=yes
[admin@servidor] /ip dns> print config
Tentativas por servidor.......: 2
Tempo de espera pela resposta.: 2
Distribuicao de carga.........: Balancear entre servidores

[admin@servidor] /ip dns>

Teste de consulta DNS

O Slackmini é equipado de várias ferramentas para testar e diagnosticar a qualidade de servidores DNS.

Cuidado
Muita gente testa a qualidade do DNS usando um simples 'ping'.
O comando 'ping' gera pacotes ICMP-ECHO-REQUEST, esse tipo de pacote é respondido pelo KERNEL do IP de destino e
não pelo software de DNS que roda no IP de destino.

Esse sutil diferença engana muita gente. As vezes um servidor DNS RECURSIVO pode ter bloqueado pacotes ICMP no
firewall e mesmo assim permitir que consultas dns (UDP porta 53) passem pelo firewall.

Outro engano é considerar que a latência do PING ICMP tem relação a latência de DNS. Normalmente a latência do serviço
de DNS é igual ou levemente maior que a latência medida via ICMP mas em casos onde há QoS que a latência de DNS
pode ser menor que a latência ICMP.

/ip dns dns-ping (FQDN) (DNS) : Testar ping (latência de resolução)


[admin@servidor] /ip dns> dns-ping www.registro.br 4.2.2.2

IP ver.: 4
Host...: www.registro.br
Server.: 4.2.2.2
SEQ Q. Type Ans Aut TIME STATUS
1 1 A 2 5 2.415 Reply
2 1 A 2 5 3.235 Reply
3 1 A 2 5 5.841 Reply
4 1 A 2 5 2.373 Reply
sent=4 received=4 packet-loss=0 min-rtt=2.373 avg-rtt=3.466 max-rtt=5.841

[admin@servidor] /ip dns>

Ferramentas de teste de consultas

O SlackMini possui várias ferramentas de teste de consulta DNS que são padrões em Linux e alguns facilitadores, veja:

/ip dns test (FQDN) [SERVER] : Testar nome nos DNSs cadastrados
[admin@servidor] /ip dns> test uol.com.br 4.2.2.2
> Servidor..: 4.2.2.2
- FQDN......: uol.com.br
uol.com.br IN A 200.147.67.142
uol.com.br IN A 200.221.2.45
uol.com.br IN AAAA 2804:49c:3103:401:ffff:ffff:ffff:1

[admin@servidor] /ip dns>

Você tambem pode testar a requisição para os servidores cadastrados, basta informar só o nome:

[admin@servidor] /ip dns> test google.com

> Servidor..: 8.8.8.8


- FQDN......: google.com
google.com IN A 201.17.165.244
google.com IN A 201.17.165.210
google.com IN AAAA 2800:3f0:4004:804::200e

> Servidor..: 8.8.4.4


- FQDN......: google.com
google.com IN A 201.17.165.148
google.com IN A 201.17.165.162
google.com IN AAAA 2800:3f0:4004:805::200e
[admin@servidor] /ip dns>

http://manual.slackmini.com.br/ 46/69
21/11/2017 Distribuição Linux Slackmini

/ip dns dig [opcoes] : Testar usando DIG


/ip dns hostg [opcoes] : Testar usando HOST
/ip dns nslookup [opcoes] : Testar usando NSLOOKUP
[admin@servidor] /ip dns> dig uol.com.br @4.2.2.2
; <<>> DiG 9.10.4-P1 <<>> uol.com.br @4.2.2.2
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63381
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;uol.com.br. IN A
;; ANSWER SECTION:
uol.com.br. 271 IN A 200.221.2.45
uol.com.br. 271 IN A 200.147.67.142

;; Query time: 144 msec


;; SERVER: 4.2.2.2#53(4.2.2.2)
;; WHEN: Wed Jun 22 16:38:11 BRT 2016
;; MSG SIZE rcvd: 60

[admin@servidor] /ip dns> host -t ns uol.com.br 4.2.2.2


Using domain server:
Name: 4.2.2.2
Address: 4.2.2.2#53
Aliases:
uol.com.br name server charles.uol.com.br.
uol.com.br name server eliot.uol.com.br.
uol.com.br name server borges.uol.com.br.

[admin@servidor] /ip dns> nslookup


> set q=any
> uol.com.br

Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
uol.com.br
origin = eliot.uol.com.br
mail addr = root.uol.com.br
serial = 2016032286
refresh = 7200
retry = 3600
expire = 432000
minimum = 3600
Name: uol.com.br
Address: 200.147.67.142
Name: uol.com.br
Address: 200.221.2.45
uol.com.br has AAAA address 2804:49c:3103:401:ffff:ffff:ffff:1
uol.com.br mail exchanger = 10 mx.uol.com.br.
uol.com.br text = "v=spf1 ip4:200.147.96.0/23 ip4:187.17.116.0/24 ip4:200.98.217.0/24 ip4:200.147.1.0/22
ip4:200.147.32.0/22 ip4:200.147.40.192/26 ip4:200.147.54.0/23 ip4:200.147.98.72/27
ip4:200.147.99.24/26 ip4:186.234.128.16/29 ip4:200.147.41.88/26 -all"
uol.com.br text = "DZC=qvK68EJ"
uol.com.br nameserver = charles.uol.com.br.
uol.com.br nameserver = eliot.uol.com.br.
uol.com.br nameserver = borges.uol.com.br.

Authoritative answers can be found from:


> exit

[admin@servidor] /ip dns>

Cliente DNS via IPv6

Antes de usar consultas DNS baseadas em pacotes IPv6, teste a consulta de DNS usando IPv6 com o comando 'test'.

/ip dns test (FQDN) [IPv6] : Testar nome usando DNS via IPv6
[admin@servidor] /ip dns> test facebook.com 2001:4860:4860::8888
> Servidor..: 2001:4860:4860::8888
- FQDN......: facebook.com
facebook.com IN A 66.220.156.68
facebook.com IN AAAA 2a03:2880:11:1f83:face:b00c:0:25de

[admin@servidor] /ip dns>

No teste do exemplo acima observe que houve sucesso. Caso o transito de pacotes IPv6 não seja possível o resultado seria como abaixo:

[admin@servidor] /ip dns> test facebook.com 2001:4860:4860::8888


> Servidor..: 2001:4860:4860::8888
- FQDN......: facebook.com
;; connection timed out; no servers could be reached

http://manual.slackmini.com.br/ 47/69
21/11/2017 Distribuição Linux Slackmini
Erro na consulta tipo A (IPv4)
;; connection timed out; no servers could be reached
Erro na consulta tipo AAAA (IPv6)
Servidor DNS nao respondeu.

[admin@servidor] /ip dns>

Se você constatou o correto funcionamento da Internet usando IPv6, adicione um servidor DNS IPv6 na sua lista de consulta:

/ip dns add [IPv6] : Adicionar servidor IPv6


[admin@servidor] /ip dns> add name=Google-v6-A 2001:4860:4860::8888
[admin@servidor] /ip dns> add name=Google-v6-B 2001:4860:4860::8844
[admin@servidor] /ip dns> print servers
Id Prio Nome Endereco Status
1 1 Google_1_v4 8.8.8.8 Ativo
2 1 Google_2_v4 8.8.4.4 Ativo
3 2 Google-v6-A 2001:4860:4860::8888 Ativo
4 3 Google-v6-B 2001:4860:4860::8844 Ativo
[admin@servidor] /ip dns>

Teste a latência das consultas de DNS via IPv6:

[admin@servidor] /ip dns> dns-ping ipv6.br 2001:4860:4860::8844

IP ver.: 6
Host...: ipv6.br
Server.: 2001:4860:4860::8844
SEQ Q. Type Ans Aut TIME STATUS
1 1 A 1 0 144.770 Reply
2 1 A 1 0 154.415 Reply
3 1 A 1 0 199.472 Reply
4 1 A 1 0 153.871 Reply
sent=4 received=4 packet-loss=0 min-rtt=144.770 avg-rtt=163.132 max-rtt=199.472

[admin@servidor] /ip dns>

Teste consultando um nome em todos os servidores cadastrados:

[admin@servidor] /ip dns> test yahoo.com

> Servidor..: 8.8.8.8


- FQDN......: yahoo.com
yahoo.com IN A 98.139.183.24
yahoo.com IN A 206.190.36.45
yahoo.com IN A 98.138.253.109
yahoo.com IN AAAA 2001:4998:44:204::a7
yahoo.com IN AAAA 2001:4998:58:c02::a9
yahoo.com IN AAAA 2001:4998:c:a06::2:4008
> Servidor..: 8.8.4.4
- FQDN......: yahoo.com
yahoo.com IN A 98.139.183.24
yahoo.com IN A 206.190.36.45
yahoo.com IN A 98.138.253.109
yahoo.com IN AAAA 2001:4998:c:a06::2:4008
yahoo.com IN AAAA 2001:4998:44:204::a7
yahoo.com IN AAAA 2001:4998:58:c02::a9

> Servidor..: 2001:4860:4860::8888


- FQDN......: yahoo.com
yahoo.com IN A 98.138.253.109
yahoo.com IN A 206.190.36.45
yahoo.com IN A 98.139.183.24
yahoo.com IN AAAA 2001:4998:c:a06::2:4008
yahoo.com IN AAAA 2001:4998:58:c02::a9
yahoo.com IN AAAA 2001:4998:44:204::a7

> Servidor..: 2001:4860:4860::8844


- FQDN......: yahoo.com
yahoo.com IN A 98.139.183.24
yahoo.com IN A 206.190.36.45
yahoo.com IN A 98.138.253.109
yahoo.com IN AAAA 2001:4998:58:c02::a9
yahoo.com IN AAAA 2001:4998:44:204::a7
yahoo.com IN AAAA 2001:4998:c:a06::2:4008
[admin@servidor] /ip dns>

   TUNEIS GRE SOBRE IPV4


VPNs e túneis são formas de conectar duas ou mais localidades por meio de uma rede intermediária ou pública (como a Internet) porem
dando a
impressão de que as redes estão diretamente conectadas.

http://manual.slackmini.com.br/ 48/69
21/11/2017 Distribuição Linux Slackmini

Observe o diagrama acima.

Temos duas localidades que possuem conexão com a internet porem as redes locais de cada localidade não possuem capacidade
de se comunicarem pois usam ips privados (RFC1918, 10.x.x.x).
Uma solução para que o computador PC A-2 e o PC B-8 se comuniquem é estabelecer um tunel entre o Roteador A e o Roteador B de forma
que os pacotes da rede 10.100.0.0/24 sejam encapsulados (pegar um pacote IP e colocar dentro de outro pacote IP) e enviados para o outro
lado usando a Internet.
Essa ação é semelhante a você pegar uma carta pronta, colocar dentrou de outra carta e então submete-la aos correios, a diferença é que
no nosso caso em vez dos correios temos a Internet.
O protocolo GRE encapsula o pacote orignal em um pacote GRE e em seguida coloca o pacote GRE dentro do pacote IP que irá transportá-
lo pela Internet.
Por ter um cabeçalho proprio, o GRE pode transportar protocolos diferentes (IPv4, IPv6, etc...).

Criaremos então um tunel entre os dois roteadores. Esse primeiro exemplo demonstrará o uso de tuneis baseado em pacotes onde as duas
pontas possuem sempre o mesmo IP.

http://manual.slackmini.com.br/ 49/69
21/11/2017 Distribuição Linux Slackmini

O efeito final é a impressão de que os roteadores estão diretamente conectados.

Generic Routing Encapsulation (GRE) sobre IPv4

Tuneis GRE é uma forma de criar tuneis de camada 3 baseados em IPv4, ou seja, o conteudo a ser transportado pelo tunel será
encapsulado dentro de uma pacote IPv4.

O protocolo GRE está documentado nas seguintes RFCs:


RFC 1701 Generic Routing Encapsulation (GRE): https://tools.ietf.org/html/rfc1701
RFC 2784 Generic Routing Encapsulation (GRE): https://tools.ietf.org/html/rfc2784
RFC 2890 Key and Sequence Number Extensions to GRE: https://tools.ietf.org/html/rfc2890

Um tunel GRE suporta transportar apenas pacotes de camada 3, ou seja: IPv4 ou IPv6.
Ele é baseado em pacote, o que significa que não haverá uma etapa de construção do tunel para que ele entre em operação.
Para que que um tunel GRE funcione é preciso que ambos os lados tenham coerencia em seus ips LOCAL e REMOTE.

http://manual.slackmini.com.br/ 50/69
21/11/2017 Distribuição Linux Slackmini

/interface gre : Entrar no diretório de tuneis GRE.


[admin@servidor] > /int gre
[admin@servidor] /interface gre>

/interface gre print help : Ajuda para listar interfaces GRE.


[admin@servidor] /interface gre> print help

Imprimir tuneis GRE sobre IPv4


Use:
print : Exibir interfaces e detalhes de conexao
print stats : Exibir interfaces e estatisticas
print rate [opcoes] : Exibir trafego nas interfaces (TEMPO REAL)
[bits/bytes/packets/errors/rate/max/sum/avg]

[admin@servidor] /interface gre>

/interface gre print : Listar tuneis GRE.


[admin@servidor] /interface gre> print
Idx Nome IP-Local IP-Remoto MTU Status

Nenhum tunel GRE cadastrado.


[admin@servidor] /interface gre>

/interface gre add help : Ajuda para adicionar tuneis.


[admin@servidor] /interface gre> add help

Adicionar interface GRE sobre IPv4


Use:
add (LOCAL-IP) (REMOTE-IP) [TTL] [MTU] [opcoes]
Opcoes:
name=NOME : Nome simbolico
comment=COMENTARIO : Comentario do tunnel
NOTA: o LOCAL-IP deve estar atribuido a uma interface local

Exemplos:
add name Teste1 local 172.20.0.49 remote 172.20.0.1
add local=172.20.0.49 remote=172.20.0.21
add 172.20.0.49 172.20.0.21
Exemplos de compatibilidade com outros sistemas:
add local-address=172.20.0.49 name=gre-tunnel1 remote-address=172.20.0.1

[admin@servidor] /interface gre>

/interface gre add local=IP remote=IP : Adicionar tunel GRE.


[admin@servidor] /interface gre> add local 200.10.10.9 remote 187.20.20.2
[admin@servidor] /interface gre> print

Idx Nome IP-Local IP-Remoto MTU Status


1 gri1 200.10.10.9 187.20.20.2 1476 Ativo
[admin@servidor] /interface gre>

http://manual.slackmini.com.br/ 51/69
21/11/2017 Distribuição Linux Slackmini
Adicione o IP na interface gri1:

[admin@servidor] /interface gre> /ip addr add 172.30.0.1/30 gri1

Após configurar a outra ponta como no diagrama, vamos testar o ping para o outro lado do tunel:

[admin@servidor] /interface gre> ping 172.30.0.2 count=2

SEQ HOST SIZE TTL TIME STATUS


1 172.30.0.2 64 53 36.4 echo reply
2 172.30.0.2 64 53 36.4 echo reply
sent=2 received=2 packet-loss=0 min-rtt=36.422 avg-rtt=36.432 max-rtt=36.442

[admin@servidor] /interface gre>

   TUNEIS GRE SOBRE IPV6


Tuneis GRE tambem podem ser estabelecidos baseados no protocolo IPv6.
Dada a escacez de endereços IPv4 e a incapacidade de alguns provedores de entregar endereços IPv4 fixos e/ou públicos,
o tunel GRE baseado em endereços IPv6 é uma boa alternativa ao GRE sobre IPv4, bastando ao provedor de Internet fixar o prefixo WAN
e/ou LAN do cliente que pretende usar o tunel.

Observe o diagrama acima.


Temos duas localidades que possuem conexão com a internet porem as redes locais de cada localidade não possuem capacidade
de se comunicarem pois usam ips privados (RFC1918, 10.x.x.x).
Uma solução para que o computador PC A-2 e o PC B-8 se comuniquem é estabelecer um tunel entre o Roteador A e o Roteador B de forma
que os pacotes da rede 10.100.0.0/24 sejam encapsulados (pegar um pacote IP e colocar dentro de outro pacote IPv6) e enviados para o
outro lado usando a Internet.

http://manual.slackmini.com.br/ 52/69
21/11/2017 Distribuição Linux Slackmini

O efeito final é a impressão de que os roteadores estão diretamente conectados.

http://manual.slackmini.com.br/ 53/69
21/11/2017 Distribuição Linux Slackmini
Generic Routing Encapsulation sobre IPv6

Tuneis GRE é uma forma de criar tuneis de camada 3 baseados em IPv6, ou seja, o conteudo a ser transportado pelo tunel será
encapsulado dentro de uma pacote IPv6.

O protocolo GRE está documentado nas seguintes RFCs:


RFC 2473 Generic Packet Tunneling in IPv6 Specification: https://tools.ietf.org/html/rfc2473
RFC 7676 IPv6 Support for Generic Routing Encapsulation (GRE): https://tools.ietf.org/html/rfc7676

Um tunel GRE suporta transportar apenas pacotes de camada 3, ou seja: IPv4 ou IPv6.
Ele é baseado em pacote, o que significa que não haverá uma etapa de construção do tunel para que ele entre em operação.
Para que que um tunel GRE funcione é preciso que ambos os lados tenham coerencia em seus ips LOCAL e REMOTE.

/interface gre6 : Entrar no diretório de tuneis GRE sobre IPv6.


[admin@servidor] > /int gre6
[admin@servidor] /interface gre6>

/interface gre6 print help : Ajuda para listar interfaces GRE.


[admin@servidor] /interface gre6> print help

Imprimir tuneis GRE sobre IPv6


Use:
print : Exibir interfaces e detalhes de conexao
print stats : Exibir interfaces e estatisticas
print rate [opcoes] : Exibir trafego nas interfaces (TEMPO REAL)
[bits/bytes/packets/errors/rate/max/sum/avg]

[admin@servidor] /interface gre6>

/interface gre6 print : Listar tuneis GRE.


[admin@servidor] /interface gre6> print

Idx Nome IPv6-Local / IPv6-Remoto MTU Status

Nenhum tunel GRE cadastrado.


[admin@servidor] /interface gre6>

/interface gre6 add help : Ajuda para adicionar tuneis.


[admin@servidor] /interface gre6> add help

Adicionar interface GRE sobre IPv6


Use:
add (LOCAL-IPv6) (REMOTE-IPv6) [TTL] [MTU] [opcoes]

Opcoes:
name=NOME : Nome simbolico
comment=COMENTARIO : Comentario do tunnel
NOTA: o LOCAL-IPv6 deve estar atribuido a uma interface local

http://manual.slackmini.com.br/ 54/69
21/11/2017 Distribuição Linux Slackmini
Exemplos:
add name Teste1 local 2001:db9:cafe::2 remote 2001:db9:fada::1
add local=2001:db9:cafe::2 remote=2001:db9:fada::1
add 2001:db9:cafe::2 2001:db9:fada::1

Exemplos de compatibilidade com outros sistemas:


add local-address=2001:db9:cafe::2 name=gre6-tunnel1 remote-address=2001:db9:fada::1

[admin@servidor] /interface gre6>

/interface gre6 add local=IP remote=IP : Adicionar tunel GRE.


[admin@servidor] /interface gre6> add local=2001:db8:beb1:cafe::2 remote=2001:01f8:c0ca:c01a::e
[admin@servidor] /interface gre6> print

Idx Nome IPv6-Local / IPv6-Remoto MTU Status


1 grx1 L> 2001:db8:beb1:cafe::2 1456 Ativo
R> 2001:1f8:c0ca:c01a::e

[admin@servidor] /interface gre6>

Adicione o IP na interface gri1:

[admin@servidor] /interface gre6> /ip addr add 172.30.0.1/30 grx1

Após configurar a outra ponta como no diagrama, vamos testar o ping para o outro lado do tunel:

[admin@servidor] /interface gre6> ping 172.30.0.2 count=2

SEQ HOST SIZE TTL TIME STATUS


1 172.30.0.2 64 53 36.4 echo reply
2 172.30.0.2 64 53 36.4 echo reply
sent=2 received=2 packet-loss=0 min-rtt=36.422 avg-rtt=36.432 max-rtt=36.442

[admin@servidor] /interface gre6>

   TUNEIS IP SOBRE IP (IPV4 E IPV6)


Você aprendeu até agora que pra fazer tuneis entre localidades você pode usar IPv4 ou IPv6 como base do tunel usando tecnologia GRE.

Existem outras formas de fazer tuneis usando IP (IPv4 ou IPv6).

Diretório Protocolo do tunel Protocolo a ser transportado

/interface 6to4 IPv4 público para IPv4 público Apenas IPv6, protocolo oficial para implementar IPv6 na internet IPv4.

/interface ipip IPv4 público para IPv4 público Apenas IPv4.

/interface ipipv6 IPv6 global para IPv6 global Apenas IPv4.

Os tuneis baseado em IP não possuem um cabeçalho intermediário como o GRE e por esse motivo só podem transportar um tipo de
protocolo. A ausencia do cabeçalho adicionar economiza alguns bytes permitindo uma MTU levemente maior.
Para saber como exibir e adicionar tuneis IP sobre IP, entre no diretório de configuração e use 'print help' e 'add help' respectivamente.

   DATA/HORA E TIME-ZONE
É de suma importancia para todos os softwares que rodam no Linux que a data/hora esteja devidamente atualizada e se possível,
sincronizada com um servidor NTP.

Tempo Universal Coordenado

A data/hora em servidores deve ser relativa a data/hora UTC.


Para entender como isso funciona, imagine que no Brasil sejam 15:00. Na California (EUA) é mais cedo, são ainda 10:00. Se eu enviar um e-
mail para alguem do escritório do Google ele pensará que o e-mail veio do futuro ? (Afinal, para ele ainda faltam 5 horas para a data que
consta no e-mail).
Pensando assim, deve existir uma data/hora de referência e baseado na localização do computador saberemos a hora local.

A data/hora UTC é esse valor de referência, assim, para um computador o primeiro valor importante é a data/hora do Arquipélago de
Madeira (ilha de Portugal).
O segundo valor de referência é o TIME-ZONE. O time-zone informa a um computador a diferença de horas e minutos que há entre hora
local e a hora UTC.
Para calcular a data/hora local, a fórmula é: (UTC) + (TIME-ZONE)

http://manual.slackmini.com.br/ 55/69
21/11/2017 Distribuição Linux Slackmini
No Brasil, em geral, temos um TIME-ZONE -3h, assim, se na hora UTC são 23:12, no Brasil serão (23:12) + (-3) = 20:12.
Devido o fato que o planeta tem um eixo inclinado e a iluminação do sol muda em cada região, o TIME-ZONE não é fixo o ano todo. Em
alguns lugares ele é um valor dinâmico, para o verão pode ser um e no inverno outro e tambem pode
haver na região um horário de verão.
Por causa disso, em vez de informar apenas um número positivou ou negativo de horas é mais pertinente informar o nome da localização
(exata ou aproximada) para que por meio de um arquivo de configuração da região seja possível ao servidor obedecer a diferença de acordo
com a época do ano.

Tempo Universal Coordenado, via Wikipedia https://pt.wikipedia.org/wiki/Tempo_Universal_Coordenado


Mapa mundial com time-zones: https://upload.wikimedia.org/wikipedia/commons/e/e8/Standard_World_Time_Zones.png

Relógio de hardware

Todo computador possui um relógio interno em hardware sendo mantido por uma bateria para que a data/hora seja mantida até mesmo
quando o servidor está totalmente desligado.

Quando o sistema operacional é iniciado ele copia a data/hora do relógio de hardware para um relógio de software mantido pelo Kernel e da
qual depende todos os softwares (banco de dados, BGP, logs, etc...).
O relógio de software precisa saber se o relógio de hardware estava definido baseado na data/hora local ou na data/hora UTC.
Para permitir que sejam feitos ajustes na BIOS decorrente de troca de bateria ou RESET, o Slackmini toma como base que a data/hora da
BIOS é uma data/hora local.
Nessa sequencia basta a ele saber o TIME-ZONE para obter a data/hora UTC e então iniciar as operações confiando num valor
hipoteticamente confiável.
Exemplo:
quando o kernel Linux foi iniciado a data/hora na BIOS era 2016-01-01 12:00, ao carregar o time-zone como America/Sao_paulo (-3h) ele
pode concluir que a hora UTC está em +3h, sendo 2016-01-01 15:00, o relógio de software então é ajustado para 2016-01-01 15:00 UTC e a
data/hora baseado no time-zone será 2016-01-01 12:00 BRT.
Quando o servidor for desligado a data/hora da BIOS deve ser atualizada baseada no time-zone.

Atualização e sincronização de data/hora

Infelizmente os relógios de hardware (BIOS + bateria) e software (kernel + processador) não possuem precisão suficiente para que a
data/hora seja 100% confiável.
Ele se atrasa ou se adianta aleatoriamente de acordo com pertubações locais (bateria fraca, temperatura variando e afetando os circuitos,
etc...).
Existem algumas formas de obter uma data/hora com certa precisão, são elas:

Tecnologia Precisão Desvantagens

Relógio atômico Perfeita Caro e restrito a instalações científicas.

GPS Bom, satélites GPS possuem relógio atômico Requer circuito GPS.

Servidor NTP Regular Latência entre cliente e servidor varia a referência.

Servidor HTTP Péssima, copia a data/hora de um servidor Web Extremamente impresisa.

Relógio atômico, via Wikipedia https://pt.wikipedia.org/wiki/Rel%C3%B3gio_at%C3%B4mico


GPS, via Wikipedia: https://pt.wikipedia.org/wiki/Sistema_de_posicionamento_global
NTP, via Wikipedia: https://pt.wikipedia.org/wiki/Network_Time_Protocol
HTP-date para Linux: http://linux.die.net/man/8/htpdate

Configurando data/hora e time-zone no Slackmini

Pelo Zeroshell:

/system clock : Entrar no diretório de data/hora/timezone.


[admin@servidor] > /sys clock
[admin@servidor] /system clock>

/system clock print help : Ajuda para listar data/hora.


[admin@servidor] /system clock> print help

Exibir opcoes de relogio do sistema


Use:
print : Exibir todos os relogios e configuracoes
print timezones : Exibir timezones suportadas
print tz : Exibir configuracao de timezone
print utc : Exibir data/hora UTC
print local : Exibir data/hora no time-zone local
print bios : Exibir data/hora da BIOS
print help : Exibir ajuda

http://manual.slackmini.com.br/ 56/69
21/11/2017 Distribuição Linux Slackmini
[admin@servidor] /system clock>

/system clock print : Listar configurações de data/hora e time-zone.


[admin@servidor] /system clock> print
Data/hora
TimeZone.........: America/Sao_Paulo
Local software...: 26/06/2016 19:04:36
UTC..............: 26/06/2016 22:04:36
Local hardware...: Tue Jun 28 11:04:07 2016 .586953 seconds
[admin@servidor] /system clock>

/system clock print tz : Exibir timezone definida.


[admin@servidor] /system clock> print tz

America/Sao_Paulo
[admin@servidor] /system clock>

/system clock print local : Exibir data/hora local.


[admin@servidor] /system clock> print local

26/06/2016 19:04:36

[admin@servidor] /system clock>

/system clock print utc : Exibir data/hora UTC.


[admin@servidor] /system clock> print utc

26/06/2016 22:04:36

[admin@servidor] /system clock>

/system clock print bios : Exibir data/hora da BIOS.


[admin@servidor] /system clock> print bios
Tue Jun 28 11:04:07 2016 .586953 seconds

[admin@servidor] /system clock>

Para alterar o time-zone observe os seguintes comandos:

/system clock print timezones : Listar time-zones suportados


[admin@servidor] /system clock> print timezones

America/Araguaina
America/Bahia
America/Belem
America/Boa_Vista
America/Buenos_Aires
America/Campo_Grande
America/Cuiaba
America/Maceio
America/Manaus
America/Noronha
America/Porto_Acre
America/Porto_Velho
America/Recife
America/Rio_Branco
America/Santarem
America/Sao_Paulo
[admin@servidor] /system clock>

/system clock set help : Ajuda para alterar configuração


[admin@servidor] /system clock> set help

Definir data/hora e timezone


Use:
set (dia/mes/ano) [timezone] : Definir data/hora e o timezone
set (dia/mes/ano) : Definir data/hora
set [timezone] : Definir data/hora timezone

Para listar os timezones suportados, execute:


print timezones
[admin@servidor] /system clock>

/system clock set time-zone=TZ : Alterar o time-zone.


[admin@servidor] /system clock> set time-zone America/Manaus

Data/hora
TimeZone.........: America/Manaus

http://manual.slackmini.com.br/ 57/69
21/11/2017 Distribuição Linux Slackmini
Local software...: 13/05/2016 07:38:12
UTC..............: 13/05/2016 10:38:12

[admin@servidor] /system clock> print tz


America/Manaus

[admin@servidor] /system clock> set time-zone America/Sao_Paulo

Data/hora
TimeZone.........: America/Sao_Paulo
Local software...: 13/05/2016 07:38:21
UTC..............: 13/05/2016 10:38:21

[admin@servidor] /system clock> print tz


America/Sao_Paulo

[admin@servidor] /system clock>

Você pode definir a data e a hora manualmente caso um servidor NTP não esteja disponivel (caso sua internet tenha caido).

Não altere a data ou a hora para um tempo FUTURO ou PASSADO. Leve muito a sério a coerência temporal entre o relógio
do servidor (hardware e software) e a realidade!

Alguns softwares do Linux são baseados numa estrutura temporal linear, ou seja, sempre avançando para o futuro, nunca
voltando no tempo.

Pode parecer óbvio mas violar essa coerência pode causar danos em sistemas de banco de dados, os softwares mais
afetados com esse tipo de violação são:
Logs: eventos do servidor são armazenados com a data/hora, se ela estiver errada ficará difícil determinar o momento
do evento registrado. Logs são importantes e tem relação com a lei (marco civil principalmente);
SGDB: MySQL, Postgree, Sqlite: registros inseridos com data/hora da criação do registro;
RRDTOOL: software de gerar gráficos baseado em round-robin, ele nunca armazena dados cuja data/hora sejam
menores que do último registro;
Softwares proprietários licenciados: licenças de software baseada em restrição de tempo (mensal, anual, trial) podem
detectar a perturbação no tempo linear e pararem de funcionar.

Os exemplos abaixo devem ser lidos para entendimento, não execute os mesmos comandos que constam no manual pois
você irá danificar a coerência temporal do servidor.

Para alterar data/hora observe os seguintes comandos:

/system clock set [dd/mm/aaaa] : Alterar data


[admin@servidor] /system clock> set 01/01/2016
[2016-01-01 09:21:00] Date/time set, localtime [2016-01-01 07:38:21]

Data/hora
TimeZone.........: America/Sao_Paulo
Local software...: 01/01/2016 07:38:21
UTC..............: 01/05/2016 10:38:21

[admin@servidor] /system clock>

/system clock set [hh:mm] : Alterar hora/minuto

/system clock set [hh:mm:ss] : Alterar hora/minuto/segundo


[admin@servidor] /system clock> set 23:19
[2016-01-01 09:21:00] Date/time set, localtime [2016-01-01 21:19:00]
Data/hora
TimeZone.........: America/Sao_Paulo
Local software...: 01/01/2016 23:19:00
UTC..............: 01/05/2016 01:19:21
[admin@servidor] /system clock>

Alterar a data e/ou a hora afeta apenas o relógio de software.

Sempre que o Slackmini é corretamente desligado (via comando 'poweroff' ou 'shutdown') ele salva a data/hora do relógio de
software para o relógio da BIOS.

É preciso salvar a data/hora na BIOS por segurança sempre que você alterar manualmente pois se houver uma queda de
energia ou desligamento incorreto a BIOS pode iniciar com uma data/hora incoerente.

Para salvar a data/hora do relógio de software para o relógio de hardware observe os seguintes comandos:

http://manual.slackmini.com.br/ 58/69
21/11/2017 Distribuição Linux Slackmini

/system clock save : Salvar data/hora na BIOS


[admin@servidor] /system clock> save
[admin@servidor] /system clock> print

Data/hora
TimeZone.........: America/Sao_Paulo
Local software...: 01/01/2016 23:19:00
UTC..............: 01/05/2016 01:19:21
Local hardware...: Fri Jan 1 23:19:00 2016 .629641 seconds
[admin@servidor] /system clock> print

   DATA/HORA AUTOMÁTICA VIA NTP


Ter um servidor, roteador, computador, celular, tablet ou qualquer dispositivo conectado a Internet requer que a data e a hora estejam sempre
atualizadas e fieis a data/hora UTC.
Aplicativos de mensagens, sistemas de banco de dados, protocolos de roteamento, servidores de video, servidores de voz sobre IP, cliente
de e-mail e servidor de e-mail, entre outras tecnologias dependem muito de um relógio exato.
A maioria desses sistemas se recusa a funcionar se for detectado que a hora local do dispositivo onde o software é executado diferete da
data/hora do servidor.

Mesmo que você configure a data e a hora corretamente o relógio do computador sofre atrasos ou adiantamentos imprevisíveis.

A única forma de resolver esses atrasos e adiantamentos aleatórios é fazendo com que seu servidor, roteador ou dispositivo qualquer
sempre sincronize o relógio local com informações precisas de data e hora fornecidas por um relógio atômico.

http://manual.slackmini.com.br/ 59/69
21/11/2017 Distribuição Linux Slackmini

Por questões de segurança o administrador de rede pode optar por montar um servidor NTP local que sempre sincronize seu relógio com o
servidor NTP oficial e então distribua a roteadores e servidores dentro da rede interna.
Esse tipo de técnica é recomendada caso você tenha roteadores que não possuam acesso a internet (apenas repassam pacotes, comum em
redes MPLS) e servidores com aplicações para a intranet.

Você tambem pode optar para que todos os dispositivos consultem diretamente um servidor NTP oficial. Isso dispensa a montagem de um
servidor NTP próprio mas requer que o dispositivo cliente sempre tenha acesso a internet para sincronizar seu relógio.

http://manual.slackmini.com.br/ 60/69
21/11/2017 Distribuição Linux Slackmini

Operadoras de telefonia móvel sempre mantem suas antenas e sub-sistemas fielmente sincronizados com um relógio atômico.
Alem de servir para propósitos técnicos da operador esse sincronismo tambem serve para fornecer aos aparelhos dos clientes um relógio
fiel.
Você já deve ter reparado alguma vez que seu celular teve a data/hora automaticamente ajustada ao receber o sinal de celular.

Uma opção semelhante a utilizada por operadoras, celulares e smartphone é o uso de dispositivo GPS via porta USB.

http://manual.slackmini.com.br/ 61/69
21/11/2017 Distribuição Linux Slackmini
O servidor pasará a ter um relógio extremamente fiel a um relógio atômico e eliminanto problemas de volatilidade da latência da Internet e
ainda
poderá prover aos roteadores, servidores e demais computadores da organização uma data/hora estremamente precisa.

Bom, agora que você ja sabe a importancia de ter a data e a hora sempre atualizada e sincronizada com um servidor NTP vamos configurar
o Slackmini para sincronizar o relógio automaticamente.

RFC 1305, Network Time Protocol v. 3 https://tools.ietf.org/html/rfc1305


RFC 4330, Simple Network Time Protocol (SNTP) https://tools.ietf.org/html/rfc4330
Liste de servidores NTP pelo mundo http://www.pool.ntp.org/pt/
Sobre NTP, via NTP.br http://www.ntp.br/ntp.php
Network Time Protocol, via Wikipedia https://pt.wikipedia.org/wiki/Network_Time_Protocol

Liste de servidores NTP relevantes

Entidade Servidor (FQDN) IPv4 IPv6

NTP.br a.st1.ntp.br 200.160.7.186 2001:12ff:0:7::186

NTP.br b.st1.ntp.br 201.49.148.135 (sem IPv6)

NTP.br c.st1.ntp.br 200.186.125.195 (sem IPv6)

NTP.br d.st1.ntp.br 200.20.186.76 (sem IPv6)

NTP.br a.ntp.br 200.160.0.8 2001:12ff::8

NTP.br b.ntp.br 200.189.40.8 (sem IPv6)

NTP.br c.ntp.br 200.192.232.8 (sem IPv6)

NTP.br gps.ntp.br 200.160.7.193 2001:12ff:0:7::193

UFRJ ntp.pads.ufrj.br 146.164.48.1 2001:1291:200:8371::1

UFRJ ntps1.pads.ufrj.br 146.164.48.5 2001:1291:200:8371::5

UFRJ ntp2.pads.ufrj.br 146.164.48.10 2001:1291:200:8371::10

UFRJ ntp3.pads.ufrj.br 146.164.48.9 2001:1291:200:8371::9

Microsoft Corporation time-nw.nist.gov 131.107.13.100 (sem IPv6)

NTP.org (DNS global balancing) 0.pool.ntp.org (auto) (auto)

NTP.org (DNS global balancing) 1.pool.ntp.org (auto) (auto)

NTP.org (DNS global balancing) 2.pool.ntp.org (auto) (auto)


http://manual.slackmini.com.br/ 62/69
21/11/2017 Distribuição Linux Slackmini

NTP.org (DNS global balancing) 3.pool.ntp.org (auto) (auto)

Sincronizando relógio com servidor NTP - cliente NTP

Pelo ZeroShell, execute:

/system ntp-client : Entrar no diretório de cliente NTP.


[admin@servidor] > /sys ntp-c
[admin@servidor] /system ntp-client>

/system ntp-client print help : Ajuda para listar servidores NTP.


[admin@servidor] /system ntp-client> print help

Imprimir opcoes de servidores NTP


Use:
print : Exibir servidores NTP

[admin@servidor] /system ntp-client>

/system ntp-client print : Listar servidores NTP.


[admin@servidor] /system ntp-client> print

Id Prio Nome Endereco Status


Nenhum servidor NTP cadastrado.

[admin@servidor] /system ntp-client>

/system ntp-client add help : Ajuda para adicionar servidor NTP


[admin@servidor] /system ntp-client> add help
Adicionar servidor NTP
Use:
add (IPv4 ou IPv6) (PRIO) [opcoes]

Opcoes:
name=NOME : Nome simbolico
comment=COMENTARIO : Comentario do tunnel

Exemplos:
add name a.ntp.br 200.160.0.8 1
add name a.ntp.br 2001:12ff::8 2

[admin@servidor] /system ntp-client>

/system ntp-client add help : Ajuda para adicionar servidor NTP


[admin@servidor] /system ntp-client> add a.ntp.br 200.160.0.8
[admin@servidor] /system ntp-client> print
Id Prio Nome Endereco Status
1 1 a.ntp.br 200.160.0.8 Ativo

[admin@servidor] /system ntp-client>

/system ntp-client update help : Exibir ajuda sobre sincronização


[admin@servidor] /system ntp-client> update help
Atualizar data/hora baseado em NTP
Use:
update : Atualizar via servidores cadastrados
update (ipv4|ipv6|fqdn) : Atualizar usando endereco especifico
[admin@servidor] /system ntp-client>

/system ntp-client update : Sincronizar relógio com servidor NTP.


[admin@servidor] /system ntp-client> update

> Atualizando via '200.160.0.8' [ OK ]


Data/hora
TimeZone.........: America/Sao_Paulo
Local software...: 31/07/2016 17:55:15
UTC..............: 31/07/2016 20:55:15

[admin@servidor] /system ntp-client>

/system ntp-client save : Salvar relógio de software no hardware.


[admin@servidor] /system ntp-client> save

> Salvando data/hora UTC [ OK ]

Data/hora

http://manual.slackmini.com.br/ 63/69
21/11/2017 Distribuição Linux Slackmini
TimeZone.........: America/Sao_Paulo
Local software...: 31/07/2016 17:57:38
UTC..............: 31/07/2016 20:57:38
Local hardware...: Sun Jul 31 17:57:38 2016 .498781 seconds

[admin@servidor] /system ntp-client>

   PACOTES E ATUALIZAÇÕES
O Slackmini é uma distribuição em constante desenvolvimento e aperfeiçoamento, alem da necessidade de atualizações próprias, surgem as
necessidades de atualizações por motivos de segurança quando se descobre bugs em pacotes que compôem sua base.
Para haver coerência entre binários e bibliotecas o Slackmini é composto de poucos pacotes, assim, quando uma biblioteca ou programa
precisa ser atualizado todas as suas dependencias são atualizadas juntas.

Atualizando Slackmini pelo ZeroShell

Execute o comando: zeroshell

/system package : Entrar no diretório de gerenciamento de pacotes.


[admin@servidor] > /sys pac
[admin@servidor] /system package>

/system package print : Listar pacotes instalados


[admin@servidor] /system package> print
Pacote Versao Bytes Assinatura Atualizado
baseapps 1.0 5.435.648 74cf1~27b11 2016-07-31 14:52:39
baseconf 1.0 284.392 0a290~6c292 2016-07-31 14:52:43
basedb 1.0 13.939.632 c8acc~b1392 2016-07-31 14:52:45
basefront 1.0 8.520.628 95ee6~6ba7b 2016-07-31 14:52:47
baselibs 1.0 16.348.680 11ec5~b7f76 2016-07-31 14:52:48
baselinux 1.0 2.199.664 ed7c2~8032f 2016-07-31 14:52:53
basenet 1.0 8.906.708 fb910~bf238 2016-07-31 14:52:56
basenetapps 1.0 5.399.748 452e5~9b39d 2016-07-31 14:52:57
baseshell 1.0 72.684 6c902~c7504 2016-07-31 14:53:00
basetools 1.0 1.689.772 f72f4~caef0 2016-07-31 14:53:02
baseutils 1.0 1.969.980 020db~50f6e 2016-07-31 14:53:02
basevolatile 1.0 832.680 ae5cb~e7365 2016-07-31 14:53:03
basexlibs 1.0 2.094.996 26a3d~59386 2016-07-31 14:53:04
kernel 1.0 67.277.140 d57d0~1a9a6 2016-07-31 14:53:05
[admin@servidor] /system package>

/system package update help : Ajuda para atualizar pacotes.


[admin@servidor] /system package> update help

Atualizar Slackmini
Use:
update all : Atualizar todos os pacotes
update (pkgname) : Atualizar apenas o pacotes 'pkgname'

[admin@servidor] /system package>

/system package update : Procurar atualizações, baixar e instalar.


[admin@servidor] /system package> update
[admin@servidor] /system package>

/system package info help : Ajuda para obter informações de pacote.


[admin@servidor] /system package> info help

Informacoes sobre um pacotes do Slackmini


Use:
info (pkgname)

Opcoes:
(pkgname) : Informacoes do pacote 'pkgname'
all : Informacoes sobre todos os pacotes
help : Exibir ajuda

[admin@servidor] /system package>

/system package info : Listar informações dos pacotes.


[admin@servidor] /system package> info

/system package info [PKG] : Listar informações de um pacote.


http://manual.slackmini.com.br/ 64/69
21/11/2017 Distribuição Linux Slackmini

[admin@servidor] /system package> info kernel

[2016-07-31 21:22:55] Pacote......: kernel


[2016-07-31 21:22:55] Assinatura: d57d06311fc5389a1f801f027dc1a9a6
[2016-07-31 21:22:55] Ficheiro..: /var/lib/packages/kernel-1.0.txz
[2016-07-31 21:22:55] Indice....: /var/log/packages/kernel-1.0
[2016-07-31 21:22:55] Itens.....: 5.545
[2016-07-31 21:22:55] Tamanho...: 64.2 MiB (67277140 bytes)

[admin@servidor] /system package>

/system pac view [PKG] : Listar conteudo de um pacote.


/system pac check [PKG] : Verificar arquivos do pacote.
/system pac repair [PKG] : Reparar arquivos danificados do pacote.

   GERENCIAMENTO DE SERVIÇOS
Este capítulo lhe ensinará como criar, ativar e desativar serviços no Slackmini.
O Slackmini conta com alguns serviços pre-instalados porem eles não iniciam automaticamente, é necessário ativa-los.
Cada serviço requer um script de controle instalado no diretório /etc/init.d.
Se o script estiver com flag de execução ativo (-x) ele será executado durante o boot recebendo o parâmetro start e durante o desligamento
recebendo o parâmetro stop.

Exemplo de script de controle de servição (servição hello-world) em /etc/init.d/hello-world:

#!/bin/sh
#@95
#&95

case "$1" in
'start')
echo "Iniciar servico HELLO-WORLD"
;;

'stop')
echo "Parar servico HELLO-WORLD"
;;
'restart')
echo "Reiniciar servico HELLO-WORLD"
;;
'status')
echo "Servico HELLO-WORLD vai bem, obrigado"
;;
*)
echo "Nao entendi, use: start/stop/restart/status"
esac

Observe os números nos primeiros dois comentários. O #@ determina a prioridade do serviço durante o boot e #& determina a prioridade
durante o desligamento.

Controle de serviços pelo ZeroShell

Execute o comando: zeroshell

/system service : Entrar no diretório de gerenciamento de serviços.


[admin@servidor] > /sys serv
[admin@servidor] /system service>

/system service print : Listar serviços instalados


[admin@servidor] /system service> print
# Servico Start-Prio Stop-Prio Status
apache2 92 10 Desativado
bind9 15 15 Desativado
mariadb 99 99 Desativado
ntpd 16 16 Desativado
php-fpm 99 99 Desativado
quagga 90 90 Desativado
shellinabox 95 10 Desativado
snmpd 99 99 Desativado
sshd 22 80 Ativado
unbound 15 15 Desativado

[admin@servidor] /system service>


http://manual.slackmini.com.br/ 65/69
21/11/2017 Distribuição Linux Slackmini
[ @ ] y

/system service stop [SERVICE] : Parar um serviço.

/system service start [SERVICE] : Iniciar um serviço ativo.

/system service restart [SERVICE] : Reiniciar um serviço ativo.

/system service disable [SERVICE] : Parar e desativar um serviço.

/system service enable [SERVICE] : Ativar e iniciar um serviço.

/system service status [SERVICE] : Verificar status de um serviço.

   REPARANDO DANOS
Todos sabemos que no dia-a-dia problemas acontecem e seu Slackmini pode parar de funcionar.
Se tem uma pergunta que me irrita é essa: O servidor parou. O QUE PODE SER?
Afinal, pode ser qualquer coisa e o que importa é voltar o serviço ao ar o quanto antes e deixar a investigação para depois.
Para evitar houvir essa pergunta eu projetei o Slackmini para impedir configurações destrutivas e ser capaz de identificar se algum arquivo foi
danificado.

Muitas vezes tentar reparar um servidor pode dar mais trabalho e tomar muito mais tempo do que simplesmente reinstalar tudo novamente,
portanto, siga esses conselhos:

Dicas para rápida recuperação de serviços usando Slackmini.


1 - Se rodar em maquina virtual, faça SNAPSHOT diários ou semanais ou clone tudo e exporte para local seguro.
2 - Se rodar em maquina real, faça backup dos arquivos que foram alterados e do "export" do zeroshell.
3 - Sempre tenha um HD reserva. Discos rígidos são os vilões. Faça RAID 1 se quiser ter paz.

Recuperando, se o sistema não inicia

Se o sistema não inicia, temos algumas possibilidades:


1 - Problemas de hardware
Se o hardware (processador, placa-mãe, memória, disco, fonte e energia, placa de vídeo, monitor, teclado) estiver com problemas nenhuma
ação de software será capaz de arrumar isso. É impossivel resolver por software um problema que está no hardware.
Verifique item por item do hardware, se possível entre em contato com o fabricante para fazer diagnóstico das peças.
2 - Problemas de disco
O software é um arquivo no disco. Para que ele seja executado o computador precisa ter acesso ao disco rígido (ou memória flash, SSD,
etc...) para copiar o arquivo do programa para a memória RAM e então executá-lo. Se o disco estiver danificado você precisará testar com
outro disco para tirar a dúvida.
Uma maneira simples de testar é rodar o software pelo CD/DVD ou PENDRIVE. Existem distribuições como Ubuntu Live, Slax, entre outras,
que rodam pelo PENDRIVE e permitem diagnóstico do dísco.
3 - Problemas no sistema de arquivos
O disco pode estar normal mas a forma como os dados são organizados nele podem estar com problemas (sistema de arquivos). Para
resolver esse problema é necessário efetuar a manutenção do sistema de arquivos com o comando 'fsck'

Recuperando, se seu sistema consegue iniciar

Execute o comando: zeroshell

[admin@servidor] > /sys pac


[admin@servidor] /system package> repair all

Se algum arquivo vital para o sistema for perdido, danificado ou alterado indevidamente o comando de reparar irá resolve isso reinstalando o
arquivo original.

Após reparar os pacotes nativos realize o update para garantir que possíveis bugs já tenham sido reparados.

[admin@servidor] > /sys pac


[admin@servidor] /system package> update

http://manual.slackmini.com.br/ 66/69
21/11/2017 Distribuição Linux Slackmini

   SERVIDOR: DNS
O Slackmini disponibiliza os dois principais softwares de servidor DNS: BIND-9 e Unbound.
Para montar um servidor DNS você precisa escolher um deles. Se ativar os dois um deles irá falhar por não conseguir abrir a porta udp/53.

Serviço Arquivo de configuração

Bind9 /etc/named.conf

Unbound /etc/unbound/unbound.conf

Manual do Bind9 em inglês, PDF, via ISC.org https://www.isc.org/wp-content/uploads/2014/01/B99ARM.pdf


Manual do Unbound em inglês, via unbound.net https://www.unbound.net/documentation/unbound.conf.html

Primeiro ative o serviço, vou usar o Bind9 como modelo:

[admin@servidor] > /sys serv


[admin@servidor] /system service> enable bind9
[2016-07-31 23:20:25] Iniciando Bind9 [ OK ]
[admin@servidor] /system service>

Para alterar para o Unbound, desative o Bind9 antes de ativar o Unbound.


Sempre que alterar o arquivo de configuração é necessário reiniciar o serviço.

   SERVIDOR: WEB
O Slackmini disponibiliza os três principais softwares de servidor HTTP: Apache2, Lighttp e Nginx.
Para montar um servidor HTTP você precisa escolher um deles. Se ativar os dois ou mais um deles irá falhar por não conseguir abrir a porta
tcp/80 ou você terá que rodar os demais em portas diferentes.

Serviço Arquivo de configuração Pasta raiz (htdocs)

Apache 2 /etc/httpd/httpd.conf /srv/httpd/htdocs

Lighttpd /etc/lighttpd/lighttpd.conf /srv/lighttpd/htdocs

Manual do Apache 2.4 http://httpd.apache.org/docs/2.4/pt-br/


Manual do Lighttpd em inglês https://redmine.lighttpd.net/projects/lighttpd/wiki

Primeiro ative o serviço, vou usar o Lighttpd como modelo:

[admin@servidor] > /sys serv


[admin@servidor] /system service> enable lighttpd
[2016-07-31 23:20:25] Iniciando Lighttpd [ OK ]
[admin@servidor] /system service>

Sempre que alterar o arquivo de configuração é necessário reiniciar o serviço.

Usando PHP

Para usar programas em PHP nas suas páginas web usando o Apache 2 basta subir o serviço do Apache.
Para usar PHP com o Lighttpd é preciso subir o serviço PHP-FPM.
Exemplos:
1 - Servidor Web Apache2 e PHP

[admin@servidor] > /sys serv


[admin@servidor] /system service> enable apache2
[2016-08-14 20:59:13] Iniciando Apache2 [ OK ]
[admin@servidor] /system service>

http://manual.slackmini.com.br/ 67/69
21/11/2017 Distribuição Linux Slackmini

Obs.: o PHP é ativado no Apache2 pois no arquivo de configuração /etc/httpd/httpd.conf já consta por padrão a 'include' do modulo PHP.

2 - Servidor Web Lighttpd e PHP (via PHP-FPM)

[admin@servidor] > /sys serv


[admin@servidor] /system service> enable php-fpm
[2016-08-14 21:01:38] Iniciando PHP-FPM [ OK ]
[admin@servidor] /system service> enable lighttpd
[2016-07-31 23:20:25] Iniciando Lighttpd [ OK ]
[admin@servidor] /system service>

Configuração de execução do PHP:

Serviço Finalidade Arquivo de configuração Pasta de includes

PHP Comportamento geral /etc/php.ini /etc/php.d

PHP-FPM Serviço PHP sobre Fast-CGI /etc/php-fpm.conf /etc/php-fpm.d

Testando

Apos escolher seu serviço de HTTP abra o navegador e digite o IP atual do servidor (ou o nome caso tenha atribuido no DNS autoritativo).
Para testar o PHP e as informações de suporte a modulos, acesse o caminho /info.php (http:// + ip + /info.php).

   BANCO DE DADOS MARIADB


O banco de dados SQL padrão do Slackmini é o MariaDb, sucessor do MySQL (apos aquisição pela Sun / Oracle)
Para iniciar o uso do MariaDB é preciso ativar o serviço 'mariadb'

[admin@servidor] > /sys serv


[admin@servidor] /system service> enable mariadb
[2016-08-15 22:58:18] MariaDB: Banco de dados inicial - Instalando...
Installing MariaDB/MySQL system tables in '/var/lib/mysql' ...
160815 19:58:18 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.
160815 19:58:18 [Warning] option 'thread_cache_size': unsigned value 262144 adjusted to 16384
160815 19:58:18 [Warning] options --log-slow-admin-statements, --log-queries-not-using-indexes and
--log-slow-slave-statements have no effect if --log_slow_queries is not set
160815 19:58:18 [Note] /usr/libexec/mysqld (mysqld 10.0.24-MariaDB) starting as process 7524 ...
160815 19:58:18 [Note] InnoDB: Using mutexes to ref count buffer pool pages
160815 19:58:18 [Note] InnoDB: The InnoDB memory heap is disabled
160815 19:58:18 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
160815 19:58:18 [Note] InnoDB: Memory barrier is not used
160815 19:58:18 [Note] InnoDB: Compressed tables use zlib 1.2.8
160815 19:58:18 [Note] InnoDB: Using Linux native AIO
160815 19:58:18 [Note] InnoDB: Using CPU crc32 instructions
160815 19:58:18 [Note] InnoDB: Initializing buffer pool, size = 128.0M
160815 19:58:18 [Note] InnoDB: Completed initialization of buffer pool
160815 19:58:18 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
160815 19:58:18 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
160815 19:58:18 [Note] InnoDB: Database physically writes the file full: wait...
160815 19:58:18 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
160815 19:58:18 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
160815 19:58:19 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
160815 19:58:19 [Warning] InnoDB: New log files created, LSN=45781
160815 19:58:19 [Note] InnoDB: Doublewrite buffer not found: creating new
160815 19:58:19 [Note] InnoDB: Doublewrite buffer created
160815 19:58:19 [Note] InnoDB: 128 rollback segment(s) are active.
160815 19:58:19 [Warning] InnoDB: Creating foreign key constraint system tables.
160815 19:58:19 [Note] InnoDB: Foreign key constraint system tables created
160815 19:58:19 [Note] InnoDB: Creating tablespace and datafile system tables.
160815 19:58:19 [Note] InnoDB: Tablespace and datafile system tables created.
160815 19:58:19 [Note] InnoDB: Waiting for purge to start
160815 19:58:19 [Note] InnoDB: Percona XtraDB (http://www.percona.com) 5.6.28-76.1 started; log sequence number 0
160815 19:58:19 [Note] InnoDB: FTS optimize thread exiting.
160815 19:58:19 [Note] InnoDB: Starting shutdown...
160815 19:58:21 [Note] InnoDB: Shutdown completed; log sequence number 1616697
OK
Filling help tables...
160815 19:58:21 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.
160815 19:58:21 [Warning] option 'thread_cache_size': unsigned value 262144 adjusted to 16384
160815 19:58:21 [Warning] options --log-slow-admin-statements, --log-queries-not-using-indexes and
--log-slow-slave-statements have no effect if --log_slow_queries is not set
160815 19:58:21 [Note] /usr/libexec/mysqld (mysqld 10.0.24-MariaDB) starting as process 7576 ...
160815 19:58:21 [Note] InnoDB: Using mutexes to ref count buffer pool pages
160815 19:58:21 [Note] InnoDB: The InnoDB memory heap is disabled
160815 19:58:21 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
160815 19:58:21 [Note] InnoDB: Memory barrier is not used
160815 19:58:21 [Note] InnoDB: Compressed tables use zlib 1.2.8
160815 19:58:21 [Note] InnoDB: Using Linux native AIO
160815 19:58:21 [Note] InnoDB: Using CPU crc32 instructions
160815 19:58:21 [Note] InnoDB: Initializing buffer pool, size = 128.0M
160815 19:58:21 [Note] InnoDB: Completed initialization of buffer pool
160815 19:58:21 [Note] InnoDB: Highest supported file format is Barracuda.
160815 19:58:21 [Note] InnoDB: 128 rollback segment(s) are active.
160815 19:58:21 [Note] InnoDB: Waiting for purge to start
160815 19:58:21 [Note] InnoDB: Percona XtraDB (http://www.percona.com) 5.6.28-76.1 started; log sequence number 1616697
160815 19:58:21 [Note] InnoDB: FTS optimize thread exiting.
160815 19:58:21 [Note] InnoDB: Starting shutdown...
160815 19:58:23 [Note] InnoDB: Shutdown completed; log sequence number 1616707
OK

To start mysqld at boot time you have to copy

http://manual.slackmini.com.br/ 68/69
21/11/2017 Distribuição Linux Slackmini
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !


To do so, start the server, then issue the following commands:
'/usr/bin/mysqladmin' -u root password 'new-password'
'/usr/bin/mysqladmin' -u root -h servidor password 'new-password'

Alternatively you can run:


'/usr/bin/mysql_secure_installation'

which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.

You can start the MariaDB daemon with:


cd '/usr' ; /usr/bin/mysqld_safe --datadir='/var/lib/mysql'
You can test the MariaDB daemon with mysql-test-run.pl
cd '/usr/mysql-test' ; perl mysql-test-run.pl

Please report any problems at http://mariadb.org/jira


The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Support MariaDB development by buying support/new features from MariaDB
Corporation Ab. You can contact us about this at sales@mariadb.com.
Alternatively consider joining our community based development effort:
http://mariadb.com/kb/en/contributing-to-the-mariadb-project/

[2016-08-15 22:58:23] MariaDB: Banco de dados inicial - Instalado com sucesso.


[2016-08-15 22:58:23] MariaDB: Iniciando banco de dados... [ OK ]

[admin@servidor] /system service>

A primeira vez que você ativar o MariaDB o script do serviço irá instalar automaticamente o banco de dados padrão dispensando assim a
execução do comando 'mysql_install_db --user=mysql' como demonstrado acima.
Observe:

[admin@servidor] /system service> disable mariadb


[2016-08-15 23:01:07] MariaDB: Parando banco de dados...... [ DONE ]
[admin@servidor] /system service> enable mariadb
[2016-08-15 23:01:22] MariaDB: Iniciando banco de dados... [ OK ]
[admin@servidor] /system service>

   SERVIDOR: QUAGGA OSPF/BGP

   VIA VMWARE FUSION


(Arquivo /storage0/wwwroot/manual.slackmini.com.br/_extra-vmware.php nao encontrado).

   VIA VIRTUALBOX
(Arquivo /storage0/wwwroot/manual.slackmini.com.br/_extra-virtualbox.php nao encontrado).

http://manual.slackmini.com.br/ 69/69

You might also like