# Licence : GNU General Public License, version 3
# Auteur : Progfou <jean-christophe.andre@auf.org>
# Création : 2011-02-15
-# Mise à jour : 2011-02-16
+# Mise à jour : 2011-09-13
+#
+# Mode d'emploi :
+# - changer les adresses IP ci-dessous en prenant soin de spécifier un réseau
+# de CIDR /20 pour se préparer au futur RPV v2
LOCALGW="210.245.61.206"
LOCALIP="10.230.0.254"
LOCALNET="10.230.0.0/20"
+# - lancer ce script, sous root, dans le serveur où est installé pipsecd et
+# sauver le résultat dans un fichier, par exemple :
+# # pipsecd2ipsectools > /root/ipsec-tools.conf
+# - vérifier le résultat obtenu avec votre RTR ou un autre collègue ayant
+# déjà fait la migration
+# - vérifier la configuration des règles de pare-feu pour s'assurer de NE PAS
+# faire de NAT en sortie vers 10.0.0.0/8, par exemple :
+# # iptables -t nat -I POSTROUTING -d 10.0.0.0/8 -j RETURN
+# - ajouter les routes statiques recommandées en commentaire dans le résultat
+# du lancement du script, soit dans /etc/network/interface, par exemple :
+# up ip route replace 10.36.0.0/20 via 118.70.0.243 dev ppp0 src 10.230.0.254
+# soit dynamiquement au lancement d'une interface PPP, par exemple dans un
+# fichier /etc/ppp/ip-up.d/0000iproute tel que suit :
+# #!/bin/sh
+# IP="/sbin/ip"
+# for net in `awk '/^spdadd .* out /{print $3}' /etc/ipsec-tools.conf` ; do
+# $IP route replace "$net" via $PPP_REMOTE dev $PPP_IFACE src 10.230.0.254
+# done
+# $IP route replace default via $PPP_REMOTE dev $PPP_IFACE src 210.245.61.206
+# - convenir avec un des admins du RPV (Jean Christophe André ou Moussa Nombré)
+# du moment de la bascule de pipsecd vers ipsec-tools
+# - stopper le service pipsecd et purger le paquet pipsecd devenu inutile :
+# # /etc/init.d/pipsecd stop
+# # aptitude purge pipsecd
+# - installer le paquet ipsec-tools et la configuration IPsec natif, par exemple :
+# # aptitude install ipsec-tools
+# # cat /root/ipsec-tools.conf >> /etc/ipsec-tools.conf
+# # service setkey restart
+# - demander le redémarrage du Netopia correspondant à Montréal
+# - tester que tout fonctionne bien, depuis le pare-feu et depuis un poste client
cat << __EOF__
REMOTENET=$5; split(REMOTENET,N,"\.")
REMOTEMASK=$7; split(REMOTEMASK,M,"\.")
REMOTENET=N[1]"."N[2]"."N[3]".0" # incorrect mais plus simple pour le moment
- REMOTECIDR=32-log(256^4-(M[1]*256^3+M[2]*256^2+M[3]*256+M[4]))/log(2)
+ REMOTECIDR=20 # 32-log(256^4-(M[1]*256^3+M[2]*256^2+M[3]*256+M[4]))/log(2)
printf("remotenet %s %s\n", IF, REMOTENET"/"REMOTECIDR)
}
' /etc/pipsecd/startup
if (EMPTYLINE!=1) { print ""; EMPTYLINE=1 }
}
'
+exit 0
+++ /dev/null
-#!/bin/sh
-# sysadmin-check-version-arch - vérifie la version et l'architecture système
-# Copyright ©2011 Agence universitaire de la Francophonie
-# http://www.auf.org/
-# Licence : GNU General Public License, version 3
-# Auteur : Progfou <jean-christophe.andre@auf.org>
-# Création : 2011-04-26
-# Mise à jour : 2011-08-23
-
-EXPECTED_DEBIAN_VERSION="6.0.2"
-ACCEPTED_DEBIAN_VERSION="5.0.8"
-if grep -q '^flags.* lm ' /proc/cpuinfo ; then
- EXPECTED_DEBIAN_ARCH="x86_64"
- ACCEPTED_DEBIAN_ARCH="i686"
-else
- EXPECTED_DEBIAN_ARCH="i686"
- ACCEPTED_DEBIAN_ARCH="i686"
-fi
-
-EXPECTED_UBUNTU_VERSION="10.04"
-ACCEPTED_UBUNTU_VERSION="10.04"
-if dpkg -l ubuntu-desktop >/dev/null 2>&1 ; then
- EXPECTED_UBUNTU_ARCH="i686"
- ACCEPTED_UBUNTU_ARCH="i686"
-else # serveur sous Ubuntu
- EXPECTED_UBUNTU_ARCH="${EXPECTED_DEBIAN_ARCH}"
- ACCEPTED_UBUNTU_ARCH="${ACCEPTED_DEBIAN_ARCH}"
-fi
-
-color_name_to_code() {
- case "$1" in
- black) printf "0" ;;
- red) printf "1" ;;
- green) printf "2" ;;
- yellow) printf "3" ;;
- blue) printf "4" ;;
- magenta) printf "5" ;;
- cyan) printf "6" ;;
- white) printf "7" ;;
- *) printf "" ;;
- esac
-}
-
-colorize() {
- # syntax: colorize [bright] [bg color_name] color_name text
- ansi_seq=""
- if [ "$1" = "bright" ] ; then
- shift ; ansi_seq="${ansi_seq}1;"
- fi
- if [ "$1" = "bg" ] ; then
- shift ; bg="`color_name_to_code "$1"`" ; shift
- if [ "${bg}" != "" ] ; then
- ansi_seq="${ansi_seq}4${bg};"
- fi
- fi
- fg="`color_name_to_code "$1"`" ; shift
- if [ "${fg}" != "" ] ; then
- ansi_seq="${ansi_seq}3${fg}"
- fi
- text="$@"
- if [ "${ansi_seq}" != "" ] ; then
- text="\033[${ansi_seq}m${text}\033[m"
- fi
- printf "${text}"
-}
-
-display_host() {
- name="$1" ; dist="$2" ; version="$3" ; arch="$4" ; note="$5"
- goals=""
- if [ "${dist}" = "Ubuntu" ] ; then
- expected_version="${EXPECTED_UBUNTU_VERSION}"
- accepted_version="${ACCEPTED_UBUNTU_VERSION}"
- expected_arch="${EXPECTED_UBUNTU_ARCH}"
- accepted_arch="${ACCEPTED_UBUNTU_ARCH}"
- elif [ "${dist}" = "Debian" ] ; then
- expected_version="${EXPECTED_DEBIAN_VERSION}"
- accepted_version="${ACCEPTED_DEBIAN_VERSION}"
- expected_arch="${EXPECTED_DEBIAN_ARCH}"
- accepted_arch="${ACCEPTED_DEBIAN_ARCH}"
- else
- dist="`colorize bright red "${dist}"`"
- goals="${goals} Debian"
- fi
- if [ "${version}" = "${expected_version}" ] ; then
- version="`colorize bright green "${version}"`"
- else
- goals="${goals} ${expected_version}"
- if [ "${version}" != "${accepted_version}" ] ; then
- version="`colorize bright red "${version}"`"
- fi
- fi
- if [ "${arch}" = "${expected_arch}" ] ; then
- arch="`colorize bright green "${arch}"`"
- else
- goals="${goals} ${expected_arch}"
- if [ "${arch}" != "${accepted_arch}" ] ; then
- arch="`colorize bright red "${arch}"`"
- fi
- fi
- if [ "${note}" = "voip" ] ; then
- if [ "${version}" = "${accepted_version}" ] ; then
- version="`colorize bright green "${version}"`"
- fi
- goals=""
- note='ne pas migrer vers Squeeze !'
- fi
- if expr match "${note}" '.*!' >/dev/null ; then
- note="`colorize bright red "${note}"`"
- fi
- if [ "${goals}" != "" ] ; then
- goals="`colorize bright blue "${goals}"`"
- note="${note} (but :${goals})"
- fi
- printf "%-25s: %s %s (%s) %s\n" "${name}" "${dist}" "${version}" "${arch}" "${note}"
-}
-
-display_host "host" "`lsb_release -si`" "`lsb_release -sr`" "`uname -m`"
-if test -x /usr/sbin/vzctl
-then
- IDS="`vzlist -H -o ctid`"
- if [ -n "${IDS}" ] ; then
- for id in ${IDS}
- do
- note=""
- name="`sed -n '/^NAME=/s/^.*="\?\([^"]*\)"\?.*$/\1/p' /etc/vz/conf/${id}.conf`"
- if [ -z "${name}" ] ; then
- name="`sed -n '/^HOSTNAME=/s/^.*="\?\([^"]*\)"\?.*$/\1/p' /etc/vz/conf/${id}.conf`"
- fi
- dist="`vzctl exec ${id} lsb_release -si 2>/dev/null`"
- if [ -n "${dist}" ] ; then
- version="`vzctl exec ${id} lsb_release -sr 2>/dev/null`"
- else
- dist="------"
- version="-----"
- note='paquet lsb-release manquant !'
- fi
- arch="`vzctl exec ${id} uname -m`"
- if [ -x "/var/lib/vz/private/${id}/usr/sbin/asterisk" ] ; then
- note="voip"
- fi
- display_host "CT ${id} (${name})" "${dist}" "${version}" "${arch}" "${note}"
- done
- fi
-fi
+++ /dev/null
-#!/bin/sh
-# upgrade.sh - outil de mise à jour de serveur, avec support OpenVZ
-# Copyright ©2010-2011 Agence universitaire de la Francophonie
-# http://www.auf.org/
-# Licence : GNU General Public License, version 3
-# Auteur : Progfou <jean-christophe.andre@auf.org>
-# Création : 2010-01-26
-# Mise à jour : 2011-03-06
-export LANG=
-CONFDIRS="/etc"
-IPT="iptables"
-IP6T="ip6tables"
-IF="`route -n | awk '/^0.0.0.0/{print $(NF);exit}'`"
-$IPT -I OUTPUT -o "$IF" -m owner --uid-owner 0 -p tcp --dport 80 -j ACCEPT
-$IP6T -I OUTPUT -o "$IF" -m owner --uid-owner 0 -p tcp --dport 80 -j ACCEPT
-aptitude update
-aptitude safe-upgrade
-aptitude clean
-$IP6T -D OUTPUT -o "$IF" -m owner --uid-owner 0 -p tcp --dport 80 -j ACCEPT
-$IPT -D OUTPUT -o "$IF" -m owner --uid-owner 0 -p tcp --dport 80 -j ACCEPT
-if test -x /usr/sbin/vzctl
-then
- $IPT -I FORWARD -o "$IF" -p tcp --dport 80 -j ACCEPT
- $IP6T -I FORWARD -o "$IF" -p tcp --dport 80 -j ACCEPT
- for id in `vzlist -H -o ctid`
- do
- #vzctl exec $id rm -v -f /var/lib/apt/lists/partial/*
- vzctl exec $id aptitude update
- vzctl exec $id aptitude safe-upgrade </dev/tty >/dev/tty
- vzctl exec $id aptitude clean
- done
- $IP6T -D FORWARD -o "$IF" -p tcp --dport 80 -j ACCEPT
- $IPT -D FORWARD -o "$IF" -p tcp --dport 80 -j ACCEPT
- CONFDIRS="$CONFDIRS "/vz/private/*/etc
-fi
-find $CONFDIRS -name "*.dpkg*" -o -name "*.ucf*"