ifconfig 與 ip 的區別及網路配置比較


作為網路管理員或任何從事網路故障排除的人員,您經常會遇到“ifconfig”和“ip”這兩個術語。這兩個命令都用於基於Unix的作業系統中的網路介面配置,但它們有什麼區別呢?在本文中,我們將剖析這些差異,深入研究一些示例及其輸出,以便更好地理解這些命令。

Ifconfig 簡介

Ifconfig(介面配置)是Unix和類Unix作業系統中的一個系統管理實用程式,用於配置、控制和查詢TCP/IP網路介面引數。它是net-tools軟體包的一部分,幾乎自Linux誕生以來就存在。

讓我們執行一個簡單的ifconfig命令來看看它的輸出。

$ ifconfig

這可能會產生類似於以下的輸出:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
   inet 192.168.1.2  netmask 255.255.255.0  broadcast 192.168.1.255
   inet6 fe80::92e2:baff:fe14:5044  prefixlen 64  scopeid 0x20<link>
   ether 90:e2:ba:14:50:44  txqueuelen 1000  (Ethernet)
   RX packets 44675547  bytes 60719045480 (56.5 GiB)
   RX errors 0  dropped 2473  overruns 0  frame 0
   TX packets 32862915  bytes 4461913156 (4.1 GiB)
   TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

在這個例子中,eth0是第一個乙太網介面的名稱。顯示的詳細資訊包括IP地址(IPv4/IPv6)、子網掩碼、廣播地址、MAC地址以及RX/TX資料包詳細資訊。

Ip 簡介

然而,大約從2009年開始,“ip”命令開始取代傳統的ifconfig。“ip”命令是iproute2軟體包的一部分,該軟體包得到積極維護,這與net-tools軟體包相反。

與ifconfig相比,“ip”命令提供了更多功能。例如,它提供高階路由、隧道,甚至策略。它還提供更簡單的語法和一致的輸出,使其更容易在指令碼或程式設計中使用。

以下是使用“ip”命令的示例:

$ ip addr

這可能會輸出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host 
      valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
   link/ether 90:e2:ba:14:50:44 brd ff:ff:ff:ff:ff:ff
   inet 192.168.1.2/24 brd 192.168.1.255 scope global dynamic eth0
      valid_lft 86374sec preferred_lft 75574sec
   inet6 fe80::92e2:baff:fe14:5044/64 scope link 
      valid_lft forever preferred_lft forever

比較分析

現在我們已經瞭解了ifconfig和ip命令的基本工作原理和輸出,讓我們詳細比較一下它們。

語法和用法

“ip”命令擁有更高階和高效的語法。其設計更具層次性,使管理和配置網路介面更加容易。

例如,如果您想使用ifconfig啟動網路介面,則可以使用:

$ sudo ifconfig eth0 up

而在“ip”中:

$ sudo ip link set eth0 up

您可以在“ip”命令中看到分層結構,因為“link set”用於配置網路介面引數。

IPv6 支援

ifconfig命令不完全支援IPv6,使其不太適合現代網路。相反,“ip”完全支援IPv6,這在網際網路向IPv6過渡時至關重要。

維護和更新

正如我們前面提到的,ifconfig是net-tools軟體包的一部分,該軟體包已被棄用,不再積極維護。“ip”另一方面,是iproute2軟體包的一部分,並得到積極維護,這意味著它會獲得更新、新功能和錯誤修復。

功能和能力

雖然ifconfig主要用於配置網路介面,“ip”可以做更多的事情。它可以配置路由、隧道,並提供高階網路統計資訊。

例如,要顯示路由表,可以使用:

$ ip route show

輸出可能是:

default via 192.168.1.1 dev eth0 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.2

ifconfig 與 ip 的表格比較

以下是`ifconfig`和`ip`命令的表格比較:

引數

Ifconfig

Ip

可用性

已棄用的net-tools軟體包的一部分。未積極維護

積極維護的iproute2軟體包的一部分

IPv6 支援

對IPv6的支援有限

完全支援IPv6

功能

主要用於配置網路介面

用於配置網路介面,以及管理路由、隧道和提供高階網路統計資訊

命令語法

簡單、扁平的語法

更高階、分層語法

用法示例

$ ifconfig eth0 up

$ ip link set eth0 up

顯示介面

$ ifconfig

$ ip addr

顯示路由表

$ route -n

$ ip route show

新增IP地址

$ ifconfig eth0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255 up

$ ip addr add 192.168.1.2/24 dev eth0

刪除IP地址

不夠直接

$ ip addr del 192.168.1.2/24 dev eth0

啟用/停用介面

$ ifconfig eth0 up/down

$ ip link set eth0 up/down

總之,雖然`ifconfig`由於其悠久的歷史而可能更熟悉,但`ip`命令更現代、更強大、更通用。建議在現代Linux系統中使用`ip`而不是`ifconfig`。

結論

雖然ifconfig具有其歷史意義,並且由於其簡單性和熟悉性而仍在使用,“ip”命令為網路配置和故障排除提供了更強大和全面的解決方案。它得到積極維護,功能更豐富,並完全支援IPv6,使其在當今的網路環境中更具相關性。

從ifconfig到ip的過渡起初可能會因為語法和命令結構的差異而感到困難,但是一旦您理解了基本原理,“ip”就會證明它是一個高效且通用的網路管理工具。

更新於:2023年7月17日

瀏覽量:1000+

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告