openfire在内网中的时候,无法作文件传输代理,因为客户端要发文件时会发一个iq, 服务器在响应中会把proxy的IP,对方的IP带上,但是proxy的IP是内网IP,如果2个客户端不在同一个网段,则无法传输文件。
如下所示为服务器返回的 iq 示例.
解决方法是:<iq from="ykw@whu.edu.cn/QXmpp" type="set" to="ljj@whu.edu.cn/Psi" id="qxmpp67" > <query xmlns="http://jabber.org/protocol/bytestreams" sid="IgnRdAeg6Xp0tatxobVdAfeSTlgKIvJI" > <streamhost port="49156" host="192.168.1.121" jid="ykw@whu.edu.cn/QXmpp" /> <streamhost port="49156" host="192.168.55.101" jid="ykw@whu.edu.cn/QXmpp" /> <streamhost port="7777" host="192.168.1.100" jid="proxy.whu.edu.cn" /> </query> </iq>
在openfire服务器的设置中加入一个属性xmpp.proxy.externalip,则服务器将返回外部IP。 当然了,NAT路由器上7777端口也必须指定由这个服务器来处理。
加入方法:
打开openfire管理后台, 选择服务器管事器 -> 系统属性, 在右侧下方输入 xmpp.proxy.externalip ,值设为你的外部IP,保存属性 即可。
参考英文网页: http://community.igniterealtime.org/thread/19783