IPsec : différenciation entre les IP publiques du tunnel et de la passerelle.
authorProgfou <jean-christophe.andre@auf.org>
Tue, 13 Sep 2011 09:55:33 +0000 (16:55 +0700)
committerProgfou <jean-christophe.andre@auf.org>
Tue, 13 Sep 2011 12:06:19 +0000 (19:06 +0700)
ipsec/pipsecd2ipsectools [new file with mode: 0755]
sysadmin/pipsecd2ipsectools [deleted file]

diff --git a/ipsec/pipsecd2ipsectools b/ipsec/pipsecd2ipsectools
new file mode 100755 (executable)
index 0000000..9f89953
--- /dev/null
@@ -0,0 +1,113 @@
+#!/bin/sh
+# pipsecd2ipsectools - outil d'aide à la migration de pipsecd vers ipsec-tools
+# 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-02-15
+# 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
+LOCALNET="10.230.0.0/20"
+LOCALIP="10.230.0.254"
+PUBLICIP="210.245.61.206"
+GW="118.70.0.243"
+# - 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__
+
+# REMARQUES :
+# - l'ordre des règles spdadd est important et doit correspondre à l'ordre
+#   des routes les plus précises vers les routes les plus générales
+
+# ne pas utiliser IPsec en réseau local
+
+spdadd $LOCALNET $LOCALNET any -P out none ;
+spdadd $LOCALNET $LOCALNET any -P in none ;
+
+__EOF__
+
+(
+# pré-traitement de la liste des réseaux dans /etc/pipsecd/startup
+awk '
+/^ifconfig / {
+  IF=substr($2,6)
+  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=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
+# envoi du contenu de /etc/pipsecd/pipsecd.conf
+sed -e '/^[^#]/s/ *= */=/g' /etc/pipsecd/pipsecd.conf
+) | awk -v LOCALNET="$LOCALNET" -v LOCALIP="$LOCALIP" -v LOCALTUNIP="$PUBLICIP" -v GW="$GW" '
+/^remotenet / {
+  IF=$2; REMOTENET[IF]=$3
+  #printf("# IF=%s REMOTENET=%s\n", IF, REMOTENET[IF])
+}
+/^#/ {
+  LASTCOMMENT=$0
+}
+/^sa / {
+  SPI=substr($3,5)
+  ENC=substr($4,5); EKEY=substr($5,6); gsub("_","-",ENC)
+  AUTH=substr($6,6); AKEY=substr($7,6); gsub("_","-",AUTH)
+  if (AUTH=="hmac-md5-96") { AUTH="hmac-md5" }
+  if ($8 != "") {
+    OSPI=SPI; OENC=ENC; OEKEY=EKEY; OAUTH=AUTH; OAKEY=AKEY
+    REMOTETUNIP=substr($8,6)
+  } else {
+    ISPI=SPI; IENC=ENC; IEKEY=EKEY; IAUTH=AUTH; IAKEY=AKEY
+  }
+}
+/^if / {
+  IF=$2; LSPI=substr($3,10); RSPI=substr($4,11)
+  IPROUTE="ip route add "REMOTENET[IF]" via "GW" src "LOCALIP
+  printf("%s\n#%s\n\n", LASTCOMMENT, IPROUTE)
+  printf("spdadd %s %s any -P out ipsec\n", LOCALNET, REMOTENET[IF])
+  printf("  esp/tunnel/%s-%s/require ;\n", LOCALTUNIP, REMOTETUNIP)
+  printf("spdadd %s %s any -P in ipsec\n", REMOTENET[IF], LOCALNET)
+  printf("  esp/tunnel/%s-%s/require ;\n\n", REMOTETUNIP, LOCALTUNIP)
+  printf("add %s %s esp-old %s -m tunnel\n", LOCALTUNIP, REMOTETUNIP, OSPI)
+  printf("  -E %s 0x%s\n  -A %s 0x%s ;\n", OENC, OEKEY, OAUTH, OAKEY)
+  printf("add %s %s esp-old %s -m tunnel\n", REMOTETUNIP, LOCALTUNIP, ISPI)
+  printf("  -E %s 0x%s\n  -A %s 0x%s ;\n\n", IENC, IEKEY, IAUTH, IAKEY)
+  EMPTYLINE=0
+}
+/^[    ]*$/ {
+  if (EMPTYLINE!=1) { print ""; EMPTYLINE=1 }
+}
+'
+exit 0
diff --git a/sysadmin/pipsecd2ipsectools b/sysadmin/pipsecd2ipsectools
deleted file mode 100755 (executable)
index 83461c6..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/bin/sh
-# pipsecd2ipsectools - outil d'aide à la migration de pipsecd vers ipsec-tools
-# 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-02-15
-# 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__
-
-# REMARQUES :
-# - l'ordre des règles spdadd est important et doit correspondre à l'ordre
-#   des routes les plus précises vers les routes les plus générales
-
-# ne pas utiliser IPsec en réseau local
-
-spdadd $LOCALNET $LOCALNET any -P out none ;
-spdadd $LOCALNET $LOCALNET any -P in none ;
-
-__EOF__
-
-(
-# pré-traitement de la liste des réseaux dans /etc/pipsecd/startup
-awk '
-/^ifconfig / {
-  IF=substr($2,6)
-  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=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
-# envoi du contenu de /etc/pipsecd/pipsecd.conf
-sed -e '/^[^#]/s/ *= */=/g' /etc/pipsecd/pipsecd.conf
-) | awk -v LOCALGW="$LOCALGW" -v LOCALIP="$LOCALIP" -v LOCALNET="$LOCALNET" '
-/^remotenet / {
-  IF=$2; REMOTENET[IF]=$3
-  #printf("# IF=%s REMOTENET=%s\n", IF, REMOTENET[IF])
-}
-/^#/ {
-  LASTCOMMENT=$0
-}
-/^sa / {
-  SPI=substr($3,5)
-  ENC=substr($4,5); EKEY=substr($5,6); gsub("_","-",ENC)
-  AUTH=substr($6,6); AKEY=substr($7,6); gsub("_","-",AUTH)
-  if (AUTH=="hmac-md5-96") { AUTH="hmac-md5" }
-  if ($8 != "") {
-    OSPI=SPI; OENC=ENC; OEKEY=EKEY; OAUTH=AUTH; OAKEY=AKEY
-    REMOTEGW=substr($8,6)
-  } else {
-    ISPI=SPI; IENC=ENC; IEKEY=EKEY; IAUTH=AUTH; IAKEY=AKEY
-  }
-}
-/^if / {
-  IF=$2; LSPI=substr($3,10); RSPI=substr($4,11)
-  IPROUTE="ip route add "REMOTENET[IF]" via "LOCALGW" src "LOCALIP
-  printf("%s\n#%s\n\n", LASTCOMMENT, IPROUTE)
-  printf("spdadd %s %s any -P out ipsec\n", LOCALNET, REMOTENET[IF])
-  printf("  esp/tunnel/%s-%s/require ;\n", LOCALGW, REMOTEGW)
-  printf("spdadd %s %s any -P in ipsec\n", REMOTENET[IF], LOCALNET)
-  printf("  esp/tunnel/%s-%s/require ;\n\n", REMOTEGW, LOCALGW)
-  printf("add %s %s esp-old %s -m tunnel\n", LOCALGW, REMOTEGW, OSPI)
-  printf("  -E %s 0x%s\n  -A %s 0x%s ;\n", OENC, OEKEY, OAUTH, OAKEY)
-  printf("add %s %s esp-old %s -m tunnel\n", REMOTEGW, LOCALGW, ISPI)
-  printf("  -E %s 0x%s\n  -A %s 0x%s ;\n\n", IENC, IEKEY, IAUTH, IAKEY)
-  EMPTYLINE=0
-}
-/^[    ]*$/ {
-  if (EMPTYLINE!=1) { print ""; EMPTYLINE=1 }
-}
-'
-exit 0