curl 忽略接口参数

curl 忽略接口参数

我的 Ubuntu 12.04 笔记本电脑通过 WiFi 连接到 Internet,并通过电缆连接到 Intranet。

我想通过curl以下方式获取 Intranet 站点的内容:

curl --interface eth0:1 intranet.bfs.admin.ch

结果是

curl: (6) Couldn't resolve host 'intranet.bfs.admin.ch'

当我断开 WiFi 时,它工作正常

根据手册页,这应该可行。我也尝试过(没用)

curl --interface eth0:0 intranet.bfs.admin.ch
curl --interface eth0 intranet.bfs.admin.ch
curl --interface 10.147.128.132 intranet.bfs.admin.ch

我应该提到的是,将 WiFi 保留为默认接口非常重要。

答案1

我相信您在这里看到的是,当无线接口启动时,它会通过 DHCP 获取其配置,其中包括覆盖您的 Intranet DNS 配置的 DNS 配置。

强制curl使用特定的网络接口并不能帮助您解决此问题。curl它不执行自己的 DNS 操作(这是底层操作系统的功能),即使执行此操作,简单地强制它通过有线连接将数据包发送到 WLAN DNS 服务器也不会做任何有用的事情。

有很多方法可以解决这个问题。

我可能首先尝试的方法是将 Intranet 的 DNS 服务器添加到 WLAN DHCP 配置中,将它们设置为比您通常使用的 Internet DNS 服务器更高的优先级。您甚至可以完全放弃 Internet DNS 服务器,因为内联网DNS 服务器可能也已经知道如何进行 Internet DNS 查找。除了解析本地 DNS 名称之外,您还可以有效地使用本地 Intranet DNS 服务器作为 Internet 查找的缓存 DNS 服务器。

如果您无法控制 WLAN DHCP 配置,您可以将 Ubuntu 的 DHCP 配置配置为使用静态 DNS 地址;它将忽略从 DHCP 获取的内容。将其设置为使用内网 DNS 服务器。

相关内容