Можно изменить исходный IP-адрес, если ваш локальный сетевой интерфейс имеет несколько IP-адресов.
Предположим, у вас есть сервер, который имеет 2 IP-адреса, 1.1.1.10
и 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
Вы можете проверить свой текущий общедоступный IP-адрес с помощью потрясающего веб-сервиса ifconfig.co :
$ curl -4 ifconfig.co
1.1.1.10
Чтобы получить доступ к веб-службе ifconfig.co с помощью другого IP-адреса ( 2.2.2.20
), вы можете создать маршрут на основе IP-адреса целевого сервера. Используйте dig, чтобы найти целевые IP-адреса из A
записей DNS :
$ dig ifconfig.co
...
ifconfig.co. 39 IN A 104.28.18.94
ifconfig.co. 39 IN A 104.28.19.94
...
Теперь добавьте пользовательские маршруты для этих 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
Запустив curl снова, вы увидите, что используете другой IP-адрес источника:
$ curl -4 ifconfig.co
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
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
Примечание: это работает только в том случае, если исходный IP-адрес может быть разрешен на вашем сервере, в противном случае трехстороннее рукопожатие TCP не будет выполнено, как указано здесь .