Назад | Перейти на главную страницу

Как узнать, какой статический IP-адрес один компьютер использует для подключения к другому компьютеру?

У меня есть рабочая станция, подключенная к нескольким внутренним сетям, с разными статическими IP-адресами в каждой из них. Через одну (?) Из этих сетей я могу подключиться к серверу по ssh. Как я могу узнать, какой из IP-адресов моей рабочей станции используется для подключения к серверу? Насколько я могу судить, между двумя компьютерами нет NAT.

На машине Linux вы можете найти исходный IP-адрес, который будет использоваться для соединения с ip route get $destination_ip

Это основной IP-адрес интерфейса, который напрямую связан со следующим переходом.

Через ssh?

server$ echo $SSH_CLIENT
1234:5678:90a:bc::805f:c436 58642 22
server$ 

Вы можете использовать traceroute и посмотреть, с какого IP он идет. Или после ssh'инга на сервер проверьте:

who am i

последнее поле - ваш IP или fqdn, если в нем есть обратная запись DNS.

Другой вариант - после отправки ssh на ваш сервер выполните:

tcpdump -nnpi any icmp

А с другого терминала на вашей рабочей станции пингуйте этот хост. В оболочке tcpdump вы увидите icmp-пакеты с IP-адреса вашей рабочей станции.

Теперь, когда я думаю об этом, вам даже не нужен доступ к серверу, вы можете запустить tcpdump на своем хосте, проверяя пакеты для выбранного неиспользуемого порта, скажем, 121345, в одной корневой оболочке на вашей рабочей станции:

tcpdump -nnpi any port 12345 

Затем из обычного окна терминала на вашей рабочей станции:

telnet server 12345

или:

nc server 12345

В оболочке tcpdump вы увидите IP-адрес, который вы используете для подключения к серверу.

Если вы работаете в Windows, используйте tracert <destination IP> с исходного компьютера, чтобы найти маршрут, по которому он проходит к месту назначения.