Na verdade, você não precisa realmente do iptables para o roteamento básico - o iptables ajuda você com a filtragem e o NAT (e outras coisas também).
Você pode ativar o encaminhamento de pacotes com:
sysctl -w net.ipv4.conf.all.forwarding=1
Adicione net.ipv4.conf.all.forwarding=1
ao /etc/sysctl.conf para fazer a configuração ficar firme.
Caso você esteja sendo filtrado no servidor (você pode verificar isso com iptables -nvL
- se a cadeia FORWARD tiver a política ACCEPT que você não está filtrando), é necessário adicionar regras para permitir pacotes a serem encaminhados entre redes:
iptables -I FORWARD -i eth0 -o wlan0 -s wi.red.net.work/24 -d wire.less.net.work/24 -j ACCEPT
iptables -I FORWARD -i wlan0 -o eth0 -s wire.less.net.work/24 -d wi.red.net.work/24 -j ACCEPT
Se você não estiver filtrando, mas quiser (você deve também, a propósito - veja o comentário do @Red Tux, é uma boa prática filtrar por padrão e permitir apenas o mínimo) adicionar as regras anteriores mais esta:
iptables -P FORWARD DROP
Isso altera a política para que todos os pacotes que não correspondam a nenhuma regra sejam descartados.
Além disso, se você está indo para a segurança real, você provavelmente deve filtrar a cadeia INPUT também. Essa cadeia processa as solicitações que chegam ao seu roteador com um IP de destino que corresponde a um dos seus próprios - isto é, conexões de entrada (por exemplo, SSH). Um padrão sensato seria:
iptables -I INPUT -i eth0 -s allowed.admin.ip.here -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -i lo -j ACCEPT
iptables -P INPUT DROP # make sure you've put your IP on the first rule before running this
# or you'll lock you out of the server
Isso permite SSH apenas de um host projetado na rede com fio (observe o aviso), permite todo o tráfego na interface de loopback (exigido por alguns softwares) e descarta todo o restante.
Como você pode ver, você pode permitir apenas algumas portas usando -p tcp|udp --dport N
. Você também deve considerar fazer isso na cadeia FORWARD para aumentar a segurança.