Configurazione di una linea di backup isdn manuale

From RVM Wiki
Jump to navigation Jump to search

Predisposizione della connessione

Seguire la guida di configurazione per la 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
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):

/etc/iptables-init.d/start.ippp0

Creare il file di restart del firewall:

cat | sudo tee /etc/ppp/ip-up.d/02-firewall > /dev/null <<'EOFile'
#!/bin/sh -e
/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/sh -e
/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/sh -e
/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"


NON SERVE

Creare il file di restart OpenVPN:

cat > /etc/ppp/ip-up.d/04-openvpn <<EOFile
#!/bin/sh -e
/etc/init.d/openvpn stop
/etc/init.d/openvpn start
EOFile
chmod 755 /etc/ppp/ip-up.d/04-openvpn

cat > /etc/ppp/ip-down.d/04-openvpn <<EOFile
#!/bin/sh -e
/etc/init.d/openvpn stop
/etc/init.d/openvpn start
EOFile
chmod 755 /etc/ppp/ip-down.d/04-openvpn

NON SERVE


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

Disabilitazione della gestione DNS

Se la macchina usa un nameserver locale configurato in /etc/resolv.conf, commentare in /etc/isdn/ipppd.ippp0:

#ms-get-dns

Collegamento

Provare ora a fare

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

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
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 isdnctrl dial ippp0 > /dev/null 2>&1
        # solo se si usa il doppio canale
        sudo isdnctrl addlink ippp0 > /dev/null 2>&1
        echo "================================================================================"
        echo "=                       LINEA DI BACKUP ISDN ATTIVATA                          ="
        echo "=                     PREMERE UN TASTO PER DISATTIVARLA                        ="
        echo "================================================================================"
        read -n1
        # solo se si usa il doppio canale
        sudo isdnctrl removelink ippp0 > /dev/null 2>&1
        sudo isdnctrl hangup ippp0 > /dev/null 2>&1
        sudo /etc/init.d/isdnutils stop > /dev/null 2>&1
	sudo /sbin/ifup eth1 > /dev/null 2>&1
        echo -e "\nLinea di backup isdn DISATTIVATA."
        exit
else
        echo Linea di backup isdn NON ATTIVATA.
fi
EOFile

Questa è una versione aggiornata che testa se il collegamento è savvero avventuo. MODIFIFCARLA per vedere se ippp0 ha preso l'ip o meno

#!/bin/bash
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 ippp0 9999 2>&1 > /dev/null
        sudo /usr/sbin/isdnctrl dialmax    ippp0 1 2>&1 > /dev/null
        sudo /usr/sbin/isdnctrl dial       ippp0 > /dev/null 2>&1
        # solo se si usa il doppio canale
        #sudo isdnctrl addlink ippp0 > /dev/null 2>&1

        clear
        #echo $STATUS
        #echo `date`
        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 ippp0 2>&1 > /dev/null
                STATUS=$?
                if [ "$STATUS" -eq "0" ]
                then
                        clear
                        #echo $STATUS
                        #echo `date`
                        echo "================================================================================"
                        echo "=                       LINEA DI BACKUP ISDN ATTIVATA                          ="
                        echo "=                     PREMERE UN TASTO PER DISATTIVARLA                        ="
                        echo "================================================================================"
                        read -n1 -t2 KEY
                else
                        clear
                        #echo $STATUS
                        echo "================================================================================"
                        echo "=                   LINEA DI BACKUP ISDN IN ATTIVAZIONE ....                   ="
                        echo "=                     PREMERE UN TASTO PER INTERROMPERE                        ="
                        echo "=                           LINEA NON ATTIVA !!!!                              ="
                        echo "================================================================================"
                        sudo /usr/sbin/isdnctrl hangup     ippp0 > /dev/null 2>&1
                        sudo /usr/sbin/isdnctrl dial       ippp0 > /dev/null 2>&1
                        read -n1 -t9 KEY
                fi
        done
        # solo se si usa il doppio canale
        #sudo isdnctrl removelink ippp0 > /dev/null 2>&1
        sudo isdnctrl hangup ippp0 > /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
sudo chown root\: /usr/local/bin/backup-isdn
sudo chmod 755 /usr/local/bin/backup-isdn

Dichiaralo come shell valida

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

Creare l'utente backup-isdn ed assegnargli questa shell

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

Definire l'alias con 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.