搜索
首页系统教程LINUX追踪网络路由的奥秘,Linux路由检测技巧大揭秘!

作为一个Linux管理员,你是否曾经遇到过网络连接不畅、延迟高等问题?你是否曾经想要深入了解网络路由跟踪和检测技巧,以更好地排除问题?如果是,那么你一定需要学习Linux下的路由检测技巧!在本文中,我们将会详细介绍如何使用Linux命令行工具快速便捷地进行路由跟踪和检测。

追踪网络路由的奥秘,Linux路由检测技巧大揭秘!

linux 查看网络路由

连接到网络的每台计算机在离开本地主机时都需要针对网络TCP / IP数据包的某种路由说明。 这通常非常简单,因为大多数网络环境都非常简单,并且离开数据包只有两种选择。 所有数据包都发送到本地网络上的设备或其他远程网络上。

确保将“本地”网络定义为本地主机所在的逻辑网络,通常也定义为物理网络。 从逻辑上讲,这是指在其中为主机分配了本地子网IP地址范围之一的本地子网。 从物理上讲,这意味着主机已连接到一台或多台交换机,这些交换机也已连接到本地网络的其余部分。

TCP / IP网络模型

在进行路由选择之前,先了解一些有关数据包如何找到通往网络上正确主机的方式的帮助。 TCP / IP 网络模型定义了一个五层堆栈,该堆栈描述了将数据包从一台主机移动到另一台主机所必需的机制,无论该主机是在本地网络上还是在世界范围内。 在此模型的以下描述中,每个层都有编号,并且还包含该层处理的数据单元的名称。

5.应用程序层:消息该层包括各种网络应用程序进行通信所需的连接协议,例如HTTP,DHCP,SSH,FTP,SMTP,IMAP等。 当您从远程网站请求网页时,连接请求将发送到Web服务器,响应会发送回该层的主机,然后浏览器将在其窗口中显示该网页。

4.传输层:TCP段。 传输层提供端到端数据传输和流管理服务,这些服务与数据和所传输协议的类型无关。 它使用端口80(例如HTTP)和25(SMTP)在发送主机和远程主机之间建立连接。

3. Internet层:数据包。 数据包路由在Internet层上执行。 该层负责在两个或多个不同的网络上路由数据包,以到达其最终目的地。 该层使用IP地址和路由表来确定将数据包发送到下一个设备。 如果发送到路由器,则每个路由器仅负责将数据包发送到该系列中的下一个路由器,而不负责映射从本地主机到目标主机的整个路由。 Internet层主要是关于路由器与路由器进行对话,以确定链路中的下一个路由器。

2.数据链路层:框架。 链路层管理单个本地逻辑逻辑网络上硬件主机之间的直接连接。 该层使用嵌入在网络接口卡(NIC)中的媒体访问控制(M AC ) 地址来识别连接到本地网络的物理设备。 该层无法访问不在本地网络上的主机。

1.物理层:位。 这是硬件层,由NIC和物理以太网电缆以及用于在构成任何两个主机或本地连接的其他网络节点之间传输构成数据帧的各个位的硬件级别协议组成。

一个简单的例子

那么,当主机实际上使用TCP / IP网络模型在网络上发送数据时,会是什么样? 这是我对数据如何从一个网络移动到另一个网络的完整描述。 在此示例中,我的计算机正在向远程服务器发送网页请求。

在应用程序层上,浏览器向远程主机www.example.com发起HTTP连接请求消息,以发送回包含网页内容的数据。 这是消息,它仅包含远程Web服务器的IP地址。

传输层将包含网页请求的消息封装在以远程Web服务器的IP地址作为目标的TCP数据报中。 现在,该数据包与原始请求数据包一起包括发出请求的源端口,通常是一个非常大的随机端口,以便返回数据知道浏览器正在侦听哪个端口。 以及远程主机上的目标端口(在这种情况下为端口80)。

Internet层将TCP数据报封装在一个包中,该包还包含源IP地址和目标IP地址。

数据链路层使用地址解析协议(ARP)来标识默认路由器的物理MAC地址,并将Internet数据包封装在包含源MAC地址和目标MAC地址的帧中。

帧通过电线(通常是CAT5或CAT6)从本地主机上的NIC发送到默认路由器上的NIC。

默认路由器打开数据报并确定目标IP地址。 路由器使用自己的路由表来标识将把该帧带入下一步的下一台路由器的IP地址。 然后,路由器将帧重新封装到一个新的数据报中,该数据报包含其自己的MAC作为源以及下一个路由器的MAC地址,然后通过适当的接口将其发送。 路由器在第3层(Internet层)执行其路由任务。

请注意,对于第二层及第二层以上的所有协议而言,开关是不可见的,因此它们不会以任何逻辑方式影响数据的传输。 交换机的功能仅仅是提供一种简单的方法,即通过以太网电缆的长度将多个主机连接到单个物理网络中。

您可以使用arp [-n]命令查看主机已在其arp表中存储的所有MAC地址。 这些始终是本地网络上的主机。

路由表

所有网络设备,无论它们是主机,路由器还是其他类型的网络节点,例如网络连接的打印机,都需要决定将TCP / IP数据包路由到何处。 路由表提供了做出这些决定所需的配置信息。与图1中非常简单的路由表类似,该路由表用于定义典型本地主机可用的单个路由,并确定是否将数据包发送到默认网关路由器。 。 route -n命令列出了路由表; -n选项仅将结果显示为IP地址,并且不尝试执行DNS查找,该DNS查找将使用主机名替换IP地址(如果可用)。 使用netstat – R N命令产生的结果非常相似。

[root@host1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.254   0.0.0.0         UG    100    0        0 eno1
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1

图1:一个简单的路由表。

使用-n选项时,默认网关始终与目标0.0.0.0一起显示。 如果未使用-n,则单词“ Default”出现在输出的Destination列中。 网关列中的IP地址是出站网关路由器的IP地址。 默认网关的网络掩码为0.0.0.0意味着,无论网络类别如何,路由表中未通过附加条目寻址到本地网络或另一个出站路由器的任何数据包都将发送到默认网关。

图1中的Iface(接口)列是出站NIC的名称,在本例中为eno1。 对于充当路由器的主机,可能至少会使用两个,有时还会使用更多的NIC。 每个用作路由的NIC将连接到不同的物理和逻辑网络。 “标志”列中的标志指示该路由为Up(U),这是默认网关(G)。 其他标志也可能出现。

对于大多数主机而言,路由决策非常简单:

如果目标主机在本地网络上,则将数据直接发送到目标主机。
如果目标主机位于通过路由表中列出的本地网关可访问的远程网络上,请将其发送到显式定义的网关。
如果目标主机位于远程网络上,并且没有其他条目定义到该主机的路由,则将数据发送到默认网关。
这些规则只是意味着,如果由于不匹配而导致所有其他操作失败,则将数据包发送到默认网关。

下面的图2中的路由表稍微复杂一点,因为它属于Linux主机,充当连接到三个网络的路由器,其中一个网络通向Internet。 本地C类网络(接口eth1上的192.168.0.0/24、eth2上的192.168.25.0/24)在表中都有条目,以及在eth0上通往世界其他地区的默认路由。

[root@host2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.24    0.0.0.0         255.255.255.252 U     0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.25.0    0.0.0.0         255.255.255.0   U     0      0        0 eth2
0.0.0.0         192.168.1.25    0.0.0.0         UG    0      0        0 eth0

图2:具有多个网络的更复杂的路由表。

请注意,仍然只有一个默认网关,它位于接口eth0上。 但是,除了直接指向路由器的LAN端IP地址的默认路由条目外,整个192.168.1.24/30网络也存在一个条目。 该网络仅包含两个可用的IP地址,一个用于路由器LAN端,一个192.168.1.25/30,一个用于主机本身,一个192.168.1.26/30。

路由配置

那么如何配置路由表? 对于使用DHCP连接到网络的主机,DHCP服务器提供该默认路由的配置信息以及DNS,主机IP地址以及可能的其他信息(例如NTP服务器的IP地址)。 对于静态配置,它通常很简单,但有时可能会有些复杂。

在大多数情况下,将默认路由添加到/ etc / sysconfig / network文件会导致网络在路由表中配置默认路由。 该条目类似于图3中的示例。

GATEWAY=192.168.0.1

图3:网络文件中的网关条目。

使用网络文件只能配置默认网关。

在静态配置的环境中配置默认网关的另一种方法是将其添加到/ etc / sysconfig / network-scripts目录中的相应接口配置文件中。 要将网关添加到接口eth0的接口配置文件中,请将与上面图3相同的行添加到ifcfg-eth0文件中。 如果这样做,则应从网络文件中删除该条目。

在更复杂的环境中,例如当主机使用多个NIC连接到多个网络时,以及至少需要在路由表中输入两条或更多条路由时,您应该考虑在其中使用路由文件。 / etc / sysconfig / network-scripts。 对于NIC enp7s1,该文件将是route-enp7s1,它将包含图4所示的条目。

default via 192.168.0.1 dev enp7s1

图4:enp7s1的默认路由条目。

路由接口文件中的默认网关设置将覆盖网络文件中可能列出的所有网关。

当然,您始终可以使用route命令从命令行添加路由。 如果您需要在每次系统引导时都执行此操作,则可能会花费一些时间,因此您可能要考虑使用上述方法,或创建在启动时运行的脚本。 我为我的系统之一编写了一个脚本,其中包含以下两行,如图5所示。

route del default
route add default gw 192.168.0.1

图5:从命令行设置默认路由的命令。

请注意,设备名称在所有这些命令中都是可选的,在图5中未使用。

通过阅读本文,我们已经了解了如何使用常见的Linux路由检测命令,例如traceroute和mtr,以及如何利用tcpdump和wireshark来分析网络数据包。通过这些技巧,我们能够有效定位网络连接问题,并快速排除故障。相信这些知识对于广大Linux管理员和网络工程师都将有所帮助,让你们能够更加从容应对复杂的网络环境,提升自己的技术水平。

以上是追踪网络路由的奥秘,Linux路由检测技巧大揭秘!的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:良许Linux教程网。如有侵权,请联系admin@php.cn删除
Linux软件的未来:Flatpak和Snap会替换本机桌面应用程序吗?Linux软件的未来:Flatpak和Snap会替换本机桌面应用程序吗?Apr 25, 2025 am 09:10 AM

多年来,Linux软件分布依赖于DEB和RPM等本地格式,并深深地根深蒂固。 但是,Flatpak和Snap已经出现,有望成为应用程序包装的通用方法。 本文考试

Linux和Windows处理设备驱动程序的区别有什么区别?Linux和Windows处理设备驱动程序的区别有什么区别?Apr 25, 2025 am 12:13 AM

Linux和Windows在处理设备驱动程序上的差异主要体现在驱动管理的灵活性和开发环境上。1.Linux采用模块化设计,驱动可以动态加载和卸载,开发者需深入理解内核机制。2.Windows依赖微软生态,驱动需通过WDK开发并签名认证,开发相对复杂但保证了系统的稳定性和安全性。

比较和对比Linux和Windows的安全模型。比较和对比Linux和Windows的安全模型。Apr 24, 2025 am 12:03 AM

Linux和Windows的安全模型各有优势。Linux提供灵活性和可定制性,通过用户权限、文件系统权限和SELinux/AppArmor实现安全。Windows则注重用户友好性,依赖WindowsDefender、UAC、防火墙和BitLocker保障安全。

Linux和Windows之间的硬件兼容性有何不同?Linux和Windows之间的硬件兼容性有何不同?Apr 23, 2025 am 12:15 AM

Linux和Windows在硬件兼容性上不同:Windows有广泛的驱动程序支持,Linux依赖社区和厂商。解决Linux兼容性问题可通过手动编译驱动,如克隆RTL8188EU驱动仓库、编译和安装;Windows用户需管理驱动程序以优化性能。

Linux和Windows之间虚拟化支持有哪些差异?Linux和Windows之间虚拟化支持有哪些差异?Apr 22, 2025 pm 06:09 PM

Linux和Windows在虚拟化支持上的主要区别在于:1)Linux提供KVM和Xen,性能和灵活性突出,适合高定制环境;2)Windows通过Hyper-V支持虚拟化,界面友好,与Microsoft生态系统紧密集成,适合依赖Microsoft软件的企业。

Linux系统管理员的主要任务是什么?Linux系统管理员的主要任务是什么?Apr 19, 2025 am 12:23 AM

Linux系统管理员的主要任务包括系统监控与性能调优、用户管理、软件包管理、安全管理与备份、故障排查与解决、性能优化与最佳实践。1.使用top、htop等工具监控系统性能,并进行调优。2.通过useradd等命令管理用户账户和权限。3.利用apt、yum管理软件包,确保系统更新和安全。4.配置防火墙、监控日志、进行数据备份以确保系统安全。5.通过日志分析和工具使用进行故障排查和解决。6.优化内核参数和应用配置,遵循最佳实践提升系统性能和稳定性。

很难学习Linux吗?很难学习Linux吗?Apr 18, 2025 am 12:23 AM

学习Linux并不难。1.Linux是一个开源操作系统,基于Unix,广泛应用于服务器、嵌入式系统和个人电脑。2.理解文件系统和权限管理是关键,文件系统是层次化的,权限包括读、写和执行。3.包管理系统如apt和dnf使得软件管理方便。4.进程管理通过ps和top命令实现。5.从基本命令如mkdir、cd、touch和nano开始学习,再尝试高级用法如shell脚本和文本处理。6.常见错误如权限问题可以通过sudo和chmod解决。7.性能优化建议包括使用htop监控资源、清理不必要文件和使用sy

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。