
Всем привет,
На моем выделенном сервере есть несколько IP-адресов, назначенных определенным аккаунтам. И я могу подключиться к аккаунту по SSH через вторичный IP. Но после входа IP всегда становится основным IP (я пробовал с помощью команды " curl wtfismyip.com/text " )
У меня есть несколько скриптов оболочки, которые нужно запустить в разных экземплярах SSH, и они должны использовать разные IP-адреса (разные учетные записи) для исходящего трафика.
Есть ли у кого-нибудь предложения, решения по этому вопросу? Буду признателен за помощь.
Спасибо
решение1
IP-адрес вашего сервера, который видят внешние сайты (например, whatismyip, ...), — это IP-адрес, который ваш сервер получает из таблицы маршрутизации.
$ ip route
default via x.x.x.x dev ethX ...
10.0.0.0/16 dev ethY ...
....
Если сайт, к которому вы пытаетесь подключиться, имеет свой IP в подсети, указанной в таблице маршрутизации, то и исходный IP (ваш), и исходящий интерфейс будут взяты из этого конкретного маршрута. Например: IP whatismyip.net - 10.0.0.1, когда вы отправляете на него трафик, ваш сервер будет использовать интерфейс ethY и IP ethY.
В противном случае, если сайт не соответствует ни одной подсети, используется маршрут по умолчанию. В этом примере сервер будет отправлять трафик через интерфейс ethX с IP-адресом ethX в качестве источника.
В вашем контексте, похоже, маршрут по умолчанию проходит через eth0.
Чтобы использовать другой интерфейс/IP:
Вы можете указать для какой-либо команды исходящий интерфейс, а затем ваш исходный IP-адрес, например:
ping -I ethY whatever.net ping -I eth0.Y whatever.net curl --interface eth0.Y wtfismyip.com/text
или вы можете добавить новый маршрут для MY_REMOTE_IP, который будет принудительно использовать заданный интерфейс или исходный IP при общении с ним. В примере выше MY_SECOND_IP — это IP интерфейса ethY
$ ip route add MY_REMOTE_IP dev ethY src MY_SECOND_IP $ ip route add MY_REMOTE_IP dev eth0.Y src MY_SECOND_IP
В противном случае в некоторых командах можно принудительно указать исходный IP-адрес, например:
ssh -b MY_SECOND_IP user@MY_REMOTE_IP