最近在学习 ARM,由于需要用到 nfs,所以需要开发板、主机、虚拟机互相 ping 通
以下是三者的情形
- 主机:win10,通过 WiFi 上网,没有条件使用网线上网
- 虚拟机:Vmware、Ubuntu16.04 ,桥接以太网网卡
- 开发板:通过交叉双绞线连接笔记本
目前是只要虚拟机桥接以太网网卡,在三个设备在同一个 IP 段的条件,三者是可以互相 ping 通的。但是这样的话由于主机用无线上网,虚拟机使用以太网网卡,所以虚拟机不能联网。请问有什么办法可以实现三者能互相通信,同时虚拟机又能上网。不要再增加其他设备。
自顶一波,别沉啊
你意思是说,主机用 WIFI 上网,虚拟机桥接为网线上网,然后虚拟机上不了网?
第一个反应是,不可能吧?????????
win10 装代理软件!虚拟机和开发板通过代理上网!
emmm 目前的情形就是这样的,能详细说一下吗
VMware, 编辑 - 虚拟网络编辑器 - 选择 VMnet0 桥接模式, [桥接到] 不要选择自动,而是选择你那无线网卡。
桥接 wifi 就可以了
另外,为啥不把主机装成 ubuntu,然后 vmware 虚拟个 win10 出来呢
不不,这样的话开发板就 ping 不通虚拟机了,因为两个用不同的网卡工作
以太网网卡和无线网卡桥接?
那 Win10 就没用了吧,还虚拟啥
我认为你应该桥接虚拟网卡与以太网卡,然后通过 NAT 使虚拟机连接网络
宿主机建议使用 GNU/Linux
宿主机中
sudo tunctl -t tap0 -u 用户名
sudo brctl addbr br0
sudo brctl addif br0 eth0
sudo brctl addif br0 tap0
sudo ifconfig eth0 0.0.0.0 up
sudo ifconfig tap0 0.0.0.0 up
sudo ifconfig br0 192.168.1.100 up
虚拟机
启动时要这样设置网络:qemu-system-x86_64 .... -net tap,ifname=tap0,script=no,downscript=no ....
然后虚拟机中
sudo ifconfig eth0 192.168.1.101 up
这样虚拟机和开发板和宿主机应该就能两两互通了
要使虚拟机访问外网,则设置 NAT,把流量从 wlan0 转发出去应该就 OK 了
sudo sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
如果你非要宿主机是 Windows,那么你需要找到上述过程的 windows 设置方法,其实我担心根本不存在有效方法(除非自己开发 Windows 驱动程序)
-t nat -A POSTROUTING -o wlan0 -j MASQUERADE
改为
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -o wlan0 -j MASQUERADE
另外不管你怎么配置,NAT 是必不可少的,因为通常情况下不能桥接 wlan0 和 eth0
除非你启用 WDS 模式
iw dev wlan0 set 4addr on
但这样可能就不符合你的基本要求了
虚拟机可以给两个网卡啊,一个 NAT 走主机 wifi 上外网,一个桥接到主机以太网卡
印象中可以这样
win10 右键无线网卡,属性,共享给有线网卡
虚拟键 桥接到有线网卡上
打错字:虚拟键 -> 虚拟机
win10 有线网卡的 ip 自动变成 192.168.137.1
虚拟机自动获得 ip 192.168.137.x
经常要用到 windows 下的软件所以宿主机只能是 Windows 了,感谢您热情的回复