静态路由特点:
适用环境:一般用于网络规模很小、拓扑结构固定的网络中。
默认路由特点:
适用环境:一般应用在只有一个出口的末端网络中或作为其他路由的补充
浮动静态路由:
源IP和目标IP不发生变化,在网络的每一段传输时,源和目标MAC发生变化,进行重新封装,分别是每一段的源和目标地址
路由工作在网络层
交换工作在数据链路层
[root@dev ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.17 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
10.1.32.14 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.1.32.12 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.4.8.2 192.168.9.254 255.255.255.255 UGH 0 0 0 eth0
10.4.9.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
192.168.9.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
10.2.0.0 0.0.0.0 255.255.0.0 U 0 0 0 tun0
10.0.0.0 0.0.0.0 255.255.0.0 U 0 0 0 tun0
10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 tun0
192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 tun0
0.0.0.0 192.168.9.254 0.0.0.0 UG 0 0 0 eth0
主机路由是路由选择表中指向单个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 [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
参数解释:
添加到主机的路由
# 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 //route del default 删除所有的默认路由
添加一条默认路由
# route add default gw 10.0.0.1 //默认只在内存中生效
开机自启动可以追加到/etc/rc.local文件里
# echo "route add default gw 10.0.0.1" >>/etc/rc.local
添加一条静态路由
# route add -net 192.168.2.0/24 gw 192.168.2.254
要永久生效的话要这样做:
# echo "any net 192.168.2.0/24 gw 192.168.2.254" >>/etc/sysconfig/static-routes
添加到一台主机的静态路由
# route add -host 192.168.2.2 gw 192.168.2.254
要永久生效的话要这样做:
# echo "any host 192.168.2.2 gw 192.168.2.254 " >>/etc/sysconfig/static-routes
注:Linux 默认没有这个文件 ,得手动创建一个
在Linux中默认的内核配置已经包含了路由功能,但默认并没有在系统启动时启用此功能;
开启Linux的路由功能可以通过调整内核的网络参数来实现,方法如下:
临时开启路由功能:
# echo 1 > /proc/sys/net/ipv4/ip_forward
或者
# sysctl -w net.ipv4.ip_forward=1
永久开启路由功能
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p
添加静态路由到路由表的语法如下:
ip route [destination_network] [mask] [next-hop_address] administrative_distance]
参数解析:
例如
ip route 172.16.1.0 255.255.255.0 172.16.2.1
查看路由表除了使用route -n命令外,还可以使用ip route
[root@dev ~]# ip route
192.168.1.17 dev ppp0 proto kernel scope link src 192.168.1.190
10.1.32.14 dev tun0 scope link
10.1.32.12 dev tun0 scope link
10.4.8.2 via 192.168.9.254 dev eth0 src 192.168.9.200 mtu 1500 advmss 1460
10.4.9.0/24 dev tun0 scope link
192.168.9.0/24 dev eth0 proto kernel scope link src 192.168.9.200 metric 1
10.2.0.0/16 dev tun0 scope link
10.0.0.0/16 dev tun0 scope link
10.1.0.0/16 dev tun0 scope link
192.168.0.0/16 dev tun0 scope link
default via 192.168.9.254 dev eth0
—————————————-实例1——————————————–
如上图所示,PC0机器和PC1机器之间经过两个路由器,要想使这两台机器通信,路由设置如下:
ip add 192.168.1.1 255.255.255.0
ip add 192.168.2.1 255.255.255.0
ip route 192.168.3.0 255.255.255.0 192.168.2.2
ip add 192.168.2.2 255.255.255.0
ip add 192.168.3.1 255.255.255.0
ip route 192.168.1.0 255.255.255.0 192.168.2.1
—————————————-实例2——————————————–
如上图所示,使用A主机192.168.1.2能够ping通E主机192.168.4.2,这两台机能够通信。
操作思路:
操作记录:
1)A主机上操作:ip为192.168.1.2,设置网关为192.168.1.1
# route add default gw 192.168.1.1
2)B主机上操作:第一块网卡为192.168.1.1,第二块网卡为192.168.2.1
# ifconfig eth0 192.168.1.1
# ifconfig eth1 192.168.2.1 //可以在一块网卡上设置两个ip,比如是eth0,eth0:0
B主机设置默认路由,下一跳为192.168.2.2
# route add default gw 192.168.2.2
B主机开启路由转发功能
# echo 1 > /proc/sys/net/ipv4/ip_forward //临时转发,可以在/etc/sysctl.conf里设置永久转发
3)C主机上操作:第一块网卡为192.168.2.2,第二块网卡为192.168.3.1
# ifconfig eth0 192.168.2.2
# ifconfig eth1 192.168.3.1 //如果就一块网卡,可以设置ifconfig eth0:0 192.168.3.1
C主机设置2条默认路由
# route add -net 192.168.1.0/24 gw 192.168.2.1
# route add -net 192.168.4.0/24 gw 192.168.3.2
C主机开启路由转发功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
4)D主机上操作:第一块网卡为192.168.3.2,第二块网卡为192.168.4.1
# ifconfig eth0 192.168.3.2
# ifconfig eth1 192.168.4.1
D主机设置默认路由,下一跳为192.168.3.1
# route add default gw 192.168.3.1
D主机开启路由转发功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
5)E主机上操作:ip为192.168.4.2,设置网关为192.168.4.1
# route add default gw 192.168.4.1