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

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

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

但是他们确实给了我一个可以使用的代理服务器,但是它在不同端口上的服务上运行:

[webserver]----- [proxy:48650]-----[webservice:8601]

注意(如果还不清楚):我已将主机名简化为其非常长的公司名称,并且会不必要地使问题复杂化。

最大的问题是,WSDLwebservice 包含大量具有绝对 URL 的引用(因此webservice:8601)。包含深度超过 1 级(因此下载 WSDL 并进行搜索/替换不会对我产生太大帮助)。

我在网络服务器上添加了一条规则/etc/hosts

127.0.0.1 webservice

基本思想是以某种方式代理本地主机上的 8601 端口,并让 soap-client 认为它实际上正在连接到 web 服务(通过代理)。

不幸的是,由于同样的安全原因, AnSSH tunnel不是代理选项。我无法与代理建立 SSH 连接。

iptables是可能的,但我可以找到一组规则,这些规则将本地主机 (8601) 上的端口重定向到外部主机/不同的端口 (代理:48650)。它们大多数用于传入流量。

我在这上面浪费了很多时间,现在越来越绝望了。这里有人能给我提供一些提示/解决方案吗?

好吗?

答案1

从主机文件中删除该条目并使用 iptables 对流量进行 DNAT。

在本地机器上:

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

笔记:您必须在参数中使用代理的 IP 地址--to;iptables 不会在那里进行名称解析。不过,您可以使用的托管webservice作为参数-d

相关内容