2015-06-09 昔日自由
注意:
- 使用route命令 主要操作 linux内核 路由表,从而操纵路由逻辑
- 以下操作均在三层交换机上(linux内核)
- 严格的讲,该linux shell下的 route命令肯定对应交换机配置视图下的某个命令,如 (config)#ip route …….
- 同时,若要使用 交换芯片的 硬件三层转发
- 则在上述 操作 linux 路由表的命令下内核中,则需在内核添加路由表的函数中 添加该路由表项下交换芯片的操作;
- 否则就会出现 第一次在交换芯片中 没有表项命中,然后上送cpu,走linux内核,软路由,,从而在内核命中软路由后,把相应命中的linux内核表项下发交换芯片。
如下,先上图,看一下路由表的形式
一、route 命令的简单 使用
1. 路由表项的添加
1. 网段路由
route add -net 111.111.111.0/24 dev vlan2
route add -net 111.111.111.0 netmask 255.255.255.0 dev vlan2
route add -net 10.1.100.0/24 gw 172.168.10.254
2. 主机路由
route add -host 177.177.177.177 dev vlan4
route add -host 177.177.177.177 gw 192.168.4.4
3. 默认路由
route add default dev vlan4
route add default gw 192.168.4.4
注意:其他详细的 操作见附录
二、表项及路由的分析
1. vlan的路由 1. 如上图前四条表项 是配置完 四个vlan后 产生的四个直连路由表项,相当于配置vlan的时候下了一条 网段路由 目的网段: 该vlan所属网段 出接口 : 该vlan id 2. 其作用只是产生一条路由,随后,有报文过来了,匹配到了该条路由,然后报文就从对应的出接口出去了,所以才有了vlan间的直接通信。 3. 相当于创建vlan时 附加下了一条 route add -net 192.168.4.0/24 dev vlan4 2. 非常规测试的例子
注:关键是pc2 ip与vlan3 ip不是同一网段,但只要L3上的路由配的合适,就能使pc1 ping同pc2。
附录:
感觉不错的相关文章,原文链接http://blog.youkuaiyun.com/wuruixn/article/details/8515330
使用下面的 route 命令可以查看 Linux 内核路由表。
# routeDestination 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 eth0route 命令的输出项说明
网关为0.0.0.0的网络通常是直连到网络设备上的,本地的直通路由。因为到自己的直连设备上是不需要网关的,所以0.0.0.0的网关地址是正常的。目的地址是0.0.0.0的路由是你的缺省网关。
输出项 说明 Destination 目标网段或者主机 Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由 Genmask 网络掩码 Flags 标记。一些可能的标记如下: U — 路由是活动的 H — 目标是一个主机 G — 路由指向网关 R — 恢复动态路由产生的表项 D — 由路由的后台程序动态地安装 M — 由路由的后台程序修改 ! — 拒绝路由 Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用) Ref 路由项引用次数(linux 内核中没有使用) Use 此路由项被路由软件查找的次数 Iface 该路由表项对应的输出接口 主机路由
主机路由是路由选择表中指向单个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默认路由
当主机不能在路由表中查找到目标主机的IP地址或网络路由时,数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G。例如,在下面的示例中,默认路由是IP地址为192.168.1.1的路由器。
Destination Gateway Genmask Flags Metric Ref Use Iface ----------- ------- ------- ----- ------ --- --- ----- default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0配置静态路由
route 命令
设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:
# route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]其中:
- add : 添加一条路由规则
- del : 删除一条路由规则
- -net : 目的地址是一个网络
- -host : 目的地址是一个主机
- target : 目的网络或主机
- netmask : 目的地址的网络掩码
- gw : 路由数据包通过的网关
- dev : 为路由指定的网络接口
route 命令使用举例
添加到主机的路由
# 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.confnet.ipv4.ip_forward = 1用户还可以使用如下的命令查看当前系统是否支持包转发。
# sysctl net.ipv4.ip_forward