Xmpp 如何向公众开放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

我最近在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 5269-j接受 iptables-A输入-p tcp--dport 5280-j接受

  • 将以下内容添加到我的主机文件:

    123.123.10.210 example.domain.com

  • 允许ubuntu防火墙:

    sudo ufw允许5222 sudo ufw允许5269 sudo ufw允许5280

  • 这是我的ejabberd.cfg:


  • 验证连接是否确实通过服务器

    在Internet连接的机箱上,使用
    telnet
    nc
    或类似命令验证连接到服务器的已知端口是否正常。做

    $ telnet 123.123.10.210 5222
    
    然后输入一些乱码并按Enter键发送。您应该会从服务器收到一个XML节,告诉您发送了一个格式错误的流,并指示流关闭(要退出
    telnet
    session,请按Crl-],然后输入q并按Enter键)

    如果此命令挂起,然后超时或完全失败,则表明存在网络连接问题

    当您进行检查时,运行
    tcpdump
    的一个实例来查看客户端的数据包是否传入并发出回复非常方便:

    (将Internet连接接口的名称替换为
    eth0

  • 您必须为XMPP域设置正确的DNS

    也就是说,如果您的用户在
    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