У нас есть сервер, на котором один из наших инженеров неправильно сконфигурировал подсеть, и теперь мы заблокированы для этого сервера, и единственный доступ, о котором я знаю, будет работать, это последовательная консоль от IDC (это означает, что мы попросим инженера IDC помочь нам с этим) .
Что было неправильно сконфигурировано:
address 192.168.1.9 # Original address there was
netmask 255.255.255.254 # Misconfigured, originally should've been .240
Из любопытства - есть ли способ избежать вызова IDC и каким-то образом подключиться к этому хосту по SSH (тогда мы можем исправить конфигурацию)?
Вам необходимо войти в систему на другом хосте в том же сегменте сети. Некоторые способы получить доступ к неправильно настроенному хосту требуют root на промежуточном хосте, но есть также один простой способ получить доступ без необходимости root на промежуточном хосте.
Простой способ доступа к хосту с помощью IPv6
ssh -o ProxyCommand='ssh -W [fe80::42:ff:fe:42%%eth0]:%p user@intermediate-host' root@target-server
Следующие примеры значений в приведенной выше команде необходимо заменить правильными значениями для вашего варианта использования: fe80::42:ff:fe:42
, eth0
, user
, intermediate-host
, и target-server
.
Подробное объяснение того, как это работает
ProxyCommand
- это функция ssh, которую можно использовать, когда вы не можете открыть TCP-соединение напрямую с целевым хостом. Аргумент к ProxyCommand
- это команда, стандартный ввод / вывод которой следует использовать вместо TCP-соединения.
-W
используется для открытия переадресации одного порта и подключения его к stdin / stdout. Это прекрасно сочетается с ProxyCommand
.
fe80::42:ff:fe:42%%eth0
- это локальный адрес целевого хоста. Обратите внимание, что из-за ProxyCommand
с помощью %
в качестве escape-символа набранная команда ssh должна использовать %%
в этом месте. Вы можете найти все локальные для ссылок адреса в сегменте, запустив ssh user@intermediate-host ping6 -nc2 ff02::1%eth0
.
Использование для этой цели локальных адресов IPv6 обычно является самым простым способом, поскольку он включен по умолчанию во всех современных системах, а локальные адреса ссылок продолжают работать, даже если стеки IPv4 и IPv6 настроены неправильно.
Возвращение к IPv4
Если IPv6 полностью отключен на неправильно настроенном хосте (абсолютно не рекомендуется), возможно, вам придется прибегнуть к использованию IPv4. Поскольку IPv4 не имеет локальных адресов канала, как IPv6, тогда доступ к неправильно настроенному хосту с использованием IPv4 становится более сложным и требует корневого доступа на промежуточном хосте.
Если бы неправильно настроенный хост все еще мог использовать свой шлюз по умолчанию, вы могли бы получить к нему доступ извне. Возможно, неверно настроенная сетевая маска также нарушила шлюз по умолчанию из-за того, что стек отказался использовать шлюз за пределами префикса, покрытого сетевой маской. Если это действительно так, неправильно настроенный хост сможет взаимодействовать только с 192.168.1.8, потому что это единственный другой IP-адрес в подсети, в настоящее время доступный этому неправильно настроенному хосту.
Если у вас есть логин на 192.168.1.8, вы можете просто использовать ssh оттуда на 192.168.1.9. Если 192.168.1.8 в настоящее время не назначен, вы можете временно назначить его любому хосту в сегменте, к которому у вас есть root-доступ.
kasperd
опубликовал отличный ответ, достаточно подробный, чтобы я мог узнать, как я могу выйти из ситуации в вопросе. Этот ответ - точная пошаговая инструкция того, как я это сделал.
arp -a
или ip neighbor list
так как root
найдите MAC-адрес неправильно настроенного сервера.ssh user@link-local%dev
где: Вам нужно загрузить IP-адрес в пределах настроенная подсеть вашей цели, а не только в пределах того диапазона, который вам действительно нужен.
Если вы отправляете пакет на 10.0.0.2 с подсетью 255.255.255.248, например, из 10.0.0.220, 10.0.0.2 будет смотреть на свою маску подсети, чтобы выяснить, как ответить. Поскольку .220 - это WAAY из подсети 255.255.255.248, .2 должен вместо этого отправить ответ на шлюз по умолчанию.
Итак, если вы можете загрузить IP-адрес в той же подсети, что и .2, например. 10.0.0.3, то заработает.
В вашем конкретном случае для 10.0.0.9 подсеть 255.255.255.254 имеет только 1 дополнительный IP-адрес, а именно 10.0.0.8. Итак, если вы можете загрузить этот IP-адрес, вы сможете использовать SSH.