校园网条件下,无需路由器实现物理机、虚拟机、开发板相互ping通并上网

文章目录

  • 背景介绍
  • 原理介绍
  • 具体实现
    • 1.PC机配置
    • 2.虚拟机配置
    • 3.开发板配置
  • 特别鸣谢

背景介绍

大多数网上采用的方式都是使用集线器或者路由器的方式实现物理机、虚拟机、开发板三者互相ping通并且可以同时访问外网的,但是对于实验条件有限的大学生来说,他们往往没有该实验条件。因此,本文介绍在校园网条件下实现物理机、虚拟机、开发板三者互相ping通并且可以同时访问外网。

实验前的准备:
PC机(要求有无线网卡和有线网卡)
一根网线
虚拟机:Ubuntu 18.04
开发板:Linux开发板(我的是正点原子的Linux开发板)

PC机(我的是笔记本)通过WiFi连接上校园网,开发板通过网线和笔记本直连。

原理介绍

一般情况下,我们的PC机连接到校园WiFi,也就是通过WLAN这个无线网卡连接到了路由器,虚拟机设置为NAT模式,就可以实现PC机和虚拟机相互ping通和上网了。那么,现在将开发板通过网线直接连接在PC机上,如何实现三者互通并能上网呢?

我们发现,真正具备上网能力的是PC机的WLAN这个无线网卡,它连接到了路由器。虚拟机设置为NAT模式,通过ens33虚拟网卡实现上网,其实就是将PC机当做路由器,网络流量走WLAN无线网卡转发,实现上网。

因此我们可以借助这个思路(将虚拟机看做开发板的路由器),给虚拟机添加一个网络适配器,设置为桥接模式,让这个ens38虚拟网卡作为网关,开发板流量到ens38后,经过ens33网卡转发,而这个ens33虚拟网卡是可以上网的,从而实现开发板也可以上网。

具体原理请参照博文:无需路由器实现虚拟机、物理机、开发板互相ping通+上网

具体实现

PC机、虚拟机、开发板三者的ip配置

物理机无线网卡:无需设置,通过路由器自动获取一个ip地址

物理机有线网卡:自定义一个内网ip段,我设置为192.168.8.8,子网掩码255.255.255.0

虚拟机网卡1:通过NAT方式上网,自动获取ip,但可能每次开机会发生变化,因此后面需要设置静态ip。在自动分配的基础上,我设置为192.168.240.128,网关192.168.240.2,子网掩码255.255.255.0

虚拟机网卡2:通过桥接模式上网,桥接到PC机的有线网卡上,ip设置需要PC机有线网卡同网段,因为后期要用于网关功能,我设置为192.168.8.1,因为它是通过虚拟网卡1将网络流量转发出去的,因此网关设置为192.168.240.128

开发板有线网卡:和PC机有线网卡直连,需要设置和PC机有线网卡同网段,我设置为192.168.8.100
ip地址分配:

网卡 ip地址
PC机无线网卡 随机
PC机有线网卡 192.168.8.8
虚拟机网卡1 192.168.240.128
虚拟机网卡2 192.168.8.1
开发板有线网卡 192.168.8.100

1.PC机配置

PC机的无线网卡无需配置,能正常连接无线网(校园网)就行
PC机的有线网卡配置:将PC机的有线网卡配置成固定ip,当然如果使用有线网络上网的话记得还改为自动ip地址,否则有可能上不了网。
另外,需要将WLAN共享到以太网,否则开发板还是上不了网
校园网条件下,无需路由器实现物理机、虚拟机、开发板相互ping通并上网_第1张图片
校园网条件下,无需路由器实现物理机、虚拟机、开发板相互ping通并上网_第2张图片

2.虚拟机配置

首先关闭虚拟机,注意是关闭虚拟机,不是挂起。执行编辑虚拟机设置—>添加—>网络适配器—>完成之后就会看到新添加了一个虚拟网卡,实际上虚拟机是可以添加任意多得虚拟网卡的,目前两个就够用了。
一个网卡设置为NAT模式,一个设置为桥接模式
校园网条件下,无需路由器实现物理机、虚拟机、开发板相互ping通并上网_第3张图片

设置完成后打开进入虚拟机,然后设置静态ip地址、网关和子网掩码。

对于虚拟机来说,建议使用静态ip地址,这样以后ssh、nfs等操作都比较方便,否则ip地址变来变去着实麻烦。打开终端执行sudo vim /etc/network/interfaces,修改interfaces文件来配置ip地址等。
校园网条件下,无需路由器实现物理机、虚拟机、开发板相互ping通并上网_第4张图片
添加DNS配置,执行sudo vim /etc/systemd/resolved.conf打开文件进行配置,去掉DNS前面的#取消注释,添加DNS即可
校园网条件下,无需路由器实现物理机、虚拟机、开发板相互ping通并上网_第5张图片
修改完成之后,执行reboot,重启虚拟机;执行ifconfig查看ip地址
校园网条件下,无需路由器实现物理机、虚拟机、开发板相互ping通并上网_第6张图片
至此,虚拟机已经可以上网了。

虚拟机开启网络转发
接下来是实现开发板上网了,我们需要打开虚拟机的网络转发功能,即对于开发板来说,虚拟机相当于一个路由器了。
执行 vim /etc/sysctl.conf修改配置文件将net.ipv4.ip_forward修改为1,打开网络转发,开启路由功能。
在这里插入图片描述
执行sudo iptables -t nat -A POSTROUTING -o ens33 -s 192.168.8.0/24 -j MASQUERADE将192.168.0/24这个网段的流量通过NAT网络地址转换通过ens33转发出去。这是整个流程的核心。注意:下次开机时,网络转发功能不一定开启了,如果没开启需要重新执行此命令。
然后执行sudo iptables -t nat -nL查看NAT转发表
在这里插入图片描述
如果看到以上输出证明NAT转发建立成功。至此虚拟机配置结束,接下来配置开发板。

3.开发板配置

注意:不同于PC机和虚拟机,以下的配置在每次开发板重启之后都需要重复一遍。

进入开发板终端执行ifconfig eth0 192.168.8.100,配置开发板ip地址,使其和PC机有线网卡、虚拟机桥接网卡在同一网段。

然后添加默认网关,前面已经介绍了,我们准备使用虚拟机的桥接网卡ens38作为网关,流量也是从这里通过NAT转换经过ens33转发出去的。执行route add default gw 192.168.8.1设置开发板的默认网关。
此时,如果不出意外的话开发板就可以ping通外网了。
在这里插入图片描述
但是还需要解决域名的问题,执行nano /etc/resolv.conf打开配置文件:
在这里插入图片描述
添加以下配置:
校园网条件下,无需路由器实现物理机、虚拟机、开发板相互ping通并上网_第7张图片
至此,开发板就配置完成了,并且可以上网。
校园网条件下,无需路由器实现物理机、虚拟机、开发板相互ping通并上网_第8张图片

特别鸣谢

关于本文所涉及到的原理部分,请读者移步至:无需路由器实现虚拟机、物理机、开发板互相ping通+上网
本文大部分内容是参考上述博文,并在此博文的基础上进行改进的。最后,特别感谢上述博文的作者提供的帮助。

你可能感兴趣的:(环境搭建,linux,嵌入式)