分类: LINUX
2009-10-11 22:42:27
小方老师教的网络实验
实验目标:在虚拟化环境下,掌握网卡绑定的设置,建立有NAT规则的防火墙,修改路由规则,建立初步的计算机网络概念。
实验环境:rhel5.4,虚拟化安装,并在上面建立三个虚拟机
实验步骤:
l 虚拟化安装,并在上面建立三个虚拟机(Server,apple,orange),其中每个domainU均为4G,默认分区方法,内存为128M,采用virt-clone方法
l 通过修改配置文件分别为Server,apple,orange建立2,3,2个网卡,其中apple和orange分别把两个网卡绑定,另外在domain0上建立两个网桥
l 将各个虚拟机通过桥接的方式连接起来,具体搭建方式如下图所示
l 测试各虚拟机的连通性
l 在Server上建立NAT规则,观察网络的变化
l 修改路由规则,使得虚拟机能通过domain0与外界通信
实验详细过程以及遇到的问题(没有截图)
1. 首先,虚拟化安装domain0,然后在上面安装server虚拟机。其中,在虚拟机用的是网络安装(安装树在192.168.0.254上,通过http服务访问),但是这里出了问题:就是如果在建立PV时用的是
2. 下面开始用virt-clone克隆apple和orange.
#virt-clone –original server –name apple –file /var/lib/xen/images/apple.img
#virt-clone –original server –name orange –file /var/lib/xen/images/orange.img
每个domainU的克隆大概5分钟就能完成
并在配置文件/etc/xen/server,apple,orange上修改设备,添加网卡
3. 下面开始根据上图为创建相应的网络接口。首先,在domain0上创建2个网桥,bridge0和bridge1,这里的网桥相当与交换机的功能。
#vi /etc/sysconfig/network-scripts/ifcfg-bridge0
DEVICE=bridge0(设备名称)
BOOTPROTO=static(获得ip地址的方式)
TYPE=Bridge(设备类型)
ONBOOT=yes(是否自启动)
#vi /etc/sysconfig/network-scripts/ifcfg-bridge1
DEVICE=bridge1(设备名称)
BOOTPROTO=static(获得ip地址的方式)
TYPE=Bridge(设备类型)
ONBOOT=yes(是否自启动)
在apple上将两个网卡绑定
#ifdown eth0(将网卡关闭才能修改相关的配置文件)
#ifdown eth1
#vi /etc/sysconfig/network-script/ifcfg-eth0
添加以及修改如下:
ONBOOT=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=static
#vi /etc/sysconfig/network-script/ifcfg-eth1
添加以及修改如下:
ONBOOT=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=static
这样就将eth0和eth1(注意,这里的eth0和eth1在虚拟机配置文件中应该写成桥接到birige0上的设备,要注意核对该设备对应的MAC地址)
#vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.100.100
NETMASK=255.255.255.0
注意,要添加绑定设备,还需要添加驱动模块
#vi /etc/modprobe.confg
Alias bond0 bonding
Options bond0 miimon=100 mode=1(主备模式),use_carrier=0
此时可以启动bond0设备(由于需要在orange也做相同的网卡绑定,只是ip设为192.168.200.100)
另外,在apple上还有一个网卡设备eth2,由于已经在配置文件中将其设置为动态获得ip地址的方式,这里获得的地址为192.168.0.100。另外在server的配置文件中,以及将eth0桥接到bridge0上,并且ip设置为192.168.100.254;eth1桥接到bridge1上,ip为192.168.200.254
此时,已经完成上图的网络配置,如果在
apple# ping 192.168.100.254(成功,因为使用了bridge0作为交换机,并且在同一个子网内,所以能成功Ping通)
类似地,
Orange#ping 192.168.200.254(可以ping 通)
但是如果
Apple#ping 192.168.200.100(也就是在apple上ping orange)
发现ping不通,看看上图,可以发现他们之间的物理链路是连同的,只是在servers上的eth0和eth1没有互相转发而导致不通,后来问小方,他说这是因为当server没有开启转发forward功能。需要做如下改动
#vi /etc/sysctl.conf里面
net.ipv4.ip_forward=1
或者修改/proc/sys/net/ipv4/ip_forward为1(运行时的参数,即使修改也不能开机后保存,所以最好还是使用修改系统配置文件的方法,并需要使用sysctl –p将当前系统参数更新到内核中)
此时,apple和orange能互通。
4. 在apple和orange上删除和添加网卡,主要使用下面的命令
#virsh detach-interface apple bridge –mac mac地址
此时与orange还是能ping通,证明了绑定的两个网卡在同一网络设备上,只要其中一个坏了,还是能保证网络的连通性,这种方式能提高系统的可靠性。
另外,可以使用如下命令添加网卡
#virsh attatch-interface apple bridge bridge0 –mac mad地址
5. 下面可是在server中设置NAT,使得从eth1出去的包都认为是来自192.168.200.254
Server#iptables –t nat –A POSTROUTING –o eth1 –j SNAT –to-source 192.168.200.254
Server#service iptables save
此时,可以通过在apple上ping 192.168.200.100然后再在orange端使用tcpdump来查看数据包,可以看到虽然包来自于192.168.100.100,但是在tcpdump看到的是200.254表明Server将其伪装了,清除刚才建立的NAT规则可以使用命令#service iptables stop
6. 最后,通过看上图可以看到只有apple是与外界相连,所以可以通过修改apple上的路由表,使得这几个虚拟机都可以与外界互通。使用route查看当前系统的路由表,只要添加192.168.0.0/24的网络号,其出口是eth2,而且默认网关是外界的地址(192.168.0.253)
这样,只要想外发,就会通过eth2而出去,相应地也可以添加其他路由。
实验总结:
在做这个实验过程中,另我印象最深刻的就是需要设置转发功能,才能使几个虚拟机连通起来,难道这不可以通过修改路由表来实现么?由于做实验的时间有限,这个问题还没来得及解决。还有,就是当遇到ping不通的很多时候,可以先看看当前系统的路由表,看看有没有相关的路由条目,还要注意默认路由能不能真正转到目标地址。最后,还通过这个实验看到NAT神奇伪装,觉得计算机网络真博大精深。另外,通过这个实验,实例化了很多概念,如绑定,NAT等,以及加深了计算机网络的认识。