IP failover en sortie de serveur dédié OVH
... / IP failover en sortie de ...
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
question

IP failover en sortie de serveur dédié OVH

Par
Wilo38
Créé le 2018-08-01 10:47:05 (edited on 2024-09-04 10:49:07) dans Serveurs dédiés

Bonjour,
Je parviens à configurer un IP failover et le Virtualhost d'un serveur apache pour accéder à un site via l'IP failover.
Mais je ne parviens pas à utiliser cette IP failover en sortie. Exemple tout simple : un script php faisant file_get_contents('https://www.monip.org/'); retourne l'IP du serveur et non l'IP failover.
Est-il possible d'utiliser l'IP failover en sortie pour un site web ?
Il me semble qu'il faut jouer sur la config de l'interface réseau et jouer sur iptable, mais ça dépasse pour l'instant ma compétence.
Je pense que la manoeuvre devrait être simple pour un bon sysadmin (rémunération possible)
Merci


2 réponses ( Latest reply on 2018-08-02 11:38:29 Par
Wilo38
)

Je ne connais pas le fonctionnement des IP FO (je n'en utilise pas) mais en tout cas pour changer l'adresse IP source d'un paquet sortant avec iptables ça se fait comme cela :

iptables -t nat -A POSTROUTING -i ethX -j SNAT --to-source 1.2.3.4

Merci, ça veut dire qu'il faudrait que je lance cette commande iptables avant chaque déclenchement de script, avec à chaque fois l'ip qui va bien ?

Pas exactement. Cette commande ajoute une règle de gestion des paquets au niveau du noyau qui est appliquée à tous les paquets sortants sur l'interface réseau `ethX` (à remplacer selon ta configuration) tant que tu ne la supprimes pas (avec le switch `-D` à la place de `-A`) ou que tu ne rebootes par le serveur.

Pour rendre la règle persistante il faut utiliser le paquet `iptables-persistent` et ajouter la règle dans un fichier de configuration situé dans `/etc/iptables/rules.v4`.

Merci, mais dans ce cas, l'adresse source sera toujours la même ip failover, alors que ma contrainte est justement de pouvoir utiliser l'une ou l'autre ip failover selon le script php lancé...

Concrètement, sur mon serveur, ifconfig me donne eth0 avec l'ip du dédié, et eth0:0 avec l'ip failover.

A l'avenir j'aurais 1 ou 2 ip failover de plus, que je devrais pouvoir utiliser en sortie selon les besoins...

Bonjour,

Pourquoi, dans ce cas précis, ne pas paramétrer l'IP dans le script PHP ?

Cordialement, janus57

Bonsoir Janus,

Comment paramètres-tu le script pour être vu comment provenant d'une ip failover pour l'extérieur ?

Bonjour,

le script utilise cURL ?
Si oui, voir : http://php.net/manual/fr/function.curl-setopt.php
avec l'option : CURLOPT_INTERFACE

Si autre fonction PHP, voir dans le manuel pour un équivalent.

Cordialement, janus57

Janus, t'es un génie ! Merci ! Problem solved !

C'est encore moi...

J'ai fait une nouvelle installation propre pour débuter mon projet : VPS OVH + Debian 9 + Virtualmin/webmin, IP failover pointée dessus.

J'ai voulu suivre le tuto OVH pour configurer l'ip failover sur la machine :
https://docs.ovh.com/fr/dedicated/network-ipaliasing/#debian-9-ubuntu-17-fedora-26-et-arch-linux_1

Mais... je n'ai aucun fichier /etc/systemd/network/1default.networkdefault.network
Du coup, je n'arrive pas à ajouter l'ip ainsi.

Par contre, j'arrive à ajouter l'ip failover dans webmin > Networking > Networking > Network interfaces > Active Now > ens3, etc...

Cela fonctionne, mais à chaque reboot de la machine, tout est perdu.

Comment faire pour une configuration persistante équivalente au tuto ovh mais qui marche ?

Bonjour,

Je serais tenté de penser à /etc/network/interfaces.d
Sur un VPS chez moi, il y a un fichier généré par les outils de cloud d'OVH. Ca a l'air d'être lu par le système.

Effectivement j'ai bien un fichier /etc/network/interfaces.d/50-cloud-init.cfg, mais son contenu est le suivant :

# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
auto lo
iface lo inet loopback

auto ens3
iface ens3 inet dhcp

Si j'en crois le commentaire, ce n'est pas persistant...

Ce fichier-là, non, mais rien ne t'empêche d'en créer d'autre et tester le comportement.

Donc je peux créer un fichier .cfg quelconque, placé dans /etc/network/interfaces.d/, avec un contenu dans ce genre ?

auto ens3:0
iface ens3:0 inet static
address IPFAILOVER
netmask 255.255.255.255
post-up /sbin/ifconfig ens3:0 IPFAILOVER netmask 255.255.255.255 broadcast IPFAILOVER
post-down /sbin/ifconfig ens3:0 down

(config trouvée sur un autre sujet du forum)

C'est en tous cas ce que j'essaierais.

Et tu à tout à fait raison car cela fonctionne au poil... Merci !