Linux `ip route get 1.1.1.1` 命令解析:快速确认 Internet 流量出口

发布时间:2026/8/9 1:32:07
Linux `ip route get 1.1.1.1` 命令解析:快速确认 Internet 流量出口 作者非凡大爹版本v1.1DocIDCN-LINUX-2026-08-IPROUTEGET-NAT-V1日期2026-08-08原创声明本文为作者原创技术与实验教学资料首发于 CSDN。版权声明本文版权归作者所有网络发布版仅供个人学习、课堂教学参考和非商业交流使用。未经作者书面许可任何单位或个人不得以复制、汇编、改编、摘编、整理、录入数据库、制作课程包、出版图书、开发付费课程、商业培训或其他商业形式使用本文全部或部分内容。引用说明如需引用本文中的观点、实验设计、命令说明或图表内容请注明作者、文章标题及原文链接。版本说明本文为网络公开学习版后续如形成教材、讲义、课程资源包或正式出版物以作者修订版及出版社审定版本为准。文章目录1 实验环境2 ip route get 有什么作用3 本实验的正确结果4 ens33 为什么没有被选择5 一个容易混淆的概念ens37 本身不是 NAT6 为什么使用 1.1.1.17 ip route get 和 ping 不一样查询路由选择测试实际连通性8 实验中推荐的检查顺序参考资料在 VMware Linux 多网卡实验环境中经常需要判断访问 Internet 的流量究竟会从哪块网卡发送相比只查看整个路由表下面这条命令更加直接iproute get1.1.1.1本文结合实际实验环境对这条命令进行简要说明。1 实验环境Ubuntu 虚拟机配置了两块网卡接口IP 地址用途ens33192.168.10.10/24内部实验网络ens37192.168.133.149VMware NAT 网络用于访问 Internet其中 VMware NAT 网络的下一跳网关为192.168.133.2因此本实验环境中正常的 Internet 出口应当是ens37而不是ens33。2ip route get有什么作用执行iproute get1.1.1.1并不是显示整个 Linux 路由表而是让 Linux 内核计算如果现在需要向 1.1.1.1 发送数据包应该选择哪条路由、哪个下一跳、哪个出口接口和哪个源 IP 地址Linuxip-route手册将ip route get用于获取内核针对指定目的地址所解析出的路由结果。它执行路由查询但不会真正向目标地址发送数据包。因此它特别适合检查多网卡主机的实际路由选择结果。3 本实验的正确结果在当前实验环境中执行iproute get1.1.1.1应得到类似1.1.1.1 via 192.168.133.2 dev ens37 src 192.168.133.149重点看下面三个字段输出内容含义via 192.168.133.2下一跳网关dev ens37Linux 选择ens37作为出口接口src 192.168.133.149数据包准备使用的源 IP 地址因此这条结果可以读成Linux 如果访问1.1.1.1将使用源地址192.168.133.149从ens37发出并交给下一跳网关192.168.133.2。其路径可以简化为这说明当前Internet 路由出口选择正确。4ens33为什么没有被选择另一块网卡为ens33 192.168.10.10/24它用于内部实验网络例如连接实验中的另一台主机或路由器。因此ens33 → 内部实验网络 ens37 → VMware NAT → Internet如果执行iproute get1.1.1.1却得到dev ens33就需要进一步检查默认路由、网卡配置或多网卡路由冲突。对于本实验正常结果应该看到dev ens37以及via 192.168.133.25 一个容易混淆的概念ens37本身不是 NAT严格来说把ens37直接称为“Linux 的 NAT 接口”并不十分准确。ens37是 Ubuntu 虚拟机的一块虚拟网卡只是它在 VMware 中被连接到了NAT 类型的虚拟网络。实际过程是Ubuntu │ │ ens37 ↓ VMware NAT 网络 │ │ NAT 地址转换 ↓ 宿主机网络 ↓ Internet所以dev ens37表示Linux 选择 ens37 作为访问 Internet 的出口接口。而后续的 NAT 地址转换主要由 VMware NAT 服务完成。VMware Workstation 的 NAT 网络通过 NAT 网关为虚拟机提供外部网络访问。这两个概念不要混淆Linux负责路由选择 VMware负责 NAT 转换6 为什么使用1.1.1.11.1.1.1并不是专门设计的“网络测试地址”。截至 2026 年 8 月1.1.1.1仍然是 Cloudflare 提供的公共递归 DNS 解析器 IPv4 地址其标准 DNS 地址包括1.1.1.1 1.0.0.1Cloudflare 官方文档仍将1.1.1.1定义为其公共 DNS Resolver并支持普通 DNS、DNS over HTTPSDoH和 DNS over TLSDoT等方式。在这里选择1.1.1.1主要因为它是一个明确的公网 IPv4 目标地址。所以iproute get1.1.1.1非常适合用来询问 Linux“如果我要访问 Internet你准备从哪里走”它并不是在测试 DNS 功能。7ip route get和ping不一样这一点在实验中尤其需要注意。查询路由选择iproute get1.1.1.1回答的是走哪个网关 走哪块网卡 使用哪个源地址它不会真正向 1.1.1.1 发送数据包。测试实际连通性ping-c41.1.1.1才会真正发送 ICMP 数据包用于进一步检查实际网络连通性。因此ip route get ↓ 检查“准备怎么走” ping ↓ 检查“实际上能不能通”二者作用不同但在网络故障排查中非常适合配合使用。8 实验中推荐的检查顺序对于 Linux 多网卡实验环境可以依次执行ip-braddriprouteiproute get1.1.1.1ping-c41.1.1.1分别检查① 网卡及 IP 地址 ↓ ② 当前路由表 ↓ ③ 到公网目标的实际路由选择 ↓ ④ Internet 实际连通性在本实验环境中最关键的判断结果是1.1.1.1 via 192.168.133.2 dev ens37 src 192.168.133.149即Internet 流量选择ens37作为出口下一跳为 VMware NAT 网关192.168.133.2源地址为192.168.133.149。而ens33 192.168.10.10/24继续作为内部实验网络接口使用。参考资料[1] Linux Manual Pageip-route(8)Linux Routing Table Management。[2] Cloudflare Docs1.1.1.1 Public DNS Resolver。[3] Cloudflare Docs1.1.1.1 IP Addresses。[4] Broadcom / VMware Knowledge BaseVMware Workstation Virtual Network Editor 与 NAT 配置说明。