Configurando interface de rede no Debian 10/11/12

Neste tutorial vamos aprender a configurar nossas interfaces de rede no Debian e estar pensando um pouco mais para fazer uma boa escolha na hora de realizar suas configurações.

Antes de mais nada você precisa saber o que você quer!? Qual será o cenário!? Vejo muitas pessoas cometerem um desastre nos dias hoje quando se trata em colocar um simples IP público em um servidor. E por isso escrevo este “artigo” meio que tutorial.

No Debian você pode configurar os endereços IPs bem como algumas regras no arquivo /etc/network/interfaces, irei levar como base uma instalação recém-feita:

Instalação do Debian 12 bookworm
Instalação do Debian 11 Bullseye
Instalação do Debian 10 Buster

Irei usar o editor nano que é o que já vem instalado, mas você pode usar o editor de sua escolha.

# nano /etc/network/interfaces

Se em sua instalação você informou o endereço IPv4 seu arquivo será algo como este, ressaltando que enp0s3 é o nome da interface, e ela pode ser outra.

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet static
        address 192.168.87.3/24
        gateway 192.168.87.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 1.1.1.1 8.8.8.8

Alterar DNS

Por mais que vimos dns-nameserver nesta parte da configuração de rede, o servidor não irá usa-los, o arquivo qual será levado em conta é o /etc/resolv.conf

# nano /etc/resolv.conf 
nameserver 1.1.1.1
nameserver 1.0.0.1
nameserver 2606:4700:4700::1111
nameserver 2606:4700:4700::1001

Se sua instalação foi feita com DHCP ativo, sua configuração será:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet dhcp

E ai, o que queremos ?

Planejar, é claro! Se você esta montando seu data center onde terá vários servidores, o que será melhor adorar? Quebrar um prefixo /30 para cada servidor que eu for implementar? NÃO!. Quer me ver com os olhos sangrando é ver alguém que tem vários servidores e para cada servidor o mesmo quebrou um /30 público. Pense comigo você tem 2 servidores você precisa 2 IPs, se você quebrou 2 /30 você terá sim seus 2 IPs públicos mas você acabou de jogar no LIXO outros 6 endereços IPs, e nos dias de hoje 1 único IP publico é quase como o ditado: Em terra de cego, quem tem um olho é rei?

Então o que fazer, o mais sensato é você pensar e quebrar um prefixo maior para que você não precise estar quebrando prefixos a cada servidor. Antes de mais nada imagine onde você quer chegar! Quantos servidores irá montar, quantos IPs publicos e privados irá precisar… Sempre que dou uma consultoria essa é a primeira coisa faço, “sento” com o cliente e estudo. E com base neste estudo reservamos já um/dois prefixo /29, /28 ou 27 até mesmo um /24 público/privado, vai depender muito de cada cenário, se meu cliente tem milhares de hospedagem com certeza o número de servidores em seu data center é enorme.

Outro grande erro em servidores é o NAT mal aplicado! Muitas pessoas principalmente pessoal de provedor ainda tem costume de colocar em seu Mikrotik de borda um belo NAT para fornecer internet a um servidor, ou apenas para fazer um redirecionamento de portas. Quando aplicamos regras de NAT em um roteadores causamos muitos malefícios para o bichinho! Então vamos para de fazer isso? Vou lhe ajudar!

É claro que isso é muito relativo de cada empresa, já fiz NAT com borda? Já! Depende do tamanho da empresa e organização de cada um. Então não leve ao pé da letra! Estou tentando lhe dizer o que é o melhor a ser feito!

Já fui criticado por pedir para cliente comprar uma roteador para ser apenas o gateway dos servidores. “Rudimar é louco”. E eu digo: Mais louco é quem faz NAT em roteador de borda! . Em alguns casos eu recomendo um router para ligar os servidores, pois você pode ter diversos recursos na manga, e basta você fechar um iBGP/OSPF entre seu roteador de borda com seu roteador “data”.

Exemplos

Receber IP via DHCP

O mais simples a ser feito quando seu servidor ira receber IP automaticamente.

allow-hotplug enp0s3
iface enp0s3 inet dhcp 

Fixando IPv4 e IPv6

Basicamente o que iremos usar em 95% das vezes

allow-hotplug enp0s3
iface enp0s3 inet static
        address 200.200.200.2/28
        gateway 200.200.200.1

iface enp0s3 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:cafe::2/64
        gateway 2804:bebe:cafe::1

Adicionando Multiplos IPs

Quando quiser mais de um IP no mesmo servidor, caso for outras interfaces basta ajustar para o nome da interface

allow-hotplug enp0s3
iface enp0s3 inet static
        address 200.200.200.2/28
        gateway 200.200.200.1

iface enp0s3 inet static
        address 200.200.200.3/28

iface enp0s3 inet static
        address 200.200.201.1/32

iface enp0s3 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:cafe::2/64
        gateway 2804:bebe:cafe::1

iface enp0s3 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:cafe::3/64

iface enp0s3 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:ffff:ffff::ffff
        netmask 128

IP na Loopback

Você pode usar quando estiver roteando um IP (OSFP/iBGP), exemplo com FRR, porém neste caso estaria fazendo a adição dos IPs pelo próprio FRR.
Mas se você fará algum tipo de rota estática com intuito exemplo de fazer ECMP (Equal Cost Multi-Path), é importante que os IPs de anycast estejam na interface de loopback para que não tenha conflito.

auto lo 
iface lo inet loopback

iface lo inet static
        address 200.200.200.200/32

Ponto a ponto – Pointopoint

Aqui muitos ficam bugado, no meu cenário perceba que temos um servidor conectado ao roteador de borda, agora imagine, que neste roteador de borda não tem nenhum IP público por politicas de segurança, mas ai vem o estagiário e e te diz: Vamos quebrar um /30 pub! Então saiba que você não precisa fazer isso, você pode adicionar um IP ponto a ponto, onde temos IP diferente dos dois lados, então como no exemplo a baixo podemos add no nosso roteador de borda 10.50.50.1 e no nosso servidor 200.200.200.0.

allow-hotplug enp0s3
iface enp0s3 inet static
        address 200.200.200.0
        pointopoint 10.50.50.1
        netmask 255.255.255.255
        gateway 10.50.50.1

Isso funciona? É claro! E você não irá precisar deixar seu roteador de borda com IP público acessível pelo mundo, e muito menos fazer um NAT! Como sou bonzinho vou deixar aqui como você configuraria isso no seu Mikrotikão! Ficaria assim:

RouterOS# /ip address
RouterOS# add address=10.50.50.1 comment=Pointopoint interface=ether1 network=200.200.200.0

Simples não?! Testa ai! Depois me conta!

Privado com saída em origem Público

Quase que como o exemplo do pointopoint, porem em alguns roteadores não temos o suporte para fazer pointopoint, uma saída é você quebrar um prefixo privado (estou usando /30, mas se tivesses vários servidores junto faria já um prefixo maior). No exemplo então meu IP público é o 200.200.200.200/32 qual irei colocar na mesma interface da WAN que tenho o 10.33.33.2/30, logo o roteador é o 10.33.33.1. Desta forma você tem uma conversa entre as interfaces por IP privado, porem os pacotes são originados com o endereço de IP público.

allow-hotplug enp0s3
iface enp0s3 inet static
    address 200.200.200.200/32
iface enp0s3 inet static
    address 10.33.33.2/30
    post-up ip route add default via 10.33.33.1 src 200.200.200.200

Mas ai temos um problema, seu servidor irá gerar os pacotes de origem publico, e irá enviar para internet, mas quando o pacote estiver voltando ao chegar em seu roteador de borda é necessário que você tenha uma rotá para o mesmo. Então crie um rota estática dizendo que Destino 200.200.200.200 o gateway é 10.33.33.2 IP este do seu servidor. Ex.:
Exemplo RouterOS:

RouterOS# /ip address add address=10.33.33.1/30 interface=ether2
RouterOS# /ip route add dst-address=200.200.200.200/32 gateway=10.33.33.2

É possível fazer isso para IPv6 também? É claro!

allow-hotplug enp0s3

IPv6 Público
iface enp0s3 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:cafe::cafe
        netmask 128

# IPv6 Privado
iface enp0s3 inet6 static
        pre-up modprobe ipv6
        address fd00:a::2/64
        post-up ip -6 route add default via fd00:a::1 src 2804:bebe:cafe::cafe

Exemplo RouterOS:

RouterOS# /ipv6 address add address=fd00:a::1/64 advertise=no interface=ether2
RouterOS# /ipv6 route add dst-address=2804:bebe:cafe::cafe/128 gateway=fd00:a::2

Criando VLAN e adicionado IP nela

Para adicionar um IP a uma VLAN precisamos carregar o módulo 8021q, e coloca-lo para iniciar com sistema.

# modprobe 8021q
# echo "8021q" >> /etc/modules

Agora basta editar sua interface e incluir um ponto e o numero da VLAN. No exemplo VLAN 171

allow-hotplug enp0s3.171
iface enp0s3.171 inet static
       address 10.88.88.2/24

PBR – Roteamento baseado em políticas

Eu particularmente uso em Accel-ppp para separar o trafego de IPs publicos de Privados, direcionando apenas os IPs de NAT para a caixa do CGNAT. É necessário criar uma nova tabela de rotas, irei chamar de cgnat no exemplo.

# echo "100 cgnat" >> /etc/iproute2/rt_tables
# cat /etc/iproute2/rt_tables
# ip route list table main

Fecho um /30 entre router e servidor e digo que todos os IPs que 100.64.0.0./10 deve sair pela tabela de rotas com o CGNAT.

allow-hotplug enp0s3
iface enp0s3 inet static
    address 10.200.200.2/30
    post-up ip route add default via 10.200.200.1 dev enp0s3 table cgnat
    post-up ip rule add from 100.64.0.0/10 lookup cgnat

Blackhole

Normalmente útil em casos que você usa seu servidor como roteador. Você irá colocar após as configurações da interface o post-up passando o prefixo ou ip qual irá subir em blackhole

allow-hotplug enp0s3
iface enp0s3 inet static
    address 10.33.33.2/30
    post-up ip route add blackhole 200.200.200.128/26 metric 250 || true

Agregação

Instalar o ifenslave: Este pacote permite configurar a agregação de portas no Linux.

# apt install ifenslave

Carregar o Módulo de Bonding

# echo "bonding" | tee -a /etc/modules
# modprobe bonding

Verificar se o módulo foi carregado corretamente:

# lsmod | grep bonding

802.3ad (LACP): Ideal para aumentar a largura de banda e fornecer redundância quando conectado a um switch que suporta LACP.
balance-xor: Útil para balanceamento de carga baseado em XOR, adequado para ambientes que não suportam LACP.
balance-rr (Round Robin): Simples e eficaz para cargas de trabalho que exigem balanceamento de carga sem configuração específica do switch.
active-backup: Fornece redundância sem aumento de largura de banda, útil quando a continuidade do serviço é mais crítica do que a capacidade.
balance-tlb (Transmit Load Balancing) e balance-alb (Adaptive Load Balancing): Ambos são bons para ambientes onde a configuração do switch não pode ser alterada ou não suporta LACP. O ALB também tenta balancear o tráfego de entrada.

Aqui estão exemplos para vários modos de bonding

# vim /etc/network/interfaces
802.3ad (LACP)

Aplicação: Ideal para ambientes de alta disponibilidade e alta largura de banda, como data centers ou servidores que precisam de conexões robustas e de alta capacidade. É necessário que ambos os lados (o Debian e o switch/router) suportem LACP.

auto bond0
iface bond0 inet static
    address 192.168.0.2/24
    bond-slaves enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode 802.3ad
    bond-xmit-hash-policy layer2+3
Balance-xor

Aplicação: Bom para ambientes onde o tráfego de rede tem padrões conhecidos que podem ser distribuídos de forma eficaz usando XOR. Pode ser usado para melhorar o desempenho quando LACP não é suportado.

auto bond0
iface bond0 inet static
    address 192.168.0.2/24
    bond-slaves enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode balance-xor
    bond-xmit-hash-policy layer2+3
Balance-rr (Round Robin)

Aplicação: Simples e eficaz para distribuir cargas de forma equitativa sobre as interfaces físicas. Útil em ambientes onde a ordem de chegada dos pacotes não é crítica.

auto bond0
iface bond0 inet static
    address 192.168.0.2/24
    bond-slaves enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode balance-rr
Active-backup

Aplicação: Ideal para redundância sem aumentar a largura de banda. Se a interface primária falhar, outra assumirá. Recomendado para serviços críticos que precisam de alta disponibilidade mais do que de alta capacidade.

auto bond0
iface bond0 inet static
    address 192.168.0.2/24
    bond-slaves enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode active-backup
    bond-primary enp4s0f0
Balance-tlb (Transmit Load Balancing)

Aplicação: Útil quando a modificação de configuração do switch não é possível. Realiza o balanceamento de carga de saída de acordo com a carga atual de cada interface. Não requer suporte específico do switch.

auto bond0
iface bond0 inet static
    address 192.168.0.2/24
    bond-slaves enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode balance-tlb
Balance-alb (Adaptive Load Balancing)

Aplicação: Similar ao balance-tlb, mas também tenta balancear o tráfego de entrada, o que pode ser útil em servidores web ou de aplicativos. Essa modalidade não requer configuração especial do switch.

auto bond0
iface bond0 inet static
    address 192.168.0.2/24
    bond-slaves enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode balance-alb

Reiniciar o sistema para aplicar as alterações:

# reboot

Verificar o status do serviço de rede para garantir que não houve erros, e a configuração de bonding.

# systemctl status networking
# journalctl -u networking.service
# cat /proc/net/bonding/bond0

Considerações finais

Sempre que editar o arquivo /etc/network/interfaces para que as configurações sejam carregadas será necessário reiniciar seu servidor, você até pode subir a interface com auto ao invés de allow-hotplug, mas não irei abordar aqui.

Caso você queira adicionar/remover IPs manualmente (em memória/perde ao reiniciar) você pode usar o comando ip, segue exemplo, onde enp0s3 é o nome da interface.
Adicionar:

# ip addr add 192.168.7.7/32 dev enp0s3
# ip -6 addr add 2001:db8:1::1/128 dev enp0s3

Visualizar:

# ip address 

Remover:

# ip addr del 192.168.7.7/32 dev enp0s3
# ip -6 addr del 2001:db8:1::1/128 dev enp0s3

Exibe interfaces / Endereços IPs

# ip -br a
# ip -br addr show
# ip -br link
# ip -br link show

Exibir informações sobre todas as interfaces de rede:

# ip a
# ip addr
# ip addr show 

Exibir informações sobre todas as interfaces de rede IPv4:

# ip -4 a

Exibir informações sobre todas as interfaces de rede IPv6:

# ip -6 a

Exibir informações sobre uma interface de rede específica:

# ip a show eth0
# ip a list eth0
# ip a show dev eth0

Mostrar apenas interfaces em execução

# ip link ls up

Adicionar um endereço IPv4/IPv6:

# ip a add {ip_addr/mask} dev {interface}
# ip a add 10.0.1.200/255.255.255.0 dev eth0
# ip a add 10.0.1.200/24 dev eth0

Remover endereço IP

# ip a del {ipv6_addr_OR_ipv4_addr} dev {interface}
# ip a del 10.0.1.200/24 dev eth0

Desligando a interface

# ip link set dev eth1 down

Ligando a interface

# ip link set dev eth1 up

Ajusda

# man ip
# ip --help

Comandos antigos X Novo comando

Velho # ifconfig -a
 Novo # ip a

Velho # ifconfig eth0 down
 Novo # ip link set eth0 down

Velho # ifconfig eth0 up
 Novo # ip link set eth0 up

Velho # ifconfig eth0 10.0.2.24
 Novo # ip addr add 10.0.2.24/24 dev eth0

Velho # ifconfig eth0 netmask 255.255.255.0
 Novo # ip addr add 10.0.1.1/24 dev eth0

Velho # ifconfig eth0 mtu 9000
 Novo # ip link set eth0 mtu 9000

Velho # ifconfig eth0:0 10.0.2.25
 Novo # ip addr add 10.0.2.25/24 dev eth0

Velho # netstat -g
 Novo # ip maddr

Velho # route
 Novo # ip r

Velho # route add -net 10.0.2.0 netmask 255.255.255.0 dev eth0
 Novo # ip route add 10.0.2.0/24 dev eth0

Velho # route add default gw 10.0.2.254
 Novo # ip route add default via 10.0.2.254

Velho # arp -a
 Novo # ip neigh

Velho # arp -v
 Novo # ip -s neigh

Velho # arp -s 10.0.2.33 01:02:03:04:05:06
 Novo # ip neigh add 10.0.3.33 lladdr 01:02:03:04:05:06 dev eth0

Velho # arp -i eth0 -d 10.0.2.254
 Novo # ip neigh del 10.0.2.254 dev eth0

Velho # netstat
 Novo # ss

Velho # netstat -tulpn
 Novo # ss -tulpn

Velho # netstat -neopa
 Novo # ss -neopa

Espero ter colaborado com uma pequena parcela em seu conhecimento! Desculpa o português e as palavras faltando letras, é difícil conseguir tempo para vir aqui escrever e revisar, então abro meu “bloco de notas” e vou escrevendo…

Curtiu o conteúdo? Quer me ajudar manter o blog? 🙂

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Participe do canal no telegram para ficar atualizado sempre que publicar um novo tutorial.

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Abraço!

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

16 Resultados

  1. jadson disse:

    como faria para fazer com que o linux funcionasse com vlan indo de a para b sem ter ip no linux? como um switch tem o tutorial ai??

  2. Elias Gleer disse:

    Sigo seu blog a muito tempo e esse tutorial aqui foi pra um nível absurdo de informação.
    Muito obrigado por compartilhar tanto conhecimento útil para comunidade Open

  3. Meus parabens por manter esse blog repleto de conhecimento didatico e pratico, fico meuito feliz e ver que voce tem toda uma dedicação em passar conhecimento.
    Seguindo esses encinametos e possivel aprender e resolver alguns problemas que nos aparecem no decorrer do caminho, mas gostaria muito se voce pudesse fazer o mesmo com o modo (AUTO) do debian.

  4. Antonio Carlos S. Júnior disse:

    Boa tarde! Fui obrigado a instalar o Debiam 11, em decorrência de um software de automação, minha experiencia é com o OpenSuse. Deu para ver que vc entende do assunto, assim sendo, se possível, que vc me indique um link para eu resolver o seguinte:
    Tenho um ip fixo e duas placas de rede, tenho um dominio na FAPESP, preciso configurar o bind9 e as duas placas de rede com ipv4 fixo, eth0 e eth1. No Suse sei como se faz, mas no Debian é diferente, os arquivos estão em outros lugares. Já alterei para o processo antigo, eth0, eth1,… No Suse configuro o DNS em dois diretórios: /etc/named.conf e /var/lib/named. Você poderia me indicar algum link onde eu possa resolver isto? obrigado!!

  5. ronniel disse:

    muito top..

  6. Paulo disse:

    Fiz o esquema do pointopoint funcionou top demais.
    Sabia fazer no MikroTik, mas faltava aprender fazer isso no GNU/Linux.
    Muito obrigado por compartilhar este conhecimento!

  7. Carvalho (ppcarvalhof) disse:

    Saberia me dizer se é possível, num servidor Linux (sou fã dos Debian), configurar somente o hostID estaticamente e manter o networkID do v6? Por exemplo, configurar a interface ens192 com o hostID ::c0ca/64 e, via SLAAC essa máquina “pegar” o 2001:db8:171::/64 e gerar o endereço 2001:db8:171::c0ca…

    E em relação a usar um /32 na loopback e, fazer um NAT no próprio servidor quando a conexão for para a Internet?

    Obrigado pelo post e pelo site!

  8. diego disse:

    point to point top.
    vou testar

  1. 9 de novembro de 2021

    […] obrigatória: Configurando interface de rede no Debian 11 Como melhorar a produtividade no seu Debian após […]

  2. 16 de fevereiro de 2022

    […] muito de aplicar em servidores é a seguinte (falo muito de como configurar interface de redes nesse tutorial, recomento uma […]

  3. 8 de fevereiro de 2023

    […] como: eth0 eth1… wlan0 wlan1… faça um ajuste no grub: OBS: Será necessário que você reconfigure a placa de rede […]

  4. 1 de junho de 2023

    […] muito de aplicar em servidores é a seguinte (falo muito de como configurar interface de redes nesse tutorial, recomendo uma […]

  5. 6 de junho de 2023

    […] recomendada: Configurando interface de rede no Debian 11 Como melhorar a produtividade no seu Debian após […]

  6. 6 de fevereiro de 2024

    […] Pointopoint (Ponto a ponto) assim utilizando de apenas um endereço IP público, você pode (deve) ler este tutorial para conhecer varias possibilidades de configuração de rede pensa em como economizar endereços […]

  7. 10 de abril de 2024

    […] Leitura recomendada: Configurando interface de rede no Debian […]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *