六月份的时候我们讨论了基础网络配置,其中有一点我没提到的是路由。这篇文章将简洁明了的介绍下Linux网络下的路由,来方便理解一些简单的网络环境。
每台网络中相连的计算机当他们离开本地主机的时候,TCP / IP数据包需要某种类型的路由指令。这通常是非常简单的,因为多数网络环境非常简单,那些离开包只有两个选择。所有数据包被发送到设备在本地网络上或其他网络,远端网络。
5. 应用层: 消息 这一层由各种网络应用程序进行通信所需的连接协议,如HTTP、DHCP、SSH、FTP、SMTP、IMAP及其他。当你从远程网站上请求一个网页时,一个连接请求被发送到web服务器,响应被发回到主机所在层, 然后浏览器就可以显示这个网页。
4. 传输层: TCP 字节段. 传输层提供端到端的数据传输和流管理服务,是独立的传输协议数据和类型的。它使用的端口就像HTTP的80端口和SMTP的25端口一样使发送主机和远程主机之间建立连接。
2. 数据链路层: 帧. 链路层管理一个单一的,局部的,逻辑的,物理网络硬件主机之间的直接连接. 链路层使用嵌入在网络接口卡(NIC) (MAC) 地址 地址来识别连接到本地网络中的物理设备。 链路层不能访问本地网路之外的其他主机.
1. 物理层: 位. 这是硬件层,它由NIC和物理以太网电缆以及数据帧硬件级别协议组成,用来为任何与本地计算机连接的其他网络节点传输由位组成的数据帧。
请注意,在二层及以上协议层中,交换机是无形的,所以并不会影响数据以逻辑方式的传输。交换机的功能仅仅是提供一个简单的方法来连接多台主机到一个单一的物理网络,通过以太网线缆。
你可以使用arp [-n]命令来查看所有主机的MAC地址,存储在其ARP表中。通常这些主机都位于本地网络。
路由表
所有的网络设备,不论是主机,路由器,或其他类型的网络节点比如网络打印机,都需要决定TCP/IP数据包去向哪里。路由表提供了所需的配置信息来做出这些决定。路由表类似图1的一个非常简单的路由表用于定义一个典型的到本地主机的单一路由,并确定是否发送数据包到默认网关路由。route -n命令列出路由表,-n选项显示唯一的IP地址,不会尝试执行DNS查找可替代的IP地址和主机名称。 netstat -rn 命令显示相似的结果。
对于多数主机来说路由决策是相当简单的:
- 如果目的主机在本地网络中,数据将直接发送到目标主机.
- 如果目的主机在远程网络中,并且可以通过路由表中列出的本地网关到达,那么数据将被发送到其明确定义的网关.
- 如果目的主机在远程网络中,并且没有任何路由条目定义其到该主机的线路,那么数据将被发送到默认网关。
这些规则说明,如果一条都不符合,那么数据包将被发送到默认网关。
路由配置
那么如何配置路由呢?当主机通过DHCP连接网络,DHCP服务器将提供默认路由信息,包括DNS、IP地址或许还有其他信息比如NTP服务器的IP地址。对于配置静态路由信息来说,通常很简单, 不过有时也有一点点复杂。
在多数情况下,添加默认路由信息到/etc/sysconfig/network 文件可以使网络自动配置路由表中的默认路由条目。该条目看起来就像图三中的示例。
default via 192.168.0.1 dev enp7s1
图4:enp7s1的默认路由条目.
默认网关设置在路由接口信息文件中覆盖任何可能在网络文件中列出的网络文件。
route del default
route add default gw 192.168.0.1
图5: 命令行方式设置默认路由 .
注意设备名称在所有命令行中是可选的,并没有用在图5中。
总结
(路由表)可以有更多的路由条目。比这些简单的例子中显示的多,这是很常见的。本例中信息仅仅只是一个开始。对于那些更复杂的网络环境,你可以参照 Inside TCP/IP, 第二版, 或者 TCP/IP Network Administration 作者是Craig Hunt. 如果你还想要更多信息请参阅不同的发行版本号。对于基于RPM的比如Fedora 和Centos, Red Hat Enterprise Linux 7 deployment guide 是一个好的参照读物。.