Permament iptables port forwarding?

4

Eu tenho que definir uma regra para tornar meu servidor web (que roda na porta 7000) acessível na porta 80:

ptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7000

Isso funciona perfeitamente até agora.

Mas se eu reiniciar o servidor, a regra desaparece. O que fazer para tornar esta regra permanente?

Elias

    
por Elias 08.02.2011 / 11:51

5 respostas

5

Qual distribuição GNU / Linux você está usando?

Para o Debian / Ubuntu, a solução simples é adicionar a chamada do iptables a um gancho de post-up em /etc/network/interfaces da seguinte forma:

# The primary network interface
auto eth0
iface eth0 inet dhcp
post-up iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7000
    
por 08.02.2011 / 11:56
3

Em sistemas baseados no Red Hat / Fedora:

service iptables save

E certifique-se de que o serviço iptables esteja configurado para iniciar na inicialização: chkconfig iptables on

    
por 08.02.2011 / 11:59
2

Basicamente, você adiciona os comandos iptables ao script de inicialização da rede para que ele seja executado quando sua conexão de rede estiver sendo iniciada.

Os arquivos necessários mudam de distro para distro.

Se você estiver usando o Ubuntu (e talvez isso seja verdade para o Debian e outros também), você pode usar os comandos iptables-save e iptables-restore para salvar a configuração durante as reinicializações.

    
por 08.02.2011 / 12:02
0

Para o Gentoo

você pode adicionar esta linha ao /etc/conf.d/local.start

    
por 08.02.2011 / 12:24
0

Em vez de chamar o iptables repetidamente, sugiro os seguintes passos:

[1] Configure o iptables ao seu gosto (blocos, antispoofs, redirecionamentos, etc.)

[2] Salve a configuração do iptables:

    iptables-save > /etc/my-iptables.conf

(Ou use um nome de sua preferência)

[3] Crie um script (por exemplo, /etc/my-iptables-init.sh ) contendo estas linhas:

    #!/bin/bash
    iptrest="<location_of_iptables-restore>"
    cat="/bin/cat"
    conf="/etc/my-iptables.conf"
    #
    $cat $conf | $iptrest

(Algumas pessoas dizem que iptables-restore < /etc/my-iptables.con às vezes não funciona)

[4] Chame esse script de ... onde você quiser. Talvez / etc / network / interfaces ou (minha preferência) /etc/rc.local

    
por 08.03.2011 / 10:40