contato@openx.com.br | +55-11-3090-0744

A Open X estará presente na  VI Semana da Infraestrutura da Internet no Brasil, onde faremos 2 apresentações durante o IX Forum 10:

Monitoramento em Tempo real com Graphite e Grafana – No dia 06/12/2016 às 16h40 e BGP – Boas Práticas para Conexão IXP – Na manhã do dia 07/12/2016.

Faça sua Inscrição!

Compramos um servidor Dell R520 para ser um storage usando FreeNAS. Por algum motivo estranho, o servidor não reconhece a imagem gravada no pendrive como um “disco rígido”. Com isto, o FreeBSD não é capaz de bootar.

Após vários testes, resolvemos instalar o FreeBSD 10 num pendrive para certificar que ele é capaz de dar boot normalmente. Como deu certo, usamos esta instalação do FreeBSD para criar uma nova tabela de partições e copiamos cada partição individualmente para o pendrive. Deu tudo certo, FreeNAS rodando perfeitamente.

Como este procedimento se mostrou capaz de fazer a BIOS reconhecer o pednrive como HD, basta apenas trocar a MBR do pendrive para que o servidor seja capaz de dar boot normalmente.

 

O MBR/tabela de partições da imagem padrão do FreeNAS é a seguinte:

16 heads, 63 sectors/track, 297 cylinders, total 299856 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x90909090

         Device Boot      Start         End      Blocks   Id  System
img-original.img1   *          63     1930319      965128+  a5  FreeBSD
img-original.img2         1930383     3860639      965128+  a5  FreeBSD
img-original.img3         3860640     3863663        1512   a5  FreeBSD
img-original.img4         3863664     3904991       20664   a5  FreeBSD

A versão que o servidor Dell reconhece como HD ficou assim:

255 heads, 63 sectors/track, 18 cylinders, total 299856 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x90909090

     Device Boot      Start         End      Blocks   Id  System
img-ok.img1  *           63     1930319      965128+  a5  FreeBSD
img-ok.img2         1930383     3860639      965128+  a5  FreeBSD
img-ok.img3         3860640     3863663        1512   a5  FreeBSD
img-ok.img4         3863664     3904991       20664   a5  FreeBSD

Para resolver este problema, temos 2 opções. A mais fácil é plugar o pendrive num computador com Linux ou mesmo FreeBSD e apenas alterar a MBR do pendrive pela versão corrigida (melhor opção se você gravou a a imagem no pendrive sem usar o CD de instalação). Se é o seu caso, use o seguinte arquivo:

Download
A outra envolve acessar a shell durante a instalacao e é ai que chateação começa. A shell de instalação do FreeNAS é muito limitada e até o ifconfig não funciona. Precisamos achar qual é o disposivo que representa o pendrive. No meu caso, é o da0 (usei o comando dmesg | grep ˆda.*device).

A sequencia dos comandos que usei para substituir a MBR do pendrive foi a seguinte:

dmesg | grep ˆda.*device # para descobrir qual é o device, no meu caso da0
mount /dev/da0s1a /mnt
chroot /mnt
ifconfig bge0 x.x.x.x/24 up # substitua x.x.x.x/24 pelo IP do seu servidor
route add -net 0.0.0.0/0 y.y.y.y # substitua y.y.y.y pelo IP do seu Roteador
echo 8.8.8.8 > /etc/resolv.conf
curl  www.openx.com.br/?dl=312 > mbr.bin
exit # para sair do chroot
cd /mnt
sysctl kern.geom.debugflags=0x10
dd if= mbr.bin of=/dev/da0 <i># substitua da0 pelo dispositivo do seu pendrive</i>
rm mbr.bin
cd /
umount /mnt
exit

Agora você pode rebootar o servidor e ele deverá ser capaz de reconhecer o pendrive como um HD e com isso subir o FreeNAS normalmente (ufa).

Este procedimento também funciona com um disco na vFlash da iDRAC7 enterprise.

Frequentemente vemos reclamações de perdas de pacotes para os serviços do Google. Em contato com o NOC deles, tivemos a confirmação de que se trata de limitação de ICMP nos equipamentos deles.

Hi Renato,

Thank you for contacting Google.

Google implements ICMP rate limiting on most of our network devices.
 Please note you may also see similar packet loss in traceroute output.  As
such, it is not uncommon to see dropped packets in ping or traceroute
results.

Please let us know if any of your users are actually experiencing any
issues with Google Services (eg. YouTube, Google maps, etc.) and if yes, we
will be able to assist you further.

Best regards,

Fulano

Fulano da Silva | Network Operations Center (AS15169) | nst@google.com |
+1-650-253-1500
(US), +353-1-543-1500 (EU)Google Ireland Ltd., Gordon House, Barrow St.,
Dublin 4, IrelandRegistered in Dublin, Ireland –  Registration # 99999″

Moral da história: ping e traceroute são ferramentas para auxiliar o diagóstico, mas não confie cegamente nos resultados. Tenha certeza que o serviço está realmente lento ao invés de achar que está lento porque você verifica perda nos pings.

O site da Open X já está disponível em dual-stack no endereço www.openx.com.br e em IPv6-only em www6.openx.com.br. Em caso de dificuldade de acesso, nos avise! Precisamos deixar a Internet pronta para o crescimento.

A falta da descrição das interfaces em roteadores Linux foi algo que sempre me incomodou. Ter que editar cada gráfico no cacti para que o gráfico tivesse o nome correto era trabalhoso.

Um dia desses esbarrei num script que extende o snmpd para que ele passe a ter o OID ifAlias e assim termos o nome das interfaces disponíveis para qualquer ferramenta que utilize o protocolo SNMP. O caminho para o script deverá ser /usr/local/lib/ifAlias. O script tinha alguns bugs, e após as correções e alterações para ficar compatível com o RedHat/CentOS, ficou assim:

#!/bin/bash
# ifAlias for Debian GNU/Linux
# (c) 2010-2013, Tom Laermans, www.observium.org
# Small fixes/Red Hat version by: Renato Ornelas <renato_at_openx.com.br>
#
BASE='.1.3.6.1.2.1.31.1.1.1.18'

REQ=$2
ID=$(echo ${REQ##${BASE}.} |cut -d: -f1)

if [ "X${REQ}" = "X${BASE}" ]; then
  ID=0
fi

if [ "$1" = "-n" ]; then
  # getnext
  INDEX=0

  IFS="
"

  for INT in $(ip l|grep mtu)
  do
    PREVINDEX=$INDEX

    INDEX=$(echo $INT|cut -d: -f1)
    if [ $PREVINDEX == $ID ];
    then
      INTERFACE=$(echo $INT| cut -d ":" -f 2 | sed 's/ //g' | cut -d@ -f1)
      ID=$INDEX
      break
    fi
  done
else
  # get
  INTERFACE=$((ip l | grep "^${ID}: " | cut -d " " -f 2 | sed 's/://g' | cut -d@ -f1) 2> /dev/null)
fi

if [ "X$ID" = "X" ] || [ "X$ID" = "X0" ] || [ "X$ID" = "X-1" ]; then
  exit 0
fi

if [ "$INTERFACE" ]; then
  INTERFACE=$((ip l | grep "^${ID}: " | cut -d " " -f 2 | sed 's/://g' | cut -d@ -f1) 2> /dev/null)
fi

echo ${BASE}.${ID}
if [ "X${INTERFACE}" = "X" ]; then
  echo noSuchName
  exit 0
fi

echo "string"
echo $(grep "^# $INTERFACE:" /etc/sysconfig/network-scripts/ifcfg-$INTERFACE|sed s/^# $INTERFACE: //)
exit 0

Precimos instruir o snmpd a usar este novo script para caminhar pela arvore ifAlias. Basta adicionar a seguinte linha ao final do arquivo /etc/snmp/snmpd.conf:

 pass .1.3.6.1.2.1.31.1.1.1.18 /usr/local/lib/ifAlias

Para usar, precisaremos de adicionar a descrição da interface no arquivo de configuração de cada interface /etc/sysconfig/network/ifcfg-XXXX, usando a sintaxe # INTERFACE: DESCRIÇÃO, como no exemplo abaixo (/etc/sysconfig/network/ifcfg-eth0):

# eth0: DMZ
BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
MTU=''
NAME='Dell NetXtreme BCM5754 Gigabit Ethernet PCI Express'
STARTMODE='auto'
USERCONTROL='no'

IPADDR="XX.XX.XX.XX/24"

Agora basta recarregar a query no cacti (bolinha verde) para ver as descrições das interfaces:

ifAlias Suse

Veja os posts com as verões compatíveis com: debian/ubuntu e SuSE .

Ideia Original: http://www.observium.org/wiki/IfAlias_descriptions_on_Debian/Ubuntu

A falta da descrição das interfaces em roteadores Linux foi algo que sempre me incomodou. Ter que editar cada gráfico no cacti para que o gráfico tivesse o nome correto era trabalhoso.

Um dia desses esbarrei num script que extende o snmpd para que ele passe a ter o OID ifAlias e assim termos o nome das interfaces disponíveis para qualquer ferramenta que utilize o protocolo SNMP. O caminho para o script deverá ser /usr/local/lib/ifAlias. O script tinha alguns bugs, e após as correções e alterações para ficar compatível com o SuSE, ficou assim:

#!/bin/bash
# ifAlias for Debian GNU/Linux
# (c) 2010-2013, Tom Laermans, www.observium.org
# Small fixes/SuSE version by: Renato Ornelas <renato_at_openx.com.br>
#
BASE='.1.3.6.1.2.1.31.1.1.1.18'

REQ=$2
ID=$(echo ${REQ##${BASE}.} |cut -d: -f1)

if [ "X${REQ}" = "X${BASE}" ]; then
  ID=0
fi

if [ "$1" = "-n" ]; then
  # getnext
  INDEX=0

  IFS="
"

  for INT in $(ip l|grep mtu)
  do
    PREVINDEX=$INDEX

    INDEX=$(echo $INT|cut -d: -f1)
    if [ $PREVINDEX == $ID ];
    then
      INTERFACE=$(echo $INT| cut -d ":" -f 2 | sed 's/ //g' | cut -d@ -f1)
      ID=$INDEX
      break
    fi
  done
else
  # get
  INTERFACE=$((ip l | grep "^${ID}: " | cut -d " " -f 2 | sed 's/://g' | cut -d@ -f1) 2> /dev/null)
fi

if [ "X$ID" = "X" ] || [ "X$ID" = "X0" ] || [ "X$ID" = "X-1" ]; then
  exit 0
fi

if [ "$INTERFACE" ]; then
  INTERFACE=$((ip l | grep "^${ID}: " | cut -d " " -f 2 | sed 's/://g' | cut -d@ -f1) 2> /dev/null)
fi

echo ${BASE}.${ID}
if [ "X${INTERFACE}" = "X" ]; then
  echo noSuchName
  exit 0
fi

echo "string"
echo $(grep "^# $INTERFACE:" /etc/sysconfig/network/ifcfg-$INTERFACE|sed s/^\#\ $INTERFACE:\ //)
exit 0

Precimos instruir o snmpd a usar este novo script para caminhar pela arvore ifAlias. Basta adicionar a seguinte linha ao final do arquivo /etc/snmp/snmpd.conf:

 pass .1.3.6.1.2.1.31.1.1.1.18 /usr/local/lib/ifAlias

Para usar, precisaremos de adicionar a descrição da interface no arquivo de configuração de cada interface /etc/sysconfig/network/ifcfg-XXXX, usando a sintaxe # INTERFACE: DESCRIÇÃO, como no exemplo abaixo (/etc/sysconfig/network/ifcfg-eth0):

# eth0: DMZ
BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
MTU=''
NAME='Dell NetXtreme BCM5754 Gigabit Ethernet PCI Express'
STARTMODE='auto'
USERCONTROL='no'

IPADDR="XX.XX.XX.XX/24"

Agora basta recarregar a query no cacti (bolinha verde) para ver as descrições das interfaces:

ifAlias Suse

Veja os posts com as verões compatíveis com: debian/ubuntu e RedHat/CentOS.

 

Ideia Original: http://www.observium.org/wiki/IfAlias_descriptions_on_Debian/Ubuntu

A falta da descrição das interfaces em roteadores Linux foi algo que sempre me incomodou. Ter que editar cada gráfico no cacti para que o gráfico tivesse o nome correto era trabalhoso.

Um dia desses esbarrei num script que extende o snmpd para que ele passe a ter o OID ifAlias e assim termos o nome das interfaces disponíveis para qualquer ferramenta que utilize o protocolo SNMP. O caminho para o script deverá ser /usr/local/lib/ifAlias. O script tinha alguns bugs, e após as correções ficou assim:

#!/bin/bash
# ifAlias for Debian GNU/Linux
# (c) 2010-2013, Tom Laermans, www.observium.org
# Small fixes by: Renato Ornelas <renato_at_openx.com.br>
#
BASE='.1.3.6.1.2.1.31.1.1.1.18'

REQ=$2
ID=$(echo ${REQ##${BASE}.} |cut -d: -f1)

if [ "X${REQ}" = "X${BASE}" ]; then
  ID=0
fi

if [ "$1" = "-n" ]; then
  # getnext
  INDEX=0

  IFS="
"

  for INT in $(ip l|grep mtu)
  do
    PREVINDEX=$INDEX

    INDEX=$(echo $INT|cut -d: -f1)
    if [ $PREVINDEX == $ID ];
    then
      INTERFACE=$(echo $INT| cut -d ":" -f 2 | sed 's/ //g' | cut -d@ -f1)
      ID=$INDEX
      break
    fi
  done
else
  # get
  INTERFACE=$((ip l | grep "^${ID}: " | cut -d " " -f 2 | sed 's/://g' | cut -d@ -f1) 2> /dev/null)
fi

if [ "X$ID" = "X" ] || [ "X$ID" = "X0" ] || [ "X$ID" = "X-1" ]; then
  exit 0
fi

if [ "$INTERFACE" ]; then
  INTERFACE=$((ip l | grep "^${ID}: " | cut -d " " -f 2 | sed 's/://g' | cut -d@ -f1) 2> /dev/null)
fi

echo ${BASE}.${ID}
if [ "X${INTERFACE}" = "X" ]; then
  echo noSuchName
  exit 0
fi

echo "string"
echo $(grep "^# $INTERFACE:" /etc/network/interfaces|sed s/^\#\ $INTERFACE:\ //)
exit 0

Precimos instruir o snmpd a usar este novo script para caminhar pela arvore ifAlias. Basta adicionar a seguinte linha ao final do arquivo /etc/snmp/snmpd.conf:

 pass .1.3.6.1.2.1.31.1.1.1.18 /usr/local/lib/ifAlias

Para usar, precisaremos de adicionar a descrição da interface no arquivo /etc/network/interfaces, usando a sintaxe # INTERFACE: DESCRIÇÃO, como no exemplo abaixo:

# vlan10: DMZ
auto vlan10
iface vlan10 inet static
address XX.XX.XX.XX
netmask 255.255.255.0
vlan_raw_device eth0

# vlan2: LAN
auto vlan2
iface vlan2 inet static
address XX.XX.XX.XX
netmask 255.255.255.192
vlan_raw_device eth0

Agora basta recarregar a query no cacti (bolinha verde) para ver as descrições das interfaces:

Cacti ifalias

Veja os posts com as verões compatíveis com: SuSE  e Red Hat/CentOS.

Ideia Original: http://www.observium.org/wiki/IfAlias_descriptions_on_Debian/Ubuntu

Se você tem clientes reclamando de problemas para atingir o DNS do Google (8.8.8.8), verifique se você não está recebendo este anúncio de alguém que não é o Google.

Melhor ainda é ter um resolver decente dentro da sua rede e que seus clientes usem ele. Assim você garante acesso mais rápido aos recursos do Google e da Akamai (ambos usam a resolução de nomes para indicar o cluster mais próximo de você).

BGP routing table entry for 8.8.8.8/32
Paths: (2 available, best #2, table Default-IP-Routing-Table)
Not advertised to any peer

26615 262859
200.143.173.1 from 200.143.173.1 (200.143.173.2)
Origin IGP, localpref 100, valid, internal
Community: 16397:199
Originator: 200.143.173.2, Cluster list: 0.0.11.1
Last update: Fri Jun 7 16:09:15 2013

26615 262859
200.143.173.2 from 200.143.173.2 (200.143.173.2)
Origin IGP, localpref 100, valid, internal, best
Community: 16397:199
Last update: Fri Jun 7 16:09:15 2013

Fonte: http://eng.registro.br/pipermail/caiu/2013-June/023361.html

Nunca gostei muito do visual padrão dos gráficos do cacti, principalmente quando você está olhando uma interface que vai pra cliente (muito upload e pouco download). A alguns anos, vi uma dica no forum do cacti onde o layout padrão (uma area verde para download e uma linha azul para o upload) foi alterado para duas áreas semitransparentes e duas linhas para dar o destaque ao consumo. Na figura abaixo temos um gráfico padrão e um gráfico feito após as mudanças:

0 grafico original

Siga o passo-a-passo para dar uma incrementada no visual do seus gráficos.

1) Dentro da console do cacti, selecione a opção “Graph Templates” e depois um dos templates de tráfego para editar (no nosso exemplo, “Interface – Traffic (bits/sec)”)

1 graph template

2) O itens padrão do template estão listados abaixo. Vamos adicionar 2 novos itens e alterar os itens #1 e #5 (para mudar a transparência e para tirar o nome da legenda). Para adicionar os novos itens, clique no link “Add”

2 itens grafico inicial

3) Para a linha de “Download”, vamos alterar o tipo do Data Source, a Cor, o tipo do item gráfico para LINE2 (se quiser uma linha mais fina, escolha LINE1), a função CDEF para “Turn Bytes into Bits”, e por fim o Texto para “IN ” (o espaço é para garantir o perfeito alinhamento das legendas). O resultado final deve ser como o exemplo à seguir:

3 linha in final

4) Para a linha de “Upload”, a diferença será no tipo do Data Source, na cor e no texto. Veja abaixo como deverá ficar:

4 linha out final

5) Precisamos editar os itens originais para dar o efeito da transparência. No item de “Download”, altere a opacidade para 10% e remova o texto.

5 area in final

6) Para o item de “Upload” original, além da opacidade e de remover o texto, precisamos alterar o tipo do item gráfico para AREA

6 area out final

7) Use as setas, para reordenar os itens até que eles fiquem como na figura abaixo:

7 itens grafico final

8) O gráfico finalizado terá a seguinte aparência:

8 grafico final

Ideia original: http://forums.cacti.net/viewtopic.php?t=25415

No ExtemeXOS o controle de banda é realizado atráves de uma entidade conhecida como meter. Eu crio 2 meters para cada VLAN a ser limitada e todos os meus meters começam com m-  e terminando com a direção (-up ou -down)

create meter m-TESTEVLAN-up
create meter m-TESTEVLAN-down

No próximo passo é necessário definir a banda para cada meter, no exemplo 30 Mbits:

configure meter m-TESTEVLAN-down committed-rate 30720 Kbps max-burst-size 30720 Kb out-actions drop
configure meter m-TESTEVLAN-up committed-rate 30720 Kbps max-burst-size 30720 Kb out-actions drop

Depois é necessário criar uma policy que será usada para associar o meter à VLAN. Como no meter, começamos com m- e usamos o sufixo -up e -down, para o policy usaremos o prefixo p-. No exemplo vamos criar a policy para controlar o download:

edit policy p-TESTEVLAN-down

Vai abrir o editor (que aceita comandos do vi, ou seja, voce precisa digitar ESC+:q para sair salvando)

entry rule1 {
        if match all {
                destination-address 0.0.0.0/0;
        }
        then
        {
                meter m-TESTEVLAN-down;
        }
}

Crie a policy equivalente para controlar o up (repita o passo anterior, trocando down por up).

Por fim, associamos esta policy à VLAN:

configure access-list p-TESTEVLAN-down vlan "TESTEVLAN" egress
configure access-list p-TESTEVLAN-up vlan "TESTEVLAN" ingress

Após esta configuração, para alterar a velocidade basta configurar o meter associado.

ATENÇÃO
Devido a um bug do XOS, ao limitar o trafego sainte (egress) você não consegue mais monitorar o tráfego através de SNMP