使用 bind9 CNAME 别名从 EC2 实例连接到 RDS 数据库

使用 bind9 CNAME 别名从 EC2 实例连接到 RDS 数据库

更新:现在它已经正常工作了。原来是我在文件中缺少有效的 DNS 转发器named.conf.options

我正在尝试在 EC2 实例上启动并运行内部 DNS。主要目标是能够为其他 AWS 服务定义 CNAME 别名。例如:可以使用别名代替可能随时间变化的 RDS 端点mysql.company.int

我正在使用bind9并且这是我的配置文件:

/etc/bind/named.conf.local

zone "company.int" {
    type master;
    file "/etc/bind/db.company.int";
};

/etc/bind/db.company.int

;
$TTL    3600
@       IN      SOA     company.int. company.localhost. (
                   20120617         ; Serial
                     604800         ; Refresh
                      86400         ; Retry
                    2419200         ; Expire
                     604800 )       ; Negative Cache TTL
;
@ IN  NS  company.int.
@ IN  A 127.0.0.1
@ IN  AAAA  ::1

; CNAME
mysql IN CNAME xxxx.eu-west-1.rds.amazonaws.com.

dig命令确保我的别名正常工作:

$ dig mysql.company.int
...
;; ANSWER SECTION:
mysql.company.int.  3600    IN  CNAME   xxxx.eu-west-1.rds.amazonaws.com.
xxxx.eu-west-1.rds.amazonaws.com. 60 IN CNAME ec2-yyy-yy-yy-yyy.eu-west-1.compute.amazonaws.com.
ec2-yyy-yy-yy-yyy.eu-west-1.compute.amazonaws.com. 589575 IN A zzz.zz.zz.zzz
...

据我所知,简单的 CNAME 别名不需要反向区域。但是,当我尝试使用新创建的别名连接到 MySQL 时,操作会超时。

$ mysql -uuser -ppassword -hmysql.company.int
ERROR 2003 (HY000): Can't connect to MySQL server on 'mysql.company.int' (110)

有什么想法吗?非常感谢!

答案1

xxxx.eu-west-1.rds.amazonaws.com 是否解析为您运行“mysql”命令的计算机上的 RDS 终端节点的 IP 地址?我们有类似的设置,但在我们的例子中,“dig”在答案部分列出了 RDS 终端节点的实际 IP 地址,即:

$ dig mysql.company.int
...
;; ANSWER SECTION:
mysql.company.int.  3600    IN  CNAME   xxxx.eu-west-1.rds.amazonaws.com.
xxxx.eu-west-1.rds.amazonaws.com. 60 IN A xxx.xxx.xxx.xxx
...

相关内容