Sử dụng Supermicro IPMI đằng sau một Proxy?


12

Đây là một máy chủ SuperMicro với bo mạch chủ X8DT3 chứa IPMI BMC trên bo mạch. Trong trường hợp này, BMC là WPCM450 Winbond . Tôi tin rằng nhiều máy chủ Dell sử dụng mô hình BMC tương tự.

Một thực tế phổ biến với IPMI là cách ly nó với một mạng riêng, không thể định tuyến. Trong trường hợp của chúng tôi, tất cả các thẻ IPMI được cắm vào mạng LAN quản lý riêng ở 192.168.1.0/24 không có đường đến thế giới bên ngoài. Nếu tôi cắm máy tính xách tay của mình vào mạng 192.168.1.0/24, tôi có thể xác minh rằng tất cả các tính năng IPMI hoạt động như mong đợi, bao gồm cả bảng điều khiển từ xa.

Tôi cần truy cập tất cả các tính năng IPMI từ một mạng khác, qua một số loại kết nối được mã hóa.

Tôi đã thử chuyển tiếp cổng SSH. Điều này hoạt động tốt đối với một vài máy chủ, tuy nhiên, chúng tôi có gần 100 máy chủ này và việc duy trì cấu hình máy khách SSH để chuyển tiếp 6 cổng trên 100 máy chủ là không thực tế.

Vì vậy, tôi nghĩ rằng tôi sẽ thử một proxy SOCKS . Điều này hoạt động, nhưng có vẻ như ứng dụng Bảng điều khiển từ xa không tuân theo các cài đặt proxy toàn hệ thống của tôi.

  1. Tôi thiết lập proxy SOCKS. Ghi nhật ký chi tiết cho phép tôi xem hoạt động của mạng và nếu các cổng được chuyển tiếp.

    ssh -v -D 3333 stefanl@gateway.example.org
    
  2. Tôi định cấu hình hệ thống của mình để sử dụng proxy SOCKS. Tôi xác nhận rằng Java đang sử dụng các cài đặt proxy SOCKS.

  3. Proxy SOCKS đang hoạt động. Tôi kết nối với BMC tại http://192.168.1.100/ bằng webbrowser của tôi. Tôi có thể đăng nhập, xem Máy chủ sức khỏe, bật hoặc tắt máy, v.v. Vì tính năng ghi nhật ký SSH được kích hoạt, tôi có thể xem tiến trình.

Đây là nơi mà nó trở nên khó khăn:

  1. Tôi nhấp vào nút "Launch Console" để tải xuống một tệp được gọi là jviewer.jnlp. Các tệp JNLP được mở bằng Java Web Start.

  2. Một cửa sổ Java mở ra. Thanh tiêu đề cho biết "Trình xem chuyển hướng" trong thanh tiêu đề. Có các menu cho "Video" "Bàn phím" "Chuột", v.v. Điều này xác nhận rằng Java có thể tải xuống ứng dụng thông qua proxy và khởi động ứng dụng.

  3. 60 giây sau, ứng dụng hết thời gian và chỉ cần nói "Lỗi mở ổ cắm video". Đây là một ảnh chụp màn hình . Nếu điều này hoạt động, tôi sẽ thấy một cửa sổ kiểu VNC. Nhật ký SSH của tôi cho thấy không có kết nối nào với các cổng 5900/5901. Điều này cho thấy ứng dụng Java đã khởi động ứng dụng VNC, nhưng ứng dụng VNC bỏ qua các cài đặt proxy toàn hệ thống và do đó không thể kết nối với máy chủ từ xa.

Java dường như tuân theo các cài đặt proxy toàn hệ thống của tôi, nhưng ứng dụng VNC này dường như bỏ qua nó.

Có cách nào để tôi buộc ứng dụng VNC này sử dụng cài đặt proxy toàn hệ thống của mình không?

Câu trả lời:


4

Có vẻ như VPN thực sự có thể là lựa chọn tốt nhất của bạn. Có ACL trên bộ định tuyến để lưu lượng truy cập không cục bộ duy nhất phải đi qua VPN và bạn đã hoàn tất. Rất đơn giản và an toàn cũng như dễ quản lý.


1
VPN đang hoạt động rất tốt đối với chúng tôi như một ống dẫn đến nhiều máy IPMI. Chỉ cần thiết lập một bộ định tuyến hiện đại (128mb, CPU nhanh như bộ định tuyến Asus RT-N16) với Tomato và OpenVPN và nó hoạt động tốt. OpenVPN có thể dễ dàng hơn để thiết lập , vâng, nhưng một khi thiết lập nó hoạt động!
Jeff Atwood

Cuối cùng, tôi đang từ bỏ SOCKS và đang sử dụng VPN. Tôi có thể sẽ đi với OpenVPN.
Stefan Lasiewski

21

Tôi đã tìm ra cách tốt nhất là không sử dụng proxy vớ cho việc này, mà thay vào đó chuyển tiếp tất cả các cổng cần thiết trên IP localhost. Để tránh mọi dịch vụ hiện có, tôi sử dụng IP khác với 127.0.0.1. Giả sử bạn đã chọn 127.0.0.2 và máy chủ của bạn đằng sau proxy là 192.168.1.1, đây là lệnh ssh để sử dụng:

người dùng ssh @ 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

Sau đó, bạn có thể duyệt https://127.0.0.2 và sử dụng KVM như bình thường.

Các cổng TCP được chuyển tiếp là 5900 và 5901 cho điều khiển và video, 5120 cho CD ảo và 5123 cho đĩa mềm ảo (tôi đã không kiểm tra hai cái sau). Đã thêm -C để nén, mặc dù tôi không biết liệu có gì gửi phù hợp để nén không.

Một phương pháp khác, thoải mái hơn một chút (và, theo lý thuyết, hoạt động tốt hơn) trên linux, là sử dụng sshript , chuyển tiếp một cách trong suốt tất cả các kết nối TCP thông qua ssh bằng iptables và trình thông dịch python trên máy chủ proxy.

sshript -r user @ proxy-server 192.168.1.1

Gợi ý: ssh mực đang được đóng gói trong Debian.

Điều tôi chưa thể chuyển tiếp là cổng UDP 623, có thể được sử dụng cho ipmitool, kết nối CLI cho IPMI. rất nhiều hướng dẫn về vấn đề này, nhưng không ai làm việc ra cho tôi. Dù sao, Java KVM là đủ tốt.


Tôi thấy rằng SSH chỉ chuyển tiếp lưu lượng TCP, không phải lưu lượng UDP. IPMI (cổng 623 / UDP) và Nối tiếp qua mạng LAN (Cổng 6666 / UDP) chỉ là UDP và do đó yêu cầu một số loại chuyển đổi UDP-TCP thú vị bằng cách sử dụng netcat. Bực bội như thế nào.
Stefan Lasiewski

1
Lệnh ssh đầu tiên hoạt động (giao diện web và bảng điều khiển từ xa java), ngoại trừ việc gắn cd ảo dường như không hoạt động trừ khi bạn cũng chuyển tiếp 623 ( -L127.0.0.2:623:192.168.1.1:623). Cảm ơn vì đã liệt kê các cổng cần thiết. Điều này dễ dàng hơn nhiều so với việc thiết lập VPN.
basic6

2

Hãy thử tsocks , nó sẽ cho phép bạn chạy bất kỳ quá trình thông qua một proxy SOCKS bằng cách thiết lập LD_PRELOAD mà nên làm việc trong tất cả các quy trình con, xem này ví dụ sử dụng. Tất nhiên, nếu bạn đang sử dụng ssh để tạo proxy SOCKS, bạn vẫn sẽ gặp sự cố UDP, nhưng điều này sẽ xoay quanh vấn đề quy trình con.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.