Il est possible de modifier l'adresse IP source, si votre interface réseau locale a plusieurs adresses IP.
Supposons que vous ayez un serveur qui possède 2 adresses IP 1.1.1.10
et 2.2.2.20
:
$ ip route
default via 1.1.1.193 dev eth0
1.1.1.192/27 via 1.1.1.193 dev eth0
1.1.1.192/27 dev eth0 proto kernel scope link src 1.1.1.10
2.2.2.20 via 2.2.2.20 dev eth0 scope link
Vous pouvez vérifier votre adresse IP publique actuelle avec le formidable service Web ifconfig.co :
$ curl -4 ifconfig.co
1.1.1.10
Pour accéder au service Web ifconfig.co à l'aide de l'autre adresse IP ( 2.2.2.20
), vous pouvez créer un itinéraire basé sur l'adresse IP du serveur cible. Utilisez dig pour trouver les adresses IP cibles à partir des A
enregistrements DNS :
$ dig ifconfig.co
...
ifconfig.co. 39 IN A 104.28.18.94
ifconfig.co. 39 IN A 104.28.19.94
...
Ajoutez maintenant des itinéraires personnalisés pour ces adresses IP:
$ ip route add 104.28.18.94/32 via 1.1.1.193 dev eth0 src 2.2.2.20
$ ip route add 104.28.19.94/32 via 1.1.1.193 dev eth0 src 2.2.2.20
En exécutant à nouveau curl, vous voyez que vous utilisez l'autre adresse IP source:
$ curl -4 ifconfig.co
2.2.2.20
De plus, vos informations de routage sont mises à jour:
$ ip route
default via 1.1.1.193 dev eth0
1.1.1.192/27 via 1.1.1.193 dev eth0
1.1.1.192/27 dev eth0 proto kernel scope link src 1.1.1.10
2.2.2.20 via 2.2.2.20 dev eth0 scope link
104.28.18.94 via 1.1.1.193 dev eth0 src 2.2.2.20
104.28.19.94 via 1.1.1.193 dev eth0 src 2.2.2.20
Remarque: cela ne fonctionne que si l'adresse IP source peut être résolue sur votre serveur, sinon la négociation TCP à 3 échouera, comme indiqué ici .