Использование Supermicro IPMI за прокси-сервером?

12

Это сервер SuperMicro с материнской платой X8DT3, которая содержит встроенный BMC IPMI. В этом случае BMC - это Winbond WPCM450 ). Я считаю, что многие серверы Dell используют эту похожую модель BMC.

Обычной практикой в ​​IPMI является его изоляция в частной, не маршрутизируемой сети. В нашем случае все карты IPMI подключены к частной локальной сети управления по адресу 192.168.1.0/24, которая не имеет маршрута к внешнему миру. Если я подключу свой ноутбук к сети 192.168.1.0/24, я смогу убедиться, что все функции IPMI работают должным образом, включая удаленную консоль.

Мне нужно получить доступ ко всем функциям IPMI из другой сети через какое-то зашифрованное соединение.

Я пробовал переадресацию портов SSH. Это отлично работает для нескольких серверов, однако у нас есть около 100 таких серверов, и нецелесообразно поддерживать конфигурацию клиента SSH для пересылки 6 портов на 100 серверов.

Поэтому я подумал, что попробую SOCKS прокси . Это работает, но кажется, что приложение Remote Console не подчиняется моим общесистемным настройкам прокси.

  1. Я настроил SOCKS прокси. Подробное ведение журнала позволяет мне видеть сетевую активность и переадресацию портов.

    ssh -v -D 3333 stefanl@gateway.example.org
    
  2. Я настраиваю свою систему для использования прокси SOCKS. Я подтверждаю, что Java использует настройки прокси-сервера SOCKS.

  3. SOCKS прокси работает. Я подключаюсь к BMC по адресу http://192.168.1.100/, используя свой веб-браузер. Я могу войти в систему, просмотреть состояние сервера, включить или выключить компьютер и т. Д. Поскольку подробное ведение журнала SSH включено, я вижу прогресс.

Вот где это получается сложно:

  1. Я нажимаю кнопку «Запустить консоль», которая загружает файл с именем jviewer.jnlp. Файлы JNLP открываются с помощью Java Web Start.

  2. Откроется окно Java. В строке заголовка написано «Просмотр перенаправления». Существуют меню для «Видео», «Клавиатура», «Мышь» и т. Д. Это подтверждает, что Java способна загрузить приложение через прокси-сервер и запустить приложение.

  3. Через 60 секунд приложение отключается и просто говорит «Ошибка при открытии видео-сокета». Вот скриншот . Если бы это сработало, я бы увидел окно в стиле VNC. В моих журналах SSH нет попыток подключения к портам 5900/5901. Это говорит о том, что приложение Java запустило приложение VNC, но приложение VNC игнорирует общесистемные настройки прокси и, следовательно, не может подключиться к удаленному хосту.

Java, кажется, подчиняется моим общесистемным настройкам прокси, но это приложение VNC, похоже, игнорирует его.

Могу ли я заставить это приложение VNC использовать мои общесистемные настройки прокси-сервера?

Стефан Ласевский
источник

Ответы:

4

Похоже, VPN может быть вашим лучшим выбором. Иметь ACL на маршрутизаторе, чтобы единственный нелокальный трафик проходил через VPN, и все готово. Очень простой и безопасный, а также простой в управлении.

MDMarra
источник
1
VPN отлично работает для нас, как проводник к нескольким машинам IPMI. Просто настройте современный (128 МБ, быстрый процессор, такой как Asus RT-N16) маршрутизатор с Tomato и OpenVPN, и все получится. Да, OpenVPN может быть проще в настройке , но после настройки он работает!
Джефф Этвуд
В конце концов, я отказываюсь от SOCKS и использую VPN. Я, вероятно, пойду с OpenVPN.
Стефан Ласевский
21

Я понял, что для этого лучше не использовать прокси-сервер socks, а вместо этого перенаправлять все порты, необходимые для локального IP-адреса. Чтобы избежать любых существующих сервисов, я использую IP, отличный от 127.0.0.1. Предполагая, что вы выбрали 127.0.0.2, а ваш сервер за прокси - 192.168.1.1, используйте команду ssh:

ssh user @ proxy-server -L127.0.0.2: 443: 192.168.1.1: 443 -L127.0.0.2: 5900: 192.168.1.1: 5900 -L127.0.0.2: 5901: 192.168.1.1: 5901 -L127 .0.0.2: 5120: 192.168.1.1: 5120 -L127.0.0.2: 5123: 192.168.1.1: 5123-C

Затем вы можете просмотреть https://127.0.0.2 и использовать KVM как обычно.

Перенаправленные порты TCP: 5900 и 5901 для управления и видео, 5120 для виртуального CD и 5123 для виртуальной дискеты (последние два я не тестировал). Добавлен -C для сжатия, хотя я не знаю, подходит ли что-нибудь отправленное для сжатия.

Другой, немного более удобный (и теоретически более эффективный) метод в linux, это использование sshuttle , который прозрачно пересылает все TCP-соединения через ssh с использованием iptables и интерпретатора python на прокси-сервере.

sshuttle -r user @ proxy-server 192.168.1.1

Подсказка: sshuttle упаковывается в Debian.

То, что я пока не мог переслать, это UDP-порт 623, который можно использовать для ipmitool, CLI-соединения для IPMI. Там являются несколько учебников по этому вопросу , но никто не работал для меня. В любом случае, Java KVM достаточно хорош.

Коркман
источник
Я вижу, что SSH перенаправляет только TCP-трафик, а не UDP-трафик. IPMI (порт 623 / UDP) и Serial-over-LAN (порт 6666 / UDP) являются только UDP, и, таким образом, требуют какого-то особенного преобразования UDP-TCP-TCP netcat. Как расстраивает.
Стефан Ласевски
1
Первая команда ssh работает (веб-интерфейс и удаленная консоль java), за исключением того, что виртуальное монтирование компакт-диска, похоже, не работает, если вы также не перенаправите 623 ( -L127.0.0.2:623:192.168.1.1:623). Спасибо за перечисление необходимых портов. Это намного проще, чем настроить VPN.
basic6
2

Попробуйте tsocks , это должно позволить вам запустить любой процесс через прокси-сервер SOCKS, установив LD_PRELOAD, который должен работать во всех подпроцессах, посмотрите это, например, для использования. Конечно, если вы используете ssh для создания прокси-сервера SOCKS, у вас все еще будет проблема UDP, но это должно обойти проблему подпроцесса.

Майк
источник