在代理后面使用Supermicro IPMI?


12

这是具有X8DT3主板的SuperMicro服务器,该主板包含一个板载IPMI BMC。在这种情况下,BMC是Winbond WPCM450。我相信许多Dell服务器都使用类似的BMC模型。

IPMI的常见做法是将其隔离到一个不可路由的专用网络。在我们的情况下,所有IPMI卡都插入到192.168.1.0/24的私有管理LAN中,而该LAN没有通往外界的路由。如果我将笔记本电脑插入192.168.1.0/24网络,则可以验证所有IPMI功能都可以正常工作,包括远程控制台。

我需要通过某种加密连接从其他网络访问所有IPMI功能。

我尝试了SSH端口转发。对于一些服务器来说,这很好用,但是,我们有将近100个服务器,并且维持SSH客户端配置以转发100个服务器上的6个端口是不切实际的。

所以我想我会尝试SOCKS代理。这可行,但是远程控制台应用程序似乎不遵循我的系统范围代理设置。

  1. 我设置了一个SOCKS代理。详细的日志记录使我可以查看网络活动以及端口是否正在转发。

    ssh -v -D 3333 stefanl@gateway.example.org
    
  2. 我将系统配置为使用SOCKS代理。我确认Java正在使用SOCKS代理设置。

  3. SOCKS代理正在工作。我使用Web浏览器连接到http://192.168.1.100/的BMC 。我可以登录,查看服务器运行状况,打开或关闭计算机电源等。由于启用了SSH详细日志记录,因此可以看到进度。

这是棘手的地方:

  1. 我单击“启动控制台”按钮,该按钮下载名为的文件jviewer.jnlpJNLP文件通过Java Web Start打开。

  2. 将打开一个Java窗口。标题栏在标题栏中说“ Redirection Viewer”。有“视频”,“键盘”,“鼠标”等菜单。这确认Java能够通过代理下载应用程序并启动该应用程序。

  3. 60秒后,应用程序超时,并简单地说“打开视频套接字错误”。这是截图。如果可行,我将看到一个VNC样式的窗口。我的SSH日志显示没有尝试连接到端口5900/5901。这表明Java应用程序启动了VNC应用程序,但是VNC应用程序忽略了系统范围的代理设置,因此无法连接到远程主机。

Java似乎遵循我的系统范围代理设置,但是此VNC应用程序似乎忽略了它。

我有什么办法可以强制该VNC应用程序使用我的系统范围代理设置?

Answers:


4

听起来VPN可能实际上是您最好的选择。在路由器上具有ACL,这样只有非本地流量才能通过VPN,您就完成了。非常简单,安全以及易于管理。


1
VPN作为连接多台IPMI机器的渠道,对我们来说非常有用。只需使用Tomato和OpenVPN设置现代的(128mb,快速的CPU,如Asus RT-N16)路由器,它就可以发挥作用。是的,OpenVPN可能更易于设置,但是一旦设置,它就可以工作!
杰夫·阿特伍德

最后,我放弃了SOCKS,使用了VPN。我可能会选择OpenVPN。
Stefan Lasiewski 2013年

21

我发现最好不要为此使用袜子代理,而应转发本地主机IP上所有必需的端口。为了规避任何现有服务,我使用了一个不同于127.0.0.1的IP。假设您选择了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,用于虚拟CD的5120和用于虚拟软盘的5123(我没有测试后两个)。添加了-C进行压缩,尽管我不知道发送的任何内容是否适合压缩。

在Linux上,另一种较为舒适(从理论上讲,性能更好)的方法是使用sshuttle,它使用iptables和代理服务器上的python解释器通过ssh透明地转发所有TCP连接。

sshuttle -r user @ proxy-server 192.168.1.1

提示:shuttle被打包在Debian中。

我还无法转发的是UDP端口623,该端口可用于ipmitool(IPMI的CLI连接)。这里 几个关于这个教程,但没有制定出适合我。无论如何,Java KVM已经足够了。


我看到SSH仅转发TCP通信,而不转发UDP通信。IPMI(端口623 / UDP)和LAN上串行(端口6666 / UDP)仅是UDP,因此需要使用进行一些时髦的UDP到TCP转换netcat。真令人沮丧
Stefan Lasiewski 2012年

1
第一个ssh命令有效(Web界面和Java远程控制台),除非虚拟CD挂载似乎不起作用,除非您也转发623(-L127.0.0.2:623:192.168.1.1:623)。感谢您列出所需的端口。这比设置VPN容易得多。
basic6 2015年

2

尝试的tsocks,它应该让你通过设置LD_PRELOAD应在所有子流程工作SOCKS代理运行任何程序,看到这个例如使用。当然,如果您使用ssh创建SOCKS代理,您仍然会遇到UDP问题,但这应该可以解决子流程问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.