Configurazione di una linea di backup analogica manuale: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
Line 229: Line 229:
Definire l'alias con visudo:
Definire l'alias con visudo:


Cmnd_Alias LINEE_BACKUP = /sbin/ifdown, \
<pre>
                          /sbin/ifup, \
sudo visudo
                          /usr/bin/pon libero, \
...
                          /usr/bin/poff libero
Cmnd_Alias LINEE_BACKUP = /sbin/ifdown, \
                          /sbin/ifup, \
                          /usr/bin/pon libero, \
                          /usr/bin/poff libero
...
</pre>


Assegnarlo all'utente:
Assegnarlo all'utente:
 
...
  backup-analogico        ALL=NOPASSWD:LINEE_BACKUP
  backup-analogico        ALL=NOPASSWD:LINEE_BACKUP
...


Ora ci si può loggare da console come backup-analogico ed attivare/disattivare la linea.
Ora ci si può loggare da console come backup-analogico ed attivare/disattivare la linea.

Revision as of 08:07, 23 May 2007

Predisposizione della connessione

Creare una connessione ppp con ppp-config chiamata "libero" SENZA GESTIONE DEI DNS e testarla.

Preparazione degli script ppp-up/down

Creare il file /etc/ppp/ip-up.d/05-sendipaddress

cat | sudo tee /etc/ppp/ip-up.d/05-sendipaddress > /dev/null <<'EOFile'
#!/bin/sh -e
COUNT="0"
while [ "$COUNT" -lt "5" ]
do
        if wget assistenza.rvmgroup.it --quiet -O /tmp/05-sendipaddress; then
                mail -s "IP $HOSTNAME" gal-alert@rvmgroup.it < /tmp/05-sendipaddress
                COUNT="5"
        else
                COUNT=$(($COUNT+1))
        fi
done
EOFile
sudo chmod 755 /etc/ppp/ip-up.d/05-sendipaddress

Creare il profilo firewall per la connessione ppp impostando le regole desiderate (necessita di iptables-initd_1.0.0-4):

sudo cp /etc/iptables-initd/start.firewall /etc/iptables-initd/start.ppp0
sudoedit /etc/iptables-initd/start.ppp0

Creare il file di restart del firewall:

cat | sudo tee /etc/ppp/ip-up.d/02-firewall > /dev/null <<'EOFile'
#!/bin/bash
/etc/init.d/firewall restart $PPP_IFACE
EOFile
sudo chmod 755 /etc/ppp/ip-up.d/02-firewall
cat | sudo tee /etc/ppp/ip-down.d/02-firewall > /dev/null <<EOFile
#!/bin/sh -e
/etc/init.d/firewall restart
EOFile
sudo chmod 755 /etc/ppp/ip-down.d/02-firewall

Creare il file di restart per ssh:

cat | sudo tee /etc/ppp/ip-up.d/03-ssh > /dev/null <<EOFile
#!/bin/bash
/etc/init.d/ssh stop
/etc/init.d/ssh start
EOFile
sudo chmod 755 /etc/ppp/ip-up.d/03-ssh
cat | sudo tee /etc/ppp/ip-down.d/03-ssh > /dev/null <<EOFile
#!/bin/bash
/etc/init.d/ssh stop
/etc/init.d/ssh start
EOFile
sudo chmod 755 /etc/ppp/ip-down.d/03-ssh

Verifica della Configurazione di OpenVPN

Assicurarsi che openvpn su questa macchina:

  • non abbia una direttiva "local"
  • abbia la direttiva: "keepalive 30 61"

Dal lato opposto verificare che openvpn non abbia la direttiva "remote"

Modifiche Opzioni di connessione pppd

Abilitare il logging ip-up-down:

sudo touch /var/log/ppp-ipupdown.log

Sostituire le opzioni di collegamento con queste (CAMBIARE LOGIN NAME):

sudo cp /etc/ppp/peers/libero /etc/ppp/peers/libero.bak
cat | sudo tee /etc/ppp/peers/libero > /dev/null <<EOFile
# This optionfile was generated by pppconfig 2.3.10.
#
#
hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/libero"
debug
/dev/ttyS0
115200
defaultroute
noipdefault
user "sagalimberti@libero.it"
remotename libero
replacedefaultroute
persist
maxfail 0
EOFile

In pratica:

  • Abilitare la sostituzione della default route nella connessione: replacedefaultroute
  • In caso di caduta della linea, ricomporre: persist
  • Ricomporre un umero infinito di volte: maxfail 0


ATTENZIONE: a causa di un bug nella versione 2.4.3-20050321+2sarge1 (#374698) se la linea cade, muore anche pppd, e non avviene la ricomposizione.

Test collegamento e script

Provare ora a fare

sudo pon libero 

e vedere se si connette e avvia correttamente gli script:

sudo tail -f /var/log/ppp-ipupdown.log

Il collegamento dovrebbe permettere la stessa operatività.

Verificare che la default route sia settata:

route -n
...
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
151.6.139.54    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
...
0.0.0.0         151.6.139.54    0.0.0.0         UG    0      0        0 ppp0

Pingare e traceroutare per test.

Disattivare il collegamento

sudo poff libero

Preparazione interfaccia di attivazione

Creare la shell per l'utente backup-analogico.

cat | sudo tee /usr/local/bin/backup-analogico > /dev/null <<'EOFile'
#!/bin/bash
DEBUG=false
clear
echo "================================================================================"
echo "=               ATTIVAZIONE LINEA DI BACKUP ANALOGICA                          ="
echo "================================================================================"
echo -e "\n"
echo -e "\n"
echo -e "\n"
echo -e "\n"
read -n1 -p"Attivare la linea di backup analogica (s/n) ? " RISP
echo -e "\n"
if [[ ("$RISP" == "s" || "$RISP" == "S") ]]; then
	sudo /sbin/ifdown eth1 > /dev/null 2>&1
	sudo pon libero

	clear
	echo "============================================================================"
	echo "=                LINEA DI BACKUP ANALOGICA IN ATTIVAZIONE ....             ="     
	echo "=                         ATTENDERE 40 SECONDI                             ="
	echo "============================================================================"
	sleep 40

	KEY=""

	while [ -z "$KEY"  ]
	do
		PPP_IP=`/sbin/ifconfig ppp0 2>&1 | grep "inet addr:" | cut -f2 --delim=":" | cut -f1 --delim=" "`
		if [ -n "$PPP_IP" ]
		then
			clear
			$DEBUG && echo PPP_IP = $PPP_IP
			$DEBUG && echo `date`
			echo "================================================================================"
			echo "=                LINEA DI BACKUP ANALOGICA ATTIVATA                            ="
			echo "=                PREMERE UN TASTO PER DISATTIVARLA                             ="
			echo "================================================================================"
			read -n1 -t2 KEY
		else
			clear
			$DEBUG && echo PPP_IP = $PPP_IP
			$DEBUG && echo `date`
			echo "================================================================================"
			echo "=                LINEA DI BACKUP ANALOGICA IN ATTIVAZIONE ....                 ="
			echo "=                     PREMERE UN TASTO PER INTERROMPERE                        ="
			echo "=                            LINEA NON ATTIVA !!!!                             ="
			echo "================================================================================"
			read -n1 -t9 KEY
		fi
	done

	sudo poff libero
	sudo /sbin/ifup eth1 > /dev/null 2>&1
	echo Linea di backup analogica DISATTIVATA.
	exit
else
	echo Linea di backup analogica NON ATTIVATA.
	exit
fi

# vim: tabstop=4
EOFile
sudo chown root\: /usr/local/bin/backup-analogico
sudo chmod 755 /usr/local/bin/backup-analogico


Dichiaralo come shell valida

echo "/usr/local/bin/backup-analogico" | sudo tee -a /etc/shells > /dev/null

Creare l'utente backup-analogico ed assegnargli questa shell

sudo adduser --shell /usr/local/bin/backup-analogico backup-analogico

Definire l'alias con visudo:

sudo visudo
...
Cmnd_Alias LINEE_BACKUP = /sbin/ifdown, \
                          /sbin/ifup, \
                          /usr/bin/pon libero, \
                          /usr/bin/poff libero
...

Assegnarlo all'utente:

...
backup-analogico        ALL=NOPASSWD:LINEE_BACKUP
...

Ora ci si può loggare da console come backup-analogico ed attivare/disattivare la linea.