我有几个子域名。假设:
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
应该管用。
使用 iptables 可以实现吗?还是我必须做其他事情?
答案1
这是不可能的,句号。 mysql
与几乎所有网络感知客户端一样,DNS解析在客户端进行,因此服务器永远不知道执行了什么查找来获取随后访问的IP地址。
如您所知,只有极少数服务会将完整的服务器名称作为协议的一部分传递给服务器 - 例如 HTTP 和使用 SNI 的 HTTPS - 但这些是例外,而不是规则。