JBoss 中的 JMS,如何穿透防火墙?

简介:
JBoss 中可穿透防火墙的 JMS 承载方式有 RMI、HTTP 和 UIL2。RMI 和 HTTP 太慢了,所以 UIL2 是可以接受的选择。

然而,在 JBOSS 的所有版本中,默认情况下,都存在 UIL2 不能穿透防火墙的问题。

以 JBoss 3.2.4 为分界点,本文给出了前后两种解决方法。

环境描述

见下图,JBoss Server 部署在内网上,主机名为 myserver,通过防火墙 Firewall-B 连接到公网上。公网外有一台客户端机器 hostA,上面运行了 JMS 客户端程序。

拓扑结构示意图
10_6504_6b1428d6c295e70.jpg


问题描述

JMS 客户端连接不上 myserver 上的 JMS 服务器,通常是:


Code:

[Ctrl+A Select All]



问题分析

太长了,省略……

解决方法

一、针对 JBoss 3.2.4(不含)以前的版本

我在 JBoss 3.2.3 上打了一个 patch,可从此处下载,下载后把 rar 改成 jar 即可:
 
[url]http://blog.51cto.com/attachment/200611/59583_1162519435.rar[/url]
(如果此链接不能下载,则到文章的最底下找链接,那是博客自动加的)

操作步骤:

1、用所下载的 jbossmq.jar 替换 JBoss 服务器端的 jbossmq.jar,通常位于:jboss/server/default/lib 目录下;

2、修改 JBoss 的启动脚本 run.sh,在 JAVA_OPTS 变量里面加上“-DSERVER_NAME=<服务器的主机名>”,如:
JAVA_OPTS="$JAVA_OPTS -Dprogram.name=$PROGNAME -DSERVER_NAME=myserver"
3、启动 JBoss 服务器;

4、把所下载的 jbossmq.jar 加入到 JMS 客户端的 Classpath 中,注意:一定要加在 jbossall-client.jar 的前面

5、在客户端的机器的 hosts 文件中加入 myserver 与公网 IP 的映射,例如:210.0.0.1     myserver

hosts 文件通常是 windows\system32\drivers\etc\hosts 或 /etc/hosts;

6、在客户端 JMS 程序的启动脚本中,也加上“-DSERVER_NAME=myserver”选项;

7、恭喜你,可以启动 JMS 客户端了。

二、针对 JBoss 3.2.4(含)以后的版本

JBoss 3.2.4 起修改了这个 BUG,只要在 JMS 客户端的启动脚本中加上如下选项即可:
“-Dorg.jboss.mq.il.uil2.useServerHost=true”

自己编写补丁

对于 3.2.3 以前的版本,请自己动手打 patch,步骤如下:

1、修改 org\jboss\mq\il\uil2\UILServerIL.java 的 createConnection() 方法,在如下代码前:


Code:

[Ctrl+A Select All]


加上代码:


Code:

[Ctrl+A Select All]


最终结果是:


Code:

[Ctrl+A Select All]


把这个类编译,并替换旧的 jbossmq.jar 中的同名文件。然后打 patch,方法见上文。









本文转自 豪客 51CTO博客,原文链接:http://blog.51cto.com/wakan/7214,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
应用服务中间件 网络安全 nginx
docker 映射端口穿透内置防火墙
docker 映射端口穿透内置防火墙
212 0
|
存储 网络安全 网络虚拟化
感觉差不多了。CLOUDSTACK的NAT,端口转发和防火墙结合穿透
构架差不多OK啦。 测试也近尾声啦。 感觉它适合私有云,或是混合云,但结合了SDN的网络,真的很安全。 如果是纯公有云,也是更适合特定方案。或是要第二次开发,毕竟让ACCOUNT登陆到后台,结合GUEST调整网络和主机,更像是企业IT作的事,而不是自动化拎包入住的简单方法。
1096 0
|
4月前
|
运维 网络协议 安全
小白带你学习linux的防火墙
小白带你学习linux的防火墙
148 1
|
6月前
|
安全 Linux 网络安全
Linux一些防火墙实战知识
本文介绍了如何在Linux中设置防火墙和开放端口,以提高服务器的安全性。首先,使用firewalld作为防火墙软件包,并确保firewalld服务正在运行。然后,通过添加服务来定义允许的服务端口,可以使用firewall-cmd命令查看当前已定义的服务,并使用firewall-cmd命令添加服务。添加规则后,需要重新加载firewalld配置以使更改生效。在某些情况下,需要打开特定的端口,例如HTTP端口80和HTTPS端口443。可以使用firewall-cmd命令打开端口,并将规则添加到相应的区域。。。确实都是工作中日常中会用到的一些命令
|
6月前
|
安全 Linux 网络安全
百度搜索:蓝易云【linux iptables安全技术与防火墙】
请注意,iptables的具体使用方法和配置选项可能会有所不同,取决于Linux发行版和版本。管理员应该参考相关文档和资源,以了解适用于其特定环境的最佳实践和配置方法。
467 0
百度搜索:蓝易云【linux iptables安全技术与防火墙】
|
6月前
|
开发框架 网络协议 Ubuntu
【Linux】配置网络和firewall防火墙(超详细介绍+实战)
【Linux】配置网络和firewall防火墙(超详细介绍+实战)
1273 0
|
1月前
|
存储 安全 网络协议
使用 firewall-cmd 管理 Linux 防火墙端口
本文将介绍如何使用 firewall-cmd 工具在 Linux 系统中进行简单端口管理,包括开放、查询、关闭等操作。通过实例展示相关命令的用法,希望能对大家有所帮助。
|
4月前
|
网络协议 Linux 网络安全
linux服务器防火墙的开启及关闭
linux服务器防火墙的开启及关闭
207 1