当我 curl 一个无效域名时,我会收到来自我自己的网络服务器的响应。Ubuntu 16.04.5,curl 7.47.0
例如:
root@l ~ # curl -v foobar.x
* Rebuilt URL to: foobar.x/
* Trying 148.X.X.X...
* Connected to foobar.x (148.X.X.X) port 80 (#0)
> GET / HTTP/1.1
148.XXX是我的服务器的公网IP。
但是我使用 nslookup + host 获得了预期的结果:
root@l ~ # nslookup foobar.x
Server: 213.133.99.99
Address: 213.133.99.99#53
** server can't find foobar.x: NXDOMAIN
root@l ~ # host foobar.x
Host foobar.x not found: 3(NXDOMAIN)
/etc/resolv.conf:
root@l ~ # cat /etc/resolv.conf
### Hetzner Online GmbH installimage
# nameserver config
#nameserver 1.1.1.1
nameserver 213.133.99.99
nameserver 213.133.98.98
nameserver 213.133.100.100
nameserver 2a01:4f8:0:1::add:9898
nameserver 2a01:4f8:0:1::add:9999
nameserver 2a01:4f8:0:1::add:1010
那么 curl 如何解析主机名,以及为什么它将无效的主机名默认为我自己的 IP?
更新
root@l /etc # telnet foobar.x 80
Trying 148.251.19.39...
Connected to foobar.x.sui.li.
好的,它似乎以某种方式自动完成了我的域名。*.sui.li 有一个通配符 DNS 条目。主机名是 l.sui.li - 我仍然不知道如何防止这种情况发生。
答案1
确实没有找到它添加我的基本域的原因(可能是因为它也是主机的反向 DNS 条目?我不知道,我也不再关心了……)但最终search nothing
在 中添加了一个无效条目/etc/resolv.conf
。我假设它现在尝试解析 foobar.x、foobar.x.nothing 并失败,正如它应该的那样。