Linux下新的網(wǎng)絡(luò)管理工具ip替代ifconfig零壓力
如果你使用 Linux 足夠久,那么你自然知道一些工具的來與去。2009年 Debian 開發(fā)者郵件列表宣布放棄使用缺乏維護的 net-tools 工具包正是如此。到今天 net-tools 仍然被部分人們所使用。事實上,在 Ubuntu 14.10 中你依舊可以使用 ifconfig 命令來管理你的網(wǎng)絡(luò)配置。
然而在某些情況下(例如, Ubuntu Docker 容器), net-tools 工具包將不會被默認安裝,這就意味著不能使用 ifconfig 。盡管如此,還是可以用軟件倉庫來安裝 net-tools 。
- sudo apt-get install net-tools
由于 net-tools 不再維護,我們強烈建議以 ip 命令代替 ifconfig。更重要的是 ip 在代替 ifconfig 的基礎(chǔ)上表現(xiàn)得更好。
有趣的是 ip 不只是 ifconfig 的一個替代品,這兩個命令在結(jié)構(gòu)上有很多不同。即便如此,它們卻都用于同一個目的。實際上 ip 命令可以完成下面所有事務(wù)。
- 列出系統(tǒng)上配置了哪些網(wǎng)絡(luò)接口
- 查看網(wǎng)絡(luò)接口的狀態(tài)
- 配置網(wǎng)絡(luò)接口(包括本地環(huán)路和以太網(wǎng))
- 啟用或禁用網(wǎng)絡(luò)接口
- 管理默認靜態(tài)路由
- IP 隧道配置
- 配置 ARP 或 NDISC 緩存條目
接下來就讓我們按上面說的試著用 ip 代替 ifconfig 。 我將例舉一些簡單的例子說明怎么使用 ip 命令。要正確使用并理解這些命令需要 root 權(quán)限,你可以用 su 切換到 root 用戶或著使用 sudo 。因為這些命令將會改變你機器的網(wǎng)絡(luò)信息。小心謹慎使用。
注意:演示中用的地址僅作演示,具體到你的計算機時,會由你的網(wǎng)絡(luò)以及硬件而不一樣。
接下來,開始吧!
收集信息
多數(shù)人學習使用 ifconfig 做的***件事就是查看網(wǎng)絡(luò)接口上分配的 IP 地址。直接終端輸入 ifconfig 不帶任何參數(shù)回車即可看到。那么使用 ip 來做到這點我們只需要這樣。
- ip a
這條命令將會列出所有網(wǎng)絡(luò)接口的相關(guān)信息。
你說你只想看 IPv4 相關(guān)信息,那么可以這樣。
- ip -4 a
你又說你想看特定的網(wǎng)絡(luò)接口的相關(guān)信息,那么用如下命令查看無線網(wǎng)卡連接信息。
- ip a show wlan0
你甚至可以定位更具體的信息,欲查看 wlan0 上的 IPv4 信息,那么可以這樣。
- ip -4 a show wlan0
還可以這樣列出正在運行的網(wǎng)絡(luò)接口。
- ip link ls up
修改配置網(wǎng)絡(luò)接口
接下來讓我們來學習 ip 命令的核心功能——修改配置網(wǎng)絡(luò)接口。假如你想為***個以太網(wǎng)的網(wǎng)卡( 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
顯然這樣的話,你需要知道你要安排的地址的子網(wǎng)掩碼。
同樣的方式,你可以這樣刪除一個網(wǎng)卡的地址。
- ip a del 192.168.1.101/24 dev eth0
如果你想簡單的清除所有接口上的所有地址,只需要這樣即可。
- ip -s -s a f to 192.168.1.0/24
ip 命令另一方面還能激活/禁用網(wǎng)絡(luò)接口。
禁用 eth0
- ip link set dev eth0 down
激活 eth0
- ip link set dev eth0 up
使用 ip 命令,我們還可以添加/刪除默認的網(wǎng)關(guān),就像這樣。
- ip route add default via 192.168.1.254
如果你想獲得網(wǎng)絡(luò)接口的更多細節(jié),你可以編輯傳輸隊列,給速度慢的接口設(shè)置一個低值,給速度快的設(shè)置一個較高值。那么你需要像這樣做。
- ip link set txqueuelen 10000 dev eth0
該命令設(shè)置了一個很長的傳輸隊列。你應(yīng)該設(shè)置一個最適合你硬件的值。
還可以用 ip 命令為網(wǎng)絡(luò)接口設(shè)置***傳輸單元。
- ip link set mtu 9000 dev eth0
一旦你做了改變,便可以使用 ip a list eth0 來檢驗是否生效。
管理路由表
其實還可以使用 ip 命令來管理系統(tǒng)路由表。這是 ip 命令非常有用的一個功能。并且你應(yīng)該小心使用。
查看所有路由表。
- ip r
輸出結(jié)果將像下圖所示。
現(xiàn)在你想要路由的所有流量從 eth0 網(wǎng)卡的192.168.1.254網(wǎng)關(guān)通過,那么請這樣做。
- ip route add 192.168.1.0/24 dev eth0
刪除這個路由。
- ip route del 192.168.1.0/24 dev eth0
這篇文章僅僅對 ip 命令進行了一些介紹。不是要求你馬上使用 ip 命令。你可以繼續(xù)使用 ifconfig 。因為 ifconfig 的棄用相當?shù)穆芏喟l(fā)行版里依舊默認安裝了該命令。但是相信最終會逐步被 ip 命令完全取代??催^這篇介紹,到時候你便能很快的轉(zhuǎn)換過去。如果你還想了解 更多 ip 命令的用法,請看 ip 命令的 man 手冊。