ip 命令 之 四
ip和它的作者
在计算机科学中,大家一提到ip这个词,第一个想到的大概就是 Internet Protocol Addree,即IP地址。
在当今社会,也有很多人会想到 Interlectual Property,即知识产权。我们讨论的是Linux系统iproute2软件包中的ip命令。一个用来管理网络设备和路由的强大命令。
被 ip 取代的命令
展示服务器的网络接口信息
以前,我们总是用ifconfig 来查看服务器的网络接口信息,而如今,我们用ip命令来实现:
这台服务器上的各个网络接口的信息,完整的展示在屏幕上了,包括相应的IP地址,MAC地址,等待。
为网络接口添加一个IP地址
作为系统网络管理员,都会遇到需要为服务器网卡添加IP地址的任务,这是一项基本的技能。
开始为ens39网络接口添加IP地址
[[email protected] ~]# ip addr add 192.168.146.110/24 dev ens39
[[email protected] ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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
inet 192.168.0.127/32 brd 192.168.0.127 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:bb:96:61 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.128/24 brd 192.168.200.255 scope global dynamic ens32
valid_lft 1219sec preferred_lft 1219sec
inet6 fe80::20c:29ff:febb:9661/64 scope link
valid_lft forever preferred_lft forever
3: ens39: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:bb:96:75 brd ff:ff:ff:ff:ff:ff
inet 192.168.146.129/24 brd 192.168.146.255 scope global dynamic ens39
valid_lft 1039sec preferred_lft 1039sec
inet 192.168.146.110/24 scope global secondary ens39
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:febb:9675/64 scope link
valid_lft forever preferred_lft forever可见,已经生效了。我们这时可以通过这个IP地址进行访问这台服务器了。
[[email protected] ~]# ssh 192.168.146.110
The authenticity of host '192.168.146.110 (192.168.146.110)' can't be established.
ECDSA key fingerprint is SHA256:wkhBuW9+Sr3Prq0zsDBmybLH4DrJP58xuiGc8oY1hKw.
ECDSA key fingerprint is MD5:81:e7:e2:74:23:00:6f:23:c0:c2:0d:d2:77:9d:9d:e8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.146.110' (ECDSA) to the list of known hosts.
[email protected]'s password:
Last login: Mon Apr 8 08:38:45 2019 from 192.168.146.6
针对一个网络接口删除其IP地址
我们不仅可以为网络添加IP地址,也可以删除IP地址。
[[email protected] ~]# ip addr del 192.168.146.110/24 dev ens39
[[email protected] ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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
inet 192.168.0.127/32 brd 192.168.0.127 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:bb:96:61 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.128/24 brd 192.168.200.255 scope global dynamic ens32
valid_lft 1302sec preferred_lft 1302sec
inet6 fe80::20c:29ff:febb:9661/64 scope link
valid_lft forever preferred_lft forever
3: ens39: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:bb:96:75 brd ff:ff:ff:ff:ff:ff
inet 192.168.146.129/24 brd 192.168.146.255 scope global dynamic ens39
valid_lft 1176sec preferred_lft 1176sec
inet6 fe80::20c:29ff:febb:9675/64 scope link
valid_lft forever preferred_lft forever
网卡的禁用和**
在系统网络运维过程中,我们有时需要将一个网卡状态设置为禁用状态,以便对系统进行排错或者对网卡进行维修,这时候我们可以用ip link命令来控制网卡的禁用和**。
当然,禁用和**网卡属于高危动作,一定要确认之后才进行此类操作。
禁用ens39这个网卡接口
[[email protected] ~]# ip link set ens39 down
**ens39这个网卡接口
[[email protected] ~]# ip link set ens39 up
查看路由表
查看系统的路由信息
[[email protected] ~]# ip route show
default via 192.168.200.2 dev ens32 proto static metric 100
192.168.146.0/24 dev ens39 proto kernel scope link src 192.168.146.129 metric 100
192.168.200.0/24 dev ens32 proto kernel scope link src 192.168.200.128 metric 100增加一条路由规则
虽然在大型网络中,我们都是采用动态路由方式,但是静态路由仍有它的优势。
静态路由的优势可以概括为以下三个方面:
- 由于不必交换路由信息,所以节省了一定的网络带宽。
- 由于路由器不需要定期更新路由,从而降低了路由器的性能损耗。
- 由于手工配置,因此可以一定程度上提升路由的安全性。
通过add 动作来增加一条路由规则:
[[email protected] ~]# ip route add 192.168.2.0/24 via 192.168.146.254
[[email protected] ~]# ip route show
default via 192.168.200.2 dev ens32 proto static metric 100
192.168.2.0/24 via 192.168.146.254 dev ens39
192.168.146.0/24 dev ens39 proto kernel scope link src 192.168.146.129 metric 100
192.168.200.0/24 dev ens32 proto kernel scope link src 192.168.200.128 metric 100只设定设备转发
[[email protected] ~]# ip route add 192.168.146.5 dev ens39
[[email protected] ~]# ip route show
default via 192.168.200.2 dev ens32 proto static metric 100
192.168.2.0/24 via 192.168.146.254 dev ens39
192.168.146.0/24 dev ens39 proto kernel scope link src 192.168.146.129 metric 100
192.168.146.5 dev ens39 scope link
192.168.200.0/24 dev ens32 proto kernel scope link src 192.168.200.128 metric 100删除手工配置的路由规则
[[email protected] ~]# ip route del 192.168.146.5 dev ens39
[[email protected] ~]# ip route del 192.168.2.0/24 via 192.168.146.254
[[email protected] ~]# ip route show
default via 192.168.200.2 dev ens32 proto static metric 100
192.168.146.0/24 dev ens39 proto kernel scope link src 192.168.146.129 metric 100
192.168.200.0/24 dev ens32 proto kernel scope link src 192.168.200.128 metric 100静态路由的劣势也是显而易见的,纯手工配置对于几十台路由器的网络来说,维护成本也是无法承受的,因此,应用场景也是相对的狭隘。基本只是在早期配置无盘网络、做网络路由实验或者小网络范围内才会使用静态路由方式。
指定默认网关
默认网关的作用很简单,很明确,就是一台主机如果找不到匹配的转发规则。那么就把数据转发给默认指定的网关,由这个网关来处理数据包。
默认网关是不能随便指定的,一定要指定明确,否则就会造成本机网络连通方面的问题。
[[email protected] ~]# ip route show
default via 192.168.200.2 dev ens32 proto static metric 100
192.168.146.0/24 dev ens39 proto kernel scope link src 192.168.146.129 metric 100
192.168.200.0/24 dev ens32 proto kernel scope link src 192.168.200.128 metric 100
[[email protected] ~]# ip route add default via 192.168.200.6
[[email protected] ~]# ip route show
default via 192.168.200.6 dev ens32
default via 192.168.200.2 dev ens32 proto static metric 100
192.168.146.0/24 dev ens39 proto kernel scope link src 192.168.146.129 metric 100
192.168.200.0/24 dev ens32 proto kernel scope link src 192.168.200.128 metric 100
[[email protected] ~]# ip route del default via 192.168.200.6
ip 操作 ARP 表
ARP,即Address Resolution Protocol,用来进行IP地址和MAC地址的翻译工作。
查看本地服务器的ARP表
[[email protected] ~]# ip neigh show
192.168.200.2 dev ens32 lladdr 00:50:56:e1:98:eb REACHABLE
192.168.200.254 dev ens32 lladdr 00:50:56:ef:35:f2 DELAY
192.168.200.6 dev ens32 FAILED
192.168.146.254 dev ens39 lladdr 00:50:56:ed:5e:12 STALE
192.168.146.6 dev ens39 lladdr 00:50:56:c0:00:01 DELAY
192.168.146.1 dev ens39 FAILED[[email protected] ~]# ip neigh show
192.168.200.2 dev ens32 lladdr 00:50:56:e1:98:eb STALE
192.168.200.254 dev ens32 lladdr 00:50:56:ef:35:f2 STALE
192.168.200.6 dev ens32 FAILED
192.168.146.254 dev ens39 lladdr 00:50:56:ed:5e:12 STALE
192.168.146.6 dev ens39 lladdr 00:50:56:c0:00:01 DELAY
192.168.146.1 dev ens39 FAILED
仔细观察的话,会发现ARP表的输出信息的最后(标蓝色)一列,从DELAY 变成了 REACHABLE,是不是很奇怪,ARP表为什么还会动态变化呢?原来,ARP表的这一列表示的是邻居的可达性,它有三个可能的值。
- STALE:邻居存在,但目前处于不可达状态。
- DELAY:探测邻居可达与否的数据包已经发出,正在等待邻居的回复。
- REACHABLE:邻居存在,而且是可达的。