Roteamento NAT CentOS 7 e IPTABLES

Roteamento NAT CentOS 7 e IPTABLES

Eu tenho a instância do CentOS como NAT para minha rede local. Existem algumas sub-redes na minha rede local. Existe um servidor VPN PPTP dentro de um. Eu preciso publicar este servidor na Internet.

Então. Meu problema é que o tráfego não passa de nat/PREROUTINGrede em filter/FORWARDrede.

  • 1.1.1.1é meu IP externo
  • 192.168.10.1é meu IP interno
  • 10.0.1.1é o IP do servidor VPN
  • eth0é interface externa
  • eth1é interface interna

Regras NAT(funciona. PKTSe BYTESé alterado)

-A PREROUTING -d 1.1.1.1/32 -i eth0 -p tcp -m tcp --dport 1723 -j DNAT --to-destination 10.0.1.1
-A PREROUTING -d 1.1.1.1/32 -i eth0 -p gre -j DNAT --to-destination 10.0.1.1

Regras de FILTRO(não funciona. PKTSe BYTESnão é alterado)

-A FORWARD -d 10.0.1.1/32 -i eth0 -o eth1 -p tcp -m tcp --dport 1723 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.0.1.1/32 -i eth1 -o eth0 -p tcp -m tcp --sport 1723 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 10.0.1.1/32 -i eth0 -o eth1 -p gre -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.0.1.1/32 -i eth1 -o eth0 -p gre -m state --state RELATED,ESTABLISHED -j ACCEPT

Claro, net.ipv4.ip_forward = 1e posso fazer ping 10.0.1.1no servidor NAT.

A tcpdumpporta 1723 mostrava ações apenas na interface externa.

Eu não tenho ideia.

UPD1. Verifiquei o roteamento com ip route get 10.0.1.1 from <src> iif eth0e consegui RTNETLINK answers: Invalid argument. Aliás, eu obtive alguma resposta e usei qualquer iifnome ( eth0, eth1, eth2). Só obtive a rota válida e não usei iifargumento.

UPD2. Eu adicionei -A FORWARD -d 10.0.1.1/32 -j ACCEPTa regra na filter/FORWARDcadeia primeiro. Mas nada. Pacotes e bytes eram zero.

Responder1

  • Outras regras são muito importantes. E a ordem das regras também. Portanto, verifique a saída do iptables-save -ccomando. Investigue as regras acima daquelas que você criou.

  • Entre as cadeias nat/PREROUTINGe filter/FORWARDa decisão de roteamento é tomada. Verifique o roteamento com ip route get 10.0.1.1 from <src> iif eth0. Deve retornar a rota válida. Se for outra coisa, cole na pergunta.

  • Investigue também uma saída do nstat -azcomando.

  • Para passar o pptp pelo NAT é necessário carregar os módulos para conntrack:

    • nf_conntrack_proto_gre
    • nf_nat_proto_gre
    • nf_conntrack_pptp
    • nf_nat_pptp
  • Nos kernels recentes você deve habilitar explicitamente os auxiliares conntrack, especialmente para o pptp. Então você precisa adicionar a regra adicional.

iptables -t raw -A PREROUTING -p tcp -m tcp --dport 1723 -j CT --helper pptp
  • Outra maneira de ativar o auxiliar é o comando sysctl:
sysctl -w net.netfilter.nf_conntrack_helper=1
  • Outras ferramentas para solucionar seu problema:
    • conntrack -E- monitoramento de eventos conntrack
    • tcpdump
    • -j NFLOGe tcpdump -ni nflog- permitir capturar os pacotes da regra iptables.
    • -j TRACEalvo - você pode investigar o caminho dos pacotes através das regras do firewall.

PSAtualize a pergunta se você ainda estiver travado.

informação relacionada