这个问题来源在于,我虚拟机连不上网,我使用route -n 查看我的路由表之后,看见没有本地对应的网关。使用service network restart时候,多了一个本地的默认网关,如下图所示:
为什么会出现以上情况?这就引出了路由器与网关的关系,以及Linux中路由与网关的的一些操作,以下是我查找一些资料的整理,都是基于我目前知识的整理。
为什么有网关、路由器,以及为什么要设置它
本质上就是实现计算机联网、相互通信
网关
网关是一个逻辑概念,是一个ip地址,只有设置好网关的ip地址,TCP/IP协议才能实现不同网络之间的通信。
网关的ip的地址是具有路由地址的ip地址。
现在又网络A、B。网关的功能就是:如果网络A中主机发送数据包的目的主机不在本地网络中,就把数据包发送don给网络A中路由表中对应的网关。
继而由网络A的网关发送数据包给网络B的网关,网络B的网关再转发给网络B中的某个主机。
一台主机可以由多个网关,一个网关里面可以有多台主机。
网关分为默认网关和自动网关。
默认网关: 默认网关必须是自己的ip地址所在的网段,如果一台主机的数据包找不到可用的网关,那么就数据发送给默认指定的网关,由这个网关来处理数据包。
自动网关:自动网关就是利用DHCP来自动给网络中的电脑分配ip地址、子网掩码、和默认网关。一旦更改了变化只需更改DHCP服务器的设置,那么所有的电脑均得到了默认网关的ip地址,使用与规模较大、TCP/IP参数可能变动的网络。
IP路由器(路由器)
正如上述所说,如果两个主机A、B并不能通信。那么就需要路由器来决定如何发送报文。那么路由器如何决定发送报文,或者说路由器发送报文的原理以及工作机制是什么呢?
我们使用route -n时会有一张路由表,此表再IP层维护着。路由表就是用来决策数据报文接下来的走向。
数据包的路由如下:
当我们接收到报文时,IP层先检测目的IP是否和主机自身的IP相同。
如果数据报文中的IP地址时主机自身的ip地址,那么报文发送到传输层协议中。
如果不是主机自身IP地址,那么就从主机配置的路由功能去找入口,进行报文转发,否则数据包丢弃。
出现开头的问题就是很明了了,就是因为本地路由没有设置网关,导致报文丢失。
那么我们来看看route -n 的具体内容
Destination 表示目的ip,这里时默认网关的意思,表示所有对网卡eth2的报文由网关192.168.109.78进行转发。
上述资料参考链接:https://blog.csdn.net/hzhsan/article/details/44059861
路由的功能
1、最基本的功能是实现不同网段数据之间的跨网段之间通信
2、根据路由规则进行路由选择
网关的功能
1、不同网段数据之间的跨网段之间通信
2、路由选择
3、默认路由
4、NET转换,(有点像之前公司里面做的ip映射,就是局域网访问外网,装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接)(现在先进行了解一下,后续有机会深入进行了解)
先学习配置默认网关
临时添加:route add default gw ip 临时删除: route del default gw ip 永久操作:编辑/etc/sysconfig/network-scripts/eth0
当然还有更加复杂的添加路由的命令,我们后续可以继续学习