教程

新的網路管理工具 ip 替代 ifconfig 零壓力

如果你使用 Linux 足夠久,那麼你自然知道一些工具的來與去。2009年 Debian 開發者郵件列表宣布放棄使用缺乏維護的 net-tools 工具包正是如此。到今天 net-tools 仍然被部分人們所使用。事實上,在 Ubuntu 14.10 中你依舊可以使用 ifconfig 命令來管理你的網路配置。

然而在某些情況下(例如, Ubuntu Docker 容器), net-tools 工具包將不會被默認安裝,這就意味著不能使用 ifconfig 。儘管如此,還是可以用軟體倉庫來安裝 net-tools 。

sudo apt-get install net-tools

由於 net-tools 不再維護,我們強烈建議以 ip 命令代替 ifconfig。更重要的是 ip 在代替 ifconfig 的基礎上表現得更好。

有趣的是 ip 不只是 ifconfig 的一個替代品,這兩個命令在結構上有很多不同。即便如此,它們卻都用於同一個目的。實際上 ip 命令可以完成下面所有事務。

  • 列出系統上配置了哪些網路介面
  • 查看網路介面的狀態
  • 配置網路介面(包括本地環路和乙太網)
  • 啟用或禁用網路介面
  • 管理默認靜態路由
  • IP 隧道配置
  • 配置 ARP 或 NDISC 緩存條目

接下來就讓我們按上面說的試著用 ip 代替 ifconfig 。 我將例舉一些簡單的例子說明怎麼使用 ip 命令。要正確使用並理解這些命令需要 root 許可權,你可以用 su 切換到 root 用戶或著使用 sudo 。因為這些命令將會改變你機器的網路信息。小心謹慎使用

注意:演示中用的地址僅作演示,具體到你的計算機時,會由你的網路以及硬體而不一樣。

接下來,開始吧!

收集信息

多數人學習使用 ifconfig 做的第一件事就是查看網路介面上分配的 IP 地址。直接終端輸入 ifconfig 不帶任何參數回車即可看到。那麼使用 ip 來做到這點我們只需要這樣。

ip a

這條命令將會列出所有網路介面的相關信息。

你說你只想看 IPv4 相關信息,那麼可以這樣。

ip -4 a

你又說你想看特定的網路介面的相關信息,那麼用如下命令查看無線網卡連接信息。

ip a show wlan0

你甚至可以定位更具體的信息,欲查看 wlan0 上的 IPv4 信息,那麼可以這樣。

ip -4 a show wlan0

還可以這樣列出正在運行的網路介面。

ip link ls up

修改配置網路介面

接下來讓我們來學習 ip 命令的核心功能——修改配置網路介面。假如你想為第一個乙太網的網卡( eth0 )安排一個特定的地址。用 ifconfig 的話,看起來是這樣的。

ifconfig eth0 192.168.1.101

那麼用 ip 命令卻是這樣的。

ip a add 192.168.1.101/255.255.255.0 dev eth0

簡短一點可以這樣。

ip a add 192.168.1.101/24 dev eth0

顯然這樣的話,你需要知道你要安排的地址的子網掩碼。

同樣的方式,你可以這樣刪除一個網卡的地址。

ip a del 192.168.1.101/24 dev eth0

如果你想簡單的清除所有介面上的所有地址,只需要這樣即可。

ip -s -s a f to 192.168.1.0/24

ip 命令另一方面還能激活/禁用網路介面。

禁用 eth0 

ip link set dev eth0 down

激活 eth0 

ip link set dev eth0 up

使用 ip 命令,我們還可以添加/刪除默認的網關,就像這樣。

ip route add default via 192.168.1.254

如果你想獲得網路介面的更多細節,你可以編輯傳輸隊列,給速度慢的介面設置一個低值,給速度快的設置一個較高值。那麼你需要像這樣做。

ip link set txqueuelen 10000 dev eth0

該命令設置了一個很長的傳輸隊列。你應該設置一個最適合你硬體的值。

還可以用 ip 命令為網路介面設置最大傳輸單元。

ip link set mtu 9000 dev eth0

一旦你做了改變,便可以使用 ip a list eth0 來檢驗是否生效。

管理路由表

其實還可以使用 ip 命令來管理系統路由表。這是 ip 命令非常有用的一個功能。並且你應該小心使用

查看所有路由表。

ip r

輸出結果將像下圖所示。

jack-ip-2-crop

現在你想要路由的所有流量從 eth0 網卡的192.168.1.254網關通過,那麼請這樣做。

ip route add 192.168.1.0/24 dev eth0

刪除這個路由。

ip route del 192.168.1.0/24 dev eth0


這篇文章僅僅對 ip 命令進行了一些介紹。不是要求你馬上使用 ip 命令。你可以繼續使用 ifconfig 。因為 ifconfig 的棄用相當的慢,很多發行版里依舊默認安裝了該命令。但是相信最終會逐步被 ip 命令完全取代。看過這篇介紹,到時候你便能很快的轉換過去。如果你還想了解更多 ip 命令的用法,請看 ip 命令的 man 手冊。

原文鏈接:http://www.linux.com/learn/tutorials/846486-replacing-ifconfig-with-ip/

譯文鏈接:http://www.linuxstory.org/replacing-ifconfig-with-ip/

對這篇文章感覺如何?

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

    You may also like

    6 Comments

    1. ip命令還蠻難記的

    2. […] ss取代netstat原因 Centos6 與 Centos7 區別 ip使用詳解 […]

    3. 不需要安裝嗎。。。

      1. 我用的 CentOS 7 不需要安裝,系統自帶 ip ,而且已經不帶 ifconfig 了。

      2. 現在發行版基本都默認安裝了的,沒有的話,它在iproute2這個包里

    Leave a reply

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

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

    More in:教程

    教程

    在 Ubuntu Linux 上安裝 Clang

    無論您使用的是 Ubuntu 22.04、20.04 或其他任何版本,並且想要安裝 Clang(一個開源的 C、C++ 和 Objective-C 編譯器),本文將對您有所幫助。Clang 是 GNU […]