在 Linux 中如何從命令行查找默認網關的 IP 地址

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

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

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

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

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




























