目录
IP命令格式
ip options object {command | help}
options 可选项:
-V,显示版本
-h,符合人类阅读习惯显示输出
-f,-family {inet, inet6, link} 强制使用指定的协议族
-4,指定使用的网络层协议是IPv4协议
-6,指定使用的网络层协议是IPv6协议
-B,指定使用的网络层协议是Bridge协议
-D,指定使用的网络层协议是decnet协议
-M,指定使用的网络层协议是mpls协议
-0,指定使用的网络层协议是link协议
-i,指定使用的网络层协议是ipx协议
-d,输出更详细的信息
-o,-oneline,输出信息每条记录输出一行,即使内容较多也不换行显示
-r,-resolve,显示主机时,不使用IP地址,而使用主机的域名
-l,-loops,指定“ip地址刷新”的最大循环数。如果设置为0,那么将会一直尝试,直到所哟地址被移除。
-t,-timestamp,当使用监视器选项时,输出时间戳
-a,-all,执行指定命令给所有对象(如果命令支持这个选项)
-c,-color,使用颜色输出
object可选项:
address(addr):网络设备的IP(v4或者v6)地址信息
link :网络设备信息
maddress:多播地址
mourte:组播路由缓存条目
monitor:监控网络链接消息
netns:管理网络命名空间
ntable:管理邻居表缓存操作
neighbour:邻居表
route:路由表
rule:IP策略
tunnel:IP隧道
tuntap:管理tun/tap设备
command 选项:
add:新增
delete:删除
show(or list):显示
set:设置参数
IP命令很强大,但是常用的只有 route(路由) address(网络设备的IP(v4或者v6)地址信息)和 link(网络设备信息) 这三个。
route命令
route命令主要是显示和处理关于路由相关的操作。
ip route show或者 ip route list 主要显示本机的路由信息
[root@cwdata-log-01 ~]# ip route list
default via 172.16.10.1 dev enp1s0 proto dhcp metric 100
169.254.169.254 via 172.16.10.3 dev enp1s0 proto dhcp metric 100
172.16.10.0/24 dev enp1s0 proto kernel scope link src 172.16.10.31 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.64.0/20 dev br-b6015ebbd217 proto kernel scope link src 192.168.64.1
其中第一行的意思是:默认路由 通过enp1s0网络设备(网卡)经由网关172.16.0.1 发出。
第二行的意思是:发送到169.254.169.254这个网络的包 通过enp1s0网络设备(网卡) 经由网关172.16.0.3 发出
第三行的意思是:发送到172.16.10.0/24这个网段的包,通过enp1s0网络设备(网卡)发出, src 172.16.10.31表示改网卡的IP是172.16.10.31 metric代表路径距离,如果一个ip路由到相同的网络,且网络前缀相同时,metric值越小则优先级越高。
其中route还有一种查询方式
[root@cwdata-log-01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.10.1 0.0.0.0 UG 100 0 0 enp1s0
169.254.169.254 172.16.10.3 255.255.255.255 UGH 100 0 0 enp1s0
172.16.10.0 0.0.0.0 255.255.255.0 U 100 0 0 enp1s0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.64.0 0.0.0.0 255.255.240.0 U 0 0 0 br-b6015ebbd217
其中default和0.0.0.0是一个意思,都代表默认网关。
默认网关是一种特殊网关:0.0.0.0/0 代表网络掩码全是0,用全0掩码和目的地址进行AND运算的结果必然全是0,这样和转发表中0.0.0.0/0网段全匹配,这样就按照转发表找到下一跳的路由。而根据路由最长匹配原则,当一个目的地址找不到对应网关时,就会和默认网关的网段进行匹配(默认网关的网络段是最段的)。
路由最长匹配原则:根据IP斜线划分法,把IP分为两部分,网络前缀(网段)和主机,而网段越长,主机号越短,而路由就更具体,为了快速找到目的地址,可以根据前缀的长短进行排序,前缀越长的排在前面,当前面网段匹配上时,就不再进行后续匹配。
169.254.169.254 代表的是特定主机路由。特定主机路由的子网掩码(Genmask)必定是255.255.255.255 用169.254.169.254/32表示。特定主机路由没用实际意义,主要用于测试。
其中默认路由和主机路由是网卡自带的。每安装一个网卡必然会有这两个。
ip route add 目标网络/掩码 via 网关 dev 网络接口
ip route add 172.16.10.0/28 via 172.16.10.241 dev enp1s0
ip route list
default via 172.16.10.1 dev enp1s0 proto dhcp metric 100
169.254.169.254 via 172.16.10.3 dev enp1s0 proto dhcp metric 100
172.16.10.0/28 via 172.16.10.241 dev enp1s0
172.16.10.0/24 dev enp1s0 proto kernel scope link src 172.16.10.31 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.64.0/20 dev br-b6015ebbd217 proto kernel scope link src 192.168.64.1
上述命令是给172.16.10.0/24网络内部再划分一个子网络,其中 via代表经由 dev后面跟着网络接口,上面的add代表的意思,添加一个网络路由,发送172.16.10.0/24网段的包,经由172.16.10.241路径 通过enp1s0接口发出
删除路由
ip route del 172.16.10.0/28 via 172.16.10.241 dev enp1s0
addr命令
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: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether fa:16:3e:3c:dd:d9 brd ff:ff:ff:ff:ff:ff
inet 172.16.10.31/24 brd 172.16.10.255 scope global noprefixroute enp1s0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe3c:ddd9/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:16:41:2b:66 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
4: br-5dde4c1dea99: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
link/ether 02:42:e5:ec:2f:49 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 brd 172.18.255.255 scope global br-5dde4c1dea99
valid_lft forever preferred_lft forever
157: br-b6015ebbd217: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:3b:2d:eb:5a brd ff:ff:ff:ff:ff:ff
inet 192.168.64.1/20 brd 192.168.79.255 scope global br-b6015ebbd217
valid_lft forever preferred_lft forever
inet6 fe80::42:3bff:fe2d:eb5a/64 scope link
valid_lft forever preferred_lft forever
163: veth2314389@if162: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-b6015ebbd217 state UP group default
link/ether 6e:d9:28:b6:03:18 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::6cd9:28ff:feb6:318/64 scope link
valid_lft forever preferred_lft forever
io代表回环网络接口
enp代表以太网卡网络接口
docker0代表容器的网络接口
veth一般是linux的veth-pair类型的虚拟网络接口
br一般代表桥接或者网桥接口
brd代表广播地址
link/ether mac地址,veth类型的网络接口中没有ip地址,是因为该网络接口只是工作在链路层,通mac地址进行帧的转发,所以没有IP
LOWER_UP表示网线插着
BROADCAST 表示这个网可以发送广播包;MULTICAST 表示网卡可以发送多播
UP 表示网卡处于启动的状态;
MTU1500是指最大传输单元 MTU 为 1500,这是以太网的默认值。MTU 是二层 MAC 层的概念
scope global/host
对于 eth0 这张网卡来讲,是 global,说明这张网卡是可以对外的,可以接收来自各个地方的包
对于 lo 来讲,是 host,说明这张网卡仅仅可以供本机相互通信。
ip addr add ip/netmask dev 网口名称
ip addr add 172.16.10.241/28 dev enp1s0
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether fa:16:3e:3c:dd:d9 brd ff:ff:ff:ff:ff:ff
inet 172.16.10.31/24 brd 172.16.10.255 scope global noprefixroute enp1s0
valid_lft forever preferred_lft forever
inet 192.168.88.0/24 scope global enp1s0
valid_lft forever preferred_lft forever
inet 172.16.10.241/28 scope global enp1s0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe3c:ddd9/64 scope link
上图是给enp1s0设置多个IP地址
link 命令:
link 即链路的意思,该命令主要用来查看和管理网络设备接口。
该命令最长用的是创建veth_pair
ip link set
ip link set DEVICE { up | down | arp { on | off }
| name NEWNAME | address LLADDR }
选项说明:
dev DEVICE:指定要操作的设备名
up and down:启动或停用该设备
arp on or arp off:启用或禁用该设备的arp协议
name NAME:修改指定设备的名称,建议不要在该接口处于运行状态或已分配IP地址时重命名
address LLADDRESS:设置指定接口的MAC地址
-
// 设置mac地址 ip link set eth1 address 00:0c:29:f3:33:77 //禁用 ip link set eth1 down //启用 ip link set eth1 up
总结:
由于我们大多数对window操作比较熟悉,而对linux操作部熟悉,导致读于网络的link addr route概念上不容易区分,我把这三者和window操作做类比如下:
ip link 操作网络接口,其实相当于window中对网络的操作,比如禁用网络启用网络
ip addr 相当于window对网络配置Ip 子网掩码
ip route 相当于window配置网关
本次文章涉及的概念名词有:
网络接口,虚拟网络接口,路由,网关(默认网关,主机网关),IP ,网络协议
放在一起说,是为了有意识的进行比较。