AWS 上的自定义 DNS 服务器

Custom DNS server on AWS

我正在尝试在 AWS EC2 实例上为我的域创建自定义 DNS 服务器。该实例是 运行ning Ubuntu 20.04 LTS,DNS 服务器是使用 bind 9 配置的。当我使用

重新启动绑定服务器时

sudo service bind9 restart

/var/log/syslog 显示启动成功,没有错误。

现在,如果我 运行 对服务器本身进行挖掘,例如:

dig @localhost mydomain.com

我得到了正确的回应。类似于:

; <<>> DiG 9.16.1-Ubuntu <<>> @localhost mydomain.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15819
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 8abafb45d049d921010000006212f87a85a91753aaa86a24 (good)
;; QUESTION SECTION:
;cirtructor.com.                        IN      A

;; ANSWER SECTION:
mydomain.com.         604800  IN      A       99.99.999.999

;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Feb 21 02:27:06 UTC 2022
;; MSG SIZE  rcvd: 87

但是现在当我 运行 来自另一台机器的挖掘命令时:

dig @888.888.888.888 mydomain.com

在我使用 DNS 服务器 IP 地址代替 888.888.888.888 的地方,我得到:

; <<>> DiG 9.16.1-Ubuntu <<>> @888.888.888.888 mydomain.com
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

我还尝试从同一 VPC 上的实例进行挖掘。类似于:

dig @10.0.0.999 mydomain.com

仍然无法正常工作。

为了检查 DNS 服务器是否连接到互联网,我在 AWS 的安全组中打开了端口 88,并在端口 88 上 运行 了一个 http 服务器。我可以通过访问 http://888.888.888.888:88

所以服务器已连接,但 DNS 查询不知何故无法到达。

IP 表策略为 ACCEPT,未添加任何规则。 53端口已经在安全组中开放。

我可以采取哪些步骤来弄清楚发生了什么?有没有办法跟踪 DNS 查找失败的位置?任何帮助或建议都将非常有用。

来自Modify the DNS attributes for your VPC - Amazon Virtual Private Cloud

Amazon provides a DNS server (the Amazon Route 53 Resolver) for your VPC. To use your own DNS server instead, create a new set of DHCP options for your VPC.

另请参阅:Add custom domain name resolution with DHCP options sets - Amazon Virtual Private Cloud

这让我想起了两个场景,我以前有过,你检查过这些吗?

  • 返回查询系统的路由 there/not 根本不起作用,因此 DNS 答案从未返回到源头。因此只有本地查找有效,但在 VPC 内部和外部解析不起作用。
  • 有一些其他服务正在侦听 UDP/TCP53。我没有想到任何确切的场景,绑定服务可以成功响应但仍然无法侦听 DNS 端口,但我也可以想象。

我会使用的工具是 tcpdump 和 traceroute。