|
本帖最后由 小布马 于 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。
|
|