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:
- 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
- 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 nat
troca 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 PREROUTE
o gre
tráfego para o servidor privado e deixar o gre
rastreador 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.