https://blog.csdn.net/hzj_001/article/details/81587891
1.关于路由表的一个例子解析
查看命令:netstat -rn
先执行带-r选项的netstat命令,列出路由表,然后以-n选项再次执行该命令,以数字格式打印出
ip地址(我们这样做是因为路由表中的一些表项是网络地址,而不是主机地址。如果没有- n选项,
netstat命令将搜索文件/etc/networks并列出其中的网络名.。这样会与另一种形式的名字—网络名加主机名相混淆)。
查看结果含义举例
[root@localhost ~]# netstat -rn
Kernel IP routing table
Destination Gateway Flags Refcnt Iface
140.252.13.65 14.252.13.35 UGH 0 emd0
127.0.0.1 127.0.0.1 UH 1 lo0
default 140.252.13.33 UG 0 emd0
140.252.13.32 140.252.13.34 U 4 emd0
对于一个给定的路由器,可以打印出五种不同的标志:
U 该路由可以使用。
G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。标志G是非常重要的,因
为由它区分了间接路由和直接路由(对于直接路由来说是不设置标志G的)。其区别在于,发往直接路由的分组
中不但具有指明目的端的I P地址,还具有其链路层地址。当分组被发往一个间接路由时,ip地址指明的是最终的
目的地,但是链路层地址指明的是网关(即下一站路由器)。在这个路由表例子中,有一个间接路由(设置了标志G),
因此采用这一项路由的分组其ip地址是最终的目的地(140.252.13.65),但是其链路层地址必须对应于路由器
140.252.13.35。
H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。没有设置H标志说明目的地址是一个网络地址
(主机号部分为0)。当为某个目的IP地址搜索路由表时,主机地址项必须与目的地址完全匹配,而网络地址项只需要匹
配目的地址的网络号和子网号就可以了。
D 该路由是由重定向报文创建的。
M 该路由已被重定向报文修改。
输出的第2行是环回接口,它的名字始终为lo0。没有设置G标志,因为该路由不是一个网关。H标志说明目的地址
(127.0.0.1)是一个主机地址,而不是一个网络地址。由于没有设置G标志,说明这是一个直接路由,网关列给
出的是外出ip地址。
输出的第3行是默认路由。每个主机都有一个或多个默认路由。这一项表明,如果在表中没有找到特定的路由,
就把分组发送到路由器140.252.13.33(sun主机)。这说明当前主机sdb利用这一个路由表项就可以通过internet
经路由器sun(及其SLIP链路)访问其他的系统。建立默认路由是一个功能很强的概念。该路由标志( U G)表明
它是一个网关,这是我们所期望的。
2.路由表查看举例
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.0 * 255.255.255.0 U 0 0 0 eth0
192.168.56.0 * 255.255.255.0 U 0 0 0 eth1
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
这台主机有两个网络接口,一个网络接口连到192.168.10.0/24网络,另一个网络 接口连到192.168.56.0/24网络。路由表的
Destination是目的网络地址,Genmask是子网掩码,Gateway是下一跳地址,Iface是发送接口,Flags中的U标志表示此条目
有效(可以禁用某些条目),G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与
本机接口直接相连的网络,不必经路由 器转发,因此下一跳地址处记为*号。
如果要发送的数据包的目的地址是192.168.56.3,跟第一行的子网掩码做与运算得到 192.168.56.0,与第一行的目的网络
地址不符,再跟第二行的子网掩码做与运算得到192.168.56.0,正是第二行的目的网络地址,因此从 eth1接口发送出去,由于
192.168.56.0/24正是与eth1接口直接相连的网络,因此可以直接发到目的主机,不需要经路由器转发。
如果要发送的数据包的目的地址是202.10.1.2,跟前三行路由表条目都不匹配,那么就要按缺省路由条目,从eth0接口发出
去,首先发往192.168.10.1路由器,再让路由器根据它的路由表决定下一跳地址。
3.route 命令添加静态路由
设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:
# route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
其中:
add : 添加一条路由规则 del : 删除一条路由规则
-net : 目的地址是一个网络 -host : 目的地址是一个主机
target : 目的网络或主机 netmask : 目的地址的网络掩码
gw : 路由数据包通过的网关 dev : 为路由指定的网络接口
3种路由类型
1)主机路由
主机路由是路由选择表中指向单个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
添加到主机的路由
# route add -host 192.168.1.2 dev eth0
# route add -host 10.20.30.148 gw 10.20.30.40 #添加到10.20.30.148的网关10.20.30.40
2)网络路由
网络路由是代表主机可以到达的网络。网络路由的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
添加到网络的路由
# route add -net 10.20.30.40 netmask 255.255.255.248 dev eth0 #添加10.20.30.40的网络
举例, 添加一条路由(发往192.168.62这个网段的全部要经过网关192.168.1.1)
# route add -net 192.168.62.0 netmask 255.255.255.0 gw 192.168.1.1
# route add -net 192.168.1.0/24 eth1
3)默认路由
当主机不能在路由表中查找到目标主机的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 add default gw 192.168.1.1
---------------------
作者:菜鸟别浪
来源:CSDN
原文:https://blog.csdn.net/hzj_001/article/details/81587891
版权声明:本文为博主原创文章,转载请附上博文链接!