为了在VirtualBox上安装oracle 11g rac,使VirtualBox虚拟机与主机互通,并且虚拟机又能上网配置,找了很多网上文章但都没有都对最终设置方式进行详细的说明,
现在自己总结如下:
一、VirtualBox的提供了四种网络接入模式,它们分别是:
1、NAT 网络地址转换模式(NAT,Network Address Translation)
2、Bridged Adapter 桥接模式
3、Internal 内部网络模式
4、Host-only Adapter 主机模式
VMWare中有三种,其实他跟VMWare 的网络连接方式都是一样概念,只是比VMWare多了Internal方式。要让自己(或别人)理解深刻,方法就是做比较和打比方,比较之间的不同和相同,拿熟知的事物打比方。先来一张图,通过这张图就很容易看出这4种方式的区别:
更详细的介绍可以自行百度。
二、我的环境
Linux rac1虚拟机
网卡1 (网卡1的目的是用上虚拟机与主机之间通讯,并且可以上外网)
由于VirtualBox 的 NAT方式,只允许虚拟机与主机之间单向通讯(因为VirtualBox只虚拟了一个网卡,所以主机是ping不通虚拟机的,而vmware有虚拟两个网卡, VMnet1是host网卡,用于host方式连接网络的。VMnet8是NAT网卡,用于NAT方式连接网络。
所以vmware Nat方式可以主机与虚拟机互通。但可以设置端口转发,这样主机就可以ssh到虚拟机。
通过以下端口转发的设置,可以让主机连上虚拟机(点上网的"端口转发“)
虚拟机CentOS的对应的eth0网络设置是:
eth0 必须是dhcp 通过虚拟机NAT模式获取的默认IP地址是 10.0.2.15,好像改不了,改静态就不行了。
如果用命令行始终配置不好,就用system-network-config启动图行界面来配置,保证配置结果没有错误
以上NAT设置可以适合单台虚拟机服务的设置,即虚拟是NAT地址转换方式,虚拟是默认地址,这样虚拟就可以与主机通讯,并且可以上网
但rac环境要求public两个网卡可以互通,pritiave网卡也可以互相,但如果rac2的网卡1 eth0也是NAT,那么这两个将不互通。
(原因:NAT方式只是虚拟与主机的单向通讯,所以rac2如果也是NAT方式,只说明它也可以也主机单向通讯,并不能与另外的虚拟机互通)
所以,要想达到主机与两台虚拟机之间都可以互通,虚拟机之间又可以互通,必须修改网卡1的连接方式为host-only,网卡2改成是内部网址,用与私网通讯
如果要让两台虚拟机都可以上网,那么就需要配置win7上网的网络连接为共享,共享给VirtualBox生成的host-only网卡,这样两台虚拟机就可以通过host-only的网上,再由经过上网的网卡上网了。
第1步:
先做共享操作最后确定后,此时Host-only会被置为192.168.137.1(本人的机器,机器不同可能不同,这个网址也就是两台虚拟机public的网段,改网段就是不行)
可以修改(但修改了之后,即使虚拟机也设置但一网段了,只可以主机与虚拟机之间通讯,就是不能上网,所以虚拟机必须设置成同一个网段的IP才可以上网)
以下是通过system-config-network配置图
另外:Virtual软件全局设置(可以选择开启dhcp,也可以设置静态IP)
这里为关闭DHCP服务,进行手动设置IP,手动不手动似乎没什么不一样,最终eth0还是要dhcp的
最终VirtualBox软件虚拟机的网络设置如下:(rac1和rac2一样)
最终rac的是eth0和eth1分别如下:
rac1的eth0 和eth1如下:
[root@rac1 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:FB:4E:66
inet addr:192.168.137.141 Bcast:192.168.137.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fefb:4e66/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:481 errors:0 dropped:0 overruns:0 frame:0
TX packets:350 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:95721 (93.4 KiB) TX bytes:43273 (42.2 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:A3:0F:55
inet addr:10.10.10.10 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fea3:f55/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:262 errors:0 dropped:0 overruns:0 frame:0
TX packets:165 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:30822 (30.0 KiB) TX bytes:14466 (14.1 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:18 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1325 (1.2 KiB) TX bytes:1325 (1.2 KiB)
[root@rac1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:fb:4e:66
TYPE=Ethernet
UUID=ada6c5d8-382e-4218-8582-2757ccb9d3c5
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
#IPADDR=192.168.137.10
#NETMASK=255.255.255.0
#GETWAY=192.168.137.1
IPV6INIT=no
USERCTL=no
DNS1=192.168.1.1
PEERDNS=yes[root@rac1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
# Please read /usr/share/doc/initscripts-*/sysconfig.txt
# for the documentation of these parameters.
DEVICE=eth1
BOOTPROTO=static
NETMASK=255.255.255.0
TYPE=Ethernet
HWADDR=08:00:27:a3:0f:55
IPADDR=10.10.10.10
IPV6INIT=no
ONBOOT=yes
USERCTL=no
[root@rac1 ~]#
rac2 的eth0 和eth1如下:
[root@rac2 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:B2:21:03
inet addr:192.168.137.166 Bcast:192.168.137.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:feb2:2103/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:214 errors:0 dropped:0 overruns:0 frame:0
TX packets:141 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:33589 (32.8 KiB) TX bytes:15498 (15.1 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:AE:AB:08
inet addr:10.10.10.11 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:feae:ab08/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:512 (512.0 b) TX bytes:1292 (1.2 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:720 (720.0 b) TX bytes:720 (720.0 b)
[root@rac2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:b2:21:03
TYPE=Ethernet
UUID=ada6c5d8-382e-4218-8582-2757ccb9d3c5
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
#IPADDR=10.10.10.2
#NETMASK=255.255.255.0
#GETWAY=10.10.10.1
USERCTL=no
PEERDNS=yes
IPV6INIT=no
[root@rac2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
# Please read /usr/share/doc/initscripts-*/sysconfig.txt
# for the documentation of these parameters.
DEVICE=eth1
BOOTPROTO=none
NETMASK=255.255.255.0
TYPE=Ethernet
IPADDR=10.10.10.11
HWADDR=08:00:27:ae:ab:08
IPV6INIT=no
ONBOOT=yes
USERCTL=no
[root@rac2 ~]#
验证网络连通:
rac1:
[root@rac1 ~]# ping www.qq.com
PING www.qq.com (117.135.169.41) 56(84) bytes of data.
64 bytes from . (117.135.169.41): icmp_seq=1 ttl=53 time=8.54 ms
64 bytes from . (117.135.169.41): icmp_seq=2 ttl=53 time=8.75 ms
64 bytes from . (117.135.169.41): icmp_seq=3 ttl=53 time=96.1 ms
64 bytes from . (117.135.169.41): icmp_seq=4 ttl=53 time=8.88 ms
64 bytes from . (117.135.169.41): icmp_seq=5 ttl=53 time=10.0 ms
64 bytes from . (117.135.169.41): icmp_seq=6 ttl=53 time=10.6 ms
64 bytes from . (117.135.169.41): icmp_seq=7 ttl=53 time=10.3 ms
64 bytes from . (117.135.169.41): icmp_seq=8 ttl=53 time=8.79 ms
64 bytes from . (117.135.169.41): icmp_seq=9 ttl=53 time=9.11 ms
^C
--- www.qq.com ping statistics ---
9 packets transmitted, 9 received, 0% packet loss, time 8280ms
rtt min/avg/max/mdev = 8.540/19.021/96.128/27.270 ms
[root@rac1 ~]# ping 10.10.10.11
PING 10.10.10.11 (10.10.10.11) 56(84) bytes of data.
64 bytes from 10.10.10.11: icmp_seq=1 ttl=64 time=2.25 ms
64 bytes from 10.10.10.11: icmp_seq=2 ttl=64 time=0.592 ms
64 bytes from 10.10.10.11: icmp_seq=3 ttl=64 time=0.364 ms
64 bytes from 10.10.10.11: icmp_seq=4 ttl=64 time=0.312 ms
64 bytes from 10.10.10.11: icmp_seq=5 ttl=64 time=0.310 ms
64 bytes from 10.10.10.11: icmp_seq=6 ttl=64 time=0.301 ms
64 bytes from 10.10.10.11: icmp_seq=7 ttl=64 time=0.313 ms
^C
--- 10.10.10.11 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6685ms
rtt min/avg/max/mdev = 0.301/0.634/2.250/0.666 ms
[root@rac1 ~]#
rac2:
[root@rac2 ~]# ping www.qq.com
PING www.qq.com (117.135.169.41) 56(84) bytes of data.
64 bytes from . (117.135.169.41): icmp_seq=1 ttl=53 time=10.5 ms
64 bytes from . (117.135.169.41): icmp_seq=2 ttl=53 time=10.2 ms
64 bytes from . (117.135.169.41): icmp_seq=3 ttl=53 time=9.93 ms
64 bytes from . (117.135.169.41): icmp_seq=4 ttl=53 time=9.47 ms
64 bytes from . (117.135.169.41): icmp_seq=5 ttl=53 time=61.6 ms
64 bytes from . (117.135.169.41): icmp_seq=6 ttl=53 time=10.3 ms
^C
--- www.qq.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5485ms
rtt min/avg/max/mdev = 9.476/18.714/61.632/19.196 ms
[root@rac2 ~]# ping 10.10.10.10
PING 10.10.10.10 (10.10.10.10) 56(84) bytes of data.
64 bytes from 10.10.10.10: icmp_seq=1 ttl=64 time=0.551 ms
64 bytes from 10.10.10.10: icmp_seq=2 ttl=64 time=0.448 ms
64 bytes from 10.10.10.10: icmp_seq=3 ttl=64 time=0.319 ms
64 bytes from 10.10.10.10: icmp_seq=4 ttl=64 time=0.471 ms
64 bytes from 10.10.10.10: icmp_seq=5 ttl=64 time=0.566 ms
^C
--- 10.10.10.10 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4365ms
rtt min/avg/max/mdev = 0.319/0.471/0.566/0.088 ms
[root@rac2 ~]#
如果内部不通的,需要关闭iptables就可以
在这里成这样是因为复制系统的过程中复制的文件已经有一个网卡在/etc/udev/rules.d/70-persistent-net.rules被识别成了eth0,而虚拟机中的识别成了eth1。
解决方法:
1.编辑/etc/udev/rules.d/70-persistent-net.rules,找到与ifconfig -a得出的MAC相同的一行(NAME='eth1'这一行),把它改为"NAME=eth0 ",然后把上面一行(NAME='eth0')删除掉。
vim /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:bb:41:2b", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
2.编辑/etc/sysconfig/network-script/ifcfg-eth0,把MAC改为正确的,把UUID删掉。
3.编辑/etc/sysconf/network,把hostname也改一下。
4.重启生效!