当目标在NAT后面时,VisualVM远程工作?

时间:2014-09-26 07:18:09

标签: java jboss jmx jvisualvm

我在开发人员网络中,使用JVisualVM监控的JBoss位于单独网络中的客户端防火墙之后。 JBoss通过NAT向我们展示。从我们的开发人员网络使用telnet时,公开的JMX端口可以工作,但JVisualVM仍然找不到远程JMX。显然,这可能是由于两件事:1)需要访问一个或多个动态RMI套接字,或2)未定义“java.rmi.server.hostname”。我的问题可能是第1点和第2点,但显然因为我们有SSH访问权限,所以可以根据这个网站解决:

http://rafaelsteil.com/setting-up-jmx-for-jconsole-visualvm-on-ec2-plus-jetty-configuration/

“java.rmi.server.hostname”是服务器的公共主机名(如example.com),没有HTTP或其他任何内容。您不能使用内部地址,否则您将无法远程访问该服务。

但是我有一个关于“java.rmi.server.hostname”的问题,如果定义的IP地址是公开发布给我们开发者网络的服务器内部IP或NAT IP吗?

1 个答案:

答案 0 :(得分:2)

我实际上自己刚刚解决了这个问题并想出来了。

我敢打赌问题是RMI连接 - 您无法预测它将使用哪些端口,因此您无法使用防火墙。

解决方法是使用SSH代理:

  1. SSH到运行应用程序的框但是使用-D选项,如下所示:

    ssh user @ remoteHost -D 9999

    这将在本地计算机上的端口9999上启动socks代理。

  2. 打开JVisualVM并在首选项中,在' network'将其配置为在localhost上使用socks代理,在端口9999上。

  3. 如果您执行上述操作,则应该能够正常连接到远程计算机,并且由于所有RMI流量现在都通过SSH代理,因此它可以穿过防火墙并且运行良好。

    祝你好运: - )