Это мой вариант использования:
У меня есть куча хостов за балансировщиками нагрузки и клиентов SSH через балансировщик нагрузки. LB внутренне создает новое соединение, поэтому соединение с конечным хостом имеет IP-адреса LB. Чтобы узнать, кто запустил запрос, балансировщик нагрузки настроен на пересылку IP-адреса клиента в заголовке. Я не совсем знаком с тем, как работает пересылка, но, насколько я понимаю, в заголовок добавляется магическое число, за которым следует длина поля, а затем само поле, содержащее ClientIP.
Есть ли способ указать SSHD получить перенаправленный IP-адрес клиента? Прошу прощения, если детали немного сбивают с толку, я не знаком с сетевой частью, но у моей команды есть этот вариант использования, и я хотела бы знать, как заставить SSHD извлекать CIP (IP-адрес клиента) из TCP-пакета.
Если балансировка нагрузки работала в режиме DSR, процесс sshd видел бы только IP-адрес клиента и никогда не видел бы IP-адрес балансировщика нагрузки. Я предполагаю, что в вашей сетевой настройке есть что-то, препятствующее использованию DSR, поэтому вам придется использовать другие методы.
Существуют разные уровни протокола, на которых IP-адрес клиента может быть вставлен в заголовок.
X-Forwarded-For
широко используется для этого, но, поскольку он специфичен для HTTP, вы не можете использовать его с ssh.Используя такие инструменты, как tcpdump или wirehark, вы можете проверять трафик, чтобы узнать, какой заголовок используется для передачи клиентского IP-адреса. Подходящая команда tcpdump для запуска на сервере может выглядеть так tcpdump -pni eth0 -s0 -Uw /tmp/ssh-traffic.pcap 'port 22'
Затем выходной файл можно проанализировать с помощью tcpdump или wirehark.