Menggunakan Supermicro IPMI di belakang Proxy?

12

Ini adalah server SuperMicro dengan motherboard X8DT3 yang berisi On-board IPMI BMC. Dalam hal ini, BMC adalah Winbond WPCM450 ). Saya percaya banyak server Dell menggunakan model BMC serupa.

Praktik umum dengan IPMI adalah mengisolasinya ke jaringan pribadi yang tidak dapat dialihkan. Dalam kasus kami, semua kartu IPMI dicolokkan ke LAN manajemen pribadi di 192.168.1.0/24 yang tidak memiliki rute ke dunia luar. Jika saya mencolokkan laptop saya ke jaringan 192.168.1.0/24, saya dapat memverifikasi bahwa semua fitur IPMI berfungsi seperti yang diharapkan, termasuk konsol jarak jauh.

Saya perlu mengakses semua fitur IPMI dari jaringan yang berbeda, melalui semacam koneksi terenkripsi.

Saya mencoba penerusan port SSH. Ini berfungsi dengan baik untuk beberapa server, namun, kami memiliki hampir 100 server ini dan mempertahankan konfigurasi klien SSH untuk meneruskan 6 port pada 100 server tidak praktis.

Jadi saya pikir saya akan mencoba proxy SOCKS . Ini berfungsi, tetapi tampaknya aplikasi Remote Console tidak mematuhi pengaturan proxy seluruh sistem saya.

  1. Saya menyiapkan proxy SOCKS. Logging Verbose memungkinkan saya untuk melihat aktivitas jaringan, dan jika port sedang diteruskan.

    ssh -v -D 3333 [email protected]
    
  2. Saya mengkonfigurasi sistem saya untuk menggunakan proxy SOCKS. Saya mengonfirmasi bahwa Java menggunakan pengaturan proxy SOCKS.

  3. Proxy SOCKS berfungsi. Saya terhubung ke BMC di http://192.168.1.100/ menggunakan browser web saya. Saya bisa masuk, melihat Server Health, menghidupkan atau mematikan mesin, dll. Karena SSH verbose logging diaktifkan, saya bisa melihat perkembangannya.

Di sinilah rumitnya:

  1. Saya mengklik tombol "Luncurkan Konsol" yang mengunduh file yang disebut jviewer.jnlp. File JNLP dibuka dengan Java Web Start.

  2. Jendela Java terbuka. Bilah judul bertuliskan "Redirection Viewer" di bilah judul. Ada menu untuk "Video" "Keyboard" "Mouse", dll. Ini mengkonfirmasi bahwa Java dapat mengunduh aplikasi melalui proxy, dan memulai aplikasi.

  3. 60 detik kemudian, aplikasi mati dan hanya mengatakan "Kesalahan membuka soket video". Ini screenshotnya . Jika ini berhasil, saya akan melihat jendela gaya VNC. Log SSH saya tidak menunjukkan upaya koneksi ke port 5900/5901. Ini menunjukkan bahwa aplikasi Java memulai aplikasi VNC, tetapi aplikasi VNC mengabaikan pengaturan proksi seluruh sistem dan karenanya tidak dapat terhubung ke host jarak jauh.

Java tampaknya mematuhi pengaturan proxy sistemwide saya, tetapi aplikasi VNC ini tampaknya mengabaikannya.

Apakah ada cara bagi saya untuk memaksa aplikasi VNC ini menggunakan pengaturan proxy seluruh sistem saya?

Stefan Lasiewski
sumber

Jawaban:

4

Kedengarannya seperti VPN mungkin benar-benar taruhan terbaik Anda. Memiliki ACL pada router sehingga satu-satunya lalu lintas non-lokal harus melintasi VPN dan Anda selesai. Sangat sederhana dan aman serta mudah dikelola.

MDMarra
sumber
1
VPN bekerja sangat baik bagi kami sebagai saluran untuk beberapa mesin IPMI. Hanya menyiapkan router modern (128mb, CPU cepat seperti Asus RT-N16) dengan Tomat dan OpenVPN dan bekerja dengan baik. OpenVPN bisa lebih mudah diatur , ya, tapi begitu pengaturannya berhasil!
Jeff Atwood
Akhirnya, saya menyerah pada SOCKS dan saya menggunakan VPN. Saya mungkin akan menggunakan OpenVPN.
Stefan Lasiewski
21

Saya menemukan yang terbaik adalah tidak menggunakan proxy kaus kaki untuk ini, tetapi alih-alih meneruskan semua port yang diperlukan pada IP host lokal. Untuk menghindari layanan apa pun yang ada, saya menggunakan IP berbeda dari 127.0.0.1. Dengan asumsi Anda memilih 127.0.0.2, dan server Anda di belakang proxy adalah 192.168.1.1, ini adalah perintah ssh untuk menggunakan:

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

Kemudian Anda dapat menelusuri https://127.0.0.2 dan menggunakan KVM seperti biasa.

Port TCP yang diteruskan adalah 5900 dan 5901 untuk kontrol dan video, 5120 untuk CD virtual dan 5123 untuk disket virtual (saya tidak menguji dua yang terakhir). Ditambahkan -C untuk kompresi, meskipun saya tidak tahu apakah sesuatu yang dikirim cocok untuk kompresi.

Metode lain, sedikit lebih nyaman (dan, secara teori, berkinerja lebih baik) di linux, adalah dengan menggunakan sshuttle , yang secara transparan meneruskan semua koneksi TCP melalui ssh menggunakan iptables dan interpreter python pada proxy-server.

sshuttle -r user @ proxy-server 192.168.1.1

Petunjuk: sshuttle sedang dikemas dalam bahasa Debian.

Apa yang saya tidak bisa teruskan adalah port UDP 623, yang dapat digunakan untuk ipmitool, koneksi CLI untuk IPMI. Ada yang beberapa tutorial tentang ini, tetapi tidak bekerja untuk saya. Bagaimanapun, Java KVM cukup baik.

korkman
sumber
Saya melihat bahwa SSH hanya meneruskan lalu lintas TCP, bukan lalu lintas UDP. IPMI (port 623 / UDP) dan Serial-over-LAN (Port 6666 / UDP) hanya UDP, dan karenanya memerlukan semacam konversi UDP-to-TCP yang funky menggunakan netcat. Sangat frustasi.
Stefan Lasiewski
1
Perintah ssh pertama berfungsi (antarmuka web dan konsol jarak jauh java), kecuali pemasangan virtual cd tampaknya tidak berfungsi kecuali jika Anda juga meneruskan 623 ( -L127.0.0.2:623:192.168.1.1:623). Terima kasih telah mendaftar port yang diperlukan. Ini jauh lebih mudah daripada mengatur VPN.
basic6
2

Coba tsocks , ini akan memungkinkan Anda menjalankan proses apa pun melalui proxy SOCKS dengan mengatur LD_PRELOAD yang seharusnya bekerja di semua subproses, lihat ini sebagai contoh penggunaan. Tentu saja, jika Anda menggunakan ssh untuk membuat proksi SOCKS, Anda masih akan memiliki masalah UDP, tetapi ini harus mengatasi masalah subproses.

Mike
sumber