Linux中國

放棄 ifconfig,擁抱 ip 命令

在很長一段時間內,ifconfig 命令是配置網路介面的默認方法。它為 Linux 用戶提供了很好的服務,但是網路很複雜,所以配置網路的命令必須健壯。ip 命令是現代系統中新的默認網路命令,在本文中,我將向你展示如何使用它。

ip 命令工作在 OSI 網路棧 的兩個層上:第二層(數據鏈路層)和第三層(網路 或 IP)層。它做了之前 net-tools 包的所有工作。

安裝 ip

ip 命令包含在 iproute2util 包中,它可能已經在你的 Linux 發行版中安裝了。如果沒有,你可以從發行版的倉庫中進行安裝。

ifconfig 和 ip 使用對比

ipifconfig 命令都可以用來配置網路介面,但它們做事方法不同。接下來,作為對比,我將用它們來執行一些常見的任務。

查看網口和 IP 地址

如果你想查看主機的 IP 地址或網路介面信息,ifconfig (不帶任何參數)命令提供了一個很好的總結。

$ ifconfig

eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500                                                                 
       ether bc:ee:7b:5e:7d:d8  txqueuelen 1000  (Ethernet)                                                       
       RX packets 0  bytes 0 (0.0 B)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 0  bytes 0 (0.0 B)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
       inet 127.0.0.1  netmask 255.0.0.0
       inet6 ::1  prefixlen 128  scopeid 0x10<host>
       loop  txqueuelen 1000  (Local Loopback)
       RX packets 41  bytes 5551 (5.4 KiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 41  bytes 5551 (5.4 KiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
       inet 10.1.1.6  netmask 255.255.255.224  broadcast 10.1.1.31
       inet6 fdb4:f58e:49f:4900:d46d:146b:b16:7212  prefixlen 64  scopeid 0x0<global>
       inet6 fe80::8eb3:4bc0:7cbb:59e8  prefixlen 64  scopeid 0x20<link>
       ether 08:71:90:81:1e:b5  txqueuelen 1000  (Ethernet)
       RX packets 569459  bytes 779147444 (743.0 MiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 302882  bytes 38131213 (36.3 MiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

新的 ip 命令提供了類似的結果,但命令是 ip address show,或者簡寫為 ip a:

$ ip a

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: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
   link/ether bc:ee:7b:5e:7d:d8 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
   link/ether 08:71:90:81:1e:b5 brd ff:ff:ff:ff:ff:ff
   inet 10.1.1.6/27 brd 10.1.1.31 scope global dynamic wlan0
      valid_lft 83490sec preferred_lft 83490sec
   inet6 fdb4:f58e:49f:4900:d46d:146b:b16:7212/64 scope global noprefixroute dynamic  
      valid_lft 6909sec preferred_lft 3309sec
   inet6 fe80::8eb3:4bc0:7cbb:59e8/64 scope link  
      valid_lft forever preferred_lft forever

添加 IP 地址

使用 ifconfig 命令添加 IP 地址命令為:

$ ifconfig eth0 add 192.9.203.21

ip 類似:

$ ip address add 192.9.203.21 dev eth0

ip 中的子命令可以縮短,所以下面這個命令同樣有效:

$ ip addr add 192.9.203.21 dev eth0

你甚至可以更短些:

$ ip a add 192.9.203.21 dev eth0

移除一個 IP 地址

添加 IP 地址與刪除 IP 地址正好相反。

使用 ifconfig,命令是:

$ ifconfig eth0 del 192.9.203.21

ip 命令的語法是:

$ ip a del 192.9.203.21 dev eth0

啟用或禁用組播

使用 ifconfig 介面來啟用或禁用 組播 multicast

# ifconfig eth0 multicast

對於 ip,使用 set 子命令與設備(dev)以及一個布爾值和 multicast 選項:

# ip link set dev eth0 multicast on

啟用或禁用網路

每個系統管理員都熟悉「先關閉,然後打開」這個技巧來解決問題。對於網路介面來說,即打開或關閉網路。

ifconfig 命令使用 updown 關鍵字來實現:

# ifconfig eth0 up

或者你可以使用一個專用命令:

# ifup eth0

ip 命令使用 set 子命令將網路設置為 updown 狀態:

# ip link set eth0 up

開啟或關閉地址解析功能(ARP)

使用 ifconfig,你可以通過聲明它來啟用:

# ifconfig eth0 arp

使用 ip,你可以將 arp 屬性設置為 onoff

# ip link set dev eth0 arp on

ip 和 ipconfig 的優缺點

ip 命令比 ifconfig 更通用,技術上也更有效,因為它使用的是 Netlink 套接字,而不是 ioctl 系統調用。

ip 命令可能看起來比 ifconfig 更詳細、更複雜,但這是它擁有更多功能的一個原因。一旦你開始使用它,你會了解它的內部邏輯(例如,使用 set 而不是看起來隨意混合的聲明或設置)。

最後,ifconfig 已經過時了(例如,它缺乏對網路命名空間的支持),而 ip 是為現代網路而生的。嘗試並學習它,使用它,你會由衷高興的!

via: https://opensource.com/article/21/1/ifconfig-ip-linux

作者:Rajan Bhardwaj 選題:lujun9972 譯者:MjSeven 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國