Si votre fournisseur d’accès change sans vous prévenir votre IP fixe (merci Free !), vous risquez de regretter d’avoir basé vos règles de firewall sur cette adresse.
C’est ce qui m’est arrivé cet après-midi après avoir rebooté la Freebox : … les connexions ssh vers mes serveurs partaient en timeout et j’ai pris quelques minutes à me rendre compte que Free venait de changer mon IP. Comme je n’autorise le ssh que depuis mon IP (qui était sensé être fixe je le rappelle…), je me retrouve coincé.
Qu’à cela ne tienne, mon serveur est chez Online.fr, il est facile de booter en mode rescue. Sauf que c’est un ESXi 6 et c’est là que les choses se compliquent un peu.
Une fois connecté en rescue, je lance un fdisk:
$ fdisk -l
Disk /dev/sda: 1000 GB, 1000202273280 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1 8001 83 Linux
/dev/sda5 1 33 257040 83 Linux
/dev/sda6 33 65 257040 83 Linux
/dev/sda7 65 79 112455 83 Linux
/dev/sda8 79 115 289170 83 Linux
/dev/sda9 115 442 2626627 83 Linux
/dev/sda2 442 964 4192965 83 Linux
/dev/sda3 964 121602 969024735 83 Linux
puis je commence à monter une par une chaque partition à la recherche d’un /etc
cd /mnt
mkdir sda1
mount /dev/sda1 /mnt/sda1
etc…
Peine perdue. C’est un petit peu plus compliqué.
Après quelques recherches sur Google, je comprends que la configuration de l’ESXi se trouve dans un fichier state.tgz
qui contient lui-même un fichier local.tgz
, qui une fois décompressé me donnera enfin accès au fichier etc/vmware/esx.conf
Pourquoi faire simple quand on peut faire compliqué (merci VMware).
Notez aussi que vous trouverez deux fichiers state.tgz
sur deux partitions différentes : prenez le plus récent.
cd /
mkdir recovery
cp /mnt/sda6/state.tgz /recovery
cd recovery
tar -xvf state.tgz
tar -xvf local.tgz
Je recherche mon ancienne IP
$ grep -R MON.ANCIENNE.IP.FIXE *
vmware/esx.conf:/firewall/services/vSphereClient/allowedip0000/ipstr = "MON.ANCIENNE.IP.FIXE"
vmware/esx.conf:/firewall/services/sshServer/allowedip0000/ipstr = "MON.ANCIENNE.IP.FIXE"
vmware/esx.conf:/firewall/services/webAccess/allowedip0000/ipstr = "MON.ANCIENNE.IP.FIXE"
J’édite le fichier esx.conf
avec ma nouvelle IP. Puis je reconstruis le fichier state.tgz et le replace où je l’avais trouvé :
tar czf local.tgz etc/
tar czf state.tgz local.tgz
cp state.tgz /mnt/sda6/
umount /dev/sda6
Je quitte le mode rescue et redémarre l’ESXi… L’accès ssh et web est à nouveau fonctionnel !
J’espère que cela pourra être utile à tous ceux qui se retrouveront dans la même situation 😉