实战作业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次路由配置,甚至重启重来,最后更换路由主机,都没有解决问题。

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

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

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

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

原文地址:http://blog.51cto.com/13683480/2113233

时间: 2024-10-07 11:24:07

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

多台linux主机之间建立免密通信

多台linux主机之间设置免密通信 例:A 向 B设置免密通信 第一步 A生成密钥对 ssh-keygen -t rsa -t 指定秘钥的类型 rsa 秘钥类型 密钥目录:/root/.ssh/(如果是root账户,注意:不同用户之间不共享密钥对) 私钥 id_rsa 钥匙 公钥 id_rsa.pub 锁 第二步 编辑B主机root账户下(其他账户同理)认证文件 vi /root/.ssh/authorized_keys 将之前A主机生成的公钥id_rsa.pub内容复制到B主机的authori

Linux主机之间权限访问与开通

 近段时间,在测试和部署 Greenplum集群,在集群一开始部署的时候,以及后面测试的一些高可用功能时,都涉及到的Linux主机之间的访问权限问题. 在排查好这写问题后,有必要进行一下访问权限的梳理和总结,以便以后避免这个问题. 对于Linux主机而言,主机之间的访问,主要涉及几个问题: IP地址,ssh协议,selinux限制,iptables防火墙,/etc/hosts.allow 服务器限制. 这几个方面相互关联,其中又以ssh协议是核心和关联: ssh 协议决定了服务器连接的端口,

两台Linux主机之间文件的复制

使用scp命令可以实现两台Linux主机之间的文件复制,基本格式是: scp [可选参数] file_source file_target 1. 复制文件 命令格式: scp local_file [email protected]_ip:remote_folderscp local_file [email protected]_ip:remote_filescp local_file remote_ip:remote_folderscp local_file remote_ip:remote_

SylixOS AMP下跨网段通信

适用范围本方法适用于SylixOS AMP下配置有虚拟网络设备的跨网段通信.内核版本:1.7.3,硬件平台:TMDSEVM6678LE. 背景在近期构建的DSP6678工程中,0核运行SylixOS lite版,1-7核运行SylixOS动态加载版.其中只有0核能够使用有线网络,1-7核无法使用,使得无法通过网络调试和动态加载应用程序.然而每个核配置了虚拟网络,该虚拟网络基于共享内存实现.此时,需要配置网络,使得PC端能够通过DSP板卡上的有线网口与所有核通信. 网络拓扑图图 3 1是PC与TM

vmware虚拟机环境下linux网卡做bond配置

vmware workstation 12 常规真机环境下,给网卡做bond配置如下(假设是bond0): 1.ifcfg-eth0 DEVICE=eth0 ONBOOT=yes MASTER=bond0 BOOTPROTO=none SLAVE=yes 2.ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none MASTER=bond0 SLAVE=yes ONBOOT=yes 3.ifcfg-bond0 DEVICE=bond0 BOOTPROTO=static IPAD

hadoop搭建杂记:Linux下不同linux主机之间文件copy的scp命令

不同的Linux之间copy文件常用有3种方法: 不同的Linux之间copy文件常用有3种方法: ①ftp 就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的程序来进行文件的copy. ②采用samba服务 就是类似Windows文件copy 的方式来操作,比较简洁方便. ③利用scp命令来进行文件复制. scp是安全机制的文件copy,基于ssh登录.操作起来比较方便,比如要把master机当前一个文件copy到slave1机上,可以如下命令. scp ./test

利用rz、sz命令在Windows主机和Linux主机之间传送文件

当我们在Windows上使用xshell连接Linux主机,需要向Linux主机传送文件或者从Linux主机上获取文件时,可以使用rz和sz命令来完成,rz和sz的好处在于简单方便只要在终端输入命令即可开启文件传输. rz:运行该命令,Linux主机接收文件,相对于Windows主机来说是向Linux主机传送文件. sz:运行该命令,Linux主机发送文件,相对于Windows主机来说是从Linux主机获取文件,sz命令后接要发送的文件. 当然,rz和sz在Linux上默认是没有安装的,这里我们

linux主机之间文件copy

linux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录: ================== scp 命令 ================== scp 可以在 2个 linux 主机间复制文件: 命令基本格式:        scp [可选参数] file_source file_target ====== 从 本地 复制到 远程 ====== * 复制文件:         * 命令格式:                 scp local_file [email p

Windows与Linux主机之间的连接和交互工具

1.Putty 远程连接Linux主机 Windows主机上安装putty,工具打开后显示如下: 输入要连接的Linux主机的IP地址,点击Load,连接主机后输入用户名密码,即可登录Linux主机 2.WinSCP 文件传输工具 在Windows主机上安装WinSCP后,可以远程连接Linux主机,两台主机间可进行文件的相互传输,也可以直接对Linux主机上的文件进行查看.编辑.删除等操作 (1)工具打开后显示如下: (2)输入要连接的Linux主机的IP地址,用户名密码,登录成功后显示如下: