Linux中设置路由以及虚拟机联网图文详解
什么是路由?
路由,是指通过相互连接的网络把数据包从源站传送到目的站的活动,在路由过程中数据包通常会经过一个或多个中转节点(即路由器),这些沿途的路由器会沿着一条最佳路径转发数据包,直至目的地。
什么是路由器?
路由器用于连接不同的网络,是网络之间互相连接的枢纽。路由器的主要工作是为经过路由器的每个数据包寻找一条最佳传输路径,并将该数据有效地传送到目的地。
什么是网关?
网关(GATEWAY)是在网络层以上实现网络互连。
实验1:模拟路由器,让不在同一网段的两台主机可以ping通
首先,要确定哪个虚拟机要设置成路由器,并为这台虚拟机添加两个网卡。我这里是将server端设置为路由器。
在真机中,切换到超级用户root,输入命令:virt-manager
双击server,点击“灯泡”
选择Add Hardware ――>network――>Device model:选择virtio――>Finish
然后给它设置两个不同网段的ip,我这里设置的是172.25.254.224和1.1.1.224
将另一个虚拟机的ip设置为1.1.1.124
将设置为路由器的那台虚拟机和同网段的主机ping一下,看看能不能ping通。
在路由端:
sysctl -a | grep ip_forward ##查看内核路由是否开启,1是打开,0是未开,如果不能通信说明为未开。
未开启,在/etc/sysctl.conf文件中写入:
sysctl -p 目的是让它生效:
在防火墙开启的情况下,开启永久防火墙伪装:
在客户端此时未设置网关,我们在/etc/sysconfig/network中设置网关(1.1.1.224),重启网络。
最后在客户端尝试ping172.25.254网段,发现成功了。
也能登陆真机
over!
实验2:虚拟机联网
主要思想是将真机模拟为一个路由器
此时真机连上网了,可以ping通百度,查看真机的IP
sysctl -a | grep ip_forward ##查看内核路由功能是否开启 systemctl start firewalld ##打开防火墙 firewalld-cmd --add-masquerade ##开启防火墙伪装
在客户端,将ip设置为和真机一个网段,我设置的是172.25.254.124
把网关设置为真机ip172.25.254.1,重启
ping百度的ip183.232.231.172
可以通过输入ip地址访问百度了!
over!
注意:修改网关有两种方式:
vim /etc/sysconfig/network-scripts/ifcfg-eth0 ##设置单独的网卡的网关 vim /etc/sysconfig/network ##设置全局网关
设定全局网关对所有的网卡都生效,访问外网时将所有的数据包都扔给这个网关。这两种方式设定完成后都要重启网络。