我的问题是:有一个配置了2个NIC的RHEL默认服务器:
另外,在Red Hat上安装了jboss-6.0.0.20101110-CR1,在这个JBoss上部署了EAR,这是一个简单的servlet侦听传入的数据,经过一些处理,应用程序将处理后的数据转发到另一个Web使用Apache CXF框架(具有某些处理的代理)在另一台主机上(例如10.200.0.1)进行服务。
现在,配置问题。
当JBoss需要监听eth0上的传入数据时,IP 10.100.0.1 ,需要运行带有“-b”的run.sh:run.sh -b 10.100.0.1,这很简单干净。
但我想扩展我的问题:我想强制JBoss在其他主机上使用 10.100.100.1 作为网络流量的源IP来调用Web服务。怎么做?是否有任何开关/财产/其他什么工作?
要点:
JBoss绑定到eth0以侦听 10.100.0.1 上的传入数据,并在 10.200.0.1 上调用源IP 10.100.100.1 的webservice
请帮助我,任何想法都是真正的。我想避免任何iptables / xinted重定向配置: - )
此致
马里乌什
PS。我在我的公司找到了另一个类似的问题(但本机JBoss WS相关......):我们的一个软件提供商修改了JBoss5的jbossws-native-core.jar,通过添加行来强制执行此行为:
bootstrap.setOption(“localAddress”,new InetSocketAddress(localAddress,0));
到NettyClient.java,当localAddress提供-D开关并由代码中的getProperty()方法重写时。但我也想避免任何JBoss组件修改...
答案 0 :(得分:0)
如果JBoss只在一个ip上进行监听,那么就可以轻松地使用相同的ip进行回复。我建议你用路由解决这个问题,而不是用java中的黑客攻击。我认为,因为它已经在工作,所以10.200.0.1实际上可以通过eth0和eth1访问。
我建议只能通过eth1使用,然后让jboss监听这两个接口。然后Jboss会愉快地选择获得流量路由所需的源地址。
你可能需要在远程端有一些相应的路由,如果你有一些特殊的原因你只想听一个接口,或者,如果你不能控制它,你可以编写一个servlet过滤器来删除/拒绝所有到达错误的目的地ip的流量。