我有一台运行 Ubuntu 14.04.4 LTS 的个人计算机。我用它来托管 Teamspeak 和 Minecraft 服务器以及一个网站。
我正在尝试使子域仅指向正确的服务。例如
使用panel.example.com
只会指向https://localhost:8000
(CP面板)
通过使用 DNS URL 重定向而不是 A 记录,设法整理 CP 面板
使用mc.example.com
只会指向localhost:25565
(Minecraft 服务器)
使用ts.example.com
只会指向localhost:9987
(Teamspeak Server)
使用example.com
只会指向网站 ( example.com/forums /index.php
)
我至少设法使用以下方法对通过网络浏览器进行的连接执行此操作httpd.conf
:
<VirtualHost *:80>
ServerName mc.example.com
redirect / localhost:25565
</VirtualHost>
<VirtualHost *:80>
ServerName ts.example.com
redirect / localhost:9987
</VirtualHost>
但这仅适用于来自网络浏览器的连接,如果我尝试使用任何子域或域名在 Teamspeak 中连接,它仍然会连接...
这可能没用,我应该只使用域名,但我想进行一些排序。
这可能吗?
据我所知,这可能与 IPTables 有关,但老实说我不知道。像这样的东西吗?
iptables coming from any ip:25565 to anything else than localhost:25565 Drop
iptables coming from any ip:9987 to anything else than localhost:9987 Drop
iptables coming from any ip:80 to anything else than localhost:80/8000 Drop
我对么?
答案1
您创建的 IPTABLE 规则将拒绝所有流量,并将其删除。那些 apache 规则也毫无用处。
我认为实现您想要的功能的唯一方法是将 3 个虚拟网络适配器添加到您的 Linux 服务器,然后每个适配器都会有一个有效的外部 IP 地址。您可以将 DNS 配置为将每个域名指向 4 个 IP 地址之一。
Minecraft 应该绑定到 externalIp1:25565,Teamspeak 应该绑定到 externalIP2:9987,CPannel 应该绑定到 externalIP3,最后,Apache 应该绑定到 externalIP4:80。
当我说“绑定”时,我的意思是应用程序必须配置为侦听特定 IP,而不是任何 IP(这是大多数应用程序的默认行为)。