Xmpp 如何向公众开放ejabberd服务器
我最近在Ubuntu12.04LTS上安装了ejabberd。我进行了必要的配置,能够使用xmpp客户端PSI在使用LAN ip的不同计算机上进行连接。现在我想允许从公共url访问我的ejabberd服务器,但没有成功。我已经做了以下工作:Xmpp 如何向公众开放ejabberd服务器,xmpp,ejabberd,Xmpp,Ejabberd,我最近在Ubuntu12.04LTS上安装了ejabberd。我进行了必要的配置,能够使用xmpp客户端PSI在使用LAN ip的不同计算机上进行连接。现在我想允许从公共url访问我的ejabberd服务器,但没有成功。我已经做了以下工作: 假设我的公共域是example.domain.com,公共IP是123.123.10.210 打开端口5222 5269和5280 iptables-A输入-p tcp--dport 5222-j接受 iptables-A输入-p tcp--dport 52
telnet
、nc
或类似命令验证连接到服务器的已知端口是否正常。做
$ telnet 123.123.10.210 5222
然后输入一些乱码并按Enter键发送。您应该会从服务器收到一个XML节,告诉您发送了一个格式错误的流,并指示流关闭(要退出telnet
session,请按Crl-],然后输入q并按Enter键)
如果此命令挂起,然后超时或完全失败,则表明存在网络连接问题
当您进行检查时,运行tcpdump
的一个实例来查看客户端的数据包是否传入并发出回复非常方便:
(将Internet连接接口的名称替换为eth0
)example.domain.com
中有JID,Internet上的每个人都应该能够询问他们的DNS服务器,了解如何使用XMPP与该域中的JID用户联系。这是使用SRV记录完成的。维护example.domain.com
的DNS服务器必须有两个DNS记录:
指向接受客户端连接的服务器的主机和端口(因此它们应该是\u xmpp-client.\u tcp.example.domain.com
和123.123.10.210
)5222
指向接受服务器连接的服务器的主机和端口(因此它们应该是\u xmpp-server.\u tcp.example.domain.com
和123.123.10.210
)5269
这里需要注意的另一件事是,如果您的服务器位于DMZ(不是直接连接到Internet,而是由NAT设备介导)中,那么防火墙设置应该更加复杂。但在深入研究此问题之前,请检查上述连接。1)我能够远程登录到端口80,但不能在5222或任何其他xmpp端口上。我telnet 123.123.10.210 80并已连接。输入了一些胡言乱语,收到了带有“外部主机关闭连接”的xml节。2)im使用dyndns ip的自由域。这行吗?嘿,科斯蒂克斯,谢谢你的回答。它正在工作。事实上,除了工作,我什么也没做。事实上,每当我试图重启ejabberd时,我都会面临内核转储。在你看来,ubuntu是一个适合xmpp服务器的服务器吗?@nuttynibles,哦,测试连接的命令应该是
telnet 5222
,当然。测试端口80没有什么意思,因为它专门用于另一个可能具有完全不同设置的服务。对不起,我赶时间。更新了我的答案。
$ telnet 123.123.10.210 5222
# tcpdump -n -i eth0 'tcp and (port 5222 or port 5269)'
$ host -t srv _xmpp-client._tcp.gmail.com
$ host -t srv _xmpp-server._tcp.gmail.com