您的位置:首页 > 其它

VMWare组网攻略

2016-07-29 00:00 197 查看
在实际情况中,在没有现实的网络环境的情况下,常常需要模拟网络的环境,利用 VMware 可以模拟一个虚拟局域网的环境,该虚拟局域网可以供那些没有网络环境的读者来测试、实践书中所介绍的入侵与防御技术。可以到 VMware 的官方网站“ http://www.vmware.com/ ”下载最新版本的 VMware Workstation 7.1.3 ,并在官方网站上注册获得一个免费使用三十天的序列号。安装完 VMWare Workstation 后, VMware 相当于一台裸机,需要为其安装操作系统。

当我们安装完成 VMware Workstation 后,我们会发现在网络连接里将多出两块虚拟网卡,即 VMWare Network Adapter VMnet1 和 VMWare Network Adapter VMnet8 。用 ipconfig 命令查看新增加的网卡的属性可以发现,这两块网卡分别属于不同的子网。在 Edit--->Virtual Network Editor 菜单中可以看到 VMWare Workstation 支持的虚拟局域网的个数( Windows 版本的支持 10 个虚拟子网,即 VMnet0-VMnet9 )。比如虚拟子网 VMnet8 ,子网 IP 是 192.168.48.0 ,是 NAT 模式(使用网络地址转换),默认网关地址为 192.168.48.2 。把虚拟网卡 VMWare Network Adapter VMnet8 连接到了这个子网上,虚拟网卡的 IP 在主机中可以看到是 192.168.48.1 。启用了本地的 DHCP 服务,并设置了能动态分配的 IP 地址范围 192.168.48.128-192.168.48.254 。
我们知道,要组网,就需要使用网卡、交换机等组网设备,同样地,在 VMware Workstation 中组网也需要使用这些设备,只不过在 VMware Workstation 虚拟的计算机和网络中,这些设备在形式上也都是虚拟的(但在功能上,它们跟真实的网络设备没有大的区别)。下面,我们就来看看 VMware Workstation 都为我们虚拟了哪些网络设备。
1 、交换机。 和一台物理交换机一样,一台虚拟交换机能把主机、虚拟计算机和其它网络设备连接在一起。在 VMware Workstation 安装后,交换机将根据组网的需要由 VMware Workstation 自动创建并自动使用,在 Windows 系列的主机上,您最多可用 10 台虚拟的交换机,但在 Linux 主机上,您可使用多达 256 台的虚拟交换机。通过 VMware Workstation 创建的虚拟交换机,您可以将一台或多台虚拟机连接到主机或其它虚拟机。
2 、网桥。 当您在主机和虚拟机之间使用 “ 桥接 ” 网络组网时, “ 网桥 ” 虚拟设备将被自动启用,该设备直接将虚拟机中的虚拟以太网适配器桥接到主机中的物理以太网适配器,能将您的虚拟机连接到主机所在的局域网( LAN )。这和 Linux 下一个网卡绑定两个不同地址类似,实际上是将网卡设置为混杂模式,从而达到侦听多个 IP 的能力。经它桥接的虚拟机,能和主机一样成为主机所在网络上的一台额外的 “ 真实 ” 计算机,能拥有主机所在局域网上的 IP 地址,能够使用主机所在网络上的所有服务,包括打印机、文件服务、网关以及其它服务;同样地,主机、主机所在网络上的任何物理计算机以及其它虚拟机也都可以使用由它提供的所有资源或服务。从 Virtual Network Editor 中可以看到, VMnet0 默认设置为桥接模式。
3 NAT 适配器。 该设备在 VMware Workstation 安装时为您的主机自动安装并在主机上显示为 “VMware Network Adapter VMnet8” 。该设备为主机和其它使用 NAT 网络类型的虚拟机提供了通讯接口,同时它还兼有 NAT ( Network Address Translation )也即网络地址转换的功能。如果您的主机通过另外一个以太网适配器连接在一个外部网络上,该设备能把本地网中虚拟机的 IP 地址转换为主机的外部网络地址,让虚拟机以主机的外部网络地址访问外部网络上的资源,包括虚拟机可以使用许多标准的 TCP/IP 协议连接到外部网络上的其他机器。例如,可以使用 HTTP 协议浏览网页,用 FTP 协议传送文件以及使用 Telnet 登录到其它计算机。但是,外部网络上的计算机不能建立到虚拟机的主动连接,这意味着你不能使用 NAT 网络中的虚拟机作为一个 Web 服务器发送 Web 页面到外部网络上的计算机。
这种方式也可以实现本机与虚拟机的双向访问。但外部网络上的其他机器不能访问虚拟机,虚拟机可通过本机系统用 NAT 协议访问外部网络的其他机器。 NAT 方式下 VMWare 自带的 DHCP 会默认地加载到 VMnet8 界面上 , 这样虚拟机就可以用 DHCP 自动获得 IP 地址,之后如果想每次启动都用固定 IP 的话,在虚拟机系统里直接设定这个 IP 即可。
4 、 Host-only 适配器。 仅主机适配器是一个标准的虚拟的以太网适配器,在主机的操作系统上,它在主机上显示为“ VMware Network Adapter VMnet1 ”,它只为主机和使用 Host-only 网络类型的虚拟机提供数据交换的接口,所以由主机和使用 Host-only 网络类型的虚拟机组建的网络是典型的私有内部局域网络。和 NAT 模式唯一不同的是这种方式下没有 NAT 服务,因此默认情况下只能进行虚拟机和主机之间的网络通信,既外部网络的其他机器不能访问虚拟机,虚拟机也不能访问外部网络的其他机器,这也是 Host-only 名字的意义。如果你喜欢你完全可以激活 VMnet1 子网的 NAT 服务,这样 VMnet1 就成为了另一个 NAT 模式的子网,与 VMnet8 子网一样。默认情况下,也会有一个 DHCP 服务加载到 VMnet1 上。这样连接到 VMnet1 上的虚拟机仍然可以设置成 DHCP ,方便系统的配置。是不是这种方式就没有办法连接到外网呢,当然不是。事实上,这种方式更为灵活,你可以使用自己的方式,从而达到最理想的配置。例如:
a )使用自己 DHCP 服务。首先停掉 VMWare 自带的 DHCP 服务,使 DHCP 服务更为统一。
b )使用自己的 NAT 以方便加入防火墙。 Windows 主机可以做 NAT 的方法很多,简单的如 Windows XP 的 Internet 共享,复杂的如 Windows Server 里的 NAT 服务。
c )使用自己的防火墙。因为你可以完全控制 VMnet1 ,你可以 VMnet1 和外网的网卡间加入(或试验)防火墙。
从以上可以看出, Host-only 这种模式和普通的 NAT Server 与整个内网上网的情形类似,因此你可以方便的进行与之有关的实验,比如防火墙的设置等。
5 、 DHCP 服务器。 DHCP (动态主机配置协议)服务在 VMware Workstation 安装时为您的主机自动安装,它是一个自动启动的服务(在控制面板 ---> 管理工具 ---> 服务中可以看到),它把您的主机变成了一台 DHCP 服务器,能为使用 Host-only 和 NAT 配置的虚拟机自动分配动态 IP 地址,比起手动为虚拟机分配静态固定 IP 地址来,它为分配 IP 地址提供了更为简单和自动化的方法。
6 、虚拟机的创建及其网络配置实例
这里 VMware Workstation 安装在 Window 7 中。我们在虚拟机中安装 Red Hat Enterprise Linux 6.0 。单击“ New Virtual Machine” 以创建新的虚拟机,选 ”Typical” 然后指定 RHEL 6.0 的映像文件,输入 Linux 的登录用户名和密码,然后可以指定系统的安装位置,分配的硬盘空间,单击 ”Customize Hardware…” 可定制虚拟机支持的虚拟硬件(也可以在安装完后设置)。系统安装完后,默认是使用自定义的 NAT 模式来连接外部网络。更改该虚拟机的 Network Adapter ,可以设置成使用 VMnet8 (也是 NAT 模式),当然也可以设置成使用其他模式。登录到 Linux 系统,网卡参数配置为 /etc/sysconfig/network-scripts/ifcfg-eth0 ,主机名配置为 /etc/sysconfig/network , DNS 配置文件为 /etc/resolv.conf 。也可以直接在右上角的网络管理器中配。如下:
( 1 ) NAT 模式:虚拟机设置成使用 VMnet8 。
IP : 192.168.48.130 ,要与 192.168.48.1 在同一个网段的不同地址,或者也可以配置成 DHCP 方式,这时 VMnet8 必须是启用了 DHCP 服务。
Netmask : 255.255.255.0 ,要与 192.168.48.1 的掩码相同。
Gateway IP :填写 VMnet8 的网关 192.168.48.2 。
DNS: 填写 VMnet8 的网关地址 192.168.48.2 ,也可以设置成你真实主机中使用的 DNS 地址。事实上,如果是 DHCP 方式, nameserver 会自动设置成 VMnet8 的 Gateway IP Address , nameserver 就起到 Windows 下的 DNS Server 作用,这种设置类似于 Windows 域环境下的 DNS 转发器,说明这个地址会自动转发 DNS 查询到主机的 DNS 。
配置好后用 service network restart 命令重启网络。
( 2 ) Host-only 模式:虚拟机设置成使用 VMnet1 。
查看真实主机中连接外网的网卡属性,选择“共享”标签,设置成允许其他网络的用户共享此连接,并设定允许的网络接口为 VMware Network Adapter VMnet1 。再查看一下你的 VMnet1 的属性,看一下 TCP/IP 协议的设置,你会发现已经被自动设置为 192.168.137.1/255.255.255.0 。 Windows 下的设置完成后,转入 Linux 虚拟机,将你的 eth0 的 IP 地址设置为静态的。
IP : 192.168.137.2 (或其它在此网段上的地址)。
Netmask : 255.255.255.0 ,与 VMnet1 的一致。
Default Gateway: 192.168.137.1 ,为 VMnet1 Adapater 的地址。
DNS :输入你自己的 DNS (主机中用的 DNS )。
( 3 ) Bridged 模式:虚拟机设置成使用 VMnet0 。
一切都跟主机一样,只有 IP 不能与主机相同,但在同一个网段。
7 、组网实例
我们的目标是建立两个定制的子网 VMnet2 和 VMnet3 ,这两个网络与真实主机是不直接相连的(真实主机中我并不添加连接到这两个网络的虚拟网卡),而是通过一台以桥接模式创建的属于 VMnet0 的虚拟机连接 VMnet0 ,真实的局域网也即 VMnet0 通过本地的网关连接 Internet ,我们将 VMnet2 的虚拟机称为 VMnet2PC , VMnet3 的虚拟机称为 VMnet3PC , VMnet0 的 PC 称为 VMnet0PC 。现在把 VMnet0PC 作为路由器和 DNS 服务器,要求三个网段互联互通,并都可以访问 Internet 。注意本例中需要建立 3 台虚拟机,而真实的 PC 也处于 VMnet0 子网中,再次强调一下, VMnet0 实际上是现实局域网在虚拟网络中的映射。
首先,我们建立第一台虚拟机 VMnet0PC ,可以直接使用刚才的 RHEL 6.0 虚拟机,设置成桥接模式。这样,这台虚拟机会有一块连接到 VMnet0 的虚拟网卡 eth0 ,与真实 PC 处于同一个网段内,设为这个子网 IP 为 192.168.0.0 ,这个网段的网关为 192.168.0.1 。由要求可知, VMnet0PC 另外还要增加两块虚拟网卡 eth1 , eth2 ,这样 VMnet0PC 应该有三块不同的网卡分别接入三个不同的虚拟网络 (VMnet0, VMnet 2, VMnet3) 。打开 VMnet0PC 虚拟机的属性设置 Hardware 标签下面的“ Add… ”按钮,分别添加两块网卡连接到 VMnet2 和 VMnet3 。
其次,我们需要配置子网 VMnet2 和 VMnet3 ,并在其中创建虚拟机。打开 Edit--->Virtual Network Editor ,可以看到 VMnet2 的子网 IP 为 192.168.193.0 ,为 Host-only 模式。上面我们讲过, VMware Workstation 为主机安装了一个 DHCP 服务,我们还可以把 VMnet2 添加到 DHCP 的服务列表中(勾选“使用本地 DHCP 服务”),让 DHCP 为连接到 VMnet2 交换机上的虚拟机自动分配在子网 192.168.193.0 中的动态 IP 地址。用同样的方法,为交换机 VMnet3 指定子网 IP 为 192.168.70.0 ,并添加它到 DHCP 的服务列表中。注意我们并没有把真实主机中任何的虚拟网卡连接到 VMnet2 和 VMnet3 。 VMnet0PC 中的虚拟网卡 eth1 和 eth2 可以保持默认的设置,采用 DHCP 方式。这样就可以让 VMware Workstation 自带的 DHCP 服务为它们自动分配一个 VMnet2 子网或 VMnet3 子网中的动态 IP 地址。当然你也可以为 eth1 和 eth2 手动指定 IP ,以指向 VMnet2 或 VMnet3 子网。配置完后, VMnet0PC 需要重启,以适应 VMnet2 和 VMnet3 的更改。在 VMWare 的右下角,我们可以看到 VMnet0PC 的 3 个网卡连接情况。
接下来,我们要需要在 VMnet2 和 VMnet3 中创建虚拟机并安装操作系统。这里我们在 VMnet2 中创建一台 VMnet2PC 的虚拟机,并安装 Windows Server 2008 。在 VMnet3 中,比如我们可以安装一台 Windows Server 2003 的虚拟机 VMnet3PC 。当然我们也可以使用 VMWare 提供的克隆功能,直接对 VMnet2PC 进行复制。关闭 VMnet2PC ,然后单击 VM--->Clone… ,根据复制向导,把 VMnet2PC 复制成我们需要的 VMnet3PC 。
现在的网络拓扑结构为:
VMnet0PC 的 eth0 : 192.168.0.115/255.255.255.0 。
真实主机: 192.168.0.114/255.255.255.0 ,它与 VMnet0PC 均位于真实子网 VMnet0 内,网关为 192.168.0.1 。可以上 Internet 。
VMnet0PC 的 eth1 :使用 VMnet2 子网的地址 192.168.193.129/255.255.255.0 。
VMnet0PC 的 eth2 :使用 VMnet3 子网的地址 192.168.70.128/255.255.255.0 。
位于 VMnet2 的 VMnet2PC :使用 IP 为 192.168.193.130 /255.255.255.0 。
位于 VMnet3 的 VMnet3PC :使用 IP 为 192.168.70.129/255.255.255.0 。
到目前为止,仅有 VMnet0PC 可以连接 internet 并访问所有的网段。默认情况下 VMnet2PC 和 VMnet3PC 是不能上 Internet 的。例如,在 VMnet3PC 中 ping 192.168.70.128 是能通的,但 ping 192.168.0.115 则不通,因为他们在不同的网段。要让不同网段之间能互访问,就必须在不同的网段之间设置路由器。 VMnet0PC 并不是一台路由器,但我们可以用 Windows 操作系统中的软路由功能或 Linux 中的 IP 转发来实现基本的路由服务。即在 VMnet0PC 中开发 IP 转发功能,将 VMnet2PC 的网关指向 eth1 ,将 VMnet3PC 的网关指向 eth2 ,这样就可以实现不同网段之间的互通。
在 VMnet0PC 中配置好三块网卡后,会自动添加这三个网段的静态路由,可用 route 命令查看,如下:

[jackzhou@localhost ~]$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.193.0   *               255.255.255.0   U     1      0        0 eth2
192.168.70.0    *               255.255.255.0   U     1      0        0 eth1
192.168.0.0     *               255.255.255.0   U     1      0        0 eth0
default         192.168.0.1      0.0.0.0         UG    0      0        0 eth0


最后一条是自动添加的缺省路由,必须要有缺省路由, 因为缺省的路由是把所有的数据包都发往它的上一级网关。如果没有这些路由,可以用命令添加,例如:
route add -net 192.168.193.0 netmask 255.255.255.0
添加缺省路由:
route add default gw 192.168.0.1
接着,在 /etc/sysctl.conf 文件中开启 IP 包转发功能,设置 net.ipv4.ip_forward = 1 ,执行 sysctl -p 让参数生效。这样 VMnet0PC 就会自动在三个网卡之间转发 IP 包了。还要开启 NAT 的 IP 地址欺骗,使 VMnet2 和 VMnet3 子网能通过 VMnet0PC 的 NAT 服务实现访问 Internet 。
iptables -F # 清除 filter 表中原有的规则
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT # 允许 IP 转发
iptables -t nat -F # 清除 NAT 表中原有的规则
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 打开 NAT 的 IP 地址欺骗功能
把 iptables 的更改保存到 /etc/sysconfig/iptables 文件中,以便系统重启时仍可从此文件中读入这些规则:
service iptables save
chkconfig iptables on
在 VMnet0PC 上测试:
第一步,测试自身网络是否工作正常,执行如下命令,测试三个网卡:
ping 192.168.0.115
ping 192.168.193.129
ping 192.168.70.128
如果这些地址都能 ping 通,则第一步通过,否则查找原因,排除错误。
第二步,测试与上一级网关之间是否连通:
ping 192.168.0.1
如果通畅,则正常;否则查找错误原因。
以 VMnet3 子网内测试为例,登录到 VMnet3PC ,将其默认网关指向 eth2 ,这样就可以在 VMnet3PC 中 ping 通 192.168.0.115 和 192.168.193.129 这两个不同网段的地址了。
第一步,测试自身是否工作正常, ping 192.168.70.129
第二步,测试与网关是否连通, ping 192.168.70.128
第三步,测试与 VMnet2PC ( 192.168.193.130 )是否连通,这是 VMnet2 网段内的一台计算机, ping 192.168.193.130 。注意 VMnet2PC 同样需要将默认网关指向 eth1 。
第四步,测试与外网地址是否连通, ping 192.168.0.1 ,如果连通了,表示路由器配置正确,否则,查找原因。
如果没问题的话, VMnet3PC 就可以通过 VMnet0PC 访问 Internet 了(不行的话可能是 DNS 的问题,将 VMnet3PC 的 DNS 设置成 VMnet0PC 或者真实主机使用的 DNS )。可以看到,开启了 IP 转发和 NAT 之后,不同网段之间就可以实现互访,并且 VMnet2 和 VMnet3 子网的机器也能够通过 VMnet0PC 来访问 Internet 。注意如果 VMnet0PC 中是 Windows Server ,我们可以用软路由功能来实现跨网段互访,在“控制面板 ---> 管理工具 ---> 路由和远程访问”中配置。网上有很多相关的文章介绍(搜索“用双网卡实现跨网段访问”),这里就不展开了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: