{"id":3743,"date":"2020-03-26T13:49:55","date_gmt":"2020-03-26T16:49:55","guid":{"rendered":"https:\/\/tpinformatica.com.br\/site\/?p=3743"},"modified":"2020-03-28T00:07:41","modified_gmt":"2020-03-28T03:07:41","slug":"time-de-placa-de-rede-no-linux-debian","status":"publish","type":"post","link":"https:\/\/tpinformatica.com.br\/site\/time-de-placa-de-rede-no-linux-debian\/","title":{"rendered":"Time de placa de rede no Linux (Debian)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Primeiro instale o pacote ifenslave e somente depois disso inicie a configura\u00e7\u00e3o das placas de rede que ir\u00e3o compor seu bond linux.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># apt-get install ifenslave<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Shutdown_.2F_Unconfigure_Existing_Interfaces\">Desligar \/ desconfigurar interfaces existentes<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\"># ifdown eth0 (repita para todas as interfaces inclu\u00eddas no v\u00ednculo)\n# \/etc\/init.d\/networking stop<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/wiki.debian.org\/htdocs\/debwiki\/img\/icon-info.png\" alt=\"{Eu}\" title=\"\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c0s vezes, o&nbsp;ifdown&nbsp;n\u00e3o funciona, nesse caso, use&nbsp;ifconfig eth0 down&nbsp;.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"Configuration_-_Example_1\">Configura\u00e7\u00e3o &#8211; Exemplo 1<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Modifique o&nbsp;arquivo&nbsp;\/ etc \/ network \/ interfaces&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">auto bond0\n\niface bond0 inet estatic\n    address 10.31.1.5\n    netmask 255.255.255.0\n    network 10.31.1.0\n    gateway 10.31.1.254\n    slaves eth0 eth1\n    bond-mode active-backup\n    bond-miimon 100\n    bond-downdelay 200\n    bond-updelay 200<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para obter mais detalhes, consulte&nbsp;\/usr\/share\/doc\/ifenslave\/README.Debian&nbsp;e&nbsp;<a href=\"http:\/\/www.kernel.org\/doc\/Documentation\/networking\/bonding.txt\" rel=\"nofollow noopener\" target=\"_blank\">\/usr\/src\/linux\/Documentation\/networking\/bonding.txt<\/a>&nbsp;.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"Configuration_-_Example_2_.28.22Laptop-Mode.22.29\">Configura\u00e7\u00e3o &#8211; Exemplo 2 (&#8220;Modo Laptop&#8221;)<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ligue as interfaces de rede sem fio e cabo (RJ45 \/ WLAN)&nbsp;defina uma \u00fanica interface de rede virtual (por exemplo, vincula\u00e7\u00e3o) (por exemplo, bond0).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enquanto o cabo de rede estiver conectado, sua interface (por exemplo, eth0)&nbsp;\u00e9 usado para o tr\u00e1fego de rede.&nbsp;Se voc\u00ea puxar o plugue RJ45,&nbsp;<em>ifenslave<\/em>&nbsp;alterna para a interface sem fio (por exemplo, wlan0) de forma transparente, sem&nbsp;qualquer perda de pacotes de rede.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ap\u00f3s reconectar o cabo de rede, o&nbsp;<em>ifenslave<\/em>&nbsp;volta para eth0&nbsp;(&#8220;modo de failover&#8221;).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Do ponto de vista externo (= rede), n\u00e3o importa qual interface esteja ativa.&nbsp;O dispositivo de liga\u00e7\u00e3o apresenta seu pr\u00f3prio endere\u00e7o MAC definido por software (ou seja, virtual), diferente dos MACs definidos por hardware de eth0 ou wlan0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O servidor dhcp usar\u00e1 esse MAC para atribuir um endere\u00e7o IP ao dispositivo bond0.&nbsp;Portanto, o computador possui um endere\u00e7o IP exclusivo sob o qual pode ser identificado.&nbsp;Sem liga\u00e7\u00e3o, cada interface teria seu pr\u00f3prio endere\u00e7o IP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modifique o&nbsp;arquivo&nbsp;\/ etc \/ network \/ interfaces&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Definir escravos   \nauto eth0\nmanual iface eth0 inet\n    bond-master bond0\n    eth0 prim\u00e1rio-bond\n    backup ativo no modo bond\n   \nauto wlan0\nmanual de iface wlan0 inet\n    wpa-conf \/etc\/network\/wpa.conf\n    bond-master bond0\n    eth0 prim\u00e1rio-bond\n     bond-mode active-backup \n\n# Definir mestre\nauto bond0\niface bond0 dhcp inet\n    bond-slaves none\n    eth0 primary-bond\n    bond-mode active-backup \n    bond-miimon 100<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nota: A configura\u00e7\u00e3o acima foi encontrada trabalhando no Debian 6 e em vers\u00f5es posteriores.&nbsp;A \u00faltima vers\u00e3o verificada \u00e9 o Debian 9.8 (*).&nbsp;A configura\u00e7\u00e3o \u00e9 um pouco contr\u00e1ria \u00e0 documenta\u00e7\u00e3o dos&nbsp;<em>interfaces de<\/em>&nbsp;,&nbsp;<em>ifup<\/em>&nbsp;e&nbsp;<em>ifenslave<\/em>&nbsp;e os exemplos em \/ usr \/ share \/ doc \/ ifenslave \/ examples \/.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Teoricamente, apenas a interface bond0 deve ter o&nbsp;atributo&nbsp;<em>auto<\/em>&nbsp;.&nbsp;<strong>O ifup bond0<\/strong>&nbsp;trar\u00e1 os escravos automaticamente (como a documenta\u00e7\u00e3o diz).&nbsp;Isso \u00e9 parcialmente verdadeiro, mas obviamente as op\u00e7\u00f5es de configura\u00e7\u00e3o dos escravos s\u00e3o ignoradas.&nbsp;Por exemplo, wlan0 \u00e9 ativado sem iniciar o&nbsp;<em>wpa_supplicant<\/em>&nbsp;e a&nbsp;configura\u00e7\u00e3o de&nbsp;<em>v\u00ednculo prim\u00e1rio<\/em>&nbsp;de eth0 \u00e9 ignorada.(TODO: Isso \u00e9 um bug no&nbsp;<em>ifenslave<\/em>&nbsp;?)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Parece que os escravos devem ser criados antes do bond0 para incluir suas op\u00e7\u00f5es de configura\u00e7\u00e3o.&nbsp;Para fazer isso atrav\u00e9s do&nbsp;script&nbsp;<em>\/etc\/init.d\/networking<\/em>&nbsp;, suas defini\u00e7\u00f5es devem estar antes da defini\u00e7\u00e3o bond0 e os&nbsp;atributos&nbsp;<em>autom\u00e1ticos<\/em>&nbsp;devem ser definidos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Obviamente, eles n\u00e3o devem ser iniciados novamente quando o bond0 iniciar.&nbsp;A op\u00e7\u00e3o&nbsp;<em>bond-slaves none<\/em>&nbsp;desativa isso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As op\u00e7\u00f5es&nbsp;<em>bond-master<\/em>&nbsp;,&nbsp;<em>bond-primary<\/em>&nbsp;e&nbsp;<em>bond-mode<\/em>&nbsp;devem ser repetidas consistentemente para cada escravo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Haver\u00e1 avisos &#8220;ifup: interface xyz j\u00e1 configurados&#8221;, mas pelo menos funciona.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(*) Nas vers\u00f5es mais recentes do Debian, os nomes dos dispositivos de rede (podem) mudaram, dependendo do caminho de atualiza\u00e7\u00e3o.&nbsp;As instala\u00e7\u00f5es do zero agora usam &#8220;nomes de interface de rede previs\u00edveis&#8221; (&nbsp;<a href=\"https:\/\/wiki.debian.org\/NetworkConfiguration#Predictable_Network_Interface_Names\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/wiki.debian.org\/NetworkConfiguration#Predictable_Network_Interface_Names<\/a>&nbsp;).&nbsp;Para encontrar os nomes de suas interfaces, voc\u00ea deve procurar aqui:$ ls \/ sys \/ classe \/ net \/&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este documento ainda usa os nomes tradicionais.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"Configuration_-_Example_3_.28.22Laptop_mode.22.2C_mostly_as_per_documentation_-_Debian_9_.22stretch.22.29\">Configura\u00e7\u00e3o &#8211; Exemplo 3 (&#8220;Modo Laptop&#8221;, principalmente conforme documenta\u00e7\u00e3o &#8211; Debian 9 &#8220;stretch&#8221;)<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Essa \u00e9 uma maneira de ativar o modo laptop com failover autom\u00e1tico entre com fio e sem fio, com prefer\u00eancia com fio se ambos estiverem dispon\u00edveis, com base na documenta\u00e7\u00e3o.&nbsp;No entanto, o exemplo de documenta\u00e7\u00e3o n\u00e3o est\u00e1 completo e n\u00e3o est\u00e1 totalmente correto.&nbsp;Especificamente, as altera\u00e7\u00f5es no exemplo (usr \/ share \/ doc \/ ifenslave \/ examples \/ ethernet + wifi) s\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>a estrofe eth0&nbsp;<em>\u00e9<\/em>&nbsp;necess\u00e1ria; caso contr\u00e1rio, funcionar\u00e1 inicialmente, mas o bond0 remover\u00e1 o eth0 para sempre se o link eth0 voltar a funcionar depois de voltar uma vez (como quando passa de sem fio para com fio e depois para sem fio), em vez de apenas desabilit\u00e1-lo at\u00e9 o link voltar.<\/li><li>&#8220;bond-give-a-chance 10&#8221; resultou na interface wlan0 tentando subir tr\u00eas vezes, com a terceira tentativa falhando e depois sendo inutiliz\u00e1vel.&nbsp;Remov\u00ea-lo completamente consertou isso.&nbsp;Em vez de exclu\u00ed-lo, apenas comentei o FYI desde o YMMV.<\/li><li>a ordem de escraviza\u00e7\u00e3o parece importar: se &#8220;escravos de v\u00ednculo&#8221; for especificado da maneira esperada (eth0 wlan0), ent\u00e3o wlan0 ser\u00e1 inicialmente a interface principal, apenas para ser alterado para eth0 na diretiva &#8220;v\u00ednculo prim\u00e1rio&#8221;.<\/li><li>&#8220;modo de liga\u00e7\u00e3o&#8221; foi alterado de &#8220;1&#8221; para &#8220;backup ativo&#8221; para ser pelo menos mais leg\u00edvel.<\/li><li>seria uma boa pr\u00e1tica ter a configura\u00e7\u00e3o da wlan em um arquivo separado para que &#8220;interfaces&#8221; n\u00e3o exijam prote\u00e7\u00e3o especial, e isso tamb\u00e9m foi alterado.&nbsp;O conte\u00fado de &#8220;wpa_supplicant.conf&#8221; n\u00e3o \u00e9 espec\u00edfico para liga\u00e7\u00e3o e apenas foi inserido normalmente.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o, aqui est\u00e1 a&nbsp;maravilha&nbsp;do&nbsp;\/ etc \/ network \/ interfaces&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">auto bond0\niface bond0 inet est\u00e1tico\n    bond-slaves wlan0 eth0\n    bond-mode active-backup \n    eth0 primary-bond\n    bond-miimon 100\n    address &lt;ipv4address&gt; \/ &lt;maskbits&gt;\n    gateway &lt;ipv4address&gt;\n\nallow-bond0 eth0\nmanual iface eth0 inet\n\nallow-bond0 wlan0\nmanual de iface wlan0 inet\n# bond-give-a-chance 10\n    wpa-bridge bond0\n    wpa-conf \/etc\/wpa_supplicant\/wpa_supplicant.conf<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea usa DHCP ou algum outro servi\u00e7o, precisa alterar a estrofe &#8220;bond0&#8221; de acordo, mas as outras interfaces devem permanecer &#8220;manuais&#8221;, pois n\u00e3o devem obter um endere\u00e7o IP.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"bridging_the_bond\">ponte do v\u00ednculo<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea deseja usar o v\u00ednculo em uma ponte, basta adicionar as linhas da ponte normalmente ao seu arquivo \/ etc \/ network \/ interfaces.&nbsp;Altere a interface de v\u00ednculo para manual e use-a como interface de ponte.&nbsp;Aqui est\u00e1 um arquivo de amostra de interfaces de liga\u00e7\u00e3o em ponte:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># interface de rede integrada\nauto enp4s0\nManual de iface enp4s0 inet\n# PCIe nic\nauto enp8s0\nManual de iface enp8s0 inet\n# bond inteface\nauto bond0\nmanual iface bond0 inet\n        slaves enp4s0 enp8s0\n        bond-mode 802.3ad\n# interface Ponte\nauto br0\niface br0 inet static\n        address 192.168.1.17\n        netmask 255.255.255.0\n        network 192.168.1.0\n        broadcast 192.168.1.255\n        gateway 192.168.1.1\n        bridge_ports bond0\n        bridge_stp off\n        bridge_fd 0\n        bridge_maxwait 0<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"Using_systemd-networkd\">Usando systemd-networkd<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Este m\u00e9todo n\u00e3o usa o pacote ifenslave mencionado acima.&nbsp;Se o seu computador estiver usando o systemd e as placas de rede estiverem funcionando no momento, voc\u00ea n\u00e3o precisar\u00e1 de mais nada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Observe que, como \u00e9 comum em sistemas operacionais do tipo unix, o caso \u00e9 importante &#8211; &#8220;Bond&#8221; \u00e9 diferente de &#8220;bond&#8221; e &#8220;Name&#8221; n\u00e3o \u00e9 o mesmo que &#8220;name&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Enabling_systemd-networkd\">Ativando systemd-networkd<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea n\u00e3o estiver usando o systemd-networkd, precisar\u00e1 habilit\u00e1-lo.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl enable systemd-networkd<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Configuring_the_bond_device\">Configurando o dispositivo bond<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Crie um arquivo que termine em&nbsp;.netdev&nbsp;em&nbsp;\/ etc \/ systemd \/ network&nbsp;.&nbsp;Nomeie isso ap\u00f3s o nome da interface vinculada que voc\u00ea deseja usar (por exemplo, bond1.netdev).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este exemplo assume a liga\u00e7\u00e3o 802.3ad ou LACP. Para obter mais informa\u00e7\u00f5es, consulte a&nbsp;<a href=\"https:\/\/manpages.debian.org\/stretch\/systemd\/systemd.netdev.5.en.html\" rel=\"nofollow noopener\" target=\"_blank\">p\u00e1gina de<\/a>&nbsp;manual&nbsp;<a href=\"https:\/\/manpages.debian.org\/stretch\/systemd\/systemd.netdev.5.en.html\" rel=\"nofollow noopener\" target=\"_blank\">systemd.netdev<\/a>&nbsp;e \/ ou a&nbsp;<a href=\"https:\/\/www.kernel.org\/doc\/Documentation\/networking\/bonding.txt\" rel=\"nofollow noopener\" target=\"_blank\">documenta\u00e7\u00e3o<\/a>&nbsp;do&nbsp;<a href=\"https:\/\/www.kernel.org\/doc\/Documentation\/networking\/bonding.txt\" rel=\"nofollow noopener\" target=\"_blank\">kernel<\/a>&nbsp;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A maioria dos sistemas deve funcionar com o 802.3ad e esse provavelmente \u00e9 o modo que voc\u00ea deseja, pois as duas placas de rede trabalham juntas para fornecer o dobro da taxa de transfer\u00eancia.&nbsp;No entanto, se n\u00e3o funcionar no seu caso, voc\u00ea pode tentar outro modo, como o backup ativo (usado no exemplo ifenslave acima).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Observe que o systemd est\u00e1 sempre criando uma interface bond0 padr\u00e3o com o modo round round robin e o modo n\u00e3o pode ser alterado.&nbsp;Portanto, para usar qualquer outro modo, crie bond1 ou outro nome para a interface.&nbsp;A interface bond0 com o modo 802.3ad simplesmente n\u00e3o funciona.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[NetDev]\nNome = bond1\nDescri\u00e7\u00e3o = LAG \/ Bond a um switch\nTipo = v\u00ednculo\n\n[Vinculo]\nMode = 802.3ad<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Add_interfaces_to_the_bond.2Flag\">Adicionar interfaces ao v\u00ednculo \/ atraso<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e1 duas maneiras de voc\u00ea fazer isto.&nbsp;Uma \u00e9 criar um arquivo .network para cada interface de rede mais um para a rede vinculada.&nbsp;O outro \u00e9 descrever as interfaces de rede no arquivo da rede ligada.&nbsp;Aqui vamos usar o \u00faltimo m\u00e9todo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crie um arquivo que termine em&nbsp;.network&nbsp;em&nbsp;\/ etc \/ systemd \/ network&nbsp;usando o mesmo nome que anteriormente (por exemplo, bond1.network).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O systemd-networkd usa um sistema correspondente para decidir qual interface usar.&nbsp;Voc\u00ea pode usar a correspond\u00eancia baseada em nome aqui, se quiser, mas n\u00e3o use a correspond\u00eancia baseada em mac, pois isso pode causar confus\u00e3o com os endere\u00e7os mac de altera\u00e7\u00e3o de v\u00ednculo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este exemplo usa correspond\u00eancia baseada em pci-id.&nbsp;Para encontrar os endere\u00e7os para suas placas de rede, use:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">lspci -d | grep Ether<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">use essas informa\u00e7\u00f5es para criar o arquivo .network.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[Combine]\nCaminho = pci-0000: 00: 01.0\nCaminho = pci-0000: 05: 10.0\n\n[Rede]\nBond = bond1<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Outra op\u00e7\u00e3o \u00e9 simplesmente usar os nomes das interfaces de rede substituindo a linha Path = por Name = &lt;nome da interface de rede&gt;.&nbsp;Voc\u00ea tamb\u00e9m pode usar caracteres curinga e pode especificar ambos \/ todos os dispositivos em um \u00fanico arquivo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[Combine]\nNome = enp *\n\n[Rede]\nBond = bond1<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ou<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[Combine]\nNome = enp0s01\nNome = enp5s10\n\n[Rede]\nBond = bond1<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Giving_the_bond_an_IP\">Dando um IP ao v\u00ednculo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Crie um arquivo que termine em&nbsp;.network&nbsp;em&nbsp;\/ etc \/ systemd \/ network&nbsp;.&nbsp;O nome (obviamente) j\u00e1 n\u00e3o deve ser usado.&nbsp;Isso diz ao systemd como abrir a rede ligada.&nbsp;Para um endere\u00e7o IP est\u00e1tico, voc\u00ea pode usar:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[Combine]\nNome = bond1\n\n[Rede]\naddress = 10.31.1.5\nGateway = 10.31.1.1\nDNS = 10.31.1.1<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para DHCP (por exemplo, para um laptop em que voc\u00ea poderia usar conex\u00f5es sem fio e \/ ou com fio), tente:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[Combine]\nNome = bond1\n\n[Rede]\nDHCP = sim<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Actualise_the_settings\">Atualize as configura\u00e7\u00f5es<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Se sua rede estava usando \/ etc \/ network \/ interfaces antes de configurar a liga\u00e7\u00e3o, renomeie o arquivo para impedir que seja usado:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mv \/ etc \/ network \/ interfaces \/etc\/network\/interfaces.save<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Neste ponto, recomendo reiniciar o sistema.&nbsp;Essa \u00e9 a maneira mais f\u00e1cil de limpar as configura\u00e7\u00f5es de rede anteriores e testar se o systemd-networkd inicia conforme o esperado.&nbsp;A rede deve apresentar a liga\u00e7\u00e3o ativa.&nbsp;Voc\u00ea pode verificar isso com:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ip link list<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea deve ver 4 dispositivos, eis suas duas interfaces f\u00edsicas de rede (marcadas como &#8220;ESCRAVO&#8221;) e o dispositivo bond1.&nbsp;Somente o dispositivo bond1 deve ter um endere\u00e7o IP.&nbsp;Tamb\u00e9m deve ser marcado como &#8220;MASTER&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea precisar fazer mais altera\u00e7\u00f5es posteriormente ou corrigir problemas com sua configura\u00e7\u00e3o atual, a partir de agora, basta reiniciar o systemd-networkd ap\u00f3s atualizar os arquivos \/ etc \/ systemd \/ network.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl restart systemd-networkd<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"enabling_bridging_for_virtual_machines\">permitindo ponte para m\u00e1quinas virtuais<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Adicionei esta se\u00e7\u00e3o porque n\u00e3o \u00e9 imediatamente \u00f3bvio que sua configura\u00e7\u00e3o de ponte de rede existente provavelmente n\u00e3o funcionar\u00e1 com o systemd-networkd.&nbsp;Antes de configurar meu v\u00ednculo de rede, eu estava usando os utilit\u00e1rios de ponte para criar um dispositivo br0 usando \/ etc \/ network \/ interfaces.&nbsp;Desde que removi esse arquivo, eu precisava de uma nova maneira de configurar a ponte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Felizmente, systemd-networkd \u00e9 multi-talentoso e bastante h\u00e1bil em lidar com pontes de rede.&nbsp;Tudo o que voc\u00ea precisa fazer \u00e9 definir a ponte e fornecer as caracter\u00edsticas apropriadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Como o dispositivo bond0, voc\u00ea precisa criar um arquivo .netdev para definir o dispositivo.&nbsp;Criei o br0.netdev da seguinte maneira:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[NetDev]\nNome = br0\nTipo = ponte<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Em seguida, vinculo-o ao v\u00ednculo de rede que defini anteriormente usando br0.network:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[Combine]\nNome = bond1\n\n[Rede]\nBridge = br0<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por fim, altero o arquivo .network de gerenciamento para referir-se a br0 em vez de bond1.&nbsp;Como as defini\u00e7\u00f5es anteriores tornaram bond1 um escravo de br0, isso resulta na ponte sendo criada corretamente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"udev_renaming_issue\">problema de renomea\u00e7\u00e3o do udev<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea provavelmente ver\u00e1 apenas as regras UDEV para seus dispositivos de rede se tiver atualizado a partir das vers\u00f5es anteriores do Debian.&nbsp;Novas instala\u00e7\u00f5es nomeiam as placas de rede ap\u00f3s seus endere\u00e7os pci.&nbsp;As regras s\u00e3o usadas para preservar os nomes herdados dos dispositivos (por exemplo, eth0), caso estejam sendo usados \u200b\u200bem outro lugar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea estiver confiante de que voc\u00ea est\u00e1&nbsp;<strong>n\u00e3o<\/strong>&nbsp;usando os nomes antigos, voc\u00ea pode simplesmente remover o arquivo descrito abaixo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;udev&#8221; atribui nomes de adaptadores de rede conforme<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/etc\/udev\/rules.d\/70-persistent-net.rules<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">onde regra normalmente se parece com isso:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Dispositivo PCI 0x10ec: 0x8168 (r8169)\nSUBSISTEMA == \"rede\", A\u00c7\u00c3O == \"adicionar\", DRIVERS == \"? *\", ATTR {endere\u00e7o} == \"xx: xx: xx: xx: xx: xx\", ATTR {dev_id} == \"0x0 \", ATTR {type} ==\" 1 \", KERNEL ==\" eth * \", NAME =\" eth0 \"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O problema da liga\u00e7\u00e3o \u00e9 que duas ou mais placas de rede podem ter o mesmo&nbsp;Endere\u00e7o MAC que confunde o udev ao tentar (re) nomear adaptadores conforme&nbsp;seus MACs e falha porque j\u00e1 existe outra placa com esse MAC.&nbsp;Quando isso acontece, a NIC pode ser nomeada como &#8220;renomear2&#8221; em vez de &#8220;eth0&#8221; etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A solu\u00e7\u00e3o poss\u00edvel \u00e9 alterar a regra do udev para atribuir nomes de interface de rede&nbsp;de acordo com os IDs PCI das placas de rede em vez dos endere\u00e7os MAC.&nbsp;Isso pode ser feito substituindo-o<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ATTR {endere\u00e7o} == \"xx: xx: xx: xx: xx: xx\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">com algo como<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">KERNELS == \"0000: 04: 00.0\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">no arquivo &#8220;70-persistent-net.rules&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Os IDs PCI correspondentes podem ser encontrados em dmesg:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo dmesg | grep eth<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Onde se pode procurar um fragmento de linha como este:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">r8169 0000: 04: 00.0 eth0: RTL8168e \/ 8111e\n# ^^^^^^^^^^^^<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mas isso n\u00e3o \u00e9 recomendado, pois n\u00e3o encontrar\u00e1, por exemplo, dispositivos sem fio ou dispositivos que n\u00e3o usem nomes legados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A alternativa preferida \u00e9 encontrar IDs PCI usando &#8221;&nbsp;lspci -D | grep Ether&nbsp;&#8220;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">0000: 04: 00.0 Controlador Ethernet: Realtek Semiconductor Co., Ltd. Controlador PCI Express Gigabit RTL8111 \/ 8168\/8411 (rev 06)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Observe que em sistemas modernos, voc\u00ea pode converter o endere\u00e7o PCI no nome da rede usando os dois n\u00fameros do meio expressos na base10.&nbsp;No exemplo acima, o controlador 0000: 04: 00.0 seria enp4s00.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"Testing_.2F_Debugging\">Teste \/ Depura\u00e7\u00e3o<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Tip\">Gorjeta<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para ter uma ideia do que est\u00e1 acontecendo nos bastidores, experimente um pequeno script para mostrar algumas informa\u00e7\u00f5es sobre o dispositivo de liga\u00e7\u00e3o.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#! \/ bin \/ sh\n\necho \"Slaves = $ (cat \/ sys \/ class \/ net \/ bond0 \/ bonding \/ slaves)\"\necho \"Primary = $ (cat \/ sys \/ classe \/ net \/ bond0 \/ bonding \/ prim\u00e1rio)\"\necho \"Slave active = $ (cat \/ sys \/ class \/ net \/ bond0 \/ bonding \/ active_slave)\"\n\nr=$(pidof dhclient) \ntest -n \"$r\" &amp;&amp; ps $r \n\nr=$(pidof wpa_supplicant) \nteste -n \"$ r\" &amp;&amp; ps $ r<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Debugging_ifenslave\">Depurando ifenslave<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O mecanismo de liga\u00e7\u00e3o \u00e9 baseado em um m\u00f3dulo do kernel chamado&nbsp;<em>liga\u00e7\u00e3o,<\/em>&nbsp;que exp\u00f5e sua interface atrav\u00e9s do sistema de arquivos virtual \/ sys (por exemplo, \/ sys \/ class \/ net \/ bond0 \/ *).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A instala\u00e7\u00e3o e a configura\u00e7\u00e3o s\u00e3o feitas na terra do usu\u00e1rio com scripts de shell:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\/etc\/network\/if-post-down.d\/ifenslave<\/li><li>\/etc\/network\/if-up.d\/ifenslave<\/li><li>\/etc\/network\/if-pre-up.d\/ifenslave<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Esses scripts s\u00e3o chamados na inicializa\u00e7\u00e3o e desligamento do sistema (na verdade, \u00e9 o&nbsp;<em>ifup<\/em>&nbsp;que os chama).&nbsp;Sua inten\u00e7\u00e3o \u00e9 alimentar o m\u00f3dulo do kernel com os par\u00e2metros e configura\u00e7\u00f5es apropriados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se algo com a liga\u00e7\u00e3o falhar (e a dica acima n\u00e3o ajuda), voc\u00ea pode dar uma olhada no que os scripts fazem passo a passo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para ativar a sa\u00edda detalhada, chame&nbsp;<strong>ifup -a -v<\/strong>&nbsp;diretamente (em vez de chamar&nbsp;<em>\/etc\/init.d\/networking<\/em>&nbsp;).&nbsp;A&nbsp;op\u00e7\u00e3o&nbsp;<em>-v<\/em>&nbsp;permite um log de todos os comandos que os scripts est\u00e3o executando.&nbsp;Isso d\u00e1 pelo menos um rastro do que est\u00e1 acontecendo quando.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Infelizmente, isso n\u00e3o mostra as rea\u00e7\u00f5es do m\u00f3dulo do kernel (como poss\u00edveis mensagens de erro), porque as mensagens do kernel (m\u00f3dulo) s\u00e3o relatadas pelo utilit\u00e1rio syslog.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para ter uma&nbsp;id\u00e9ia&nbsp;<em>real do<\/em>&nbsp;que est\u00e1 acontecendo, voc\u00ea precisa fazer o que \u00e9 chamado de&nbsp;<em>depura\u00e7\u00e3o invasiva<\/em>&nbsp;.&nbsp;Isso significa adicionar linhas aos scripts em pontos cr\u00edticos para enviar uma mensagem ao syslog.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exemplo:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fun\u00e7\u00e3o&nbsp;<em>sysfs_change_down<\/em>&nbsp;no arquivo&nbsp;<em>\/etc\/network\/if-pre-up.d\/ifenslave<\/em><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">   logger -t sysfs_change_down sysfs \"$1\" \"$2\" \n         sysfs \"$1\" \"$2\" \n   logger -t sysfs_change_down $(cat \/sys\/class\/net\/bond0\/bonding\/mode) <\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Additional_Note_For_Debian_Lenny_On_Sparc\">Nota adicional para o Debian Lenny On Sparc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><em>(pode ser aplic\u00e1vel a outras arquiteturas tamb\u00e9m)<\/em><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># cd \/etc\/modprobe.d\n\n# cat&gt; aliases-bond.conf\nalias bond0 bonding\n  options bond-mode=1 arp_interval = 2000 arp_ip_target = 192.168.3.1\n&lt;CTRL-D&gt;<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sem esse arquivo, voc\u00ea receber\u00e1 um aviso ao iniciar a interface vinculada semelhante a esta:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">liga\u00e7\u00e3o: Aviso: os par\u00e2metros dos m\u00f3dulos miimon ou arp_interval e arp_ip_target devem ser especificados, caso contr\u00e1rio, a liga\u00e7\u00e3o n\u00e3o detectar\u00e1 falhas no link! consulte bonding.txt para obter detalhes.<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Startup_.2F_Configure_New_Interfaces\">Inicializar \/ configurar novas interfaces<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\"># ifup bond0\n# \/etc\/init.d\/networking start<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Al\u00e9m disso, se voc\u00ea usar um&nbsp;ambiente&nbsp;<a href=\"https:\/\/wiki.debian.org\/DebianLenny\" rel=\"nofollow noopener\" target=\"_blank\">Lenny<\/a>&nbsp;que foi atualizado a partir do&nbsp;<a href=\"https:\/\/wiki.debian.org\/DebianEtch\" rel=\"nofollow noopener\" target=\"_blank\">Etch<\/a>&nbsp;, \u00e9 altamente recomend\u00e1vel verificar o resultado do comando a seguir para verificar o modo do dispositivo de liga\u00e7\u00e3o, porque os arquivos de configura\u00e7\u00e3o do Etch e vers\u00f5es anteriores n\u00e3o funcionam para o Lenny e vers\u00f5es posteriores lan\u00e7amentos.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cat \/ sys \/ class \/ net \/ bond0 \/ bonding \/ mode<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">1. Fa\u00e7a ping para outro sistema em um terminal<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># ping XXXX<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2. Desconecte o cabo de rede ativo e observe o resultado do ping, a rede deve ser retomada em alguns segundos<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3. Reconecte o cabo de rede desconectado, aguarde 30 segundos para permitir que a tabela ARP seja atualizada<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4. Desconecte outro cabo de rede e observe o resultado do ping, a rede deve ser retomada em alguns segundos<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Change_active_slave\">Alterar escravo ativo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">1. Use ifenslave para alterar o escravo ativo.&nbsp;O exemplo abaixo configurar\u00e1 eth0 como escravo ativo<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># ifenslave -c bond0 eth0 eth1<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Nesse post ensinamos a configurar nic bonding (conhecido como time de placa de rede) no Linux usando a distro Debian.<\/p>\n","protected":false},"author":1,"featured_media":3730,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"googlesitekit_rrm_CAownujICw:productID":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[145],"tags":[146,147,142,152,139],"class_list":["post-3743","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rede","tag-bonding","tag-nic-bonding","tag-nic-teaming","tag-roundrobin","tag-time-de-placa-de-rede"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/tpinformatica.com.br\/site\/wp-json\/wp\/v2\/posts\/3743","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tpinformatica.com.br\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tpinformatica.com.br\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tpinformatica.com.br\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tpinformatica.com.br\/site\/wp-json\/wp\/v2\/comments?post=3743"}],"version-history":[{"count":0,"href":"https:\/\/tpinformatica.com.br\/site\/wp-json\/wp\/v2\/posts\/3743\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tpinformatica.com.br\/site\/wp-json\/wp\/v2\/media\/3730"}],"wp:attachment":[{"href":"https:\/\/tpinformatica.com.br\/site\/wp-json\/wp\/v2\/media?parent=3743"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tpinformatica.com.br\/site\/wp-json\/wp\/v2\/categories?post=3743"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tpinformatica.com.br\/site\/wp-json\/wp\/v2\/tags?post=3743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}