EVE-NG 环境下虚拟实验网络与真实网络间通信
一、 前言
使用 EVE-NG 模拟大型网络比使用 GNS3 要好用很多,也比 Web-IOU 方便直观,其也支持更多的
镜像文件。本文以图示方式介绍一下使用 EVE-NG 搭建的虚拟实验网络如何与真实网络通信。本
例中所使用的版本是较新的 eve-ng 2.0.3-86,64 之前版本搭建实验的时候如果设备稍多会有 bug
(例如关闭实验后再次打开可能有些图标会跑到诡异的角落),因此建议升级(可使用 dpkg –l
eve-ng 查看当前版本),当然,这个与本文目的没什么关系,纯粹建议。
首先介绍一下虚拟机网卡模式,虚拟机网卡配置一般有三种模式:Bridged, NAT, 以及 Host-only,
1. Bridged: 桥接模式会使虚拟机和真实主机处于同一个真实网段内,也即相当于此网段内的
真实主机和虚拟机地位对等,平起平坐,会共用此网段内的真实网关,也即要占用此网段
内的 IP 地址,此时当然可以通过真实网关访问外网;
2. NAT: 此模式下虚拟机也可以和其他网段通信,但虚拟机与真实主机并不处于同一个网段,
传输时虚拟化软件(常用的 VMware 或 VirtualBox)会将虚拟机的 IP 地址转换成主机所处
网段发送,因此也可以访问外网;
3. Host-only: 此模式相当于 NAT 模式的精简版,即省略掉地址转换部分,因此虚拟机本身只
可与同处 Host-only 网段内的虚拟机(包括作为网关的主机)通信,不可访问外网。
需要注意的是,这里提到 Host-only 无法访问外网,仅仅是指该虚拟机通过 Host-only 网卡无法访
问外网,若其还有其它网卡则仍旧可能访问外网。例如有一个 Windows 10 的虚拟机,若默认网
卡使用了 Host-only 模式,则其只可与此网段内的设备通信,无法访问外网(真实原因是因为没有
地址转换,无法收到外网的回复信息,若手动配置网关其实是可以单向发出去的);若手动再添
加一块网卡,使用桥接模式或者 NAT 模式,则此 Windows 10 仍然可以访问外网。
二、 实际操作
这里就以比较常用的 VMware Workstation 为例(这里使用 Windows 操作系统下的 12pro 版本,其
它版本类似,区别不大,如 14pro,或者 MacOS 下的 VMware Fusion 等)描述一下 EVE-NG 虚拟
网络访问外网的过程。EVE-NG 虚拟机的管理网卡(即第一块网卡)建议使用 Host-only 模式,把
管理网络(即支撑实验拓补的虚拟机本身)与真实网络隔开,使用 NAT 模式其实也没什么问题,
但不建议使用桥接模式,虽然桥接模式仍可以正常运行,但需要耗费真实网络的 IP 地址,例如真
实主机若通过类似 xfinity 之类供应商上网则一般无法通过供应商自动获取第二个 IP(不差钱的当
我没说),且管理网络和真实主机处于同一网络亦容易出现问题。建议用物理路由器将真实网络
和机器网络分开,也即真实主机使用 192.168 开头的 IP 作为地址,与真实网络多一层 NAT 转换。
1. 配置 VMware 公共网络
打开虚拟机,Edit Virtual Network Editor Change Settings (右下角,需要管理员权限),
详情见下图所示,一般系统都会有默认创建好的 Host-only 模式,虚拟网络名称为
VMnet1,如果没有可自行创建,名称并不重要,Host-only 模式网络可多个并存,同时使
用。也可进一步配置网络 IP,以及 DHCP 的范围,当然一般系统都会自动生成,使用默认
值即可。
当然,管理网络使用 NAT 模式也是可以的,系统默认也会有创建好的 NAT 模式网络,一
般是 VMnet8,没有的话也可以自行创建,但需注意,NAT 模式只可同时存在一个。Host-
only 与 NAT 模式下系统都会自动通过 DHCP 给关联的虚拟机分配 IP 地址,左侧的两个勾
要勾上。
EVE-NG 要使虚拟实验网络与真实网络贯通需要借助机器的真实网卡,例如上图所示,我
的 PC 有两块网卡,一块无线,一块有线,可以同时配置甚至同时使用。这个可以根据自
己机器自行添加,网络名称也可随便,名字别记错就是了。因为是真实网卡,IP 地址、网
关等信息是使用其在 Windows(或其它)环境下已经配置好的,无需改动(也无法在
VMware 中改动)。
2. 配置虚拟机网卡
配置好 VMware 下的公共网络后,需要虚拟机与这些配置好的网络信息绑定才可使用。此
处只需要对应虚拟机的配置列表里设置即可,以下图 EVE-NG 配置为例,
一般第一块网卡是用于和 VMware 通信的管理网卡,这里使用 Host-only,也即负责我们在
主机浏览器中打开 EVE-NG 图形界面搭建网络拓补,这里因为只需要主机可以访问虚拟
机,因此虚拟机不能访问外网也没有关系,如下图:
虚拟机获得的 IP 地址是 192.168.235.129,真实网络网关地址为 192.168.1.254,此时 EVE-
NG 本身无法访问网关,更无法访问外网。
因为要使虚拟实验网络访问外网,故还需配置至少一块虚拟网卡,我的机器因为有两块真
实网卡,所以多添加了两块:Network Adapter 2 以及 Network Adapter 3,可以看到都是
Custom 模式的,后面的括号有提示绑定到哪一个 VMware 网络,根据之前的设置,
VMnet0 是桥接的无线网卡,VMnet2 是桥接的有线网卡。可以想象成此虚拟机现在有三块
网卡,分别连接到真实 PC 本身、无线网卡,以及有线网卡上。而连接到真实 PC 本身的网
卡无法和其它网段通信。
3. 使用 Network 选项连接虚拟网络与真实网络
使用 EVE-NG 搭建需要的网络拓补,因为只是示例,就用如下简单拓补来演示,
左侧圆框内虚拟一个局域网,有两台 PC,为求真实,使用的缩微版 Linux(左上角为 linux-
slax,左下角为 linux-tinycore),都可以用 vnc 打开图形界面(EVE-NG 本身自带的 Virtual
PC 也是可以用的,但是没有图形界面,不好看,功能也单一),当然如果使用服务器,
内存足够,连接 Windows 10,MacOS 也是没问题的。中间三台路由器,虚拟一个过渡网
络,可使用任意 IGP,所有网络设备都使用 Cisco 的 IOL 镜像文件来模拟。另外,为方便起
见,在 R1 上配置了 DHCP 地址池,使得局域网内的两台 PC 可以自动获取 IP 地址、默认网
关等,简单配置如下:
ip dhcp pool myPOOL
network 10.1.1.0 255.255.255.0
default-router 10.1.1.254
dns-server 192.168.1.254
domain-name example.com
lease 10
连接真实网络的关键部分就是最右端的云状网络了,是以 Network 形式添加进本实验的,
也即 R3 的 e0/1 端口与该网云处于同一网络,该网络的配置如下图所示:
//R1 的 e0/0 端口作为内网默认网关
//真实网关作为 DNS 服务器
其中 Cloud0,Cloud1 与 Cloud2 等等,是配置虚拟机网卡时按照当时添加网卡的顺序,对
应的 Network Adapter (Host-only, 即管理网络), Network Adapter 2 (VMnet0, 无线网卡),以及
Network Adapter 3 (VMnet2, 有线网卡)。因为我的机器当前使用无线网卡上网,因此选
Cloud1 即可,Cloud3 以后没有配置,所以是闲置的。
4. 虚拟实验网络
R1:
router ospf 110
router-id 1.1.1.1
network 10.1.1.254 0.0.0.0 area 0
network 12.1.1.1 0.0.0.0 area 0
这一块大部分是虚拟实验网络的配置,应该根据自己的需求和实验拓补来配置。这里给出
本文拓补所需要的网络配置,其实有一些 CCNA 基础的朋友应该都可以轻松搞定,这里使
用最常用的 OSPF 为例。
R3:
Ip route 0.0.0.0 0.0.0.0 e0/1 192.168.1.254
router ospf 110
router-id 3.3.3.3
network 23.1.1.3 0.0.0.0 area 0
R2:
router ospf 110
router-id 2.2.2.2
network 12.1.1.2 0.0.0.0 area 0
network 23.1.1.2 0.0.0.0 area 0
//缺省路由将虚拟网络导向真实网络
//作为出口需要对 OSPF 域内宣告缺省路由
default-information originate
access-list 1 permit 10.1.1.0 0.0.0.255
ip nat inside source list 1 interface e0/1 overload
interface e0/0
ip nat inside
完成上述配置后路由器 R1 与 R2 应该都能接收到来自 R3 的缺省路由,以帮助虚拟局域网
内设备正确导向真实网络,最后经过 R3 的地址转换把地址翻译成 R3 的 e0/1 接口地址。
完成配置后应该可以从 R1 的 e0/0 端口 ping 到真实网关,
//虚拟与真实网络边界建议配置 PAT
interface e0/1
ip nat outside
注意 ping 的时候加上 source,否则因为 R3 上此时只对 10.1.1.0 网段做地址翻译,并没有
对 12.1.1.0 网段进行翻译地址,所以真实网关处是没有 12.1.1.0 网段的回包路由的,因此
会发现 ping 不通。
R1 处可以用 e0/0 端口 ping 通真实网关,其实就已经意味着左侧局域网可以穿越虚拟网络
和真实网络通信了,以局域网网中左上角的 Linux-slax 为例,通过 vnc 图形界面打开此
Linux 系统,显示如下,
再点击左下角的 terminal 图标,查看网口信息,如下页图示,
可以看到此设备的以太网口已经自动获取到了 IP 地址等信息。注意,如果之前没有在 R1
上配置 DHCP 资源池,则需要在这里手工输入 IP 地址、默认网关、DNS 服务器地址等信
息。之后就可以尝试 ping 一下真实网络了,
发现此时已经可以 ping 通谷歌的真实服务器了,本人真实网络环境的真实网关是有 DNS
功能的,所以可以直接用网关地址作为 DNS 服务器地址,如果网络环境不一样请使用有效
的 DNS 服务器地址,若不愿意用 DNS 也可以直接找到真实 IP 地址来 ping。
另外,此 Linux-slax 带有火狐浏览器,可以尝试一下用 http 打开谷歌网页,
可见此时左上角的 Linux-slax 的确可以穿越整个虚拟网络访问真实网络了,不过这里的
Linux-slax 版本问题,其火狐浏览器版本较低,一些网站的服务器可能已经不支持。
实际使用中可根据自己的需要任意扩展,例如可以将与云连接的路由器作为供应商边界,
与实验拓补建立 BGP 等,有服务器或多台 PC 参与的情况下可以连接多个网卡以模拟多个
供应商边界,另外,若能找到诸如 ASA, ISE 等安全组件的镜像文件,亦可直接用以连接真
实网络。
另有示例如下,可以两个网卡同时使用,左侧连接有线网卡,可以和服务器或其它真实设
备连接,右边连接公网。
可以通过中间的路由器做缺省路由和 PAT,将左侧网络连通右边公网,当然也可以建立复
杂网络根据需要实验。当然,若只是想将左右两侧网络连接起来,Windows 本身也有共享
网络这个功能,但开启后需要手工改变左侧网段的 IP 地址,比较麻烦,内存不缺的情况
下,使用并保存此拓补还是更方便一些的。