我正在尝试构建一个自定义的DNS服务器来返回编程结果。现在,我只是让它以SPF格式返回给它的查询的一部分,当我指定我的服务器的确切IP时,它工作得很好:
$ dig @54.183.223.221 127.0.0.5._ip.test.com._ehlo.foo.com._spf.moat.email. TXT
; <<>> DiG 9.8.3-P1 <<>> @54.183.223.221 127.0.0.5._ip.test.com._ehlo.foo.com._spf.moat.email. TXT
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62640
;; flags: qr rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;127.0.0.5._ip.test.com._ehlo.foo.com._spf.moat.email. IN TXT
;; ANSWER SECTION:
foo.com. 600 IN TXT "v=spf1 include:test.com -all"
;; Query time: 19 msec
;; SERVER: 54.183.223.221#53(54.183.223.221)
;; WHEN: Fri Jan 6 18:05:55 2017
;; MSG SIZE rcvd: 118但是,如果运行相同的命令而不指定IP,则不会找到任何内容。通过查看我的DNS服务器日志,我知道它正在用相同的问题攻击我的服务器(并且可能以相同的方式响应),但是dig似乎没有得到响应:
$ dig 127.0.0.5._ip.test.com._ehlo.foo.com._spf.moat.email. TXT
; <<>> DiG 9.8.3-P1 <<>> 127.0.0.5._ip.test.com._ehlo.foo.com._spf.moat.email. TXT
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 8929
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;127.0.0.5._ip.test.com._ehlo.foo.com._spf.moat.email. IN TXT
;; Query time: 254 msec
;; SERVER: 10.0.1.1#53(10.0.1.1)
;; WHEN: Fri Jan 6 18:10:00 2017
;; MSG SIZE rcvd: 70事实证明,这两个摘要查询创建了两个略有不同的DNS查询。有了IP,我得到了:
;; opcode: QUERY, status: NOERROR, id: 53947
;; flags: rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;127.0.0.20._ip.test.com._ehlo.foo.com._spf.moat.email. IN TXT如果没有IP,我会得到:
;; opcode: QUERY, status: NOERROR, id: 34502
;; flags:; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;127.0.0.10._ip.test.com._ehlo.foo.com._spf.moat.email. IN TXT
;; ADDITIONAL SECTION:
;; OPT PSEUDOSECTION:
; EDNS: version 0; flags: do; udp: 4096这个额外的EDNS部分可能导致问题的原因是什么?当我通过添加+bufsize=4096 +dnssec在本地开发服务器上模拟EDNS时,它可以正常工作。从哪里开始寻找EDNS没有响应的原因是什么?
https://stackoverflow.com/questions/41476720
复制相似问题