我最近购买了一台具有公共IP的云服务器,我正在使用它来托管xmpp服务器。
我的第一个任务是确保我的用户使用我的子域连接 - 例如m.chat.com。
在我的配置中,我有以下内容:
%% Hostname
{hosts, ["m.chat.com"]}.
然后我创建了一个具有该域名的管理员用户。
在parrellel中,我使用我的主机提供商创建了以下DNS记录,我的子域m.chat.com的hostgator
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。在检查Web控制台时,令我惊讶的是,我可以看到虚拟主机“facebook.com”。我在Adium中使用“连接服务器”部分中定义的[服务器IP]测试了此用户并且连接正常。我问其他人有他们自己的互联网连接在他们的PC上使用这个帐户,他们也能够连接。
故事结束 - 我对每个人的问题是这怎么可能?我错过了什么吗?没有域身份验证。在线搜索后,您甚至可以使用虚假域名。
如果我将来运营自己的服务(iOS聊天应用程序),我不希望任何人使用自己的公共服务器使用我的域名。
有人能发光吗?
谢谢!
编辑:第二个问题 - 我最好不要在使用客户端时定义“Connect Server”。我希望客户端识别@ m.chat.com域并自动建立与服务器IP的连接。我是否正确配置了DNS记录?对于使用Hostgator的其他人来说,我还有其他任务吗?
编辑:我现在可以通过m.chat.com:5280/admin访问Web控制台,我不再需要在使用客户端时指定Connect服务器。我没有做任何事情,我认为这是Hostgater更新DNS或其他东西的情况,他们说这通常需要4个小时。但是我仍然有点疑惑为什么我可以用facebook.com域创建帐户。我理解,因为我无法访问此域的DNS管理员,所以我无法创建任何记录,但这并不妨碍我使用域并只指定Connect服务器。
答案 0 :(得分:0)
您的初始问题(无法使用m.chat.com
无法访问服务器)几乎可以肯定是DNS问题,而且您似乎已将此问题隔离到更新记录所需的时间。
您的第二个问题 - 关于您可以无限制地命名虚拟主机的事实,这很简单但很有趣。是什么让你认为应该有任何限制?这就像你指示我不能将“m.chat.com”保存在我的磁盘上的文件中,或者我不能通过互联网发送消息中的“m.chat.com”。
这就是DNS存在的原因,结构也是如此。虽然我可以告诉我的服务器它托管facebook.com
,但没有人会连接到它,因为facebook.com
的DNS记录没有指向我的服务器(用户通常不会手动设置“连接主机”) 。这引出了一个问题......为什么我要告诉我的服务器托管facebook.com
,如果我这样做,Facebook为什么要关心呢?
DNS之上的另一个但相关的身份层是证书 - 即使设置了任何“连接主机”,客户端也应该验证虚拟主机名。由于无法为facebook.com
提供证书,因此客户端通常应弹出警告或根本无法连接。如果他们不这样做,他们可能没有正确验证证书。