在 Linux 中如何從命令行查找默認網(wǎng)關(guān)的 IP 地址

Linux 下查找網(wǎng)關(guān)或路由器 IP 地址的 5 種方法。
網(wǎng)關(guān) 是一個節(jié)點或一個路由器,當連接到同一路由器時,它允許兩個或多個 IP 地址不同的主機相互通信。如果沒有網(wǎng)關(guān),它們將無法相互通信。換句話說,網(wǎng)關(guān)充當接入點,將網(wǎng)絡(luò)數(shù)據(jù)從本地網(wǎng)絡(luò)傳輸?shù)竭h程網(wǎng)絡(luò)。在本指南中,我們將看到在 Linux 和 Unix 中從命令行找到默認網(wǎng)關(guān)的所有可能方法。
在 Linux 中查找默認網(wǎng)關(guān)
Linux 中有各種各樣的命令行工具可用于查看網(wǎng)關(guān) IP 地址。最常用的工具是:??ip???、??ss??? 和 ??netcat??。我們將通過示例了解如何使用每種工具查看默認網(wǎng)關(guān)。
1、使用 ip 命令查找默認網(wǎng)關(guān)
??ip?? 命令用于顯示和操作 Linux 中的路由、網(wǎng)絡(luò)設(shè)備、接口和隧道。
要查找默認網(wǎng)關(guān)或路由器 IP 地址,只需運行:
或者:
或者:
示例輸出:
你從輸出中看到了 ??default via 192.168.1.101??? 這一行嗎?它就是默認網(wǎng)關(guān)。我的默認網(wǎng)關(guān)是 ??192.168.1.101??。
你可以使用 ??-4??? 參數(shù)只??顯示 IPv4 網(wǎng)關(guān)??:
或者,使用 ??-6?? 參數(shù)只顯示 IPv6 網(wǎng)關(guān):
如你所見,IP 地址和子網(wǎng)詳細信息也一并顯示了。如果你想只顯示默認網(wǎng)關(guān),排除所有其他細節(jié),可以使用 ??ip route??? 搭配 ??awk?? 命令,如下所示。
使用 ??ip route??? 和 ??awk?? 命令打印網(wǎng)關(guān)地址,執(zhí)行命令:
(LCTT 譯注:wsl1 上無輸出結(jié)果,正常 Linux 發(fā)行版無問題)
或者:
這將只列出網(wǎng)關(guān) IP:
示例輸出:

使用 ip 命令列出默認網(wǎng)關(guān)
你也可以使用 ??grep??? 命令配合 ??ip route?? 對默認網(wǎng)關(guān)進行過濾。
使用 ??ip route??? 和 ??grep?? 查找默認網(wǎng)關(guān) IP 地址,執(zhí)行命令:
在最新的 Linux 發(fā)行版中,??ip route??? 是查找默認網(wǎng)關(guān) IP 地址的推薦命令。然而,你們中的一些人可能仍然在使用傳統(tǒng)的工具,如 ??route??? 和 ??netstat???。舊習難改,對吧?下面的部分將介紹如何在 Linux 中使用 ??route??? 和 ??netstat?? 命令確定網(wǎng)關(guān)。
2、使用 route 命令顯示默認網(wǎng)關(guān) IP 地址
??route?? 命令用于在較老的 Linux 發(fā)行版中顯示和操作路由表,如 RHEL 6、CentOS 6 等。
如果你正在使用較老的 Linux 發(fā)行版,你可以使用 ??route?? 命令來顯示默認網(wǎng)關(guān)。
請注意,在最新的 Linux 發(fā)行版中,??route??? 工具已被棄用,??ip route??? 命令取而代之。如果你因為某些原因仍然想使用 ??route??,你需要安裝它。
首先,我們需要檢查哪個包提供了 ??route?? 命令。為此,在基于 RHEL 的系統(tǒng)上運行以下命令:
示例輸出:
如你所見,??net-tools??? 包提供了 ??route?? 命令。所以,讓我們使用以下命令來安裝它:
現(xiàn)在,運行帶有 ??-n??? 參數(shù)的 ??route?? 命令來顯示 Linux 系統(tǒng)中的網(wǎng)關(guān)或路由器 IP 地址:
示例輸出:

使用 route 命令顯示默認網(wǎng)關(guān) IP 地址
如你所見,網(wǎng)關(guān) IP 地址是 192.168.1.101。你還將在 Flags 下面看到兩個字母 ??UG???。字母 ??U??? 代表接口是 “Up”(在運行),??G?? 表示 “Gateway”(網(wǎng)關(guān))。
3、使用 netstat 命令查看網(wǎng)關(guān) IP 地址
??netstat??? 會輸出 Linux 網(wǎng)絡(luò)子系統(tǒng)的信息。使用 ??netstat?? 工具,我們可以在 Linux 和 Unix 系統(tǒng)中打印網(wǎng)絡(luò)連接、路由表、接口統(tǒng)計信息、偽裝連接和組播成員關(guān)系。
??netstat??? 是 ??net-tools?? 包的一部分,所以確保你已經(jīng)在 Linux 系統(tǒng)中安裝了它。使用以下命令在基于 RHEL 的系統(tǒng)中安裝它:
使用 netstat 命令打印默認網(wǎng)關(guān) IP 地址:
示例輸出:

使用 netstat 命令查看網(wǎng)關(guān) IP 地址
??netstat??? 命令與 ??route??? 命令的輸出信息相同。如上輸出可知,網(wǎng)關(guān)的 IP 地址為 ??192.168.1.191???,??UG??? 表示網(wǎng)關(guān)連接的網(wǎng)卡是有效的,??G?? 表示網(wǎng)關(guān)。
請注意 ??netstat??? 也已棄用,建議使用 ??ss??? 命令代替 ??netstat??。
4、使用 routel 命令打印默認網(wǎng)關(guān)或路由器 IP 地址
??routel??? 是一個腳本,它以一種漂亮格式的輸出路由。??routel??? 腳本的輸出讓一些人認為比 ??ip route?? 列表更直觀。
??routel??? 腳本也是 ??net-tools?? 包的一部分。
打印默認網(wǎng)關(guān)或路由器 IP 地址,不帶任何參數(shù)運行 ??routel?? 腳本,如下所示:
示例輸出:

使用 routel 命令打印默認網(wǎng)關(guān)或路由器 IP 地址
只打印默認網(wǎng)關(guān),和 ??grep?? 命令配合,如下所示:
5、從以太網(wǎng)配置文件中查找網(wǎng)關(guān)
如果你在 ??Linux 或 Unix 中配置了靜態(tài) IP 地址??,你可以通過查看網(wǎng)絡(luò)配置文件查看默認網(wǎng)關(guān)或路由器 IP 地址。
在基于 RPM 的系統(tǒng)上,如 Fedora、RHEL、CentOS、AlmaLinux 和 Rocky Linux 等,網(wǎng)絡(luò)接口卡配置存儲在 ??/etc/sysconfig/network-scripts/?? 目錄下。
查找網(wǎng)卡的名稱:
示例輸出:
網(wǎng)卡名為 ??eth0??。所以讓我們打開這個網(wǎng)卡文件的網(wǎng)卡配置:
示例輸出:
如你所見,網(wǎng)關(guān) IP 為 ??192.168.1.101??。
在 Debian、Ubuntu 及其衍生版中,所有的網(wǎng)絡(luò)配置文件都存儲在 ??/etc/network?? 目錄下。
示例輸出:
請注意,此方法僅在手動配置 IP 地址時有效。對于啟用 DHCP 的網(wǎng)絡(luò),需要按照前面的 4 種方法操作。
總結(jié)
在本指南中,我們列出了在 Linux 和 Unix 系統(tǒng)中找到默認網(wǎng)關(guān)的 5 種不同方法,我們還在每種方法中包含了顯示網(wǎng)關(guān)/路由器 IP 地址的示例命令。希望它對你有所幫助。




























