我有一台 OpenWRT 路由器,其 IP 可在 Amazon EC2 VPC 内访问。该路由器正在运行 dnsmasq 服务器。
路由器 IP 为 192.168.13.1。客户端连接到路由器,主机名为“iPhone”,IP 为 192.168.13.117。
VPC 域名是 examplevpc.com
我希望 VPC 内对 *.routername.examplevpc.com 的所有 DNS 查询都通过 192.168.13.1 处的 dnsmasq 服务器进行解析。例如,对 iphone.routername.examplevpc.com 的查询应返回 192.168.13.117。
从 VPC 内的服务器,我可以成功运行nslookup iPhone 192.168.13.1
并获取 iPhone IP 地址。dig iPhone @192.168.13.1
也可以工作。
我尝试为 VPC 添加 NS 条目routername.examplevpc.com
->192.168.13.1
到 route53,但是不起作用 --dig iPhone.routername.examplevpc.com
响应为NXDOMAIN
。我还需要做点什么吗?
编辑:
所以我找到了这个问题上面说我需要在 VPC 内设置 DNS 转发。因此我在以下位置设置了一个 DNS 转发器172.28.0.5
:
ubuntu@ip-172-28-1-13:~$ nslookup hostname.routername.vpcdomain.net 172.28.0.5
Server: 172.28.0.5
Address: 172.28.0.5#53
Non-authoritative answer:
Name: hostname.routername.vpcdomain.net
Address: 192.168.13.89
然后我按照@dsmsk80 在他的评论中所建议的去做了:
A record: ns1.vpcdomain.net -> 172.28.0.5
NS record: routername.vpcdomain.net -> ns1.vpcdomain.net.
这是失败的输出dig
:
ubuntu@ip-172-28-1-13:~$ dig hostname.routername.vpcdomain.net
; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> hostname.routername.vpcdomain.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 52300
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;hostname.routername.vpcdomain.net. IN A
;; Query time: 20 msec
;; SERVER: 172.28.0.2#53(172.28.0.2)
;; WHEN: Tue Oct 27 19:37:29 UTC 2015
;; MSG SIZE rcvd: 53
但是,当直接指定名称服务器时,它可以按预期工作:
ubuntu@ip-172-28-1-13:~$ dig hostname.routername.vpcdomain.net @ns1.vpcdomain.net
; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> hostname.routername.vpcdomain.net @ns1.vpcdomain.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50111
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;hostname.routername.vpcdomain.net. IN A
;; ANSWER SECTION:
hostname.routername.vpcdomain.net. 0 IN A 192.168.13.89
;; Query time: 33 msec
;; SERVER: 172.28.0.5#53(172.28.0.5)
;; WHEN: Tue Oct 27 19:38:35 UTC 2015
;; MSG SIZE rcvd: 69
还有nslookup
:
ubuntu@ip-172-28-1-13:~$ nslookup hostname.routername.vpcdomain.net ns1.vpcdomain.net
Server: ns1.vpcdomain.net
Address: 172.28.0.5#53
Non-authoritative answer:
Name: hostname.routername.vpcdomain.net
Address: 192.168.13.89
openwrt上的配置如下:
config dnsmasq
option domainneeded 1
option boguspriv 1
option filterwin2k 0 # enable for dial on demand
option localise_queries 1
option rebind_protection 1 # disable if upstream must serve RFC1918 addresses
option rebind_localhost 1 # enable for RBL checking and similar services
#list rebind_domain example.lan # whitelist RFC1918 responses for domains
option local '/routername.vpcdomain.net/'
option domain 'routername.vpcdomain.net.'
option expandhosts 1
option nonegcache 0
option authoritative 1
option readethers 1
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.auto'
#list server '/mycompany.local/1.2.3.4'
#option nonwildcard 1
#list interface br-lan
#list notinterface lo
#list bogusnxdomain '64.94.110.11'
答案1
我想说你可以使用仅具有 NS 记录的域名它指定对指定类和域具有权威性的主机。
那么,如果将这些记录添加到您的区域,会发生什么情况?
A record: routername-ns1.examplevpc.com. -> 192.168.13.1
NS record: routername.examplevpc.com. -> routername-ns1.examplevpc.com.
或者更短的形式:
A record: routername-ns1 -> 192.168.13.1
NS record: routername -> routername-ns1.examplevpc.com.
答案2
找到答案了...
令人困惑的是,这里有记录:http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html
我必须通过 VPC DHCP 选项集明确设置我的私有 DNS 服务器。