交换与路由

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

03e3173fb802e57d9f026a211c7abc71.png

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

6516a9a3e7e6535ef4f22e27fc510ccb.png

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

7222c5158c413fb0e910b5b1ced336e0.png

ee3fbc09a0cd166343d29f704582cea9.png

问题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步

  1. 用route -n查看路由,如果路由条目里包含了目标ip的网段,则数据包就会从对应路由条目后面的网卡出去
  2. 如果没有对应网段的路由条目,则全部都走网关
  3. 如果网关也没有,则报错:网络不可达

注意: 当不能直接到达目标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网段来模拟(仅主机模式)

1a87c6e466cd14c7e0e3442f389a6094.png

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

4cd292fd0f6ef63fb91e8d67682f42a0.png

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

ccffe6204a589f83880a0de2999cb6d1.png

原作者:黑马程序员

原平台:黑马程序员百家号

原链接:黑马程序员:掌握Linux路由,这一篇就够了!

Logo

更多推荐