Linux默认路由与直连路由
Linux配置好ip,掩码,网关之后默认会建立两条路由(除去169.254.0.0这条),如下所示:
(这两条路由无需我们手工创建,Linux配置好网卡,重启之后默认就会建立这两条路由,缺一不可。这样就可以访问baidu.com这样的外网或者内网地址了)
这两条路由有不同的使用方法,我们依次来看看每一条路由。
首先第一条路由,网关为192.168.50.2,这条路由表示通向外部地址的路由,比如当你访问非局域网的其他地址的时候,默认走的路由。举个例子,比如你要访问外网baidu.com,那么此时走的就是默认路由,默认路由中,这个出口地址Gateway就是我们在网卡里面配置的网关地址,而且默认路由的Gateway也必须指向这个网关地址才可以。
现在我们删除掉这个默认路由地址:
route del default gw 192.168.50.2 dev ens33
然后再来访问baidu.com看看
可以看到效果如上所示,所有的外网地址根本没有办法访问,因为没有默认路由了。
那就意味着此时只能访问内部地址了,我这个内网地址里面还有其他的主机,比如192.168.50.10 192.168.50.131
,我们来访问一下看看,
可以看到确实是可以访问内网地址的,而且我的xshell也还能通过ssh连接到这个系统里面。
当然,网关的地址也是可以ping通的,比如:
话说以后遇到可以ping通网关而不能访问外网的问题,可以找路由来解决。
通过上面的例子我们就可以看出来访问外网走的是默认路由,而访问内网不走这个默认路由。所以我们接下来实验一下删除第二条路由(destnation为192.168.50.0这条路由)看看效果
我这里先把默认路由加上去。
route add default gw 192.168.50.2 dev ens33
现在删除第二条路由,这个我们就要在vmware的控制终端里面测试了,否则在xshell里面删除的话直接终端就掉了
# 执行下面这个指令
[root@localhost ~]# route del -net 192.168.50.0/24 dev ens33
此时就剩下默认路由了。
现在先访问baidu.com等地址
发现都是ok的。再来访问一些内网地址
发现也都是可以访问本地局域网里面的其他设备的。
发现第二条路由是否存在都无所谓。这第二条路由也称为直连路由,直连路由与默认路由也有一点点的区别的,主要有两点
第一点,没有了直连路由,我们宿主机就无法通过vmnet8与Linux虚拟机进行通信了(这里我们的实验是windows的宿主机搭建vmware安装Linux虚拟机,nat网络模型)。
第二点,没有了直连路由,此时再去ping局域网的其他主机,会发现icmp中发送的包有两个,接收一个(正常情况下一次ping中,icmp包有两个),也就是有三个包,如下图所示:
看的出来没有了直连路由,发送的request包也多了一个。
除此之外,直连路由无需我们手工创建,这个路由是在建立局域网的时候自动创建的,自动指向本地局域网环境的一个路由。还有,这条路由的网关是0.0.0.0,其实并没有什么用,只是为了不为空默认写的0.0.0.0,无需理会
但是,我们最好是加上直连路由。
有时候你会遇到添加默认路由失败的例子,比如这个,我先把所有的路由删除光了,现在直接添加默认路由的话是失败的
必须提前存在直连路由,然后才能添加默认路由。
演示一个直连路由的例子。
# 准备一台主机A,额外添加一个ip地址
ifconfig ens33:1 192.168.0.7
# 此时再查看路由,发现系统自动给我们创建了一个192.168.0.0的直连路由
[root@@@node1 ~]# route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
现在我们再找局域网的其他一台主机B,直接ping这个ip地址192.168.0.7,会发现根本不能通,是因为其他主机B没有到达192.168.0.7的路由,这里我们给主机B加一个直连路由
route add -net 192.168.0.0/24 dev ens33
# 此时再去ping,发现可以ping通192.168.0.7了
最后再来讲解下网络路由的例子
网络路由
网络路由的优先级介于主机路由和默认路由之前,精度越高,优先级越高。
实验步骤:配置路由,使A主机192.168.1.100/24能ping通B主机192.168.0.100/24
准备5台Linux虚拟机,两台模拟A、B主机,三台模拟路由器R1,R2,R3,模拟路由器的主机必须有两块网卡
第一种配置方法:
在R1路由器上,配置两条路由记录,分别到达10.0.0.0/8和192.168.0.0/24网段
ip route add 10.0.0.0/8 via 172.16.0.3
ip route add 192.168.0.0/24 via 172.16.0.3
在R2路由器上,配置两条路由记录,分别到达192.168.0.0/24和192.168.1.0/24两个网段
ip route add 192.168.1.0/24 via 172.16.0.2
ip route add 192.168.0.0/24 via 10.0.0.3
在R3路由器上,配置两条路由记录,分别到达172.16.0.0/16和192.168.1.0/24网段
route add -net 172.16.0.0/16 gw 10.0.0.2
route add -net 192.168.1.0/24 gw 10.0.0.2
第二种配置方法:
即然要求是只关心主机A能否ping到主机B,所以只配置到达对方网段的路由,不配置中间路由:
在R1路由器上,配置一条路由记录,只到达192.168.0.0/24网段
ip route add 192.168.0.0/24 via 172.16.0.3
在R2路由器上,配置两条路由记录,分别到达192.168.0.0/24和192.168.1.0/24两个网段
ip route add 192.168.1.0/24 via 172.16.0.2
ip route add 192.168.0.0/24 via 10.0.0.3
在R3路由器上,配置一条路由记录,只到达192.168.1.0/24网段
route add -net 192.168.1.0/24 gw 10.0.0.2
第三种配置方法:
通过配置默认路由实现:
在R1路由器上,只配置默认路由
ip route add default via 172.16.0.3
在R2路由器上,配置两条路由记录,分别到达192.168.0.0/24和192.168.1.0/24两个网段
ip route add 192.168.1.0/24 via 172.16.0.2
ip route add 192.168.0.0/24 via 10.0.0.3
在R3路由器上,只配置默认路由
ip route add default via 10.0.0.2
永久生效的方法是创建相应网口的路由文件,/etc/sysconfig/network-scripts/route-ethX,内容DEST/netmask via NEXTHOP