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

From RVM Wiki
Jump to navigation Jump to search
mNo edit summary
 
 
(19 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Predisposizione della connessione ==
== Predisposizione della connessione ==


Seguire la guida di configurazione per la connessione ISDN, ed assicurarsi che funzioni.
Seguire la [[Configurazione di una connessione ISDN]], ed assicurarsi che funzioni.


== Preparazione degli script ppp-up/down ==
== Preparazione degli script ppp-up/down ==
Line 8: Line 8:


<pre>
<pre>
cat > /etc/ppp/ip-up.d/05-sendipaddress <<'EOFile'
cat | sudo tee /etc/ppp/ip-up.d/05-sendipaddress > /dev/null <<'EOFile'
#!/bin/sh -e
#!/bin/sh -e
COUNT="0"
if   wget assistenza.rvmgroup.it \
while [ "$COUNT" -lt "5" ]
        --quiet \
do
        -O /tmp/05-sendipaddress \
        if wget assistenza.rvmgroup.it --quiet -O /tmp/05-sendipaddress; then
        --tries=1 \
                mail -s "IP $HOSTNAME" gal-alert@rvmgroup.it < /tmp/05-sendipaddress
        --timeout=30 ; then
                COUNT="5"
      mail -s "IP $HOSTNAME" gal-alert@rvmgroup.it < /tmp/05-sendipaddress
        else
else
                 COUNT=$(($COUNT+1))
                 exit 1 #COUNT=$(($COUNT+1))
        fi
fi
done
EOFile
EOFile
chmod 755 /etc/ppp/ip-up.d/05-sendipaddress
</pre>
</pre>
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'''):
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
  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
 
<pre>
echo "Configuring NAT"
        # ---------------------------------------------------------------------
        # Masquerade internal traffic.
        # ------------------------------
        $IPTABLES -t nat -A POSTROUTING \
                  -o $WAN0_IF  -d ! $LAN0_NET \
                  -j MASQUERADE
</pre>
 


Creare il file di restart del firewall:
Creare il file di restart del firewall:


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


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


</pre>
sudo chmod 755 /etc/ppp/ip-down.d/02-firewall


Creare il file di restart per ssh:
Creare il file di restart per ssh:


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


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


</pre>
sudo chmod 755 /etc/ppp/ip-down.d/03-ssh


Assicurarsi che openvpn su questa macchina:
Assicurarsi che openvpn su questa macchina:
Line 70: Line 96:
Dal lato opposto verificare che openvpn '''non''' abbia la direttiva "'''remote'''"
Dal lato opposto verificare che openvpn '''non''' abbia la direttiva "'''remote'''"


<hr>
Abilitare il logging ip-up-down:
NON SERVE
 
Creare il file di restart OpenVPN:
 
<pre>
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
</pre>


NON SERVE
sudo touch /var/log/ppp-ipupdown.log
<hr>


Abilitare il logging ip-up-down:
E' possibile osservare l'esecuzione degli script con
tail -f /var/log/ppp-ipupdown.log


touch /var/log/ppp-ipupdown.log
== Collegamento ==


Provare ora a fare  
Provare ora a fare  
  sudo /etc/init.d/isdnutils start
  sudo /etc/init.d/isdnutils start
  sudo isdnctrl dial ippp0
  sudo isdnctrl dial ippp2


e vedere se si connette e avvia correttamente gli script.
e vedere se si connette e avvia correttamente gli script.
Line 108: Line 115:
== Preparazione interfaccia di attivazione ==
== Preparazione interfaccia di attivazione ==


Creare la shell per l'utente backup-analogico:
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


<pre>
<pre>
cat >/usr/local/bin/backup-analogico <<'EOFile'
cat | sudo tee /usr/local/bin/backup-isdn > /dev/null <<'EOFile'
#!/bin/bash
#!/bin/bash
#!/bin/bash
# v 2008111001
DEBUG=false
clear
clear
echo "================================================================================"
echo "================================================================================"
echo "=                    ATTIVAZIONE LINEA DI BACKUP ANALOGICA                    ="
echo "=                    ATTIVAZIONE LINEA DI BACKUP ISDN                        ="
echo "================================================================================"
echo "================================================================================"
echo -e "\n"
echo -e "\n"
Line 122: Line 136:
echo -e "\n"
echo -e "\n"
echo -e "\n"
echo -e "\n"
read -n1 -p"Attivare la linea di backup analogica (s/n) ? " RISP
read -n1 -p"Attivare la linea di backup isdn (s/n) ? " RISP
echo -e "\n"
echo -e "\n"
if [[ ("$RISP" == "s" || "$RISP" == "S") ]]; then
if [[ ("$RISP" == "s" || "$RISP" == "S") ]]; then
        sudo pon libero
sudo /sbin/ifdown eth1 > /dev/null 2>&1
        echo "================================================================================"
sudo /etc/init.d/isdnutils stop  > /dev/null 2>&1
        echo "=                     LINEA DI BACKUP ANALOGICA ATTIVATA                       ="
sudo /etc/init.d/isdnutils start > /dev/null 2>&1
        echo "=                    PREMERE UN TASTO PER DISATTIVARLA                        ="
sudo /usr/sbin/isdnctrl huptimeout ippp2 9999 2>&1 > /dev/null
        echo "================================================================================"
sudo /usr/sbin/isdnctrl dialmax    ippp2 1 2>&1 > /dev/null
        read -n1
sudo /usr/sbin/isdnctrl dial   ippp2 > /dev/null 2>&1
        sudo poff libero
# solo se si usa il doppio canale
        echo Linea di backup analogica DISATTIVATA.
sudo isdnctrl addlink ippp2 > /dev/null 2>&1
        exit
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
else
        echo Linea di backup analogica NON ATTIVATA.
clear
        exit
echo Linea di backup isdn NON ATTIVATA.
fi
fi
# vim: tabstop=4
EOFile
EOFile
sudo chown root\: /usr/local/bin/backup-analogico
sudo chmod 755 /usr/local/bin/backup-analogico
</pre>
</pre>
sudo chown root\: /usr/local/bin/backup-isdn
sudo chmod 755 /usr/local/bin/backup-isdn


Dichiaralo come shell valida
Dichiaralo come shell valida


  echo "/usr/local/bin/backup-analogico" >> /etc/shells
  sudo add-shell /usr/local/bin/backup-isdn


Creare l'utente backup-analogico ed assegnargli questa shell
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'


  sudo adduser --shell /usr/local/bin/backup-analogico backup-analogico
  echo backup-isdn:isdn-backup | sudo chpasswd


Definire l'alias con visudo:
Definire l'alias con visudo:
 
sudo visudo
  Cmnd_Alias LINEE_BACKUP = /usr/bin/pon libero, /usr/bin/poff libero
...
  Cmnd_Alias LINEE_BACKUP = /sbin/ifdown, \
                          /sbin/ifup, \
                          /etc/init.d/isdnutils, \
                          /usr/sbin/isdnctrl
...


Assegnarlo all'utente:
Assegnarlo all'utente:


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


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

Latest revision as of 10:54, 10 November 2008

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.