欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

网关和路由,路由的分类,route命令

程序员文章站 2022-05-29 19:37:55
...

网关:

网关是网络的进口和出口(网关还有其他功能,如协议翻译……),网关定义网络的边界。

         比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。
路由器:

路由器使用一系列算法决定网络间的最短路径。
路由器使用静态路由或动态路由来决定网络间的最短路径。静态路由需要管理员手动设置,而动态路由使用一些协议来动态发现网络间的路径并判断最短路径。通常,对于小型网络使用静态路由,大型复杂网络使用动态路由。现在,路由器集成了网关的功能,所以路由器也具有网关的功能。从网关和路由器的定义来看,如果只是简单地连接两个网络,那么只需要网关就足够了。

例子:假定只有两个网络:网络A和网络B
     要使网络A和网络B能够通信,只使用网关将这两个网络连接即可,因为只有两个网络,不需要决定网络间最短路径。

网关和路由,路由的分类,route命令

如果需要连接多个网络,为了保证网络的可靠性,网络结构需要设计为全网状或部分网状,这样,为了网络间的通信,需要网关和路由器两种设备,因为当前路由器集成了网关的功能,所以只使用路由器一种设备就可以了。
     假定有4个网络:网络A、网络B、网络C、网络D
要使这4个网络之间能够通信,另外为了保证网络的可靠性,将这4个网络进行全网状连接,如下图:

网关和路由,路由的分类,route命令

 例如,此时从网络A到网络D就有两条路径,所以需要使用路由器来决定网络间的最短路径。
      下面来看看宽带路由器中“高级路由”中的网关和路由器选项:
      网关:如果此宽带路由器是网络上唯一一台连接Internet的路由器,选择网关。此时宽带路由器作为网络的进/出口。
      路由器:如果网络中还有其他路由器,选择路由器。

总结:
    1、对于家庭共享上网,只需要使用网关即可,所以在宽带路由器中选择“网关”选项。
    2、对于大型企业网络内部,或大型企业网络连接Internet,由于网络中可能存在其他路由器,所以应当选择宽带路由器中的“路由器”选项,以决定网络间的最短路径。

路由的基本分类:

1.动态路由 静态路由

动态路由

路由选择器自动共享路由信息

自动构造路由表,需要一个路由协议,如RIP或OSPF

静态路由

路由选择器不共享路由信息(单方向路由)

手工构造路由表

2.直连路由 网关路由(间接路由)

其区别在于,发往直连路由的设备中不但具有指明目的端的I P地址,还具有其mac地址。

当报文被发往一个间接路由时,I P地址指明的是最终的目的地,但是mac地址指明的是网关(即下一跳路由器)。

 

3.主机路由 网络路由

直连路由和网关路由是由下一跳区分的,而主机路由和网络路由是由目的地址的完整度区分的;

主机路由的目的地址是一个完整的主机地址。网络路由目的地址是一个网络地址(主机号部分为0)。

当为某个目的I P地址搜索路由表时,主机地址项必须与目的地址完全匹配,

而网络地址项只需要匹配目的地址的网络号和子网号就可以了。

主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。例如,在下面的示例中,本地主机通过IP地址192.168.1.1的路由器到达IP地址为10.0.0.10的主机。

Destination    Gateway       Genmask        Flags     Metric    Ref    Use    Iface
-----------    -------     -------            -----     ------    ---    ---    -----
10.0.0.10     192.168.1.1    255.255.255.255   UH       0    0      0    eth0

网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。例如,在下面的示例中,本地主机将发送到网络192.19.12的数据包转发到IP地址为192.168.1.1的路由器。

Destination    Gateway       Genmask      Flags    Metric    Ref     Use    Iface
-----------    -------     -------         -----    -----   ---    ---    -----
192.19.12     192.168.1.1    255.255.255.0      UN      0       0     0    eth0

4.默认路由(缺省路由)

这个路由将匹配所有的包. 能帮助减少路由条目

配置一条默认静态路由和静态路由相似,但IP地址和子网掩码全部是零

例如:ip route 0.0.0.0 0.0.0.0 [网关ip或接口]

子网掩码 0.0.0.0 代表匹配所有网络

-------------------以下截取子tcp/ip详解-----------------------------------------

I P路由选择主要完成以下这些功能:
1) 搜索路由表,寻找能与目的 I P地址完全匹配的表目(网络号和主机号都要匹配)。如果
找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标
志字段的值)。
2) 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目
指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络上的所
有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表
目进行寻径的。
3) 搜索路由表,寻找标为“默认( d e f a u l t)”的表目。如果找到,则把报文发送给该表目
指定的下一站路由器。
如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自
本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。

网关和路由,路由的分类,route命令

对于一个给定的路由器,可以打印出五种不同的标志( f l a g):
U 该路由可以使用;
G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的;
H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该
标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网
络号与子网号的组合;
D 该路由是由重定向报文创建的;
M 该路由已被重定向报文修改;

Linux内核路由表:

使用下面的 route 命令可以查看 Linux 内核路由表

# route  
  
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface  
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0  
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0  
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth0  

route 命令的输出项说明

输出项 说明
Destination 目标网段或者主机
Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由
Genmask 网络掩码
Flags 标记。一些可能的标记如下:

U — 路由是活动的

H — 目标是一个主机

G — 路由指向网关

R — 恢复动态路由产生的表项

D — 由路由的后台程序动态地安装

M — 由路由的后台程序修改

! — 拒绝路由
Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用)
Ref 路由项引用次数(linux 内核中没有使用)
Use 此路由项被路由软件查找的次数
Iface 路由表项对应的输出接口
网关为0.0.0.0的网络通常是直连到网络设备上的,本地的直通路由。因为到自己的直连设备上是不需要网关的,所以0.0.0.0的网关地址是正常的。目的地址是0.0.0.0的路由是你的缺省网关。

route 命令

设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:

 route  [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
  • add : 添加一条路由规则
  • del : 删除一条路由规则
  • -net : 目的地址是一个网络
  • -host : 目的地址是一个主机
  • target : 目的网络或主机
  • netmask : 目的地址的网络掩码
  • gw : 路由数据包通过的网关
  • dev : 为路由指定的网络接口
举例:

添加到主机的路由

# route add -host 192.168.1.2 dev eth0:0
# route add -host 10.20.30.148 gw 10.20.30.40
添加到网络的路由

# route add -net 10.20.30.40 netmask 255.255.255.248 eth0
# route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
# route add -net 192.168.1.0/24 eth1
添加默认路由

# route add default gw 192.168.1.1
删除路由

# route del -host 192.168.1.2 dev eth0:0
# route del -host 10.20.30.148 gw 10.20.30.40
# route del -net 10.20.30.40 netmask 255.255.255.248 eth0
# route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
# route del -net 192.168.1.0/24 eth1
# route del default gw 192.168.1.1
设置包转发
在 CentOS 中默认的内核配置已经包含了路由功能,但默认并没有在系统启动时启用此功能。开启 Linux的路由功能可以通过调整内核的网络参数来实现。要配置和调整内核参数可以使用 sysctl 命令。例如:要开启 Linux内核的数据包转发功能可以使用如下的命令。

# sysctl -w net.ipv4.ip_forward=1
这样设置之后,当前系统就能实现包转发,但下次启动计算机时将失效。为了使在下次启动计算机时仍然有效,需要将下面的行写入配置文件/etc/sysctl.conf。

# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
用户还可以使用如下的命令查看当前系统是否支持包转发。

# sysctl  net.ipv4.ip_forward