如何在Linux上使用ip命令

时间:2020-01-09 10:45:08  来源:igfitidea点击:

我们可以使用Linuxip命令即时配置IP地址,网络接口和路由规则。我们将向我们展示如何使用现代的经典ifconfig替代品(现已弃用)。

ip命令如何工作

使用" ip"命令,我们可以调整Linux计算机处理IP地址,网络接口控制器(NIC)和路由规则的方式。所做的更改也立即生效,我们无需重新启动。 ip命令可以做的比这更多,但我们将重点介绍本文中最常见的用法。

ip命令具有许多子命令,每个子命令都可用于某种对象,例如IP地址和路由。每个对象都有很多选项。正是这种丰富的功能为ip命令提供了执行精细任务所需的粒度。这不是斧头工作,而是需要一套手术刀。

我们将看以下对象:

  • 地址:IP地址和范围。

  • 链接:网络接口,例如有线连接和Wi-Fi适配器。

  • 路由:管理通过接口(链接)发送到"地址"的流量路由的规则。

将IP与地址配合使用

显然,我们首先必须知道要处理的设置。要发现计算机具有哪个IP地址,可以将" ip"命令与对象" address"一起使用。默认操作是" show",它列出了IP地址。我们也可以省略show并将其缩写为addr甚至a。

以下命令都是等效的:

ip address show
ip addr show
ip addr
ip a

我们看到了两个IP地址以及许多其他信息。 IP地址与网络接口控制器(NIC)关联。 ip命令试图提供帮助,并且也提供了大量有关接口的信息。

第一个IP地址是计算机内部用于通信的(内部)环回地址。第二个是计算机在局域网(LAN)上具有的实际(外部)IP地址。

让我们分解一下我们收到的所有信息:

  • lo:网络接口名称,为字符串。

  • <LOOPBACK,UP,LOWER_UP>:这是一个回送接口。它是" UP",表示可以运行。物理网络层(第一层)也已建立。

  • mtu 65536:最大传输单位。这是此接口可以传输的最大数据块的大小。

  • qdiscnoqueue:qdisc是一种排队机制。它计划数据包的传输。有不同的排队技术,称为学科。 noqueue规则意味着立即发送,请勿排队。这是虚拟设备的默认" qdisc"规则,例如环回地址。

  • 状态UNKNOWN:可以是" DOWN"(DOWN)(网络接口无法运行)," UNKNOWN"(网络接口可以运行但未连接任何设备)或者" UP"(网络可以运行并且存在连接)。

  • 组缺省值:接口可以按逻辑分组。默认值是将它们全部放在称为" default"的组中。

  • qlen 1000:传输队列的最大长度。

  • link / loopback:接口的媒体访问控制(MAC)地址。

  • inet 127.0.0.1/8:IP版本4地址。在正斜杠(/)之后的地址部分是代表子网掩码的无类域间路由表示法(CIDR),它表示在子网掩码中将多少个前导连续位设置为1. 表示八位。设置为1的8位二进制表示255,因此子网掩码是255.0.0.0。

  • 作用域主机:IP地址作用域。此IP地址仅在计算机(主机)内部有效。

  • lo:与该IP地址关联的接口。

  • valid_lft:有效生存期。对于由动态主机配置协议(DHCP)分配的IP版本4 IP地址,这是该IP地址被视为有效并且能够发出和接受连接请求的时间长度。

  • preferred_lft:首选寿命。对于DHCP分配的IP版本4 IP地址,这是IP地址可以不受限制地使用的时间。该值不得大于valid_lft的值。

  • inet6:IP版本6地址,"作用域"," valid_lft"和" preferred_lft"。

物理界面更有趣,如下所示:

  • enp0s3:网络接口名称,为字符串。 en代表以太网,p0是以太网卡的总线号,s3是插槽号。

  • <BROADCAST,MULTICAST,UP,LOWER_UP>:此接口支持广播和多播,并且接口为" UP"(可操作且已连接)。网络的硬件层(第一层)也是" UP"。

  • mtu 1500:此接口支持的最大传输单位。

  • qdisc fq_codel:调度程序正在使用一种称为"公平队列,受控延迟"的规则。它旨在为使用队列的所有流量提供公平的带宽份额。

  • 状态UP:接口可操作且已连接。

  • group default:该接口在默认接口组中。

  • qlen 1000:传输队列的最大长度。

  • link / ether:接口的MAC地址。

  • inet 192.168.4.26/24:IP版本4地址。 / 24告诉我们,子网掩码中有24个连续的前导位设置为1. 那是八位的三组。八位二进制数等于255;因此,子网掩码是255.255.255.0。

  • brd 192.168.4.255:此子网的广播地址。

  • 全球范围:IP地址在此网络上的所有地方均有效。

  • 动态:接口故障时IP地址丢失。

  • noprefixroute:添加此IP地址后,请勿在路由表中创建路由。如果某人想使用该IP地址使用某条路由,则必须手动添加。同样,如果此IP地址被删除,则不要寻找要删除的路由。

  • enp0s3:与此IP地址关联的接口。

  • valid_lft:有效生存期。 IP地址被视为有效的时间; 86,240秒是23小时57分钟。

  • preferred_lft:首选寿命。 IP地址运行的时间没有任何限制。

  • inet6:IP版本6地址,"作用域"," valid_lft"和" preferred_lft"。

仅显示IPv4或者IPv6地址

如果要将输出限制为IP版本4地址,则可以使用-4选项,如下所示:

ip -4 addr

如果要将输出限制为IP版本6地址,则可以使用-6选项,如下所示:

ip -6 addr

显示单个界面的信息

如果要查看单个接口的IP地址信息,可以使用show和dev选项,并命名接口,如下所示:

ip addr show dev lo
ip addr show dev enp0s3

我们也可以使用-4或者-6标志进一步优化输出,这样我们就只会看到我们感兴趣的内容。

如果要查看与接口" enp0s3"上的地址相关的IP版本4信息,请键入以下命令:

ip -4 addr show dev enp0s3

添加IP地址

我们可以使用add和dev选项将IP地址添加到接口。我们只需要告诉" ip"命令要添加的IP地址,以及将其添加到的接口即可。

我们将把IP地址192.168.4.44添加到enp0s3接口。我们还必须提供子网掩码的CIDR表示法。

我们输入以下内容:

sudo ip addr add 192.168.4.44/24 dev enp0s3

我们键入以下内容以再次查看此接口上的IP版本4 IP地址:

ip -4 addr show dev enp0s3

该网络接口上存在新的IP地址。我们跳到另一台计算机上,并使用以下命令查看是否可以对新IP地址执行ping操作:

ping 192.168.4.44

IP地址响应并向ping发送回确认。通过一个简单的" ip"命令,我们的新IP地址即已启动并正在运行。

删除IP地址

要删除一个IP地址,该命令与添加一个IP地址的命令几乎相同,只不过我们用del替换了add,如下所示:

sudo ip addr del 192.168.4.44/24 dev enp0s3

如果键入以下内容进行检查,则会看到新的IP地址已被删除:

ip -4 addr show dev enp0s3

通过网络接口使用ip

我们可以使用link对象来检查和使用网络接口。键入以下命令以查看计算机上安装的接口:

ip link show

要查看单个网络接口,只需将其名称添加到命令中,如下所示:

ip link show enp0s3

启动和停止链接

我们可以将" set"选项与" up"或者" down"一起使用来停止或者启动网络接口选项。我们还必须使用sudo,如下所示:

sudo ip link set enp0s3 down

我们键入以下内容来查看网络接口:

ip link show enp0s3

网络接口的状态为" DOWN"。我们可以使用up选项重新启动网络接口,如下所示:

sudo ip link set enp0s3 up

我们键入以下内容对网络接口的状态进行另一项快速检查:

ip link show enp0s3

网络接口已重新启动,并且状态显示为" UP"。

在路由中使用ip

使用route对象可以检查和处理路由。路由定义到不同IP地址的网络流量在何处转发以及通过哪个网络接口。

如果目标计算机或者设备与发送计算机共享网络,则发送计算机可以将数据包直接转发给它。

但是,如果目标设备未直接连接,则发送方计算机会将数据包转发到默认路由器。然后,路由器决定将数据包发送到何处。

要查看计算机上定义的路由,请键入以下命令:

ip route

让我们看一下收到的信息:

  • default:默认规则。如果没有其他规则与发送的规则匹配,则使用此路由。

  • 通过192.168.4.1:通过设备在192.168.4.1路由数据包。这是该网络上默认路由器的IP地址。

  • dev enp0s3:使用此网络接口将数据包发送到路由器。

  • protodhcp:路由协议标识符。 DHCP表示将动态确定路由。

  • metric 100:与其他路由相比,该路由的优先级的指示。与具有较高度量的路由相比,优先使用具有较低度量的路由。我们可以使用它通过Wi-Fi优先使用有线网络接口。

第二条路由将流量控制到IP范围169.254.0.0/16. 这是一个零配置网络,这意味着它会尝试针对Intranet通信进行自我配置。但是,我们不能使用它在直接网络之外发送数据包。

零配置网络背后的原理是它们不依赖于存在的DHCP和其他活动的服务。他们只需要查看TCP / IP即可自我识别网络上的每个其他设备。

让我们来看看:

  • 169.254.0.0/16:此路由规则控制的IP地址范围。如果计算机在此IP范围内进行通信,则该规则将生效。

  • dev enp0s3:此路由控制的流量将使用的网络接口。

  • 作用域链接:作用域是"链接",这意味着作用域仅限于此计算机直接连接到的网络。

  • 指标1000:这是一个很高的指标,不是首选路线。

第三条路由将流量控制到IP地址范围192.168.4.0/24. 这是此计算机连接到的本地网络的IP地址范围。它用于跨网络但在该网络内部的通信。

让我们分解一下:

  • 192.168.4.1/24:此路由规则控制的IP地址范围。如果计算机在此IP范围内通信,则此规则将触发并控制数据包路由。

  • dev enp0s3:此路由将通过其发送数据包的接口。

  • proto内核:内核在自动配置期间创建的路由。

  • 作用域链接:作用域是"链接",这意味着作用域仅限于此计算机所连接的直接网络。

  • src 192.168.4.26:此路由发送的数据包所源自的IP地址。

  • 度量标准100:此低度量标准表示首选路由。

显示一条路线的信息

如果要关注特定路由的详细信息,可以将" list"选项和路由的IP地址范围添加到命令中,如下所示:

ip route list 192.168.4.0/24

添加路线

我们刚刚在这台计算机上添加了新的网络接口卡。我们输入以下内容,并看到它显示为enp0s8

ip link show

我们将向计算机添加一条新路径以使用此新界面。首先,我们键入以下内容将IP地址与接口相关联:

sudo ip addr add 192.168.121.1/24 dev enp0s8

使用现有IP地址的默认路由将添加到新接口。我们使用" delete"选项,如下所示,以删除路线并提供其详细信息:

sudo ip route delete default via 192.168.4.1 dev enp0s8

现在,我们将使用add选项添加新路线。新接口将处理192.168.121.0/24 IP地址范围内的网络流量。我们将其设为100。由于这将是处理此流量的唯一路线,因此该指标在很大程度上是学术性的。

我们输入以下内容:

sudo ip route add 192.168.121.0/24 dev enp0s8 metric 100

现在,我们键入以下内容以查看它给我们带来了什么:

ip route

我们的新路线现已到位。但是,我们仍然有指向接口" enp0s8"的192.168.4.0/24路由,我们输入以下内容将其删除:

sudo ip route delete 192.168.4.0/24 dev enp0s8

现在,我们应该有一条新路由,该路由通过enp0s8接口指向所有发往IP地址192.168.121.0/24的流量。它也应该是使用我们新界面的唯一路由。

我们输入以下内容进行确认:

ip route