-1

我有一个便宜的 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 服务器。我们不会封锁我们这边的任何端口。最好的问候,支持

4

2 回答 2

0

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

netstat -an | grep ":53"

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

nslookup google.com [dns_server_ip]

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

于 2017-12-28T22:15:01.500 回答
0

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

谁想了解更多:

ISP 拦截 DNS 查询

于 2017-12-29T13:13:26.513 回答