NAT GRE (protocolo IP 47) sobre roteador Linux

NAT GRE (protocolo IP 47) sobre roteador Linux

Eu tenho um host que possui um túnel GRE estático permanente para um servidor na Internet. No momento, o host possui seu próprio endereço IP real. Quero colocar o host atrás de uma caixa Linux (Smoothwall) e atribuir a ele um endereço IP privado.

Vamos ligar:
IP do servidor de túnel= o IP do final do túnel ao qual o host está se conectando (na internet)
IP real= o IP real atualmente usado pelo host, que desejo atribuir ao roteador Linux
IP falso= o IP que o host obterá depois de ser colocado atrás do firewall do Linux

Isto é o que acho que devo fazer para o túnel funcionar:

  1. DNAT todos os pacotes IP GRE recebidos na interface externa vindos da extremidade do túnel da Internet e envie-os para o host. Isso é mudar o destino deIP realparaIP falsoe envie o pacote paraIP falso
  2. SNAT todos os pacotes IP GRE de entrada que chegam na interface interna vindos do host aparecem que são gerados pela caixa Linux e os enviam para o servidor de túnel. Isso é alterar o campo de origem deIP falsoparaIP reale envie o pacote paraIP do servidor de túnel

Eu criei o seguinte script:

tunnel_server_ip=217.x.x.x
false_ip=192.168.2.2
real_ip=82.x.x.x
/sbin/iptables -A PREROUTING -p 47 --src $tunnel_server_ip -j DNAT --to-destination $false_ip 
/sbin/iptables -A POSTROUTING -p 47 --src $false_ip -j SNAT --to-source $real_ip    
/sbin/iptables -A INPUT -p 47 -j ACCEPT

Executar isso resulta emNenhuma cadeia/alvo/correspondência com esse nome. Você poderia me dizer o que eu fiz de errado? Estou no caminho certo?

Responder1

Você esqueceu a -t nattroca de tabela nas instruções PREROUTING/POSTROUTING. Basta adicioná-lo na frente.

Responder2

Resposta tardia, mas me deparei com a mesma necessidade e os dois comandos a seguir resolvem:

# iptables -t nat -A PREROUTING -i eth0 -p gre -j DNAT --to-destination 192.168.0.1
# modprobe nf_conntrack_proto_gre

Não há necessidade de especificar o IP real, simplesmente PREROUTEo gretráfego para o servidor privado e deixar o grerastreador de conexão fazer seu trabalho.

Responder3

Para a maioria dos túneis GRE você precisa ter um protocolo de controle no TCP 1723. Isso também deve ser encaminhado. Aqui está umLinkque descreve a configuração do iptables para isso. Você está no caminho certo, só falta o protocolo de controle.

Responder4

Parece que você esqueceu de dizer "--table nat", então ele vai para a tabela de filtros que não possui alvos SNAT/DNAT, nem possui cadeias PREROUTING e POSTROUTING.

informação relacionada