老版本的 Linux 中都是使用 ifconfig
命令檢查和配置網(wǎng)絡(luò)接口,但是該命令目前已經(jīng)沒有維護(hù)了穿肄,取而代之的是 ip
命令
ip
命令和 ifconfig
命令很相似,但是 相比起來,ip
命令的功能更強(qiáng)大漩蟆,它能執(zhí)行多種 ifconfig
命令無法執(zhí)行的任務(wù)
本文將介紹 ip
命令常用的一些操作
顯示所有網(wǎng)絡(luò)接口信息
輸入 ip addr
或者 ip a
命令可以顯示所有的網(wǎng)絡(luò)接口信息
[root@ecs-centos-7 ~]# ip addr
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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
valid_lft 74409sec preferred_lft 74409sec
inet6 fe80::f816:3eff:fee0:4fb8/64 scope link
valid_lft forever preferred_lft forever
[root@ecs-centos-7 ~]#
上面的輸出中,可以看出系統(tǒng)目前的網(wǎng)絡(luò)接口分別是 lo
和 eth0
, 前者是網(wǎng)絡(luò)環(huán)回接口眉撵,后者是常規(guī)的網(wǎng)絡(luò)接口
輸出接口信息的 字段詳解
<BROADCAST,MULTICAST,UP,LOWER_UP>: BROADCAST 表示支持廣播, MULTICAST 表示支持多播
UP 網(wǎng)絡(luò)接口處于開啟狀態(tài)
LOWER_UP 表示網(wǎng)絡(luò)電纜已插入并且已連上網(wǎng)絡(luò)
mtu 1500: 最大傳輸?shù)膯挝?500字節(jié)
qdisc pfifo_fast: 數(shù)據(jù)包排隊(duì)
state UP: 接口狀態(tài)已開啟
qlen 1000: 傳輸隊(duì)列長(zhǎng)度
link/ether fa:16:3e:e0:4f:b8 Mac地址
brd ff:ff:ff:ff:ff:ff 廣播地址
inet 192.168.0.9/24 : IPV4
scope global: 全局有效
dynamic eth0: 動(dòng)態(tài)分配地址
valid_lft 74409sec: IPV4有效期
preferred_lft 74409sec: IPV4首選生存期
inet6 fe80::f816:3eff:fee0:4fb8/64 IPV6
scope link: 僅在此接口上生效
除了輸出所有的網(wǎng)絡(luò)接口信息外,還可以按照以下方式個(gè)性化輸出網(wǎng)絡(luò)接口信息
- 按照是否支持 IPV4 或 IPV6輸出
命令 ip -4 a
會(huì)輸出只支持IPV4的接口信息
同樣落塑,命令 ip -6 a
會(huì)輸出只支持IPV6的接口信息
- 按照接口名字輸出
命令 ip a show eth0
會(huì)輸出 eth0
接口的信息
[root@ecs-centos-7 ~]# ip a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
valid_lft 73494sec preferred_lft 73494sec
inet6 fe80::f816:3eff:fee0:4fb8/64 scope link
valid_lft forever preferred_lft forever
- 按照網(wǎng)絡(luò)接口開啟和關(guān)閉狀態(tài)輸出
命令 ip link ls up
會(huì)輸出所有處于開啟狀態(tài)的網(wǎng)絡(luò)接口信息
那么纽疟,ip link ls down
就會(huì)輸出所有處于關(guān)閉狀態(tài)的網(wǎng)絡(luò)接口信息
為網(wǎng)絡(luò)接口 添加、移除 IP地址
- 添加IP
為指定網(wǎng)絡(luò)接口分配IP地址的命令格式: ip a add ip地址 dev 接口名字
比如:現(xiàn)在要為eth0
網(wǎng)絡(luò)接口分配一個(gè)網(wǎng)絡(luò)掩碼為 20 的IP 192.168.1.10
, 具體的輸入請(qǐng)看下面的實(shí)例
[root@ecs-centos-7 ~]# ip a add 192.168.1.10/20 dev eth0
[root@ecs-centos-7 ~]# ip a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
valid_lft 71787sec preferred_lft 71787sec
inet 192.168.1.10/20 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fee0:4fb8/64 scope link
valid_lft forever preferred_lft forever
從上面例子的輸出結(jié)果可以看出憾赁,網(wǎng)絡(luò)接口eth0
上多了一個(gè)192.168.1.10
的 IP
命令 ip a add 192.168.1.10/20 dev eth0
執(zhí)行成功的話污朽,是沒有任何輸出,如果網(wǎng)絡(luò)接口 eth0
不存在的話龙考,會(huì)輸出 Cannot find device "eth0"
的錯(cuò)誤信息
其實(shí)蟆肆,還可以通過執(zhí)行 ping 192.168.1.10
命令來測(cè)試網(wǎng)絡(luò)接口上IP是否分配成功,如果能 ping 通IP的話晦款,表示分配成功炎功,否則表示失敗
說明:192.168.1.10/20 中 20 是 CIDR 表示法的網(wǎng)絡(luò)掩碼,想詳細(xì)了解的可以自行查閱網(wǎng)絡(luò)掩碼的資料
- 移除IP
網(wǎng)絡(luò)接口上添加了IP之后柬赐,可使用 ip a del ip地址 dev 接口名字
命令從指定的接口移除指定的IP亡问,移除的時(shí)候IP后面需要攜帶網(wǎng)絡(luò)掩碼
[root@ecs-centos-7 ~]# ip a del 192.168.1.10/20 dev eth0
[root@ecs-centos-7 ~]# ip a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
valid_lft 71414sec preferred_lft 71414sec
inet6 fe80::f816:3eff:fee0:4fb8/64 scope link
valid_lft forever preferred_lft forever
修改網(wǎng)絡(luò)接口狀態(tài)
要關(guān)閉或者開啟網(wǎng)絡(luò)接口,可以使用 ip link set dev 接口名字 up/down
命令
例如:有 lo
和 eth0
兩個(gè)網(wǎng)絡(luò)接口, 具體接口信息如下
[root@ecs-centos-7 ~]# 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
valid_lft 59216sec preferred_lft 59216sec
inet6 fe80::f816:3eff:fee0:4fb8/64 scope link
valid_lft forever preferred_lft forever
通過 ping -w 3 127.0.0.1
命令測(cè)試肛宋,結(jié)果表明 lo
接口目前是開啟狀態(tài)州藕,具體的測(cè)試輸出如下所示
[root@ecs-centos-7 ~]# ping -w 3 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.014 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.026 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.022 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.023 ms
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.014/0.021/0.026/0.005 ms
現(xiàn)在關(guān)閉 lo
網(wǎng)絡(luò)接口,并再次測(cè)試該接口的狀態(tài)酝陈,具體命令如下:
[root@ecs-centos-7 ~]# ip link set dev lo down
[root@ecs-centos-7 ~]# ip link show lo
1: lo: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
[root@ecs-centos-7 ~]# ping -w 3 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 2999ms
執(zhí)行 ip link set dev lo down
命令之后床玻,關(guān)閉了網(wǎng)絡(luò)接口lo
,通過 ip link show lo
命令查看該接口的信息沉帮,結(jié)果表明接口是關(guān)閉狀態(tài)锈死,再次通過 ping -w 3 127.0.0.1
測(cè)試接口的狀態(tài),再一次確認(rèn)了接口是關(guān)閉狀態(tài)
修改網(wǎng)絡(luò)接口傳輸隊(duì)列長(zhǎng)度
通過 p l set txqueuelen 長(zhǎng)度 dev 接口名字
命令可以設(shè)置網(wǎng)絡(luò)接口的傳輸隊(duì)列長(zhǎng)度
[root@ecs-centos-7 ~]# ip l show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1200
link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
[root@ecs-centos-7 ~]# ip l set txqueuelen 1000 dev eth0
[root@ecs-centos-7 ~]# ip l show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
上面的例子中穆壕,字符串 <mark style="box-sizing: border-box;">qlen 1200
</mark> 表示傳輸隊(duì)列長(zhǎng)度是 <mark style="box-sizing: border-box;">1200
</mark>
從例子中可以看出待牵,修改傳輸隊(duì)列長(zhǎng)度之前,傳輸隊(duì)列長(zhǎng)度是 <mark style="box-sizing: border-box;">1200
</mark>
執(zhí)行 ip l set txqueuelen 1000 dev eth0
命令把傳輸隊(duì)列長(zhǎng)隊(duì)修改為 1000
, 然后再執(zhí)行 ip l show eth0
命令查詢 eth0
網(wǎng)絡(luò)接口的信息喇勋,查詢結(jié)果中 <mark style="box-sizing: border-box;">default qlen 1000
</mark> 說明修改成功
修改網(wǎng)絡(luò)接口的MTU(最大傳輸單元)
通過 p l set mtu 長(zhǎng)度 dev 接口名字
命令可以設(shè)置網(wǎng)絡(luò)接口的最大傳輸單元
[root@ecs-centos-7 ~]# ip l show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1600 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1200
link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
[root@ecs-centos-7 ~]# ip l set set mtu 1500 dev eth0
[root@ecs-centos-7 ~]# ip l show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1200
link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
上面的例子中缨该,字符串 <mark style="box-sizing: border-box;">mtu 1600
</mark> 表示最大傳輸單元是 <mark style="box-sizing: border-box;">1600
</mark>
從例子中可以看出,修改傳輸隊(duì)列長(zhǎng)度之前川背,最大傳輸單元是 <mark style="box-sizing: border-box;">1600
</mark>
執(zhí)行 ip l set set mtu 1500 dev eth0
命令把最大傳輸單元修改為 1500
, 然后再執(zhí)行 ip l show eth0
命令查詢 eth0
網(wǎng)絡(luò)接口的信息贰拿,查詢結(jié)果中 <mark style="box-sizing: border-box;">mtu 1500
</mark> 說明修改成功
查看IP路由表
下面幾條命令都可以查看 IP 路由表
ip r
ip route
ip r list
ip route list
- 查看路由表
[root@ecs-centos-7 ~]# ip r
default via 192.168.0.1 dev eth0 proto dhcp metric 100
169.254.169.254 via 192.168.0.254 dev eth0 proto dhcp metric 100
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.9 metric 100
- 查看指定IP以及網(wǎng)絡(luò)掩碼的路由表
[root@ecs-centos-7 ~]# ip r list 192.168.0.0/24
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.9 metric 100
查看ARP緩存
ARP是 Address Resolution Protocol 的縮寫, 全稱是地址解析協(xié)議,它是用于實(shí)現(xiàn)從IP地址到Mac地址的映射熄云,也就是詢問目標(biāo)IP的Mac地址
在本地存儲(chǔ)了一份IP對(duì)應(yīng)Mac地址的映射表膨更,這張表叫做 ARP緩存表,可以使用 ip n
命令查看緩存表
[root@ecs-centos-7 ~]# ip n
192.168.0.1 dev eth0 lladdr fa:16:3e:64:38:a8 REACHABLE
192.168.0.254 dev eth0 lladdr fa:fa:fa:fa:fa:01 STALE
更改網(wǎng)卡Mac地址
大部分場(chǎng)景中是不需要修改Mac地址的缴允,但有時(shí)你可能想隱藏真實(shí)的Mac地址(物理地址)荚守,這時(shí)可以修改Mac地址,修改Mac地址的命令如下
ip link set dev 接口名 address 新的Mac地址
下面以修改 lo
網(wǎng)絡(luò)接口的Mac地址為例來說明
[root@ecs-centos-7 ~]# ip l list lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
[root@ecs-centos-7 ~]# ip l set lo address fa:16:3e:e0:4f:b4
[root@ecs-centos-7 ~]# ip l list lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback fa:16:3e:e0:4f:b4 brd 00:00:00:00:00:00
從上面的例子中可以看出练般,lo
接口初始的Mac地址是 00:00:00:00:00:00
執(zhí)行 ip l set lo address fa:16:3e:e0:4f:b4
命令修改Mac地址健蕊,然后再執(zhí)行 ip l list lo
查看 lo
接口的信息,輸出的結(jié)果信息表明Mac地址修改成功
<mark style="box-sizing: border-box;">注意:如果當(dāng)前網(wǎng)絡(luò)接口上執(zhí)行上面的命令踢俄,當(dāng)前會(huì)話會(huì)中斷缩功,需要重啟機(jī)器才能恢復(fù),所以最好是在其他的網(wǎng)絡(luò)接口上測(cè)試</mark>
查看網(wǎng)絡(luò)統(tǒng)計(jì)信息
通過 ip -s link
命令可以查看網(wǎng)絡(luò)接口上的一些統(tǒng)計(jì)數(shù)據(jù)都办,比如接口上傳輸?shù)淖止?jié)數(shù)嫡锌、報(bào)文數(shù),錯(cuò)誤或者丟棄的報(bào)文數(shù)等等
[root@ecs-centos-7 ~]# ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
272 2 0 0 0 0
TX: bytes packets errors dropped carrier collsns
272 2 0 0 0 0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
47949 531 0 0 0 0
TX: bytes packets errors dropped carrier collsns
50816 492 0 0 0 0
[root@ecs-centos-7 ~]#
想查看更詳細(xì)的信息可以使用 ip -s -s link
命令, 這個(gè)在排除網(wǎng)絡(luò)故障時(shí)經(jīng)常用到
小結(jié)
本文介紹了ip
命令的常見用法琳钉,更多的用法請(qǐng)使用 man ip
命令查看