virtualbox虚拟机NAT模式下不能连接外网

背景

  给VirtualBox虚拟机(装载了Ubuntu16.04系统)配置了两张网卡,网络模式分别为“网络地址转换(NAT)”和“仅主机(Host-Only)适配器”,其中,enp0s3网卡(NAT)用于外网访问,而enp0s8网卡(Host-Only)用于主机访问虚拟机。然而,虚拟机启动后,却不能访问外网。
  

定位

网络配置文件如下:

# vi /etc/network/interface

...
# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp

auto enp0s8
iface enp0s8 inet static
address 192.168.137.16
netmask 255.255.255.0
gateway 192.168.137.1

  eth0使用dhcp,eth1使用static。eth0的实际网络如下:

# ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::a00:27ff:fe55:2858  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:55:28:58  txqueuelen 1000  (Ethernet)
        RX packets 6  bytes 1476 (1.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 33  bytes 3108 (3.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  打开其路由,才发现了问题。

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.137.1   0.0.0.0         UG    0      0        0 enp0s8
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 enp0s3
192.168.137.0   0.0.0.0         255.255.255.0   U     0      0        0 enp0s8

  enp0s8网卡成为了默认路由,这就导致其他路由不能匹配到的网段都会走enp0s8这个网卡,而我们实际上配置与外网连接的虚拟网卡是enp0s3,环境自然就连接不了外网了。我们可以尝试手动来删除现在的默认路由。

# route del default
# route add default gw 10.0.2.2 dev enp0s3
# route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    0      0        0 enp0s3
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 enp0s3
192.168.137.0   0.0.0.0         255.255.255.0   U     0      0        0 enp0s8

  路由设置成功,OS也可以访问外网了。但这只是修改了本次的路由设置,OS重启后就失效了,因此我们需要将配置持久化。

持久化路由配置

  我们将路由持久化设置在网络配置文件/etc/network/interfaces中。在网卡启动后添加对应的路由增删的代码,与route命令类似,只是在句首加上up即可。

# vi /etc/network/interfaces
...
auto enp0s3
iface enp0s3 inet dhcp
up route add default gw 10.0.2.2 dev enp0s3

auto enp0s8
iface enp0s8 inet static
address 192.168.137.16
netmask 255.255.255.0
gateway 192.168.137.1
up route del default dev enp0s8

  注意:up route add default gw [gateway-addr] dev [dev-name],该语句中,[dev-name]表示外网网卡的名称,即上面的enp0s3,而[gateway-addr]表示外网网卡使用的网关ip地址。
  那么,如何获取这个外网网卡的网关地址呢?virtualbox如下规定:

In NAT mode, the guest network interface is assigned to the IPv4 range 10.0.x.0/24 by default where x corresponds to the instance of the NAT interface +2. So x is 2 when there is only one NAT instance active. In that case the guest is assigned to the address 10.0.2.15, the gateway is set to 10.0.2.2 and the name server can be found at 10.0.2.3.

  简单的说,就是如果第0个网卡是NAT网卡,那么其网段的第三个数字就0+2=2就是10.0.2.0,网关为10.0.2.2,name server则是10.0.2.3.以此类推。

参考:https://www.virtualbox.org/manual/ch09.html#changenat

时间: 2024-10-29 19:08:50

virtualbox虚拟机NAT模式下不能连接外网的相关文章

virtualBox使用nat模式下ssh连接

virtualBox本地虚拟机通过ssh连接一般可通过桥接模式和Nat模式 桥接模式下,共享本地主机网卡,在同一个局域网之下,直接获取Ip地址就可以进行连接了. Nat模式下,获取的Ip与本地主机不是同一个网段,需要做端口转发,才能本地ssh连接虚拟机. 具体设置步骤如下: 1.选择端口转发 2.要设置主机Ip为127.0.0.1,主机端口可以随意设置,不与系统端口冲突则行,子系统端口22,也是ssh默认连接的端口 接下来用ssh连接127.0.0.1,就行

vm虚拟机NAT模式下无法ping通主机&putty连接问题

vmware player + ubuntu14.04宿主机 windows8 连接方式: NAT  vmnet8虚拟网卡 问题:1.主机和虚拟机都可以ping通外网,主机可以ping通虚拟机,虚拟机却ping不通主机.2.putty连接虚拟机被拒绝 解决1:要么互相都不通,否则,只要一方可以ping通一方,说明连接是肯定没有问题.问题在防火墙上,ping某一方不通,把这一方的防火墙关了,就可以ping通了.关闭windows上的防火墙,虚拟机就可以ping通主机了.windows的防火墙是默认

虚拟机NAT模式下外网访问内网FTP服务

宿主主机地址  192.168.1.106 VMnet8网络虚拟网卡地址 192.168.137.1 虚拟机地址 192.168.137.99 1,外网设备需要访问虚拟机FTP服务 首先在虚拟机上安装FTP服务(直接RPM安装vsftpd RPM安装包即可),并启用FTP服务 如果需要外网能访问这台虚拟机上的FTP服务,那么需要开启虚拟机的端口映射功能 Workstation虚拟机上操作步骤如下 编辑--虚拟网络编辑器-- 首先找个端口映射到咱们的虚拟机FTP服务器的21端口上 但是这个时候问题

CentOS虚拟机NAT模式下配置静态IP教程

本教程是以32位的CentOS6.5为例,CentOS的网卡是NAT模式 1.打开VMware虚拟机,编辑--->虚拟网络编辑器进行设置NAT网卡 将DHCP服务勾选上,可点击NAT设置查看网关 这里可不做修改,记下网关IP(或者稍后在CentOS中查看也行),保持默认即可 2.进入CentOS虚拟机中,运行dhclient命令来自动获取IP 3.执行ifconfig命令,查看获取的IP 4.配置相关文件 输入命令:vi /etc/sysconfig/network-scripts/ifcfg-

linux虚拟机在NAT模式下怎么连接Xshell

打开虚拟网络编辑器  选择NAT设置 找到端口转发 选择添加 添加映射端口.

linux: centos设置ip以及连接外网

注明:我使用的的使centos 7,所有文件名是ifcfg-enp0s3, 一. 设置虚拟机中linux的ip,使本地能连通虚拟机的linux系统 1>.进入本地windows的cmd,输入ipconfig 2>.根据上面的信息,设置虚拟机中的linux的ip必须要与本机ip在同一网段,这样才能在本地使用xshell等连接工具连接登录虚拟机的linux系统 以下是linux中/etc/sysconfig/network-scripts/ifcfg-enp0s3档案的信息(设置如下) TYPE=

虚拟机中的centos在nat模式下连不上外网

这两天需要配置ftp服务器,可是虚拟机在nat模式下死活连不上外网,主机能够通过该ssh与虚拟机进行连接,虚拟机也能ping同一网段主机的IP地址,但就是ping不通外网, 开始我是这样配置的: 主机vmnet8:172.16.1.1 虚拟机网络配置中网关:172.16.1.1 虚拟机centos:172.16.1.10 就这样,尝试过启动windows的dhcp服务.配置虚拟机centos的dns等等,真实瞎忙活一场,真正搜索,虚拟机nat联网原理后才明白,虚拟机本身网络配置中的网关是接通外网

NAT模式下VMware中CentOS7无法连接外网的解决方法

由于需要有配置了一台虚拟机,发现按照之前的方法又出现问题了,需要配置DNS解析才能够识别外部的IP域名. # 查看是否有DNS配置 cat /etc/resolv.conf # 添加DNS配置 vim /etc/resolv.conf # 填入DNS服务器 nameserver 8.8.8.8 nameserver 8.8.4.4 之前安装CentOS7需要使用国内的yum源安装一些应用,但是在使用NAT模式下,发现无法连接外网: ping www.baidu.com 百度ping不通,但是主机

虚拟机NAT模式连接外网

虚拟机三种联网方式: 一.NAT(推荐使用)                功能:①可以和外部网络连通    ②可以隔离外部网络 二.桥接模式                        功能:直接连接到(路由器)交换机 三.主机模式(hostonly)     功能:便于虚拟机之间通信 楼主用的虚拟机软件为VMware14.0,Linux镜像是centos6.5,重点梳理下NAT模式联网. 1.查看主机IP地址: 打开运行->cmd->ipconfig 2.记录连接外网网卡信息: 楼主使用