【问题标题】:How to I trick Java RMI/JMX to be accessible from outside localhost without hardcoding the IP?如何在不对 IP 进行硬编码的情况下欺骗 Java RMI/JMX 从本地主机外部访问?
【发布时间】:2013-08-31 11:06:45
【问题描述】:

如何在不对 IP 进行硬编码的情况下欺骗 Java RMI,使其可以从本地主机外部访问?

【问题讨论】:

  • 您为什么认为其他主机无法访问 RMI?您确定没有将 RMI 绑定与防火墙规则混淆吗?

标签: java rmi jmx


【解决方案1】:

由于无法让RMI绑定到0.0.0.0,解决方案是检测IP并使用它。

我在 Linux 和 OS X 上都使用了以下解决方案:

IP=$(ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p')
# if we have several IPs found, we pick the first one
for IP in $IP:
do
  break
done

CATALINA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=8081 \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=${IP} "

显然,这是不安全的配置方式,但您可以随意调整它以满足您的需求。

【讨论】:

  • 让 RMI 绑定到 0.0.0.0 并非“不可能”。这正是它默认所做的。这也无关紧要。 -1
猜你喜欢
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 2016-06-09
  • 2016-08-04
相关资源
最近更新 更多