龙空技术网

介绍下Linux的路由

云技术 1520

前言:

今天各位老铁们对“路由表不包括以下哪个选项”大约比较注重,小伙伴们都需要学习一些“路由表不包括以下哪个选项”的相关知识。那么小编也在网络上网罗了一些对于“路由表不包括以下哪个选项””的相关内容,希望看官们能喜欢,你们快快来了解一下吧!

本文介绍了Linux计算机的路由,有助于了解简单的Linux网络环境。

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

我们一定要将“本地”网络定义为逻辑网络,通常也是本地主机所在的物理网络。逻辑上,这意味着为主机分配本地子网IP地址范围之一的子网。物理上这意味着主机连接到一个或多个交换机,这些交换机也连接到本地网络的其余部分。

TCP/IP网络模型

在我们进入路由之前,需要理解数据包如何找到通往网络上正确主机的路径。TCP/IP网络模型定义了一个五层堆栈,描述了将数据包从一个主机传输到另一个主机所需的机制,无论该主机是在本地网络还是在广域网。该模型的以下描述中的每个层都被编号,并且还包含由该层处理的数据单元的名称。

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

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

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

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

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

一个简单的例子

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

在应用程序层,浏览器向远程主机发起HTTP连接请求消息,以发回包含网页内容的数据。这是消息,它仅包括远程Web服务器的IP地址。传输层将包含网页请求的消息封装在TCP数据报中,并将远程Web服务器的IP地址作为目标。与原始请求数据包一起,此数据包现在包括发出请求的源端口,通常是一个非常高数量的随机端口,以便返回数据知道浏览器正在侦听哪个端口;和远程主机上的目标端口,在这种情况下为端口80。Internet层将TCP数据报封装在同时包含源IP地址和目标IP地址的数据包中。数据链路层使用地址解析协议(ARP)来标识默认路由器的物理MAC地址,并将Internet数据包封装在包含源MAC地址和目标MAC地址的帧中。帧通过线路(通常为CAT5或CAT6)从本地主机上的NIC发送到默认路由器上的NIC。默认路由器打开数据报并确定目标IP地址。路由器使用自己的路由表来识别下一个路由器的IP地址,该路由器将该帧带到其旅程的下一步。然后,路由器将帧重新封装在一个新的数据报中,该数据报包含自己的MAC作为下一个路由器的源和MAC地址,然后通过适当的接口发送它。路由器在第3层(Internet层)执行其路由任务。

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

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

路由表

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

图1:一个简单的路由表

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

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

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

如果目标主机位于本地网络上,请将数据直接发送到目标主机。如果目标主机位于可通过路由表中列出的本地网关访问的远程网络上,请将其发送到明确定义的网关。如果目标主机位于远程网络上,并且没有其他条目定义到该主机的路由,请将数据发送到默认网关。

这些规则只是意味着如果所有其他因为没有匹配而失败,则将数据包发送到默认网关。

下面图2中的路由表有点复杂,因为它属于Linux主机,充当连接到三个网络的路由器,其中一个网络通向Internet。接口eth1上的本地C类网络192.168.0.0/24,eth2上的192.168.25.0/24,每个都有表中的条目,以及通向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中的脚本。对于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中未使用。

结论

路由可能比这些相当简单的例子中显示的要多得多,这些例子很常见。这里的分享可以帮助你入门。

原文链接:

标签: #路由表不包括以下哪个选项