Configurazione di una linea di backup isdn manuale: Difference between revisions
mNo edit summary |
|||
| (19 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
== Predisposizione della connessione == | == Predisposizione della connessione == | ||
Seguire la | 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 | cat | sudo tee /etc/ppp/ip-up.d/05-sendipaddress > /dev/null <<'EOFile' | ||
#!/bin/sh -e | #!/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 | |||
COUNT=$(($COUNT+1)) | exit 1 #COUNT=$(($COUNT+1)) | ||
fi | |||
EOFile | EOFile | ||
</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- | 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 | cat | sudo tee /etc/ppp/ip-up.d/02-firewall > /dev/null <<'EOFile' | ||
#!/bin/ | #!/bin/bash | ||
/etc/init.d/firewall restart $PPP_IFACE | /etc/init.d/firewall restart $PPP_IFACE | ||
EOFile | EOFile | ||
</pre> | |||
cat | sudo chmod 755 /etc/ppp/ip-up.d/02-firewall | ||
#!/bin/ | |||
<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 | ||
</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 | cat | sudo tee /etc/ppp/ip-up.d/03-ssh > /dev/null <<EOFile | ||
#!/bin/ | #!/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 | <pre> | ||
#!/bin/ | 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 | ||
</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'''" | ||
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 | Provare ora a fare | ||
sudo /etc/init.d/isdnutils start | sudo /etc/init.d/isdnutils start | ||
sudo isdnctrl dial | 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- | 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 | cat | sudo tee /usr/local/bin/backup-isdn > /dev/null <<'EOFile' | ||
#!/bin/bash | #!/bin/bash | ||
# v 2008111001 | |||
DEBUG=false | |||
clear | clear | ||
echo "================================================================================" | echo "================================================================================" | ||
echo "= ATTIVAZIONE LINEA DI BACKUP | 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 | 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 /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 | else | ||
clear | |||
echo Linea di backup isdn NON ATTIVATA. | |||
fi | fi | ||
# vim: tabstop=4 | |||
EOFile | EOFile | ||
</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 | ||
sudo add-shell /usr/local/bin/backup-isdn | |||
Creare l'utente backup- | 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: | Definire l'alias con visudo: | ||
sudo visudo | |||
Cmnd_Alias LINEE_BACKUP = / | ... | ||
Cmnd_Alias LINEE_BACKUP = /sbin/ifdown, \ | |||
/sbin/ifup, \ | |||
/etc/init.d/isdnutils, \ | |||
/usr/sbin/isdnctrl | |||
... | |||
Assegnarlo all'utente: | Assegnarlo all'utente: | ||
backup- | backup-isdn ALL=NOPASSWD:LINEE_BACKUP | ||
Ora ci si può loggare da console come | 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.