Script pra rc.local e reiniciar servidor [RESOLVIDO]

1. Script pra rc.local e reiniciar servidor [RESOLVIDO]

Tiago
tiago1

(usa Ubuntu)

Enviado em 19/08/2015 - 15:06h

Olá, boa tarde a todos do VOL da área de Shell Script, tudo bem?

Seguinte, eu estou com um problema na execução do conteúdo do arquivo /etc/rc.local do servidor que estou compartilhando a internet. Estou usando o Debian 8.1 e não tinha esse problema no Debian 6. Agora mostra uma frase que fala de uma falta de compatibilidade do arquivo /etc/local, ao reiniciar o servidor. O comando de compartilhar a conexão pra rede local não funciona e a internet só é compartilhada caso eu execute o "/etc/rc.local" como root, após subir o servidor, aí a Internet compartilha.
Alguém já passou por este problema?

Também pensei se seria possível criar um script que ficasse rodando no servidor e de tempos em tempos (não sei ao certo qual seria o ideal) que testasse a conexão do servidor com a internet e caso a conexão tenha caído, reiniciasse o servidor pra estabelecer a conexão novamente. O problema é que não sei programar, muito menos shell script.

Tipo, entendi que a lógica do programa (considerando aquele problema do rc.local) seria:

Início do programa

"Se internet cair (ou demorar X tempo pra responder a um ping pro Google, por exemplo) então

Servidor reinicia por completo e executa o /etc/rc.local duas vezes.

fim do programa

Algo assim, é que não seri escrever linguagem de programação isso... =/

É possível fazer algo assim?

Grato pela atenção!


  


2. MELHOR RESPOSTA

Buckminster
Buckminster

(usa Debian)

Enviado em 19/08/2015 - 16:23h

Veja abaixo o /etc/rc.local original do Debian 8

#!/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.

exit 0

Aconselhho tu a fazer um script de firewall e colocar no /etc/rc.local antes de exit 0 o seguinte comando

/etc/init.d/firewall.sh start <<< tu pode dar o nome que quiser ao arquivo em vez de firewall.sh

Crie um arquivo com teu editor de texto preferido. Vou usar o vim para exemplo:

# vim /etc/init.d/firewall.sh
Coloque dentro o conteúdo do teu script de Iptables:

#!/bin/sh
# Configuração de compartilhamento da Internet
# Limpa as tabelas de NAT
iptables -F
iptables -t nat -F
# Compartilha a conexão de Internet com a rede local
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Deixa de responder a PINGS
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# Protege contra IP Spoofing
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
# Autoriza pacotes da interface de loopback da rede local
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
# Abre para a porta 22 do servidor SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Bloqueia tentativa de conexão com vinda da Internet
iptables -A INPUT -p tcp --syn -j DROP

Salve e saia do arquivo.

Dê permissão de execução:
# chmod +x /etc/init.d/firewall.sh

e depois coloque dentro do /etc/rc.local antes de exit 0:

/etc/init.d/firewall.sh start

Não esqueça de colocar o conteúdo original acima no teu /etc/rc.local.
Salve e saia do arquivo.
Dessa maneira tu pode iniciar, parar e reiniciar o Iptables no terminal:

# /etc/init.d/firewall.sh start
# /etc/init.d/firewall.sh stop
# /etc/init.d/firewall.sh restart

Alguma dúvida, poste aqui.

3. Re: Script pra rc.local e reiniciar servidor [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 19/08/2015 - 15:42h

Posta aqui o conteúdo do /etc/rc.local e a frase que fala da falta de compatibilidade (na língua original dela, seja em Português ou em Inglês).



4. Re: Script pra rc.local e reiniciar servidor [RESOLVIDO]

Tiago
tiago1

(usa Ubuntu)

Enviado em 19/08/2015 - 15:56h

Buckminster escreveu:

Posta aqui o conteúdo do /etc/rc.local e a frase que fala da falta de compatibilidade (na língua original dela, seja em Português ou em Inglês).



# Configuração de compartilhamento da Internet
# Limpa as tabelas de NAT
iptables -F
iptables -t nat -F
# Compartilha a conexão de Internet com a rede local
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Deixa de responder a PINGS
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# Protege contra IP Spoofing
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
# Autoriza pacotes da interface de loopback da rede local
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
# Abre para a porta 22 do servidor SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Bloqueia tentativa de conexão com vinda da Internet
iptables -A INPUT -p tcp --syn -j DROP
#
exit


O conteúdo é este a mensagem que sobre no boot é essa:

"[FAILED] Failed to start /etc/rc.local Compatibility."


5. Entendendo...

Tiago
tiago1

(usa Ubuntu)

Enviado em 19/08/2015 - 16:36h

Ok, só pra confirmar então, pra ver se entendi a ideia:

Então eu crio o script de firewall, dando as permissões.

Eu uso o nano, então, como root no servidor eu faço:

nano /etc/rc.local

Dae dentro deste arquivo, antes do "exit 0", eu escrevo:

#!/bin/sh -e <--- início do arquivo rc.local

/etc/init.d/firewall.sh start

exit 0;

# Fim do arquivo rc.local

Então, pelo que entendi, o servidor vai acionar o "/etc/local", que por sua vez, vai acionar o "/etc/init.d/firewall.sh start" que ta escrito dentro do rc.local, é isso?

Vou tentar fazer e posto o resultado que ocorrer!

Muito obrigado!




6. Re: Script pra rc.local e reiniciar servidor [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 20/08/2015 - 22:42h

Não. No /etc/rc.local tu copia e cola tudo que eu coloquei ali em cima como conteúdo original.



7. Opa

Tiago
tiago1

(usa Ubuntu)

Enviado em 20/10/2015 - 13:26h

Oi, faz tempo que fiz este tópico, vou tentar executar agora.

Dentro do arquivo rc.local, eu coloco o que já vem escrito originalmente dentro, após a instalação limpa e faço também aquele script com minhas configurações então.

Grato!



8. Deu certo o Script!

Tiago
tiago1

(usa Ubuntu)

Enviado em 20/10/2015 - 14:14h

Buckminster escreveu:

Veja abaixo o /etc/rc.local original do Debian 8

#!/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.

exit 0

Aconselhho tu a fazer um script de firewall e colocar no /etc/rc.local somente

/etc/init.d/firewall.sh start <<< tu pode dar o nome que quiser ao arquivo em vez de firewall.sh

Crie um arquivo com teu editor de texto preferido. Vou usar o vim para exemplo:

# vim /etc/init.d/firewall.sh
Coloque dentro o conteúdo do teu script de Iptables:

#!/bin/sh
# Configuração de compartilhamento da Internet
# Limpa as tabelas de NAT
iptables -F
iptables -t nat -F
# Compartilha a conexão de Internet com a rede local
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Deixa de responder a PINGS
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# Protege contra IP Spoofing
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
# Autoriza pacotes da interface de loopback da rede local
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
# Abre para a porta 22 do servidor SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Bloqueia tentativa de conexão com vinda da Internet
iptables -A INPUT -p tcp --syn -j DROP

Salve e saia do arquivo.

Dê permissão de execução:
# chmod +x /etc/init.d/firewall.sh

e depois coloque dentro do /etc/rc.local antes de exit 0:

/etc/init.d/firewall.sh start

Não esqueça de colocar o conteúdo original acima no teu /etc/rc.local.
Salve e saia do arquivo.
Dessa maneira tu pode iniciar, parar e reiniciar o Iptables no terminal:

# /etc/init.d/firewall.sh start
# /etc/init.d/firewall.sh stop
# /etc/init.d/firewall.sh restart

Alguma dúvida, poste aqui.



Funcionou perfeitamente! Reiniciei o servidor por completo e está funcionando! Obrigado!



9. Re: Script pra rc.local e reiniciar servidor [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 20/10/2015 - 14:42h

De nada.



10. squid

henrick
henrickwarrior

(usa BackTrack)

Enviado em 20/01/2016 - 04:27h

eu tambem usei esta configuração, porem meu squid não esta armazenado os arquivos, pode me ajudar?


11. Re: Script pra rc.local e reiniciar servidor [RESOLVIDO]

Tiago
tiago1

(usa Ubuntu)

Enviado em 23/02/2016 - 14:27h

Opa

Armazenando os arquivos onde, tu está dizendo?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts