由于在企业中,个人工作电脑的IP地址是公司手工、或者公司DHCP服务器分配的,一般一台个人电脑只能申请1个工作用IP地址。如何在个人工作电脑上虚出多个不同操作系统的虚机,使用不同的IP地址,又与公司的IP地址管理策略不冲突,就是一个很大的问题。归结为以下三个问题点:
这三个问题的解决,是我们以一己之力,以自己的一台电脑,来学习各种IT技能的基础。
对于第一个问题的解答如下,
目前广泛流行两个虚机管理器,一个是 “Oracle VM VirtualBox 管理器”,另一个是“VMware Workstation Pro”;两个管理器的概念相似、功能也相似,知道了一个的配置方法,第二个也就基本知道了。如何安装配置,大家可以参考官方文档。
Oracle VM VirtualBox 管理器
VMware Workstation Pro
以下以“Oracle VM VirtualBox ”管理器 为例,虚机为redhat操作系统,解答问题2和3。对于“VMware Workstation Pro”,可参考我的博文
Mongodb的安装和使用初级实战
在 VirtualBox中提供了两种网络配置,一种是NAT 网络,另外一种是仅主机(Host-Only)网络
NAT网络配置用以解决虚机通过母机上网。
其原理如下
虚拟机的请求传递给NAT Engine,由它来利用主机进行对外的网络访问,返回的数据包再由NAT Engine给虚拟机。
具体配置方法如下
1,在VirualBox全局设定中添加一块NAT网络的网卡
2,编辑该NAT网卡
3,对以生成的虚机“redhat”的网卡1进行网络配置,如下图
记住它的MAC地址为0800272BC1BC
4,启动虚机“redhat”,登录系统,查看网络配置
[root@xuwhredhat ~]# ifconfig
enp0s3: flags=4163 mtu 1500
inet 10.0.2.4 netmask 255.255.255.0 broadcast 10.0.2.255
inet6 fe80::6467:ab4f:8cbe:774a prefixlen 64 scopeid 0x20
ether 08:00:27:2b:c1:bc txqueuelen 1000 (Ethernet)
RX packets 20 bytes 3580 (3.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 47 bytes 6405 (6.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1 (Local Loopback)
RX packets 1 bytes 88 (88.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1 bytes 88 (88.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
可以看出,系统有一块网卡enp0s3,其MAC地址为08:00:27:2b:c1:bc,正是3中配置的那块NAT网卡,它通过DHCP获得的ip地址为10.0.2.4,可以ping通母机的NAT网关10.0.2.1
root@xuwhredhat ~]# ping 10.0.2.1
PING 10.0.2.1 (10.0.2.1) 56(84) bytes of data.
64 bytes from 10.0.2.1: icmp_seq=1 ttl=255 time=0.677 ms
64 bytes from 10.0.2.1: icmp_seq=2 ttl=255 time=0.433 ms
64 bytes from 10.0.2.1: icmp_seq=3 ttl=255 time=0.411 ms
64 bytes from 10.0.2.1: icmp_seq=4 ttl=255 time=0.191 ms
64 bytes from 10.0.2.1: icmp_seq=5 ttl=255 time=0.302 ms
64 bytes from 10.0.2.1: icmp_seq=6 ttl=255 time=0.279 ms
64 bytes from 10.0.2.1: icmp_seq=7 ttl=255 time=0.256 ms
也可以ping通外部网站
[root@xuwhredhat ~]# ping www.sina.com.cn
PING spool.grid.sinaedge.com (202.102.94.124) 56(84) bytes of data.
64 bytes from 202.102.94.124 (202.102.94.124): icmp_seq=1 ttl=48 time=11.4 ms
64 bytes from 202.102.94.124 (202.102.94.124): icmp_seq=2 ttl=48 time=10.3 ms
上网也没问题了
原理如下:
通过VirtualBox Host-Only Network网卡进行通信,虚拟机以此ip作为网关,因此模拟了一个本机与各个虚拟机的局域网
配置方法如下
1,在VirualBox全局设定中添加一块hostonly网络的网卡
2,编辑该网卡
这里我们不用DHCP服务器。所以在之后的虚机网络配置时,需要手工配虚机的IP地址,地址为192.168.122.X,
3,此时查看母机的网络配置可以看到,母机虚拟出一块hostonly网卡,
4,对虚机“redhat”的网卡2进行网络配置,如下图
记住它的MAC地址为0800276B1BE0
现在,虚机redhat的网络配置如下
该虚机有两块虚拟网卡,
网卡1:接入NAT网络,MAC地址为0800272BC1BC,DHCP ,网段为10.0.2.0/24
网卡2:接入仅主机(Host-Only)网络,MAC地址为0800276B1BE0,不用DHCP,网段为192.168.122.0/24
5,启动虚机“redhat”,登录系统,查看网络配置
[root@xuwhredhat ~]# ifconfig
enp0s3: flags=4163 mtu 1500
inet 10.0.2.4 netmask 255.255.255.0 broadcast 10.0.2.255
inet6 fe80::6467:ab4f:8cbe:774a prefixlen 64 scopeid 0x20
ether 08:00:27:2b:c1:bc txqueuelen 1000 (Ethernet)
RX packets 24 bytes 3620 (3.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 51 bytes 6415 (6.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s8: flags=4163 mtu 1500
ether 08:00:27:6b:1b:e0 txqueuelen 1000 (Ethernet)
RX packets 8 bytes 663 (663.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 30 bytes 4217 (4.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
可以看到又增加了一块网卡enp0s8,其MAC地址为08:00:27:6b:1b:e0,正是4中配置的那块仅主机(Host-Only)网络网卡。由于没有配DHCP,所以我们需要手工给它配IP地址。
通过redhat的Application-->System Tools-->setting-->Network ,打开网络配置功能,对Ethernet(enp0s8)网卡进行配置
仅需配ipv4,且不配网关、DNS、路由,因为该网卡只需和192.168.122.0/24网段连通。IP地址手工设为192.168.122.10
点击add,结果如下
在执行ifconfig ,查看网络配置
enp0s3: flags=4163 mtu 1500
inet 10.0.2.4 netmask 255.255.255.0 broadcast 10.0.2.255
inet6 fe80::6467:ab4f:8cbe:774a prefixlen 64 scopeid 0x20
ether 08:00:27:2b:c1:bc txqueuelen 1000 (Ethernet)
RX packets 52 bytes 6058 (5.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 285 bytes 23739 (23.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s8: flags=4163 mtu 1500
inet 192.168.122.10 netmask 255.255.255.0 broadcast 192.168.122.255
inet6 fe80::1954:6d58:26fc:4b81 prefixlen 64 scopeid 0x20
ether 08:00:27:6b:1b:e0 txqueuelen 1000 (Ethernet)
RX packets 21 bytes 1443 (1.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 59 bytes 8415 (8.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
此时该虚机就可以和另外一台IP为192.168.122.20的虚机ping通了。
[root@xuwhredhat ~]# ping 192.168.122.20
PING 192.168.122.20 (192.168.122.20) 56(84) bytes of data.
64 bytes from 192.168.122.20: icmp_seq=1 ttl=64 time=0.527 ms
64 bytes from 192.168.122.20: icmp_seq=2 ttl=64 time=0.233 ms
64 bytes from 192.168.122.20: icmp_seq=3 ttl=64 time=0.366 ms
64 bytes from 192.168.122.20: icmp_seq=4 ttl=64 time=0.270 ms
64 bytes from 192.168.122.20: icmp_seq=5 ttl=64 time=0.902 ms
64 bytes from 192.168.122.20: icmp_seq=6 ttl=64 time=0.279 ms
通过以上配置,我们为虚机redhat配置了两块网卡
网卡1enp0s3:IP地址 10.0.2.4,接入NAT网络,MAC地址为0800272BC1BC,DHCP ,网段为10.0.2.0/24,负责连通外部网络
网卡2enp0s8:IP地址 192.168.122.10,接入仅主机(Host-Only)网络,MAC地址为0800276B1BE0,不用DHCP,网段为192.168.122.0/24,负责连通该网段的各个虚机
[root@xuwhredhat network-scripts]# nmcli dev show
GENERAL.DEVICE: enp0s3
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 08:00:27:2B:C1:BC
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: enp0s3
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/4
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 10.0.2.4/24
IP4.GATEWAY: 10.0.2.1
IP4.DNS[1]: 10.122.1.82
IP4.DNS[2]: 10.122.2.82
IP4.DOMAIN[1]: csvw.com
IP6.ADDRESS[1]: fe80::6467:ab4f:8cbe:774a/64
IP6.GATEWAY:
GENERAL.DEVICE: enp0s8
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 08:00:27:6B:1B:E0
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: Profile 1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.122.10/24
IP4.GATEWAY:
IP6.ADDRESS[1]: fe80::1954:6d58:26fc:4b81/64
IP6.GATEWAY:
查看一下路由,默认路由是通过enp0s3这块网卡出去的。也可以通过修改enp0s3的 default gateway 设置将系统默认网关强制设为10.0.2.1
[root@xuwhredhat ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 enp0s3
10.0.2.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
192.168.122.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s8
[root@xuwhredhat ~]# ip route show
default via 10.0.2.1 dev enp0s3 proto static metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.4 metric 100
192.168.122.0/24 dev enp0s8 proto kernel scope link src 192.168.122.10 metric 100
用traceroute跟踪路由的结果如下,路由跟踪未完成的原因可能是因为采用NAT转换,但可以看出,是通过10.0.2.1出去的。
[root@xuwhredhat ~]# traceroute -d www.sina.com.cn
traceroute to www.sina.com.cn (202.102.94.124), 30 hops max, 60 byte packets
1 gateway (10.0.2.1) 0.148 ms 0.109 ms 0.138 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
参考文档 VirtualBox中的虚拟网络环境设置