虚拟机双网卡设置(外网+内网)

【摘要】:本文主要介绍了在开发过程中,实现开发板利用网线直连电脑实现开发工作,而电脑又可以通过另一个无线或有线网卡正常连接互联网。

【硬件开发环境】:开发主机——惠普笔记本(带无线网卡+有线网卡)、开发板JZ2440(带有线网卡)、网线1根(用于连接开发板和开发主机间的有线网卡)

【软件开发环境】:开发主机安装Win10操作系统并通过无线网卡连接互联网、开发主机安装有VMware Workstation Pro软件,用于运行虚拟机Ubuntu16.04、开发板安装了Linux3.4.2内核。

【配置目标】:虚拟机(Ubuntu)配置成双网卡,其中一个网卡配置成NAT模式,通过主机的无线网卡连接到外网进行上网;另一个网卡配置成桥接模式,通过桥接到开发主机的有线网卡,达到开发主机、Ubuntu、开发板的两两互联。

1. 配置NAT网卡

  • NAT,Network Address Translation,指网络地址转换。使用 NAT 网卡 时,Ubuntu 要访问外网,是委托 Windows 发出数据包,Windows 接收到回应 后再转发给 Ubuntu。外界看到的都是 Windows,看不到 Ubuntu。使用 NAT 时, 只要 Windows 能上网,Ubuntu 就必定能上网,无需设置 Ubuntu 的网络。
  1. 在Windows的【开始】菜单,搜索“虚拟网络编辑器”,并以管理员的身份打开后,点击还原默认设置。

  2. 在虚拟机关机状态下,点击【编辑虚拟机设置】,删除所有已有的【网络适配器】(为了彻底和之前错的设置说再见,一切从头开始)。

  3. 再次重新添加一个新的【网络适配器】:

    虚拟机双网卡设置(外网+内网)_第1张图片

  4. 为该新的网络适配器选择【NAT】模式:

    虚拟机双网卡设置(外网+内网)_第2张图片

  5. 确认后,开启虚拟器,打开终端查看虚拟机是否已自动配置好ip地址,

    虚拟机双网卡设置(外网+内网)_第3张图片

    • 如果没有自动配置IP

    • 请在ubuntu终端下执行 sudo dhclient 来自动获取IP;

    • 请确认虚拟机的网络配置文件,是否将ens33网卡配置为动态IP?

      • 打开/etc/network/interfaces文件,查看ens33网卡配置语句,修改为以下动态获取IP:
      auto ens33
      iface ens33 inet dhcp
      
    • 请确认开发主机Windows是否已经启用了VMNet8?其IP地址和DNS服务器地址是否设置为自动获取?

      虚拟机双网卡设置(外网+内网)_第4张图片

      如果没有上图中的VMNet8,那需要打开Windows的虚拟机服务(把VMWare开头的几个全打开):

      虚拟机双网卡设置(外网+内网)_第5张图片

  6. 查看虚拟机是否已经可以连接外网:

    虚拟机双网卡设置(外网+内网)_第6张图片

    • 如果网址ping不通:执行route -n命令,查看当前系统的路由信息,确保ens33网卡有0.0.0.0目标的路由表:

      虚拟机双网卡设置(外网+内网)_第7张图片

      • 如果缺少该路由信息,可执行以下语句进行添加:(192.168.40.2是根据ens33网卡自动获取的IP地址192.168.40.129得到的网关地址,要根据你自己的来设置)

        sudo route add default gw 192.168.40.2
        

2. 配置网桥网卡

  • 使用桥接网卡时,Ubuntu 就是使用一个真实的网卡:开发板的网线是连接到这个真实的网卡上的,这样 Windows、Ubuntu、开发板就都可以用过这个网卡 互通了。
    • Ubuntu需要完成的设置:添加一个桥接网络适配器,并桥接到连接开发板的那个有线网卡;为该网卡设置静态IP
    • Windows开发主机需要完成的设置:为该有线网卡设置静态IP,且与Ubuntu中设置的为同一网段;
    • 开发板需要完成的设置:设置静态ip地址,且与Ubuntu中设置的为同一网段;

2.1 设置Windows端

  1. 依次打开【控制面板】——>【网络和Internet】——>【网络连接】,查看在Windows是否已经识别:

虚拟机双网卡设置(外网+内网)_第8张图片

如果是外接网卡,需要在设备管理器中查看其名字,且一定要注意,在插入外接网卡时Ubuntu可能会弹出一个窗口,提示检测到新的设备,是连接到主机还是Ubuntu?一定要选择连接到主机!!!

虚拟机双网卡设置(外网+内网)_第9张图片

如果,不幸选中了,也可以通过点击【可移动设备】显示的刚插入电脑里的外接网卡名前面的勾号进行取消:

虚拟机双网卡设置(外网+内网)_第10张图片

  1. 设置ip

    选中网卡,鼠标右键选择【属性】,找到【Internet 协议版本4(TCP/IPv4)】,双击后设置静态ip为192.168.5.10

    虚拟机双网卡设置(外网+内网)_第11张图片

    • 此时,因为此时开发板还未启动,ip也未设置,所以网卡图标是打叉的。且在Windows的cmd窗口中也看不到该网卡(以太网适配器 以太网)的ip地址。

      虚拟机双网卡设置(外网+内网)_第12张图片

      虚拟机双网卡设置(外网+内网)_第13张图片

2.2 设置Ubuntu端

  • 关闭虚拟机,而后添加一个新的【网络适配器】,并选择桥接模式。

    虚拟机双网卡设置(外网+内网)_第14张图片

  • 在Windows的【开始】菜单,搜索“虚拟网络编辑器”,并以管理员的身份打开后,确定【VMnet0】的类型为桥接模式,并且选择已桥接至我们连接到开发板的网卡:

    虚拟机双网卡设置(外网+内网)_第15张图片

    • 如果没有出现【VMnet0】,可先点击左下角的【还原默认设置】。
    • 选中VMnet0这一行后,在”VMnet信息“这一菜单栏下选择【已桥接至】,点击下拉箭头选择要桥接的网卡(如果是外接有线网卡,那就选择外接网卡,如果是自带有线网卡,就选择自带的有线网卡,以你开发板连接的网卡为准)。
    • 上图中的VMnet8其实就是我们之前设置的【NAT网络适配器】,可以看到其子网地址的网段与我们在Ubuntu中ens33的ip地址是一致的。
  • 设置IP地址

    1. Ubuntu桌面点击左侧【系统设置】图标,选择【网络】

      虚拟机双网卡设置(外网+内网)_第16张图片

    2. 打开【网络】之后,可以看到两个网卡的设置界面

      1. 其中一个是之前设置的ens33(NAT网卡),可以通过其ip地址为192.168.40.129判断出来:

        虚拟机双网卡设置(外网+内网)_第17张图片

      2. 另外一个没有设置ip地址的显然就是我们待设置的桥接网卡,点击右下角【选项】进入设置页,点击【IPv4设置】,【方法】选择“手动”,而后分别设置ip地址为:192.168.5.11,子网掩码为:255.255.255.0(也就是24位),网关为:192.168.5.1,最后点击保存即可!注意:此ip地址你可以自己设定,只要保证不与之前设置的NAT网卡地址位于同一网段且Windows、Ubuntu、开发板这三者的ip地址位于同一网段即可!

      虚拟机双网卡设置(外网+内网)_第18张图片

    3. 此时,需要执行reboot重新启动Ubuntu,而后通过ifconfig查看是否设置成功。

      • 若重启后,执行ifconfig,发现桥接网卡ens38地址并未设置,也可以通过命令行进行设置:

        sudo ifconfig ens38 192.168.5.11
        
      • 若重启后,执行ifconfig,只看到了NAT网卡(ens33),并未看到桥接网卡ens38。可以执行如下命令进行开启:

        sudo ifup ens38
        

      虚拟机双网卡设置(外网+内网)_第19张图片

2.3. 配置开发板

  1. 打开串口,打开开发板电源,利用串口工具登陆开发板系统;

  2. 手动设置开发板ip地址:ifconfig eth0 192.168.5.9

    1. 为了每次打开开发板的时候,能够自动配置为我们所设置的ip地址,也可以在开发板的/etc/systemd/network/目录(该目录本来不存在,也需要新建)下新建50-static.network文件。

    2. 输入以下配置语句:

      [Match]
      Name=eth0
      [Network]
      Address=192.168.5.9/24
      Gateway=192.168.5.1
      
  3. 输入ifconfig查看开发板ip配置情况:

    虚拟机双网卡设置(外网+内网)_第20张图片

  4. 在开发板上分别ping一下Ubuntu和WIndows主机,看能否联通?

    虚拟机双网卡设置(外网+内网)_第21张图片

  5. 在Ubuntu中分别ping一下开发板和WIndows主机,看能否联通?

    虚拟机双网卡设置(外网+内网)_第22张图片

    • 如果存在ping不同Windows的话,那肯定是防火墙没有关闭,我们需要关闭所有网络的防火墙。

    • 如果担心网络安全的话,也可以打开【允许应用通过防火墙】,打开以”VMware“开头的所有应用的防火墙:

      虚拟机双网卡设置(外网+内网)_第23张图片

      虚拟机双网卡设置(外网+内网)_第24张图片

  6. 在WIndows中分别ping一下开发板和Ubuntu,看能否联通?

    虚拟机双网卡设置(外网+内网)_第25张图片

    此时,再查看WIndows的网络连接,已经发现之前打叉断开的有线网卡已经处于联通状态了:

虚拟机双网卡设置(外网+内网)_第26张图片

  1. 至此,已经达到我们所有目的了。当然如果你的开发板有两个网卡接口的话,除了eth0被我们用来作为开发用之外,另一个网口eth1就可以被用来开发板上网了,具体方法也很简单:

    1. 使用网线连接开发板另一网卡接口至可以上网的路由器上;
    2. 在开发板终端上执行udhcpc -i eth1,等待 eth1 网卡自动获得IP;
    3. 通过执行ping www.baidu.com,如果可以正常解析网址并ping通,那就证明开发板已经可以访问外网了。

你可能感兴趣的:(嵌入式开发,Ubuntu开发板主机互通,双网卡配置,虚拟机配置)