Firewall iptables no Linux – Parte 05: Compartilhamento de Internet

Compartilhar a Internet na rede local com firewall iptables

Nesta lição vamos aprender a compartilhar a Internet em uma rede local usando o firewall iptables.

O que vamos precisar:

  • Uma máquina Linux com duas interfaces de rede, uma pública que pode ser configurada via DHCP e outra privada, com IP estático. Essa máquina será nosso gateway.
  • Um computador ou notebook rodando Linux/Windows/Mac OS X, o qual será nosso cliente para testes.
  • Eventualmente, um switch (para que seja possível conectar mais de um cliente na LAN).
  • Conectividade com a Internet.

Usaremos a seguinte configuração de hardware em nosso projeto:

Compartilhamento de Internet com iptables

Vamos aos procedimentos para compartilhar a Internet conectada à interface pública do gateway Linux com nossa rede interna conectada ao switch:

1. Configurar endereçamento estático na interface conectada à rede interna.

Veja um exemplo do arquivo /etc/network/interfaces de nosso gateway:

Configurar interface de rede no Linux

Note que temos duas interfaces: eth0, com endereço dinâmico (é a interface pública, e está conectada ao nosso roteador), e eth1, com endereço estático, conectada ao switch da rede interna. Usaremos o endereço IP 192.168.10.1 para essa interface.

Opcionalmente, podemos configurar um servidor DHCP nessa máquina para servir configurações de rede às máquinas da rede local.

2. Ativar o encaminhamento de pacotes IP no gateway (IP forwarding):

Para que possamos configurar o compartilhamento de Internet precisamos habilitar o encaminhamento de IP no gateway Linux configurando um parâmetro do kernel. Esse parâmetro está localizado no arquivo /etc/sysctl.conf.

Vamos abrir o arquivo:

# vi /etc/sysctl.conf

e então localizar o parâmetro # net.ipv4.ip_forward = 0. Vamos então remover o símbolo de comentário (#) e ajustar seu valor para 1. O parâmetro deve ficar assim:

net.ipv4.ip_forward = 1

Podemos também ativar o encaminhamento de pacotes IP em tempo de execução usando os comandos a seguir:

# sysctl -w net.ipv4.ip_forward=1
# sysctl -p

3. Próximo passo: configuração do NAT (Network Address Translation).

Para isso, usaremos duas tabelas do iptables: filter e nat. Primeiramente, vamos limpar todas as regras atuais para nos certificarmos de que não haverá interferência das regras atuais (após terminar o compartilhamento de Internet, acrescente as regras criadas ao seu arquivo de regras e carregue-o de volta):

# iptables -X
# iptables -F
# iptables -t nat -X
# iptables -t nat -F

Agora vamos configurar regras na cadeias INPUT e FORWARD da tabela filter para que os pacotes que atravessam o firewall sejam aceitos e processados corretamente:

# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

E então criaremos a regra na tabela nat, cadeia POSTROUTING para habilitar o mascaramento de IP (IP masquerading) na interface WAN (conectada à Internet). Em nosso caso, a interface WAN é a eth0. Altere de acordo com a configuração de seu servidor:

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

4. Agora devemos configurar nossas estações para usar o gateway criado (em nosso caso, 192.168.10.1).

Vamos usar como servidor DNS o endereço 8.8.8.8, que é o servidor DNS público do Google. Se você tiver um servidor DHCP configurado em algum servidor da rede, use a configuração de IP dinâmico na estação de testes. Veja o exemplo de uma estação Windows 7:

compartilhamento de internet com firewall iptables

Agora é só testar! Veja o acesso à Internet funcionando na máquina cliente:

Testando o compartilhamento de internet com iptables no Linux

Caso queira aprender a configurar o servidor DHCP no Linux, assista ao vídeo abaixo do canal Bóson Treinamentos:

Como configurar um Servidor DHCP no Linux

Na próxima lição: Encaminhamento de Portas com o iptables.

 

Sobre Fábio dos Reis (1194 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

2 Comentários em Firewall iptables no Linux – Parte 05: Compartilhamento de Internet

  1. Jose Manoel // 14/07/2021 em 8:38 // Responder

    Fabio, bom dia.

    Obrigado por compartilhar seus conteúdos, são excelentes!!! muito bem explicado, parabéns!!!

    Tenho duvida em como configurar uma rede no Ubuntu Server:
    ens2f0:
    dhcp4: no
    dhcp6: no
    addresses: [200.210.59.110/28]
    gateway4: 200.210.59.97
    nameservers:
    addresses: [1.1.1.1, 8.8.8.8]
    ens2f1:
    dhcp4: no
    dhcp6: no
    addresses: [10.96.200.112/24]
    gateway4: 10.96.200.1
    nameservers:
    addresses: [10.96.200.25, 10.23.0.5]

    Eu não consigo chegar na rede 200.210…, mas quando eu retiro o cabo da rede 10.96…, eu consigo pingar e acessar a rede 200…

    Como eu faço pra definir que meu gateway para internet é a rede 200.210…, sem perder comunicação com a rede 10.96?

    Poderia me ajudar a esclarecer isso?

    Obrigado

  2. Sou seu fãn Cara!

Escreva um comentário

Seu e-mail não será divulgado


*