Tag Archives: JNCIA

Read it, then try it—with Juniper vLabs

Juniper vLabs is a web-based platform that lets you try out Juniper products and features at any time, in a no-risk environment. Leveraging the vMX, vQFX, and vSRX product lines, vLabs provide a variety of standalone devices and preset topologies. Reservable in advance or on-demand, vLabs are free to access and open to everyone.

Juniper vLabs takes a “read-it-then-try-it” approach to learning. This offering guides you from product and solutions documentation to a live environment where you can get hands-on experience.

Enter Juniper vLabs.

 

https://youtu.be/Zt5fiVhNgFQ

Notas estudo JNCIA-Junos parte 5

Routing Policy

(Routes/Protocols) Import Policies —–> Routing table —–> Export Policies (Routes/Protocols)
|
|
|
v
Forwarding

 

Protocol
Import Policy Export Policy
BGP                         Aceita/importa todas as rotas BGP para inet.0 Aceita todas as rotas BGP activas
OSPF  Aceita/importa todas as rotas OSPF para inet.0 Rejeita tudo (protocol floods by default)
IS-IS Aceita/importa todas as rotas IS-IS para inet.0 Rejeita tudo (protocol floods by default)
RIP Aceita todas as rotas do neighbors explicitamente confgiurados e importa para inet.0 Rejeita tudo

Não é possível no OSPF através de uma policy parar o advertisement de LSAs, ou mesmo filtrar as rotas internas (incluindo inter-area) da tabela de routing. Mas é possível filtrar  rotas externas.
Apesar de “rejeita tudo” na Export Policy o router continua a enviar LSAs, a policy não permite o envio de rotas adicionais com origem em outras sources.

Permite config import/export policys ao nível do protocolo ou neighbor

As routing policys contem um conjuntos de terms, estes são analisados sequencialmente. Quando e feito o match (from) são executadas as instruções em “then” e a policy termina de ser analisada com a “terminating action” não analisando o seguinte “term“.

As Control Actions  para aceitar/rejeitar rotas são:accept/reject ambas são “terminating actions”

Ẽ possível usar o comando insert para alterar a ordem de um “term

insert policy-options policy-statement OUT-RIP term ospf-to-rip-1 {after|before} term ospf-to-rip

policy-options {
policy-statement OUT-RIP {
term ospf-to-rip-1 {
from protocol ospf;
then accept;
}
term ospf-to-rip {
from protocol ospf;
then accept;
}
}

Caso seja omitido o “from” da policy  ẽ aplicado a todas as rotas a action do respectivo “then” subsequente

prefix-list – faz o match exacto do prefix
prefix-list-filter – permite match de types e actions. Match types: exact, longer,orlonger

No polic2 após match ẽ executada a ação (opcionalmente se configurada, não sendo usado o “then“)

policy-options {
prefix-list filter-rfc1918 {
10.0.0.0/8;
172.16.0.0/12;
192.168.0.0/24;
}

policy-statement polic {
from {
prefix-list filter-rfc1918;
}
then reject;
}
policy-statement polic2 {
from {
prefix-list-filter filter-rfc1918 longer reject;
}
}
}

Router Filters

Os route filters não são passiveis de reutilizar ao contrario dos prefix-list, estes permitem uma maior granularidade por prefix

Match Type:

exact
from route-filter 192.168.1.0/24

longer
from route-filter 192.168.1.0/24 longer

orlonger
from route-filter 192.168.1.0/24 orlonger

upto
from route-filter 192.168.1.0/24 upto /29

prefix-length-range
from route-filter 192.168.1.0/24 prefix-length-range /27-/30

Common Actions

O accept e reject são considerados “terminating actions” porque permitem a paragem do evaluate da policy

Os “nonterminating” default-action accept e default-action reject não causam a paragem do evaluate da policy, mas prevalecem sob a default policy accept/reject

Outros termos comuns são o “next term” e “next policy“, designados de Flow-control

Firewall Filters

Os filtros são stateless, não guardam os estado das ligações

Discard explicito by default

Common Actions

Terminating actions: accept,discard,reject
Flow control: next term
Action modifiers:
count.log e syslog – hits
forwarding-class e loss-priority – especificar Class of service (CoS)
policer – policiamento

O next term ẽ útil caso seja necessário definir um policer ou valor DiffServ code point (DSCP), não existe a ação “next filter
Caso seja especificado uma action modifier, está implícito a action accept

interfaces {
em5 {
vlan-tagging;
unit 121 {
vlan-id 121;
family inet {
filter {
input IN;
output OUT;
}
address 10.10.121.4/24;
}
}

}
}

firewall {
family inet {
filter IN {
term ACCEPT_ALL {
then {
log;
accept;
}
}
}
filter OUT {
term ACCEPT_ALL {
from {
icmp-type echo-reply;
}
then accept;
}
term ACCEPT_ALL_ {
from {
icmp-type echo-request;
}
then {
log;
discard;
}
}
term ACCEPT_ALL_2 {
then accept;
}
}
}
}

Filtering Local

Os filtros influenciam o tráfego do Control plane, portanto cuidado!

Policing

Os firewall filters permitem policing ou rate-limit. Se o primeiro termo não tiver a clausula “from” todos os pacotes da interface (input output) são alvo de policing

Ẽ possível aplicar policers diretamente nas interfaces

O policing usa o algoritmo token bucket, que faz o enforcing de um limite na average bandwidth enquanto permite burst atẽ um valor máximo especificado
São configurados 2 rate-limits, bandwidth/maximum burst size

The preferred method for determining the maximum burst size is to multiply the speed of the interface by the amount of time
bursts that you want to allow at that bandwidth level. For example, to allow bursts on a Fast Ethernet link for 5 milliseconds  (a reasonable value), use the following calculation:
burst size = bandwidth (100,000,000 bits per sec) x allowable burst time (5/1000s)

This calculation yields a burst size of 500,000 bits. You can divide this number by 8 to convert it to bytes, which gives you a
burst size of 62500 bytes.

bandwidth-limit bandwidth-in-bits
burst-size-limit burst-in-bytes

Quando ẽ feito o evaluate da police, caso não exceda e executada a ação “then” do firewall filter. Caso exceda é executada a ação da police

set firewall family inet filter rate-limit-subnet term match-subnet from source-address 192.100.1.0/24
set firewall family inet filter rate-limit-subnet term match-subnet then policer p1
set firewall family inet filter rate-limit-subnet term else-accept then accept
set firewall policer p1 if-exceeding bandwidth-limit 100k
set firewall policer p1 if-exceeding burst-size-limit 20k
set firewall policer p1 then discard

firewall {
family inet {
filter rate-limit-subnet {
term match-subnet {
from {
source-address {
192.100.1.0/24;
}
}
then policer p1;
}
term else-accept {
then accept;
}
}
}
policer p1 {
if-exceeding {
bandwidth-limit 100k;
burst-size-limit 20k;
}
then discard;
}
}

show firewall counter filter filter-name counter-name

show firewall log

clear firewall filter filter-name

A filter name or a blank space appears if the RE handles the packet. Otherwise, a dash ( – ) or  pfe  appears instead of the filter name to indicate
that the packet was handled by the PFE. The contents  in the firewall log clear when the system reboots.

Automated Antispoofing Filters

Reverse Path-Forwarding

Ẽ possível combinar RPF checks a firewall filters na mesma interface. Activando esta feature o PFE aumenta o consumo de memoria

Strict vs Loose modes

by default usa strict

By default o JunOS verifica apenas active path para o prefix, causando drops quando existem multiplos paths (asymmetric  routing). Ẽ possível permitir múltiplos usando set routing-optinos forwarding-table unicast-reverse-path feasible-paths

Fail Filters

By default o RPF faz discard ao tráfego que falha o RPF check, de qualquer forma pode ser especificado um fail filter opcional. Neste filter ẽ possível definir todas as ações e incluindo aceitar o tráfego embora falhe o RPF check. (Para ver o log destes pacotes (RPF check failed) ẽ necessário configurar o log no fail filter)

set interfaces em0 unit 0 family inet rpf-check fail-filter rpf-dhcp
set interfaces em0 unit 0 family inet address 10.1.12.1/24
set interfaces lo0 unit 0 family inet address 10.2.2.2/32
set firewall family inet filter rpf-dhcp term dhcp from source-address 0.0.0.0/32
set firewall family inet filter rpf-dhcp term dhcp from destination-address 255.255.255.255/32
set firewall family inet filter rpf-dhcp term dhcp then accept

 

Referências:

Notas estudo JNCIA-Junos parte 1

Notas estudo JNCIA-Junos parte 2

Notas estudo JNCIA-Junos parte 3

Notas estudo JNCIA-Junos parte 4

Notas estudo JNCIA-Junos parte 4

A tool primária de monitorização da plataforma é o CLI que inclui os comandos show e monitor. As secundarias são o J-Web , SNMP, hardware LEDS/LCDs

show system
alarms : This argument displays current system alarms;
boot-messages : This argument displays the messag es seen during the last system boot;
connections : This argument displays the status of local TCP and UDP connections;
statistics: This argument provides options for viewing various protocol statistics;
storage: This argument displays the status  of the file system storage space.

show chassis
alarms : This argument displays current chassis alarms;
environment : This argument displays component  and environmental status as well as the operational speeds of the cooling system;
hardware : This argument displays an inventory  of the installed hardware components along with the serial number of each component; and
routing-engine: This argument provides operational status and utilization details for the Routing Engine (RE).

Captura de tráfego

Capturar tráfego para ficheiro (hidden command)
monitor traffic write-file captura

Capturar em real-time especificando uma interface

[email protected]# run monitor traffic interface em5 no-resolve ?
Possible completions:
<[Enter]>            Execute this command
absolute-sequence    Display absolute TCP sequence numbers
brief                Display brief output
count                Number of packets to receive (0..1000000 packets)
detail               Display detailed output
extensive            Display extensive output
layer2-headers       Display link-level header on each dump line
matching             Expression for headers of receive packets to match
no-domain-names      Don’t display domain portion of hostnames
no-promiscuous       Don’t put interface into promiscuous mode
no-timestamp         Don’t print timestamp on each dump line
print-ascii          Display packets in ASCII when displaying in hexadecimal format
print-hex            Display packets in hexadecimal format
resolve-timeout      Period of time to wait for each name resolution (seconds)
size                 Amount of each packet to receive (bytes)
|                    Pipe through a command

[email protected]# run monitor traffic interface em5 no-resolve detail
Address resolution is OFF.
Listening on em5, capture size 1514 bytes

18:00:02.101361  In IP6 (hlim 1, next-header: UDP (17), length: 107) fe80::6101:1a73:bc24:3daf.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit(C cliaddr=8:2:189d:1:e:1:1:188a relayaddr=2145:d4be:d963:d2be:3:c:5300:5056)
18:00:02.983638 Out IP (tos 0xc0, ttl   1, id 12712, offset 0, flags [none], proto: OSPF (89), length: 64) 172.20.101.1 > 224.0.0.5: OSPFv2, Hello, length 44
Router-ID 9.9.9.9, Backbone Area, Authentication Type: none (0)
Options [External]
Hello Timer 10s, Dead Timer 40s, Mask 255.255.255.0, Priority 128
Designated Router 172.20.101.1
18:00:02.985453 Out IP (tos 0xc0, ttl   1, id 12713, offset 0, flags [none], proto: OSPF (89), length: 64) 172.20.110.1 > 224.0.0.5: OSPFv2, Hello, length 44
Router-ID 9.9.9.9, Backbone Area, Authentication Type: none (0)
Options [External]
Hello Timer 10s, Dead Timer 40s, Mask 255.255.255.0, Priority 128
Designated Router 172.20.110.1
^C
3 packets received by filter
0 packets dropped by kernel

Unified In-Service Software Upgrade (ISSU)

Permite upgrade sem disrupção no control plane, apenas e suportado com 2 Routing Engines. O Graceful Routing Engine Switchover (GRES) e NonStop Active Routing (NSR) devem estar activos. Nem todas as plataformas suportam o NSR, durante a mudança de versão não podem ser feitas operações online/offline ás PICs

Passos para efetuar um Unified ISSU:

1. activar o GRES e NSR e verificar a sincronização dos protocolos
2. efetuar no RE master request system software in-service-upgrade

Password Recovery

Durante o processo de reboot pressionar o Space

loader> boot -s (para boot em single user, similar em linux)

Ao iniciar o sistema vai perguntar pelo recovery script, apenas é necessário digitar recovery, sendo que o sistema vai iniciar permitindo fazer login sem password
Após alterada a password, sair com ‘exit‘ para fazer reboot automaticamente

Remover/Copiar Ficheiros

[email protected]# run file ?
Possible completions:
<[Enter]>            Execute this command
archive              Archives files from the system
checksum             Calculate file checksum
compare              Compare files
copy                 Copy files (local or remote)
delete               Delete files from the system
list                 List file information
rename               Rename files
show                 Show file contents
source-address       Local address to use in originating the connection
|                    Pipe through a command

[email protected]# run file show /config/?
Possible completions:
<[Enter]>            Execute this command
<filename>           Filename to show
/config/juniper.conf.1.gz  Size: 458, Last changed: May 24 19:58:53
/config/juniper.conf.2.gz  Size: 454, Last changed: May 23 21:17:12
/config/juniper.conf.3.gz  Size: 450, Last changed: May 23 15:03:46
/config/juniper.conf.gz  Size: 452, Last changed: May 24 20:00:08
/config/juniper.conf.md5  Size: 32, Last changed: May 22 23:45:51
/config/rescue.conf.gz  Size: 454, Last changed: May 24 19:57:27

Uso de Grupos

Definir um grupo
Nota: Este grupo irá surtir efeito apenas em interfaces em*

set groups CONFIG_IF_EM interfaces <em*> description “By group”
set groups CONFIG_IF_EM interfaces <em*> vlan-tagging
set groups CONFIG_IF_EM interfaces <em*> speed 10m
set groups CONFIG_IF_EM interfaces <em*> link-mode half-duplex
set groups CONFIG_IF_EM interfaces <em*> unit 0 vlan-id 1
set groups CONFIG_IF_EM interfaces <em*> unit 0 family inet
set groups CONFIG_IF_EM interfaces <em*> unit 0 family inet6

[email protected]# set interfaces em4 apply-groups CONFIG_IF_EM;

[email protected]# show interfaces em4 | display inheritance | except #
description “By group”;
vlan-tagging;
speed 10m;
link-mode half-duplex;
unit 0 {
vlan-id 1;
family inet;
family inet6;
}

[edit]

[email protected]# show interfaces em4 | display inheritance
##
## ‘By group’ was inherited from group ‘CONFIG_IF_EM’
##
description “By group”;
##
## ‘vlan-tagging’ was inherited from group ‘CONFIG_IF_EM’
##
vlan-tagging;
##
## ’10m’ was inherited from group ‘CONFIG_IF_EM’
##
speed 10m;
##
## ‘half-duplex’ was inherited from group ‘CONFIG_IF_EM’
##
link-mode half-duplex;
##
## ‘0’ was inherited from group ‘CONFIG_IF_EM’
##
unit 0 {
##
## ‘1’ was inherited from group ‘CONFIG_IF_EM’
##
vlan-id 1;
##
## ‘inet’ was inherited from group ‘CONFIG_IF_EM’
##
family inet;
##
## ‘inet6’ was inherited from group ‘CONFIG_IF_EM’
##
family inet6;
}

[edit]

[email protected]# show interfaces ae0
apply-groups CONFIG_IF_EM;
vlan-tagging;
aggregated-ether-options {
lacp {
active;
}
}

[edit]
[email protected]# show interfaces ae0 | display inheritance
vlan-tagging;
aggregated-ether-options {
lacp {
active;
}
}

[edit]

Routing

Routing preference values can range from 0 to 4,294,967,295.

* – indica a rota activa

holddown – estão no estado pendente antes de o sistema as declarar como inativas
hidden – o sistema não pode usar por questões de invalid next-hop e/ou route policy

show route forwarding-table

Algumas das rotas são permanentes devido a sua natureza como e o caso da default (Type perm), esta entrada e usada para o router descartar tráfego quando não existe roteamento para determinado destino, após descarte envia um ICMP unreachable ao host de origem

Caso exista um default route na tabela, o router utiliza-a em vez da Type perm

Route types:

cloned (clon) – (TCP or multicast only) Cloned route.
destination (dest) – Remote addresses directly reachable through an interface.
destination down (iddn) – Destination route for which the interface is unreachable.
interface cloned (ifcl) – Cloned route for which the interface is unreachable.
route down (ifdn) – Interface route for which the interface is unreachable.
ignore (ignr) – Ignore this route.
interface (intf) – Installed as a result of configuring an interface.
permanent (perm) – Routes installed by the kernel when the routing table is initialized.
user – Routes installed by the routing protocol process or as a result of the configuration.

Next-hop Types:

broadcast (bcst) – Broadcast.
deny – Deny.
hold – Next hop is waiting to be resolved into a unicast or multicast type.
indexed (idxd) – Indexed next hop.
indirect (indr) – Indirect next hop.
local (locl) – Local address on an interface.
routed multicast (mcrt) – Regular multicast next hop
multicast (mcst) – Wire multicast next hop (limited to the LAN).
multicast discard (mdsc) – Multicast discard.
multicast group (mgrp)  – Multicast group member.
receive (recv) – Receive.
reject (rjct) – Discard. An ICMP unreachable message was sent.
resolve (rslv) – Resolving the next hop.
unicast (ucst) – Unicast.
unilist (ulst) – List of unicast next hops. A packet sent to this next hop goes to any next hop in the list.

By default o JunOS cria a master instance e outras private instances. Estas private instances são para uso interno (comunicações entre componentes de hardware) do JunOS.

[email protected]> show route instance
Instance             Type
Primary RIB                                     Active/holddown/hidden
__juniper_private1__ forwarding
__juniper_private1__.inet.0                     0/0/1
__juniper_private1__.inet6.0                    1/0/0

__juniper_private2__ forwarding
__juniper_private2__.inet.0                     0/0/1

__master.anon__      forwarding

master               forwarding
inet.0                                          8/0/0
inet6.0                                         1/0/0

Instances Types

forwarding: Used to implement filter-based forwarding for common Access Layer applications;
l2vpn: Used in Layer 2 VPN implementations;
no-forwarding :  Used to separate large networks into smaller administrative entities;
virtual-router: Used for non-VPN-related applications such as system virtualization; “VRF-lite”
vpls:  Used for point-to-multipoint LAN implementations between a set of sites in a VPN;
vrf :  Used in Layer 3 VPN implementations.

[email protected]# set routing-instances <instance-name> instance-type <instance-type>

[email protected]>show route table new-instance.inet.0
[email protected]>show interfaces terse routing-instance new-instance
[email protected]>traceroute 2.2.2.2 routing-instance new-instance

Static Routing

O next-hop pode ser a opção de bit bucket, as opcoes de discard/reject permite descartar o trafego:

  • discard faz drop silenciosamente (nao envia ICMP)
  • reject envia ICMP unreachable

Config static routing

set routing-options
static{
route 0.0.0.0/0 next-hop 172.30.25.1;
route 172.28.102.0/24 {
next-hop 10.210.11.190;
no-readdvertise;
}
}

O nexr-hop deve estar diretamente ligado, porque by default o JunOS não faz lookups recursivos. Para possibilitar a recursividade usar o comando resolve

set routing-options static route 0.0.0.0/0 next-hop 172.30.25.1;
set routing-options static route 172.28.102.0/24 next-hop 10.210.11.190 resolve

Qualified Next hops

Permite indicar a preferência de uma rota (floating route)

qualified-next-hop x.x.x.x {
preference 7;
}

Referências:

Notas estudo JNCIA-Junos parte 1

Notas estudo JNCIA-Junos parte 2

Notas estudo JNCIA-Junos parte 3

Notas estudo JNCIA-Junos parte 3

Interface Overview

fxp0 e me0 para management

fxp1 e em0 para a internal (interligação entre o Control e Forwarding Plane)

Interface Naming

es: Encryption interface;
gr: Generic route encapsulation tunnel interface;
ip: IP-over-IP encapsulat ion tunnel interface;
ls: Link services interface;
ml: Multilink interface;
mo: Passive monitoring interface;
mt: Multicast tunnel interface;
sp: Adaptive services interface;
vt: Virtual loopback tunnel interface.
lo0 : Loopback interface;
ae: Aggregated Ethernet interface;
as : Aggregated SONET interface;
vlan : VLAN interface

Algumas das interfaces internas criadas (não configuráveis)pelo JunOS:
• gre
• mtun
• ipip
• tap

FPC – Flexible PIC Concentrator
Line card (FPC) slot number
Interface card (PIC) slot number
Nota: A numberacao dos slots/portas comeca em 0
ge-0/2/3 = porta 3 na PIC slot 2 na PFC slot 0

Logical Units

Consideradas como subinterfaces, podem ter mais do que uma family pexemplo inet e inet6

Configurar Autenticação

Suporta Radius e Tacacs+

Definir uma class com privilégios

Existem 4 class por defeito operator,read-only,super-user e unauthorized
Um user só pode ser atribuído a uma class

set system login class juniper permissions reset permissions view permissions view-configuration
set system login user walter class juniper

Nota: A permissão de reset permite reiniciar processos, mas não fazer reboot pexemplo

[email protected]> show configuration
## Last commit: 2014-05-25 17:11:18 WEST by root
version /* ACCESS-DENIED */;
/* nao mudem o NTP */
system { /* ACCESS-DENIED */ };
/* n mudem interface */
interfaces { /* ACCESS-DENIED */ };
protocols { /* ACCESS-DENIED */ };

Definição do Radius Server

[email protected]#  set system radius-server 10.10.10.10  secret  Juniper
[edit]
[email protected]#  set system authentication-order radius tacplus+
[edit]
[email protected]#  commit

Pelo menos um dos métodos de authentication-order deve responder (alive), caso contrário é feita autenticação local

R1 (ttyp0)

login: nancy
Password:
Local password:

Logging

By default o ficheiro de logging primário e /var/messages

O syslog pode ser definido através dos comandos:

edit system syslog
edit routing-options options syslog

set system syslog user * any emergency
set system syslog file messages any any
set system syslog file messages authorization info
set system syslog file interactive-commands interactive-commands any
set system syslog file config-changes change-log info
set system syslog host 10.1.1.1 any notice
set system syslog host 10.1.1.1 authorization info

Interpretar as mensagens do syslog

Timestamp, Host , Process ou PID , message code, message text

May 26 14:27:17  R1 mgd[1366]: UI_COMMIT_PROGRESS: Commit operation in progress:  notifying eventd(80)
commit complete

Para incluir a Severity é necessário configurar o comando explicit-priority
set system syslog file messages explicit-priority

May 26 14:38:13  R1 mgd[1366]: %INTERACT-6-UI_COMMIT_PROGRESS: Commit operation in progress: notifying daemons of new configuration

É possível obter ajuda na interpretação de uma mensagem de log através da própria CLI

[email protected]# help syslog UI_COMMIT_PROGRESS
Name:          UI_COMMIT_PROGRESS
Message:       Commit operation in progress:
Help:          mgd recorded step in commit operation
Description:   As it performed a commit operation, the management process (mgd)
recorded its execution of the indicated step.
Type:          Event: This message reports an event, not an error
Severity:      info

Traceoptions

*Equivalente ao Debug em Cisco*

O JunOS permite enviar o tracing para ficheiro/syslog

Para redefinir um syslog server diferente usar:

set system tracing destination-override syslog host 10.1.1.2

Exemplo Tracing Hello OSPF

O size pode ser representado por K,M,G indicando (KB, MB e GB)
Cao o trace exceda o size, o ficheiro é divido no numero de ficheiros indicados começando em trace-file.0 trace-file.1 …

set protocols ospf traceoptions file ospf-trace
set protocols ospf traceoptions file size 128m
set protocols ospf traceoptions file files 10
set protocols ospf traceoptions file world-readable
set protocols ospf traceoptions flag hello detail
set protocols ospf traceoptions flag error detail
set protocols ospf traceoptions flag event detail

[email protected]# run file show /var/log/ospf-trace
May 26 14:52:47 trace_on: Tracing to “/var/log/ospf-trace” started
May 26 14:52:47.821578 Interface em5.101 area 0.0.0.0 event NeighborChange
May 26 14:52:47.835103 IFL em5.32767 iflchange 0x0
May 26 14:52:47.836167 IFL em5.110 iflchange 0x0
May 26 14:52:47.836334 IFL em5.102 iflchange 0x0
May 26 14:52:47.836498 IFL em5.101 iflchange 0x0
May 26 14:52:47.836643 IFL em5.0 iflchange 0x0
May 26 14:52:47.836793 IFL lo0.16385 iflchange 0x0
May 26 14:52:47.836891 IFL lo0.16384 iflchange 0x0
May 26 14:52:47.837115 IFL lo0.0 iflchange 0x0
*
*(omitido)
*
May 26 14:52:47.867410 OSPF updated PPM interface IFL 84, addr 172.20.110.1, area 0.0.0.0, ID 0.0.0.0, rtbl idx 0
May 26 14:52:47.867614 OSPF cannot stop xmit from 172.20.101.1 to 224.0.0.5 (IFL 82, area 0.0.0.0, ID 0.0.0.0, rtbl idx 0)
May 26 14:52:47.867816 OSPF cannot stop xmit from 172.20.110.1 to 224.0.0.5 (IFL 84, area 0.0.0.0, ID 0.0.0.0, rtbl idx 0)
May 26 14:52:47.868182 OSPF cannot stop xmit from 172.20.101.1 to 224.0.0.5 (IFL 82, area 0.0.0.0, ID 0.0.0.0, rtbl idx 0)
May 26 14:52:47.873156 OSPF cannot stop xmit from 172.20.110.1 to 224.0.0.5 (IFL 84, area 0.0.0.0, ID 0.0.0.0, rtbl idx 0)

Operadores AND e OR

Operador AND
[email protected]# run show log messages | find “May 26” | match “error”

Operador OR
[email protected]# run show log messages | match “May 26” | match “error|kernel”

Monitorizar as mensagens de log
[email protected]>  monitor start messages | match fail

Parar de receber mensagens
[email protected]>  monitor stop

NTP

set system ntp server 10.10.10.10
set system ntp boot-server 10.10.10.10

[email protected]# run show ntp associations
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.10.10.10         .INIT.          16 –  395 1024    0    0.000    0.000 4000.00

O * significa que é o host selecionado para sincronização
Archiving

Realizar backups via FTP/SCTP da configuração após commit, o uso de vários destinos permite  que caso o site primário falhe seja usado o 2 site e assim em diante

set system archival configuration transfer-on-commit
set system archival configuration archive-sites “ftp://[email protected]:/archive” password #FAZER!SEMPRE_BACKUP#
set system archival configuration archive-sites “sctp://[email protected]:/archive” password #FAZER!SEMPRE_BACKUP#

[email protected]# commit
[email protected]# run show log messages | match ftp
May 26 16:11:40  R1 fetch: %DAEMON-3: fetch: ftp://[email protected]:*: No route to host

As copias dos ficheiros são guardadas em /var/transfer/config

root[email protected]# run file list /var/transfer/config/ detail

/var/transfer/config/:
total 28
-rw-r—–  1 root  wheel       1101 May 26 16:10 R1_juniper.conf.gz_20140526_151053
-rw-r—–  1 root  wheel       1101 May 26 16:11 R1_juniper.conf.gz_20140526_151127
-rw-r—–  1 root  wheel       1101 May 26 16:12 R1_juniper.conf.gz_20140526_151206
-rw-r—–  1 root  wheel       1101 May 26 16:12 R1_juniper.conf.gz_20140526_151254
-rw-r—–  1 root  wheel       1187 May 26 16:23 R1_juniper.conf.gz_20140526_152319

Para realizar backups regulares da config usar:

Nota: A cada 24 Horas (1440 minutos)

set system archival configuration transfer-interval 1440

SNMP

set snmp location LISDC-Rack122
set snmp contact “ip@cocheno.com”
set snmp community JUNIPER
set snmp trap-options source-address lo0
set snmp trap-group group-SNMP categories link
set snmp trap-group group-SNMP categories routing
set snmp trap-group group-SNMP targets 10.10.10.10
set snmp trap-group group-SNMP targets 10.10.10.11
set snmp trap-group group-SNMP version v2
set snmp community JUNIPER clients 192.168.20.0/24

Efetuar uma snmp walk (permite fazer decimal e ascii)

[email protected]> show snmp mib walk jnxOperatingDescr
jnxOperatingDescr.1.1.0.0 = midplane
jnxOperatingDescr.2.1.0.0 = PEM 0
jnxOperatingDescr.4.1.0.0 = SRX240 PowerSupply fan 1

Referências:

Notas estudo JNCIA-Junos parte 1

Notas estudo JNCIA-Junos parte 2

Notas estudo JNCIA-Junos parte 2

Help

O JunOS tem integrado um livraria que permite por exemplo ver qual o significado do output de uma mensagem de syslog.

[email protected]# help ?
Possible completions:
<[Enter]>            Execute this command
apropos              Find help information about a topic
reference            Reference material
syslog               System log error messages
tip                  Tip for the day
topic                Help for high level topics
|                    Pipe through a command

Separation of configuration edit and activation

validation checks
version control
automated rollback

candidate configuration ->commit->validated configuration->active configuration

configure private – permite que todos os users alterem em simultâneo a active config

configure exclusive – proíbe  outros efetuarem alterações enquanto estiver conectado ao device

show command – mostra a config candidate relativamente a hierarquia onde se está inserido no momento

Set/Edit Command

From Top
[email protected]#set sytem services finger
[email protected]#set sytem services ftp
[email protected]#set sytem services ssh

From Sublevel
[email protected]#edit system services
[edit system services]
[email protected]#set finger
[email protected]#ser ftp
[email protected]#set ssh

Rollback

Apenas modifica a candidate config (não esquecer do commit)

rollback 0 – reset a candidate para a config atualmente ativa+
rollback n – n representa o numero da config ativa
rollback rescue – load o rescue file previamente criado

Fazer commit num determinado período

[email protected]#commit at 02:00:00

run command – permite executar comandos em config mode como se estivesse no Operational mode

Junos Sytem Health
Real-time Performance Monitoring (RPM)
Flow accounting – cflowd

Health monitor
RMON

Junos Sytem Health Diagnostic

System logging
hardware and operating events
Trace logging
protocol operations
snmp

Routing tables

Predefined Routing tables
inet.0 ipv4 unicast
inet.1 multicast forwarding cache
inet.2 usado para MBGP para permitir reverse path forwarding (RPF) checks
inet.3 usado para MPLS path information
inet.4 usado para MSDP routes
inet6.0 Usado para IPv6 unicast
mpls.0 usado para MPLS next hops

Route preference = Administrative Distance (Cisco World)

DIRECT 0
LOCAL 0
STATIC 5
OSPF internal 10
RIP 100
OSPF AS external 150
BGP (both EBGP and IBGP) 170

show route forwarding-table – existe uma entrada default para quando o prefix não existe, notificando a source device com ICMP unreachable

Default Routing Instance

A tabela default unicast de nome master e inclui a inet.0, e poderá tb incluir a inet6.0

show route instance

User-Defined instances

edit routing-instances new-instance instance-type instance-type

Existem diversos tipos de instances:

forwarding – Forwarding instance
l2vpn – Layer 2 VPN routing instance
layer2-control -Layer 2 control protocols
no-forwarding -Nonforwarding instance
virtual-router -Virtual routing instance
virtual-switch -Virtual switch routing instance
vpls -VPLS routing instance
vrf -Virtual routing forwarding instance

show route table new-instace.inet.0

Rotas estáticas

O next-hop pode ser a opção de bit bucket, as opções de discard/reject permite descartar o tráfego.

discard – faz drop silenciosamente (não envia ICMP)
reject – envia ICMP unreachable

set routing-options
static{
route 0.0.0.0/0 next-hop 172.30.25.1;
route 172.28.102.0/24 {
next-hop 10.210.11.190;
no-readdvertise;
resolve;
}
}

O nex-hop deve ser directamente ligado, porque by default o JunOS não faz lookups recursivos. Para permitir é necessário usar o comando resolve

Qualified Next hops

Permite indicar a preferência de uma rota (floating route)

qualified-next-hop x.x.x.x {
preference 7;
}

Config OSPF

Apartir da versão 8.x o Loop0/router-id é advertido automaticamente

set protocols ospf
set area 0 interface ge-0/0/1.{0} Se a unit não for referenciada, o JunOS considera como 0
set area 0 interface ge-0/0/3.0 passive

O JunOS converte a area 0 para decimal 0.0.0.0

show
area 0.0.0.0 {
interface ge-0/0/1.0;
interface ge-0/0/2.0;
interface ge-0/0/3.0 {
passive;
}

show ospf neighbor {detail,extensive}
show route protocol ospf

NETCONF XML Interface

set system load patch terminal

NTP

Para o sistema sincronizar quando faz booting é necessário configurar:

set system ntp boot-server 1.1.1.1

set system time-zone Europe/Lisbon

request system configuration rescue {save | delete} – efetua uma cópia da actual config como rescue config

rollback rescue – este comando apenas altera a candidate config

Operational Mode

show system  command arguments:
alarms: Displays  current system  alarms
boot-messages: Displays the messages seen during the last system boot
connections: Displays the status of local TCP and UDP connections
processes: Displays the system’s process table
statistics : Provides options for viewing various protocol statistics
storage: Displays the status of the file system storage space.

show version detail (inclui as versões das pacotes instalados)

Junos Naming Convention

Package-release-edition

jroute-10.1R1.8-domestic-signed.tgz
release:
• Describes the Junos version
• Includes major and minor release numbers, release type (Release,Beta or Internal), build number and spin number
edition:
• Versions are either domestic-supporting strong encryption, or export-not supporting encryption
• Federal Information Processing Standards (or FIPS) editions provide advanced network security

the letter is an R to
indicate that this is released software. If you are involved in testing prereleased software,
this letter might be a B (for beta-level software) or I (for internal, test, or experimental
versions of software). The release also includes a build and spin number for the Junos
version.
Here, the release is 9.5R1.8, which is  version 9.5, which has been released, build 1,
spin 8.-signed.tgz – Junos software is digitally signed and compressed using Secure Hash Algorithm (SHA-1) and
Message Digest 5 (MD5) checksums.
A package is installed only if the checksum within it matches the hash recorded in its corresponding file. The actual checksum used depends on the software version.

Package :
jinstall usado nas M/Mx/T Series
jinstall-ex usado nos EX Series,
junos-jsr usado J Series
junos-srx usado nos SRX Series

Upgrading JunOS

>reques system software add /var/tmp/jbundle-10.1R1.8-domestic.tgz reboot

Commands Useful in Upgrading Software:
• request system software add /var/tmp/<image-name> upgrades software
• request system storage cleanup  deletes images
• show system storagedisplays compact-flash  device storage  details
• request system software add /var/tmp/<image-name> reboot  upgrades the software

Permite verificar quais os ficheiros a serem eliminados

[email protected]> request system storage ?
Possible completions:
cleanup              Clean up temporary files and rotate logs
[email protected]> request system storage cleanup ?
Possible completions:
<[Enter]>            Execute this command
dry-run              Only list the cleanup candidates, do not remove them

[email protected]> request system storage cleanup dry-run

Referências:

Notas estudo JNCIA-Junos parte 1

Notas estudo JNCIA-Junos parte 1

Estas são as minhas notas de estudo para o exame JNCIA-Junos JN0-102, o material de estudo usado é referido no post Exame JNCIA-Junos JN0-102. Irei dividir  em vários posts para tornar a leitura mais agradável.

Arquitectura

O JunOS é composto por Routing Engine (RE) e Packet Forwarding Engine (PFE).

Control Plane – Routing Engine (RE)

Data Plane – Packet Forwarding Engine (PFE), a Forwarding table é uma cópia da Forwarding table no RE

Routing Engine (RE)—-link interno—-Packet Forwarding Engine (PFE)

O JunOS é composto por módulos diferentes independentes de software, não utilizando a arquitectura monolítica usada por outros Fabricantes.

O exception traffic (processado pelo RE) é rate-limit no link interno protegendo o Control Plane de ataques (DDOS). Este rate-limit não é configuravel, durante a congestão o JunOS dá preferência ao tráfego local e de control destinado ao RE.

Detalhes sobre alguns produtos Juniper:

M Multi-service ate 320 gbps half-duplex
T ate 25 tbps
J Series Services Routers ate 2 Gbps, usado em remote, branch
Mx Series Ethernet Services Routers ate 960 Gbps half-duplex
EX Series switches ate 6.2 Tbps full duplex
SRX Series Services Gateways ate 120 Gbps

CLI Modes

Existem 2 modos: Operational e Configuration Mode

Operational Mode – identificado pelo caracter >

Configuration Mode – identificado pelo caracter #

Diferenças entre Brief e Terse

[email protected]> show interfaces em0 terse
Interface               Admin Link Proto    Local                 Remote
em0                           up    up
em0.0                        up    up   inet     10.0.0.21/24

[email protected]> show interfaces em0 brief
Physical interface: em0, Enabled, Physical link is Up
Description:
Type: Ethernet, Link-level type: Ethernet, MTU: 1514, Clocking: Unspecified,
Speed: 1000mbps
Device flags   : Present Running
Interface flags: SNMP-Traps

Logical interface em0.0
Flags: SNMP-Traps Encapsulation: ENET2
inet  10.0.0.21/24

By default as formas de completar o comando são usando o SPACE ou TAB

Para desativar com base na sessão:

[email protected]>  set cli complete-on-space off

Usando o | (Pipe)

[email protected]# show | display set
set version 10.4R1.9
set system host-name R1

[email protected]# show | match host
host-name R1;

[email protected]# set system ntp server 1.1.1.1

[email protected]# show | compare
[edit system]
+   ntp {
+       server 1.1.1.1;
+   }

[edit]

Movendo-se entre hierarquias:

up xx – sob xx níveis na hierarquia, quando omitido o valor = 1
top – top da hierarquia
exit – sobe um nível na hierarquia
exit configuration-mode – sai do modo de configuração

[email protected]#  wildcard delete interfaces ge-1/*
matched: ge-1/0/0
matched: ge-1/0/1
Delete 2 objects? [yes,no] (no) yes

Comandos de ajuda na configuração:

rename – renomear um comando na configuracao, pex mudar o nome de uma interface

replace pattern – mudar a config com base num padrao pex replace pattern em4 with em5

copy – copia a config de uma interface para outra

Desativar vs Desabilitar

Activate/Deactivate – permite nao ignorar/ignorar um comando na configuração

deactivate interfaces em4
activate interfaces em4

Usando o deactivate :

interfaces {
inactive: em4 {
unit 0 {
family inet {
address 192.168.1.1/24;
}
}
}

Enable/Disable – permite activar/desativar p.ex uma interface

Usando o disable:

[email protected]#set interfaces em4 disable

interfaces {
em4 {
disable;
unit 0 {
family inet {
address 192.168.1.1/24;
}
}
}

annotate – permite adicionar comentários a configuração

annotate interfaces “n mudem interface”

Fazer commit da config

commit – passa a candidate a active

commit check – apenas valida a candidate config

commit confirmed – necessário efetuar um 2 commit num período de 10 minutos (default) caso contrario e feito rollback automaticamente.

Em devices com RE redundantes, é necessário fazer commit synchronize. E possível mudar o comportamento usando o comando set system commit synchronize. Após este comando o commit sincroniza automaticamente os RE

set system max-configurations-on-flash xx – xx representa o numero  máximo de configs guardadas

Guardar Configuração em ficheiro

Guarda a config atual apartir da hierarquia onde se encontra no momento

[email protected]#save path/filename

ftp:// user:[email protected]/path/filename
scp:// [email protected]/path/filename

Loading Config Files

[email protected]# load (replace | merge | override) terminal

replace – usa a tag replace para substituir
merge – adiciona a config atual a nova config
override – carregar uma nova config fazendo overwrite á actual, comando possível no top da hierarquia

Usar o relative para fazer load para a hierarquia onde se está no momento

[email protected]# load (replace | merge | override) (filename | terminal) relative

Parâmetros de accesso

Define o timeout do CLI

[email protected]>  set cli idle-timeout 60
Idle timeout set to 60 minutes

[email protected]>  set cli idle-timeout 0
Idle timeout disabled

Powering on and off JunOS

request system halt – permite um shutdown graceful antes de remover o power. O system power é mantido sendo feito reboot com actividade na consola

Management Netowrk Parameters

O routing estático apenas está disponível quando o routing protocol process (rpd) está Up, caso este pare de funcionar é possível configurar um backup router.

set system backup-router 172.20.101.1 destination 100.100.100.0/24

Juniper Certificações Junho 2013

A pirâmide da Juniper Networks Certification Program (JNCP) divide-se em 4 níveis, sendo que o nível JNCIA, o básico. Este pretende introduzir aos Network Engineers as foundations de como operar/gerir as plataformas Juniper. O JNCP está divido em 3 tracks essencialmente mas existem algumas certificações relacionadas exclusivamente com produtos Juniper.

 

juniper-certification-levels

Há data de hoje, as tracks são as seguintes:

Level Junos Tracks
Enterprise Routing
& Switching
Junos Security Service Provider Routing
& Switching
JNCIE JNCIE-ENT JNCIE-SEC JNCIE-SP
JNCIP JNCIP-ENT JNCIP-SEC JNCIP-SP
JNCIS JNCIS-ENT JNCIS-SEC JNCIS-SP
JNCIA JNCIA-Junos JNCIA-Junos JNCIA-Junos

Foram recentemente introduzidas as Tracks específicas de Suporte:

Level Junos Support Tracks
Enterprise Routing
& Switching Support
Junos Security Support Service Provider Routing
& Switching Support
JNCSP JNCSP-ENT JNCSP-SEC JNCSP-SP

 

O JNCP disponibiliza algumas tracks orientadas exclusivamente ao produto, estas são:

Level Product and Technology Tracks
E-Series Firewall/ VPN IDP Junos Pulse
Access Control
Junos Pulse
Secure Access
QFabric Wireless
LAN
WX Series
JNCIE
JNCIP JNCIP-E
JNCIS JNCIS-E JNCIS-FWV JNCIS-AC JNCIS-SA JNCIS-QF JNCIS-WLAN
JNCIA JNCIA-E JNCIA-IDP JNCIA-WX

Este é sempre o dilema de qualquer Network Engineer independentemente do seu role (Arquitectura/Design/Suporte/..), de “quando renovar a minha certificação”? A semelhança de outros fabricantes é possível renovar de uma forma inteligente, mas fazendo o próximo nível ficando assim com as anteriores válidas. Esta é também a forma de a Juniper (ou qualquer vendor) “empurrar” para o topo da pirâmide. No JNCP a validade de qualquer certificação é de 2 anos.

A grande diferença por exemplo da Cisco neste capitulo é que para renovar por exemplo o JNCIE independentemente da track é necessário renovar o JNCIP da mesma track. Aqui a Cisco usa uma metodologia diferente pelo que para renovar o CCIE em qualquer track basta efetuar por exemplo um segundo CCIE Wrriten/ e ou Lab de outro track, ou efetuar o exame Written especifico de renovação.

Não é possível realizar diretamente o JNCIE, pelo que será necessário adquirir as certificações intermédias até ao topo da pirâmide (JNCIE).

Status possíveis da certificação:

Status Timeframe Eligibilities
Active Two Years
  • Eligible for all benefits
  • Qualify under the Partner certification compliance requirements
Inactive One year following the Active period
  • Can be recertified
  • Are not eligible for benefits
  • Do not qualify under the Partner certification compliance requirements
  • Can still be used to fulfill prerequisite requirements for written exams
  • Cannot be used to fulfill prerequisite requirements for JNCP Lab Exams
Expired At the end of the Inactive period
  • Cannot be recertified
  • Are not eligible for benefits
  • Do not qualify under the Partner certification compliance requirements
  • Cannot be used to fulfill any prerequisite requirements
  • Candidates with an expired certification must start again at the bottom of that certification track

Renovações e respetiva correspondência:

Certification Level Renew by Maintaining Certification Level Renew by Advancing Certification Level
JNCIA Pass the current JNCIA exam in the same certification track Pass the current JNCIS exam in the same certification track
JNCIS Pass the current JNCIS exam in the same certification track Pass the current JNCIP exam in the same certification track
JNCIP Pass the current JNCIP exam in the same certification track Pass the current JNCIE Lab Exam in the same certification track
JNCIP-E Pass the current JNCIS-E exam N/A
JNCIE Pass the current JNCIP exam in the same certification track N/A

Exame JNCIA-Junos JN0-102

Depois de praticamente durante todo o meu percurso profissional em que o mundo Cisco representou largamente 75% nas varias áreas tais como: Routing, Switching, DataCenter e Security chegou o momento de aprender sobre outros Fabricantes tais como Juniper , Vmware,  Checkpoint, F5 e ao que parece Avaya (muito em breve….).

Não sei exatamente ainda qual será o nível de “profundidade” ou Track (se for o caso), alguns dos estudos podem culminar em certificação ou não, mas tudo a seu tempo :)

Hoje realizei o exame JN0-102 da Juniper, a Juniper tem o programa de “Fast track Program” e que para usufruir desde é necessário realizar um teste prático e caso passe com sucesso recebe um voucher com 50% de desconto. Este exame é essencialmente para dar os primeiros passos no CLI, conhecer o sistema operativo JunOS, arquitetura, e como efectuar o setup base de uma plataforma Juniper.

Material de Estudo

Como material de estudo usei os documentos disponibilizados pela Juniper, para realizar o download ou ver o WBT será necessário realizar o registo no Learning Portal, este passo é importante pois o Pre-assessment que irá garantir o voucher será realizado apartir deste.

Os labs realizei no famoso Juniper Olive, basicamente  é um junOS virtualizado/emulado. Não são necessários muitos recursos, sendo possível usar o quemu/virtualbox por exemplo. Basta algumas pesquisas no google para encontrrar algumas das imagens…Mas existe um site onde é possível usar esta versão remotamente sem custos, ver em http://www.sharontools.com/online-lab/

Em suma os passos foram:

Importante:É necessário estar autenticado no Learning Portal para aceder aos conteúdos

Após autenticar, abrir Fast Track Portal, são exibidas 2 colunas, abaixo encontra-se representada a coluna da esquerda. Deverá escolher o elearning Course ou ir diretamente para os recursos de estudo “Review study resources”

junos-ftrack_Nota: Caso contenha um cadeado significa que ainda não se encontra autenticado

1. Assistir ao Networking Fundamentals – WBT
junos-ftrack_nfwbt 2. Leitura Day One: Exploring the Junos CLI

3. Praticar através dos 2 guides disponibilizados no Fast Track Portal

junos-ftrack_stresources
4.Praticar os 2 testes de conhecimento
4.1  Practise Test
4.2   Pre-assessment Oficial (para obter o voucher)
Nota: Neste caso como realizei com sucesso aparece o resultado, mas deverá aparecer um link

junos-ftrack_pse
Também joguei o Junos Genius para mobile devices, óptimo para testar os conhecimentos.

Alguns dos conteúdos são repetitivos, no entanto continua a ser um bom exercício.

Após passar o Pre-assessment Oficial, o voucher será enviado para o email registado no Learning Portal.

De seguida, agendar o Exame final em www.pearsonvue.com e usar o voucher :)


Objectivos Exame inclui:

  • Networking Fundamentals
  • Junos OS Fundamentals
  • User Interfaces
  • Junos Configuration Basics
  • Operational Monitoring and Maintenance
  • Routing Fundamentals
  • Routing Policy and Firewall Filters
**Clique para expandir/colapsar os objectivos em detalhe**

 

Exame

A prova tem a duração de 90 minutos com 70 questões. O minimo para passar é de 65%

Resultado

Finalizado o exame o resultado é provisório uma vez que a Juniper irá analisar se está de acordo com os critérios pretendidos. O resultado final e definitivo é disponibilizado em 3 dias úteis no CertManager

Passei provisoriamente o exame com 80% nada mau :)

Update 04-Jun-2014

Após consultar o CertManager, finalmente o carimbo da Juniper :) , agora next-hop JNCIS-ENT

Juniper-CertManager-status_04062014

Este é o logo oficial

jncia-junos

Referências:

Juniper Fast Track

Juniper Learning Portal

Juniper JNCIA

Juniper Junos Genius

Review 2013 e o que se segue em 2014?

Bem, este Ano foi bastante agitado de mudanças profissionais/pessoais. Em termos profissionais surgiu uma oportunidade de ir trabalhar na Reading (UK) num Operador Mobile e nem pensei muito para aceitar, minto, pensei muito mesmo muito antes de tomar a decisão de sair do meu porto de abrigo, onde estão atracados família e amigos. Este mudança implicou uma grande reviravolta na minha vida e ainda continua. A minha vontade de querer experimentar alem fronteiras tinha e terá 2 objetivos muito claros:

1) Melhorar o Inglês, confesso que línguas nunca foi o meu forte, já dizia o meu querido Pai! e línguas só mesmo as de gato, essas sim são as minhas favoritas :)

2) Adquirir experiências novas, conhecer novas realidades, pessoas e culturas

Resumindo fez 6 meses em Dezembro que cá estou em Reading, cidade meramente habitável! Voltar? Sem duvida um dia….

Devido a estas mudanças não consegui realizar profissionalmente o que tinha estipulado, ficando as certificações JNCIA/CCSA para 2014. O CCIE lab está agendado para Brussels no próximo dia 29 Janeiro, pelo esforço desmesurado e horas a fio digitando comandos em massa vezes e vezes sem conta, alguns deles errados é certo. Estou motivado e convicto para trazer o meu numero mágico CCIExxxxx.

 

2014