Używasz Supermicro IPMI za serwerem proxy?


12

Jest to serwer SuperMicro z płytą główną X8DT3, która zawiera wbudowane BMC IPMI. W tym przypadku BMC to Winbond WPCM450 ). Wierzę, że wiele serwerów Dell używa tego podobnego modelu BMC.

Powszechną praktyką w przypadku IPMI jest izolowanie go do prywatnej sieci bez możliwości routowania. W naszym przypadku wszystkie karty IPMI są podłączone do prywatnej sieci LAN zarządzania pod adresem 192.168.1.0/24, która nie ma trasy do świata zewnętrznego. Po podłączeniu laptopa do sieci 192.168.1.0/24 mogę sprawdzić, czy wszystkie funkcje IPMI działają zgodnie z oczekiwaniami, w tym konsola zdalna.

Potrzebuję uzyskać dostęp do wszystkich funkcji IPMI z innej sieci za pośrednictwem pewnego rodzaju szyfrowanego połączenia.

Próbowałem przekierowania portów SSH. Działa to dobrze na kilku serwerach, jednak mamy blisko 100 takich serwerów, a utrzymanie konfiguracji klienta SSH do przekazywania 6 portów na 100 serwerach jest niepraktyczne.

Pomyślałem więc, że wypróbuję proxy SOCKS . To działa, ale wydaje się, że aplikacja Remote Console nie przestrzega moich ogólnosystemowych ustawień proxy.

  1. Konfiguruję proxy SOCKS. Pełne rejestrowanie pozwala mi zobaczyć aktywność sieciową i przekazywanie portów.

    ssh -v -D 3333 stefanl@gateway.example.org
    
  2. Konfiguruję mój system do używania proxy SOCKS. Potwierdzam, że Java używa ustawień proxy SOCKS.

  3. Serwer proxy SOCKS działa. Łączę się z BMC pod adresem http://192.168.1.100/ za pomocą przeglądarki. Mogę się zalogować, wyświetlić kondycję serwera, włączyć lub wyłączyć maszynę itp. Ponieważ pełne rejestrowanie SSH jest włączone, widzę postęp.

Tutaj jest to trudne:

  1. Klikam przycisk „Uruchom konsolę”, który pobiera plik o nazwie jviewer.jnlp. Pliki JNLP są otwierane za pomocą Java Web Start.

  2. Otworzy się okno Java. Pasek tytułu zawiera napis „Przeglądarka przekierowań” na pasku tytułu. Dostępne są menu „Wideo” „Klawiatura” „Mysz” itp. Potwierdza to, że Java jest w stanie pobrać aplikację przez serwer proxy i uruchomić aplikację.

  3. 60 sekund później aplikacja przekroczy limit czasu i po prostu mówi „Błąd podczas otwierania gniazda wideo”. Oto zrzut ekranu . Gdyby to zadziałało, zobaczyłbym okno w stylu VNC. Moje dzienniki SSH nie pokazują prób połączenia z portami 5900/5901. Sugeruje to, że aplikacja Java uruchomiła aplikację VNC, ale aplikacja VNC ignoruje ogólnosystemowe ustawienia proxy i dlatego nie może połączyć się ze zdalnym hostem.

Java wydaje się być zgodna z moimi ogólnosystemowymi ustawieniami proxy, ale ta aplikacja VNC wydaje się ją ignorować.

Czy jest jakiś sposób, aby zmusić tę aplikację VNC do używania moich ogólnosystemowych ustawień proxy?

Odpowiedzi:


4

Wygląda na to, że VPN może być najlepszym wyborem. Miej ACL na routerze, aby jedyny ruch lokalny musiał przejść przez VPN i gotowe. Bardzo prosty i bezpieczny, a także łatwy w zarządzaniu.


1
VPN działa świetnie dla nas jako kanał dla wielu maszyn IPMI. Wystarczy skonfigurować nowoczesny (128mb, szybki procesor jak Asus RT-N16) router z Tomato i OpenVPN i działa to naprawdę nieźle. OpenVPN może być łatwiejszy do skonfigurowania , tak, ale po skonfigurowaniu działa!
Jeff Atwood

Nareszcie rezygnuję z SOCKS i korzystam z VPN. Prawdopodobnie pójdę z OpenVPN.
Stefan Lasiewski

21

Doszedłem do wniosku, że najlepiej nie używać do tego celu proxy proxy, ale zamiast tego przekierować wszystkie porty niezbędne na adres IP hosta lokalnego. Aby uniknąć istniejących usług, używam innego adresu IP niż 127.0.0.1. Zakładając, że wybrałeś 127.0.0.2, a twój serwer za proxy to 192.168.1.1, to jest polecenie ssh do użycia:

ssh użytkownik @ 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

Następnie możesz przeglądać https://127.0.0.2 i używać KVM jak zwykle.

Przekazywane porty TCP to 5900 i 5901 do kontroli i wideo, 5120 do wirtualnej płyty CD i 5123 do wirtualnej dyskietki (dwóch ostatnich nie testowałem). Dodano -C do kompresji, chociaż nie wiem, czy cokolwiek wysłane jest odpowiednie do kompresji.

Inną, nieco wygodniejszą (i teoretycznie lepiej działającą) metodą na Linuksie jest użycie sshuttle , który w przejrzysty sposób przekazuje wszystkie połączenia TCP przez ssh przy użyciu iptables i interpretera python na serwerze proxy.

sshuttle -r użytkownik @ serwer proxy 192.168.1.1

Wskazówka: sshuttle jest pakowany w Debianie.

To, czego jeszcze nie mogłem przesłać, to port UDP 623, którego można użyć do ipmitool, połączenia CLI dla IPMI. Tam kilka tutoriali na ten temat, ale żaden nie pracował dla mnie. W każdym razie Java KVM jest wystarczająca.


Widzę, że SSH przekazuje tylko ruch TCP, a nie UDP. IPMI (port 623 / UDP) i Serial-over-LAN (Port 6666 / UDP) są tylko UDP, a zatem wymagają pewnego rodzaju funky konwersji UDP na TCP netcat. Jak frustrujące.
Stefan Lasiewski

1
Pierwsze polecenie ssh działa (interfejs internetowy i zdalna konsola java), z wyjątkiem tego, że wirtualny montaż CD nie działa, chyba że prześlesz również 623 ( -L127.0.0.2:623:192.168.1.1:623). Dziękujemy za podanie wymaganych portów. Jest to o wiele łatwiejsze niż skonfigurowanie VPN.
podstawowe6

2

Spróbuj tsocks powinno pozwolić uruchomić dowolny proces przez proxy SOCKS przez ustawienie LD_PRELOAD który powinien działać we wszystkich podprocesów, zobaczyć to na przykład wykorzystanie. Oczywiście, jeśli używasz ssh do utworzenia proxy SOCKS, nadal będziesz mieć problem z UDP, ale to powinno rozwiązać problem podprocesu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.