有没有人熟悉 Windows 的端口镜像或端口转换工具(2k8,如果有区别的话)?我有一个需要在 443 上运行的 Openfire 安装,但是,它不支持该端口上的客户端连接(当前位于端口 5222 上)。目前防火墙正在处理此端口转换,但是,这对内部用户不起作用,因为 DNS 指向本地地址而不是防火墙。
有没有人熟悉 Windows 的端口镜像或端口转换工具(2k8,如果有区别的话)?我有一个需要在 443 上运行的 Openfire 安装,但是,它不支持该端口上的客户端连接(当前位于端口 5222 上)。目前防火墙正在处理此端口转换,但是,这对内部用户不起作用,因为 DNS 指向本地地址而不是防火墙。
我不确定这是否可以使用与远程地址相同的本地 IP 地址,但您可以尝试这个免费工具:RelayTCP
如果您不介意加密 XMPP 会话(为什么要加密?!),您应该能够
stunnel
在两个端口之间进行代理。有可用的Windows 二进制文件,但我不知道它是否可以作为“开箱即用”的服务运行。
您可以使用与其他答案类似的解决方案rinetd,或者您可以以管理员身份运行 Openfire,这将允许它侦听 <1024 的端口,例如 443,而无需任何端口镜像。
您可以在 cygwin 下尝试 socat,它是类似于 netcat 的“瑞士军刀”,但适用于双向连接:
http://www.dest-unreach.org/socat/
手册页中的一个示例:
TCP 端口转发器,每一端都绑定到另一个本地 IP 地址(绑定)。此示例通过在每个 accept() 之后分叉一个新进程来处理几乎任意数量的并行或连续连接。它通过在分叉后向用户nobody 起诉提供了一点安全性;它只允许来自私有 10 网络(范围)的连接;由于reuseaddr,它允许在主进程终止后立即重新启动,即使某些子套接字没有完全关闭。使用 -lmlocal2,socat 会记录到 stderr,直到成功到达接受循环。进一步的日志记录被定向到带有设施 local2 的 syslog。
我会先看一下 Openfire 的配置文件,它非常灵活。我已经有一段时间没有使用它了,但是它监听的端口应该是基于 XML 的配置文件中的一个配置选项,如果配置文件不是自记录的。如果你可以在你的应用程序中解决它,那么让解决方案变得更复杂是没有用的,而且它可能(我不确定)甚至能够同时监听两个端口。