Linux中网关和路由器

时间:2024-02-23 17:00:13

这个问题来源在于,我虚拟机连不上网,我使用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

当然还有更加复杂的添加路由的命令,我们后续可以继续学习