如何使用iptables过滤基于服务器主机名/端口的传入连接?

我有几个子域名。 我们假设:

a.domain.com b.domain.com mysql.domain.com c.domain.com 

全部指向相同的IP地址。 我想阻止所有连接到端口3306,除非他们想连接到mysql.domain.com

所以像这样:

 mysql -h a.domain.com -P 3306 -u username mysql -h b.domain.com -P 3306 -u username 

应该是不可能的,但是

 mysql -h mysql.domain.com -P 3306 -u username 

应该pipe用。

这可能使用iptables? 还是我还得做点别的?

这是不可能的,句号。 像几乎所有的networking感知客户端一样, mysql在客户端执行DNSparsing,所以服务器从来不知道执行了什么样的查询来获取被访问的IP地址。

正如你所知道的那样,有很less的服务将完整的服务器名称作为协议的一部分传递给服务器–Http需要注意,而HTTPS使用SNI–但这些都是例外而不是规则。