在 ejabberd 中使用任何/假域名
Posted
技术标签:
【中文标题】在 ejabberd 中使用任何/假域名【英文标题】:Using any/fake domains with ejabberd 【发布时间】:2013-07-27 13:20:14 【问题描述】:我最近购买了一个具有公共 IP 的云服务器,我正在使用它来托管 xmpp 服务器。
我的第一个任务是确保我的用户使用我的子域进行连接 - 例如 m.chat.com。
在我的配置中,我有以下内容:
%% Hostname
hosts, ["m.chat.com"].
然后我使用该域创建了一个管理员用户。
在 parrellel 中,我已与我的主机提供商 hostgator 为我的子域 m.chat.com 创建了以下 DNS 记录
Name TTL Class Type Record
m.chat.com 14400 IN A [IP of the server]
让我感到困惑的一件事是我能够访问 ejabberd 网络管理控制台。这是通过以下方式实现的:[服务器 IP]:5280/admin 但是我无法通过 m.chat.com:5280/admin 访问它
除此之外,在 Web 控制台中,在“虚拟主机”下,我可以看到主机“m.chat.com”。我创建了一个用户“user@m.chat.com”并尝试通过 Adium 进行连接。
在 Adium 中,只需输入 user@m.chat.com 和密码是行不通的。相反,我还必须指定“连接服务器”,在这种情况下是 [服务器的 IP]。
它连接正常,我已经注册了其他用户以检查一切是否正常。
然后我想我会回到 ejabberd 配置并开始搞乱。我将主机名更改为以下内容:
%% Hostname
hosts, ["m.chat.com", "facebook.com"].
我在该域中注册了一个用户并重新启动了 ejabberd。检查网络控制台后,令我惊讶的是,我可以看到虚拟主机“facebook.com”。我使用“连接服务器”部分中定义的 [服务器 IP] 在 Adium 中测试了该用户,并且连接正常。我让其他拥有自己互联网连接的人在他们的 PC 上使用此帐户,他们也能够连接。
故事结束 - 我对每个人的问题是这怎么可能?我错过了什么吗?是否没有域认证。在线搜索后,您似乎甚至可以使用假域名。
如果我将来要运营自己的服务(ios 聊天应用程序),我不希望任何人在他们自己的公共服务器上使用我的域名。
谁能发光。
谢谢!
编辑:第二个问题 - 最好我不想在使用客户端时定义“连接服务器”。我希望客户端能够识别@m.chat.com 域并自动建立与服务器 IP 的连接。我是否正确配置了我的 DNS 记录?对于其他使用 Hostgator 的人,我必须执行其他任务吗?
编辑:我现在可以通过 m.chat.com:5280/admin 访问 Web 控制台,并且在使用客户端时不再需要指定连接服务器。我什么都没做,我认为这是 Hostgater 更新 DNS 或其他什么的情况,他们说通常需要 4 个小时。但是,我仍然对为什么可以使用 facebook.com 域创建帐户感到有些困惑。我了解,因为我无法访问此域的 DNS 管理员,所以我无法创建任何记录,但这并不妨碍我使用该域并仅指定连接服务器。
【问题讨论】:
【参考方案1】:您最初的问题(无法使用 m.chat.com
访问服务器)几乎可以肯定是 DNS 问题,而且您似乎已将其隔离到更新记录所用的时间。
您的第二个问题 - 关于您可以不受限制地命名虚拟主机这一事实,很简单但很有趣。是什么让您认为应该有任何限制?就像您指示我无法将“m.chat.com”保存在磁盘上的文件中,或者我无法通过互联网发送消息中的“m.chat.com”。
这就是 DNS 存在的原因并按其方式构建。虽然我可以告诉我的服务器它托管facebook.com
,但没有人会连接到它,因为facebook.com
的DNS 记录不指向我的服务器(用户通常不会手动设置“连接主机”)。这引出了一个问题……我为什么要告诉我的服务器它托管facebook.com
,如果我这样做了,Facebook 为什么要关心?
DNS 之上的另一个但相关的身份层是证书 - 尽管设置了任何“连接主机”,客户端都应验证虚拟主机名。由于不可能拥有facebook.com
的证书,因此客户端通常应该弹出警告或根本无法连接。如果他们不这样做,他们可能没有正确验证证书。
【讨论】:
以上是关于在 ejabberd 中使用任何/假域名的主要内容,如果未能解决你的问题,请参考以下文章