掌握Linux路由这一篇就够了!

交换与路由

交换: 指同网络访问。两台机器连在同一个交换机上,配置同网段的不同ip就可以直接通迅 (这里不讨论三层交换).

路由: 指跨网络访问的路径选择

路由表: 指记录路由信息的表(可以单路由表,也可以多路由表)

问题1: 按上面的路由表来看,如果要访问10.1.1.1这个IP,请问会怎么走?

答: 会通过10.1.1.0/255.255.255.0这个路由条目后面指示的ens33网卡去寻找10.1.1.1。

问题2: 按上面的路由表来看,如果要访问119.75.217.26这个IP,请问会怎么走

答: 会通过网关10.1.1.2去寻找。

当在一台linux机器上要访问一个目标ip时,请记住linux以下四步口诀(在linux默认的单路由表情况下,如果想更深 入了解多路由表,请看课外拓展内容):

如果本机有目标ip,则会直接访问本地; 如果本地没有目标ip,则看第2步

用route -n查看路由,如果路由条目里包含了目标ip的网段,则数据包就会从对应路由条目后面的网卡出去如果没有对应网段的路由条目,则全部都走网关如果网关也没有,则报错:网络不可达(注意: 当不能直接到达目标ip, 那么每到达一个机器都会重复上面四步,直到找到目标) 问题3: 为什么route -n能看到这几条路由(不同机器可能还不一样)

答:因为本机ens33这个网卡有10.1.1.0/24这个网段的IP,所以就会默认产生类似下面的路由条目

10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33

169.254.0.0/24是保留网关

10.1.1.2是配置的网关

问题4: 加网关有什么要求? 如何加网关和删除网关? 加网关的要求:

网关只能加路由条目里已有的路由网段里的一个IP (ping不通此IP都可以) 加网关不需要指定子网掩码

临时配置与删除(立即生效,重启网络服务就没了)

# route add default gw x.x.x.x # route del default gw x.x.x.x

永久配置(如果机器有多张网卡,只需要一张网卡配置网关, 网关要与配置的网卡同网段)

在/etc/sysconfig/network-scripts/ifcfg-ens33配置文件里加上

GATEWAY=x.x.x.x

linux静态路由

环境准备: 四个网段,四台机器(全部清空iptables规则)

1.1.1.0/24网段使用vmnet1网段来模拟(仅主机模式)

2.2.2.0/24网段使用vmnet2网段来模拟(仅主机模式)

3.3.3.0/24网段使用vmnet3网段来模拟(仅主机模式)

4.4.4.0/24网段使用vmnet4网段来模拟(仅主机模式)

ip_forward: linux内核里的一个参数.当两边机器不同网段IP通过中间双网卡机器进行路由交互时,需要将此参数值改为1,也就是打开ip_forward。打开方法如下:

1.在vm1上ping1.1.1.2,能不能通? 如果不能通怎么解决?

分析方法:源IP: 1.1.1.8 目标IP: 1.1.1.2,按照前面的四步口诀,达到目标后,源和目标IP反转并能成功返回则表示能通; 否则不能通

结果:能通

2.在前面ping通的基础上,继续在vm1上ping2.2.2.2,能不能通? 如果不能通怎么解决?

结果:不能通.

解决:在VM1上加网关指向1.1.1.2

3.在前面ping通的基础上,继续在vm1上ping2.2.2.3,能不能通? 如果不能通怎么解决?

结果:不能通.

解决:在VM3上加网关指向2.2.2.2.还要打开VM2的ip_forward

4.在前面ping通的基础上,继续在vm1上ping3.3.3.3,能不能通? 如果不能通怎么解决?

结果:不能通

解决:在VM2上加网关指向2.2.2.3

5.在前面ping通的基础上,继续在vm1上ping3.3.3.4,能不能通? 如果不能通怎么解决?

结果:不能通

解决:在VM4加网关指向3.3.3.3,还要打开VM3的ip_forward

6.在前面ping通的基础上,继续在vm1上ping4.4.4.4,能不能通? 如果不能通怎么解决?

结果:不能通

错误解决:在vm3加网关指向3.3.3.4是不行的,这样的话vm3一张路由表就会产生两个网关。 正确解决:在vm3上加路由

route add -net 4.4.4.0 netmask 255.255.255.0 dev ens37

猜你喜欢

转载自blog.csdn.net/itcast_cn/article/details/89138475