Configurazione di una linea di backup isdn manuale

From RVM Wiki
Jump to navigation Jump to search

Predisposizione della connessione

Seguire la Configurazione di una connessione ISDN, ed assicurarsi che funzioni.

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
if    wget assistenza.rvmgroup.it \
        --quiet \
        -O /tmp/05-sendipaddress \
        --tries=1 \
        --timeout=30 ; then
      mail -s "IP $HOSTNAME" gal-alert@rvmgroup.it < /tmp/05-sendipaddress
else
                exit 1 #COUNT=$(($COUNT+1))
fi
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):

cd /etc/iptables-initd/
sudo cp start.firewall start.ippp2

Reimpostare il parametro:

sudoedit /etc/iptables-initd/start.ippp2

WAN0_IF="ippp2"

Impostare il NAT dinamico:

sudoedit /etc/iptables-initd/start.ippp2
echo "Configuring NAT"
        # ---------------------------------------------------------------------
        # Masquerade internal traffic.
        # ------------------------------
        $IPTABLES -t nat -A POSTROUTING \
                  -o $WAN0_IF  -d ! $LAN0_NET \
                  -j MASQUERADE


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/bash
/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

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"

Abilitare il logging ip-up-down:

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

E' possibile osservare l'esecuzione degli script con

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

Collegamento

Provare ora a fare

sudo /etc/init.d/isdnutils start
sudo isdnctrl dial ippp2

e vedere se si connette e avvia correttamente gli script.

Il collegamento dovrebbe permettere la stessa operatività.

Preparazione interfaccia di attivazione

Creare la shell per l'utente backup-isdn

ATTENZIONE

  • Eliminare il comando relativo se non si usa il multilink
  • E' obbligatorio disabilitare l'interfaccia WAN se questa acquisisce l'ip in dhcp (necessario per DSL-3x0T), altrimenti resetta la default route ad ogni renew.
  • Ricordarsi di aggiungere in /etc/sudoers i comandi senza password /sbin/ifup e /sbin/ifdown
cat | sudo tee /usr/local/bin/backup-isdn > /dev/null <<'EOFile'
#!/bin/bash
# v 2008111001
DEBUG=false
clear
echo "================================================================================"
echo "=                     ATTIVAZIONE LINEA DI BACKUP ISDN                         ="
echo "================================================================================"
echo -e "\n"
echo -e "\n"
echo -e "\n"
echo -e "\n"
read -n1 -p"Attivare la linea di backup isdn (s/n) ? " RISP
echo -e "\n"
if [[ ("$RISP" == "s" || "$RISP" == "S") ]]; then
	sudo /sbin/ifdown eth1 > /dev/null 2>&1
	sudo /etc/init.d/isdnutils stop  > /dev/null 2>&1
	sudo /etc/init.d/isdnutils start > /dev/null 2>&1
	sudo /usr/sbin/isdnctrl huptimeout ippp2 9999 2>&1 > /dev/null
	sudo /usr/sbin/isdnctrl dialmax    ippp2 1 2>&1 > /dev/null
	sudo /usr/sbin/isdnctrl dial	   ippp2 > /dev/null 2>&1
	# solo se si usa il doppio canale
	sudo isdnctrl addlink ippp2 > /dev/null 2>&1
	
	clear
	echo "================================================================================"
	echo "=                   LINEA DI BACKUP ISDN IN ATTIVAZIONE ....                   ="
	echo "=                           ATTENDERE 10 SECONDI                               ="
	echo "================================================================================"
	sleep 9
	
	KEY=""
	while [ -z "$KEY"  ]
	do
		sudo /usr/sbin/isdnctrl status ippp2 2>&1 > /dev/null
		STATUS=$?
		PPP_IP=`/sbin/ifconfig ippp2 2>&1 | grep "inet addr:" | cut -f2 --delim=":" | cut -f1 --delim=" "`
		if [[ ( -n "$PPP_IP" && "$PPP_IP" != "169.255.255.169") && "$STATUS" -eq "0" ]]
		then
			clear
			$DEBUG && echo PPP_IP = $PPP_IP
			$DEBUG && echo STATUS = $STATUS
			$DEBUG && echo `date`
	                echo "================================================================================"
			echo "=                       LINEA DI BACKUP ISDN ATTIVATA                          ="
			echo "=                     PREMERE UN TASTO PER DISATTIVARLA                        ="
			echo "================================================================================"
			read -n1 -t2 KEY
		else
			clear
			$DEBUG && echo PPP_IP = $PPP_IP
			$DEBUG && echo STATUS = $STATUS
			$DEBUG && echo `date`
			echo "================================================================================"
			echo "=                   LINEA DI BACKUP ISDN IN ATTIVAZIONE ....                   ="
			echo "=                     PREMERE UN TASTO PER INTERROMPERE                        ="
			echo "=                           LINEA NON ATTIVA !!!!                              ="
			echo "================================================================================"
			sudo /usr/sbin/isdnctrl hangup	   ippp2 > /dev/null 2>&1
			sudo /usr/sbin/isdnctrl dial	   ippp2 > /dev/null 2>&1
				read -n1 -t9 KEY
		fi	
	done
	# solo se si usa il doppio canale
	sudo isdnctrl removelink ippp2 > /dev/null 2>&1
	sudo isdnctrl hangup ippp2 > /dev/null 2>&1
	sudo /etc/init.d/isdnutils stop > /dev/null 2>&1
	sudo /sbin/ifup eth1 > /dev/null 2>&1
	clear
		echo -e "\nLinea di backup isdn DISATTIVATA."
		exit
else
	clear
		echo Linea di backup isdn NON ATTIVATA.
fi

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

Dichiaralo come shell valida

sudo add-shell /usr/local/bin/backup-isdn

Creare l'utente backup-isdn ed assegnargli questa shell

sudo adduser --shell /usr/local/bin/backup-isdn backup-isdn \
--disabled-password \
--gecos 'Linea ISDN di Backup'
echo backup-isdn:isdn-backup | sudo chpasswd

Definire l'alias con visudo:

sudo visudo
...
Cmnd_Alias LINEE_BACKUP = /sbin/ifdown, \
                          /sbin/ifup, \
                          /etc/init.d/isdnutils, \
                          /usr/sbin/isdnctrl
...

Assegnarlo all'utente:

backup-isdn        ALL=NOPASSWD:LINEE_BACKUP

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