如何限制与某些服务的连接,使其只能通过来自子域的连接进行访问?

如何限制与某些服务的连接,使其只能通过来自子域的连接进行访问?

我有一台运行 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(这是大多数应用程序的默认行为)。

相关内容