У меня есть рабочая станция, подключенная к нескольким внутренним сетям, с разными статическими 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>
с исходного компьютера, чтобы найти маршрут, по которому он проходит к месту назначения.