ip 命令用法归纳
Table of Contents
ip 是 iproute2 工具包里面的一个命令行工具,用于配置网络接口以及路由表。
iproute2 正在逐步取代旧的 net-tools(ifconfig),所以是时候学习下 iproute2 的使用方法
接口信息
查看接口状态和详细统计
不指定接口则显示所有接口的详细统计
ip -d -s link show [dev <接口名>]
查看 ens34 接口信息
[root: ~]# ip -d -s -s link show ens34 3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 88:32:9b:ca:3f:4a brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64 RX: bytes packets errors dropped overrun mcast 581645 6100 0 0 0 0 RX errors: length crc frame fifo missed 0 0 0 0 0 TX: bytes packets errors dropped carrier collsns 3743584 3939 0 0 0 0 TX errors: aborted fifo window heartbeat transns 0 0 0 0 2
IP 地址
查看接口 IP 地址
不指定接口则显示所有接口的 IP 地址
ip addr show [dev <接口名>]
查看接口 IPv6 地址
不指定接口则显示所有接口的 IPv6 地址
ip -6 addr show [dev <接口名>]
为接口添加 IP 地址
ip addr add <IP 地址/前缀长度> [broadcast <广播地址>] dev <接口名>
为 ens34 添加 IP 地址 192.168.1.111/24 并检查
[root: ~]# ip addr add 192.168.1.111/24 dev ens34 3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 88:32:9b:ca:3f:4a brd ff:ff:ff:ff:ff:ff inet 10.16.1.2/24 brd 10.16.1.255 scope global ens34 valid_lft forever preferred_lft forever inet 192.168.1.111/24 scope global ens34 valid_lft forever preferred_lft forever inet6 fe80::f65c:89ff:fecd:3ab5/64 scope link valid_lft forever preferred_lft forever
为接口删除 IP 地址
ip addr del <IP 地址/前缀长度> dev <接口名>
为接口删除 IPv6 地址
ip -6 addr del <IP 地址/前缀长度> dev <接口名>
接口
启用接口
ip link set <接口名> up
禁用接口
ip link set <接口名> down
设置接口 MAC 地址
ip link set <接口名> address <值>
设置前请先禁用接口
设置接口 MTU
ip link set <接口名> mtu <值>
设置前请先禁用接口
把 ens33 的 MTU 改成 9000 并检查:
[root: ~]# ip link show dev ens33 #修改前 2: ens33: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000 link/ether 88:32:9b:ca:3f:49 brd ff:ff:ff:ff:ff:ff ============================================ [root: ~]# ip link set ens33 mtu 9000 [root: ~]# ip link show dev ens33 #修改后 2: ens33: <BROADCAST,MULTICAST> mtu 9000 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000 link/ether 88:32:9b:ca:3f:49 brd ff:ff:ff:ff:ff:ff
VLAN
添加 802.1Q VLAN 子接口
ip link add link <接口名> name <子接口名> type vlan id <VLAN ID>
为 ens33 添加 VLAN100 子接口并检查:
[root: ~]# ip link add link ens33 name ens33.100 type vlan id 100 [root: ~]# ip -d -s -s link show ens33.100 7: ens33.100@ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP mode DEFAULT qlen 1000 link/ether 88:32:9b:ca:3f:aa brd ff:ff:ff:ff:ff:ff promiscuity 0 vlan protocol 802.1Q id 100 <REORDER_HDR> addrgenmode eui64 RX: bytes packets errors dropped overrun mcast 0 0 0 0 0 0 RX errors: length crc frame fifo missed 0 0 0 0 0 TX: bytes packets errors dropped carrier collsns 738 9 0 0 0 0 TX errors: aborted fifo window heartbeat transns 0 0 0 0 3
删除 802.1Q VLAN 子接口
ip link del <接口名>
路由表
查看路由表
不指定接口则显示所有接口的路由表
ip route show [dev <接口名>]
查看指定目标地址用的是哪条路由表
ip route get <目标 IP>
查看目标地址为 8.8.8.8 用的是哪条路由表
[root: ~]# ip route get 8.8.8.8 8.8.8.8 via 192.168.1.1 dev ens33 src 192.168.1.143 cache #下一跳是 192.168.1.1,出接口是 ens33,接口的 IP 是 192.168.1.143。
添加路由表
ip route add <目标 IP 地址/前缀长度> via <下一跳> [dev <出接口>]
添加默认网关
ip route add default via <默认网关> [dev <出接口>]
删除路由表
ip route del <目标 IP 地址/前缀长度> via <下一跳> [dev <出接口>]
ARP
查看 ARP 表
不指定接口则显示所有接口的 ARP 表
ip neigh show [dev <接口名>]
添加永久 ARP 条目
ip neigh add <IP 地址> lladdr <以冒号分割的 MAC 地址> dev <接口名> nud permanent
把动态 ARP 条目转换为永久 ARP 条目(仅限已存在条目
ip neigh change <IP 地址> dev <接口名> nud permanent
删除 ARP 条目
ip neigh del <IP 地址> dev <接口名>
清空 ARP 表(不影响永久条目)
ip neigh flush all