2009年 Debian 開發者郵件列表宣布放棄使用缺乏維護的 net-tools 工具包,到今天 net-tools 仍然被部分人們所使用。
由於 net-tools 不再維護,強烈建議以 ip 命令代替 ifconfig。
最起碼,你得知道這個新的 ip 命令!新版的 CentOS Mini 已經不再預裝 net-tools,Docker 版的 ubuntu 也不再支持,所以很有必要學習下新的 ip 命令。
不管是 ip 還是 ifconfig 我們也就是干下面的幾件事:
- 列出系統上配置了哪些網絡接口
- 查看網絡接口的狀態
- 配置網絡接口(包括本地環路和以太網)
- 啟用或禁用網絡接口
- 管理默認靜態路由
- IP 隧道配置
- 配置 ARP 或 NDISC 緩存條目
收集信息
用的最頻繁的就是查看分配的 ip 等信息了吧,以前只需要輸入 ifconfig 即可,現在也有同樣簡單的命令:
ip a
如果只想看 ipv4 的信息只需要:
ip -4 a
查看特定網絡接口的信息(比如無線):
ip a show wlan0
列出正在運行的網絡接口:
ip link ls up
修改配置
這是常用的第二大功能,下面就比較來說:
修改 ip 為指定的地址,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
顯然這樣的話,你需要知道你要安排的地址的子網掩碼。
還記得么?ipv4 是由 32 位構成,分為四段,每段 8 位,
1111 1111
就是最大值換成十進制是 255x.x.x.x/24 的意思就是前 24 位是網絡地址,也就是最后一段才是主機地址。
同樣的方式,你可以這樣刪除一個網卡的地址:
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
現在你想要路由的所有流量從 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