Cenário:
eth0= interneteth1= rede interna
Objetivo: compartilhar internet da eth0 com a eth1.
1. Ativar roteamento no Linux
echo 1 > /proc/sys/net/ipv4/ip_forward
Persistente:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
2. Limpar regras antigas
iptables -F
iptables -t nat -F
iptables -X
3. Política padrão (segurança básica)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
4. Liberar tráfego essencial
Loopback:
iptables -A INPUT -i lo -j ACCEPT
Conexões já estabelecidas:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
5. Permitir rede interna sair para internet
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
6. Ativar NAT (Masquerade)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
7. (Opcional) Liberar SSH no firewall
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
8. Persistir via rc.local
Ao invés de usar pacote, você pode jogar tudo no /etc/rc.local pra subir no boot.
Exemplo:
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
exit 0
Dê permissão:
chmod +x /etc/rc.local
Obs: se teu sistema não tiver rc.local habilitado por padrão (comum em distros mais novas), tenho outro post explicando como ativar ele corretamente no systemd.
Da-lhe. Básico, direto e funcional pro dia a dia, o resto vc pode incrementar.
