阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux网络路由简介-查看网络路由

28次阅读
没有评论

共计 4284 个字符,预计需要花费 11 分钟才能阅读完成。

导读 本文对用于理解简单环境的 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 中未使用。

    结论

    除了这些非常简单的示例(非常常见)中显示的路由之外,路由还有很多其他内容。这里的信息应该使您入门。对于更复杂的环境,您可能希望参考 Craig Hunt 的《Inside TCP / IP,第二版》或《TCP / IP 网络管理》。您可能还需要参考发行版的文档以获取更多信息。对于基于 rpm 的发行版(例如 Fedora 和 CentOS),一个很好的参考是《Red Hat Enterprise Linux 7 部署指南》。

    阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

    腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

    代金券:在阿里云专用满减优惠券

    正文完
    星哥说事-微信公众号
    post-qrcode
     0
    星锅
    版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计4284字。
    转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
    【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
    阿里云-最新活动爆款每日限量供应
    评论(没有评论)
    验证码
    【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中