Eu configurei uma máquina linux local (14.0.4 Ubuntu) como um roteador e posso fazer o seguinte:
- ping servidor/roteador dos clientes
- ping clientes do servidor/roteador
- ping um cliente do outro
pingar o modem/roteador atrás do servidor/roteador
Mas não consigo pingar o google ou 8.8.8.8. Eu recebo os seguintes erros:
ping: unknown host www.google.com
connect: network is unreachable
Mas posso emitir esses dois comandos no servidor/roteador, sem problemas, o que me leva a acreditar que é um iptables
problema relacionado. Alguém pode dar uma olhada no código abaixo, que eu uso para inicializar o iptables, e me dizer se há algum erro flagrante.
#!/bin/bash
ethInternal=eth1
ethExternal=eth0
sudo iptables --flush
sudo iptables --table nat --flush
sudo iptables --delete-chain
sudo iptables --table nat --delete-chain
sudo iptables -t nat -A POSTROUTING -o $ethExternal -j MASQUERADE
sudo iptables -A FORWARD -i $ethExternal -o $ethInternal -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $ethInternal -o $ethExternal -j ACCEPT
EDITAR 1
client: netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.66.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
EDITAR 2
client: route add -net default gw 192.168.66.254
client: netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.66.254 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.66.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
EDITAR 3
SV-01: vi /var/log/kern.log
A seção relevante do arquivo de log pode ser encontrada aqui .
O cliente não possui uma rota padrão por meio de sua caixa de roteador. Tentar
no cliente, onde
a.b.c.d
é o endereço voltado para o cliente do firewall.Bem, sua configuração parece ser um pouco curta. Estou anexando a configuração do meu roteador como exemplo de trabalho.
Além disso, você está usando '-m state' para rastrear conexões relacionadas e estabelecidas, enquanto eu geralmente utilizo '-m conntrack'.
O que você pode tentar - registrar pacotes descartados e ver o que e por que está sendo descartado pelo iptables. Estou escrevendo minha configuração (com registro e também incluindo a política ACCEPT padrão para a cadeia OUTPUT) abaixo. Para ativá-lo, salve-o em um arquivo (por exemplo, 'iptables_test_rules.txt') e aplique-o usando 'iptables-restore iptables_test_rules.txt'. Consulte 'iptables -L -v' para obter uma visão geral das regras e seu syslog para conexões perdidas (atenção: seu syslog pode crescer muito rápido!).