实战作业4,实验环境下Linux主机之间实现跨网段通信

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实战作业4,实验环境下Linux主机之间实现跨网段通信相关的知识,希望对你有一定的参考价值。

更多内容请点击:

Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~) 

http://blog.51cto.com/13683480/2095439


实验目标:

        用vmware多台虚拟机模拟,实现主机间的跨网段通信(相互之间能ping通)。

实验要求:

        主机A 和 主机B 之间实现通信,中间至少跨越3个路由器(linux主机模拟路由器)

准备工作:

        至少5台虚拟机。

        由于本身只安装了centos6.9,centos7.4,redhat5.4 三台虚拟机,所以临时克隆了另外两台centos6,接下来将会以

        centos6充当主机A,centos7充当主机B

        redhate5和另外两台克隆机将分别命名R1,R2,R3,充当临时路由器

地址规划:
       由于要求实现主机间的跨网段通信,所以需要将不同的终端配置不同网段的地址,

        A: 192.168.6.45/24        
        B: 172.20.7.100/16
        R1    eth0:192.168.6.1/24    eth1: 10.6.0.1/16
        R2    eth0: 10.6.0.2/16        eth1: 10.0.0.1/8
        R3    eht0: 10.0.0.2/8        eht1: 172.20.0.1/16   


实现过程:


        1.    大致流程图

    技术分享图片

        2.    按照需要给不同主机加配网卡   

            充当路由使用的R1,R2,R3主机加配一块网卡,主机A 和主机B 有一块可用网卡即可

      技术分享图片

      

        3.    开启虚拟机并登陆

            为了查看方便,分别修改一下redhat5和两台克隆centos6的主机名为R1,R2,R3

            由于是临时修改,所以使用hostname命令直接修改,而且重新登录即可,如图,3台主机重复执行即可

            技术分享图片

            技术分享图片

           

            需要注意的是,当在R2和R3上通过ifconfig命令查看的时候,发现此地没有eth0的网卡,而直接是 eth1 和eth2

    

            这是由于R2和R3并非正常安装的虚拟机,而是通过克隆而来的

            

            技术分享图片


       

        4.    CentOS 6修改网卡名称:                         

         

                当然,名称的不同使用起来并没有什么区别,但是我们已经不想去修改已经规划好的流程图了,所以这里我们直接修改网卡名称


                centos6环境下,使用cd命令进入/etc/udev/rules.d/目录下,可以查看到:

                技术分享图片

               

                 其中70-persistent-net.rules就是网卡名称的配置文件

              

                当然,也可以使用  vim   /etc/udev/rules.d/70-persistent -net.rules    命令直接打开


                技术分享图片

            

                如图,直接删除第一行,将最后一行的eth2 改成 eth0 ,保存退出


               修改不会立即生效,使用ethtool -i  命令查看网卡使用的驱动,发现都是e1000


               技术分享图片


                  使用modprobe -r e1000 卸载网卡驱动

             

                  在使用modprobe e1000 启用网卡驱动,使用ifconfig命令,可以看见网卡名称已经修改:


                接着在R3上重复相同的操作即可


                技术分享图片

          

       5.    配置IP地址        

                当然,我们可以通过ifconfig eth0 直接配置IP地址,比如

                技术分享图片


                但是这种情况下只要一重启,地址就会丢失,所以,这里我们通过修改配置文件的方式来修改地址

                

                使用cd /etc/sysconfig/network-scripts

                

                可以查看到此目录下有ifcfg-eth0的文件


                技术分享图片

               

                使用vim ifcfg-eth0打开此文件

                技术分享图片

               

                我们可以看到此文件包含的的内容,几乎全是变量赋值,其他选项暂时不去关注,我们现在需要做的是把

                BOOTPROTO=这一项默认的值是dhcp,需要改成 static 或者 none,

                之后就可以添加IP地址了:

                对于A主机而言,添上两行就可以了:

                IPADDR=192.168.6.45

                NETMASK=255.255.255.0     这一项也可以写成 PREFIX=24,效果一样

                保存退出,使用

                service network restart 重读配置文件

                接着使用ifconfig查看,地址已经修改成功了

                技术分享图片

                技术分享图片

      

             同样的操作修改R1,由于redhat5.4的版本比较老,所有此文件中的内容会不一样,同样不去做过多关注,只修改我们需要的几项即可

                技术分享图片

              

               而且由于R1有两张网卡,所以eth0 和eth1 需要分别配置,然后依然执行service network restart命令重启网络服务,可以看到配置已经生效


                技术分享图片

                

                值得注意的是,R2和R3主机,默认是没有ifcfg-eth1 这个文件的,我们是用cp命令直接将ifcfg-eth0复制一份,然后修改可以

                

                技术分享图片

                另外,对于R2和R3,还是因为克隆的原因,使用service network restart命令的时候会出现错误

                技术分享图片

                            

                特别提醒,这是由于NetworkManager 这个服务的原因,这个服务在centos6上有冲突,会导致网卡无法启动

                使用service NetworkManager stop            命令可以关闭此服务

                另外使用 chkconfig NetworkManager off    可以禁止此服务开机启动

                再次使用service network restart命令,网卡启动成功,使用ifconfig命令成功获得地址

                技术分享图片

                技术分享图片

                

                同理在  R3 上做同样修改。

                技术分享图片

              

                最后是centos7,也就是A主机, 需要注意centos7上的默认第一块网卡名称为ens33,且重启网络服务的命令为:

                systemctl restart network

                其他并没有大的区别:

                技术分享图片

      

        6.    添加路由

             到这里地址配置的工作就完成了。

                但是此时A和B两台主机之间是无法通信的,比如我们在A主机上ping B主机

                技术分享图片

                

                为了主机A和主机B 之间通信,必须配置路由,这是本次实验最重要的一环。我们在查看一下流程图和规划配置

                技术分享图片

              

                A: 192.168.6.45/24        
                B: 172.20.7.100/16
                R1    eth0:192.168.6.1/24    eth1: 10.6.0.1/16
                R2    eth0: 10.6.0.2/16        eth1: 10.0.0.1/8
                R3    eht0: 10.0.0.2/8        eht1: 172.20.0.1/16


    主机A路由配置:

                还是从A主机开始,由于规划的网络环境相对简单,A主机只与R1相连,因此在这里我们只需要添加一条路由就可以了,不管是主机路由,网络路由,默认路由都可以,但是使用的网关必须是R1路由器的eth0

                

                使用route add -host 172.20.7.100 gw 192.168.6.1 添加主机路由

                另外使用route add default gw 192.168.6.1 添加一条默认路由


                技术分享图片


     R1  路由配置

                接下来,对于R1,由于R1和主机A在同一网段,所以不需要添加主机A路由,只需要添加主机B 或者网段4的路由记录即可,但是考虑到实际情况,网段3上也可能出现相连的主机,所以在此我们把网段3的路由也添加上


                使用:   route add -net 172.20.0.0/16 gw 10.6.0.2    添加网段4 路由记录    下一跳记录指向R2的eth0端口

                             route add -net 10.0.0.0/8    gw  10.6.0.2       添加网段3路由记录    下一跳记录指向R2的eth0端口

                

                技术分享图片     


     R2    路由配置

                同理    R2 由于和网段2、网段3直接相连,所以只需要对应添加网段1 和网段4 的路由记录即可, 

                使用 :    route add -net 192.168.6.0/24  gw 10.6.0.1    添加网段1路由记录,下一跳记录指向R1的eth1端口

                               route add -net 172.20.0.0/16    gw 10.0.0.2    添加网段4路由记录,下一跳记录指向R3的eth0端口

                技术分享图片


    R3     路由配置

                由于R3与网段3、网段4直接相连,所以需要添加网段1和网段2的路由记录

                使用:    route add -net 192.168.6.0/24 gw 10.0.0.1    添加网段1路由记录,下一跳指向R2的eth1端口

                              route add -net 10.6.0.0/16  gw 10.0.0.1         添加网段2路由记录,下一跳指向R2的eth1端口

                

                技术分享图片


    主机B 路由配置

                由于B只有与R3相连这一条网络出口,所以只需要添加一条默认路由即可,这里我们同时也加上一条到主机A的主机路由

                这里需要注意,对于centos7而言,如果在ifcfg-ens33配置静态地址的时候,如果不加上

                GATEWAY=*.*.*.*

                将无法配置默认路由,而如果加上这一行,使用 systemctl restart network重启网络服务的时候会自动添加一条默认路由

                 所以这里我们只需要将配置文件网关(GATEWAY)=172.20.0.1     同时使用route add -host 192.168.6.45 gw 172.20.0.1    添加主机A的主机路由即可

                 技术分享图片


    7.    连接测试

              首先,直接在A主机上对主机B的IP地址使用ping命令

                技术分享图片


                很遗憾,第一次测试失败,原因就是,linux默认不支持直接当做路由器使用,即,linux主机可以接受到数据,但是如果数据的目标地址不是自己的话,会直接丢弃而不会转发出去

            

                这里我们需要对R1,R2,R3这三台充当临时路由器的主机进行配置

    

                使用 echo 1 > /proc/sys/net/ipv4/ip_forward 命令可以开启核心路由转发功能,对于目标地址非本机的数据,不会抛弃,而是根据路由地址进行转发。

                技术分享图片

                技术分享图片

                技术分享图片


                配置完成之后再次尝试在A主机上ping 主机B的ip地址 172.20.7.100,结果发现还是不通


                技术分享图片

   

                注意此时的报错提示:Destination Host Prohibited ,目标主机禁止

    

                这种情况一般是由于防火墙的原因            

    

                为了方便测试,使用 service iptables stop 命令分别关闭主机A,R1,R2,R3的防火墙功能

                

                对于B主机,由于是centos7系统,需要使用 systemctl stop firewalld 命令关闭防火墙

    

                再次测试:

        

                技术分享图片


                可以看到结果已经OK,主机A(Centos6) 和主机B (centos7)经过4个网段,中间跨过3次路由器(R1,R2,R3)实现了通信功能。


        8.   小结

            

                虽然只是一个小小的实验,但在实现的工程中也并不是顺风顺水,一步到位的。中间出现了很多问题。


                比如网卡名称修改之后一直无法启动,原因是centos6系统 NetworkManager服务不是很支持。

            

                还有centos7添加默认路由一直不成功,原因是没有添加默认网关


                还有就是最最最让我头疼的,一度困扰了很久的问题就是:    Destination Host Prohibited,就是这个报错,这里我反复检查了N次路由配置,甚至重启重来,最后更换路由主机,都没有解决问题。


                最后却发现问题出在防火墙上,原本很简单的一条命令就能解决的问题,却困扰了我最久。 我以为我知道的,却还是忽略了。


                事实上不管做什么事情都是这样,你以为你会的,不一定是真正掌握的。


                送给你一句话,也是马永亮马哥反复强调的:


                只有经过不断反复的练习和实践,知识才能变成真正有用的技能。






以上是关于实战作业4,实验环境下Linux主机之间实现跨网段通信的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix通过proxy的被动模式代理来跨网段监控Linux主机

实践案例:Zabbix通过Proxy被动模式代理跨网段监控Linux主机及应用

Docker容器跨主机多网段通信解决方案

主机间路由实验

任务4-1:配置跨交换机实现 VLAN方式操作

路由-静态路由实现非三层转发跨网段通信