VM虚拟机上网问题

许多虚拟机的初学者,都会询问这样一个问题:在虚拟机中怎样上网、和主机上网有什么区别?要弄清这个问题,需要先知道“主机是怎么上网的”,根据主机上网的方法,再理解或设置虚拟机上网的方法。综合来说,主机上网,无非有两种:一种是拨号上网,另一种是不需要拨号上网。拨号上网,包括家庭ADSL拨号上网、小区宽带拨号上网、无线网卡拨号上网,或者单位家属院专用拨号上网等。非拨号上网(主机不需要拨号即可以上网),包括单位直接上网、家庭通过路由器共享上网等。

  而虚拟机上网,则也有三种方式:直接上网、通过主机共享上网、通过VMware内置的NAT服务共享上网等,与主机上网方式组合,则有六种方式:

  A,主机拨号上网,虚拟机拨号上网;

  B,主机拨号上网,虚拟机通过主机共享上网;

  C,主机拨号上网,虚拟机使用VMware内置的NAT服务共享上网;

  D,主机直接上网,虚拟机直接上网;

  E,主机直接上网,虚拟机通过主机共享上网;

  F,主机直接上网,虚拟机使用VMware内置的NAT服务共享上网;

  虚拟机使用A种方式上网时,主机与虚拟机在同一时刻只能有一台计算机上网,而在其他几种方式中,主机与虚拟机可以同时上网。

  11.6.1 虚拟机使用“桥接”网卡上网

  在上面的六种方式中,如果选择A,则虚拟机使用“桥接”网卡,并且在虚拟机中,要安装与主机相同的拨号软件,并且在拨号的时候,提供ISP提供的用户名、密码拨号上网。

  如果选择D,虚拟机需要使用“桥接”网卡,但这时候,虚拟机与主机在同一个网段中,并且也要为虚拟机分配一个IP地址(不要与主机IP地址相同,也不要与主机所在局域网中的其他计算机IP地址相同),为虚拟机设置子网掩码、网关地址、DNS地址。除了IP地址不同,其他都相同。

11.6.2 虚拟机使用“NAT”网卡上网

  在虚拟机上网的几种方式中,最简单、最方便的就是使用“NAT”方式共享上网,这是VMware虚拟机“内置”的功能,也是推荐初学者使用的方法。不管主机是通过拨号上网、无线网卡上网、还是单位上网,只要主机能上网,虚拟机使用“NAT”(即VMnet8)虚拟网卡,并且在虚拟机中设置为“自动获得地址”,虚拟机就可以上网,如图11-74所示。

VM虚拟机常见问题之四-虚拟机上网问题

  图11-74 虚拟机使用NAT网卡并自动获得地址

  如果按照图11-74设置后,虚拟机不能上网,这时候,就需要检查,虚拟机不能上网的原因,主要步骤如下:

  (1)在虚拟机中,进入命令提示窗口,执行ipconfig/all命令,检查当前虚拟机是否获得的正确的IP地址,如果获得了正确的IP地址,则使用ping命令,看能否ping通网关,如果能ping通网关地址,则需要使用ping命令,ping互联网上的一个网站,例如ping [url]www.sohu.com[/url],看能否解析出这个网站的IP地址,如果不能解析出这个网卡的IP地址,则说明是DNS服务器的问题,则需要在图11-74中,取消“自动获得DNS服务器地址”的选项,使用当前ISP提供的DNS地址,然后再返回命令提示符,再次ping [url]www.sohu.com[/url],当能解析出[url]www.sohu.com[/url]的域名后,在虚拟机中,打开IE浏览器,就可以上网。如果仍然不能上网,则表明是IE浏览器或者IE浏览器设置的问题。

  (2)在执行上述命令后,如果不能获得正确的IP地址,而是获得了169.254.x.x之类的地址,表示可能当前主机上的“VMware DHCP服务”没有启动,此时可以先为虚拟机“指定”一个IP地址,看能否上网,在指定IP地址时,要检查主机上VMnet8所使用的网段,例如,如果虚拟机使用了192.168.80.0的网段,则可以为虚拟机指定192.168.80.3~192.168.80.254的IP地址,子网掩码为255.255.255.0,网关地址为192.168.80.2,DNS地址为192.168.80.2或者ISP提供的DNS地址。在指定IP地址后,使用ping命令检查到网关(192.168.80.2)、主机网卡(192.168.80.1)的连通性,检查解析域名的情况。如果不能ping通网关,检查虚拟机网卡设置、主机上网卡设置。当指定IP地址能上网时,检查主机上VMware DHCP服务并尝试启动该服务。有关VMware DHCP服务的情况,后文介绍。

 11.6.3 虚拟机使用主机上的“ICS”连接共享上网

  如果想使用主机上的“Internet连接共享”为虚拟机提供共享上网服务,则可以按照下述步骤操作:

  (1)打开“网络连接”,如果主机是“直接上网”,则用鼠标右键“本地连接”,从弹出快捷菜单中选择“属性”,如图11-75所示。

VM虚拟机常见问题之四-虚拟机上网问题

  图11-75 本地连接属性页

  (2)在“本地连接 属性”页中,在“高级”选项卡中,单击“允许其他网络用户通过此计算机的Internet连接来连接”单选按钮,并在“家庭网络连接”下拉列表中选择“VMware Network Adapter VMnet1”,如图11-76所示。

  (3)然后在“Windows防火墙”选项组中,单击“设置”按钮,在弹出的“Windows防火墙”页中,在“高级”选项卡中,取消“VMware Network Adapter VMnet1”的选择,如图11-77所示。然后单击“确定”按钮返回图11-76,单击“确定”按钮,完成设置。

VM虚拟机常见问题之四-虚拟机上网问题

  图11-76 启用Internet连接共享

VM虚拟机常见问题之四-虚拟机上网问题

图11-77 取消VMnet1的防火墙

  (4)在启用“Internet连接共享”功能时,会弹出VMnet1虚拟网卡被强制设置为192.168.0.1,此时单击“是”按钮即可,如图11-78所示。

VM虚拟机常见问题之四-虚拟机上网问题

  图片看不清楚?请点击这里查看原图(大图)。

  图11-78 提示VMnet1被设置为192.168.0.1

  (5)如果主机网络也使用了192.168.0.0的网段,此时VMnet1设置为192.168.0.1会与主机网段冲突,可以修改VMnet1的网卡地址。进入VMnet1属性页,将网卡的IP地址从192.168.0.1修改为其他网段的地址,例如192.168.100.1,如图11-79所示。

VM虚拟机常见问题之四-虚拟机上网问题

  图11-79 修改VMnet1网卡地址

  (5)在主机上启用“Internet连接共享”功能后,以后为虚拟机使用VMnet1虚拟网卡,并在虚拟机中,设置网段IP地址与图11-79中在同一网段、网关与DNS地址为图11-79中设置的地址即可以上网,如图11-80、图11-81所示。

VM虚拟机常见问题之四-虚拟机上网问题

  图11-80 虚拟机中设置IP地址

VM虚拟机常见问题之四-虚拟机上网问题

图11-81 在虚拟机中上网

  【说明】如果没有在图11-79中修改VMnet1虚拟网卡地址,则在图11-80中,设置IP地址仍然为192.168.0.2~192.168.0.254的范围。

  (6)如果主机是通过“拨号上网”,则用鼠标右键单击“拨号上网”快捷方式,从中选择“属性”,并在弹出的拨号上网的属性页中,在“高级”选项卡中,启用“Internet连接共享(ICS)”并选择VMnet1虚拟网卡,而其他设置则与主机直接上网的设置相同,不在介绍。如图11-82和图11-83所示。

VM虚拟机常见问题之四-虚拟机上网问题

  图11-82 拨号连接

VM虚拟机常见问题之四-虚拟机上网问题

  图11-83 为拨号连接启用ICS

  11.6.4 关于虚拟机使用NAT不能上网的若干问题

  在使用VMware Workstation的时候,创建的虚拟机使用NAT,但在虚拟机中却不能上网,原因可能如下:

  (1)主机是Windows XP Professional SP2、SP3或者是Windows Server 2003,如果是这样,则需要把VMnet1、VMnet8的防火墙关闭。方法是: 右击“本地连接”选择属性→高级→设置,在“Windows防火墙”对话框中单击“高级”,将VMnet1和VMnet8前面的“√”去掉就可以。

  (2)你的主机安装了瑞星、江民、天网防火墙,或者其他防火墙软件,这些防火墙软件没有进行正确的配置,导致VMware不能通过其内置的NAT功能共享上网,这时,可以把第三方的防火墙软件关闭。

(3)如果启用了Windows XP(或Windows Server 2003)内置的“Internet连接共享”,则需要正确选择“局域网”网卡,否则可能由于设置错误,导致虚拟机不能上网。详细内容可以参看上一节内容。

  (4)如果使用了VMware Workstation的“绿色”版或者“精简”版,请使用完整版本安装。如果你需要中文,可以安装中文的汉化补丁。 这些“绿色”版或“精简”版去掉了一些服务或者插件,导致不能上网。

  在使用VMware Workstation的过程中,推荐采用正面的方法:

  (1)主机不安装第三方的防火墙软件,使用操作系统内置的防火墙。

  (2)安装VMware Workstation的完整版本(就是从VMware Workstation网站或者一些下载网站下载的VMware Workstation的英文版。可以安装汉化补丁,但不要使用“精简”版。

  (3)修改XP的防火墙,让VMnet1和VMnet8不使用防火墙(主机网卡使用)。创建虚拟机使用NAT网卡,在虚拟机中设置为“自动获得IP及DNS地址”,这样做,一般情况下都可以直接上网。

  这是即将出版的<虚拟机应用深入实践>一书第11章的部分内容。该书由铁道出版社出版,目前正在后期的编辑制作过程中,敬请关注!

  系列文章:

  VM虚拟机常见问题之-虚拟机操作系统安装问题

  VM虚拟机常见问题之二----声卡驱动问题

 

  VM虚拟机常见问题之三-- 虚拟网卡问题

 

<think>嗯,用户现在有一个开发板和Ubuntu虚拟机,通过网线连接,两端可以互相ping通。现在的问题是如何让开发板通过这个连接上网。首先,我需要回忆一下网络配置的相关知识,特别是NAT和桥接模式的区别,以及如何设置网络共享。 用户提到开发板和虚拟机已经通过网线连接,并且可以互相ping通,这说明物理连接和基础网络配置是正确的。接下来,要让开发板上网,意味着开发板需要能够访问互联网,而虚拟机作为中间节点,可能需要充当路由器或者网关的角色。这时候,可能需要配置网络地址转换(NAT)或者IP转发,让开发板的流量通过虚拟机转发到外部网络。 首先,我应该考虑Ubuntu虚拟机网络设置。虚拟机通常有几种网络模式,比如NAT、桥接、仅主机等。如果虚拟机是通过NAT连接到宿主机的网络,那么默认情况下,虚拟机可以访问外部网络,但外部设备(如开发板)不能直接访问虚拟机。不过用户已经能ping通,可能虚拟机使用的是桥接模式或者自定义的网络配置。 接下来,要让开发板通过虚拟机上外网,需要确保虚拟机的IP转发功能已开启,并且正确配置了iptables规则来执行NAT。同时,开发板的默认网关应该设置为虚拟机的IP地址,这样所有的外部请求都会发送到虚拟机,然后由虚拟机转发出去。 另外,还需要检查DNS设置。开发板可能需要配置正确的DNS服务器地址,以便解析域名。可以将DNS设置为公共DNS,比如8.8.8.8,或者在虚拟机上设置一个DNS转发服务。 用户可能已经完成了部分配置,比如IP地址的分配,但还需要进一步的步骤来启用转发和NAT。可能还需要配置虚拟机防火墙规则,允许流量通过。 可能的步骤包括: 1. 在Ubuntu虚拟机上启用IP转发。 2. 配置iptables进行NAT。 3. 设置开发板的默认网关为虚拟机的IP。 4. 配置开发板的DNS服务器。 同时,需要确认Ubuntu虚拟机本身能够访问互联网,否则转发也无法工作。如果虚拟机是通过NAT连接到宿主网络,那么宿主机的网络连接也需要正常。 用户可能会遇到的问题包括:IP转发未启用、iptables规则配置错误、网关设置不正确、DNS解析失败等。需要逐步检查这些配置,确保每一步都正确无误。 此外,可能还需要考虑网络接口的命名和配置,比如eth0、ens33等,不同的系统可能有不同的命名方式,需要根据实际情况调整命令中的接口名称。 总结来说,解决方案需要包括启用IP转发、配置NAT、设置网关和DNS,并且确保所有步骤正确执行。用户可能需要按照步骤逐一操作,并在遇到问题时检查日志或使用工具如tcpdump进行网络调试。</think>要让开发板通过已连接的Ubuntu虚拟机共享上网,需在虚拟机中配置**NAT转发**或**网桥模式**。以下是具体实现步骤: --- ### **一、基础网络拓扑** ``` 开发板(eth0) ↔ 网线 ↔ Ubuntu虚拟机(eth0) ↔ 宿主机网络(NAT/桥接) ↔ 互联网 ``` --- ### **二、配置方法(推荐NAT转发)** #### **步骤1:设置Ubuntu虚拟机的IP转发** 1. **临时开启IP转发**: ```bash sudo sysctl -w net.ipv4.ip_forward=1 ``` 2. **永久生效**(编辑`/etc/sysctl.conf`): ```bash echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p ``` --- #### **步骤2:配置NAT规则(关键步骤)** 假设: - 虚拟机连接外网的接口为 `ens33`(通过`ip a`确认) - 连接开发板的接口为 `eth0` ```bash # 清除现有规则(谨慎操作) sudo iptables -F sudo iptables -t nat -F # 添加NAT规则 sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o ens33 -j ACCEPT sudo iptables -A FORWARD -i ens33 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT # 保存规则(需安装iptables-persistent) sudo apt install iptables-persistent -y sudo netfilter-persistent save ``` --- #### **步骤3:配置开发板网络** 1. **设置开发板静态IP**(示例): ```bash # 开发板上执行(假设Ubuntu虚拟机连接开发板的IP是192.168.1.100) sudo ifconfig eth0 192.168.1.200 netmask 255.255.255.0 ``` 2. **设置默认网关为虚拟机IP**: ```bash sudo route add default gw 192.168.1.100 ``` 3. **配置DNS**(编辑`/etc/resolv.conf`): ```bash nameserver 8.8.8.8 # Google DNS nameserver 114.114.114.114 # 国内DNS ``` --- #### **步骤4:验证连通性** 1. **开发板上测试**: ```bash ping 8.8.8.8 # 测试基础网络 ping www.baidu.com # 测试DNS解析 ``` --- ### **三、替代方案(网桥模式)** 若虚拟机使用桥接网络: 1. **虚拟机网络设置**:选择桥接模式(如VirtualBox的"桥接网卡") 2. **开发板配置**:通过DHCP或手动设置与宿主机同一网段的IP --- ### **四、常见问题排查** | 问题现象 | 解决方案 | |---------|----------| | 能ping通IP但无法访问域名 | 检查开发板的`/etc/resolv.conf` DNS配置 | | NAT规则失效 | 确认`iptables`规则是否保存,或重启后重新加载规则 | | 虚拟机无法上网 | 检查宿主机网络,确认虚拟机NAT/桥接配置正确 | --- ### **五、扩展说明** - **防火墙影响**:若Ubuntu启用了`ufw`防火墙,需允许转发: ```bash sudo ufw default allow routed ``` - **DHCP服务**(可选):在虚拟机安装`dnsmasq`为开发板自动分配IP: ```bash sudo apt install dnsmasq ``` 按此配置后,开发板即可通过虚拟机共享上网。如果仍有问题,可提供`ifconfig`和`route -n`的输出进一步诊断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值