最近在virtualbox里搭了一个centos7的虚拟机,但是网络这一块总是有问题。

单网卡下的问题:

1.当我配置连接方式为NAT网络地址转换的时候,虚拟机可以访问外网。但是在网络地址转换的情况下虚拟机是没有外部可以访问的IP,在虚拟机上运行的应用如果想在外部访问,需要再配置端口转发。

2.当我配置连接方式为桥接方式的时候,我可以手工为虚拟机指定一个IP,使虚拟机跟本机在同一个网段,外部机器也可以通过该IP访问虚拟机。但是由于网络策略的问题,桥接连接方式下虚拟机又无法正常访问外网。

在以上两种情况下,只能给虚拟机配置双网卡了,NAT网卡用来给虚拟机提供外部网络访问能力,桥接网卡使外部网络可以通过固定IP访问到虚拟机。配置了双网卡之后虚拟机的ip信息展示如下:

centos7 默认路由没有default centos7默认路由修改_桥接

 其中enp0s3是网络地址转换连接方式的网卡,enp0s8是桥接连接方式的网卡。

这里顺便贴一下enp0s8静态IP的配置(其中NETMASK,GATEWAY直接参照本机相关信息,IP地址随便配置一个没有被使用的IP):

centos7 默认路由没有default centos7默认路由修改_IP_02

 

在配置完双网卡之后,外部可以通过给虚拟机指定的IP来访问虚拟机,但是发现虚拟机还是无法访问外网。在查阅资料之后了解到可能是路由问题,虚拟机访问外网的时候可能还是走的桥接网络的网卡。

查看路由:

centos7 默认路由没有default centos7默认路由修改_IP_03

default就是默认路由,这里看到有两个default,而且排在最前面的默认路由走的是enp0s8这个网卡。意思就是对外网的访问会通过enp0s8这个网卡出去,而这个网卡并不能上外网。找到原因我们直接删掉enp0s8这个默认路由就好了。

centos7 默认路由没有default centos7默认路由修改_IP_04

删掉这个路由之后访问百度:

centos7 默认路由没有default centos7默认路由修改_运维_05

在外部网络通过桥接网卡IP地址访问虚拟机也正常。

现在还有一个问题是虚拟机重启之后路由又会变回去。所以需要将 ip route del default via 10.4.56.1 这个命令加到 ~/.bashrc中,每次重启之后会自动运行这个命令,删掉不需要的路由。

以上~