通过不同端口上的代理连接到肥皂服务

我需要从服务器连接到Web服务服务器来使用SOAP服务,但是由于限制,我无法直接连接。

但是,他们给了我一个代理服务器,但它可以在另一个端口上运行:

[webserver] —– [proxy:48650] —– [webservice:8601]

注意(如果还不清楚):我已经简化了主机名称作为他们很长的企业事情,并不必要地复杂的问题。

最大的问题是,webservice的WSDL包含了很多带有绝对URL的引用(所以webservice:8601 )。 包括超过1级的深度(所以下载WSDL和做一个search/replace不会让我更进一步)。

我在webserver上添加了一个规则到/etc/hosts

127.0.0.1 webservice

其基本思想是以某种方式代理本地主机上的8601端口,并使肥皂客户端认为它实际上连接到web服务(通过代理)。

不幸的是, SSH tunnel不是代理的一个选项,同样的安全原因。 我无法build立到代理的SSH连接。

iptables是一个可能性,但我可以find一组规则,需要本地主机上的端口(8601),并将其redirect到外部主机/不同的端口(代理:48650)。 他们中的大多数是传入stream量。

我一直在浪费很多时间,而且越来越绝望。 有没有人可以提供一些提示/解决scheme?

请好吗?

从主机文件中删除条目并使用iptables来禁止stream量。

在本地机器上:

 iptables -t nat -A OUTPUT -d webservice -p tcp --dport 8601 -j DNAT --to proxy:48650 

或者,在中间路由器上,您需要使用PREROUTING链而不是OUTPUT链:

 iptables -t nat -A PREROUTING -d webservice -p tcp --dport 8601 -j DNAT --to proxy:48650 

注意:您必须在--to参数中使用代理的IP地址; iptables不会在那里做名字parsing。 您可以使用webservice的托pipe作为参数,但-d