为什么即使没有运行dns服务器,我的vps也会回复dns查询?

时间:2017-12-28 21:49:46

标签: dns vps nslookup dig openvz

我有一个便宜的openvz Ubuntu vps,我试图在它上面运行我自己的dns服务器用于学习目的。

dns服务器在localhost(通过ssh的vps上)工作正常,我可以使用dig google.com @127.0.0.1查询它,我得到了预期的结果(不是google.com的IP,而是自定义的IP)。

当我尝试从vps外部查询dns服务器时,使用相同的命令,我得到了回复,但IP不是我所期望的(它是一个真正的google.com IP)。

经过进一步调查后,我发现当从vps外部进行查询时,我的dns服务器没有收到/发送数据包。所以答案是通过别的东西发送的,看起来目的端口53的入站数据包是偏离的,它们甚至都没有到达我的DNS服务器。

我试图查询我的dns服务器,仍在外面,但这次是在VPS关闭的时候。我神奇地得到了上帝的答复,知道是谁。

将端口从53更改为54,一切都很完美。 问题是我需要它使用端口53。

我没有iptables规则,也没有任何其他防火墙做与端口53相关的事情

我还尝试从不同的托管服务提供商查询其他一些随机vps,似乎每个人都有运行的dns服务器!为什么每个人都回复?

当然我问技术支持,他们说了什么:

  

您好,   抱歉,我们不做"软件" VPS的技术支持。   我们提供托管和操作系统,订购VPS的客户是他们自己的管理员,并且必须知道如何管理Linux服务器。   我们不会阻止我们这边的任何港口。   最好的祝福,   支撑

2 个答案:

答案 0 :(得分:0)

Mybe你的dns服务器只绑定到环回接口(所以它只能监听localhost)。您可以使用netstat和过滤器(grep)使用的udp端口检查当前使用的服务端口(udp for DNS)

netstat -an | grep ":53"

您也可以使用nslookup命令测试相同的dns查询,并在结果输出中检查回答dns查询的DNS服务器ip:

nslookup google.com [dns_server_ip]

在没有dns_server_ip的情况下测试它,以检查当指定的名称服务器没有响应时是否有默认的名称服务器。

答案 1 :(得分:0)

问题解决了,这是我的ISP拦截并回复dns查询。 我可以dig google.com @1.2.3.4我得到答复:D

谁想要了解更多信息:

ISP Intercepting DNS Lookups