iptables problemas de configuração de encaminhamento simples

1

Eu tenho o iptables rodando em um host (atuando como um firewall) em um namespace do Linux com apenas uma interface de rede: h2-eth1 (tem um endereço IP e MAC)

Configurei meu comutador para encaminhar todos os pacotes para o firewall e os pacotes retornados do firewall para a rede interna. Agora, faço uma simples verificação de sanidade para ver se tudo está funcionando. Eu corro estes comandos no firewall:

$sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
$iptables -P INPUT ACCEPT
$iptables -P FORWARD DROP
$iptables -P OUTPUT ACCEPT

$iptables -F INPUT 
$iptables -F FORWARD 
$iptables -F OUTPUT 
$iptables -F -t nat

$iptables -A FORWARD -i h2-eth1 -o h2-eth1 -j ACCEPT

Agora, faço ping de um host interno de fora. Eu vejo pacotes ICMP indo para o firewall, mas nenhum vindo de volta. Então, eu corri iptables -nvL no firewall e eu vejo que todas as tabelas (INPUT, OUTPUT e FORWARD) têm contagem de pacotes 0. Então, os pacotes não estão alcançando iptables porque eles não combinam com o endereço IP da NIC? Como corrijo isso?

    
por Bruce 23.03.2013 / 23:49

1 resposta

0

Configurando um DNAT. Tudo o que você está fazendo no momento é passar tudo para a cadeia INPUT no seu firewall. Você não pode simplesmente "fazer ping de um host interno de fora" porque o exterior não sabe nada sobre a rede interna porque os endereços internos não são públicos.

Exemplo: Hospedando um servidor na LAN que você quer visível para WAN (Internet)

iptables -t nat -A PREROUTING -p tcp -d <FIREWALL EXTERNAL IP> --dport 80 -j DNAT --to-destination <INTERNAL HOST IP>:80

Isso fará com que pareça que o firewall está hospedando um servidor da Web, mas na verdade está encaminhando tudo para um servidor interno. Você precisa fazer isso para cada serviço e protocolo que deseja encaminhar para a rede interna.

    
por 24.03.2013 / 00:22