Iptables não inicia no boot

Iniciado por Wótila Carneiro, 04 de Novembro de 2010, 23:15

tópico anterior - próximo tópico

Wótila Carneiro

Prezados, boa noite.
Queria colocar o iptables para iniciar no boot.
Uso o Ubuntu 10.04 TLS Desktop e sou iniciante.
Segui os seguintes passos, mas não consegui.
Primeiro criei o arquivo "firewall"
#iptables-save > /etc/init.d/firewall
Depois transformei esse arquivo em um executável:
# chmod +x /etc/init.d/firewall
Coloquei um chamado no arquivo rc.local
#nano /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/etc/init.d/firewall start

exit 0

Depois editei meu script firewall (com poucas regras, pois é apenas um teste)

# nano /etc/init.d/firewall

#!/bin/bash

# COMPARTLHAR A CONEXÃO
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# Aceita tudo na interface de rede local verifica tanto a interface quanto a faixa de endereços de origem:
iptables -A INPUT -p tcp --syn -s 192.168.1.0/24 -i eth0 -j ACCEPT

# FECHA O RESTO DA REDE
iptables -A INPUT -p tcp --syn -j DROP

exit 0

Creio que os passos estão corretos, mas mesmo assim as regras não rodam após o boot.
Há algo de errado?
Grato desde já!

Ubuntu 10.04

jeflui

Tenta o seguinte, no terminal:
sudo update-rc.d firewall defaults
Obs. Deixe o firewall no /etc/init.d como está.

zekkerj

CitarHá algo de errado?
Provavelmente ele não está encontrando o executável "iptables" na hora em que executa. Tente adicionar estas linhas no início do script:

PATH=/bin:/usr/bin:/sbin:/usr/sbin
export PATH


Outra coisa, não adianta fazer "script start", se seu script não sabe interpretar o "start" (assim como não adianta fazer interpretar um "start", se não fizer interpretar também um "stop"). Quer aprender como? Use o esqueleto abaixo pro seu script.


#!/bin/bash

PATH=/bin:/usr/bin:/sbin:/usr/sbin

function start()
{
# coloque aqui o seu código pra "start"
}

function stop()
{
# coloque aqui seu código pra "stop"
}

case $1 of
"start")
    start
    ;;
"stop")
    stop
    ;;
"restart")
    stop
    start
    ;;
*)
    echo "Use: $0 {start|stop|restart}"
    exit -1
esac
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Wótila Carneiro

Há diferenças em relação à scrip/inicialização entre Desktops e Servers?
Digo isso porque eu fiz dessa maneira que citei acima em um Desktop e em um Server e no Server funcionou.
Ubuntu 10.04

zekkerj

Tem sempre algumas diferençazinhas entre a instalação de um e de outro, resquícios do momento em que houve a "separação" das duas versões.

Aliás, provavelmente tem como fazer isso usando apenas serviços pre-existentes, sem ter que criar scripts. Talvez com o "ufw".
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D