强制 wget 使用 IPV4 或 IPV6 连接来下载任何东西

Wget 是一个命令行工具,您可以通过它使用 HTTP、HTTPS 和 FTP 协议从 Internet 下载任何内容。 它支持 IPv4(Internet 协议版本 4)以及 IPv6(Internet 协议 6)地址以连接到 Internet。

如果出于某种原因您希望使用 IPv4 或 IPv6 协议进行连接,那么您必须在每次使用 wget 命令时指定它,否则您将不得不更改默认设置。 在本文中,我们将确切了解该过程。

wget 对比 curl – wget 和 wget 有什么区别 curl 命令?

安装 wget

该工具默认安装在大多数 Linux 发行版中,因此首先,通过在终端中键入以下命令来检查其版本:

wget --version 
在您的操作系统上查找已安装的 Wget 版本

如果上述结果未显示,您可以从命令行安装该工具,具体取决于您的 Linux 发行版,如下所示:

对于基于 Debian 和 Ubuntu 的发行版

在终端中,键入并执行以下命令:

sudo apt update && sudo apt install wget 

上 Fedora 工作站

Fedora 有 dnf 和 yum 包管理器,所以你可以像这样从终端安装任何应用程序:

sudo dnf install wget 

在 Arch Linux 和基于 Arch 的发行版上:

在 Arch 及其衍生操作系统上,pacman 被用作包管理器。 因此,安装过程如下所示:

sudo pacman -S wget 

为一次性使用强制执行 IPv4 和 IPv6 协议

如果您只是使用 wget 命令和 URL,则默认情况下,它使用 32 位 IPv4 地址和 128 位 IPv6 地址连接到 Internet,例如:

wget https://ftp.gnu.org/gnu/fdisk/fdisk-0.9.1.tar.bz2 
默认情况下,Wget 连接到 IPv4 和 IPv6

要使用 IPv4 协议,我们需要使用 –inet4-only 标志和命令:

wget --inet4-only https://ftp.gnu.org/gnu/fdisk/fdisk-0.9.1.tar.bz2 
这一次,仅通过 IPv4 进行下载这一次,仅通过 IPv4 进行下载

同样,您可以使用 –inet6-only 标志强制通过 IPv6 协议开始下载,如下所示:

wget --inet6-only https://ftp.gnu.org/gnu/fdisk/fdisk-0.9.1.tar.bz2 
仅通过 IPv6 下载文件仅通过 IPv6 下载文件

永久强制执行 IPv4 和 IPv6 协议

要永久强制执行任何操作,您必须分别为单个用户或所有用户修改位于 ~/.wgetrc 或 /etc/wgetrc 的 .wgetrc 文件。 使用 vim 或 nano 等文本编辑器打开文件:

vim ~/.wgetrc # or vim /etc/wgetrc 
在文本编辑器中打开 Wgetrc 文件在文本编辑器中打开 Wgetrc 文件

现在,只需在文件中添加(或通过删除 # 取消注释)以强制 IPv4 或 IPv6:

inet4_only = on/off  # or  inet6_only = on/off 

概括

我强烈建议您只使用临时标志来使用 IPv4 或 IPv6,除非您知道自己在做什么。 如果您强制使用 IPv6 并且主机 DNS 没有该连接,那么您将遇到“失败:没有与主机名关联的地址”错误。

参考

Archwiki – Wget