Można zmienić źródłowy adres IP, jeśli lokalny interfejs sieciowy ma wiele adresów IP.
Załóżmy, że masz serwer, który ma 2 adresy IP 1.1.1.10
i 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
Możesz zweryfikować swój obecny publiczny adres IP za pomocą niesamowitej usługi internetowej ifconfig.co :
$ curl -4 ifconfig.co
1.1.1.10
Aby uzyskać dostęp do usługi internetowej ifconfig.co przy użyciu drugiego adresu IP ( 2.2.2.20
), możesz utworzyć trasę na podstawie adresu IP serwera docelowego. Użyj dig, aby znaleźć docelowe adresy IP z A
rekordów DNS :
$ dig ifconfig.co
...
ifconfig.co. 39 IN A 104.28.18.94
ifconfig.co. 39 IN A 104.28.19.94
...
Teraz dodaj niestandardowe trasy dla tych adresów 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
Po ponownym uruchomieniu curl widać, że używasz innego źródłowego adresu IP:
$ curl -4 ifconfig.co
2.2.2.20
Ponadto informacje o routingu są aktualizowane:
$ 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
Uwaga: działa to tylko wtedy, gdy źródłowy adres IP można rozwiązać na serwerze, w przeciwnym razie potrójny uścisk protokołu TCP nie powiedzie się, jak wskazano tutaj .