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”就會證明它是一個高效且通用的網路管理工具。