找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 5396|回复: 10

已解决关于vmware搭openwrt旁路由 无线设备无法上网

[复制链接]
发表于 2021-9-26 17:13 | 显示全部楼层 |阅读模式
本帖最后由 小布马 于 2021-9-27 10:38 编辑

macbook中vmware装了个openwrt旁路由,桥接到本机的无线网卡,经测试发现:
1、宿主机改网关后,可通过op上网和科学
2、其他无线设备改网关不能上网,但是可以ping通op,上op的网页
3、op终端可以ping通其他无线设备
解决:
1、宿主机开启路由转发,ip forward=1。
2、macbook 操作https://github.com/Miss-you/completedblog/blob/master/mac_os开启路由转发功能.md
3、提示权限不够时,用 sudo su 提升至管理员权限。
吐槽:搜索引擎现在是真难,无论是谷歌还是百度,一大堆没用的东西
感谢两位老兄给了灵感:
1、https://koolshare.cn/thread-179363-1-1.html
2、https://www.right.com.cn/forum/thread-2983767-1-1.html

分析原因:
1、查看主路由的ip列表的ip、mac条目,没有op的ip,因此op发出的包经过网卡后,mac地址被转换成宿主机(A)。
2、因此推测vmware加持下的网卡规则是:
(1)op发包,ip_op -> ip_op,mac_op->mac_宿主;
(2)网卡接收到包(R),若ip_R = ip_op ,mac_R=mac_A,此包给op
(3)网卡接收到包(R),若ip_R = ip_A ,mac_R=mac_A,此包给A
(4)网卡接收到包(R),若ip_R = ip_other ,mac_R=mac_A,此包网卡认为是给A的,丢弃
3、开启ip forward后,网卡接收到包(R),给A没用,所以判断是op的包。
4、宿主机和虚拟机op间不存在上述规则,因为数据包本机内按vmware的规则跑。

2021.9.27更新:
今天把宿主机网关该成主路由,想着op只给外接设备用,发现外接设备只能上内网,不能科学。
灵感来自:https://www.right.com.cn/forum/thread-5803541-1-1.html (无线网卡和有线网卡的实现区别)

上述原因第3点,开启端口转发,网卡应该是转发至宿主机设置的网关。推断原因:当宿主机网关设置为主路由,
直接转发至主路由,不经过科学,因此按主路由配置可内不可科学;当宿主机网关也为op,则流量转发到op,可内也可科学。
分析原理:
为什么转发流量按宿主机网关?虚拟机和宿主机共享同一网卡,从实现上说,以网卡为界:网卡对外只有实际宿主机mac,网卡对内才有宿主机mac和mac_op列表
vmware虚拟卡在实际网卡之内,只侦听mac=mac_op的包并在实际网卡上建立ip_R = ip_op ,mac_R=mac_A -> ip_R = ip_op ,mac_R=mac_op的规则
1、端口转发开启前,从网卡外来ip包,网卡将ip_R = ip_op ,mac_R=mac_A的给op,ip_R = ip_A ,mac_R=mac_A的给A,ip_R = ip_other丢弃;
当端口转发开启后,从网卡外来ip包,网卡将ip_R = ip_op ,mac_R=mac_A的给op,ip_R = ip_A ,mac_R=mac_A的给A,ip_R = ip_other进入网卡做下一步转发判断;
2、进入网卡内的ip包,包ip_R = ip_other,mac_R=mac_A,此时因为vmware虚拟卡无法知道这个包到底是给A还是给OP的,因此不做处理,宿主机实际网卡当作是给本宿主机的包处理。
3、当按照宿主机设置的网关再次转发时,因在宿主机内,有mac_op的arp表的存在,因此当宿主机网关为ip_op时,将包ip_R = ip_other,mac_R=mac_A -> mac_R=mac_op。此时vmware虚拟卡接收此包,进入op。
4、实际网卡会响应局域网内“who have ip_op,tell ip_R”和“who have ip_A,tell ip_R”的arp包。因为arp包网卡无论是否开启转发,都会接收进,原理就和上述123一样了,内部有op的arp表,arp回复出去时再将mac_op修改成mac_A。其他设备收到的ip_op的arp包内,mac还是mac_A。

只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2021-9-27 18:09 | 显示全部楼层
大佬,我之前用hyperv搞旁路由也是这样子。然后放弃了。应该也是网卡转发出了问题。
思考一下再试试

点评

这是针对mac的,win10也存在无线网卡问题,可能原理和这个有些不同,我还在找原因。  详情 回复 发表于 2021-9-28 08:22
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-28 08:22 | 显示全部楼层
捕风捉影 发表于 2021-9-27 18:09
大佬,我之前用hyperv搞旁路由也是这样子。然后放弃了。应该也是网卡转发出了问题。
思考一下再试试

这是针对mac的,win10也存在无线网卡问题,可能原理和这个有些不同,我还在找原因。

点评

反正都是虚拟机的锅,确实有点难搞  详情 回复 发表于 2021-9-28 20:08
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2021-9-28 20:08 | 显示全部楼层
小布马 发表于 2021-9-28 08:22
这是针对mac的,win10也存在无线网卡问题,可能原理和这个有些不同,我还在找原因。

反正都是虚拟机的锅,确实有点难搞
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-29 10:12 | 显示全部楼层
本帖最后由 小布马 于 2021-9-29 10:32 编辑

9.29更新:vmware桥接有线网卡,路由端存在mac_vm,那么为什么无线网卡和有线网卡存在这样的差异呢?分析原因:1、主要是安全性原因:无线网络通信时,在数据链路层的通信方式需要比有线网络考虑的更多,因此数据帧比以太网数据帧携带更多的信息。所以ap与sta之间通信的数据包格式和有线不一样!!
2、但是无线网络为了模拟出和有线环境一样的网络模式,在用户设置层面还是按照以太网数据帧模式设置,所以网卡收到无线数据帧后的后续处理还是按照有线模式。
3、上述原因,导致ap和sta间在可用的标识选择上,就包括了网卡的mac地址
4、sta的mac参与了链路构建、身份认证等一系列的计算。因此如过一张无线网卡对外表现出两个以上的mac的地址,会导致ap和sta之间链路的不断拆、建。
综上所述就是无线网卡对外仅有一个mac的逻辑推断。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-30 14:01 | 显示全部楼层
本帖最后由 小布马 于 2021-9-30 14:42 编辑

9.30更新为什么win10下按mac的方式依然不能解决桥接在无线网卡上的问题?
线索:1、比对win10和mac的wirshark侦听的网口列表,发现mac的wirshark列表里有虚拟机网卡、宿主机实体卡、以及虚拟机和宿主之间的虚拟桥。而win10的侦听列表仅有实际卡。因此,windows和mac在虚拟网卡的架构上是不一样的,mac按照桥接网络逻辑架构,而win10通过其他方式实现“用起来和桥接一样”。
2、设置宿主机A网关是主路由,虚拟机op去ping主路由,发现一个发送包对应的收到的回包有两个ttl=64的,两个ttl=63的。说明一个发送包,路径有两条,ttl=64的路径直达主路由,ttl=63的经过了中间某处以转发的形式到达了主路由。且每条路径上的发送包又被复制出了一份!
3、设置宿主机A网关是op,立马wlan上出现了网络风暴。瞬间拉满带宽。
原因:核心原因是 win10就算在虚拟机下也只通过一张卡实现所有功能,相当于vmware进程和A进程在同时监管这个网卡的协议栈。          而且因此,该网卡必然已具备了转发功能,无论系统的ipforward开没开。1、当op发了一个包,需要A网卡帮它封装,当封装到ip包的时候,宿主机进程忽然感知到“来了一个ip包”,“并且我已经把它解析到ip层了”,所以vmware进程继续控制数据包封装并发送。而宿主机进程得到这个数据包判断包是自己的,还是要自己转发的;若宿主机发现目标ip不是自己,转发掉并且ttl-1。因此一个包变成了两个。
2、当回包到达网卡时,此时mac=mac_A,vmware进程按mac电脑的逻辑指挥网卡解析并映射,当网卡解析到ip包时,宿主机进程再次感知,得到这个包并转发,因此链路上变成了4个包。
3、当宿主机网关是OP时,按上述几点,宿主机拿取网卡中vmware进程解析的数据包,发给op,op收到又再次转发,然后再次被宿主机拿取,循环下去,很快网络风暴形成。

综上,linux和windows在无线网卡的虚拟机桥接上,linux是进程独立监管网卡,划分区域,每个区域都有各自的协议栈,而windows则是进程共同监管一个网卡,协议栈共同使用。

点评

感谢楼主的解释。我就是在win10的无线网卡上遇到了这个问题。 请问楼主目前有木有解决方法  详情 回复 发表于 2021-12-25 16:26
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2021-12-25 16:26 | 显示全部楼层
小布马 发表于 2021-9-30 14:01
9.30更新为什么win10下按mac的方式依然不能解决桥接在无线网卡上的问题?
线索:1、比对win10和mac的wirsh ...

感谢楼主的解释。我就是在win10的无线网卡上遇到了这个问题。
请问楼主目前有木有解决方法
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-12-14 19:04 | 显示全部楼层
大神!可是这个看不懂啊,要看懂需要好久。我是新手,我也发了帖子。求助,人家让我找你的帖子。
我的情况就是跟你差不多。主路由小米路由器PPPOE拨号上网。MacBookPro无线的,没有有线口,疫情期间在家折腾,阳了。然后Mac版的VMware安装,加持OP。
mac改成OP网关可以了。但是局域网里面的手机平板网都不能上,只能上OP网页儿。。。怎么改啊?大神,麻烦加你好友!感谢!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-12-14 19:08 | 显示全部楼层
艾玛!赶快找,结果:
mac系统下。最重要的是你的逻辑思路,厉害了!
sudo sysctl -w net.inet.ip.forwarding=1
一招命中!哈哈,感谢!

点评

大哥们实在听不懂啊,能不能告诉解决方法就行,我们该怎么操作  详情 回复 发表于 2023-8-28 13:13
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-8-28 13:13 | 显示全部楼层
NorthBig 发表于 2022-12-14 19:08
艾玛!赶快找,结果:
mac系统下。最重要的是你的逻辑思路,厉害了!
sudo sysctl -w net.inet.ip.forwardi ...

大哥们实在听不懂啊,能不能告诉解决方法就行,我们该怎么操作
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-4-27 18:17 | 显示全部楼层
真心感谢,解决了困扰我2天的问题。。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-9-27 08:16

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表