如何在 Linux 上使用 ip 命令如何在 Linux 上使用 ip 命令如何在 Linux 上使用 ip 命令如何在 Linux 上使用 ip 命令
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上使用 ip 命令

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

ip 命令的工作原理

使用 ip 命令,您可以调整 Linux 计算机处理 IP 地址、网络接口控制器 (NIC) 和路由规则的方式。这些更改也会立即生效——您不必重新启动。 ip 命令的功能远不止于此,但我们将在本文中重点介绍最常见的用途。

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

我们将查看以下对象:

  • 地址:IP地址和范围。
  • 链接:网络接口,例如有线连接和 Wi-Fi 适配器。
  • 路由:管理通过接口(链接)发送到地址的流量路由的规则。

将 ip 与地址一起使用

显然,您首先必须知道您正在处理的设置。要发现您的计算机有哪些 IP 地址,您可以使用带有对象 address 的 ip 命令。默认操作是 show,它列出了 IP 地址。您也可以省略 show 并将 address 缩写为“addr”甚至“a”。

以下命令都是等效的:

ip address show
ip addr show
ip addr
ip a

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

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

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

  • lo:字符串形式的网络接口名称。
  • :这是一个环回接口。它是 UP,表示它可以运行。物理网络层(第一层)也启动了。
  • mtu 65536:最大传输单元。这是此接口可以传输的最大数据块的大小。
  • qdisc noqueue: qdisc 是一种排队机制。它安排数据包的传输。有不同的排队技术称为学科。 noqueue 规则意味着“立即发送,不排队”。这是虚拟设备的默认 qdisc 规程,例如环回地址。
  • state UNKNOWN:这可以是DOWN(网络接口不可操作),UNKNOWN(网络接口可操作但什么都没有已连接)或 UP(网络正常运行并且有连接)。
  • group default:接口可以按逻辑分组。默认是将它们全部放在一个名为“默认”的组中。
  • qlen 1000:传输队列的最大长度。
  • link/loopback:接口的媒体访问控制 (MAC) 地址。
  • inet 127.0.0.1/8: IP 版本 4 地址。正斜杠 (/) 之后的地址部分是表示子网掩码的无类域间路由表示法 (CIDR)。它指示子网掩码中有多少前导连续位被设置为 1。八的值表示八位。 8位设为1表示二进制为255,所以子网掩码为255.0.0.0。
  • scope host: IP 地址范围。此 IP 地址仅在计算机(“主机”)内部有效。
  • lo:与此 IP 地址关联的接口。
  • valid_lft:有效生命周期。对于由动态主机配置协议 (DHCP) 分配的 IP 版本 4 IP 地址,这是 IP 地址被视为有效且能够发出和接受连接请求的时间长度。
  • preferred_lft: 首选生命周期。对于由 DHCP 分配的 IP 版本 4 IP 地址,这是 IP 地址可以不受限制地使用的时间量。这绝不能大于 valid_lft 值。
  • inet6:IP 版本 6 地址、scope、valid_lft 和 preferred_lft。

物理接口更有趣,如下所示:

  • enp0s3: 字符串形式的网络接口名称。 “en”代表以太网,“p0”是以太网卡的总线号,“s3”是插槽号。
  • :此接口支持广播和多播,接口为UP(可操作且已连接)。网络的硬件层(第一层)也是UP。
  • mtu 1500:该接口支持的最大传输单元。
  • qdisc fq_codel:调度器使用一种叫做“公平排队,受控延迟”的规则。它旨在为使用该队列的所有流量提供公平的带宽份额。
  • 状态 UP:接口可操作且已连接。
  • 默认组:此接口在“默认”接口组中。
  • 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 地址、scope、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 地址出现在该网络接口上。我们跳转到另一台计算机并使用以下命令查看我们是否可以 ping 新 IP 地址:

ping 192.168.4.44

IP 地址响应并发回对 ping 的确认。我们的新 IP 地址在一个简单的 ip 命令后启动并运行。

删除 IP 地址

删除 IP 地址的命令与添加 IP 地址的命令几乎相同,只是将 add 替换为 del,如下所示:

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

启动和停止链接

您可以使用带有 up 或 down 的 set 选项来停止或启动网络接口选项。您还必须使用 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

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

  • 默认:默认规则。如果其他规则都不匹配发送的内容,则使用此路由。
  • 通过 192.168.4.1:通过 192.168.4.1 的设备路由数据包。这是此网络上默认路由器的 IP 地址。
  • dev enp0s3:使用此网络接口将数据包发送到路由器。
  • proto dhcp: 路由协议标识符。 DHCP 表示路由将动态确定。
  • metric 100:与其他路线相比,路线偏好的指示。具有较低度量的路由优先于具有较高度量的路由。您可以使用它来优先使用有线网络接口而不是 Wi-Fi 接口。

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

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

让我们来看看:

  • 169.254.0.0/16:此路由规则管辖的 IP 地址范围。如果计算机在此 IP 范围内进行通信,则此规则会切入。
  • dev enp0s3:此路由管理的流量将使用的网络接口。
  • scope link:范围为link,表示范围仅限于本机直接连接的网络。
  • metric 1000:这是一个高指标,不是首选路线。

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

让我们分解一下:

  • 192.168.4.1/24:此路由规则管辖的 IP 地址范围。如果计算机在此 IP 范围内通信,此规则将触发并控制数据包路由。
  • dev enp0s3:此路由将通过其发送数据包的接口。
  • proto kernel:内核在自动配置过程中创建的路由。
  • 范围链接:范围是链接,这意味着范围仅限于此计算机连接到的直接网络。
  • src 192.168.4.26:此路由发送的数据包源自的 IP 地址。
  • metric 100:这个低 metric 表示首选路线。

显示单个路线的信息

如果想关注某条路由的详细信息,可以在命令中添加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

已走路线,未扎根

这些命令的好处在于它们不是永久性的。如果你想清除它们,只需重新启动你的系统。这意味着您可以对它们进行试验,直到它们按照您想要的方式工作。如果您将系统搞得一团糟,这是一件非常好的事情——只需重新启动即可恢复秩序。

另一方面,如果您希望更改是永久性的,则必须做更多的工作。具体取决于发行版系列,但它们都涉及更改配置文件。

但是,通过这种方式,您可以在永久化之前测试驱动命令。

Linux Commands
Files tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc
Processes alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
Networking netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

RELATED: Best Linux Laptops for Developers and Enthusiasts

©2015-2025 艾丽卡 support@alaica.com