路由,简单来说,是一个数据包从一个设备的接口接收到后,根据预设的规则转发到其他接口的过程。这一过程主要发生在OSI模型的第三层,即网络层。路由器,作为一种网络层设备,通过转发数据包来实现不同网络之间的互联。它具备判断网络地址和选择最佳IP路径的能力,从而在多网络互联的环境中建立灵活的连接。
路由表是存储在路由器或其他网络设备上的信息表,其中包含了到达特定网络终端的路径和相关的度量信息。路由表是进行数据包路由的依据,它决定了数据包的转发方向。
而网关,则是连接不同网络的设备,它在网络层以上实现网络互联。网关能够处理不同通信协议、数据格式或语言之间的转换,使得不同体系结构完全不同的两种系统能够互相通信。与网桥不同,网关不仅仅传递信息,还会对收到的信息进行重新打包,以适应目标系统的需求。
在Linux中,根据路由表的管理方式不同,路由分为静态路由和动态路由。静态路由是手动配置的路由记录,而动态路由则通过路由学习软件自动侦测和更新路由表。
下面是Linux中查看和设置路由的一些常用命令:
- `route`:查看本机路由表。 - `route -n`:以ip地址形式显示路由表,不显示主机名。
配置静态路由的方法如下:
- 增加普通路由:`route add -net 10.1.1.0 netmask 255.255.255.0 gw 10.1.1.1` - 增加默认路由: - 临时指派:`route add default gw 10.1.1.1` - 永久指派:在网卡配置文件中设置`GATEWAY=10.1.1.1`,然后重启网卡使其生效。
删除路由的命令:
- 删除普通路由:`route del -net 10.1.1.0 netmask 255.255.255.0` - 删除默认路由:`route del default gw 10.1.1.1`
如果想要在Linux主机上开启路由转发功能,需要修改`/etc/sysctl.conf`文件,添加`net.IPv4.ip_forward = 1`(其中“0”表示关闭,“1”表示开启)。之后执行`sysctl -p`命令使配置即时生效。
最后,我们来看看ping命令的三种故障解析:
1. 网络不可达(network is unreachable):这是因为本机的路由表无法确定数据包的传输路径。 2. 主机不可达(DestiNATion Host Unreachable):局域网中无法找到对应IP的MAC地址,导致数据包封装失败。 3. 目标网络不可达(destination net unreachable):当本机将数据包转发给网关后,网关也无法到达目标网络。
理解这些基本概念和操作方法,有助于我们更好地管理Linux网络环境,确保数据传输的稳定和高效。
Linux的路由与网关:
路由(Routing):路由是指从一个设备(一般指路由器)的接口上接收到数据包,依据设备所既定的某些规则,将数据包转发到其它接口的 “过程”。路由工作在OSI参考模型第三层——网络层的数据包转发设备。路由器通过转发数据包来实现网络互连
路由器(Router):路由器是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成。因此,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备(能实现路由功能的设备,就叫路由器) 路由表(routing Information Base ):
路由表是指路由器或者其他互联网网络设备上存储的一张路由信息表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。(进行数据包路由时,所依据的 规则 集合。供路由时选择)
网关(Gateway):网关又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同层--应用层。(连接2个以上物理网络的设备)
根据路由表的管理方式不同,分为=== 静态路由:直接用route命令,手动增加的路由记录。=== 动态路由:通过相关的路由学习软件,比如zebra,这些软件可以动态的侦测根据路由表的存在,分为=== 临时路由:route add 命令指派,重启网卡或者计算机的时候,消失=== 永久路由:路由信息写入配置文件中,永久存在
linux下查看和设置路由的命令
route 查看本机路由表 route
route -n 显示路由表的时候,全部用IP地址信息显示,不显示主机名
== route 命令配置静态路由 ==
== 增加普通路由
route add -net 10.1.1.0 netmask 255.255.255.0 gw 10.1.1.1
== 增加默认路由
1、route add default gw 10.1.1.1 (临时指派)
2、网卡配置中的 GATEWAY=10.1.1.1 ----》 默认路由----》重启网卡生效 (永久指派)
== 删除普通路由:
route del -net 10.1.1.0 netmask 255.255.255.0
== 删除默认路由:
route del default gw 10.1.1.1
== 查询路由表 route -n
打开作为路由器的 Linux 主机的核心路由转发功能
vim /etc/sysctl.conf ##添加下面一行
net.ipv4.ip_forward = 1 ##“0”是关闭 “1”开启(保存退出)
执行命令: sysctl -p #让修改核心路由转发功能即时生效
总结 ping :包的 三种故障解析 :
1、connect: Network is unreachable 网络不可达: 本机 路由表无法判定
2、Destination Host Unreachable 主机不可达: 局域网中无法找到对应IP的MAC地址,无法完成封装
3、 destination net unreachable 来自于下一跳主机的回应, 本机将包转发给网关时,网关也无法到达目标网络