不要再用ifconfig了,Linux ip命令配置网络要注意的事项

Linux 的ip命令让监控Linux的网络配置变得简单,但你需要了解一些注意事项。

在现在数据中心内,Windows管理员偶尔也需要处理Linux系统。比如说当一个供应商提供了一款,但这款应用需要运行在VM内的Linux OS时。初学者需要知道一些基础的Linux网络配置方法。

 

在分析Linux的网络配置之前,你首先需要知道目前都在使用什么方法。Linux的ip命令是其中一种方法,它提供了一系列的选项来查看机器的当前网络配置。

ip命令需要和参数一起使用才能指明精确的显示内容。

使用ip addr可以查看当前的网络;

使用ip link可以分析网卡的状态;

使用ip route可以查看路由表。

所有这些命令都可以和show命令进行搭配。

ip address show(见示例1)可以显示当前的IP地址配置;

ip link show可以告诉你链路的统计信息;

ip route show会显示当前的路由表。

示例1,以下的输出展现了使用ip addr show命令来查看当前网卡的IP地址配置

[root@server1 ~]# ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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 qlen 1000
link/ether 52:54:00:95:7f:5f brd ff:ff:ff:ff:ff:ff
inet 192.168.122.210/24 brd 192.168.122.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fd00::210/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe95:7f5f/64 scope link
valid_lft forever preferred_lft forever

在这个输出内容里面,ip addr show命令展现了你的Linux网络配置中所有接口的信息。例1中展现了两个网卡。lo网卡是它的回环接口,是给进程用来做基于IP协议的通讯的。比较重要的接口是eth0,是这台服务器上第一个以太网接口。你可以从中看到有三个比较重要的信息:MAC地址(用link/ether表示),IPv4地址以及IPv6地址。可以通过验证这些信息来确认是否与你需要使用的一致。

但不是所有的Linux系统都会将标准的以太网卡显示为eth0。新的Linux内核会使用biosdevname功能,它会使辨别一张特定的网卡更加容易。设备的名称是唯一的,类似于eno1677736,不过这个命名在不同的Linux系统间也不是标准统一的。因此如果你在其他设备上看到了类似eth0命名的设备,不要惊慌,这是预料中并且是正常的事情。

另一个比较有用的来查看Linux网络配置的命令是ip –s link。这个命令展示了从一个网卡发出去的数据包的统计信息。Linux的ip –s link命令(查看示例2)在你遭遇网卡故障并且希望能确保网卡在传输中没有丢包的时候会有帮助。

示例2,ip -s link的输出可以让管理员分析网络数据包统计数据

[root@server1 ~]# ip -s link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes  packets  errors  dropped overrun mcast
97196      270      0       0       0       0
TX: bytes  packets  errors  dropped carrier collsns
97196      270      0       0       0       0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 52:54:00:95:7f:5f brd ff:ff:ff:ff:ff:ff
RX: bytes  packets  errors  dropped overrun mcast
71870878   412311   0       0       0       0
TX: bytes  packets  errors  dropped carrier collsns
33588506   290604   0       0       0       0

当检查完网络配置之后,可能还需要检查一下路由。可以使用ip route show(见示例3)来查看当前的路由表。你将会看到默认路由,它表明了当机器需要访问其他网络的时候需要经过的网关的IP地址。

示例3:Linux的ip route show命令可以帮助你检查路由表配置

[root@server1 ~]# ip route show

default via 192.168.122.1 dev eth0  proto static  metric 100
192.168.122.0/24 dev eth0  proto kernel  scope link  src 192.168.122.210  metric 100

还用不用ifconfig命令?

早在10年前,在Linux服务器上使用ifconfig命令查看当前网络信息这种方法已经开始弃用。那使用它有什么不好呢?Linux网络栈已经从全盛时期的ifconfig发生变化了,如果现在还在使用ifconfig,那么你会错过很多信息。随着网络栈的变化,ip命令被引进来管理Linux网络配置的各个方面,而ifconfig命令的开发也再没有继续了。

Linux的ifconfig命令并不准确。举个例子,当管理员希望在网卡上配置额外的IP地址时,如果这个地址是使用ip常规命令配置的,那么你使用ifconfig将看不到这个IP地址。正因为如此,在现在很多Linux发行版本中,ifconfig命令已经不再包含于其中了。


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注