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