Linux中设置路由以及虚拟机联网图文详解

什么是路由?

路由,是指通过相互连接的网络把数据包从源站传送到目的站的活动,在路由过程中数据包通常会经过一个或多个中转节点(即路由器),这些沿途的路由器会沿着一条最佳路径转发数据包,直至目的地。

什么是路由器?

路由器用于连接不同的网络,是网络之间互相连接的枢纽。路由器的主要工作是为经过路由器的每个数据包寻找一条最佳传输路径,并将该数据有效地传送到目的地。

什么是网关?

网关(GATEWAY)是在网络层以上实现网络互连。

实验1:模拟路由器,让不在同一网段的两台主机可以ping通

首先,要确定哪个虚拟机要设置成路由器,并为这台虚拟机添加两个网卡。我这里是将server端设置为路由器。
在真机中,切换到超级用户root,输入命令:virt-manager

Linux中设置路由以及虚拟机联网图文详解

双击server,点击“灯泡”

Linux中设置路由以及虚拟机联网图文详解

选择Add Hardware ――>network――>Device model:选择virtio――>Finish

Linux中设置路由以及虚拟机联网图文详解

然后给它设置两个不同网段的ip,我这里设置的是172.25.254.224和1.1.1.224

Linux中设置路由以及虚拟机联网图文详解

将另一个虚拟机的ip设置为1.1.1.124

Linux中设置路由以及虚拟机联网图文详解

将设置为路由器的那台虚拟机和同网段的主机ping一下,看看能不能ping通。

Linux中设置路由以及虚拟机联网图文详解

在路由端:

sysctl -a | grep ip_forward ##查看内核路由是否开启,1是打开,0是未开,如果不能通信说明为未开。

Linux中设置路由以及虚拟机联网图文详解

未开启,在/etc/sysctl.conf文件中写入:

Linux中设置路由以及虚拟机联网图文详解

sysctl -p 目的是让它生效:

Linux中设置路由以及虚拟机联网图文详解

在防火墙开启的情况下,开启永久防火墙伪装:

Linux中设置路由以及虚拟机联网图文详解

在客户端此时未设置网关,我们在/etc/sysconfig/network中设置网关(1.1.1.224),重启网络。

Linux中设置路由以及虚拟机联网图文详解
Linux中设置路由以及虚拟机联网图文详解

最后在客户端尝试ping172.25.254网段,发现成功了。

Linux中设置路由以及虚拟机联网图文详解

也能登陆真机

Linux中设置路由以及虚拟机联网图文详解

over!

实验2:虚拟机联网

主要思想是将真机模拟为一个路由器
此时真机连上网了,可以ping通百度,查看真机的IP

Linux中设置路由以及虚拟机联网图文详解

sysctl -a | grep ip_forward ##查看内核路由功能是否开启
systemctl start firewalld ##打开防火墙
firewalld-cmd --add-masquerade ##开启防火墙伪装

Linux中设置路由以及虚拟机联网图文详解

在客户端,将ip设置为和真机一个网段,我设置的是172.25.254.124

Linux中设置路由以及虚拟机联网图文详解

把网关设置为真机ip172.25.254.1,重启

Linux中设置路由以及虚拟机联网图文详解

ping百度的ip183.232.231.172

Linux中设置路由以及虚拟机联网图文详解

可以通过输入ip地址访问百度了!

Linux中设置路由以及虚拟机联网图文详解

over!
注意:修改网关有两种方式:

vim /etc/sysconfig/network-scripts/ifcfg-eth0 ##设置单独的网卡的网关
vim /etc/sysconfig/network ##设置全局网关

设定全局网关对所有的网卡都生效,访问外网时将所有的数据包都扔给这个网关。这两种方式设定完成后都要重启网络。