我正在使用带有代理服务器的 Ubuntu 13.10,它需要用户 ID 和密码。
我无法运行该wget
命令。它返回:
Resolving sourceforge.net (sourceforge.net)... failed: Name or service not known.
wget: unable to resolve host address ‘sourceforge.net’
怎样才能解决这个问题?
答案1
使用以下方式编辑 Resolv conf
# sudo vim /etc/resolv.conf
然后输入以下内容
nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 4.4.4.4
将 192.168.1.1 替换为您的路由器 IP
也编辑此文件否则你的 DNS 将覆盖它
# sudo vim /etc/resolvconf/resolv.conf.d/base
然后输入以下内容
nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 4.4.4.4
然后重新开始您的服务器使用
# sudo /etc/init.d/networking restart
答案2
有两种方式可以wget
在代理后面运行。要么设置适当的环境变量并wget
根据它们采取行动,要么配置wget
配置文件 - wgetrc
。
设置环境变量
在设置环境变量之前,我们先看看是否存在任何预设的代理变量。我们可以使用以下命令获取该信息。
env | grep proxy
http_proxy=http://foo.bar:3128
no_proxy=localhost,127.0.0.1
如果没有设置代理环境变量,它将直接连接。让我们以我的大学为例。我们使用 HTTP 代理服务器。wget
不设置http_proxy
环境变量运行就会失败。所以,让我们先设置这个环境变量。
export http_proxy="http://foo.bar:8080"
现在,运行它wget
,它应该会正常工作。如果您的代理还需要身份验证(即用户名和密码),则请使用以下格式设置环境:
export http_proxy="http://username:[email protected]:8080"
类似地,对于其他类型的代理,设置相应的环境-ftp_proxy
等https_proxy
。
请注意,上述命令仅在用户会话到期前有效,即通过运行上述命令,我们只是为会话设置代理环境,而不是永久设置。通常我们不想每次登录时都运行该命令。因此,为了使其永久生效,我们可以在 wget 的配置文件中设置值,也可以在文件wgetrc
中设置环境。~/.bashrc
echo "export http_proxy=http://foo.bar:8080/" | tee -a ~/.bashrc
需要注意的是,这种方式可能会影响用户的代理设置。更好的方法是将设置永久地设置在 wget 的配置文件中,这样就不会影响其他应用程序。
配置wgetrc
文件
与大多数应用程序一样,wget
它也有一个配置文件wgetrc
:
/etc/wgetrc
, 或者~/.wgetrc
。
前者用于全局更改,后者用于本地设置(用户特定)。我们稍后会详细介绍,让我们看看如何应用代理设置。它类似于设置代理环境变量,只需排除导出命令。打开文件文件~/.wgetrc
。如果不存在,则创建它。
vim ~/.wgetrc
现在,在文件中添加相应的语句。阅读“设置环境变量”部分以找到此内容。
如何禁用/关闭代理设置
在文件中配置代理设置后wgetrc
,每次运行 时wget
,它都会自动连接到代理服务器。有时对于基于本地/LAN 的下载,您可能不需要代理服务器。在这种情况下,我们可以使用--no-proxy
命令中的参数关闭代理设置:
wget --no-proxy http://10.0.0.1/file.tgz
如果代理需要身份验证 - 用户名和密码
我们已经知道了使用用户名和密码设置环境变量的格式。Wget 为您提供了两种方法来输入代理服务器的用户名和密码。
- 在命令中以参数的形式提及它。
- 设置配置文件中的值,
/etc/wgetrc
或~/.wgetrc
如果您使用的身份验证是静态的,那么最好在配置文件中设置它。如果它只是一次性的事情,或者如果您想覆盖配置文件中的设置,那么您可以使用--proxy-user
和--proxy-password
选项。
wget --proxy-user=username --proxy-password=password http://foo.bar/file.tgz
对于永久性的改变,总是建议改变配置文件。
再次强调,对于全局更改,请修改/etc/wgetrc
文件,否则请转到~/.wgetrc
文件。打开任何文件并在其中附加/添加以下行。
proxy_user=username
proxy_password=password
答案3
对我来说,问题出在 avahi-deamon 上,它搞乱了某些主机名的 DNS 响应。我不得不卸载 avahi,然后一切正常:
sudo apt remove avahi-daemon