È possibile modificare l'indirizzo IP di origine, se l'interfaccia di rete locale ha più indirizzi IP.
Supponiamo di avere un server con 2 indirizzi IP 1.1.1.10
e 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
Puoi verificare il tuo attuale indirizzo IP pubblico con il fantastico servizio web ifconfig.co :
$ curl -4 ifconfig.co
1.1.1.10
Per accedere al servizio web ifconfig.co utilizzando l'altro indirizzo IP ( 2.2.2.20
), è possibile creare una route in base all'indirizzo IP del server di destinazione. Utilizzare dig per trovare gli indirizzi IP di destinazione dai A
record DNS :
$ dig ifconfig.co
...
ifconfig.co. 39 IN A 104.28.18.94
ifconfig.co. 39 IN A 104.28.19.94
...
Ora aggiungi percorsi personalizzati per questi indirizzi 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
Eseguendo nuovamente il ricciolo, vedi che stai utilizzando l'altro indirizzo IP di origine:
$ curl -4 ifconfig.co
2.2.2.20
Inoltre, le informazioni di routing vengono aggiornate:
$ 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
Nota: questo funziona solo se l'indirizzo IP di origine può essere risolto sul tuo server, altrimenti l'handshake a 3 vie TCP fallirà, come indicato qui .