Você está na página 1de 14

18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux

(http://opentech.etc.br/)

 (https://www.facebook.com/opentech.etc) 
(https://twitter.com/luiz_peterli) 

(https://plus.google.com/+PeterliJunior) 

(https://www.linkedin.com/in/luiz-peterli-81405576/) 
(https://www. ickr.com/photos/juniorpeterli) 
(https://www.instagram.com/luizpeterli)

FAZENDO DUAS
OU MAIS PLACAS
DE REDE
TRABALHAREM
COMO APENAS
UMA NO LINUX
HOME (HTTP://OPENTECH.ETC.BR/)
/ ARTIGOS
(HTTP://OPENTECH.ETC.BR/CATEGORY/ARTIGOS/)
/ FAZENDO DUAS OU...

Pesquisar …

POSTS RECENTES

8 Bloqueando acessos a redes sociais pelo IPTables


(http://opentech.etc.br/bloqueando-acessos-redes-sociais-pelo-
iptables/)

8 Aprendendo as funcionalidades avançadas do editor VIM


(http://opentech.etc.br/aprendendo-as-funcionalidades-avancadas-
do-editor-vim/)

8 Aumentando a segurança em um Firewall Linux com IPTables


(http://opentech.etc.br/aumentando-a-seguranca-em-um- rewall-
linux-com-iptables/)

8 Como criar um servidor tipo Net ix com o Plex Media Server –


Parte 2 (http://opentech.etc.br/como-criar-um-servidor-tipo-net ix-
com-o-plex-media-server-parte-2/)

8 Script para inserir ou remover uma máquina Windows do Proxy


(http://opentech.etc.br/script-para-inserir-ou-remover-uma-maquina-
windows-do-proxy/)

COMENTÁRIOS

8 Luiz Peterli (https://github.com/LuizPeterli) em Aprendendo as


funcionalidades avançadas do editor VIM
(http://opentech.etc.br/aprendendo-as-funcionalidades-avancadas-
do-editor-vim/#comment-3)

8 Paulo Dias (http://www.prminformatica.com.br) em Aprendendo as


funcionalidades avançadas do editor VIM

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 1/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux
(http://opentech.etc.br/aprendendo-as-funcionalidades-avancadas-
do-editor-vim/#comment-2)

ARQUIVOS

8 julho 2017 (http://opentech.etc.br/2017/07/)


8 junho 2017 (http://opentech.etc.br/2017/06/)
8 Maio 2017 (http://opentech.etc.br/2017/05/)

CATEGORIAS

8 Artigos (http://opentech.etc.br/category/artigos/)
8 Dicas (http://opentech.etc.br/category/dicas/)
8 Nerd Tips (http://opentech.etc.br/category/nerd-tips/)

FAZENDO DUAS OU MAIS PLACAS DE REDE


TRABALHAREM COMO APENAS UMA NO LINUX

JUNHO 13, 2017 / BY LUIZ PETERLI /


ARTIGOS (HTTP://OPENTECH.ETC.BR/CATEGORY/ARTIGOS/)

0
FLARES
0 0

VEJA COMO FAZER DUAS OU MAIS


PLACAS DE REDE TRABALHAREM
COMO SE FOSSEM APENAS UMA NOS
SISTEMAS LINUX, E COM ISSO AUMENTE
A PROTEÇÃO CONTRA FALHAS E A
RESILIÊNCIA DE TODA A SUA
ESTRUTURA DE REDE.

A algum tempo precisei desenvolver alguns projetos como: um


servidor multimédia, um Gateway para várias redes, e um
servidor de banco de dados, em todos os projetos a alta
disponibilidade dos serviços abrigados por esses servidores era
crucial, logo precisei implementar a tecnologia Bonding para
alcançar mais robustez, con abilidade e resiliência nos projetos.

O recurso de Bonding nada mais é do que unir duas ou mais


placas de redes físicas em uma única placa de rede logica, com
isso caso uma das placas falhe a outra assume ou também para
fazer o balanceamento de carga de todo o tráfego que o servidor
recebe e envia.

Muitos sites e artigos por ai falam de como fazer o Bond entre as


placas de rede, muitos deles até mostram como automatizar o
procedimento, porém poucos falam dos tipos de Bonding e muito
menos das diferenças entre eles. Então, antes de entrarmos em

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 2/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux

tal assunto, nada mais justo do que “falar um pouco mais do


mesmo” e mostrarmos como fazer um Bonding funcional entre
(no nosso caso do exemplo duas) placas de redes.

RECONHECENDO AS PLACAS DE REDE E


SEUS ATRIBUTOS:
A m de identi carmos e reconhecermos os recursos das nossas
interfaces de rede (todas físicas) podemos usar uma séries de
comandos para isso, tais como:

Listando nossas interfaces de rede presentes no sistema:

$lspci |grep Ethernet

Identi cando o MAC Address das interfaces de rede:

#ifcon g |grep HW

Identi cando a velocidade de transferência das interfaces de


rede:

#sudo ethtool (nome_da_interface_de_rede) |grep Speed

É importante dizer que a segunda placa de rede dessa máquina


aparece com uma velocidade de transferência de apenas 10MB,
isso ocorre por que ela está com o cabo de rede desligado. Em
todos os Linux que eu já efetuei esse procedimento, uma vez que
o cabo de rede esteja desligado da placa de rede a velocidade
mostrada pela ferramenta ethtool sempre cou em 10MB.

Pra provar isso eu liguei as duas placas de rede no meu Switch e


agora elas mostram ambas a taxa de transferência de 100Mb por
segundo.

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 3/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux

Se por acaso você precise ter a certeza de que o cabo de rede está
ligado na placa, além de comprovar a velocidade de negociação
entre a sua placa e a outra ponta (que deve ser um Switch) você
pode executar o seguinte comando:

#sudo mii-tool (nome_da_interface_de_rede)

Caso esse utilitário não existe na sua distro você pode instala-la
com o seguinte comando:

#apt–get install mii-tool (em distros like Debian/Ubuntu)

Para con rmar a e ciência do comando, troquei o cabo de rede da


placa de cima pela de baixo e a saída foi igual a do comando a cima

E assim já temos todas as informações que precisamos para a


con guração do Bonding

INSTALANDO AS DEPENDÊNCIAS PARA


CONFIGURAÇÃO E TESTES DO BOND
Para começarmos com a con guração do Bonding devemos
instalar alguns pacotes que o Linux precisará tanto para a
con guração quanto para testes futuros da nova interface que ira
ser gerada com o procedimento:

#apt-get install ifenslave ethtool speedometer tcptrack

Antes de mais nada precisamos fazer um backup do arquivo de


con guração das interfaces de rede no Linux, para isso nas distros
baseadas em Debian, você pode usar o seguinte comando:

#cp /etc/network/interfaces cp /etc/network/BKP.interfaces

Assim criaremos o arquivo de backup de nome BKP.interfaces

CONFIGURANDO O BONDING
http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 4/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux

Em seguida devemos carregar o módulo Bonding no kernel Linux.


como esse módulo já vem integrado nos kernels a cima da versão
2.4, podemos carregá-los com o comando a baixo:

#sudo modprobe bonding

Para carregar o módulo do bonding automaticamente durante a


inicialização do sistema podemos inserir um pequeno parâmetro
no seguinte arquivo do sistema:

#sudo vim /etc/modules

E dentro desse arquivo de sistema colocamos o nome do módulo


a ser carregado pelo kernel durante a inicialização do sistema, no
caso o “Bonding”:

Após salvarmos e fecharmos o arquivo de carregamento de


módulos do sistema, partimos para a edição do arquivo de
interfaces de rede do sistema, para isso abra com o seu editor de
textos preferido o seguinte arquivo:

#sudo vim /etc/network/interfaces

Se existir alguma informação dentro desse arquivo você pode


comentá-la colocando um caractere “#” na frente de cada linha do
arquivo (isso fará que o sistema não leia essa linha”, ou
simplesmente podemos apagar todo conteúdo do arquivo e
escrevê-lo do zero (como eu z no exemplo a baixo):

PS: No caso desse exemplo como se trata de um servidor vamos


setar con gurações de IP Fixos para ele.

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 5/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux

Você pode fazer o download do arquivo interfaces já con gurado


para o bonding igual ao do exemplo a cima clicando aqui
(https://github.com/LuizPeterli/Bonding/blob/master/interfaces)

EXPLICANDO MELHOR O QUE QUER


DIZER CADA OPÇÃO DE
CONFIGURAÇÃO DO ARQUIVO
INTERFACES:

auto lo ————- Auto con guração da interface interna do


sistema para loopabck
iface lo inet loopback —- Auto con guração da interface interna
do sistema para loopabck

auto enp1s0 ———— Auto con guração da primeira interface de


rede do sistema
iface enp1s0 inet manual — Diz pro sistema que os parâmetros de
con guração de rede serão manuais
bond-master bond0 ——– Diz para o sistema a qual bond essa
placa faz parte (caso existam mais de um)
bond-primary enp1s0 —— Diz pro sistema que essa interface é a
primária no bond

auto enp2s6 ————— Auto con guração da segunda interface de


rede do sistema
iface enp2s6 inet manual — Diz pro sistema que os parâmetros de
con guração de rede serão manuais
bond-master bond0 ——– Diz para o sistema a qual bond essa
placa faz parte (caso existam mais de um)

auto bond0 ————— Auto con guração da interface bond do


sistema
iface bond0 inet static ——— Diz pro sistema que os parâmetros
de con guração de rede serão manuais

mtu 1500 ———— Informa o tamanho do MTU (o padrão é 1500),


para saber mais veja sobre MTU aqui
address ———— Endereço de rede que o bond será setado ao ser

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 6/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux

iniciado
netmask ———— Máscara de sub-rede da conexão
network ———— Faixa de rede a qual o sua máquina irá fazer
parte
broadcast ———— Endereço de comunicação broadcast da rede
gateway ————- Endereço pelo qual a internet chega através da
rede
dns-nameservers — Número dos DNS(s) da sua rede para
resolução de nomes.

bond-miimon 100 ———– Determina em milissegundos quantas


vezes a placa é testada mediante a uma possível falha
bond-downdelay 200 —— Determina em milissegundos o quanto
aguardar para desabilitar uma placa com falha
bond-updelay —————- Determina em milissegundos o quanto
aguardar até reativar uma placa que se recuperou de falha
bond-mode xxxxx ———– Veja mais informações a baixo
bond-slaves none ———- Informa ao sistema qual é a interface
primaria do bonding (no nosso caso já zemos isso no inicio do
arquivo)

TIPOS DE BONDING, COMO, QUAL E


QUANDO ESCOLHER
Nas explicações das con gurações do bond deixamos o item
“bond-mode” para explicar no nal por um simples motivo,
escolher qual o tipo de bonding usar requer uma certa perícia,
pois se con gurarmos um modo que a nossa rede física não
suporte, além de podermos car sem conexão, podemos perder o
load balance da conexão e carmos sem placa de backup

Os diversos modos de bonding podem ser escolhos por seus


nomes ou por seus números, em qualquer um dos casos devemos
preenche-lo no campo “bond-mode” no arquivo interfaces. Veja
aqui os exemplos:

Mode 0 – balance-rr

Round-robin policy: Quando não con gurado essa é a política


padrão, transmite pacotes em ordem sequencial para a primeira
placa disponível. Este modo fornece balanceamento de carga e
tolerância a falhas.

Modo 1 – active-backup

Active-backup policy: Apenas uma placa no bonding ca ativa. A


segunda placa entra em atividade apenas em caso da primeira
falhar. O endereço MAC do bond ca visível apenas para uma das
placas (a ativa) para evitar confusão entre os adaptadores. Este
modo fornece apenas tolerância a falhas e não a balanceamento.

Mode 2 – balance-xor

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 7/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux

XOR policy: transmissão com base em comunicação do mac de


uma determinada placa do bond com o mac do destinatário. Este
modo fornece balanceamento de carga e tolerância a falhas.

Mode 3 – broadcast

Broadcast policy: transmite tudo em todas as interfaces de redes.


Este modo fornece tolerância a falhas.

Mode 4 – 802.3ad

IEEE 802.3ad Dynamic link aggregation: Cria grupos de


agregação que compartilham as mesmas con gurações de
velocidade duplex. Utiliza todas as placas no agregador ativo de
acordo com a especi cação 802.3ad.

Pré-requisitos:

Suporte a Ethtool nos drivers do sistema para recuperar a


velocidade e o duplex de cada placa. É preciso também de um
Switch que suporta IEEE 802.3ad e ligações dinâmicas de
agregação (LACP). A maioria dos Switchs irá exigir algum tipo de
con guração para habilitar o modo 802.3ad.

Mode 5 – balance-tlb

Adaptive transmit load balancing: Esse modo não requer nenhum


apoio especial do Switch. O tráfego de saída é distribuído de
acordo com a carga atual (calculado em relação à velocidade) em
cada interface. O tráfego de entrada é recebido e respondido
sempre pela placa com mais folga de recursos. Se uma placa de
recepção falhar, uma outra assume o endereço MAC e continua a
comunicação, esse modo oferece balanceamento de carga e
suporte a falhas.

Pré-requisitos:

Esse módulo requer drivers mais atuais de cada adaptador para o


suporte aos recursos mencionados (geralmente todo Linux com o
kernel a cima do 2.4 já oferece suporte a esses recursos em seus
módulos genéricos).

Mode 6 – balance-alb

Adaptive load balancing: inclui o equilíbrio do modo TLB além de


receber o balanceamento de carga (RLB) para o tráfego IPv4. Não
necessita de qualquer con guração especial do Switch. O
balanceamento de carga é feito por meio de negociação ARP. A
placa de ligação intercepta as respostas ARP enviados pelo
sistema local no seu caminho para fora e substitui o endereço de
hardware de origem com o endereço de hardware exclusivo de
uma das placas do bond de tal forma que é permitido diferentes
placas usarem endereços de hardware diferentes em uma
conexão bond.

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 8/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux

Fonte:
https://www.kernel.org/doc/Documentation/networking/bonding.txt
(https://www.kernel.org/doc/Documentation/networking/bonding.txt)

QUAL MODO ESCOLHEMOS E POR QUE?

No caso desse exemplo escolhemos o modo 5 ou Balance-tbl, pelo


fato de além de contar com a contingência de uma placa para a
outra ainda temos o load balance das conexões que entram no
servidor, nesse modo quando a placa 1 do bond está ocupado
entregando uma requisição muito grande a alguém ele
automaticamente redireciona novas requisições ao servidor para
a placa 2, sendo assim se você estiver copiado um arquivo de 10
GB do servidor por uma das interfaces, todas as outras
requisições a esse servidor serão direcionadas para a segunda
placa, isso não quer dizer que a transferência do arquivo de 10 GB
será feita mais rápido para sua estação, e sim de que novas
transferências não serão prejudicadas pela sua requisição, para
agilizar a sua requisição seria indicado investir um uma rede
gigabyte ao invés de uma rede de 100 Mb.

Com tudo, esteja livre para estudar mais a fundo cada opção de
bonding e escolher a melhor que se adeque a suas necessidades.

TESTES COM O BONDING EM


FUNCIONAMENTO

Após toda a con guração da rede bond e de uma reinicialização


da máquina, você poderá ver que uma nova interface foi inserida
no seu sistema, podemos ver isso com o seguinte comando:

$ifcon g |grep HW

Para testar a comunicação das duas placas ligue um cabo de rede


em uma delas, pingue um endereço da sua rede ou da internet, no
meio da operação troque o cabo de rede de placa e veja o
resultado:

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 9/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux

Para “ver” todo o tráfego que passa pela interface bond execute o
seguinte comando:

#sudo tcptrack -i bond0

Faça acessos a internet e veja cada uma dessas conexões com


cada site externo passando pela sua interface:

Para uma métrica mais apurada de conexões de rede com a sua


máquina utilize o seguinte comando:

#speedometer -r bond0 -t bond0

PS: Os parâmetros “-r” (rx) e “-t”(tx) con guram que você deseja
ver o tráfego de entrada e saída das suas conexões

veja o resultado do comando:

Para um possível debug, ou apenas para coletar informações mais


especí cas sobre a sua conexão bond, você pode rodar o seguinte
comando:

$cat /proc/net/bonding/bond0

PS: Na imagem a baixo apenas uma das placas está conecta ao


Switch

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 10/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux

Bom galera, é isso, tentei reunir em um único lugar as diversas


informações de comandos, con gurações, parâmetros e debugs
sobre o bonding, espero que seja útil, grande abraço e até a
próxima.

POSTS RELACIONADOS

Limpeza de memória, cache Bloqueando acessos a redes


e inodes no Linux com sociais pelo IPTables
apenas um comando (http://opentech.etc.br/blo
(htt // t h t b /li acessos redes sociais

Como criar um servidor tipo Aprendendo as


Net ix com o Plex Media funcionalidades avançadas
Server – Parte 2 do editor VIM
(htt // t h t b / (htt // t h t b /

Bio Latest Posts

LUIZ PETERLI
(HTTPS://GITHUB.COM/LUIZPETER
CEO at Opentech.etc (http://opentech.etc.br)

SysAdmin e Analista de TIC, divido meu


tempo entre as minhas paixões: Família,
(https://twitter.com/luiz_peterli)
tecnologia, games, fotogra a, gastronomia e
mergulho! Há mais de onze anos me dedico
(https://www.facebook.com/opentech.etc)
ao trabalho com TI com um carinho especial
pelo Linux
(https://plus.google.com/+PeterliJunior?
rel=author)

(https://www.linkedin.com/in/luiz-
peterli-81405576/)

(https://www.instagram.com/luizpeterli)

(https://www. ickr.com/photos/juniorpeterli)

(https://www.youtube.com/user/PeterliJr)

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 11/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux

POSTS RECENTES

8 Bloqueando acessos a redes sociais pelo IPTables


(http://opentech.etc.br/bloqueando-acessos-redes-sociais-pelo-
iptables/)

8 Aprendendo as funcionalidades avançadas do editor VIM


(http://opentech.etc.br/aprendendo-as-funcionalidades-avancadas-
do-editor-vim/)

8 Aumentando a segurança em um Firewall Linux com IPTables


(http://opentech.etc.br/aumentando-a-seguranca-em-um- rewall-
linux-com-iptables/)

8 Como criar um servidor tipo Net ix com o Plex Media Server –


Parte 2 (http://opentech.etc.br/como-criar-um-servidor-tipo-net ix-
com-o-plex-media-server-parte-2/)

8 Script para inserir ou remover uma máquina Windows do Proxy


(http://opentech.etc.br/script-para-inserir-ou-remover-uma-maquina-
windows-do-proxy/)

8 Controle de banda de internet no Linux com o Shaper


(http://opentech.etc.br/controle-de-banda-de-internet-no-linux-com-
o-shaper/)

OPENTECH.ETC NO FACEBOOK

Opentech.etc
128 curtidas

Curtir Página

Seja o primeiro de seus amigos a curtir


isso.

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 12/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux

OPENTECH NO GOOGLE PLUS

-Luiz Peterli-
google.com/+PeterliJunior

O sucesso é ir de fracasso em fracasso sem


perder o entusiasmo.

Seguir

OPENTECH.ETC NO INSTAGRAM

8 8

(https://www.instagram.com/p/Bf- (https://www.instagram.com/p/BfwLhRAhfPZ/)
7tTfhnbf/)
8 8

(https://www.instagram.com/p/BfwLmjRBk0S/)
(https://www.instagram.com/p/BfcECzqBqR_/)
8 8

(https://www.instagram.com/p/BfbZtu3hfmI/)
(https://www.instagram.com/p/BfbZ-
WbhYA3/)
8 8

(https://www.instagram.com/p/BemCz5JhS-
(https://www.instagram.com/p/BemMp1pBeFS/)
K/)
8 8

(https://www.instagram.com/p/BemNblMhNSp/)
(https://www.instagram.com/p/BemONlWB5jg/)

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 13/14
18/03/2018 Fazendo duas ou mais placas de rede trabalharem como apenas uma no Linux
8 8

(https://www.instagram.com/p/BerG6B_Bqhf/)
(https://www.instagram.com/p/BerU-
KTBD9m/)
8 8

(https://www.instagram.com/p/Ber-(https://www.instagram.com/p/Betz6jzhFd8/)
hMhhNzp/)
8 8

(https://www.instagram.com/p/BexehBCBDFQ/)
(https://www.instagram.com/p/BeyHP2Thau-/)

© 2015-2017 OpenTech.etc (http://opentech.etc.br/), All Rights Reserved.

 (https://www.facebook.com/opentech.etc) 
(https://twitter.com/luiz_peterli) 
(https://plus.google.com/+PeterliJunior) 
(https://www.linkedin.com/in/luiz-peterli-81405576/) 
(https://www. ickr.com/photos/juniorpeterli) 
(https://www.instagram.com/luizpeterli)

http://opentech.etc.br/artigos-bond-fazendo-duas-ou-mais-placas-de-rede-trabalharem-como-apenas-uma-no-linux/ 14/14

Você também pode gostar