Translation(s): English - Español - Français - Italiano - 简体中文 - Português Brasileiro


Pré-requisitos: Para aproveitar ao máximo este artigo, entenda os seguintes conceitos antes de ler: ferramentas básicas de linha de comando unix, editores de texto, DNS, TCP/IP, DHCP, netmask, gateway

Índice

Configurando uma Interface Ethernet

A maior parte da configuração da rede pode ser feita através do arquivo de configuração interfaces em /etc/network/interfaces. Aqui você pode fornecer à sua placa de rede um endereço IP (ou usar o DHCP), configurar informações de roteamento, configurar o mascaramento de IP, definir rotas padrão e muito mais.

Lembre-se de adicionar as interfaces que você deseja que sejam inicializadas quando o computador liga na linha 'auto'.

Veja man interfaces para mais opções.

Nomes previsíveis de interface de rede

A partir do Stretch, os antigos nomes de rede eram como eth0, eth1 e foram embora, pois o nome do dispositivo pode mudar. Os novos nomes são semelhantes a estes: enp6s0, enp8s0, enp0s31f6, enp5s0. Infelizmente, o sistema usado ainda é um pouco arbitrário, pois depende da enumeração do BIOS, que muda com BIOS defeituosos e em algumas situações. (Que não foi baseado em um sumcheck reduzido do endereço MAC (2c:56:ac:39:ec:0d torna-se 98) ou algum método similar - o que é intrigante - (o udev pode fazer essas coisas) e os nomes que nos restam são bastante hostis ao usuário).

Para as pessoas que usam mais de uma interface de rede, teremos que lidar com o novo sistema.

Para encontrar os nomes de suas interfaces, você deve procurar em: $ ls /sys/class/net/

Atualizando e Nomes Previsíveis de Interface de Rede

Os upgrades para o Stretch manterão os nomes dos dispositivos antigos - apesar do que você lerá na web - a remoção do /etc/udev/rules.d/70-local-persistent-net.rules não fornecerá os nomes novos, mesmo que seguidos por um update-initramfs -u e update-grub. ( ainda não encontrei como mudar isso no Debian ainda?? )

Uso do DHCP para Configurar Automaticamente a Interface

Se você está usando o DHCP, então tudo que você precisa é algo como:

    auto eth0
    allow-hotplug eth0
    iface eth0 inet dhcp

Para DHCPv6 (usado para IPv6), adicione também a seguinte sub-rotina iface

    iface eth0 inet6 dhcp

Alternativamente, IPv6 pode ser autoconfigurado usando autoconfiguração de endereços sem estado (Stateless Address Autoconfiguration - SLAAC), que é especificado usando auto em vez de dhcp na sub-rotina inet6:

    iface eth0 inet6 auto

Configurar manualmente a interface

Se você estiver configurando manualmente, algo assim definirá o gateway padrão (rede, broadcast e gateway são opcionais):

    auto eth0
    iface eth0 inet static
        address 192.0.2.7
        netmask 255.255.255.0
        gateway 192.0.2.254

Se você quiser adicionar um endereço IPv6 também, adicione algo como:

    iface eth0 inet6 static
        address 2001:db8::c0ca:1eaf
        netmask 64
        gateway 2001:db8::1ead:ed:beef

Veja man interfaces para mais opções.

Certifique-se de desativar todos os serviços DHCP, por exemplo dhcpcd.

Configurar a velocidade e duplex

Uma autonegociação falhando repetidamente é frequentemente um sintoma de cabeamento defeituoso, portanto verifique as questões físicas antes de assumir que os algoritmos de autonegociação das interfaces são incompatíveis. Se você desativar a negociação automática e configurar a velocidade e o duplex manualmente, a interface do parceiro na outra extremidade do cabo assumirá, por padrão, que a ausência de negociação automática indica uma velocidade de 10 Mbps e um duplex de metade. Para uma operação livre de erros, se você definir a velocidade e o duplex manualmente, deverá garantir que exatamente a mesma velocidade e a mesma configuração duplex estejam configuradas na interface do parceiro.

Se você definir a velocidade e o duplex da sua interface manualmente, algumas tentativas e erros poderão ser necessários. Aqui estão os passos básicos:


Iniciar uma interface sem um endereço IP

Para criar uma interface de rede sem um endereço IP, use o método manual e use os comandos pre-up e post-down para fazer a interface para subir e descer.

   iface eth0 inet manual
      pre-up ifconfig $IFACE up
      post-down ifconfig $IFACE down

Se a interface for uma interface VLAN, os comandos up/down devem ser executados após/antes da criação das vlan. (Você também tem que instalar o pacote vlan.)

   iface eth0.99 inet manual
      post-up ifconfig $IFACE up
      pre-down ifconfig $IFACE down

Nota: Se você criar a interface VLAN apenas para colocá-la em uma ponte, não haverá necessidade de definir a interface da VLAN manualmente. Basta configurar a ponte e a interface da VLAN será criada automaticamente ao criar a ponte (veja abaixo).

Definindo os Servidores de Nomes (DNS)

Antes que um computador possa se conectar a um recurso de rede externo (por exemplo, um servidor da Web), ele deve ter um meio de converter qualquer nome alfanumérico (por exemplo, wiki.debian.org) em endereços de rede numéricos (por exemplo, 140.211.166.4). (A Internet usa esses endereços IP numéricos estruturados como endereços de rede.)

A biblioteca C e outras bibliotecas resolvedoras de endereços olham para o /etc/resolv.conf para uma lista de servidores de nomes. No caso mais simples, esse é o arquivo a ser editado para definir a lista de servidores de nomes. Mas note que vários outros programas para configuração dinâmica ficarão felizes em sobrescrever suas configurações:

  1. O programa resolvconf

  2. O daemon network-manager

  3. Cliente DHCP

Na maioria das situações, o arquivo a ser editado é o arquivo de configuração de tal programa.

Nas situações mais complexas, usar resolvconf é realmente o caminho a seguir, embora em configurações mais simples sejam provavelmente um exagero.

O arquivo de configuração resolv.conf

O arquivo de configuração resolv.conf em /etc/resolv.conf contém informações que permitem um computador conectar-se à uma rede para converter nomes em endereços. (Nota: Não confunda este arquivo de configuração com o programa resolvconf, que infelizmente tem um nome quase idêntico).

O arquivo resolv.conf normalmente contém os endereços IP dos servidores de nomes (resolvedores de nome DNS) que tentarão converter nomes em endereços para qualquer nó disponível na rede. Haverá uma linha ou linhas que se parecerão com isso:

nameserver 12.34.56.78
nameserver 12.34.56.79

Neste exemplo, o sistema está usando servidores de nomes nos endereços IP 12.34.56.78 e 12.34.56.79. Basta editar o arquivo e digitar os endereços IP dos servidores de nomes que você precisa usar após cada nameserver. Adicione mais linhas nameserver se você tiver mais servidores de nomes. Não use este método se você tiver o programa resolvconf instalado.

O arquivo de configuração resolv.conf possui muitas outras opções para definir como o resolvedor (resolver) procura nomes. Veja man resolv.conf para mais detalhes.

O programa resolvconf

O programa resolvconf mantém um registro das informações do sistema sobre os servidores de nomes atualmente disponíveis. Não deve ser confundido com o arquivo de configuração resolv.conf, que infelizmente tem um nome quase idêntico. O programa resolvconf é opcional em um sistema Debian.

O arquivo de configuração resolv.conf contém informações sobre os servidores de nomes para serem usados pelo sistema. No entanto, quando vários programas precisam modificar dinamicamente o arquivo de configuração resolv.conf, eles podem se sobrepor e o arquivo pode ficar fora de sincronia. O programa resolvconf resolve esse problema. Ele age como um intermediário entre programas que fornecem informações de servidor de nomes (por exemplo, clientes dhcp) e programas que usam informações de servidor de nomes (por exemplo, resolvedor de nomes).

Quando o resolvconf está apropriadamente instalado, o arquivo de configuração resolv.conf em /etc/resolv.conf é substituído por um link simbólico para /etc/resolvconf/run/resolv.conf e o resolvedor usa o arquivo de configuração que é gerado dinamicamente por resolvconf em /etc/resolvconf/run/resolv.conf.

O programa resolvconf geralmente é necessário apenas quando um sistema possui vários programas que precisam modificar dinamicamente as informações do servidor de nomes. Em um sistema simples, onde os servidores de nomes não mudam com frequência ou são apenas alterados por um programa, o arquivo de configuração resolv.conf é adequado.

Se o programa resolvconf estiver instalado, você não deve editar o arquivo de configuração resolv.conf manualmente, pois ele será alterado dinamicamente por programas no sistema. Se você precisar definir manualmente os servidores de nomes (como em uma interface estática), inclua uma linha como a seguinte no arquivo de configuração interfaces em /etc/network/interfaces:

dns-nameservers 12.34.56.78 12.34.56.79

Coloque a linha recuada em uma instância do iface, por exemplo, logo após a linha gateway. Digite os endereços IP dos servidores de nomes que você precisa usar após dns-nameservers. Coloque todos eles em uma linha separados por espaços. Não se esqueça dos "s" no final de dns-nameservers.

O programa resolvconf é uma adição relativamente nova ao Debian e muitos programas mais antigos precisam ser atualizados ou reconfigurados para funcionar corretamente com ele. Se você tiver problemas, veja /usr/share/doc/resolvconf/README. Ele tem muita informação sobre como fazer outros programas se darem bem com resolvconf.

Configuração do DNS para o NetworkManager

O NetworkManager irá sobrescrever as configurações do dhcp, sobrescrevendo o resolv.conf mesmo se você configurou o DNS em /etc/dhcp/dhclient.conf, por exemplo fazendo com que o DNS pesquise primeiro o domínio local, que pode ter que expirar antes que a resolução de DNS continue causando longos tempos de resolução de DNS. Você pode ter uma ideia do que o NetworkManager acha que as configurações devem fazer executando o comando nm-tool.

Você pode configurar essas configurações usando uma GUI iniciando o nm-connection-editor, que atualmente (13.11.23) não pode ser encontrado no menu Ferramentas do Sistema → Administração, mas deve ser iniciado manualmente a partir da linha de comando. Após o lançamento:

  1. Escolha uma conexão (na guia Com fio ou Sem fio) e clique em Editar.
  2. Clique na guia Configurações do IPv4
  3. Escolha 'Somente endereços automáticos (DHCP)' em vez de apenas 'Automático (DHCP)'.
  4. Digite os servidores DNS no campo “Servidores DNS”, separados por espaços (por exemplo, 208.67.222.222 para OpenDNS).
  5. Clique em "Aplicar".

O NetworkManager salva essas configurações em /etc/NetworkManager/system-connections/nome-de-conexão. Exemplo /etc/NetworkManager/system-connections/Wired connection 1:

[802-3-ethernet]
duplex=full
mac-address=XX:XX:XX:XX:XX:XX

[connection]
id=Wired connection 1
uuid=xxx-xxxxxx-xxxxxx-xxxxxx-xxx
type=802-3-ethernet
timestamp=1385213042

[ipv6]
method=auto

[ipv4]
method=auto
dns=208.67.222.222;
ignore-auto-dns=true

Executar a ferramenta nm novamente deve mostrar que o NetworkManager agora tem a ideia correta de como seu DNS deve ser resolvido.

Configuração do Cliente DHCP

Examplo: dhclient3 usa /etc/dhcp/dhclient.conf. A configuração que você quer é

supersede domain-name-servers 12.34.56.78, 12.34.56.79;

ou talvez

prepend domain-name-servers 12.34.56.78, 12.34.56.79;

Veja a página de manual do dhclient.conf(5) para detalhes.

Bridging

Bridging coloca várias interfaces no mesmo segmento de rede. Isso é muito popular ao conectar um servidor a vários switches para alta disponibilidade ou virtualização. Neste último caso, normalmente é usado para criar uma ponte no host (por exemplo, dom0) e colocar as interfaces virtuais dos convidados (domU) na ponte.

Exemplo: Conecte um servidor a dois switches (via eth0 e eth1) definindo bridge 0 e forneça ao servidor um endereço IP nesta sub-rede:

auto br0
iface br0 inet static
        address 10.10.0.15
        netmask 255.255.255.0
        gateway 10.10.0.1
        bridge_ports eth0 eth1
        up /usr/sbin/brctl stp br0 on

Se um servidor estiver conectado a vários switches, geralmente será necessário executar o protocolo de árvore geradora (Spanning Tree Protocol - STP) para evitar loops. Portanto, o STP deve ser ligado por meio do comando "up", como mostrado acima.

Exemplo: Configuração de ponte sem configuração de endereço IP (use "manual" em vez de "estático") para "encaminhar" uma interface para uma VM guest. (A configuração da ponte estática contém apenas uma interface física. A interface virtual será adicionada à ponte quando a VM for iniciada.)

auto br1
iface br1 inet manual
        bridge_ports eth4
        up /usr/sbin/brctl setageing br1 0
        up /usr/sbin/brctl stp br0 off

Nota: A ponte do Linux suporta apenas STP, sem RSTP (Rapid Spanning Tree). Portanto, ele suporta apenas os antigos custos de STP, não os novos custos de RSTP (consulte WikiPedia:Spanning_Tree_Protocol). Isso geralmente é bom com o Cisco Switches, mas por exemplo os switches Juniper usam os custos do RSTP e, portanto, isso pode levar a diferentes cálculos de árvore de abrangência e problemas de ciclos. Isso pode ser corrigido pela configuração dos custos manualmente, seja no comutador ou no servidor. A definição do custo no switch é preferida, já que no Linux retorna aos custos padrão sempre que uma interface faz down/up.

Bridge sem comportamento de Switch

Por padrão, a ponte no Linux age como um switch. Isto significa registrar os endereços MAC por trás de uma porta e ao encaminhar um pacote com MAC este é enviado apenas para o seu destino, caso contrário os pacotes serão transmitidos para todos via broadcast.

Em algumas configurações isso é ruim. Por exemplo, se a ponte conecta duas interfaces de tronco e os mesmos endereços MAC podem ser vistos de ambas as interfaces, configuração comum de acontecer no uso de VLAN. Como a ponte Linux não suporta VLANs (tabelas de endereço MAC dedicadas para cada VLAN), nessas configurações você precisa desabilitar o aprendizado do endereço MAC e colocar a ponte em um modo "bridge" real com:

        up /sbin/brctl setageing br0 0
        up /sbin/brctl stp br0 off

Como usar vlan (dot1q, 802.1q, trunk) (Etch, Lenny)

Configuração Manual

modprobe 8021q

apt install vlan

vconfig add eth0 222    # 222 is vlan number
ifconfig eth0.222 up
ifconfig eth0.222 mtu 1496    #optional if your network card doesn't support MTU 1504B
ifconfig eth0.222 10.10.10.1 netmask 255.255.255.0

Script de configuração inicial da Rede

Em /etc/modules adicione a linha:

8021q

Em /etc/network/interfaces na seção iface adicione o parâmetro:

        vlan-raw-device eth0

O nome da interface deve ser o nome da interface não processada (o mesmo especificado pelo vlan-raw-device), depois um ponto e, em seguida, o ID da VLAN, por exemplo: eth0.100. Em vez disso, ele pode ser "vlan" e, em seguida, o ID da VLAN, por exemplo: vlan100. Em ambos os casos, o ID da VLAN está no final e esse é o único local em que ela é configurada.

Nota: Se você nomear suas interfaces de VLAN ethX.YYY, não será necessário especificar o vlan-raw-device, pois o dispositivo bruto pode ser recuperado a partir do nome da interface.

Por exemplo:

auto eth0.222
iface eth0.222 inet static
        address 10.10.10.1
        netmask 255.255.255.0
        vlan-raw-device eth0

Pontes e VLANs

Se você criar interfaces VLAN apenas para colocá-las em uma ponte, não haverá necessidade de definir as interfaces de VLAN manualmente. Basta configurar a bridge e a interface da VLAN será criada automaticamente ao criar a ponte, por exemplo:

auto br1
iface br1 inet manual
        bridge_ports eth0.99 eth1.99
        up /usr/sbin/brctl stp br0 on

Ressalvas ao usar ponte e vlan

#/etc/network/interfaces
auto eth0 bri0
iface eth0 inet static
        address 192.168.1.1
        netmask 255.255.255.0
iface eth0.110 inet manual
        vlan-raw-device eth0
iface bri0 inet static
        address 192.168.110.1
        netmask 255.255.255.0
        bridge_ports eth0.110
        bridge_stp on
        bridge_maxwait 10

Se você estiver usando uma configuração de VLAN em ponte, o que provavelmente é útil para redes em ambientes de virtualização, tome cuidado para conectar apenas um dispositivo de ponte ou dispositivos de VLAN a um dispositivo físico subjacente, como mostrado acima. Anexar a interface física (eth0) a uma ponte (por exemplo, bri1) usando a mesma interface física em VLANs aparentemente diferentes resultará em todos os pacotes permanecerem marcados com as identificações da vlan. (Kernel mais recente que 2.6.37 e mais antigo que 3.2).

Como criar tolerância a falhas com vlan (Etch)

NetworkConfiguration/debian_bonding.png

NetworkConfiguration/debian_bonding.dia

Como configurar uma dos servidores da figura acima agrupando servidores de reserva com 3 vlan {vlan10,vlan20,vlan30} sem SPOF e sem vlan nativa.

apt install vlan ifenslave-2.6

Configuração de Rede

Exemplo de configuração de interfaces do switch Cisco

interface GigabitEthernet1/2
 description eth1
 switchport
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 10,20,30
 switchport mode trunk
 no ip address
 no cdp enable
 spanning-tree portfast trunk

Agrupar com backup ativo

Crie um arquivo /etc/modprobe.d/bonding.conf contendo:

alias bond0 bonding
options bonding mode=active-backup miimon=100 downdelay=200 updelay=200 primary=eth1

/etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto bond0
iface bond0 inet manual
        up ifconfig bond0 0.0.0.0 up
        slaves eth1 eth0
auto vlan10
iface vlan10 inet static
        address 10.10.10.12
        netmask 255.255.0.0
        vlan-raw-device bond0
        gateway 10.10.0.1
        dns-search hup.hu
        dns-nameservers 10.10.0.2
auto vlan20
iface vlan20 inet static
        address 10.20.10.12
        netmask 255.255.0.0
        vlan-raw-device bond0
auto vlan30
iface vlan30 inet static
        address 10.30.10.12
        netmask 255.255.0.0
        vlan-raw-device bond0

Como configurar o MTU (Máxima Unidade de Transferência/tamanho do pacote - Max transfer unit / packat size) com VLANS sobre uma interface combinada

O MTU precisa ser configurado na interface combinada e nas interfaces escravas após o reset da configuração ter sido aplicado às interfaces de ligação. Isso é feito usando uma linha de post-up na configuração da interface de ligação.

auto bond0
iface bond0 inet manual
        up ifconfig lacptrunk0 0.0.0.0 up
        slaves eth0 eth1
# bond-mode 4 = 802.3ad
        bond-mode 4
        bond-miimon 100
        bond-downdelay 200
        bond-updelay 200
        bond-lacp-rate 1
        bond-xmit-hash-policy layer2+3
        post-up ifconfig eth0 mtu 9000 && ifconfig eth1 mtu 9000 && ifconfig bond0 mtu 9000

#vlan devices will use the MTU set on bond0 device
auto vlan101
iface vlan101 inet static

        address 10.101.60.123
        netmask 255.255.255.0
        gateway 10.155.60.1
        vlan-raw-device bond0

auto vlan151
iface vlan151 inet static

        address 192.168.1.1
        netmask 255.255.255.0
        vlan-raw-device bond0

Vários endereços IP em uma interface

O apelidamento de interface permite que uma interface tenha vários endereços IP. Isso é útil quando mais de um servidor é visível via a Internet. Observe que os hosts virtuais podem suportar vários servidores Apache com um único endereço IP. O Apache responde ao nome de domínio fornecido pelo cliente no cabeçalho HTTP. Em muitas outras situações, um IP externo é necessário para cada servidor usando uma porta.

Método legado

Este texto /etc/network/interfaces atribui três endereços IP para eth0.

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42
    netmask 255.255.255.0
    gateway 192.168.1.1

auto eth0:0
allow-hotplug eth0:0
iface eth0:0 inet static
    address 192.168.1.43
    netmask 255.255.255.0

auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
    address 192.168.1.44
    netmask 255.255.255.0

Um apelido de interface não deve ter "gateway" ou "dns-nameservers"; atribuição dinâmica de IP é permitida.

A configuração acima é o método tradicional anterior que reflete o uso tradicional de ifconfig para configurar dispositivos de rede. ifconfig introduziu o conceito de interfaces aliased ou virtual. Esses tipos de interfaces virtuais possuem nomes da forma interface:inteiro e o ifconfig os trata de maneira muito semelhante às interfaces reais.

Atualmente, o ifupdown usa o utilitário ip do pacote iproute2 em vez de ifconfig. O mais novo utilitário ip não usa o mesmo conceito de aliases ou interfaces virtuais. No entanto, ele suporta a atribuição de nomes arbitrários às interfaces (elas são chamadas de rótulos). ifupdown usa este recurso para suportar interfaces com alias enquanto usa ip.

Método iproute2

Além disso, o ifupdown suporta a especificação de múltiplas interfaces repetindo seções iface com o mesmo nome de interface. A principal diferença do método descrito acima é que todas essas seções são tratadas pelo ifupdown como apenas uma interface, assim o usuário não pode adicionar ou removê-las individualmente. No entanto, comandos up/down, assim como scripts, são chamados para cada seção como costumava ser.

Note, no entanto, que este método é perigoso! Certas combinações de driver/hardware podem, às vezes, não conseguir ativar o link se nenhuma etiqueta for designada às interfaces de alias. (Observado isto no Debian Wheezy e Jessie com o Controlador Gigabit Ethernet RTL8111/8168/8411 PCI Express (rev 01) auto-negociando para 10/full. Um aviso semelhante de outra pessoa existe no histórico desta página.)

Este texto /etc/network/interfaces atribui três endereços IP a eth0.

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42
    netmask 255.255.255.0
    gateway 192.168.1.1

iface eth0 inet static
    address 192.168.1.43
    netmask 255.255.255.0

iface eth0 inet static
    address 192.168.1.44
    netmask 255.255.255.0

# adding IP addresses from different subnets is also possible
iface eth0 inet static
    address 10.10.10.14
    netmask 255.255.255.0

Abordagem manual:

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42  
    netmask 255.255.255.0
    gateway 192.168.1.1
    up   ip addr add 192.168.1.43/24 dev $IFACE label $IFACE:0
    down ip addr del 192.168.1.43/24 dev $IFACE label $IFACE:0
    up   ip addr add 192.168.1.44/24 dev $IFACE label $IFACE:1
    down ip addr del 192.168.1.44/24 dev $IFACE label $IFACE:1
    up   ip addr add 10.10.10.14/24 dev $IFACE label $IFACE:2
    down ip addr del 10.10.10.14/24 dev $IFACE label $IFACE:2


CategoryNetwork