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:
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:
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:
Agora é só testar! Veja o acesso à Internet funcionando na máquina cliente:
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.
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
Sou seu fãn Cara!