強制 wget 使用 IPV4 或 IPV6 連接下載內容


Wget 是一個命令行工具,允許您使用 HTTP、HTTPS 和 FTP 協議從 Internet 下載任何內容。支持用於連接到 Internet 的 IPv4(Internet 協議版本 4)和 IPv6(Internet 協議 6)地址。

如果出於任何原因使用 IPv4 或 IPv6 協議進行連接,則必須在每次使用 wget 命令時指定它。否則,您將需要更改默認值。在本文中,我們將研究這個過程。

wget vs 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 添加到文件(或刪除 # 以取消註釋)來強制 IPv4 或 IPv6。

inet4_only = on/off

# or

inet6_only = on/off

概括

如果您不知道自己在做什麼,強烈建議您僅使用 IPv4 或 IPv6 臨時標誌。 如果您強制使用 IPv6 並且主機 DNS 沒有該連接,您將收到錯誤“失敗:沒有與主機名關聯的地址”。

參考

Archwiki – Wget