Archive for the Network Category

Já é a segunda vez que meu Ubuntu 9.04 resolve colocar o MAC “AA:00:04:00:0A:04″ em minha interface de rede. Aconteceu com minha Realtek RTL8101E/RTL8102E (onboard) e agora com a minha Realtek RTL-8139/8139C/8139C+ Offboard, no meu super PC da SpaceBR que já veio com Linux instalado.

Aparentemente não é algo difícil de acontecer no Ubuntu, por isso colocarei aqui o que fiz para parar de vez com esse problema irritante:

Editei o /etc/rc.local e acrescentei essas linhas:

/sbin/ifconfig eth0 hw ether 00:21:97:9E:13:13
/sbin/ifconfig eth1 hw ether 00:E0:4C:56:0E:D8

Logo em seguida, arrumei o /etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x10ec:0x8136 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:21:97:9e:13:13", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
 
# PCI device 0x10ec:0x8139 (8139too)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:e0:4c:56:0e:d8", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

No próximo reboot, o NetworkManager resolveu me obedecer e colocar o IP que eu havia selecionado (na verdade DHCP), sem ficar criando o maldito “Auto eth0″ com dhcp e aquele MAC maluco.

No meu caso, eu configuro meu roteador Netgear WGR614 v7 para colocar um IP de acordo com o MAC da minha placa. Desta forma, meu Wii (rodando o mplayer_ce 0.75) consegue montar meu compartilhamento exportado via SaMBa (veja como no artigo: Assistindo Filmes no Wii usando o Mplayer) e eu posso assistir animês/ filmes e seriados pela TV da sala, deitado no sofá. Bem melhor do que ficar sentado na frente de um monitor :-)

O problema era que o Ubuntu colocava esse MAC maluco, o Wireless mandava um IP diferente do qual eu havia programado (192.168.1.5 ao invés do 192.168.1.2) e aí o Wii se perdia porque não encontrava o compartilhamento :-/

Agora tudo parece estar funcionando como deveria!

Recentemente precisei colocar um grupo de servidores em alta disponibilidade (High availability) e resolvi usar um recurso conhecido como “bond”.

Fácil de implementar, tudo que você irá precisar são 2 placas de rede, 2 cabos de rede, sendo cada um destes conectado a 1 switch. Dessa forma, um dos switch’s ficando indisponível, conseguiremos manter o Servidor atendendo à demanda.

Vamos as configurações:

Precisamos manter as configurações das 2 interfaces de rede sem IP’s. Isso acontece, porque o bond vai assumir as duas placas de rede ele pode balancear a carga de dados entre elas, a opção default do bond, ou no caso, fazer a soma dos links, ou seja, se tivermos cada interface trabalhando a 1Gb o “throughput” do link será de 2Gb. 8)

Abaixo a conf de cada eth:

/etc/sysconfig/network-scripts/ifcfg-eth0
# Intel Corporation 82571EB Gigabit Ethernet Controller
DEVICE=eth0
BOOTPROTO=none
HWADDR=”seu MAC ADDRESS”
IPV6ADDR=
IPV6PREFIX=
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

/etc/sysconfig/network-scripts/ifcfg-eth1
# Intel Corporation 82571EB Gigabit Ethernet Controller
DEVICE=eth1
BOOTPROTO=none
HWADDR=”seu MAC ADDRESS”
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

Além da configuração das 2 eth’s, precisamos criar um arquivo com as configurações do bond.
Iremos chamá-lo de /etc/sysconfig/network-scripts/ifcfg-bond0 e seu conteúdo será:

#bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
NETWORK=10.10.4.0
NETMASK=255.255.255.0
IPADDR=10.10.4.1
USERCTL=no

Agora, para subirmos a interface de bond, precisamos setar algumas variáveis no arquivo /etc/modprobe.conf

alias bond0 bonding
options bonding max_bonds=1 mode=0 miimon=100

- A primeira linha, irá criar um alias para a interface virtual bond0 baseado nas informações contidas no arquivo /etc/sysconfig/network-scripts/ifcfg-bond0.
- A segunda linha diz max_bonds=1 para termos um bond no servidor e mode=0 onde os links onde os links trabalharão em balanceamento roudrobin. Caso queira aumentar somar o link, esse valor deverá ser alterado.

Caso seu servidor precise mais de um bond (4 ou mais placas de rede), você precisará aumentar o valor da variável max_bonds para o numero de bonds necessários.

Pronto! As configurações estão feitas, apenas reinicie a rede e você acaba de ter um servidor rodando com alta disponibilidade dos links de rede.

Você pode testar o balanceamento olhando o arquivo /proc/net/bonding/bond0. Rode o comando abaixo e tire um dos cabos. Em tempo real ele lhe informará se o link está down ou up de cada interface agregada ao bond

Para mais informações, consulte:
/usr/share/doc/iputils-20020927/README.bonding

Saiu uma nota muito interessante neste final de semana no Dicas-L, uma dica de Rogerio Acquadro:

“Buscando na Internet, encontrei uma ferramenta chamada MySQLDiff (http://www.mysqldiff.org). Trata-se de um software em PHP que faz a comparação entre duas bases de dados (não necessariamente locais) e, como resultado da análise, gera um script SQL. A idéia é que, ao aplicar esse script SQL à base local, esta fique com a estrutura idêntica da base final.

O programa é bem completo e ainda conta com alguns filtros. Por exemplo, o programador pode optar se o MySQLDiff vai trazer no script apenas as alterações estruturais (que era o que eu buscava) ou se também analizará o conteúdo das tabelas, entre outras opções. “

A nota completa encontra-se no Dicas-l, eu só precisava anotar aqui para não esquecer… vivo precisando de coisas como essa :-)

- Introdução:

O netcat é um utilitário que permite escrita e leitura de dados atraves de conexão de rede, usando o proolo TCP/IP. Ele ainda permite especificar a porta que será transmitido, independe de onde será o server (listen) se na origem ou destino.
No caso de substituição do scp, permite usar o processamento que seria p/ encriptar no processo de compactação da
transmissão.

O NetCat (ou nc) é extremamente útil onde os principais meios de troca de arquivos não estão presentes ou suas portas estão filtradas em firewalls e roteadores (ex: scp, rsync, nfs…)

Usando o programa pv se consegue ter uma visualização da taxa de transmissão

- Copia de diretório
- Na maquina destino

nc -vlp port_escuta_detino | tar xzvp

-Na maquina origem

tar cpz ./ | nc ip_destino port_escuta_detino

- Copia de partição

- Na maquina origem

dd if=/dev/hdb5 | gzip -9 | nc -l porta_escuta_origem

- Na maquina destino

nc ip_origem porta_escuta_origem | pv -b > myhdb5partition.img.gz

- Transferindo arquivo

- Na maquina origem

cat backup.iso | nc -l 3333

- Na maquina destino

nc ip_origem porta_escuta_origem > backup.iso

Com status da transferência
- Na maquina origem

cat backup.iso | pv -b | nc -l 3333

- Na maquina destino

nc ip_origem porta_escuta_origem | pv -b > backup.iso

- Exemplo:

[root@squid-xen chroot]# nc -vl 6969 | tar zxv

[root@squid-producao chroot]# tar zcv var/ | nc squid-xen 6969
var/
var/named/
var/named/data/
var/named/slaves/
var/named/named.pid
var/named/localhost.zone
var/named/localhost.rev
var/named/named.cache
var/run/
var/run/named/
var/run/named/named.pid
var/run/dbus/
var/tmp/

Dica de Edson Moreno – jemorenojr AT ig.com.br

O Cacti, segundo seu site oficial, é um front end competo para o RDDTool, que armazena todas as informações necessárias para criar gráficos em uma base de dados MySQL. O front-end é escritp em PHP, e usa o suporte a SNMP para criar gráficos como o MRTG.

Na minha opinião, por ele ser uma LAMP, é bem mais dinâmico do que o MRTG “puro” e a capacidade de ampliar e/ou gerar gráficos personalizados é seu principal diferencial, assim como um bom motivo para implementa-lo em sua rede.

Instalação

A instalação é muito simples, e muito bem documentada pelo site oficial, assim como em sites e blogs espalhados na NET. Não vou perder muito tempo aqui, portanto.

Você irá precisar de um Apache com um PHP com suporte a SNMP e MySQL. Recomendo que use os pacotes de sua distribuição preferida.

Se você resolver compilar os ingredientes, por favor use as dicas contidas nesse post, mas apenas atente-se em ativar a opção “–with-snmp” do PHP senão você sempre irá pegar erros de “SNMP error” ao usar a interface administrativa.

Precisaremos também de pacotes como o RRDTool e o net-snmp, que com certeza devem ter em sua distribuição pronto para ser instalado.

Com tudo instalado e funcionando, descompacte o pacote que você pega no site e coloque em algum lugar acessível pelo apache, por exemplo /var/www/cacti no debian.

Aproveite e edite o include/config.php colocando os dados do seu banco de dados, como IP, username e senha. Não tem um banco ainda? Tudo bem, crie agora mesmo e ja importe a estrutura utilizada pelo cacti:

$ mysql -p -u root
mysql> create database cacti;
mysql> grant all privileges on cacti.* to ‘cacti’@'localhost’ identified by ‘SENHA_SECRETA’;
mysql> source /var/www/cacti/cacti.sql
mysql> quit

Crie um usuário para o cacti e dê permissão nos diretórios “rra” e “log”, ou use o root para fazer um agendamento do crontab:

*/5 * * * * /path/to/php /path/to/cacti/poller.php > /dev/null 2>&1

Esse cara vai ser o que de fato irá colher os dados dos seus hosts.
Bom, agora acesse a interface do cacti e finalize a instalação. O usuário e senha inicial é “admin”, será solicitado para trocar no primeiro login.

Configurando os hosts

Os hosts também precisarão ter o net-snmp para que o servidor colha as estatísticas a cada 5 minutos.

No SuSE você pode arriscar um “yast -i net-snmp” e no Red Hat um “yum install net-snmp“. Os arquivos de configuração ficam em /etc/snmpd.conf e /etc/snmp/snmpd.conf respectivamente.

Depois de configura-los apenas lembre-se de marca-lo para iniciar durante o boot:

# chkconfig snmpd on

Configurando o SNMP

Segue um exemplo de configuração que FUNCIONA:

# First, map the community name (COMMUNITY) into a security name
# sec.name source community
com2sec local localhost public
com2sec mynetwork 200.200.200.0/24 public

# Second, map the security names into group names:
# sec.model sec.name
group EverGroup v2c mynetwork
group EverGroup usm mynetwork

# Third, create a view for us to let the groups have rights to:
# incl/excl subtree mask
view all included .1 80

# Finally, grant the group access
# context sec.model sec.level match read write notif
access EverGroup “” any noauth exact all none none

# Process checks.
proc httpd
proc cron
proc mysqld

# Disk
disk /
disk /var

# Check for loads:
load 12 14 14

Lembre-se de colocar um “mynetwork” correto para sua rede.

Testando/ Debugando

Se você quiser testar antes de ir para a interface gráfica, ou se a mesma não funcionar, experimente algumas dessas dicas:

1-) Ver se o daemon do SNMP está de fato rodando:

# netstat -nlp | grep snm
tcp 0 0 0.0.0.0:199 0.0.0.0:* LISTEN 15297/snmpd
udp 0 0 0.0.0.0:161 0.0.0.0:* 15297/snmpd

2-) Tentar chegar até a máquina a ser monitorada com o nmap:

# nmap -sU -p 161 200.200.200.90

Starting Nmap 4.20 ( http://insecure.org ) at 2007-09-18 09:41 BRT
Interesting ports on host.com.br (200.200.200.90):
PORT STATE SERVICE
161/udp open|filtered snmp

Nmap finished: 1 IP address (1 host up) scanned in 0.325 seconds

3-) Use o snmpwalk para testar conectividade:

# snmpwalk -v 2c -c public 192.168.0.100 system
SNMPv2-MIB::sysDescr.0 = STRING: Linux host 2.6.8-24.23-smp #1 SMP Thu Jun 8 13:31:34 UTC 2006 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (6174082) 17:09:00.82
SNMPv2-MIB::sysContact.0 = STRING: Me
SNMPv2-MIB::sysName.0 = STRING: host
SNMPv2-MIB::sysLocation.0 = STRING: Right here, right now.
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB
SNMPv2-MIB::sysORID.2 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.3 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.4 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.5 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.6 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.7 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.8 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.9 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance

Se tudo até aqui deu certo, você pode adicionar novas máquinas em “Host Templates” -> “ucd/net SNMP Host” usando “public” como community e SNMP Version “2″, porta padrão (161)

Monitorando o MySQL

Caso você goste do Cacti, e você provavelmente vai gostar, você poderá querer monitorar seus servidores com MySQL. Eu usei esse template que você pode baixar daqui e recomendo.

Basicamente, depois de instalado você precisar dar permissão para o usuário do cacti conectar na base e coletar as informações. Isso pode ser feito com o comando:

GRANT PROCESS ON *.* TO ‘cacti’@'200.200.200.0′ IDENTIFIED by ‘SenhaSecreta’;

É isso aí, espero que goste do Cacti e tenha relatórios impressionantes para tomadas de decisões.

Aos viciados em TV, que sempre sonharam em ter “TV a Cabo” gratuita e claro rodando num Linux podem se preparar…usando um programa chamado SopCast, que utiliza uma tecnologia P2P, permite a você assistir gratuitamente tv-online.

Utilizando o protocolo sop:// é possível assistir televisão via internet de uma forma simples. SopCast significa “Streaming over P2P” e tem seu funcionamento parecido com a rede de troca de arquivos Kaaza.

Antes de inciar a instalação tenha certeza de possur o pacote w32codecs instalado para a execução dos vídeos.

Baixe o executável e mova-o para a pasta /usr/local/bin, com os comandos:

$ wget -c http://download.sopcast.com/download/sp-sc.tgz
$ tar zvfx sp-sc.tgz
$ sudo mv sp-sc/sp-sc /usr/local/bin

Pronto, já é possível assistir alguns canais usando o comando “sp-sc ip/porta/canal”.
Faça um teste:
$ sp-sc sop://211.152.34.35:3912/8301 3908 8908 > /dev/null &

Agora que você consegui instalar o programa, seria muito mais fácil utilizá-lo com uma interface mais amigável! Para isso siga os próximos passos:
$ wget -c http://files.myopera.com/leeyee/files/gsopcast_0.2.10-1_i386.deb
$ sudo dpkg -i gsopcast_0.2.10-1_i386.deb

Pronto! Rode o comando gsopcast. Caso prefira, faça um novo arquivo de texto na pasta desejada com o nome gsopcast.desktop, e cole o texto:

[Desktop Entry]
Name=gSopCast
Comment=P2P TV player
Exec=gsopcast
Icon=/home/leeyee/Software/Wallpaper&Themes/icons/sopcast-log.png
Terminal=false
Type=Application
Categories=Application;Network;

Depois de iniciá-lo, é apresentada uma tela que dispensa explicações pelo grau de simplicidade. 8)
Na aba “config” você poderá configurar aspectos como o player de vídeo, lista de canais, etc.

Para quem possui outra distribuição, terá que compilar o programa. 8(

Faça o download do código-fonte em http://code.google.com/p/gsopcast/.
$ tar jvfx gsopcast-*.tar.bz2
$ cd gsopcast-*
$ make
$ sudo make install

Baixe o código o qSopCast (http://code.google.com/p/qsopcast/) com:
$ wget -c http://qsopcast.googlecode.com/files/qsopcast-0.3.1.tar.bz2
$ tar jvfx qsopcast-0.3.1.tar.bz2
$ cd qsopcast
$ qmake
$ make
$ sudo make install

Pronto, agora é só curtir!