Linux下配置路由表
路由的基础知识
路由概念
路由: 跨越从源主机到目标主机的一个互联网络来转发数据包的过程
路由器:能够将数据包转发到正确的目的地,并在转发过程中选择最佳路径的设备
路由表:在路由器中维护的路由条目,路由器根据路由表做路径选择
直连路由:当在路由器上配置了接口的IP地址,并且接口状态为up的时候,路由表中就出现直连路由项
静态路由:是由管理员手工配置的,是单向的。
默认路由:当路由器在路由表中找不到目标网络的路由条目时,路由器把请求转发到默认路由接口 。
静态路由和默认路由的特点
静态路由特点:
路由表是手工设置的;
除非网络管理员干预,否则静态路由不会发生变化;
路由表的形成不需要占用网络资源;
适用环境:一般用于网络规模很小、拓扑结构固定的网络中。默认路由特点:
在所有路由类型中,默认路由的优先级最低
适用环境:一般应用在只有一个出口的末端网络中或作为其他路由的补充浮动静态路由:
路由表中存在相同目标网络的路由条目时,根据路由条目优先级的高低,将请求转发到相应端口;
链路冗余的作用;
路由器转发数据包时的封装过程
源IP和目标IP不发生变化,在网络的每一段传输时,源和目标MAC发生变化,进行重新封装,分别是每一段的源和目标地址。
要完成对数据包的路由,一个路由器必须至少了解以下内容:
- 目的地址
- 相连路由器,并可以从哪里获得远程网络的信息
- 到所有远程网络的可能路由
- 到达每个远程网络的最佳路由
- 如何维护并验证路由信息
- 路由和交换的对比
路由工作在网络层:
- 根据“路由表”转发数据
- 路由选择
- 路由转发
交换工作在数据链路层:
- 根据“MAC地址表”转发数据
- 硬件转发
Linux中的route
使用route -n命令查看Linux内核路由表
1 | pi@pi:~ $ route -n |
输出说明:
输出项 | 说明 |
---|---|
Destination | 目标网段或者主机 |
Gateway | 网关地址,*表示目标是本主机所属的网络,不需要路由 |
Genmask | 网络掩码 |
Flags | 标记 |
Metric | 路由距离,到达指定网络所需要的中转数 |
Ref | 路由项引用次数 |
Use | 此路由项被路由软件查找的次数 |
Iface | 此路由项对应的输出接口 |
Flags的一些标记含义:
标记 | 含义 |
---|---|
U | 路由是活动的 |
H | 目标是个主机 |
G | 路由指向网关 |
R | 恢复动态路由产生的表项 |
D | 由路由的后台程序动态的安装 |
M | 由路由的后台程序修改 |
! | 拒绝路由 |
三种路由类型说明
- 1.主机路由:
主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。例如,在下面的示例中,本地主机通过IP地址192.168.1.1的路由器到达IP地址为10.89.0.10的主机。
添加主机路由时,需要指定网络 ID 和主机 ID,此时需要设置 netmask 255.255.255.255。1
2Destination Gateway Genmask Flags Metric Ref Use Iface
10.89.0.10 192.168.1.1 255.255.255.255 UH 0 0 0 eth0 - 2.网络路由:
网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。例如,在下面的示例中,本地主机将发送到网络192.19.12的数据包转发到IP地址为192.168.1.1的路由器。
添加网络路由时,只需指定网络 ID,通过 netmask 设置掩码长度。1
2Destination Gateway Genmask Flags Metric Ref Use Iface
192.19.12 192.168.1.1 255.255.255.0 UN 0 0 0 eth0 - 3.默认路由:
当主机不能在路由表中查找到目标主机的IP地址或网络路由时,数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G。例如,在下面的示例中,默认路由是IP地址为192.168.1.1的路由器。1
2Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
配置路由route的命令
设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:
1 | route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] |
参数解释:
参数 | 解释 |
---|---|
add | 添加一条路由规则 |
del | 删除一条路由规则 |
-net | 目的地址是一个网络 |
-host | 目的地址是一个主机 |
target | 目的网络或主机 |
netmask | 目的地址的网络掩码 |
gw | 路由数据包通过的网关 |
dev | 为路由指定的网络接口 |
route命令使用举例:
1 | 添加到主机的路由 |
设置包转发
在Linux中默认的内核配置已经包含了路由功能,但默认并没有在系统启动时启用此功能;
开启Linux的路由功能可以通过调整内核的网络参数来实现,方法如下:
1 | 临时开启路由功能: |
静态路由配置
添加静态路由到路由表的语法如下:
1 | ip route [destination_network] [mask] [next-hop_address] administrative_distance] |
参数解释:
参数 | 解释 |
---|---|
destination_network | 需要发布到路由表中的网段 |
mask | 在这一网络上使用的子网掩码 |
next-hop_address | 下一跳路由器的地址 |
administrative_distance | 默认时,静态路由有一个取值为1 的管理性距离。在这个命令的尾部添加管理权来修改这个默认值。 |
例如:
1 | ip route 172.16.1.0 255.255.255.0 172.16.2.1 |
查看路由表除了使用route -n命令外,还可以使用ip route:
1 | default via 192.168.1.1 dev eth0 src 192.168.1.109 metric 202 |
本文标题:Linux下配置路由表
文章作者:Mr Bluyee
发布时间:2018-10-10
最后更新:2019-07-15
原始链接:https://www.mrbluyee.com/2018/10/10/Linux%E4%B8%8B%E9%85%8D%E7%BD%AE%E8%B7%AF%E7%94%B1%E8%A1%A8/
版权声明:The author owns the copyright, please indicate the source reproduced.